@sma1lboy/kobe 0.7.48 → 0.7.49
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 +83 -83
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var UF=Object.defineProperty;var DF=(J)=>J;function LF(J,z){this[J]=DF.bind(null,z)}var j1=(J,z)=>{for(var Y in z)UF(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:LF.bind(z,Y)})};var k=(J,z)=>()=>(J&&(z=J(J=0)),z);var gQ=import.meta.require;import{basename as MF}from"path";function FF(J){let z="";for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(G==="?")z+="[^/]";else if(G&&"\\^$.|+()[]{}".includes(G))z+=`\\${G}`;else z+=G}return new RegExp(`^${z}$`)}function CQ(J,z){let Y;try{Y=FF(J)}catch{return!1}return Y.test(z)||Y.test(MF(z))}var TH=()=>{};var LW={};j1(LW,{resolvePersistedVendor:()=>uJ,prevVendorWithin:()=>xH,nextVendorWithin:()=>OY,nextVendor:()=>OF,isBuiltinVendor:()=>qJ,coerceVendorId:()=>tY,BUILTIN_VENDORS:()=>sY,ALL_VENDORS:()=>i1});function qJ(J){return J==="claude"||J==="codex"||J==="copilot"}function OF(J){let z=i1.indexOf(J);return i1[(z+1)%i1.length]??i1[0]}function OY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function xH(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function tY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function uJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(qJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var sY,i1;var l1=k(()=>{sY=["claude","codex","copilot"],i1=[...sY]});var NQ;var MW=k(()=>{NQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.48",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as FW}from"crypto";import{homedir as RF}from"os";import{join as eY}from"path";function OW(){return process.env.KOBE_DEV==="1"}function bz(){return process.env.KOBE_HOME_DIR??RF()}function fJ(){return eY(bz(),".kobe")}function aJ(){return eY(bz(),".config","kobe","state.json")}function gF(){return eY(fJ(),"settings")}function AW(){return eY(gF(),"keybindings.yaml")}function uH(){return eY(fJ(),"issue-assets")}function kQ(J,z,Y){let G=FW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(fJ(),"ssh",`${G}.sock`)}function RW(J){let z=FW("sha1").update(J).digest("hex").slice(0,16);return eY(fJ(),"worktree-init",z)}var r1=()=>{};var CW={};j1(CW,{repoSlug:()=>JG,releasePageUrl:()=>vH,recommendedGlobalInstallCommand:()=>PH,isNewerSemver:()=>EH,fetchReleaseSummaries:()=>kF,fetchReleaseNotesRange:()=>hH,fetchReleaseNotes:()=>NF,compareSemver:()=>bQ,checkLatestVersion:()=>zZ,UPDATE_SCRIPT_URL:()=>IQ,UPDATE_COMMAND:()=>lz,PACKAGE_NAME:()=>wH,CURRENT_VERSION:()=>o0});function JG(){let J=NQ.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 PH(){return`npm install -g ${wH}@latest`}async function CF(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),SQ);try{let G=J.replace("/","%2F"),X=await fetch(`https://registry.npmjs.org/${G}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!X.ok)return null;let Z=await X.json();if(typeof Z.version!=="string")return null;return Z.version}catch{return null}finally{clearTimeout(Y)}}function EH(J,z){return bQ(J,z)>0}function bQ(J,z){let Y=(Z)=>Z.split("-")[0]??Z,G=Y(J).split(".").map((Z)=>Number.parseInt(Z,10)),X=Y(z).split(".").map((Z)=>Number.parseInt(Z,10));for(let Z=0;Z<3;Z++){let Q=G[Z]??0,f=X[Z]??0;if(Number.isNaN(Q)||Number.isNaN(f))return 0;if(Q>f)return 1;if(Q<f)return-1}return 0}async function zZ(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:o0,latest:z,hasUpdate:EH(z,o0)};if(OW()&&!J.force)return null;let Y=await CF(wH);if(!Y)return null;return{current:o0,latest:Y,hasUpdate:EH(Y,o0)}}function gW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function NF(J){let z=JG();if(!z)return null;let Y=`v${J}`,G=new AbortController,X=setTimeout(()=>G.abort(),SQ);try{let Z=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:G.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return null;let Q=await Z.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 hH(J){let z=JG();if(!z)return[];let Y=J.limit??100,G=new AbortController,X=setTimeout(()=>G.abort(),SQ);try{let Z=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:G.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return[];let Q=await Z.json();if(!Array.isArray(Q))return[];return Q.map((f)=>{let H=gW(f.tag_name);if(!H||typeof f.html_url!=="string"||typeof f.body!=="string")return null;if(bQ(H,J.current)<=0)return null;if(bQ(H,J.latest)>0)return null;return{version:H,url:f.html_url,body:f.body}}).filter((f)=>f!==null)}catch{return[]}finally{clearTimeout(X)}}async function kF(J=12){let z=JG();if(!z)return[];let Y=new AbortController,G=setTimeout(()=>Y.abort(),SQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let Z=await X.json();if(!Array.isArray(Z))return[];return Z.map((Q)=>{let f=gW(Q.tag_name);if(!f||typeof Q.html_url!=="string")return null;return{version:f,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}function vH(J){let z=JG();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var o0,wH,IQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",lz,SQ=3000;var FJ=k(()=>{MW();r1();o0=NQ.version,wH=NQ.name;lz=`curl -fsSL ${IQ} | sh`});import{spawn as bF,spawnSync as IF}from"child_process";import{existsSync as kW}from"fs";import{mkdir as SF,readFile as yF,readdir as TF}from"fs/promises";function zG(J){return`'${J.replace(/'/g,"'\\''")}'`}function xF(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zG(J)}function IW(J){return J.map(zG).join(" ")}function uF(J,z){let Y=IW(J);return z?`cd ${zG(z)} && ${Y}`:Y}function EF(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,G])=>`${Y}=${zG(G)}`).join(" ")} `}function YZ(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function SW(J,z={}){return new Promise((Y)=>{let[G,...X]=J,Z="",Q="",f=!1,H=(V)=>{if(f)return;f=!0,Y({stdout:Z,stderr:Q,exitCode:V})},B;try{B=bF(G??"",X,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{Z+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{Q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class yQ{isRemote=!1;run(J,z={}){return SW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return kW(J)}existsSync(J){return kW(J)}async mkdirp(J){await SF(J,{recursive:!0})}async readFile(J){try{return await yF(J,"utf8")}catch{return null}}async readdir(J){try{return await TF(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class nG{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=bW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===bW?wF:async(G,X)=>this.spawn(G,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...YZ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...YZ(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${EF(z.env)}${IW(J)}`,G=z.cwd?`cd ${zG(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...YZ(this.spec,{batch:!0}),G],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...YZ(this.spec,{batch:!0}),uF(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
-
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${zG(z.cwd)} && ${J}`:J;return`${YZ(this.spec,{tty:z.tty}).map(xF).join(" ")} ${zG(Y)}`}}var bW=(J,z)=>{let[Y,...G]=J,X=
|
|
3
|
+
var UF=Object.defineProperty;var DF=(J)=>J;function LF(J,z){this[J]=DF.bind(null,z)}var j1=(J,z)=>{for(var Y in z)UF(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:LF.bind(z,Y)})};var k=(J,z)=>()=>(J&&(z=J(J=0)),z);var gQ=import.meta.require;import{basename as MF}from"path";function FF(J){let z="";for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(G==="?")z+="[^/]";else if(G&&"\\^$.|+()[]{}".includes(G))z+=`\\${G}`;else z+=G}return new RegExp(`^${z}$`)}function CQ(J,z){let Y;try{Y=FF(J)}catch{return!1}return Y.test(z)||Y.test(MF(z))}var TH=()=>{};var LW={};j1(LW,{resolvePersistedVendor:()=>uJ,prevVendorWithin:()=>xH,nextVendorWithin:()=>OY,nextVendor:()=>OF,isBuiltinVendor:()=>qJ,coerceVendorId:()=>tY,BUILTIN_VENDORS:()=>sY,ALL_VENDORS:()=>i1});function qJ(J){return J==="claude"||J==="codex"||J==="copilot"}function OF(J){let z=i1.indexOf(J);return i1[(z+1)%i1.length]??i1[0]}function OY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function xH(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function tY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function uJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(qJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var sY,i1;var l1=k(()=>{sY=["claude","codex","copilot"],i1=[...sY]});var NQ;var MW=k(()=>{NQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.49",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as FW}from"crypto";import{homedir as RF}from"os";import{join as eY}from"path";function OW(){return process.env.KOBE_DEV==="1"}function bz(){return process.env.KOBE_HOME_DIR??RF()}function fJ(){return eY(bz(),".kobe")}function aJ(){return eY(bz(),".config","kobe","state.json")}function gF(){return eY(fJ(),"settings")}function AW(){return eY(gF(),"keybindings.yaml")}function uH(){return eY(fJ(),"issue-assets")}function kQ(J,z,Y){let G=FW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(fJ(),"ssh",`${G}.sock`)}function RW(J){let z=FW("sha1").update(J).digest("hex").slice(0,16);return eY(fJ(),"worktree-init",z)}var r1=()=>{};var CW={};j1(CW,{repoSlug:()=>JG,releasePageUrl:()=>vH,recommendedGlobalInstallCommand:()=>PH,isNewerSemver:()=>EH,fetchReleaseSummaries:()=>kF,fetchReleaseNotesRange:()=>hH,fetchReleaseNotes:()=>NF,compareSemver:()=>bQ,checkLatestVersion:()=>zZ,UPDATE_SCRIPT_URL:()=>SQ,UPDATE_COMMAND:()=>lz,PACKAGE_NAME:()=>wH,CURRENT_VERSION:()=>o0});function JG(){let J=NQ.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 PH(){return`npm install -g ${wH}@latest`}async function CF(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),IQ);try{let G=J.replace("/","%2F"),X=await fetch(`https://registry.npmjs.org/${G}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!X.ok)return null;let Z=await X.json();if(typeof Z.version!=="string")return null;return Z.version}catch{return null}finally{clearTimeout(Y)}}function EH(J,z){return bQ(J,z)>0}function bQ(J,z){let Y=(Z)=>Z.split("-")[0]??Z,G=Y(J).split(".").map((Z)=>Number.parseInt(Z,10)),X=Y(z).split(".").map((Z)=>Number.parseInt(Z,10));for(let Z=0;Z<3;Z++){let Q=G[Z]??0,f=X[Z]??0;if(Number.isNaN(Q)||Number.isNaN(f))return 0;if(Q>f)return 1;if(Q<f)return-1}return 0}async function zZ(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:o0,latest:z,hasUpdate:EH(z,o0)};if(OW()&&!J.force)return null;let Y=await CF(wH);if(!Y)return null;return{current:o0,latest:Y,hasUpdate:EH(Y,o0)}}function gW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function NF(J){let z=JG();if(!z)return null;let Y=`v${J}`,G=new AbortController,X=setTimeout(()=>G.abort(),IQ);try{let Z=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:G.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return null;let Q=await Z.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 hH(J){let z=JG();if(!z)return[];let Y=J.limit??100,G=new AbortController,X=setTimeout(()=>G.abort(),IQ);try{let Z=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:G.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return[];let Q=await Z.json();if(!Array.isArray(Q))return[];return Q.map((f)=>{let H=gW(f.tag_name);if(!H||typeof f.html_url!=="string"||typeof f.body!=="string")return null;if(bQ(H,J.current)<=0)return null;if(bQ(H,J.latest)>0)return null;return{version:H,url:f.html_url,body:f.body}}).filter((f)=>f!==null)}catch{return[]}finally{clearTimeout(X)}}async function kF(J=12){let z=JG();if(!z)return[];let Y=new AbortController,G=setTimeout(()=>Y.abort(),IQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let Z=await X.json();if(!Array.isArray(Z))return[];return Z.map((Q)=>{let f=gW(Q.tag_name);if(!f||typeof Q.html_url!=="string")return null;return{version:f,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}function vH(J){let z=JG();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var o0,wH,SQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",lz,IQ=3000;var FJ=k(()=>{MW();r1();o0=NQ.version,wH=NQ.name;lz=`curl -fsSL ${SQ} | sh`});import{spawn as bF,spawnSync as SF}from"child_process";import{existsSync as kW}from"fs";import{mkdir as IF,readFile as yF,readdir as TF}from"fs/promises";function zG(J){return`'${J.replace(/'/g,"'\\''")}'`}function xF(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zG(J)}function SW(J){return J.map(zG).join(" ")}function uF(J,z){let Y=SW(J);return z?`cd ${zG(z)} && ${Y}`:Y}function EF(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,G])=>`${Y}=${zG(G)}`).join(" ")} `}function YZ(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function IW(J,z={}){return new Promise((Y)=>{let[G,...X]=J,Z="",Q="",f=!1,H=(V)=>{if(f)return;f=!0,Y({stdout:Z,stderr:Q,exitCode:V})},B;try{B=bF(G??"",X,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{Z+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{Q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class yQ{isRemote=!1;run(J,z={}){return IW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return kW(J)}existsSync(J){return kW(J)}async mkdirp(J){await IF(J,{recursive:!0})}async readFile(J){try{return await yF(J,"utf8")}catch{return null}}async readdir(J){try{return await TF(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class nG{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=bW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===bW?wF:async(G,X)=>this.spawn(G,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...YZ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...YZ(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${EF(z.env)}${SW(J)}`,G=z.cwd?`cd ${zG(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...YZ(this.spec,{batch:!0}),G],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...YZ(this.spec,{batch:!0}),uF(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
+
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${zG(z.cwd)} && ${J}`:J;return`${YZ(this.spec,{tty:z.tty}).map(xF).join(" ")} ${zG(Y)}`}}var bW=(J,z)=>{let[Y,...G]=J,X=SF(Y??"",G,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},wF=(J,z,Y)=>IW(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var mH=()=>{};import{spawnSync as PF}from"child_process";import{platform as hF}from"os";function yW(J,z,Y){return{service:vF,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function dH(J=cH){return J.platform()==="darwin"}function TW(J,z,Y=cH){if(Y.platform()!=="darwin")return!1;let{exitCode:G}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return G===0}function TQ(J,z=cH){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:G}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(G!==0)return null;return Y.replace(/\n$/,"")}var cH,vF="kobe-remote-ssh";var nH=k(()=>{cH={run(J){let[z,...Y]=J,G=PF(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:G.stdout??"",exitCode:G.status??-1}},platform(){return hF()}}});import{mkdirSync as mF,readFileSync as cF,renameSync as dF,writeFileSync as nF}from"fs";import{dirname as iF}from"path";function d1(){try{let J=cF(aJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function xW(J){let z=aJ();mF(iF(z),{recursive:!0});let Y=`${z}.tmp`;nF(Y,JSON.stringify(J,null,2),"utf8"),dF(Y,z)}function iG(J){let z=d1();if(J(z)!==!1)xW(z);return z}function $z(J){return iG((z)=>{for(let[Y,G]of Object.entries(J))if(G===void 0)delete z[Y];else z[Y]=G;return})}function uW(J){xW(J)}var YG=k(()=>{r1()});var rz={};j1(rz,{statePath:()=>aF,setRepoInitOverride:()=>_F,setPersistedString:()=>o1,resolveRepoRoot:()=>az,resolveMainRepoRoot:()=>$F,removeSavedRepo:()=>aH,remoteRepoKey:()=>hW,normalizeSavedRepos:()=>lH,isRemoteRepoKey:()=>$1,isRemoteProjectsEnabled:()=>_H,isGitRepo:()=>lF,getSavedRepos:()=>CJ,getRepoInitOverride:()=>$H,getRemoteRepos:()=>pH,getRemoteRepoConfig:()=>pz,getPersistedString:()=>C1,getCustomEngineIds:()=>EJ,addSavedRepo:()=>_z,addRemoteRepo:()=>rH});import{spawnSync as iH}from"child_process";import{realpathSync as EW}from"fs";function az(J){if($1(J))return J;let z=iH("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if(EW(J)===EW(Y))return J}catch{}return Y}function lF(J){if($1(J))return!1;let z=iH("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function $F(J){if($1(J))return J;let z=iH("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return az(J);return(z.stdout??"").split(/\r?\n/).find((G)=>G.startsWith("worktree "))?.slice(9).trim()||az(J)}function aF(){return aJ()}function xQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function CJ(){return xQ(d1())}function C1(J){let z=d1()[J];return typeof z==="string"?z:void 0}function o1(J,z){$z({[J]:z})}function EJ(){let J=d1().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function _z(J){let z=az(J),Y={added:!1,path:z,total:0};return iG((G)=>{let X=xQ(G);if(X.includes(z))return Y={added:!1,path:z,total:X.length},!1;G.savedRepos=[...X,z],Y={added:!0,path:z,total:X.length+1};return}),Y}function lH(){let J=CJ(),z=new Set,Y=[],G=!1;for(let X of J){let Z=az(X);if(Z!==X)G=!0;if(z.has(Z)){G=!0;continue}z.add(Z),Y.push(Z)}if(!G)return;$z({savedRepos:Y})}function wW(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function PW(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function $H(J){return PW(wW(d1())[az(J)])}function _F(J,z){let Y=az(J),G={};return iG((X)=>{let Z={...wW(X)},Q=PW(Z[Y]),f=z.initScript===void 0?Q.initScript:z.initScript||void 0,H=z.initPrompt===void 0?Q.initPrompt:z.initPrompt||void 0;if(G={...f?{initScript:f}:{},...H?{initPrompt:H}:{}},!G.initScript&&!G.initPrompt){let{[Y]:B,...V}=Z;X.repoConfigs=V}else Z[Y]=G,X.repoConfigs=Z;return}),G}function aH(J){let z={removed:!1,path:J,total:0};return iG((Y)=>{let G=xQ(Y);if(!G.includes(J))return z={removed:!1,path:J,total:G.length},!1;if(Y.savedRepos=G.filter((X)=>X!==J),$1(J)){let X=uQ(Y);if(J in X){let Z={...X};delete Z[J],Y.remoteRepos=Z}}z={removed:!0,path:J,total:G.length-1};return}),z}function $1(J){return J.startsWith("ssh://")}function _H(){return d1()["experimental.remoteProjects"]===!0}function hW(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function uQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function pz(J){return uQ(d1())[J]??null}function pH(){return uQ(d1())}function rH(J){let z=hW(J.host,J.user,J.port),Y=!1;return iG((G)=>{let X={...uQ(G)};X[z]=J,G.remoteRepos=X;let Z=xQ(G);if(Y=!Z.includes(z),Y)G.savedRepos=[...Z,z];return}),{key:z,added:Y}}var O1=k(()=>{r1();YG()});var cW={};j1(cW,{runAddRemote:()=>oF,parseRemoteFlags:()=>mW});import{createInterface as pF}from"readline";function mW(J){let z={};for(let Y=0;Y<J.length;Y++){let G=J[Y];switch(G){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let X=Number(J[++Y]);if(!Number.isInteger(X)||X<=0)Zz(`invalid --port "${J[Y]}"`);z.port=X;break}case"--key":{let X=J[Y+1];if(X&&!X.startsWith("-"))z.key={present:!0,path:X},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(vW),process.exit(0);break;default:Zz(`unknown flag "${G}"`)}}return z}function Zz(J){process.stderr.write(`kobe add --remote: ${J}
|
|
5
5
|
|
|
6
6
|
${vW}`),process.exit(2)}async function rF(J){let z=pF({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,G=!1,X=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(Z)=>{if(!G||!X)process.stdout.write(Z)},process.stdout.write(J),G=!0,new Promise((Z)=>{z.question("",(Q)=>{if(G=!1,X)Y._writeToOutput=X;process.stdout.write(`
|
|
7
7
|
`),z.close(),Z(Q)})})}async function oF(J){if(!_H())Zz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=mW(J);if(!z.host)Zz("--host is required");if(!z.user)Zz("--user is required");if(!z.path)Zz("--path (remote base path) is required");if(z.key&&z.password)Zz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Zz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!dH())Zz("--password needs the macOS keychain (unsupported on this platform)");let Z=yW(z.host,z.user,z.port),Q=await rF(`Password for ${z.user}@${z.host}: `);if(Q.length===0)Zz("empty password");if(!TW(Z,Q))Zz("failed to store the password in the keychain");Y={kind:"password",keychainRef:Z}}else Y={kind:"key",keyPath:z.key?.path};let{key:G,added:X}=rH({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(X?`added remote project ${G} (base ${z.path})`:`updated remote project ${G} (base ${z.path})`),await sF(z,Y)}async function sF(J,z){if(z.kind==="password"&&!dH())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>TQ(z.keychainRef)},G={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:kQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new nG(G).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 vW;var dW=k(()=>{r1();mH();nH();O1();vW=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
|
|
@@ -11,33 +11,33 @@ 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
13
|
`});function EQ(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function nW(J,z){if(!J)return!1;return J!==z}function eF(J){return typeof J==="string"&&tF.has(J)}function iW(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(eF(Y))z.add(Y);return z.size>0?z:null}function Qz(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 GZ(J){return`${JSON.stringify(J)}
|
|
14
|
-
`}var _J=3,AY=2,oH,tF;var GG=k(()=>{oH=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],tF=new Set(oH)});import{createHash as JO}from"crypto";import{homedir as wQ,tmpdir as zO}from"os";import{join as XG}from"path";function YO(J){return JO("sha1").update(J).digest("hex").slice(0,8)}function tH(J,z,Y,G){if(Buffer.byteLength(J,"utf8")<=sH)return J;let X=YO(z),Z=G===void 0?"":`-${G}`,Q=XG(zO(),`kobe-${X}-${Y}${Z}.sock`);if(Buffer.byteLength(Q,"utf8")<=sH)return Q;throw Error(`kobe socket path exceeds ${sH} bytes even after fallback: ${Q}`)}function
|
|
14
|
+
`}var _J=3,AY=2,oH,tF;var GG=k(()=>{oH=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],tF=new Set(oH)});import{createHash as JO}from"crypto";import{homedir as wQ,tmpdir as zO}from"os";import{join as XG}from"path";function YO(J){return JO("sha1").update(J).digest("hex").slice(0,8)}function tH(J,z,Y,G){if(Buffer.byteLength(J,"utf8")<=sH)return J;let X=YO(z),Z=G===void 0?"":`-${G}`,Q=XG(zO(),`kobe-${X}-${Y}${Z}.sock`);if(Buffer.byteLength(Q,"utf8")<=sH)return Q;throw Error(`kobe socket path exceeds ${sH} bytes even after fallback: ${Q}`)}function Sz(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return tH(XG(Y,".kobe","daemon.sock"),Y,"daemon");let G=process.env.XDG_RUNTIME_DIR;if(G&&G.length>0)return tH(XG(G,"kobe.sock"),G,"daemon");let X=wQ();return tH(XG(X,".kobe","daemon.sock"),X,"daemon")}function oz(J=process.env.KOBE_HOME_DIR??wQ()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return XG(J,".kobe","daemon.pid")}function PQ(J=process.env.KOBE_HOME_DIR??wQ()){return XG(J,".kobe","daemon.log")}function lW(J=process.env.KOBE_HOME_DIR??wQ()){return XG(J,".kobe","client.log")}var sH=100;var lG=()=>{};import{appendFile as $W,mkdir as GO}from"fs/promises";import{dirname as XO}from"path";function hQ(J){pW=J}function ZO(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 rW(J,z,Y=new Date){return`[${Y.toISOString()}] client ${pW} [${J}] pid=${process.pid}: ${z}
|
|
15
15
|
`}function QO(){if(aW)return;aW=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
|
|
16
16
|
`)}catch{}}function oW(J){let z=lW();_W=_W.then(async()=>{try{await $W(z,J)}catch(Y){if(Y?.code==="ENOENT")await GO(XO(z),{recursive:!0}),await $W(z,J);else throw Y}}).catch(()=>QO())}function sz(J,z){oW(rW(J,z))}function s1(J,z){let Y=ZO(z);oW(rW(J,Y.stack??Y.message))}function sW(){if(eH||J8)return;eH=(J)=>s1("crash-net",J),J8=(J)=>s1("crash-net",J),process.on("unhandledRejection",eH),process.on("uncaughtException",J8)}var pW="client",aW=!1,_W,eH,J8;var ZG=k(()=>{lG();_W=Promise.resolve()});import{connect as qO}from"net";import{StringDecoder as fO}from"string_decoder";class pJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let G=String(this.nextId++),X=new Promise((Z,Q)=>{this.pending.set(G,{resolve:(f)=>Z(f),reject:Q})});return Y.write(GZ({type:"request",id:G,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Y=qO(this.socketPath);this.socket=Y;let G=()=>{Y.off("error",X),J()},X=(Q)=>{if(Y.off("connect",G),this.socket===Y)this.socket=null;z(Q)};Y.once("connect",G),Y.once("error",X);let Z=new fO("utf8");this.buffer="",Y.on("data",(Q)=>this.onData(Z.write(Q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
|
|
17
17
|
`);while(z!==-1){let Y=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Y.trim().length>0)this.onLine(Y);z=this.buffer.indexOf(`
|
|
18
18
|
`)}}onLine(J){let z;try{z=JSON.parse(J)}catch(G){s1("client-frame",G);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let G=Error(z.error.message);if(z.error.name)G.name=z.error.name;Y.reject(G)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var XZ=k(()=>{GG();ZG()});import{spawnSync as HO}from"child_process";import{existsSync as BO,statSync as jO}from"fs";import{homedir as WO}from"os";import ZZ from"path";async function tW(J=VO){let z=[],Y=(B)=>{if(!B)return;return z.push(B),J.fileExists(B)?B:void 0},G=J.which("claude");if(G){if(z.push(`which:${G}`),J.fileExists(G))return G}let X=J.home(),Z=Y(ZZ.join(X,".claude","local","claude"));if(Z)return Z;let Q=J.env("NVM_BIN");if(Q){let B=Y(ZZ.join(Q,"claude"));if(B)return B}let f=ZZ.join(X,".nvm","versions","node"),H=J.readdir(f).sort().reverse();for(let B of H){let V=Y(ZZ.join(f,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(B);if(V)return V}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(ZZ.join(X,B));if(V)return V}throw new vQ(z)}var vQ,VO;var eW=k(()=>{vQ=class vQ 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}};VO={fileExists(J){try{return jO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return WO()},which(J){let z=process.platform==="win32"?"where":"which",Y=HO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let G=Y.stdout.split(`
|
|
19
19
|
`).map((X)=>X.trim()).filter(Boolean)[0];if(!G)return;if(G.startsWith("claude:")&&G.includes("aliased to")){let X=G.split("aliased to")[1]?.trim();return X&&BO(X)?X:void 0}return G},readdir(J){try{return gQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as KO}from"child_process";import{existsSync as UO,statSync as DO}from"fs";import{homedir as LO}from"os";import J7 from"path";async function z7(J=MO){let z=[],Y=(Q)=>{if(!Q)return;return z.push(Q),J.fileExists(Q)?Q:void 0},G=J.which("codex");if(G){if(z.push(`which:${G}`),J.fileExists(G))return G}let X=J.home();for(let Q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let f=Y(Q);if(f)return f}let Z=J.env("NVM_BIN");if(Z){let Q=Y(J7.join(Z,"codex"));if(Q)return Q}for(let Q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let f=Y(J7.join(X,Q));if(f)return f}throw new mQ(z)}var mQ,MO;var Y7=k(()=>{mQ=class mQ 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}};MO={fileExists(J){try{return DO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return LO()},which(J){let z=process.platform==="win32"?"where":"which",Y=KO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let G=Y.stdout.split(`
|
|
20
20
|
`).map((X)=>X.trim()).filter(Boolean)[0];if(!G)return;if(G.startsWith("codex:")&&G.includes("aliased to")){let X=G.split("aliased to")[1]?.trim();return X&&UO(X)?X:void 0}return G},readdir(J){try{return gQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as FO}from"child_process";import{existsSync as OO,statSync as AO}from"fs";import{homedir as RO}from"os";import RY from"path";async function G7(J=gO){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},G=J.which("copilot");if(G){if(z.push(`which:${G}`),J.fileExists(G))return G}let X=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],Z=(V)=>{if(!V)return;for(let j of X){let K=Y(RY.join(V,j));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=Z(V);if(j)return j}let Q=J.env("NVM_BIN"),f=Z(Q);if(f)return f;let H=J.home(),B=[RY.join(H,".npm-global/bin"),RY.join(H,".local/bin"),RY.join(H,".bun/bin"),RY.join(H,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),j=J.env("LOCALAPPDATA");if(B.unshift(RY.join(H,"AppData/Roaming/npm")),V)B.unshift(RY.join(V,"npm"));if(j)B.unshift(RY.join(j,"npm"))}for(let V of B){let j=Z(V);if(j)return j}throw new cQ(z)}var cQ,gO;var X7=k(()=>{cQ=class cQ 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}};gO={fileExists(J){try{return AO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return RO()},which(J){let z=process.platform==="win32"?"where":"which",Y=FO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let G=Y.stdout.split(`
|
|
21
|
-
`).map((X)=>X.trim()).filter(Boolean)[0];if(!G)return;if(G.startsWith("copilot:")&&G.includes("aliased to")){let X=G.split("aliased to")[1]?.trim();return X&&OO(X)?X:void 0}return G},platform(){return process.platform}}});import{readFileSync as CO,statSync as NO}from"fs";import{readFile as kO,stat as bO}from"fs/promises";async function $G(J,z=Z7){let{size:Y}=await bO(J);if(Y>z)return"";return kO(J,"utf8")}function Q7(J,z=Z7){let Y;try{Y=NO(J)}catch(G){if(G.code==="ENOENT")return null;throw G}if(Y.size>z)return null;return CO(J,"utf8")}function gY(J,z=
|
|
21
|
+
`).map((X)=>X.trim()).filter(Boolean)[0];if(!G)return;if(G.startsWith("copilot:")&&G.includes("aliased to")){let X=G.split("aliased to")[1]?.trim();return X&&OO(X)?X:void 0}return G},platform(){return process.platform}}});import{readFileSync as CO,statSync as NO}from"fs";import{readFile as kO,stat as bO}from"fs/promises";async function $G(J,z=Z7){let{size:Y}=await bO(J);if(Y>z)return"";return kO(J,"utf8")}function Q7(J,z=Z7){let Y;try{Y=NO(J)}catch(G){if(G.code==="ENOENT")return null;throw G}if(Y.size>z)return null;return CO(J,"utf8")}function gY(J,z=SO){return J.length<=z}var Z7=104857600,SO=8388608;var QZ=()=>{};import{homedir as IO}from"os";import CY from"path";function yO(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return CY.join(Y,".claude.json");return CY.join(z,".claude.json")}function TO(J,z){let G=J("CODEX_HOME")?.trim()??CY.join(z,".codex");return CY.join(G,"auth.json")}function xO(J,z){let G=J("COPILOT_HOME")?.trim()??CY.join(z,".copilot");return CY.join(G,"config.json")}function uO(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let G=Y.replace(/-/g,"+").replace(/_/g,"/"),X=G+"=".repeat((4-G.length%4)%4);try{let Z=Buffer.from(X,"base64").toString("utf8"),Q=JSON.parse(Z);return typeof Q==="object"&&Q!==null?Q:null}catch{return null}}async function nQ(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof vQ||z instanceof mQ||z instanceof cQ)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function q7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([G,X])=>(await nQ(X)).found?G:null))).filter((G)=>G!==null)}function EO(J=aG){if(J!==aG)return q7(J);if(dQ)return dQ;let z=q7(J).catch((Y)=>{throw dQ=null,Y});return dQ=z,z}async function tz(J=aG){return[...await EO(J),...EJ()]}async function iQ(J=aG){let z=await nQ(()=>J.findClaudeBinary()),Y=yO(J.env,J.home()),G;try{G=J.readFile(Y)}catch(H){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(G===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(G)}catch(H){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let Z=X?.oauthAccount;if(!Z||typeof Z!=="object")return{binary:z,account:{kind:"none"}};let Q=Z,f=typeof Q.emailAddress==="string"?Q.emailAddress:void 0;if(!f)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:f,organization:typeof Q.organizationName==="string"?Q.organizationName:void 0,displayName:typeof Q.displayName==="string"?Q.displayName:void 0,billingType:typeof Q.billingType==="string"?Q.billingType:void 0}}}async function lQ(J=aG){let z=await nQ(()=>J.findCodexBinary()),Y=TO(J.env,J.home()),G;try{G=J.readFile(Y)}catch(B){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(G===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(G)}catch(B){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let Z=X??{},Q=Z.tokens,f=typeof Q?.id_token==="string"?Q.id_token:void 0;if(f){let B=uO(f);if(!B)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,j=B["https://api.openai.com/auth"],K=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=Z.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function $Q(J=aG){let z=await nQ(()=>J.findCopilotBinary());for(let Z of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(Z)?.trim())return{binary:z,account:{kind:"token",source:Z}};let Y=xO(J.env,J.home()),G;try{G=J.readFile(Y)}catch(Z){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${Z instanceof Error?Z.message:String(Z)}`}}if(G===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(G)}catch(Z){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${Z instanceof Error?Z.message:String(Z)}`}}if(!z8(X))return{binary:z,account:{kind:"none"}};if(f7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function z8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function f7(J,z,Y=0){if(Y>4||!z8(J))return!1;for(let[G,X]of Object.entries(J)){if(z.includes(G)&&typeof X==="string"&&X.length>0)return!0;if(z8(X)&&f7(X,z,Y+1))return!0}return!1}var aG,dQ=null;var QG=k(()=>{O1();eW();Y7();X7();QZ();aG={readFile(J){return Q7(J)},env(J){return process.env[J]},home(){return IO()},findClaudeBinary(){return tW()},findCodexBinary(){return z7()},findCopilotBinary(){return G7()}}});function H7(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let G=Y;if(G.type==="text"&&typeof G.text==="string"){z.push({type:"text",text:G.text});continue}if(G.type==="tool_use"){z.push({type:"tool_call",callId:typeof G.id==="string"?G.id:"",name:typeof G.name==="string"?G.name:"",input:G.input});continue}if(G.type==="tool_result"){z.push({type:"tool_result",callId:typeof G.tool_use_id==="string"?G.tool_use_id:"",output:G.content,isError:G.is_error===!0});continue}if(G.type==="thinking"&&typeof G.thinking==="string")z.push({type:"thinking",text:G.thinking})}return z}function B7(J){return J.isMeta===!0||J.isCompactSummary===!0}function j7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as Cw,mkdir as Nw,readdir as Y8,stat as wO,unlink as kw}from"fs/promises";import{homedir as W7}from"os";import aQ from"path";function hO(J){return J.replace(/[/.]/g,"-")}async function qZ(J){if(!J)return[];let z=aQ.join(W7(),".claude","projects",hO(J)),Y;try{Y=await Y8(z)}catch{return[]}let G=[];for(let X of Y){if(!X.endsWith(".jsonl"))continue;let Z=aQ.join(z,X),Q=0;try{Q=(await wO(Z)).mtimeMs}catch{}G.push({sessionId:X.slice(0,-6),path:Z,mtimeMs:Q})}return G.sort((X,Z)=>Z.mtimeMs-X.mtimeMs),G}async function V7(J){return(await qZ(J))[0]?.mtimeMs??0}async function K7(J,z=PO){let Y=z.projectsDir(),G=await z.readdir(Y);for(let X of G){let Z=aQ.join(Y,X,`${J}.jsonl`),Q;try{Q=await z.readFile(Z)}catch{continue}return vO(mO(Q,J))}return[]}function vO(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function mO(J,z){let Y=[];for(let G of J.split(`
|
|
22
22
|
`)){let X=G.trim();if(!X)continue;if(!gY(X))continue;let Z;try{Z=JSON.parse(X)}catch{continue}if(!G8(Z))continue;let Q=cO(Z,z);if(Q)Y.push(Q)}return Y}function cO(J,z){if(B7(J))return null;let Y=G8(J.message)?J.message:J,G=Y.role;if(G!=="user"&&G!=="assistant"&&G!=="system")return null;if(!("content"in Y))return null;let X=H7(Y.content);if(G==="user"&&j7(X))return null;let Z=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),Q=typeof J.sessionId==="string"?J.sessionId:z,f=dO(Y.usage);return f?{role:G,blocks:X,timestamp:Z,sessionId:Q,usage:f}:{role:G,blocks:X,timestamp:Z,sessionId:Q}}function dO(J){if(!G8(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let G=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,X=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...G!==void 0?{cache_read_input_tokens:G}:{},...X!==void 0?{cache_creation_input_tokens:X}:{}}}function G8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var PO;var X8=k(()=>{QZ();PO={projectsDir(){return aQ.join(W7(),".claude","projects")},async readdir(J){try{return await Y8(J)}catch{return[]}},async readFile(J){return await $G(J)},async pathExists(J){try{return await Y8(J),!0}catch{return!1}}}});import{fileURLToPath as D7}from"url";function b1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=D7(new URL("./index.ts",import.meta.url)),Y=D7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var ez=()=>{};function Z8(J,z={}){if(z.bareSafe&&nO.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function _Q(J,z={}){return J.map((Y)=>Z8(Y,z)).join(" ")}var nO;var Q8=k(()=>{nO=/^[A-Za-z0-9_/.:=-]+$/});function HZ(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function M7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function HG(J){if(!Number.isFinite(J))return qG;return Math.max(iO,Math.min(lO,Math.round(J)))}function YY(J){if(!Number.isFinite(J))return null;return Math.max($O,Math.min(aO,Math.round(J)))}function Z1(J){return Z8(J)}function kJ(J){return _Q(J)}function bJ(J){return`${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines, fix the launch command, then press R to relaunch.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function q8(J){return`'${J.replace(/'/g,"'\\''")}'`}function F7(){return`clear; printf ${q8("\\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 H8(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return _O;return Math.max(pO,Math.min(rO,Math.round(z)))}function oO(J,z){let Y=String(z),G="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",X="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
|
|
23
23
|
`)}function O7(J,z){let Y=bJ(J),G=z?.initScript?.trim();if(!G)return Y;let X=H8(z?.timeoutSeconds),Z=oO(G,X);if(z?.markerPath){let Q=q8(z.markerPath),f=q8(sO(z.markerPath));return[`if [ ! -f ${Q} ]; then`,Z,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${f} && : > ${Q}; fi`,"fi",Y].join(`
|
|
24
24
|
`)}return[Z,Y].join(`
|
|
25
25
|
`)}function sO(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function L7(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),Y=Z1(J.relPath),G=J.cliInvocation.map(Z1).join(" "),X=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${G} ops --worktree ${z} --preview ${Y} || { ${X}; }`}function R7(J){return`${kJ([...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 kY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return kJ(Y)}function pG(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Z1).join(" "),Y=J.vendor?` --vendor ${Z1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Z1(J.taskId)} --worktree ${Z1(J.cwd)} --target-pane ${Z1(J.claudePaneId)}${Y} || { ${L7(J.cwd)}; }`}return L7(J.cwd)}var qG=32,rJ="tasks",fG="claude",qz="ops",fz="shell",fZ="workspace_aux",f8=4,Hz="@kobe_hidden_shell_pane",NJ="@kobe_hidden_tasks_pane",NY="@kobe_zen_panes",_G="@kobe_zen",JY="@kobe_tasks_width",iO=16,lO=120,pQ=60,BZ=50,BG="@kobe_right_width_pct",zY="@kobe_ops_height_pct",$O=10,aO=90,_O=120,pO=5,rO=3600;var Bz=k(()=>{Q8()});function oJ(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function eO(J){return J.map((z)=>kJ(["hook",z.verb]))}function J2(J,z){if(!oJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>oJ(Y)&&typeof Y.command==="string"&&z.some((G)=>Y.command.includes(G)))}function k7(J,z=b1()){let Y={};for(let{event:G,matcher:X,verb:Z}of J){let f={hooks:[{type:"command",command:kJ([...z,"hook",Z])}]};if(X)f.matcher=X;Y[G]=[f]}return Y}function rQ(J,z,Y,G=b1()){let X=eO(Y),{hooks:Z,...Q}=J,f=oJ(Z)?{...Z}:{},H=z?k7(Y,G):{};for(let{event:B}of Y){let j=(Array.isArray(f[B])?f[B]:[]).filter((K)=>!J2(K,X));if(z&&Array.isArray(H[B]))j.push(...H[B]);if(j.length>0)f[B]=j;else delete f[B]}return Object.keys(f).length>0?{...Q,hooks:f}:{...Q}}function b7(J=b1()){let z=kJ([...J,"hook",N7]);return{[C7]:[{matcher:tO,hooks:[{type:"command",command:z}]}]}}function z2(J){if(!oJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>oJ(z)&&typeof z.command==="string"&&z.command.includes(N7))}function oQ(J,z,Y=b1()){let{hooks:G,...X}=J,Z=oJ(G)?{...G}:{},Q=C7,H=(Array.isArray(Z[Q])?Z[Q]:[]).filter((B)=>!z2(B));if(z)H.push(...b7(Y)[Q]);if(H.length>0)Z[Q]=H;else delete Z[Q];return Object.keys(Z).length>0?{...X,hooks:Z}:{...X}}var C7="PostToolUse",tO="Bash",N7="worktree-created";var B8=k(()=>{ez();Bz()});import{mkdir as Y2,readFile as G2,writeFile as X2}from"fs/promises";import{dirname as Z2}from"path";async function Q2(J){try{let z=JSON.parse(await G2(J,"utf8"));return oJ(z)?z:{}}catch{return{}}}async function rG(J,z){try{let Y=await Q2(J),G=z(Y);if(JSON.stringify(G)===JSON.stringify(Y))return;await Y2(Z2(J),{recursive:!0}),await X2(J,`${JSON.stringify(G,null,2)}
|
|
26
|
-
`)}catch{}}class jZ{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await rG(J,(z)=>rQ(z,!0,this.eventMap))}async removeActivityHooks(J){await rG(J,(z)=>rQ(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await rG(J,(z)=>oQ(z,!0))}async removeWorktreeWatchHook(J){await rG(J,(z)=>oQ(z,!1))}}var j8=k(()=>{B8()});import{homedir as q2}from"os";import{join as f2}from"path";function H2(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 B2(){return f2(q2(),".claude","settings.json")}function W2(J){if(!oJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>oJ(z)&&typeof z.command==="string"&&z.command.includes(j2))}function V2(J,z){let{hooks:Y,...G}=J,{WorktreeCreate:X,...Z}=oJ(Y)?Y:{},f=(Array.isArray(X)?X:[]).filter((B)=>!W2(B));if(z!==null)f.push({hooks:[{type:"command",command:z}]});let H={...Z};if(f.length>0)H.WorktreeCreate=f;return Object.keys(H).length>0?{...G,hooks:H}:{...G}}var
|
|
26
|
+
`)}catch{}}class jZ{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await rG(J,(z)=>rQ(z,!0,this.eventMap))}async removeActivityHooks(J){await rG(J,(z)=>rQ(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await rG(J,(z)=>oQ(z,!0))}async removeWorktreeWatchHook(J){await rG(J,(z)=>oQ(z,!1))}}var j8=k(()=>{B8()});import{homedir as q2}from"os";import{join as f2}from"path";function H2(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 B2(){return f2(q2(),".claude","settings.json")}function W2(J){if(!oJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>oJ(z)&&typeof z.command==="string"&&z.command.includes(j2))}function V2(J,z){let{hooks:Y,...G}=J,{WorktreeCreate:X,...Z}=oJ(Y)?Y:{},f=(Array.isArray(X)?X:[]).filter((B)=>!W2(B));if(z!==null)f.push({hooks:[{type:"command",command:z}]});let H={...Z};if(f.length>0)H.WorktreeCreate=f;return Object.keys(H).length>0?{...G,hooks:H}:{...G}}var S7,pw,j2="worktree-created",W8;var I7=k(()=>{j8();B8();S7=[{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"}],pw=S7.map((J)=>J.event);W8=class W8 extends jZ{vendor="claude";eventMap=S7;globalSettingsPath(){return B2()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:H2(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await rG(J,(z)=>V2(z,null))}}});function V8(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!K2(Y))continue;let G=typeof Y.type==="string"?Y.type:void 0;if(G==="input_text"||G==="output_text"){let X=typeof Y.text==="string"?Y.text:"";if(X.length>0)z.push({type:"text",text:X});continue}if(G)z.push({type:"text",text:`[codex: ${G}]`})}return z}function K2(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 Y=(z.text??"").trim();if(!U2(Y)&&!D2(Y))return!1}return!0}function U2(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function D2(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
|
|
27
27
|
<INSTRUCTIONS>
|
|
28
28
|
`)&&J.endsWith("</INSTRUCTIONS>")}var T7=()=>{};function x7(J,z={}){let Y=K8(J.input_tokens,0),G=K8(J.cached_input_tokens,0),X=K8(J.output_tokens,0),Z=Math.max(0,Y-G);if(Y<=0&&X<=0&&G<=0)return;return{input_tokens:Z,output_tokens:X,...G>0?{cache_read_input_tokens:G}:{},...L2(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function K8(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function L2(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as M2,stat as F2,unlink as zP}from"fs/promises";import{homedir as O2}from"os";import jG from"path";async function M8(J=WG){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),G=[];for(let X of Y){let Z=jG.join(z,X),Q=(await J.readdir(Z)).sort().reverse();for(let f of Q){let H=jG.join(Z,f),B=(await J.readdir(H)).sort().reverse();for(let V of B){let j=jG.join(H,V),K=(await J.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(G.push(jG.join(j,L)),G.length>=u7){if(!E7)E7=!0,console.warn(`[codex history] rollout scan truncated at ${u7} files; older sessions may be omitted`);return G}}}}return G}async function A2(J,z=WG){if(!J)return;let Y=J.toLowerCase(),G=await M8(z);for(let X of G)if(jG.basename(X).match(v7)?.[1]?.toLowerCase()===Y)return X;return}function R2(J){for(let z of J.split(`
|
|
29
29
|
`)){let Y=z.trim();if(!Y)continue;if(!gY(Y))return"";try{let G=JSON.parse(Y);if(G.type==="session_meta")return G.payload?.cwd??""}catch{}return""}return""}async function m7(J,z){let Y=w7.get(z);if(!Y)Y=new Map,w7.set(z,Y);let G=Y.get(J);if(G!==void 0)return G;let X;try{X=await z.readFile(J)}catch{return null}let Z=R2(X);if(Z)Y.set(J,Z);return Z}async function c7(J,z=WG){if(!J)return[];let Y=await M8(z),G=[],X=0;for(let Z of Y){if(X>=g2)break;if(X++,await m7(Z,z)!==J)continue;let Q=jG.basename(Z).match(v7)?.[1];if(Q)G.push(Q)}return G.reverse()}async function F8(J,z=WG){if(!J)return null;let Y=await M8(z),G=0;for(let X of Y){if(G>=C2)break;if(G++,await m7(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function d7(J,z=WG){return(await F8(J,z))?.mtimeMs??0}async function n7(J,z=WG){return(await N2(J,z)).messages}async function N2(J,z=WG){let Y=await A2(J,z);if(!Y)return{messages:[]};let G;try{G=await z.readFile(Y)}catch{return{messages:[]}}let X=k2(b2(G,J)),Z=x2(G);return{messages:X,...Z?{usageMetrics:Z}:{}}}function k2(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function b2(J,z){let Y=[];for(let G of J.split(`
|
|
30
|
-
`)){let X=G.trim();if(!X)continue;if(!gY(X))continue;let Z;try{Z=JSON.parse(X)}catch{continue}if(!WZ(Z))continue;if(Z.type!=="response_item")continue;let Q=WZ(Z.payload)?Z.payload:void 0;if(!Q)continue;let f=typeof Z.timestamp==="string"?Z.timestamp:new Date().toISOString(),H=
|
|
30
|
+
`)){let X=G.trim();if(!X)continue;if(!gY(X))continue;let Z;try{Z=JSON.parse(X)}catch{continue}if(!WZ(Z))continue;if(Z.type!=="response_item")continue;let Q=WZ(Z.payload)?Z.payload:void 0;if(!Q)continue;let f=typeof Z.timestamp==="string"?Z.timestamp:new Date().toISOString(),H=S2(Q,f,z);if(H)Y.push(H)}return Y}function S2(J,z,Y){if(J.type==="message"){let G=J.role;if(G!=="user"&&G!=="assistant"&&G!=="system")return;let X=V8(J.content);if(G==="user"&&y7(X))return;return{role:G,blocks:X,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return I2(J,z,Y);if(J.type==="function_call")return U8(J,z,Y,{name:L8(J.name,"function_call"),input:D8(J.arguments)});if(J.type==="custom_tool_call")return U8(J,z,Y,{name:L8(J.name,"custom_tool_call"),input:D8(J.input)});if(J.type==="tool_search_call")return U8(J,z,Y,{name:"tool_search_call",input:sQ(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return P7(J,z,Y,D8(J.output));if(J.type==="tool_search_output")return P7(J,z,Y,sQ(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return y2(J,z,Y);return}function I2(J,z,Y){let G=T2(J);if(G.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:G}],timestamp:z,sessionId:Y}}function U8(J,z,Y,G){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:G.name,input:G.input}],timestamp:z,sessionId:Y}}function P7(J,z,Y,G){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:G,isError:!1}],timestamp:z,sessionId:Y}}function y2(J,z,Y){let G=typeof J.type==="string"?J.type:"tool",X=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${G}:${z}`,Z=L8(J.name,G),Q=sQ(J,["type","call_id","status"]),f=sQ(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:X,name:Z,input:Q},{type:"tool_result",callId:X,output:f,isError:!1}]}}function T2(J){let z=h7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return h7(J.summary)}function h7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!WZ(Y))continue;let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)z.push(G)}return z.join("")}function sQ(J,z){let Y={};for(let[G,X]of Object.entries(J))if(!z.includes(G))Y[G]=X;return Y}function L8(J,z){return typeof J==="string"&&J.length>0?J:z}function D8(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function x2(J){let z,Y=null;for(let G of J.split(`
|
|
31
31
|
`)){let X=G.trim();if(!X)continue;if(!gY(X))continue;let Z;try{Z=JSON.parse(X)}catch{continue}if(!WZ(Z))continue;let Q=typeof Z.timestamp==="string"?u2(Z.timestamp):null;if(Z.type==="response_item")continue;if(Z.type!=="turn.completed")continue;let f=WZ(Z.usage)?Z.usage:void 0;if(!f)continue;let H=x7(f);if(!H)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=H;else if(Y===null)z=H}return z}function u2(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function WZ(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var WG,u7=5000,E7=!1,v7,w7,g2=200,C2=12;var O8=k(()=>{QZ();T7();WG={sessionsDir(){return jG.join(O2(),".codex","sessions")},async readdir(J){try{return await M2(J)}catch{return[]}},async readFile(J){return await $G(J)},stat:F2};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 E2}from"os";import{join as w2}from"path";function P2(){return w2(E2(),".codex","hooks.json")}var l7,jP,A8;var $7=k(()=>{j8();l7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],jP=l7.map((J)=>J.event);A8=class A8 extends jZ{vendor="codex";eventMap=l7;globalSettingsPath(){return P2()}}});function a7(J){if(!tQ(J))return;let z=tQ(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,G=0,X=0;for(let Q of Object.values(z)){if(!tQ(Q)||!tQ(Q.usage))continue;Y+=eQ(Q.usage.inputTokens,0),G+=eQ(Q.usage.outputTokens,0),X+=eQ(Q.usage.cacheReadTokens,0)}let Z=eQ(J.currentTokens,0);if(Y===0&&G===0&&X===0&&Z===0)return;return{input_tokens:Y,output_tokens:G,...X>0?{cache_read_input_tokens:X}:{},...Z>0?{context_tokens:Z}:{}}}function tQ(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function eQ(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as h2,rm as v2,stat as m2}from"fs/promises";import{homedir as c2}from"os";import bY from"path";async function g8(J=VG){let z=bY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((G)=>bY.join(z,G))}async function _7(J,z=VG){let Y=[];for(let G of await g8(z)){let X=await C8(G,z);if(X.cwd!==J)continue;Y.push({id:X.id??bY.basename(G),updatedAt:X.updatedAt??""})}return Y.sort((G,X)=>G.updatedAt.localeCompare(X.updatedAt)).map((G)=>G.id)}async function p7(J,z=VG){if(!J)return 0;let Y=0;for(let G of await g8(z)){if((await C8(G,z)).cwd!==J)continue;try{let{mtimeMs:Z}=await z.stat(bY.join(G,"events.jsonl"));if(Z>Y)Y=Z}catch{}}return Y}async function d2(J,z=VG){let Y=await n2(J,z);if(!Y)return{messages:[]};let G=await z.readFile(bY.join(Y,"events.jsonl")).catch(()=>""),X=l2(G,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function r7(J,z=VG){return(await d2(J,z)).messages}async function n2(J,z=VG){for(let Y of await g8(z)){if(bY.basename(Y)===J)return Y;let G=await C8(Y,z);if(G.id===J||G.name?.toLowerCase()===J.toLowerCase())return Y}return}async function C8(J,z=VG){let Y=await z.readFile(bY.join(J,"workspace.yaml")).catch(()=>"");return i2(Y)}function i2(J){let z={};for(let Y of J.split(`
|
|
32
32
|
`)){let G=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!G)continue;let X=G[1],Z=G[2]??"";if(Z.startsWith('"')&&Z.endsWith('"'))Z=Z.slice(1,-1).replace(/\\"/g,'"');z[X]=Z}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function l2(J,z){let Y=[],G=new Map,X=z,Z,Q=null;for(let f of J.split(`
|
|
33
|
-
`)){let H=f.trim();if(!H)continue;if(!gY(H))continue;let B;try{B=JSON.parse(H)}catch{continue}if(!R8(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=R8(B.data)?B.data:{};if(B.type==="session.start"){let K=typeof j.sessionId==="string"?j.sessionId:void 0;if(K)X=K;continue}if(B.type==="user.message"){let K=typeof j.content==="string"?j.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,$2),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:X});continue}if(B.type==="assistant.message"){let K=[],L=typeof j.content==="string"?j.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let O of A){if(!R8(O))continue;let g=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",u=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:g,name:u,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:X});continue}if(B.type==="tool.execution_start"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(K)G.set(K,L);continue}if(B.type==="tool.execution_complete"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!K)continue;let L=G.get(K)??(typeof j.toolName==="string"?j.toolName:"tool"),A=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:j.success===!1}],timestamp:V,sessionId:X});continue}if(B.type==="session.shutdown")Z=a7(j)}return{messages:Y,usageMetrics:Z,firstUserMessage:Q}}function R8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var VG,$2=200;var o7=k(()=>{QZ();VG={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return bY.join(c2(),".copilot")},async readdir(J){try{return await h2(J)}catch{return[]}},async readFile(J){return await $G(J)},stat:m2,async rm(J){await v2(J,{recursive:!0,force:!0})}}});function N8(J){return e1(J).createHookAdapter()}class Jq{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 k8=k(()=>{
|
|
33
|
+
`)){let H=f.trim();if(!H)continue;if(!gY(H))continue;let B;try{B=JSON.parse(H)}catch{continue}if(!R8(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=R8(B.data)?B.data:{};if(B.type==="session.start"){let K=typeof j.sessionId==="string"?j.sessionId:void 0;if(K)X=K;continue}if(B.type==="user.message"){let K=typeof j.content==="string"?j.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,$2),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:X});continue}if(B.type==="assistant.message"){let K=[],L=typeof j.content==="string"?j.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let O of A){if(!R8(O))continue;let g=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",u=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:g,name:u,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:X});continue}if(B.type==="tool.execution_start"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(K)G.set(K,L);continue}if(B.type==="tool.execution_complete"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!K)continue;let L=G.get(K)??(typeof j.toolName==="string"?j.toolName:"tool"),A=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:j.success===!1}],timestamp:V,sessionId:X});continue}if(B.type==="session.shutdown")Z=a7(j)}return{messages:Y,usageMetrics:Z,firstUserMessage:Q}}function R8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var VG,$2=200;var o7=k(()=>{QZ();VG={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return bY.join(c2(),".copilot")},async readdir(J){try{return await h2(J)}catch{return[]}},async readFile(J){return await $G(J)},stat:m2,async rm(J){await v2(J,{recursive:!0,force:!0})}}});function N8(J){return e1(J).createHookAdapter()}class Jq{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 k8=k(()=>{SY()});import{readFile as s7}from"fs/promises";class zq{supportsCompletionMarkers(){return!0}}function VZ(J){return e1(J).createTurnDetector()}function r2(J,z="claude",Y=0){let G=null,X=0;for(let Z of J.split(`
|
|
34
34
|
`)){X++;let Q=t7(Z);if(!Q)continue;let f=JV(Q.message)?Q.message:Q;if(f.role!=="assistant")continue;if(!("content"in f))continue;let H=e7(Q,Y),B={id:`claude:${z}:${H}:${X}`,timestampMs:H,source:"claude"};if(!G||B.timestampMs>=G.timestampMs)G=B}return G}function o2(J,z="codex"){let Y=null,G=0;for(let X of J.split(`
|
|
35
|
-
`)){G++;let Z=t7(X);if(!Z||Z.type!=="turn.completed")continue;let Q=e7(Z,0),f={id:`codex:${z}:${Q}:${G}`,timestampMs:Q,source:"codex"};if(!Y||f.timestampMs>=Y.timestampMs)Y=f}return Y}function t7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return JV(Y)?Y:null}catch{return null}}function e7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function JV(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var _2,b8,p2,I8,Yq;var Gq=k(()=>{X8();O8();IY();_2={listSessionFiles:(J)=>qZ(J),readFile:(J)=>s7(J,"utf8")};b8=class b8 extends zq{deps;vendor="claude";cache=new Map;constructor(J=_2){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,G=new Map;for(let X of z.slice(0,4)){let Z=this.cache.get(X.path),Q;if(Z&&X.mtimeMs>0&&Z.mtimeMs===X.mtimeMs)Q=Z.marker;else{let f=await this.deps.readFile(X.path).catch(()=>"");Q=r2(f,X.path,X.mtimeMs)}if(G.set(X.path,{mtimeMs:X.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=G,Y}};p2={findLatestRollout:(J)=>F8(J),readFile:(J)=>s7(J,"utf8")};I8=class I8 extends zq{deps;vendor="codex";cache=null;constructor(J=p2){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let G=o2(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:G},G}};Yq=class Yq extends zq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function YA(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 Jq(J),createTurnDetector:()=>new Yq(J)}}function e1(J){return qJ(J)?zA[J]:YA(J)}var s2,t2,e2,JA,zA;var IY=k(()=>{l1();QG();X8();S7();O8();$7();o7();k8();Gq();s2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},t2={async listSessionIdsForWorktree(J){return[...await qZ(J)].sort((Y,G)=>Y.mtimeMs-G.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>K7(J),latestTranscriptMtimeForWorktree:(J)=>V7(J)},e2={listSessionIdsForWorktree:(J)=>c7(J),readHistory:(J)=>n7(J),latestTranscriptMtimeForWorktree:(J)=>d7(J)},JA={listSessionIdsForWorktree:(J)=>_7(J),readHistory:(J)=>r7(J),latestTranscriptMtimeForWorktree:(J)=>p7(J)},zA={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:t2,detectAccount:(J)=>iQ(J),createHookAdapter:()=>new W8,createTurnDetector:()=>new b8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:e2,detectAccount:(J)=>lQ(J),createHookAdapter:()=>new A8,createTurnDetector:()=>new I8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:JA,detectAccount:(J)=>$Q(J),createHookAdapter:()=>new Jq("copilot"),createTurnDetector:()=>new Yq("copilot")}}});async function oG(J,z){if(!z)return 0;return e1(J).history.latestTranscriptMtimeForWorktree(z)}var Xq=k(()=>{IY()});function zV(J){return typeof J==="string"&&GA.includes(J)}var KZ=(J)=>J,a1="claude",GA;var sJ=k(()=>{GA=["backlog","in_progress","in_review","done","canceled","error"]});function Zq(J){return XA.includes(J)}function YV(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var XA;var Qq=k(()=>{XA=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function ZA(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return GV;let z=Number(J);return Number.isFinite(z)&&z>0?z:GV}class S8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=ZA(),Y=()=>Date.now(),G=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=G}report(J,z,Y){let G=this.activity.get(J);if(G?.lapse)clearTimeout(G.lapse);let X=YV(G?.state,z,Y),Z=this.now(),Q={state:X,detail:Y,at:Z};if(X!=="idle"&&X!=="turn_complete")Q.lapse=this.armLapse(J,Z);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let G;try{G=await this.livenessAt(J)}catch{G=void 0}let X=this.activity.get(J);if(!X||X.at!==z)return;if(G!==void 0&&G>this.now()-this.staleMs){X.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var GV=600000;var XV=k(()=>{Qq()});function ZV(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function qq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),G=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${G}`}function QV(J){let z=J.find((X)=>X.role==="user");if(!z)return"";let Y=z.blocks.filter((X)=>X.type==="text").map((X)=>X.text).join(" "),G=ZV(Y);return G.length>0?Buffer.from(G,"utf8").toString("utf8"):G}async function sG(J,z=a1){if(!J)return"";let{history:Y}=e1(z),G=await Y.listSessionIdsForWorktree(J);for(let X of G.slice(0,QA)){let Z=QV(await Y.readHistory(X));if(Z)return Z}return""}async function qV(J,z){if(!z)return"";try{return QV(await e1(J).history.readHistory(z))}catch{return""}}var QA=8;var fq=k(()=>{IY();sJ()});function fV(J){let z=String(J),Y=z.length-1;return I1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function x8(J){I1.context=J}function qA(){return{...I1.context,id:I1.getNextContextId(),count:0}}function KG(J,z){let Y=U1,G=$0,X=J.length===0,Z=z===void 0?G:z,Q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:Z?Z.context:null,owner:Z},f=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>p1(()=>SY(Q)));Wz.afterCreateOwner&&Wz.afterCreateOwner(Q),$0=Q,U1=null;try{return IJ(f,!0)}finally{U1=Y,$0=G}}function a(J,z){z=z?Object.assign({},Wq,z):Wq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(DV(Y),Wz.afterCreateSignal)Wz.afterCreateSignal(Y)}let G=(X)=>{if(typeof X==="function")if(H0&&H0.running&&H0.sources.has(Y))X=X(Y.tValue);else X=X(Y.value);return E8(Y,X)};return[LV.bind(Y),G]}function HV(J,z,Y){let G=JX(J,z,!0,wJ,Y);if(eG&&H0&&H0.running)_1.push(G);else UG(G)}function Sz(J,z,Y){let G=JX(J,z,!1,wJ,Y);if(eG&&H0&&H0.running)_1.push(G);else UG(G)}function s0(J,z,Y){UV=OA;let G=JX(J,z,!1,wJ,Y),X=LZ&&PJ(LZ);if(X)G.suspense=X;if(!Y||!Y.render)G.user=!0;VJ?VJ.push(G):UG(G)}function K0(J,z,Y){Y=Y?Object.assign({},Wq,Y):Wq;let G=JX(J,z,!0,0,Y);if(G.observers=null,G.observerSlots=null,G.comparator=Y.equals||void 0,eG&&H0&&H0.running)G.tState=wJ,_1.push(G);else UG(G);return LV.bind(G)}function VA(J){return J&&typeof J==="object"&&"then"in J}function Dq(J,z,Y){let G,X,Z;if(typeof z==="function")G=J,X=z,Z=Y||{};else G=!0,X=J,Z=z||{};let Q=null,f=y8,H=null,B=!1,V=!1,j="initialValue"in Z,K=typeof G==="function"&&K0(G),L=new Set,[A,O]=(Z.storage||a)(Z.initialValue),[g,u]=a(void 0),[_,I]=a(void 0,{equals:!1}),[N,M]=a(j?"ready":"unresolved");if(I1.context){if(H=I1.getNextContextId(),Z.ssrLoadFrom==="initial")f=Z.initialValue;else if(I1.load&&I1.has(H))f=I1.load(H)}function S(T,q0,p,j0){if(Q===T){if(Q=null,j0!==void 0&&(j=!0),(T===f||q0===f)&&Z.onHydrated)queueMicrotask(()=>Z.onHydrated(j0,{value:q0}));if(f=y8,H0&&T&&B)H0.promises.delete(T),B=!1,IJ(()=>{H0.running=!0,r(q0,p)},!1);else r(q0,p)}return q0}function r(T,q0){IJ(()=>{if(q0===void 0)O(()=>T);M(q0!==void 0?"errored":j?"ready":"unresolved"),u(q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function l(){let T=LZ&&PJ(LZ),q0=A(),p=g();if(p!==void 0&&!Q)throw p;if(U1&&!U1.user&&T)HV(()=>{if(_(),Q){if(T.resolved&&H0&&B)H0.promises.add(Q);else if(!L.has(T))T.increment(),L.add(T)}});return q0}function e(T=!0){if(T!==!1&&V)return;V=!1;let q0=K?K():G;if(B=H0&&H0.running,q0==null||q0===!1){S(Q,p1(A));return}if(H0&&Q)H0.promises.delete(Q);let p,j0=f!==y8?f:p1(()=>{try{return X(q0,{value:A(),refetching:T})}catch(F0){p=F0}});if(p!==void 0){S(Q,void 0,jq(p),q0);return}else if(!VA(j0))return S(Q,j0,void 0,q0),j0;if(Q=j0,"v"in j0){if(j0.s===1)S(Q,j0.v,void 0,q0);else S(Q,void 0,jq(j0.v),q0);return j0}return V=!0,queueMicrotask(()=>V=!1),IJ(()=>{M(j?"refreshing":"pending"),I()},!1),j0.then((F0)=>S(j0,F0,void 0,q0),(F0)=>S(j0,void 0,jq(F0),q0))}Object.defineProperties(l,{state:{get:()=>N()},error:{get:()=>g()},loading:{get(){let T=N();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return l();let T=g();if(T&&!Q)throw T;return A()}}});let J0=$0;if(K)HV(()=>(J0=$0,e(!1)));else e(!1);return[l,{refetch:(T)=>UA(J0,()=>e(T)),mutate:O}]}function Lq(J){return IJ(J,!1)}function p1(J){if(!tG&&U1===null)return J();let z=U1;U1=null;try{if(tG)return tG.untrack(J);return J()}finally{U1=z}}function SJ(J,z,Y){let G=Array.isArray(J),X,Z=Y&&Y.defer;return(Q)=>{let f;if(G){f=Array(J.length);for(let B=0;B<J.length;B++)f[B]=J[B]()}else f=J();if(Z)return Z=!1,Q;let H=p1(()=>z(f,X,Q));return X=f,H}}function JJ(J){s0(()=>p1(J))}function k1(J){if($0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if($0.cleanups===null)$0.cleanups=[J];else $0.cleanups.push(J);return J}function KA(J,z){if(UZ||(UZ=Symbol("error")),$0=JX(void 0,void 0,!0),$0.context={...$0.context,[UZ]:[z]},H0&&H0.running)H0.sources.add($0);try{return J()}catch(Y){FZ(Y)}finally{$0=$0.owner}}function Mq(){return U1}function UA(J,z){let Y=$0,G=U1;$0=J,U1=null;try{return IJ(z,!0)}catch(X){FZ(X)}finally{$0=Y,U1=G}}function DA(J){if(H0&&H0.running)return J(),H0.done;let z=U1,Y=$0;return Promise.resolve().then(()=>{U1=z,$0=Y;let G;if(eG||LZ)G=H0||(H0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),G.done||(G.done=new Promise((X)=>G.resolve=X)),G.running=!0;return IJ(J,!1),U1=$0=null,G?G.done:void 0})}function jV(J,z){let Y=JX(()=>p1(()=>{return Object.assign(J,{[jA]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,UG(Y),Y.tValue!==void 0?Y.tValue:Y.value}function DV(J){if($0){if($0.sourceMap)$0.sourceMap.push(J);else $0.sourceMap=[J];J.graph=$0}if(Wz.afterRegisterGraph)Wz.afterRegisterGraph(J)}function yz(J,z){let Y=Symbol("context");return{id:Y,Provider:AA(Y,z),defaultValue:J}}function PJ(J){let z;return $0&&$0.context&&(z=$0.context[J.id])!==void 0?z:J.defaultValue}function LA(J){let z=K0(J),Y=K0(()=>u8(z()),void 0,{name:"children"});return Y.toArray=()=>{let G=Y();return Array.isArray(G)?G:G!=null?[G]:[]},Y}function LV(){let J=H0&&H0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===wJ)UG(this);else{let z=_1;_1=null,IJ(()=>Vq(this),!1),_1=z}if(U1){let z=this.observers;if(!z||z[z.length-1]!==U1){let Y=z?z.length:0;if(!U1.sources)U1.sources=[this],U1.sourceSlots=[Y];else U1.sources.push(this),U1.sourceSlots.push(Y);if(!z)this.observers=[U1],this.observerSlots=[U1.sources.length-1];else z.push(U1),this.observerSlots.push(U1.sources.length-1)}}if(J&&H0.sources.has(this))return this.tValue;return this.value}function E8(J,z,Y){let G=H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(G,z)){if(H0){let X=H0.running;if(X||!Y&&H0.sources.has(J))H0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)IJ(()=>{for(let X=0;X<J.observers.length;X+=1){let Z=J.observers[X],Q=H0&&H0.running;if(Q&&H0.disposed.has(Z))continue;if(Q?!Z.tState:!Z.state){if(Z.pure)_1.push(Z);else VJ.push(Z);if(Z.observers)FV(Z)}if(!Q)Z.state=wJ;else Z.tState=wJ}if(_1.length>1e6){if(_1=[],fA)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function UG(J){if(!J.fn)return;SY(J);let z=Uq;if(WV(J,H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value,z),H0&&!H0.running&&H0.sources.has(J))queueMicrotask(()=>{IJ(()=>{H0&&(H0.running=!0),U1=$0=J,WV(J,J.tValue,z),U1=$0=null},!1)})}function WV(J,z,Y){let G,X=$0,Z=U1;U1=$0=J;try{G=J.fn(z)}catch(Q){if(J.pure)if(H0&&H0.running)J.tState=wJ,J.tOwned&&J.tOwned.forEach(SY),J.tOwned=void 0;else J.state=wJ,J.owned&&J.owned.forEach(SY),J.owned=null;return J.updatedAt=Y+1,FZ(Q)}finally{U1=Z,$0=X}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)E8(J,G,!0);else if(H0&&H0.running&&J.pure){if(!H0.sources.has(J))J.value=G;H0.sources.add(J),J.tValue=G}else J.value=G;J.updatedAt=Y}}function JX(J,z,Y,G=wJ,X){let Z={fn:J,state:G,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:$0,context:$0?$0.context:null,pure:Y};if(H0&&H0.running)Z.state=0,Z.tState=G;if($0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if($0!==WA)if(H0&&H0.running&&$0.pure)if(!$0.tOwned)$0.tOwned=[Z];else $0.tOwned.push(Z);else if(!$0.owned)$0.owned=[Z];else $0.owned.push(Z);if(X&&X.name)Z.name=X.name;if(tG&&Z.fn){let Q=Z.fn,[f,H]=a(void 0,{equals:!1}),B=tG.factory(Q,H);k1(()=>B.dispose());let V,j=()=>DA(H).then(()=>{if(V)V.dispose(),V=void 0});Z.fn=(K)=>{if(f(),H0&&H0.running){if(!V)V=tG.factory(Q,j);return V.track(K)}return B.track(K)}}return Wz.afterCreateOwner&&Wz.afterCreateOwner(Z),Z}function MZ(J){let z=H0&&H0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===DZ)return Vq(J);if(J.suspense&&p1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<Uq)){if(z&&H0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let G=Y.length-1;G>=0;G--){if(J=Y[G],z){let X=J,Z=Y[G+1];while((X=X.owner)&&X!==Z)if(H0.disposed.has(X))return}if((z?J.tState:J.state)===wJ)UG(J);else if((z?J.tState:J.state)===DZ){let X=_1;_1=null,IJ(()=>Vq(J,Y[0]),!1),_1=X}}}function IJ(J,z){if(_1)return J();let Y=!1;if(!z)_1=[];if(VJ)Y=!0;else VJ=[];Uq++;try{let G=J();return MA(Y),G}catch(G){if(!Y)VJ=null;_1=null,FZ(G)}}function MA(J){if(_1){if(eG&&H0&&H0.running)FA(_1);else MV(_1);_1=null}if(J)return;let z;if(H0){if(!H0.promises.size&&!H0.queue.size){let{sources:G,disposed:X}=H0;VJ.push.apply(VJ,H0.effects),z=H0.resolve;for(let Z of VJ)"tState"in Z&&(Z.state=Z.tState),delete Z.tState;H0=null,IJ(()=>{for(let Z of X)SY(Z);for(let Z of G){if(Z.value=Z.tValue,Z.owned)for(let Q=0,f=Z.owned.length;Q<f;Q++)SY(Z.owned[Q]);if(Z.tOwned)Z.owned=Z.tOwned;delete Z.tValue,delete Z.tOwned,Z.tState=0}BV(!1)},!1)}else if(H0.running){H0.running=!1,H0.effects.push.apply(H0.effects,VJ),VJ=null,BV(!0);return}}let Y=VJ;if(VJ=null,Y.length)IJ(()=>UV(Y),!1);else Wz.afterUpdate&&Wz.afterUpdate();if(z)z()}function MV(J){for(let z=0;z<J.length;z++)MZ(J[z])}function FA(J){for(let z=0;z<J.length;z++){let Y=J[z],G=H0.queue;if(!G.has(Y))G.add(Y),eG(()=>{G.delete(Y),IJ(()=>{H0.running=!0,MZ(Y)},!1),H0&&(H0.running=!1)})}}function OA(J){let z,Y=0;for(z=0;z<J.length;z++){let G=J[z];if(!G.user)MZ(G);else J[Y++]=G}if(I1.context){if(I1.count){I1.effects||(I1.effects=[]),I1.effects.push(...J.slice(0,Y));return}x8()}if(I1.effects&&(I1.done||!I1.count))J=[...I1.effects,...J],Y+=I1.effects.length,delete I1.effects;for(z=0;z<Y;z++)MZ(J[z])}function Vq(J,z){let Y=H0&&H0.running;if(Y)J.tState=0;else J.state=0;for(let G=0;G<J.sources.length;G+=1){let X=J.sources[G];if(X.sources){let Z=Y?X.tState:X.state;if(Z===wJ){if(X!==z&&(!X.updatedAt||X.updatedAt<Uq))MZ(X)}else if(Z===DZ)Vq(X,z)}}}function FV(J){let z=H0&&H0.running;for(let Y=0;Y<J.observers.length;Y+=1){let G=J.observers[Y];if(z?!G.tState:!G.state){if(z)G.tState=DZ;else G.state=DZ;if(G.pure)_1.push(G);else VJ.push(G);G.observers&&FV(G)}}}function SY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),G=J.sourceSlots.pop(),X=Y.observers;if(X&&X.length){let Z=X.pop(),Q=Y.observerSlots.pop();if(G<X.length)Z.sourceSlots[Q]=G,X[G]=Z,Y.observerSlots[G]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)SY(J.tOwned[z]);delete J.tOwned}if(H0&&H0.running&&J.pure)OV(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)SY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(H0&&H0.running)J.tState=0;else J.state=0;delete J.sourceMap}function OV(J,z){if(!z)J.tState=0,H0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)OV(J.owned[Y])}function jq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function VV(J,z,Y){try{for(let G of z)G(J)}catch(G){FZ(G,Y&&Y.owner||null)}}function FZ(J,z=$0){let Y=UZ&&z&&z.context&&z.context[UZ],G=jq(J);if(!Y)throw G;if(VJ)VJ.push({fn(){VV(G,Y,z)},state:wJ});else VV(G,Y,z)}function u8(J){if(typeof J==="function"&&!J.length)return u8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let G=u8(J[Y]);if(Array.isArray(G))if(G.length<32768)z.push.apply(z,G);else for(let X=0;X<G.length;X++)z.push(G[X]);else z.push(G)}return z}return J}function AA(J,z){return function(G){let X;return Sz(()=>X=p1(()=>{return $0.context={...$0.context,[J]:G.value},LA(()=>G.children)}),void 0,z),X}}function KV(J){for(let z=0;z<J.length;z++)J[z]()}function gA(J,z,Y={}){let G=[],X=[],Z=[],Q=0,f=z.length>1?[]:null;return k1(()=>KV(Z)),()=>{let H=J()||[],B=H.length,V,j;return H[Kq],p1(()=>{let L,A,O,g,u,_,I,N,M;if(B===0){if(Q!==0)KV(Z),Z=[],G=[],X=[],Q=0,f&&(f=[]);if(Y.fallback)G=[RA],X[0]=KG((S)=>{return Z[0]=S,Y.fallback()}),Q=1}else if(Q===0){X=Array(B);for(j=0;j<B;j++)G[j]=H[j],X[j]=KG(K);Q=B}else{O=Array(B),g=Array(B),f&&(u=Array(B));for(_=0,I=Math.min(Q,B);_<I&&G[_]===H[_];_++);for(I=Q-1,N=B-1;I>=_&&N>=_&&G[I]===H[N];I--,N--)O[N]=X[I],g[N]=Z[I],f&&(u[N]=f[I]);L=new Map,A=Array(N+1);for(j=N;j>=_;j--)M=H[j],V=L.get(M),A[j]=V===void 0?-1:V,L.set(M,j);for(V=_;V<=I;V++)if(M=G[V],j=L.get(M),j!==void 0&&j!==-1)O[j]=X[V],g[j]=Z[V],f&&(u[j]=f[V]),j=A[j],L.set(M,j);else Z[V]();for(j=_;j<B;j++)if(j in O){if(X[j]=O[j],Z[j]=g[j],f)f[j]=u[j],f[j](j)}else X[j]=KG(K);X=X.slice(0,Q=B),G=H.slice(0)}return X});function K(L){if(Z[j]=L,f){let[A,O]=a(j,{name:"index"});return f[j]=O,z(H[j],A)}return z(H[j])}}}function AV(J,z){if(CA){if(I1.context){let Y=I1.context;x8(qA());let G=jV(J,z||{});return x8(Y),G}}return jV(J,z||{})}function Hq(){return!0}function T8(J){return!(J=typeof J==="function"?J():J)?{}:J}function kA(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function Fq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let f=J[Q];z=z||!!f&&jz in f,J[Q]=typeof f==="function"?(z=!0,K0(f)):f}if(BA&&z)return new Proxy({get(Q){for(let f=J.length-1;f>=0;f--){let H=T8(J[f])[Q];if(H!==void 0)return H}},has(Q){for(let f=J.length-1;f>=0;f--)if(Q in T8(J[f]))return!0;return!1},keys(){let Q=[];for(let f=0;f<J.length;f++)Q.push(...Object.keys(T8(J[f])));return[...new Set(Q)]}},NA);let Y={},G=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let f=J[Q];if(!f)continue;let H=Object.getOwnPropertyNames(f);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(f,V);if(!G[V])G[V]=j.get?{enumerable:!0,configurable:!0,get:kA.bind(Y[V]=[j.get.bind(f)])}:j.value!==void 0?j:void 0;else{let K=Y[V];if(K){if(j.get)K.push(j.get.bind(f));else if(j.value!==void 0)K.push(()=>j.value)}}}}let X={},Z=Object.keys(G);for(let Q=Z.length-1;Q>=0;Q--){let f=Z[Q],H=G[f];if(H&&H.get)Object.defineProperty(X,f,H);else X[f]=H?H.value:void 0}return X}function Q1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return K0(gA(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function X0(J){let z=J.keyed,Y=K0(()=>J.when,void 0,{name:"condition value"}),G=z?Y:K0(Y,void 0,{equals:(X,Z)=>!X===!Z,name:"condition"});return K0(()=>{let X=G();if(X){let Z=J.children;return typeof Z==="function"&&Z.length>0?p1(()=>Z(z?X:()=>{if(!p1(G))throw bA("Show");return Y()})):Z}return J.fallback},void 0,{name:"value"})}function RV(J){let z;if(I1.context&&I1.load)z=I1.load(I1.getContextId());let[Y,G]=a(z,{name:"errored"});return Bq||(Bq=new Set),Bq.add(G),k1(()=>Bq.delete(G)),K0(()=>{let X;if(X=Y()){let Z=J.fallback;if(typeof Z!=="function"||Z.length==0)console.error(X);return typeof Z==="function"&&Z.length?p1(()=>Z(X,()=>G())):Z}return KA(()=>J.children,G)},void 0,{name:"value"})}var I1,fA=!0,HA=(J,z)=>J===z,jz,BA,Kq,jA,Wq,UZ=null,UV,wJ=1,DZ=2,WA,y8,$0=null,H0=null,eG=null,tG=null,U1=null,_1=null,VJ=null,Uq=0,Wz,nP,BV,LZ,RA,CA=!1,NA,bA=(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.`,Bq,gV;var W1=k(()=>{I1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return fV(this.context.count)},getNextContextId(){return fV(this.context.count++)}};jz=Symbol("solid-proxy"),BA=typeof Proxy==="function",Kq=Symbol("solid-track"),jA=Symbol("solid-dev-component"),Wq={equals:HA},UV=MV,WA={},y8={},Wz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[nP,BV]=a(!1);RA=Symbol("fallback");NA={get(J,z,Y){if(z===jz)return Y;return J.get(z)},has(J,z){if(z===jz)return!0;return J.has(z)},set:Hq,deleteProperty:Hq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Hq,deleteProperty:Hq}},ownKeys(J){return J.keys()}};gV={hooks:Wz,writeSignal:E8,registerGraph:DV};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 IA}from"child_process";function w8(J,z,Y,G){if(Y)return J+G.slowRetryMs;return z+Math.max(G.minIntervalMs,(z-J)*5)}function P8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function CV(J,z,Y=Math.random){let G=Math.max(0,Math.min(1,z)),X=(Y()*2-1)*J*G;return Math.max(0,J+X)}function NV(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function zX(J,z,Y,G){let X=Date.now();if(!P8(J,X))return!1;J.inFlight=!0;let Z=new AbortController,Q=setTimeout(()=>Z.abort(),z.timeoutMs);return(async()=>{let f,H=!1;try{f=await Y(Z.signal),H=!0}catch{}clearTimeout(Q);let B=Z.signal.aborted;if(J.nextAllowedAt=w8(X,Date.now(),B,z),J.inFlight=!1,H&&!B)G(f)})(),!0}function GY(J,z,Y){return new Promise((G)=>{let X="",Z=!1,Q=(H)=>{if(Z)return;Z=!0,G({status:H,stdout:X})},f=IA(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});f.stdout?.on("data",(H)=>{X+=String(H)}),f.on("error",()=>Q(null)),f.on("close",(H)=>Q(H))})}var YX=()=>{};function SA(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function yA(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),G=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(G==="SUCCESS")return"passing";if(G==="PENDING"||G==="EXPECTED")return"pending";if(G==="FAILURE"||G==="ERROR")return"failing";return"unknown"}function TA(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let G of J){let X=yA(G);if(X==="failing")return"failing";if(X==="pending")z=!0;else if(X==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function bV(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:SA(J.state,J.reviewDecision),checkState:TA(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 Aq(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 Oq(J,z){return z.some((Y)=>J.includes(Y))}function h8(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(Oq(z,wA))return{kind:"empty"};if(Oq(z,xA))return{kind:"error",error:"no-remote"};if(Oq(z,uA))return{kind:"error",error:"auth"};if(Oq(z,EA))return{kind:"error",error:"network"};return{kind:"empty"}}function OZ(J,z,Y,G,X=Math.random){let Z=(f)=>Y+CV(f,G.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:Z(J.settled?G.settledMs:G.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:Z(G.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:Z(G.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:Z(NV(G.failureBaseMs,Q-1,G.failureCapMs)),failures:Q}}var kV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",xA,uA,EA,wA;var v8=k(()=>{YX();xA=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],uA=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],EA=["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"],wA=["no pull requests found","no open pull requests","no pull request found"]});var m8,c8,d8,n8="DIRTY_WORKTREE",i8,l8;var $8=k(()=>{m8=class m8 extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};c8=class c8 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};d8=class d8 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};i8=class i8 extends Error{taskId;constructor(J){super(`${n8}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};l8=class l8 extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var IV;var SV=k(()=>{IV=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});function yV(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>TQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:kQ(J.host,J.user,J.port)}}function GX(J){let z=pz(J);if(!z)return new yQ;return new nG(yV(z))}function XY(J){for(let z of Object.values(pH()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new nG(yV(z));return new yQ}function TV(J){return J&&$1(J)?J:void 0}function Rq(J){let z=XY(J);return z.isRemote||z.existsSync(J)}function w1(J){return XY(J).isRemote?bz():J}var Vz=k(()=>{r1();O1();mH();nH()});import{createHash as PA}from"crypto";import uV from"fs";import hJ from"path";function EV(J){if(!hJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return hJ.join(fJ(),hA,nA(J))}function wV(J){if(!hJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[EV(J),...cA.map((z)=>hJ.join(J,z))]}function PV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return hJ.join(EV(J),z)}async function hV(J){if($1(J)){let Y=pz(J)?.basePath;if(!Y)return[];return GX(J).readdir(mV(Y))}let z=new Set;for(let Y of wV(J))try{for(let G of uV.readdirSync(Y,{withFileTypes:!0}))if(G.isDirectory())z.add(G.name)}catch{}return[...z]}function a8(J,z){if(!hJ.isAbsolute(J)||!hJ.isAbsolute(z))return null;let Y=xV(z);for(let G of wV(J)){let X=xV(G),Z=hJ.relative(X,Y);if(Z!==""&&!Z.startsWith("..")&&!hJ.isAbsolute(Z))return G}return null}function vV(J,z){return a8(J,z)!==null}function mV(J){return`${dA(J)}/.kobe/worktrees`}function cV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${mV(J)}/${z}`}function dA(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function xV(J){try{return uV.realpathSync(J)}catch{return hJ.resolve(J)}}function nA(J){let Y=(hJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=PA("sha1").update(hJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}var hA="worktrees",vA=".kobe/worktrees",mA=".claude/worktrees",cA;var _8=k(()=>{r1();Vz();O1();cA=[vA,mA]});class p8{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??IV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((G)=>{Y=G}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((X)=>!z.has(X));if(Y.length>0){let X=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,X),X}let G=this.pool[Math.floor(this.random()*this.pool.length)];for(let X=2;;X++){let Z=`${G}-v${X}`;if(!z.has(Z))return this.addPending(J,Z),Z}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await hV(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var dV=k(()=>{SV();_8()});var iV={};j1(iV,{PLACEHOLDER_TASK_TITLE:()=>Tz,Orchestrator:()=>gq});import{realpathSync as iA}from"fs";import{basename as lA,resolve as $A}from"path";function nV(J){return pz(J)?.basePath??J}class gq{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 p8((Z)=>this.store.list().filter((Q)=>Q.repo===Z&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=a(this.store.list());this.tasksAcc=z,this.setTasks=(Z)=>Y(()=>Z);let[G,X]=a(null);this.activeTaskAcc=G,this.setActiveTaskSig=(Z)=>X(()=>Z),this.unsubscribeStore=this.store.subscribe((Z)=>{this.setTasks(Z.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??Tz).trim()||Tz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??a1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=AZ(J),G=this.store.list().find((Q)=>Q.kind==="main"&&AZ(Q.repo).key===Y);if(G)return G;let X=this.mainTaskLocks.get(Y);if(X)return X;let Z=(async()=>{let Q=uJ(C1("lastSelectedVendor"),EJ());return await this.store.create({repo:z,title:aA(z),branch:"",worktreePath:nV(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,Z);try{return await Z}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return nV(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let G=this.createWorktree(z);this.worktreeLocks.set(z.id,G);try{return await G}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||qq(J.title,J.id),G=this.pendingBaseRefs.get(J.id),X;try{X=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:G})}catch(Z){throw this.slugs.cancel(J.repo,z),Z}try{await this.store.update(J.id,{worktreePath:X.path,branch:Y})}catch(Z){throw await this.rollbackWorktree(X.path),this.slugs.cancel(J.repo,z),Z}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),X.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.title===Y)return;await this.store.update(G.id,{title:Y}),await this.followBranchToTitle(G,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==qq(Tz,J.id))return;let Y=qq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(G){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,G)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(G.branch===Y)return;if(G.worktreePath)await this.worktrees.renameBranch(G.worktreePath,G.branch,Y);await this.store.update(G.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.pinned;if((Y.pinned??!1)===G)return;await this.store.update(Y.id,{pinned:G})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=this.store.list().filter((X)=>(X.kind??"task")!=="main"&&X.archived===Y.archived&&(X.pinned??!1)===(Y.pinned??!1)).map((X)=>String(X.id));await this.store.move(Y.id,z,G)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.archived;if(Y.archived===G)return;await this.store.update(Y.id,{archived:G})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new m8(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(Aq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new d8;let G=z?.force===!0;if(Y.worktreePath){if(!G){let X=!1;try{X=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(X)throw new i8(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:G})}catch(X){throw new l8(Y.id,X)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=AZ(J).key;for(let Y of CJ())if(AZ(Y).key===z)aH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(AZ(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((G)=>G.worktreePath).map((G)=>XX(G.worktreePath)));return z.filter((G)=>!Y.has(XX(G.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=XX(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let G=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,G);try{return await G}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((f)=>f.worktreePath&&XX(f.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let X=(await this.worktrees.listAll(J.repo)).find((f)=>XX(f.path)===z);if(!X)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let Z=J.branch?.trim()||X.branch,Q=(J.title??lA(X.path)).trim()||Tz;return this.store.create({repo:J.repo,title:Q,branch:Z,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??a1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new c8(String(J));return z}}function aA(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function AZ(J){let z=az(J);return{repo:z,key:$1(z)?z:XX(z)}}function XX(J){try{return iA(J)}catch{return $A(J)}}var Tz="(new task)";var RZ=k(()=>{W1();v8();O1();sJ();l1();$8();dV()});function ZX(J,z,Y){if(!z)return J;let G=GX(z);return G.ensureReady(),G.wrapCommand(J,{tty:!0,cwd:Y})}function zJ(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var gZ="@kobe_remote";var DG=k(()=>{Vz();Bz()});function Cq(){return d1()[LG]===!0}var LG="experimental.autoStatus";var CZ=k(()=>{YG()});function r8(){return d1()[MG]===!0}var MG="experimental.dispatcher";var Nq=k(()=>{YG()});import{randomUUID as _A}from"crypto";function Kz(J){return`engineCommand.${J}`}function Uz(J){return`engineName.${J}`}function FG(J){return C1(Uz(J))?.trim()||o8[J]||J}function NZ(J){return e1(J??"claude").defaultCommand}function pA(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let G=Y.exec(J);G!==null;G=Y.exec(J))z.push(G[1]??G[2]??G[3]??"");return z}function yJ(J,z){let Y=J??"claude",G=C1(Kz(Y))?.trim(),X=(()=>{if(G){let Z=pA(G);if(Z.length>0)return Z}return NZ(Y)})();return rA(X,Y,z)}function rA(J,z,Y){let G=Y?.trim();if(!G)return J;let X=z??"claude";if(!e1(X).effortLevels?.includes(G))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${G}`];return J}function QX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((G)=>oA.has(G)))return{argv:J,sessionId:null};let Y=_A();return{argv:[...J,"--session-id",Y],sessionId:Y}}function OG(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...b1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function sA(J,z=OG()){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(`
|
|
35
|
+
`)){G++;let Z=t7(X);if(!Z||Z.type!=="turn.completed")continue;let Q=e7(Z,0),f={id:`codex:${z}:${Q}:${G}`,timestampMs:Q,source:"codex"};if(!Y||f.timestampMs>=Y.timestampMs)Y=f}return Y}function t7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return JV(Y)?Y:null}catch{return null}}function e7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function JV(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var _2,b8,p2,S8,Yq;var Gq=k(()=>{X8();O8();SY();_2={listSessionFiles:(J)=>qZ(J),readFile:(J)=>s7(J,"utf8")};b8=class b8 extends zq{deps;vendor="claude";cache=new Map;constructor(J=_2){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,G=new Map;for(let X of z.slice(0,4)){let Z=this.cache.get(X.path),Q;if(Z&&X.mtimeMs>0&&Z.mtimeMs===X.mtimeMs)Q=Z.marker;else{let f=await this.deps.readFile(X.path).catch(()=>"");Q=r2(f,X.path,X.mtimeMs)}if(G.set(X.path,{mtimeMs:X.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=G,Y}};p2={findLatestRollout:(J)=>F8(J),readFile:(J)=>s7(J,"utf8")};S8=class S8 extends zq{deps;vendor="codex";cache=null;constructor(J=p2){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let G=o2(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:G},G}};Yq=class Yq extends zq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function YA(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 Jq(J),createTurnDetector:()=>new Yq(J)}}function e1(J){return qJ(J)?zA[J]:YA(J)}var s2,t2,e2,JA,zA;var SY=k(()=>{l1();QG();X8();I7();O8();$7();o7();k8();Gq();s2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},t2={async listSessionIdsForWorktree(J){return[...await qZ(J)].sort((Y,G)=>Y.mtimeMs-G.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>K7(J),latestTranscriptMtimeForWorktree:(J)=>V7(J)},e2={listSessionIdsForWorktree:(J)=>c7(J),readHistory:(J)=>n7(J),latestTranscriptMtimeForWorktree:(J)=>d7(J)},JA={listSessionIdsForWorktree:(J)=>_7(J),readHistory:(J)=>r7(J),latestTranscriptMtimeForWorktree:(J)=>p7(J)},zA={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:t2,detectAccount:(J)=>iQ(J),createHookAdapter:()=>new W8,createTurnDetector:()=>new b8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:e2,detectAccount:(J)=>lQ(J),createHookAdapter:()=>new A8,createTurnDetector:()=>new S8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:JA,detectAccount:(J)=>$Q(J),createHookAdapter:()=>new Jq("copilot"),createTurnDetector:()=>new Yq("copilot")}}});async function oG(J,z){if(!z)return 0;return e1(J).history.latestTranscriptMtimeForWorktree(z)}var Xq=k(()=>{SY()});function zV(J){return typeof J==="string"&&GA.includes(J)}var KZ=(J)=>J,a1="claude",GA;var sJ=k(()=>{GA=["backlog","in_progress","in_review","done","canceled","error"]});function Zq(J){return XA.includes(J)}function YV(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var XA;var Qq=k(()=>{XA=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function ZA(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return GV;let z=Number(J);return Number.isFinite(z)&&z>0?z:GV}class I8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=ZA(),Y=()=>Date.now(),G=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=G}report(J,z,Y){let G=this.activity.get(J);if(G?.lapse)clearTimeout(G.lapse);let X=YV(G?.state,z,Y),Z=this.now(),Q={state:X,detail:Y,at:Z};if(X!=="idle"&&X!=="turn_complete")Q.lapse=this.armLapse(J,Z);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let G;try{G=await this.livenessAt(J)}catch{G=void 0}let X=this.activity.get(J);if(!X||X.at!==z)return;if(G!==void 0&&G>this.now()-this.staleMs){X.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var GV=600000;var XV=k(()=>{Qq()});function ZV(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function qq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),G=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${G}`}function QV(J){let z=J.find((X)=>X.role==="user");if(!z)return"";let Y=z.blocks.filter((X)=>X.type==="text").map((X)=>X.text).join(" "),G=ZV(Y);return G.length>0?Buffer.from(G,"utf8").toString("utf8"):G}async function sG(J,z=a1){if(!J)return"";let{history:Y}=e1(z),G=await Y.listSessionIdsForWorktree(J);for(let X of G.slice(0,QA)){let Z=QV(await Y.readHistory(X));if(Z)return Z}return""}async function qV(J,z){if(!z)return"";try{return QV(await e1(J).history.readHistory(z))}catch{return""}}var QA=8;var fq=k(()=>{SY();sJ()});function fV(J){let z=String(J),Y=z.length-1;return S1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function x8(J){S1.context=J}function qA(){return{...S1.context,id:S1.getNextContextId(),count:0}}function KG(J,z){let Y=U1,G=$0,X=J.length===0,Z=z===void 0?G:z,Q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:Z?Z.context:null,owner:Z},f=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>p1(()=>IY(Q)));Wz.afterCreateOwner&&Wz.afterCreateOwner(Q),$0=Q,U1=null;try{return SJ(f,!0)}finally{U1=Y,$0=G}}function a(J,z){z=z?Object.assign({},Wq,z):Wq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(DV(Y),Wz.afterCreateSignal)Wz.afterCreateSignal(Y)}let G=(X)=>{if(typeof X==="function")if(H0&&H0.running&&H0.sources.has(Y))X=X(Y.tValue);else X=X(Y.value);return E8(Y,X)};return[LV.bind(Y),G]}function HV(J,z,Y){let G=JX(J,z,!0,wJ,Y);if(eG&&H0&&H0.running)_1.push(G);else UG(G)}function Iz(J,z,Y){let G=JX(J,z,!1,wJ,Y);if(eG&&H0&&H0.running)_1.push(G);else UG(G)}function s0(J,z,Y){UV=OA;let G=JX(J,z,!1,wJ,Y),X=LZ&&PJ(LZ);if(X)G.suspense=X;if(!Y||!Y.render)G.user=!0;VJ?VJ.push(G):UG(G)}function K0(J,z,Y){Y=Y?Object.assign({},Wq,Y):Wq;let G=JX(J,z,!0,0,Y);if(G.observers=null,G.observerSlots=null,G.comparator=Y.equals||void 0,eG&&H0&&H0.running)G.tState=wJ,_1.push(G);else UG(G);return LV.bind(G)}function VA(J){return J&&typeof J==="object"&&"then"in J}function Dq(J,z,Y){let G,X,Z;if(typeof z==="function")G=J,X=z,Z=Y||{};else G=!0,X=J,Z=z||{};let Q=null,f=y8,H=null,B=!1,V=!1,j="initialValue"in Z,K=typeof G==="function"&&K0(G),L=new Set,[A,O]=(Z.storage||a)(Z.initialValue),[g,u]=a(void 0),[_,S]=a(void 0,{equals:!1}),[N,M]=a(j?"ready":"unresolved");if(S1.context){if(H=S1.getNextContextId(),Z.ssrLoadFrom==="initial")f=Z.initialValue;else if(S1.load&&S1.has(H))f=S1.load(H)}function I(T,q0,p,j0){if(Q===T){if(Q=null,j0!==void 0&&(j=!0),(T===f||q0===f)&&Z.onHydrated)queueMicrotask(()=>Z.onHydrated(j0,{value:q0}));if(f=y8,H0&&T&&B)H0.promises.delete(T),B=!1,SJ(()=>{H0.running=!0,r(q0,p)},!1);else r(q0,p)}return q0}function r(T,q0){SJ(()=>{if(q0===void 0)O(()=>T);M(q0!==void 0?"errored":j?"ready":"unresolved"),u(q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function l(){let T=LZ&&PJ(LZ),q0=A(),p=g();if(p!==void 0&&!Q)throw p;if(U1&&!U1.user&&T)HV(()=>{if(_(),Q){if(T.resolved&&H0&&B)H0.promises.add(Q);else if(!L.has(T))T.increment(),L.add(T)}});return q0}function e(T=!0){if(T!==!1&&V)return;V=!1;let q0=K?K():G;if(B=H0&&H0.running,q0==null||q0===!1){I(Q,p1(A));return}if(H0&&Q)H0.promises.delete(Q);let p,j0=f!==y8?f:p1(()=>{try{return X(q0,{value:A(),refetching:T})}catch(F0){p=F0}});if(p!==void 0){I(Q,void 0,jq(p),q0);return}else if(!VA(j0))return I(Q,j0,void 0,q0),j0;if(Q=j0,"v"in j0){if(j0.s===1)I(Q,j0.v,void 0,q0);else I(Q,void 0,jq(j0.v),q0);return j0}return V=!0,queueMicrotask(()=>V=!1),SJ(()=>{M(j?"refreshing":"pending"),S()},!1),j0.then((F0)=>I(j0,F0,void 0,q0),(F0)=>I(j0,void 0,jq(F0),q0))}Object.defineProperties(l,{state:{get:()=>N()},error:{get:()=>g()},loading:{get(){let T=N();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return l();let T=g();if(T&&!Q)throw T;return A()}}});let J0=$0;if(K)HV(()=>(J0=$0,e(!1)));else e(!1);return[l,{refetch:(T)=>UA(J0,()=>e(T)),mutate:O}]}function Lq(J){return SJ(J,!1)}function p1(J){if(!tG&&U1===null)return J();let z=U1;U1=null;try{if(tG)return tG.untrack(J);return J()}finally{U1=z}}function IJ(J,z,Y){let G=Array.isArray(J),X,Z=Y&&Y.defer;return(Q)=>{let f;if(G){f=Array(J.length);for(let B=0;B<J.length;B++)f[B]=J[B]()}else f=J();if(Z)return Z=!1,Q;let H=p1(()=>z(f,X,Q));return X=f,H}}function JJ(J){s0(()=>p1(J))}function k1(J){if($0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if($0.cleanups===null)$0.cleanups=[J];else $0.cleanups.push(J);return J}function KA(J,z){if(UZ||(UZ=Symbol("error")),$0=JX(void 0,void 0,!0),$0.context={...$0.context,[UZ]:[z]},H0&&H0.running)H0.sources.add($0);try{return J()}catch(Y){FZ(Y)}finally{$0=$0.owner}}function Mq(){return U1}function UA(J,z){let Y=$0,G=U1;$0=J,U1=null;try{return SJ(z,!0)}catch(X){FZ(X)}finally{$0=Y,U1=G}}function DA(J){if(H0&&H0.running)return J(),H0.done;let z=U1,Y=$0;return Promise.resolve().then(()=>{U1=z,$0=Y;let G;if(eG||LZ)G=H0||(H0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),G.done||(G.done=new Promise((X)=>G.resolve=X)),G.running=!0;return SJ(J,!1),U1=$0=null,G?G.done:void 0})}function jV(J,z){let Y=JX(()=>p1(()=>{return Object.assign(J,{[jA]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,UG(Y),Y.tValue!==void 0?Y.tValue:Y.value}function DV(J){if($0){if($0.sourceMap)$0.sourceMap.push(J);else $0.sourceMap=[J];J.graph=$0}if(Wz.afterRegisterGraph)Wz.afterRegisterGraph(J)}function yz(J,z){let Y=Symbol("context");return{id:Y,Provider:AA(Y,z),defaultValue:J}}function PJ(J){let z;return $0&&$0.context&&(z=$0.context[J.id])!==void 0?z:J.defaultValue}function LA(J){let z=K0(J),Y=K0(()=>u8(z()),void 0,{name:"children"});return Y.toArray=()=>{let G=Y();return Array.isArray(G)?G:G!=null?[G]:[]},Y}function LV(){let J=H0&&H0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===wJ)UG(this);else{let z=_1;_1=null,SJ(()=>Vq(this),!1),_1=z}if(U1){let z=this.observers;if(!z||z[z.length-1]!==U1){let Y=z?z.length:0;if(!U1.sources)U1.sources=[this],U1.sourceSlots=[Y];else U1.sources.push(this),U1.sourceSlots.push(Y);if(!z)this.observers=[U1],this.observerSlots=[U1.sources.length-1];else z.push(U1),this.observerSlots.push(U1.sources.length-1)}}if(J&&H0.sources.has(this))return this.tValue;return this.value}function E8(J,z,Y){let G=H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(G,z)){if(H0){let X=H0.running;if(X||!Y&&H0.sources.has(J))H0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)SJ(()=>{for(let X=0;X<J.observers.length;X+=1){let Z=J.observers[X],Q=H0&&H0.running;if(Q&&H0.disposed.has(Z))continue;if(Q?!Z.tState:!Z.state){if(Z.pure)_1.push(Z);else VJ.push(Z);if(Z.observers)FV(Z)}if(!Q)Z.state=wJ;else Z.tState=wJ}if(_1.length>1e6){if(_1=[],fA)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function UG(J){if(!J.fn)return;IY(J);let z=Uq;if(WV(J,H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value,z),H0&&!H0.running&&H0.sources.has(J))queueMicrotask(()=>{SJ(()=>{H0&&(H0.running=!0),U1=$0=J,WV(J,J.tValue,z),U1=$0=null},!1)})}function WV(J,z,Y){let G,X=$0,Z=U1;U1=$0=J;try{G=J.fn(z)}catch(Q){if(J.pure)if(H0&&H0.running)J.tState=wJ,J.tOwned&&J.tOwned.forEach(IY),J.tOwned=void 0;else J.state=wJ,J.owned&&J.owned.forEach(IY),J.owned=null;return J.updatedAt=Y+1,FZ(Q)}finally{U1=Z,$0=X}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)E8(J,G,!0);else if(H0&&H0.running&&J.pure){if(!H0.sources.has(J))J.value=G;H0.sources.add(J),J.tValue=G}else J.value=G;J.updatedAt=Y}}function JX(J,z,Y,G=wJ,X){let Z={fn:J,state:G,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:$0,context:$0?$0.context:null,pure:Y};if(H0&&H0.running)Z.state=0,Z.tState=G;if($0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if($0!==WA)if(H0&&H0.running&&$0.pure)if(!$0.tOwned)$0.tOwned=[Z];else $0.tOwned.push(Z);else if(!$0.owned)$0.owned=[Z];else $0.owned.push(Z);if(X&&X.name)Z.name=X.name;if(tG&&Z.fn){let Q=Z.fn,[f,H]=a(void 0,{equals:!1}),B=tG.factory(Q,H);k1(()=>B.dispose());let V,j=()=>DA(H).then(()=>{if(V)V.dispose(),V=void 0});Z.fn=(K)=>{if(f(),H0&&H0.running){if(!V)V=tG.factory(Q,j);return V.track(K)}return B.track(K)}}return Wz.afterCreateOwner&&Wz.afterCreateOwner(Z),Z}function MZ(J){let z=H0&&H0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===DZ)return Vq(J);if(J.suspense&&p1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<Uq)){if(z&&H0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let G=Y.length-1;G>=0;G--){if(J=Y[G],z){let X=J,Z=Y[G+1];while((X=X.owner)&&X!==Z)if(H0.disposed.has(X))return}if((z?J.tState:J.state)===wJ)UG(J);else if((z?J.tState:J.state)===DZ){let X=_1;_1=null,SJ(()=>Vq(J,Y[0]),!1),_1=X}}}function SJ(J,z){if(_1)return J();let Y=!1;if(!z)_1=[];if(VJ)Y=!0;else VJ=[];Uq++;try{let G=J();return MA(Y),G}catch(G){if(!Y)VJ=null;_1=null,FZ(G)}}function MA(J){if(_1){if(eG&&H0&&H0.running)FA(_1);else MV(_1);_1=null}if(J)return;let z;if(H0){if(!H0.promises.size&&!H0.queue.size){let{sources:G,disposed:X}=H0;VJ.push.apply(VJ,H0.effects),z=H0.resolve;for(let Z of VJ)"tState"in Z&&(Z.state=Z.tState),delete Z.tState;H0=null,SJ(()=>{for(let Z of X)IY(Z);for(let Z of G){if(Z.value=Z.tValue,Z.owned)for(let Q=0,f=Z.owned.length;Q<f;Q++)IY(Z.owned[Q]);if(Z.tOwned)Z.owned=Z.tOwned;delete Z.tValue,delete Z.tOwned,Z.tState=0}BV(!1)},!1)}else if(H0.running){H0.running=!1,H0.effects.push.apply(H0.effects,VJ),VJ=null,BV(!0);return}}let Y=VJ;if(VJ=null,Y.length)SJ(()=>UV(Y),!1);else Wz.afterUpdate&&Wz.afterUpdate();if(z)z()}function MV(J){for(let z=0;z<J.length;z++)MZ(J[z])}function FA(J){for(let z=0;z<J.length;z++){let Y=J[z],G=H0.queue;if(!G.has(Y))G.add(Y),eG(()=>{G.delete(Y),SJ(()=>{H0.running=!0,MZ(Y)},!1),H0&&(H0.running=!1)})}}function OA(J){let z,Y=0;for(z=0;z<J.length;z++){let G=J[z];if(!G.user)MZ(G);else J[Y++]=G}if(S1.context){if(S1.count){S1.effects||(S1.effects=[]),S1.effects.push(...J.slice(0,Y));return}x8()}if(S1.effects&&(S1.done||!S1.count))J=[...S1.effects,...J],Y+=S1.effects.length,delete S1.effects;for(z=0;z<Y;z++)MZ(J[z])}function Vq(J,z){let Y=H0&&H0.running;if(Y)J.tState=0;else J.state=0;for(let G=0;G<J.sources.length;G+=1){let X=J.sources[G];if(X.sources){let Z=Y?X.tState:X.state;if(Z===wJ){if(X!==z&&(!X.updatedAt||X.updatedAt<Uq))MZ(X)}else if(Z===DZ)Vq(X,z)}}}function FV(J){let z=H0&&H0.running;for(let Y=0;Y<J.observers.length;Y+=1){let G=J.observers[Y];if(z?!G.tState:!G.state){if(z)G.tState=DZ;else G.state=DZ;if(G.pure)_1.push(G);else VJ.push(G);G.observers&&FV(G)}}}function IY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),G=J.sourceSlots.pop(),X=Y.observers;if(X&&X.length){let Z=X.pop(),Q=Y.observerSlots.pop();if(G<X.length)Z.sourceSlots[Q]=G,X[G]=Z,Y.observerSlots[G]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)IY(J.tOwned[z]);delete J.tOwned}if(H0&&H0.running&&J.pure)OV(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)IY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(H0&&H0.running)J.tState=0;else J.state=0;delete J.sourceMap}function OV(J,z){if(!z)J.tState=0,H0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)OV(J.owned[Y])}function jq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function VV(J,z,Y){try{for(let G of z)G(J)}catch(G){FZ(G,Y&&Y.owner||null)}}function FZ(J,z=$0){let Y=UZ&&z&&z.context&&z.context[UZ],G=jq(J);if(!Y)throw G;if(VJ)VJ.push({fn(){VV(G,Y,z)},state:wJ});else VV(G,Y,z)}function u8(J){if(typeof J==="function"&&!J.length)return u8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let G=u8(J[Y]);if(Array.isArray(G))if(G.length<32768)z.push.apply(z,G);else for(let X=0;X<G.length;X++)z.push(G[X]);else z.push(G)}return z}return J}function AA(J,z){return function(G){let X;return Iz(()=>X=p1(()=>{return $0.context={...$0.context,[J]:G.value},LA(()=>G.children)}),void 0,z),X}}function KV(J){for(let z=0;z<J.length;z++)J[z]()}function gA(J,z,Y={}){let G=[],X=[],Z=[],Q=0,f=z.length>1?[]:null;return k1(()=>KV(Z)),()=>{let H=J()||[],B=H.length,V,j;return H[Kq],p1(()=>{let L,A,O,g,u,_,S,N,M;if(B===0){if(Q!==0)KV(Z),Z=[],G=[],X=[],Q=0,f&&(f=[]);if(Y.fallback)G=[RA],X[0]=KG((I)=>{return Z[0]=I,Y.fallback()}),Q=1}else if(Q===0){X=Array(B);for(j=0;j<B;j++)G[j]=H[j],X[j]=KG(K);Q=B}else{O=Array(B),g=Array(B),f&&(u=Array(B));for(_=0,S=Math.min(Q,B);_<S&&G[_]===H[_];_++);for(S=Q-1,N=B-1;S>=_&&N>=_&&G[S]===H[N];S--,N--)O[N]=X[S],g[N]=Z[S],f&&(u[N]=f[S]);L=new Map,A=Array(N+1);for(j=N;j>=_;j--)M=H[j],V=L.get(M),A[j]=V===void 0?-1:V,L.set(M,j);for(V=_;V<=S;V++)if(M=G[V],j=L.get(M),j!==void 0&&j!==-1)O[j]=X[V],g[j]=Z[V],f&&(u[j]=f[V]),j=A[j],L.set(M,j);else Z[V]();for(j=_;j<B;j++)if(j in O){if(X[j]=O[j],Z[j]=g[j],f)f[j]=u[j],f[j](j)}else X[j]=KG(K);X=X.slice(0,Q=B),G=H.slice(0)}return X});function K(L){if(Z[j]=L,f){let[A,O]=a(j,{name:"index"});return f[j]=O,z(H[j],A)}return z(H[j])}}}function AV(J,z){if(CA){if(S1.context){let Y=S1.context;x8(qA());let G=jV(J,z||{});return x8(Y),G}}return jV(J,z||{})}function Hq(){return!0}function T8(J){return!(J=typeof J==="function"?J():J)?{}:J}function kA(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function Fq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let f=J[Q];z=z||!!f&&jz in f,J[Q]=typeof f==="function"?(z=!0,K0(f)):f}if(BA&&z)return new Proxy({get(Q){for(let f=J.length-1;f>=0;f--){let H=T8(J[f])[Q];if(H!==void 0)return H}},has(Q){for(let f=J.length-1;f>=0;f--)if(Q in T8(J[f]))return!0;return!1},keys(){let Q=[];for(let f=0;f<J.length;f++)Q.push(...Object.keys(T8(J[f])));return[...new Set(Q)]}},NA);let Y={},G=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let f=J[Q];if(!f)continue;let H=Object.getOwnPropertyNames(f);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(f,V);if(!G[V])G[V]=j.get?{enumerable:!0,configurable:!0,get:kA.bind(Y[V]=[j.get.bind(f)])}:j.value!==void 0?j:void 0;else{let K=Y[V];if(K){if(j.get)K.push(j.get.bind(f));else if(j.value!==void 0)K.push(()=>j.value)}}}}let X={},Z=Object.keys(G);for(let Q=Z.length-1;Q>=0;Q--){let f=Z[Q],H=G[f];if(H&&H.get)Object.defineProperty(X,f,H);else X[f]=H?H.value:void 0}return X}function Q1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return K0(gA(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function X0(J){let z=J.keyed,Y=K0(()=>J.when,void 0,{name:"condition value"}),G=z?Y:K0(Y,void 0,{equals:(X,Z)=>!X===!Z,name:"condition"});return K0(()=>{let X=G();if(X){let Z=J.children;return typeof Z==="function"&&Z.length>0?p1(()=>Z(z?X:()=>{if(!p1(G))throw bA("Show");return Y()})):Z}return J.fallback},void 0,{name:"value"})}function RV(J){let z;if(S1.context&&S1.load)z=S1.load(S1.getContextId());let[Y,G]=a(z,{name:"errored"});return Bq||(Bq=new Set),Bq.add(G),k1(()=>Bq.delete(G)),K0(()=>{let X;if(X=Y()){let Z=J.fallback;if(typeof Z!=="function"||Z.length==0)console.error(X);return typeof Z==="function"&&Z.length?p1(()=>Z(X,()=>G())):Z}return KA(()=>J.children,G)},void 0,{name:"value"})}var S1,fA=!0,HA=(J,z)=>J===z,jz,BA,Kq,jA,Wq,UZ=null,UV,wJ=1,DZ=2,WA,y8,$0=null,H0=null,eG=null,tG=null,U1=null,_1=null,VJ=null,Uq=0,Wz,nP,BV,LZ,RA,CA=!1,NA,bA=(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.`,Bq,gV;var W1=k(()=>{S1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return fV(this.context.count)},getNextContextId(){return fV(this.context.count++)}};jz=Symbol("solid-proxy"),BA=typeof Proxy==="function",Kq=Symbol("solid-track"),jA=Symbol("solid-dev-component"),Wq={equals:HA},UV=MV,WA={},y8={},Wz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[nP,BV]=a(!1);RA=Symbol("fallback");NA={get(J,z,Y){if(z===jz)return Y;return J.get(z)},has(J,z){if(z===jz)return!0;return J.has(z)},set:Hq,deleteProperty:Hq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Hq,deleteProperty:Hq}},ownKeys(J){return J.keys()}};gV={hooks:Wz,writeSignal:E8,registerGraph:DV};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 SA}from"child_process";function w8(J,z,Y,G){if(Y)return J+G.slowRetryMs;return z+Math.max(G.minIntervalMs,(z-J)*5)}function P8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function CV(J,z,Y=Math.random){let G=Math.max(0,Math.min(1,z)),X=(Y()*2-1)*J*G;return Math.max(0,J+X)}function NV(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function zX(J,z,Y,G){let X=Date.now();if(!P8(J,X))return!1;J.inFlight=!0;let Z=new AbortController,Q=setTimeout(()=>Z.abort(),z.timeoutMs);return(async()=>{let f,H=!1;try{f=await Y(Z.signal),H=!0}catch{}clearTimeout(Q);let B=Z.signal.aborted;if(J.nextAllowedAt=w8(X,Date.now(),B,z),J.inFlight=!1,H&&!B)G(f)})(),!0}function GY(J,z,Y){return new Promise((G)=>{let X="",Z=!1,Q=(H)=>{if(Z)return;Z=!0,G({status:H,stdout:X})},f=SA(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});f.stdout?.on("data",(H)=>{X+=String(H)}),f.on("error",()=>Q(null)),f.on("close",(H)=>Q(H))})}var YX=()=>{};function IA(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 yA(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),G=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(G==="SUCCESS")return"passing";if(G==="PENDING"||G==="EXPECTED")return"pending";if(G==="FAILURE"||G==="ERROR")return"failing";return"unknown"}function TA(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let G of J){let X=yA(G);if(X==="failing")return"failing";if(X==="pending")z=!0;else if(X==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function bV(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:IA(J.state,J.reviewDecision),checkState:TA(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 Aq(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 Oq(J,z){return z.some((Y)=>J.includes(Y))}function h8(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(Oq(z,wA))return{kind:"empty"};if(Oq(z,xA))return{kind:"error",error:"no-remote"};if(Oq(z,uA))return{kind:"error",error:"auth"};if(Oq(z,EA))return{kind:"error",error:"network"};return{kind:"empty"}}function OZ(J,z,Y,G,X=Math.random){let Z=(f)=>Y+CV(f,G.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:Z(J.settled?G.settledMs:G.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:Z(G.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:Z(G.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:Z(NV(G.failureBaseMs,Q-1,G.failureCapMs)),failures:Q}}var kV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",xA,uA,EA,wA;var v8=k(()=>{YX();xA=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],uA=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],EA=["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"],wA=["no pull requests found","no open pull requests","no pull request found"]});var m8,c8,d8,n8="DIRTY_WORKTREE",i8,l8;var $8=k(()=>{m8=class m8 extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};c8=class c8 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};d8=class d8 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};i8=class i8 extends Error{taskId;constructor(J){super(`${n8}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};l8=class l8 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 SV;var IV=k(()=>{SV=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});function yV(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>TQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:kQ(J.host,J.user,J.port)}}function GX(J){let z=pz(J);if(!z)return new yQ;return new nG(yV(z))}function XY(J){for(let z of Object.values(pH()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new nG(yV(z));return new yQ}function TV(J){return J&&$1(J)?J:void 0}function Rq(J){let z=XY(J);return z.isRemote||z.existsSync(J)}function w1(J){return XY(J).isRemote?bz():J}var Vz=k(()=>{r1();O1();mH();nH()});import{createHash as PA}from"crypto";import uV from"fs";import hJ from"path";function EV(J){if(!hJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return hJ.join(fJ(),hA,nA(J))}function wV(J){if(!hJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[EV(J),...cA.map((z)=>hJ.join(J,z))]}function PV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return hJ.join(EV(J),z)}async function hV(J){if($1(J)){let Y=pz(J)?.basePath;if(!Y)return[];return GX(J).readdir(mV(Y))}let z=new Set;for(let Y of wV(J))try{for(let G of uV.readdirSync(Y,{withFileTypes:!0}))if(G.isDirectory())z.add(G.name)}catch{}return[...z]}function a8(J,z){if(!hJ.isAbsolute(J)||!hJ.isAbsolute(z))return null;let Y=xV(z);for(let G of wV(J)){let X=xV(G),Z=hJ.relative(X,Y);if(Z!==""&&!Z.startsWith("..")&&!hJ.isAbsolute(Z))return G}return null}function vV(J,z){return a8(J,z)!==null}function mV(J){return`${dA(J)}/.kobe/worktrees`}function cV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${mV(J)}/${z}`}function dA(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function xV(J){try{return uV.realpathSync(J)}catch{return hJ.resolve(J)}}function nA(J){let Y=(hJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=PA("sha1").update(hJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}var hA="worktrees",vA=".kobe/worktrees",mA=".claude/worktrees",cA;var _8=k(()=>{r1();Vz();O1();cA=[vA,mA]});class p8{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??SV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((G)=>{Y=G}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((X)=>!z.has(X));if(Y.length>0){let X=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,X),X}let G=this.pool[Math.floor(this.random()*this.pool.length)];for(let X=2;;X++){let Z=`${G}-v${X}`;if(!z.has(Z))return this.addPending(J,Z),Z}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await hV(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var dV=k(()=>{IV();_8()});var iV={};j1(iV,{PLACEHOLDER_TASK_TITLE:()=>Tz,Orchestrator:()=>gq});import{realpathSync as iA}from"fs";import{basename as lA,resolve as $A}from"path";function nV(J){return pz(J)?.basePath??J}class gq{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 p8((Z)=>this.store.list().filter((Q)=>Q.repo===Z&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=a(this.store.list());this.tasksAcc=z,this.setTasks=(Z)=>Y(()=>Z);let[G,X]=a(null);this.activeTaskAcc=G,this.setActiveTaskSig=(Z)=>X(()=>Z),this.unsubscribeStore=this.store.subscribe((Z)=>{this.setTasks(Z.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??Tz).trim()||Tz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??a1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=AZ(J),G=this.store.list().find((Q)=>Q.kind==="main"&&AZ(Q.repo).key===Y);if(G)return G;let X=this.mainTaskLocks.get(Y);if(X)return X;let Z=(async()=>{let Q=uJ(C1("lastSelectedVendor"),EJ());return await this.store.create({repo:z,title:aA(z),branch:"",worktreePath:nV(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,Z);try{return await Z}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return nV(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let G=this.createWorktree(z);this.worktreeLocks.set(z.id,G);try{return await G}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||qq(J.title,J.id),G=this.pendingBaseRefs.get(J.id),X;try{X=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:G})}catch(Z){throw this.slugs.cancel(J.repo,z),Z}try{await this.store.update(J.id,{worktreePath:X.path,branch:Y})}catch(Z){throw await this.rollbackWorktree(X.path),this.slugs.cancel(J.repo,z),Z}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),X.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.title===Y)return;await this.store.update(G.id,{title:Y}),await this.followBranchToTitle(G,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==qq(Tz,J.id))return;let Y=qq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(G){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,G)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(G.branch===Y)return;if(G.worktreePath)await this.worktrees.renameBranch(G.worktreePath,G.branch,Y);await this.store.update(G.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.pinned;if((Y.pinned??!1)===G)return;await this.store.update(Y.id,{pinned:G})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=this.store.list().filter((X)=>(X.kind??"task")!=="main"&&X.archived===Y.archived&&(X.pinned??!1)===(Y.pinned??!1)).map((X)=>String(X.id));await this.store.move(Y.id,z,G)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.archived;if(Y.archived===G)return;await this.store.update(Y.id,{archived:G})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new m8(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(Aq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new d8;let G=z?.force===!0;if(Y.worktreePath){if(!G){let X=!1;try{X=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(X)throw new i8(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:G})}catch(X){throw new l8(Y.id,X)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=AZ(J).key;for(let Y of CJ())if(AZ(Y).key===z)aH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(AZ(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((G)=>G.worktreePath).map((G)=>XX(G.worktreePath)));return z.filter((G)=>!Y.has(XX(G.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=XX(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let G=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,G);try{return await G}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((f)=>f.worktreePath&&XX(f.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let X=(await this.worktrees.listAll(J.repo)).find((f)=>XX(f.path)===z);if(!X)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let Z=J.branch?.trim()||X.branch,Q=(J.title??lA(X.path)).trim()||Tz;return this.store.create({repo:J.repo,title:Q,branch:Z,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??a1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new c8(String(J));return z}}function aA(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function AZ(J){let z=az(J);return{repo:z,key:$1(z)?z:XX(z)}}function XX(J){try{return iA(J)}catch{return $A(J)}}var Tz="(new task)";var RZ=k(()=>{W1();v8();O1();sJ();l1();$8();dV()});function ZX(J,z,Y){if(!z)return J;let G=GX(z);return G.ensureReady(),G.wrapCommand(J,{tty:!0,cwd:Y})}function zJ(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var gZ="@kobe_remote";var DG=k(()=>{Vz();Bz()});function Cq(){return d1()[LG]===!0}var LG="experimental.autoStatus";var CZ=k(()=>{YG()});function r8(){return d1()[MG]===!0}var MG="experimental.dispatcher";var Nq=k(()=>{YG()});import{randomUUID as _A}from"crypto";function Kz(J){return`engineCommand.${J}`}function Uz(J){return`engineName.${J}`}function FG(J){return C1(Uz(J))?.trim()||o8[J]||J}function NZ(J){return e1(J??"claude").defaultCommand}function pA(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let G=Y.exec(J);G!==null;G=Y.exec(J))z.push(G[1]??G[2]??G[3]??"");return z}function yJ(J,z){let Y=J??"claude",G=C1(Kz(Y))?.trim(),X=(()=>{if(G){let Z=pA(G);if(Z.length>0)return Z}return NZ(Y)})();return rA(X,Y,z)}function rA(J,z,Y){let G=Y?.trim();if(!G)return J;let X=z??"claude";if(!e1(X).effortLevels?.includes(G))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${G}`];return J}function QX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((G)=>oA.has(G)))return{argv:J,sessionId:null};let Y=_A();return{argv:[...J,"--session-id",Y],sessionId:Y}}function OG(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...b1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function sA(J,z=OG()){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
36
|
`)}function tA(J,z=OG()){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
37
|
`)}function eA(J,z=OG(),Y={}){let G=[];if((Y.status??Cq)())G.push(sA(J,z));if((Y.notes??r8)())G.push(tA(J,z));return G.length>0?G.join(`
|
|
38
38
|
|
|
39
39
|
`):null}function kq(J,z,Y,G={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let X=eA(Y,OG(),G);if(!X)return J;return[...J,"--append-system-prompt",X]}function JR(J,z=OG()){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 bq(J,z,Y,G=r8){if(!Y||!G())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",JR(Y)]}var o8,oA;var vJ=k(()=>{ez();IY();CZ();Nq();O1();l1();o8=Object.fromEntries(sY.map((J)=>[J,e1(J).displayName]));oA=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});import{spawnSync as zR}from"child_process";function lV(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of YR)if(z(Y.binary))return Y.command;return null}return null}function aV(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of GR)for(let G of XR)z.push(["bind-key","-T",Y,G,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var YR,$V=(J)=>{try{let z=process.platform==="win32"?"where":"which";return zR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},GR,XR;var _V=k(()=>{YR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];GR=["copy-mode","copy-mode-vi"],XR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as pV,readFileSync as ZR}from"fs";function rV(){AG=null}function QR(){let J=AW();if(pV(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(pV(z))return{canonical:J,found:z};return{canonical:J,found:null}}function Iq(){if(AG)return AG;let{canonical:J,found:z}=QR();if(!z)return AG={path:J,exists:!1,doc:null,warnings:[]},AG;let Y=[],G=null;try{let X=ZR(z,"utf8");G=Bun.YAML.parse(X)}catch(X){let Z=X instanceof Error?X.message:String(X);Y.push(`could not read/parse ${z}: ${Z}`)}return AG={path:J,exists:!0,doc:G,warnings:Y},AG}var AG=null;var s8=k(()=>{r1()});function qX(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(G)=>G>=2&&G%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${G})`}}function VR(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let G=Y.split("+"),X=G.pop()??"";if(X===""&&G.length>0){if(X="+",G[G.length-1]==="")G.pop()}if(!X)return{error:`"${J}": no key after the modifiers`};let Z=new Set;for(let H of G){let B=HR[H];if(!B)return{error:`"${J}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};Z.add(B)}if(X=BR[X]??X,Z.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=WR.filter((H)=>Z.has(H)).join("+"),f=Q?`${Q}+${X}`:X;if(X.length>1&&!jR.has(X))return{chord:f,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:f}}function Sq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function KR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function UR(J){if(!Sq(J))return null;let z=J.bindings;if(Sq(z))return z;return J}function yq(J,z,Y){let G=[];if(J===null||J===void 0)return{entries:[],warnings:G};if(!Sq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let X=new Map,Z=[];if(J.bindings!==void 0)if(Sq(J.bindings))Z.push(J.bindings);else G.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of KR(z)){let f=J[Q];if(f===void 0)continue;let H=UR(f);if(H)Z.push(H);else G.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of Z)for(let[f,H]of Object.entries(Q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){X.set(f,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){G.push(`${f}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let K of B){if(typeof K!=="string"){G.push(`${f}: chord entries must be strings`),j=!0;continue}let L=VR(K,Y?.chordOptsFor?.(f));if("error"in L){G.push(`${f}: ${L.error}`),j=!0;continue}if(L.warning)G.push(`${f}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){G.push(`${f}: no valid chords \u2014 keeping the default`);continue}X.set(f,V)}return{entries:Array.from(X,([Q,f])=>({id:Q,keys:f})),warnings:G}}function DR(J,z){return J===z||J==="global"||z==="global"}function oV(J,z){let Y=[],G=[];for(let X of z){let Z=J.find((j)=>j.id===X.id);if(!Z){Y.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=t8[X.id];if(Q){Y.push(`${X.id}: not customizable \u2014 ${Q}`);continue}if(Z.keys.length===0){Y.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let f=qR[X.id];if(f&&X.keys.length>0){let j=f.validateCount(X.keys.length);if(j){Y.push(`${X.id}: ${j} \u2014 keeping the default`);continue}}let H=X.keys.filter((j)=>{if(j.length===1&&fR.has(Z.scope))return Y.push(`${X.id}: "${j}" dropped \u2014 a bare character on a ${Z.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&X.keys.length>0){Y.push(`${X.id}: no chords survived validation \u2014 keeping the default`);continue}if(f&&H.length!==X.keys.length){Y.push(`${X.id}: a dropped chord would shift the slot layout (${f.layout}) \u2014 keeping the default`);continue}let B=Z.keys,V=Z;if(V.keys=H,Z.hint)if(H.length===0)V.hint=void 0;else Z.hint.keys=H.join("/");G.push({id:X.id,keys:H,defaultKeys:B})}for(let X of G)for(let Z of X.keys){let Q=J.find((f)=>f.id===X.id);if(!Q)continue;for(let f of J){if(f.id===X.id)continue;if(!f.keys.includes(Z))continue;if(!DR(Q.scope,f.scope))continue;Y.push(`${X.id}: "${Z}" also fires ${f.id} (${f.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:G,warnings:Y}}var t8,qR,fR,HR,BR,jR,WR;var Tq=k(()=>{t8={"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)"};qR={"sidebar.nav":qX("down","up"),"files.nav":qX("down","up"),"sidebar.search.nav":qX("down","up"),"files.hierarchy":qX("collapse","expand"),"sidebar.view":qX("previous view","next view"),"files.tab":qX("previous tab","next tab")},fR=new Set(["global","workspace","terminal"]),HR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},BR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},jR=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}`)]),WR=["ctrl","cmd","alt","shift"]});function fX(J){return J in sV}function CG(J,z){let Y=J.split("+"),G=Y.pop()??"";if(G===""&&Y.length>0){if(G="+",Y[Y.length-1]==="")Y.pop()}let X=new Set(Y);if(X.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let Z;if(G.length===1)Z=X.has("shift")?G.toUpperCase():G;else{let H=MR[G];if(!H)return{error:`"${J}": tmux can't bind the key "${G}"`};Z=H}let Q=/^f\d+$/.test(G);if(X.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let f="";if(X.has("ctrl"))f+="C-";if(X.has("alt"))f+="M-";if(X.has("shift"))f+="S-";return{key:f+Z}}function eV(){let J={};for(let[Y,G]of Object.entries(gG)){let X=CG(G,{allowBare:fX(Y)});if("error"in X)throw Error(`default tmux chord for ${Y} failed to translate: ${X.error}`);J[Y]={chord:G,key:X.key}}let z=yY.map((Y)=>{let G=CG(Y);if("error"in G)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:G.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function e8(J){let z=eV(),Y=new Set;for(let G of J){if(!G.id.startsWith("tmux."))continue;if(G.id===xz){if(G.keys.length===0){z.focus=[null,null,null,null],Y.add(xz);continue}if(G.keys.length!==yY.length){z.warnings.push(`${xz}: needs exactly 4 chords in order left/down/up/right (got ${G.keys.length}) \u2014 keeping the default`);continue}let f=[],H=!0;for(let B of G.keys){let V=CG(B);if("error"in V){z.warnings.push(`${xz}: ${V.error} \u2014 keeping the default`),H=!1;break}f.push({chord:B,key:V.key})}if(!H)continue;z.focus=f,Y.add(xz);continue}if(!(G.id in gG)){z.warnings.push(`${G.id}: unknown tmux binding id`);continue}let X=G.id;if(G.keys.length===0){z.binds[X]=null,Y.add(X);continue}if(G.keys.length>1)z.warnings.push(`${X}: tmux bindings take ONE chord \u2014 using "${G.keys[0]}", ignoring the rest`);let Z=G.keys[0],Q=CG(Z,{allowBare:fX(X)});if("error"in Q){z.warnings.push(`${X}: ${Q.error} \u2014 keeping the default`);continue}if(Z!==gG[X])Y.add(X);z.binds[X]={chord:Z,key:Q.key}}return z.overridden=Y,z}function JB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function J5(){RG=null}function xq(){if(RG)return RG;let J=Iq();if(!J.exists||J.doc===null)return RG=eV(),RG;let z=yq(J.doc,process.platform,{chordOptsFor:JB}),Y=z.warnings.filter((X)=>X.startsWith("tmux.")),G=e8(z.entries);G.warnings=[...Y,...G.warnings];for(let X of G.warnings)console.warn(`[kobe/keybindings] ${X}`);return RG=G,RG}var LR,sV,tV,gG,xz="tmux.focus",yY,MR,RG=null;var uq=k(()=>{s8();Tq();LR={"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"},sV={"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"},tV=["F6","F7","F8","F9","F10","F11"],gG={...LR,...sV};yY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],MR={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 kZ(J,z){let Y=null;for(let X=0;X<24;X++){let Z=await HX(J);if(Z){if(!z)return{pane:Z,ready:!0};let Q=(await BX(Z)).trim();if(Q.length>0&&Q===Y)return{pane:Z,ready:!0};Y=Q}await z5(250)}return{pane:await HX(J)||await zB(J),ready:!1}}async function bZ(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await P0(["set-buffer","-b",Y,"--",z]),await P0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await z5(FR),await IZ(J,"Enter")}async function Y5(J,z){let{pane:Y}=await kZ(J,!0);if(!Y)return;await bZ(Y,z.text)}var z5=(J)=>new Promise((z)=>setTimeout(z,J)),FR=150;var Eq=k(()=>{P1()});function G5(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,G=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&G)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!G&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&G&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!G)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var jX;var wq=k(()=>{jX={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var WX;var Pq=k(()=>{WX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var VX;var hq=k(()=>{VX={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var KX;var vq=k(()=>{KX={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var UX;var mq=k(()=>{UX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var DX;var cq=k(()=>{DX={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var LX;var dq=k(()=>{LX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var X5;var Z5=k(()=>{wq();Pq();hq();vq();mq();cq();dq();X5={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX}});function bR(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[G,X,Z]=Y;return`#${G}${G}${X}${X}${Z}${Z}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function Q5(J,z,Y="dark"){let G=J.defs??{};function X(Q,f){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return bR(Q);if(f.includes(Q))return null;let B=G[Q]??J.theme[Q];if(B===void 0)return null;return X(B,[...f,Q])}if(!Q||typeof Q!=="object")return null;let H=Q[Y];return typeof H==="string"?X(H,f):null}let Z=J.theme[z];if(Z===void 0)return null;return X(Z,[z])}function nq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function iq(J){if(!nq(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!nq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!nq(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[G,X]of Object.entries(z.defs))if(typeof X!=="string")return{ok:!1,reason:`defs.${G} must be a string (hex like "#abc" or a ref name)`}}for(let[G,X]of Object.entries(Y)){if(typeof X==="string")continue;if(!nq(X))return{ok:!1,reason:`theme.${G} must be a string or a { dark, light } object (got ${X===null?"null":Array.isArray(X)?"array":typeof X})`};let Z=X;if(typeof Z.dark!=="string")return{ok:!1,reason:`theme.${G}.dark must be a string`};if(typeof Z.light!=="string")return{ok:!1,reason:`theme.${G}.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 YB=()=>{};import{readFileSync as IR,readdirSync as SR}from"fs";import{join as q5}from"path";function MX(){return q5(fJ(),"themes")}function SZ(){let J=MX(),z;try{z=SR(J)}catch{return[]}let Y=[];for(let G of z){if(!G.endsWith(".json"))continue;let X=q5(J,G),Z;try{let H=IR(X,"utf8");Z=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${X}: invalid JSON \u2014 ${B}`);continue}let Q=iq(Z);if(!Q.ok){console.warn(`[kobe] skipping user theme ${X}: ${Q.reason}`);continue}let f=G.slice(0,-5);Y.push({name:f,theme:Q.theme})}return Y}var lq=k(()=>{r1();YB()});import{readFileSync as yR}from"fs";function xR(){try{let J=JSON.parse(yR(aJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&TR.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function uR(J){return SZ().find((Y)=>Y.name===J)?.theme??X5[J]??null}function Dz(J,...z){for(let Y of z){let G=Q5(J,Y);if(G)return G}return null}function f5(J,z){let Y=Dz(J,"text"),G=Dz(J,"background"),X=Dz(J,"textMuted","text"),Z=Dz(J,"backgroundPanel","background"),Q=Dz(J,"backgroundElement","backgroundPanel","background"),f=Dz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=Dz(J,"selectedListItemText","background"),B=Dz(J,z,"primary","borderActive","border","text");return{border:Dz(J,"border","text"),activeBorder:B,statusBg:Z,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:Q,currentWindowFg:B,activityFg:Dz(J,"info","primary","text"),bellFg:Dz(J,"warning","error","primary","text"),messageBg:f,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??G}}function tJ(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function B5(J){let z=tJ({bg:J.statusBg,fg:J.statusFg}),Y=tJ({bg:J.statusBg,fg:J.statusMutedFg}),G=tJ({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:G},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function ER(J){let z=new Set(J.marker.split(",").map((Z)=>Z.trim()).filter(Boolean)),Y=[],G=[];for(let Z of B5(J.hexes))if(Z.value){if((J.current[Z.key]??"")!==Z.value)Y.push(["set-option",Z.setFlag,Z.option,Z.value]);G.push(Z.key)}else if(z.has(Z.key))Y.push(["set-option",Z.unsetFlag,Z.option]);let X=G.join(",");if(X!==J.marker)Y.push(X?["set-option","-g",GB,X]:["set-option","-gu",GB]);return Y}async function H5(J){let{code:z,stdout:Y}=await a0(J);return z===0?Y.trim():""}async function NG(){try{let J=xR(),z=J.enabled?uR(J.themeName):null,Y=z?f5(z,J.focusAccentSlot):f5({theme:{}},J.focusAccentSlot),G=B5(Y),[X,...Z]=await Promise.all([H5(["show-options","-gqv",GB]),...G.map((H)=>H5(["show-options",H.showFlag,H.option]))]),Q=Object.fromEntries(G.map((H,B)=>[H.key,Z[B]??""])),f=ER({marker:X,current:Q,hexes:Y});if(f.length>0)await n1(f)}catch{}}var GB="@kobe_border_theme",TR;var $q=k(()=>{r1();P1();Z5();lq();TR=["primary","success","info"]});function j5(){return d1()[aq]!==!1}function _q(){return d1()[W5]===!0}function V5(J){$z({[W5]:J})}var aq="zen.keepTasks",W5="zen.active";var XB=k(()=>{YG()});var pq={};j1(pq,{recordGen:()=>TY,isLatestGen:()=>M5,genAgeMs:()=>dR,coalesceLayoutWork:()=>nR,RESIZE_GUARD_MS:()=>cR,LAYOUT_COALESCE_MS:()=>D5});import{createHash as wR,randomUUID as PR}from"crypto";import{mkdirSync as hR,readFileSync as K5,renameSync as vR,writeFileSync as mR}from"fs";import{join as U5}from"path";function L5(){return U5(fJ(),"layout-coord")}function ZB(J,z){let Y=wR("sha1").update(J).digest("hex").slice(0,16);return U5(L5(),`${Y}.${z}`)}function TY(J,z){let Y=PR();try{hR(L5(),{recursive:!0});let G=ZB(J,z),X=`${G}.${Y}.tmp`;mR(X,`${Date.now()}
|
|
40
|
+
`)}function bq(J,z,Y,G=r8){if(!Y||!G())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",JR(Y)]}var o8,oA;var vJ=k(()=>{ez();SY();CZ();Nq();O1();l1();o8=Object.fromEntries(sY.map((J)=>[J,e1(J).displayName]));oA=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});import{spawnSync as zR}from"child_process";function lV(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of YR)if(z(Y.binary))return Y.command;return null}return null}function aV(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of GR)for(let G of XR)z.push(["bind-key","-T",Y,G,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var YR,$V=(J)=>{try{let z=process.platform==="win32"?"where":"which";return zR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},GR,XR;var _V=k(()=>{YR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];GR=["copy-mode","copy-mode-vi"],XR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as pV,readFileSync as ZR}from"fs";function rV(){AG=null}function QR(){let J=AW();if(pV(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(pV(z))return{canonical:J,found:z};return{canonical:J,found:null}}function Sq(){if(AG)return AG;let{canonical:J,found:z}=QR();if(!z)return AG={path:J,exists:!1,doc:null,warnings:[]},AG;let Y=[],G=null;try{let X=ZR(z,"utf8");G=Bun.YAML.parse(X)}catch(X){let Z=X instanceof Error?X.message:String(X);Y.push(`could not read/parse ${z}: ${Z}`)}return AG={path:J,exists:!0,doc:G,warnings:Y},AG}var AG=null;var s8=k(()=>{r1()});function qX(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(G)=>G>=2&&G%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${G})`}}function VR(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let G=Y.split("+"),X=G.pop()??"";if(X===""&&G.length>0){if(X="+",G[G.length-1]==="")G.pop()}if(!X)return{error:`"${J}": no key after the modifiers`};let Z=new Set;for(let H of G){let B=HR[H];if(!B)return{error:`"${J}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};Z.add(B)}if(X=BR[X]??X,Z.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=WR.filter((H)=>Z.has(H)).join("+"),f=Q?`${Q}+${X}`:X;if(X.length>1&&!jR.has(X))return{chord:f,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:f}}function Iq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function KR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function UR(J){if(!Iq(J))return null;let z=J.bindings;if(Iq(z))return z;return J}function yq(J,z,Y){let G=[];if(J===null||J===void 0)return{entries:[],warnings:G};if(!Iq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let X=new Map,Z=[];if(J.bindings!==void 0)if(Iq(J.bindings))Z.push(J.bindings);else G.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of KR(z)){let f=J[Q];if(f===void 0)continue;let H=UR(f);if(H)Z.push(H);else G.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of Z)for(let[f,H]of Object.entries(Q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){X.set(f,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){G.push(`${f}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let K of B){if(typeof K!=="string"){G.push(`${f}: chord entries must be strings`),j=!0;continue}let L=VR(K,Y?.chordOptsFor?.(f));if("error"in L){G.push(`${f}: ${L.error}`),j=!0;continue}if(L.warning)G.push(`${f}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){G.push(`${f}: no valid chords \u2014 keeping the default`);continue}X.set(f,V)}return{entries:Array.from(X,([Q,f])=>({id:Q,keys:f})),warnings:G}}function DR(J,z){return J===z||J==="global"||z==="global"}function oV(J,z){let Y=[],G=[];for(let X of z){let Z=J.find((j)=>j.id===X.id);if(!Z){Y.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=t8[X.id];if(Q){Y.push(`${X.id}: not customizable \u2014 ${Q}`);continue}if(Z.keys.length===0){Y.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let f=qR[X.id];if(f&&X.keys.length>0){let j=f.validateCount(X.keys.length);if(j){Y.push(`${X.id}: ${j} \u2014 keeping the default`);continue}}let H=X.keys.filter((j)=>{if(j.length===1&&fR.has(Z.scope))return Y.push(`${X.id}: "${j}" dropped \u2014 a bare character on a ${Z.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&X.keys.length>0){Y.push(`${X.id}: no chords survived validation \u2014 keeping the default`);continue}if(f&&H.length!==X.keys.length){Y.push(`${X.id}: a dropped chord would shift the slot layout (${f.layout}) \u2014 keeping the default`);continue}let B=Z.keys,V=Z;if(V.keys=H,Z.hint)if(H.length===0)V.hint=void 0;else Z.hint.keys=H.join("/");G.push({id:X.id,keys:H,defaultKeys:B})}for(let X of G)for(let Z of X.keys){let Q=J.find((f)=>f.id===X.id);if(!Q)continue;for(let f of J){if(f.id===X.id)continue;if(!f.keys.includes(Z))continue;if(!DR(Q.scope,f.scope))continue;Y.push(`${X.id}: "${Z}" also fires ${f.id} (${f.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:G,warnings:Y}}var t8,qR,fR,HR,BR,jR,WR;var Tq=k(()=>{t8={"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)"};qR={"sidebar.nav":qX("down","up"),"files.nav":qX("down","up"),"sidebar.search.nav":qX("down","up"),"files.hierarchy":qX("collapse","expand"),"sidebar.view":qX("previous view","next view"),"files.tab":qX("previous tab","next tab")},fR=new Set(["global","workspace","terminal"]),HR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},BR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},jR=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}`)]),WR=["ctrl","cmd","alt","shift"]});function fX(J){return J in sV}function CG(J,z){let Y=J.split("+"),G=Y.pop()??"";if(G===""&&Y.length>0){if(G="+",Y[Y.length-1]==="")Y.pop()}let X=new Set(Y);if(X.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let Z;if(G.length===1)Z=X.has("shift")?G.toUpperCase():G;else{let H=MR[G];if(!H)return{error:`"${J}": tmux can't bind the key "${G}"`};Z=H}let Q=/^f\d+$/.test(G);if(X.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let f="";if(X.has("ctrl"))f+="C-";if(X.has("alt"))f+="M-";if(X.has("shift"))f+="S-";return{key:f+Z}}function eV(){let J={};for(let[Y,G]of Object.entries(gG)){let X=CG(G,{allowBare:fX(Y)});if("error"in X)throw Error(`default tmux chord for ${Y} failed to translate: ${X.error}`);J[Y]={chord:G,key:X.key}}let z=yY.map((Y)=>{let G=CG(Y);if("error"in G)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:G.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function e8(J){let z=eV(),Y=new Set;for(let G of J){if(!G.id.startsWith("tmux."))continue;if(G.id===xz){if(G.keys.length===0){z.focus=[null,null,null,null],Y.add(xz);continue}if(G.keys.length!==yY.length){z.warnings.push(`${xz}: needs exactly 4 chords in order left/down/up/right (got ${G.keys.length}) \u2014 keeping the default`);continue}let f=[],H=!0;for(let B of G.keys){let V=CG(B);if("error"in V){z.warnings.push(`${xz}: ${V.error} \u2014 keeping the default`),H=!1;break}f.push({chord:B,key:V.key})}if(!H)continue;z.focus=f,Y.add(xz);continue}if(!(G.id in gG)){z.warnings.push(`${G.id}: unknown tmux binding id`);continue}let X=G.id;if(G.keys.length===0){z.binds[X]=null,Y.add(X);continue}if(G.keys.length>1)z.warnings.push(`${X}: tmux bindings take ONE chord \u2014 using "${G.keys[0]}", ignoring the rest`);let Z=G.keys[0],Q=CG(Z,{allowBare:fX(X)});if("error"in Q){z.warnings.push(`${X}: ${Q.error} \u2014 keeping the default`);continue}if(Z!==gG[X])Y.add(X);z.binds[X]={chord:Z,key:Q.key}}return z.overridden=Y,z}function JB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function J5(){RG=null}function xq(){if(RG)return RG;let J=Sq();if(!J.exists||J.doc===null)return RG=eV(),RG;let z=yq(J.doc,process.platform,{chordOptsFor:JB}),Y=z.warnings.filter((X)=>X.startsWith("tmux.")),G=e8(z.entries);G.warnings=[...Y,...G.warnings];for(let X of G.warnings)console.warn(`[kobe/keybindings] ${X}`);return RG=G,RG}var LR,sV,tV,gG,xz="tmux.focus",yY,MR,RG=null;var uq=k(()=>{s8();Tq();LR={"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"},sV={"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"},tV=["F6","F7","F8","F9","F10","F11"],gG={...LR,...sV};yY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],MR={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 kZ(J,z){let Y=null;for(let X=0;X<24;X++){let Z=await HX(J);if(Z){if(!z)return{pane:Z,ready:!0};let Q=(await BX(Z)).trim();if(Q.length>0&&Q===Y)return{pane:Z,ready:!0};Y=Q}await z5(250)}return{pane:await HX(J)||await zB(J),ready:!1}}async function bZ(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await P0(["set-buffer","-b",Y,"--",z]),await P0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await z5(FR),await SZ(J,"Enter")}async function Y5(J,z){let{pane:Y}=await kZ(J,!0);if(!Y)return;await bZ(Y,z.text)}var z5=(J)=>new Promise((z)=>setTimeout(z,J)),FR=150;var Eq=k(()=>{P1()});function G5(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,G=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&G)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!G&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&G&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!G)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var jX;var wq=k(()=>{jX={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var WX;var Pq=k(()=>{WX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var VX;var hq=k(()=>{VX={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var KX;var vq=k(()=>{KX={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var UX;var mq=k(()=>{UX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var DX;var cq=k(()=>{DX={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var LX;var dq=k(()=>{LX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var X5;var Z5=k(()=>{wq();Pq();hq();vq();mq();cq();dq();X5={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX}});function bR(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[G,X,Z]=Y;return`#${G}${G}${X}${X}${Z}${Z}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function Q5(J,z,Y="dark"){let G=J.defs??{};function X(Q,f){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return bR(Q);if(f.includes(Q))return null;let B=G[Q]??J.theme[Q];if(B===void 0)return null;return X(B,[...f,Q])}if(!Q||typeof Q!=="object")return null;let H=Q[Y];return typeof H==="string"?X(H,f):null}let Z=J.theme[z];if(Z===void 0)return null;return X(Z,[z])}function nq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function iq(J){if(!nq(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!nq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!nq(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[G,X]of Object.entries(z.defs))if(typeof X!=="string")return{ok:!1,reason:`defs.${G} must be a string (hex like "#abc" or a ref name)`}}for(let[G,X]of Object.entries(Y)){if(typeof X==="string")continue;if(!nq(X))return{ok:!1,reason:`theme.${G} must be a string or a { dark, light } object (got ${X===null?"null":Array.isArray(X)?"array":typeof X})`};let Z=X;if(typeof Z.dark!=="string")return{ok:!1,reason:`theme.${G}.dark must be a string`};if(typeof Z.light!=="string")return{ok:!1,reason:`theme.${G}.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 YB=()=>{};import{readFileSync as SR,readdirSync as IR}from"fs";import{join as q5}from"path";function MX(){return q5(fJ(),"themes")}function IZ(){let J=MX(),z;try{z=IR(J)}catch{return[]}let Y=[];for(let G of z){if(!G.endsWith(".json"))continue;let X=q5(J,G),Z;try{let H=SR(X,"utf8");Z=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${X}: invalid JSON \u2014 ${B}`);continue}let Q=iq(Z);if(!Q.ok){console.warn(`[kobe] skipping user theme ${X}: ${Q.reason}`);continue}let f=G.slice(0,-5);Y.push({name:f,theme:Q.theme})}return Y}var lq=k(()=>{r1();YB()});import{readFileSync as yR}from"fs";function xR(){try{let J=JSON.parse(yR(aJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&TR.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function uR(J){return IZ().find((Y)=>Y.name===J)?.theme??X5[J]??null}function Dz(J,...z){for(let Y of z){let G=Q5(J,Y);if(G)return G}return null}function f5(J,z){let Y=Dz(J,"text"),G=Dz(J,"background"),X=Dz(J,"textMuted","text"),Z=Dz(J,"backgroundPanel","background"),Q=Dz(J,"backgroundElement","backgroundPanel","background"),f=Dz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=Dz(J,"selectedListItemText","background"),B=Dz(J,z,"primary","borderActive","border","text");return{border:Dz(J,"border","text"),activeBorder:B,statusBg:Z,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:Q,currentWindowFg:B,activityFg:Dz(J,"info","primary","text"),bellFg:Dz(J,"warning","error","primary","text"),messageBg:f,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??G}}function tJ(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function B5(J){let z=tJ({bg:J.statusBg,fg:J.statusFg}),Y=tJ({bg:J.statusBg,fg:J.statusMutedFg}),G=tJ({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:G},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function ER(J){let z=new Set(J.marker.split(",").map((Z)=>Z.trim()).filter(Boolean)),Y=[],G=[];for(let Z of B5(J.hexes))if(Z.value){if((J.current[Z.key]??"")!==Z.value)Y.push(["set-option",Z.setFlag,Z.option,Z.value]);G.push(Z.key)}else if(z.has(Z.key))Y.push(["set-option",Z.unsetFlag,Z.option]);let X=G.join(",");if(X!==J.marker)Y.push(X?["set-option","-g",GB,X]:["set-option","-gu",GB]);return Y}async function H5(J){let{code:z,stdout:Y}=await a0(J);return z===0?Y.trim():""}async function NG(){try{let J=xR(),z=J.enabled?uR(J.themeName):null,Y=z?f5(z,J.focusAccentSlot):f5({theme:{}},J.focusAccentSlot),G=B5(Y),[X,...Z]=await Promise.all([H5(["show-options","-gqv",GB]),...G.map((H)=>H5(["show-options",H.showFlag,H.option]))]),Q=Object.fromEntries(G.map((H,B)=>[H.key,Z[B]??""])),f=ER({marker:X,current:Q,hexes:Y});if(f.length>0)await n1(f)}catch{}}var GB="@kobe_border_theme",TR;var $q=k(()=>{r1();P1();Z5();lq();TR=["primary","success","info"]});function j5(){return d1()[aq]!==!1}function _q(){return d1()[W5]===!0}function V5(J){$z({[W5]:J})}var aq="zen.keepTasks",W5="zen.active";var XB=k(()=>{YG()});var pq={};j1(pq,{recordGen:()=>TY,isLatestGen:()=>M5,genAgeMs:()=>dR,coalesceLayoutWork:()=>nR,RESIZE_GUARD_MS:()=>cR,LAYOUT_COALESCE_MS:()=>D5});import{createHash as wR,randomUUID as PR}from"crypto";import{mkdirSync as hR,readFileSync as K5,renameSync as vR,writeFileSync as mR}from"fs";import{join as U5}from"path";function L5(){return U5(fJ(),"layout-coord")}function ZB(J,z){let Y=wR("sha1").update(J).digest("hex").slice(0,16);return U5(L5(),`${Y}.${z}`)}function TY(J,z){let Y=PR();try{hR(L5(),{recursive:!0});let G=ZB(J,z),X=`${G}.${Y}.tmp`;mR(X,`${Date.now()}
|
|
41
41
|
${Y}`),vR(X,G)}catch{}return Y}function M5(J,z,Y){try{return K5(ZB(J,z),"utf8").split(`
|
|
42
42
|
`)[1]?.trim()===Y}catch{return!0}}function dR(J,z,Y=Date.now()){try{let G=Number.parseInt(K5(ZB(J,z),"utf8").split(`
|
|
43
43
|
`)[0]??"",10);return Number.isFinite(G)?Y-G:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function nR(J,z,Y,G=D5){let X=TY(J,z);if(G>0)await new Promise((Z)=>setTimeout(Z,G));if(!M5(J,z,X))return;await Y()}var D5=120,cR=400;var FX=k(()=>{r1()});function lR(J){let z=[];for(let Y of J.split(`
|
|
@@ -45,42 +45,42 @@ ${Y}`),vR(X,G)}catch{}return Y}function M5(J,z,Y){try{return K5(ZB(J,z),"utf8").
|
|
|
45
45
|
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(G.length===0)return;if(G.some((B)=>B[5]?.trim()==="1"))return;if(G.some((B)=>(B[6]?.trim()??"")!==""))return;if(G.some((B)=>(B[7]?.trim()??"")!==""))return;let X=Number.parseInt(G[0][3]?.trim()??"",10),Z=Number.parseInt(G[0][4]?.trim()??"",10),Q=[],f=G.find(([B])=>B?.trim()==="tasks");if(f){let B=Number.parseInt(f[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)Q.push(["set-option","-s",JY,`${HG(B)}`])}let H=G.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(X)&&X>0&&Number.isFinite(Z)&&Z>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?YY(100*B/X):null,K=Number.isFinite(V)?YY(100*V/Z):null;if(j!==null)Q.push(["set-option","-s",BG,`${j}`]);if(K!==null)Q.push(["set-option","-s",zY,`${K}`])}if(Q.length>0)await n1(Q)}function rR(J){let z=J.split(`
|
|
46
46
|
`).map((G)=>G.split("\t")).filter((G)=>(G[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((G)=>G[1]?.trim()==="1"))return!1;if(z.some((G)=>(G[2]?.trim()??"")!==""))return!1;if(z.some((G)=>(G[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((G)=>G[0]?.trim()));return Y.has("tasks")&&Y.has("ops")}async function k5(J){let{code:z,stdout:Y}=await a0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Hz}} #{${NJ}}`]);if(z!==0||!rR(Y))return;await yZ(J)}async function OX(J){let z=await TJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),G=z["@kobe_task"]||void 0,X=z["@kobe_vendor"]||void 0,Z=await rq(J);if(!Z)return;let Q=A5(F5(Z,{currentVersion:o0,force:!0}),{cwd:Y,taskId:G,vendor:X});await O5(J,Q),await NG()}var Lz="@kobe_pane_version",iR;var TZ=k(()=>{ez();vJ();Vz();P1();Bz();$q();FJ();DG();FX();iR=`#{window_id} #{pane_id} #{@kobe_role} #{${Lz}} #{pane_width}`});function sR(J){let z=[];for(let Y of J.split(`
|
|
47
47
|
`)){let G=Y.trim();if(!G)continue;let[X,Z,Q,f,H,B,V]=G.split("\t");if(!X)continue;let j=Number.parseInt(f??"",10),K=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),A=Number.parseInt(V??"",10);z.push({paneId:X.trim(),role:Z?.trim()??"",active:Q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function tR(J){let z=J.find((G)=>G.role===fG);if(!z)return{kind:"missing-engine"};let Y=J.filter((G)=>G.role===fZ);if(Y.length+1>=f8)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function qB(J){return J.find((z)=>z.role===fz)??J.find((z)=>z.role==="")}function eR(J){return 100-(YY(J??Number.NaN)??BZ)}function Jg(J){let z=Number.parseInt(J??"",10);return Number.isFinite(z)&&z>0?z:void 0}async function mJ(J,z){let Y=z?.trim()||`=${J}`,{code:G,stdout:X}=await a0(["list-panes","-t",Y,"-F",oR]);return G===0?sR(X):null}async function zg(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let G of Y.split(`
|
|
48
|
-
`)){let[X,Z]=G.split("\t");if(X?.trim()==="1"&&Z?.trim())return Z.trim()}return""}async function ZY(J,z){let{code:Y,stdout:G}=await a0(["show-options","-wqv","-t",J,z]);return Y===0?G.trim():""}async function fB(J,z,Y){await P0(["set-window-option","-t",J,z,Y])}async function uY(J,z){await P0(["set-window-option","-u","-t",J,z])}async function HB(J){let{code:z,stdout:Y}=await a0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function
|
|
48
|
+
`)){let[X,Z]=G.split("\t");if(X?.trim()==="1"&&Z?.trim())return Z.trim()}return""}async function ZY(J,z){let{code:Y,stdout:G}=await a0(["show-options","-wqv","-t",J,z]);return Y===0?G.trim():""}async function fB(J,z,Y){await P0(["set-window-option","-t",J,z,Y])}async function uY(J,z){await P0(["set-window-option","-u","-t",J,z])}async function HB(J){let{code:z,stdout:Y}=await a0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function I1(J,z){await P0(["display-message","-t",J,z])}async function oq(J){let z=await TJ(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 Yg(J){let z=b1(),Y=zJ();return bJ(Y+pG({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function Gg(J,z){return z?.trim()||await zg(J)}async function Xg(J,z){let Y=await mJ(J,z);if(!Y)return;let G=tR(Y);if(G.kind==="missing-engine"){await I1(z,"kobe: no engine pane in this window");return}if(G.kind==="maxed"){await I1(z,`kobe: workspace split limit is ${f8} panes`);return}let{cwd:X}=await oq(J),{code:Z,stdout:Q}=await a0(["split-window",G.direction,"-t",G.targetPane,"-l","50%","-c",w1(X),"-P","-F","#{pane_id}",bJ("true")]),f=Q.trim();if(Z!==0||!f)return;await n1([["set-option","-p","-t",f,"@kobe_role",fZ],["select-pane","-t",f]])}async function Zg(J,z){let Y=await mJ(J,z);if(!Y)return;let G=Y.filter((Q)=>Q.role===fZ);if(G.length===0){await I1(z,"kobe: no workspace split to close");return}let Z=G.find((Q)=>Q.active)??G[G.length-1];if(!Z)return;await P0(["kill-pane","-t",Z.paneId])}async function Qg(J,z){let Y=await mJ(J,z);if(!Y)return;let G=Y.filter((X)=>X.role===fZ);if(G.length===0){await I1(z,"kobe: no workspace splits to reset");return}await n1(G.map((X)=>["kill-pane","-t",X.paneId]))}async function b5(){let J=await xY([JY]);return HG(Jg(J[JY])??qG)}async function qg(J){let{cwd:z,taskId:Y}=await oq(J),G=b1(),X=zJ();return{cwd:z,command:bJ(X+kY(G,{initialTaskId:Y}))}}async function S5(J,z){let Y=await mJ(J,z);if(!Y)return;let G=Y.find((O)=>O.role===qz);if(G){await P0(["kill-pane","-t",G.paneId]);return}let X=qB(Y),Z=Y.find((O)=>O.role===fG);if(!Z){await I1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:Q,taskId:f,vendor:H}=await oq(J),B=Yg({cwd:Q,taskId:f,vendor:H,enginePaneId:Z.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await fg()}%`,"-c",w1(Q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",Z.paneId,"-l",`${await BB()}%`,"-c",w1(Q),"-P","-F","#{pane_id}",B],{code:j,stdout:K}=await a0(V),L=K.trim();if(j!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",qz],["set-option","-p","-t",L,Lz,o0]];if(X?.role==="")A.push(["set-option","-p","-t",X.paneId,"@kobe_role",fz]);await n1(A)}async function fg(){let J=await xY([zY]);return YY(Number.parseInt(J[zY]??"",10))??BZ}async function BB(){let J=await xY([BG]);return YY(Number.parseInt(J[BG]??"",10))??100-pQ}async function I5(){let J=await xY([zY]);return eR(Number.parseInt(J[zY]??"",10))}async function Hg(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
|
|
49
49
|
`).map((G)=>Number.parseInt(G.trim(),10)).filter((G)=>Number.isFinite(G)))}async function y5(J,z){let Y=await Hg(J),G=M7(z);while(Y.has(G))G++;return G}async function T5(J){let z=HZ(J);if(await H1(z))return z;return await P0(["new-session","-d","-s",z,"-n","hidden-panes","-c",w1(process.cwd()),"while :; do sleep 3600; done"]),z}async function jB(J){let z=HZ(J);if(!await H1(z))return;let{code:Y,stdout:G}=await a0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!G.split(`
|
|
50
|
-
`).some((Z)=>{let Q=Z.trim();return Q===fz||Q===rJ}))await P0(["kill-session","-t",`=${z}`])}async function Bg(J,z){await x5(J,z,Hz)}async function jg(J,z){await x5(J,z,NJ)}async function x5(J,z,Y){let G=await ZY(z,Y);if(!G)return;if(await HB(G))await P0(["kill-pane","-t",G]);await uY(z,Y)}async function Wg(J,z){await Bg(J,z),await jg(J,z),await jB(J)}function u5(J){return J.find((z)=>z.role===fG)??J[0]}async function WB(J,z,Y){let G=u5(Y);if(!G)return await
|
|
51
|
-
`).map((G)=>G.trim()).filter((G)=>G.length>0)}async function m5(J,z){return!!(await mJ(J,z))?.some((G)=>G.role===fG)}async function c5(J){let z=await v5(J);for(let Y of z){if(!await m5(J,Y))continue;if(await ZY(Y,NY))continue;await i5(J,Y)}await QY(J,_G,"1"),await
|
|
52
|
-
`).filter((G)=>G.trim().length>0).length}async function Fg(J,z){if(await Mg(J)<=1){await
|
|
50
|
+
`).some((Z)=>{let Q=Z.trim();return Q===fz||Q===rJ}))await P0(["kill-session","-t",`=${z}`])}async function Bg(J,z){await x5(J,z,Hz)}async function jg(J,z){await x5(J,z,NJ)}async function x5(J,z,Y){let G=await ZY(z,Y);if(!G)return;if(await HB(G))await P0(["kill-pane","-t",G]);await uY(z,Y)}async function Wg(J,z){await Bg(J,z),await jg(J,z),await jB(J)}function u5(J){return J.find((z)=>z.role===fG)??J[0]}async function WB(J,z,Y){let G=u5(Y);if(!G)return await I1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await b5(),{cwd:Z,command:Q}=await qg(J),{code:f,stdout:H}=await a0(["split-window","-h","-b","-t",G.paneId,"-l",`${X}`,"-c",w1(Z),"-P","-F","#{pane_id}",Q]),B=H.trim();if(f!==0||!B)return!1;return await n1([["set-option","-p","-t",B,"@kobe_role",rJ],["set-option","-p","-t",B,Lz,o0],["select-pane","-t",B]]),await uY(z,NJ),await I1(z,"kobe: Tasks pane restored"),!0}async function E5(J,z,Y){let G=await T5(J),X=await y5(G,z),{code:Z,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${G}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(Z!==0||!f){await I1(z,"kobe: could not hide Tasks pane");return}await fB(z,NJ,f),await I1(z,"kobe: Tasks pane hidden")}async function VB(J,z,Y){let G=await mJ(J,z);if(!G)return;if(!await HB(Y)){await uY(z,NJ);let Q=G.find((f)=>f.role===rJ);if(Q){await P0(["select-pane","-t",Q.paneId]);return}await WB(J,z,G);return}let X=u5(G);if(!X){await I1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await P0(["join-pane","-h","-b","-s",Y,"-t",X.paneId,"-l",`${await b5()}`])!==0){await I1(z,"kobe: could not restore Tasks pane");return}await n1([["set-option","-p","-t",Y,"@kobe_role",rJ],["set-option","-p","-t",Y,Lz,o0],["select-pane","-t",Y]]),await uY(z,NJ),await jB(J),await I1(z,"kobe: Tasks pane restored")}async function Vg(J,z){let Y=await ZY(z,NJ);if(Y){await VB(J,z,Y);return}let G=await mJ(J,z);if(!G)return;let X=G.find((Z)=>Z.role===rJ);if(X){await E5(J,z,X);return}await WB(J,z,G)}async function Kg(J,z){let Y=await ZY(z,NJ);if(Y){await VB(J,z,Y);return}let G=await mJ(J,z);if(!G)return;let X=G.find((Z)=>Z.role===rJ);if(X){await P0(["select-pane","-t",X.paneId]);return}await WB(J,z,G)}async function w5(J,z,Y){if(Y.role==="")await P0(["set-option","-p","-t",Y.paneId,"@kobe_role",fz]);let G=await T5(J),X=await y5(G,z),{code:Z,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${G}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(Z!==0||!f){await I1(z,"kobe: could not hide terminal pane");return}await fB(z,Hz,f),await I1(z,"kobe: Terminal pane hidden")}async function P5(J,z,Y){let G=Y.find((V)=>V.role===qz),X=Y.find((V)=>V.role===fG);if(!G&&!X)return await I1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:Z}=await oq(J),Q=G?["split-window","-v","-t",G.paneId,"-l",`${await I5()}%`,"-c",w1(Z),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await BB()}%`,"-c",w1(Z),"-P","-F","#{pane_id}"],{code:f,stdout:H}=await a0(Q),B=H.trim();if(f!==0||!B)return!1;return await P0(["set-option","-p","-t",B,"@kobe_role",fz]),await uY(z,Hz),await I1(z,"kobe: Terminal pane restored"),!0}async function h5(J,z,Y){let G=await mJ(J,z);if(!G)return;if(!await HB(Y)){await uY(z,Hz),await P5(J,z,G);return}let X=G.find((B)=>B.role===qz),Z=G.find((B)=>B.role===fG);if(!X&&!Z){await I1(z,"kobe: cannot restore terminal pane in this layout");return}let Q=X?["join-pane","-v","-s",Y,"-t",X.paneId,"-l",`${await I5()}%`]:["join-pane","-h","-s",Y,"-t",Z?.paneId??"","-l",`${await BB()}%`];if(await P0(Q)!==0){await I1(z,"kobe: could not restore terminal pane");return}await P0(["set-option","-p","-t",Y,"@kobe_role",fz]),await uY(z,Hz),await jB(J),G=await mJ(J,z);let H=G?.find((B)=>B.paneId===Y);if(H)await P0(["select-pane","-t",H.paneId]);await I1(z,"kobe: Terminal pane restored")}async function Ug(J,z){let Y=await ZY(z,Hz);if(Y){await h5(J,z,Y);return}let G=await mJ(J,z);if(!G)return;let X=qB(G);if(X){await w5(J,z,X);return}await P5(J,z,G)}async function Dg(J){let z=_q();if(V5(!z),z){await d5(J);return}await c5(J)}async function AX(J){if(!await H1(J))return;let z=_q(),Y=(await bG(J,_G)).length>0;if(z===Y)return;if(z)await c5(J);else await d5(J)}async function v5(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
|
|
51
|
+
`).map((G)=>G.trim()).filter((G)=>G.length>0)}async function m5(J,z){return!!(await mJ(J,z))?.some((G)=>G.role===fG)}async function c5(J){let z=await v5(J);for(let Y of z){if(!await m5(J,Y))continue;if(await ZY(Y,NY))continue;await i5(J,Y)}await QY(J,_G,"1"),await I1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function d5(J){let z=await v5(J);for(let Y of z){let G=await ZY(Y,NY);if(G)await Lg(J,Y,G)}await P0(["set-option","-u","-t",J,_G]),await I1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function n5(J,z){let Y=(await bG(J,_G)).length>0;if(!Y&&!_q())return;if(!Y)await QY(J,_G,"1");if(await ZY(z,NY))return;if(!await m5(J,z))return;await i5(J,z)}async function i5(J,z){let Y=await mJ(J,z);if(!Y)return;let G=[],X=Y.find((Q)=>Q.role===qz);if(X)await P0(["kill-pane","-t",X.paneId]),G.push(qz);let Z=qB(Y);if(Z)await w5(J,z,Z),G.push(fz);if(!j5()){let Q=Y.find((f)=>f.role===rJ);if(Q)await E5(J,z,Q),G.push(rJ)}if(G.length===0){await I1(z,"kobe: already focused \u2014 nothing to hide");return}await fB(z,NY,G.join(",")),await I1(z,"kobe: Zen mode on")}async function Lg(J,z,Y){let G=new Set(Y.split(",").map((X)=>X.trim()));if(G.has(rJ)){let X=await ZY(z,NJ);if(X)await VB(J,z,X)}if(G.has(qz)){let X=await mJ(J,z);if(X&&!X.some((Z)=>Z.role===qz))await S5(J,z)}if(G.has(fz)){let X=await ZY(z,Hz);if(X)await h5(J,z,X)}await uY(z,NY),await I1(z,"kobe: Zen mode off")}async function Mg(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
52
|
+
`).filter((G)=>G.trim().length>0).length}async function Fg(J,z){if(await Mg(J)<=1){await I1(z,"Cannot close the only ChatTab");return}await Wg(J,z),await P0(["kill-window","-t",z])}async function RX(J,z,Y={}){if(!await H1(J))return;let G=await Gg(J,Y.windowId);if(!G)return;switch(z){case"workspace-split":await Xg(J,G);return;case"workspace-close":await Zg(J,G);return;case"workspace-reset":await Qg(J,G);return;case"tasks-toggle":await Vg(J,G);return;case"tasks-restore":await Kg(J,G);return;case"ops-toggle":await S5(J,G);return;case"terminal-toggle":await Ug(J,G);return;case"zen-toggle":await Dg(J);return;case"chat-tab-close":await Fg(J,G);return}}var oR="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var gX=k(()=>{ez();Vz();XB();P1();Bz();FJ();DG();TZ()});function tq(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 eq(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function Jf(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function zf(J){return[["bind-key","-n",J,"command-prompt","-p",sq],["bind-key","T","command-prompt","-p",sq]]}function KB(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function Yf(J){return`${[J.focusLeft?`${KB(J.focusLeft)} tasks`:null,J.detach?`${KB(J.detach)} detach`:null,J.newTab?`${KB(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function DB(J,z){let Y=zJ(),G=await ff(),X=bJ(z.opsCommand??Y+pG({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:Z}=await uZ([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,UB,"idle"],["split-window","-h","-b","-t",J,"-l",`${G}`,"-c",w1(z.cwd),"-P","-F","tasks=#{pane_id}",bJ(Y+kY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-pQ}%`,"-c",w1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-BZ}%`,"-c",w1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),Q=Object.fromEntries(Z.split(`
|
|
53
53
|
`).map((f)=>f.trim()).filter(Boolean).map((f)=>f.split("=",2)));if(await n1([...Q.tasks?[["set-option","-p","-t",Q.tasks,"@kobe_role",rJ]]:[],...Q.tasks?[["set-option","-p","-t",Q.tasks,Lz,o0]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,"@kobe_role",qz]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,Lz,o0]]:[],...Q.shell?[["set-option","-p","-t",Q.shell,"@kobe_role",fz]]:[]]),Q.ops){let f=await C5();if(f.length>0)await P0(["resize-pane","-t",Q.ops,...f])}}async function l5(J,z){if(!await H1(J))return;let Y=await TJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",gZ]),G=Y["@kobe_worktree"]||process.cwd(),X=Y["@kobe_task"]||void 0,Z=Y[gZ]||void 0,Q=z??Y["@kobe_vendor"];if(z)await Og(J,X,z);let f=yJ(Q),H=QX(f,Q),B=b1(),j=(await a0(["new-window","-t",`=${J}`,"-c",w1(G),"-P","-F","#{pane_id}",bJ(ZX(kJ(H.argv),Z,G))])).stdout.trim();if(!j)return;if(H.sessionId)await EY(j,uz,H.sessionId);await DB(j,{cwd:G,taskId:X,inv:B,vendor:Q});let{stdout:K}=await a0(["display-message","-p","-t",j,"#{window_id}"]),L=K.trim();if(L)await n5(J,L)}async function Xf(J){if(!await H1(J))return;let Y=(await TJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=b1(),Z=`${zJ()}${G.map(Z1).join(" ")} settings`;await Mz(J,{cwd:w1(Y),command:Z,name:"settings",surface:!0})}async function Zf(J){if(!await H1(J))return;let Y=(await TJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=b1(),Z=`${zJ()}${G.map(Z1).join(" ")} help-page`;await Mz(J,{cwd:w1(Y),command:Z,name:"help",surface:!0})}async function Qf(J,z){if(!await H1(J))return;let G=(await TJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=b1(),Z=zJ(),Q=z?` --repo ${Z1(z)}`:"",f=`${Z}${X.map(Z1).join(" ")} new-task${Q}`;await Mz(J,{cwd:w1(G),command:f,name:"new task",surface:!0})}async function qf(J){if(!await H1(J))return;let Y=(await TJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=b1(),Z=`${zJ()}${R7({cliInvocation:G})}`;await Mz(J,{cwd:w1(Y),command:Z,name:"update",surface:!0})}async function $5(J){if(!await H1(J))return;let Y=(await TJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=b1(),Z=`${zJ()}${G.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await Mz(J,{cwd:w1(Y),command:Z,name:"quick task",surface:!0})}async function Og(J,z,Y){if(await QY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:G}=await Promise.resolve().then(() => (OJ(),Hf)),X=await G();try{await X.request("task.setVendor",{taskId:z,vendor:Y})}finally{X.close()}}catch(G){console.error("[kobe tmux] failed to persist selected engine vendor:",G)}}var sq,UB="@kobe_tab_state",xZ="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",Gf;var LB=k(()=>{ez();vJ();Vz();P1();Bz();l1();FJ();DG();gX();TZ();sq=`engine (${i1.join("/")}/\u2026)`;Gf=xZ});var cJ={};j1(cJ,{tmuxWindowSizeArgsForClient:()=>OB,tmuxSessionName:()=>M1,tmuxInitialSizeArgs:()=>_5,tmuxInitialClientSize:()=>FB,tmuxAvailable:()=>Ez,switchClientBeforeKill:()=>wz,sessionExists:()=>H1,selectTasksPane:()=>kg,runLayoutAction:()=>RX,resyncWindowToClient:()=>Rg,refreshKobeWorkspacePanes:()=>OX,quickCreate:()=>$5,prepareWindowForSwitch:()=>jf,prepareWindowForAttach:()=>Bf,parseTmuxClientRows:()=>p5,parseObservedSession:()=>t5,openUpdateTab:()=>qf,openSettingsTab:()=>Xf,openNewTaskTab:()=>Qf,openHelpTab:()=>Zf,observeSessionVendor:()=>RB,newChatTab:()=>l5,kobeStatusRight:()=>Yf,killSession:()=>eJ,healSessionLayout:()=>N5,focusBindCommand:()=>s5,ensureSession:()=>PY,currentSessionName:()=>AJ,clientsWithConflictingSize:()=>r5,chatTabSwitchBindings:()=>tq,chatTabRenameBinding:()=>Jf,chatTabCloseBinding:()=>eq,chatTabChooseEngineBindings:()=>zf,captureGlobalLayoutOnDrag:()=>k5,captureGlobalLayout:()=>yZ,attachArgv:()=>CX,PANE_VERSION_OPTION:()=>Lz,CHAT_TAB_STATUS_FORMAT:()=>xZ,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>Gf,CHAT_TAB_STATE_OPTION:()=>UB,CHAT_TAB_ENGINE_PROMPT:()=>sq});function _5(J=process.stdout,z=process.env){let Y=FB(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function FB(J=process.stdout,z=process.env){let Y=wY(J.columns)??wY(z.COLUMNS),G=wY(J.rows)??wY(z.LINES);return Y&&G?{columns:Y,rows:G}:null}function wY(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 p5(J){let z=[];for(let Y of J.split(`
|
|
54
54
|
`)){let[G,X,Z,Q,f]=Y.split("\t"),H=wY(Z?.trim()),B=wY(Q?.trim());if(!G?.trim()||!X?.trim()||!H||!B)continue;z.push({name:G.trim(),session:X.trim(),width:H,height:B,flags:f?.trim()??""})}return z}function r5(J,z,Y,G={}){return J.filter((X)=>X.session===z).filter((X)=>X.name!==G.currentClientName).filter((X)=>X.width!==Y.columns||X.height!==Y.rows).map((X)=>X.name)}function OB(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function AB(J,z,Y={}){if(!z)return;let{code:G,stdout:X}=await a0(["list-clients","-t",`=${J}`,"-F",Ag]);if(G!==0)return;let Z=r5(p5(X),J,z,Y),Q=[];if(Y.currentClientName)Q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let f of Z)Q.push(["refresh-client","-f","ignore-size","-t",f]);if(Q.length>0)await n1(Q)}async function Bf(J){TY(J,"resize");let z=FB();await AB(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await P0(["resize-window","-t",`=${J}`,...Y]);await kG(J)}async function o5(){let{code:J,stdout:z}=await a0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,G,X,Z]=z.trim().split("\t"),Q=wY(G),f=wY(X),H=Q&&f?{columns:Q,rows:f}:null;return{sizeArgs:H?OB(H,{status:Z}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function jf(J){TY(J,"resize");let z=await o5();await AB(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await P0(["resize-window","-t",`=${J}`,...Y]);await kG(J)}async function Rg(J,z){if(!z.size)return;TY(J,"resize"),await AB(J,z.size,{currentClientName:z.clientName});let Y=OB(z.size,{status:z.status}),{commands:G}=await QB(J,{force:!0});await n1([["resize-window","-t",`=${J}`,...Y],...G])}function s5(J,z,Y){let G=`#{?window_zoomed_flag,1,#{?${gg[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",G,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",G,`select-pane ${z}`]}async function PY(J){let z=MB.get(J.name);if(z)return z;let Y=Ng(J);MB.set(J.name,Y);try{return await Y}finally{MB.delete(J.name)}}function t5(J){let z="",Y="",G=!1,X=new Set;for(let Z of J.split(`
|
|
55
|
-
`)){let[Q,f,H,B,V]=Z.split("\t");if(!Q?.trim())continue;if(X.add(Q.trim()),!z&&B?.trim())z=B.trim();if(!Y&&V?.trim())Y=V.trim();if(f?.trim()==="1"&&H?.trim()==="claude")G=!0}return{worktree:z,vendor:Y,claudePaneAlive:G,windowCount:X.size}}async function e5(J){if(!await H1(J))return null;let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",Cg]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return t5(Y)}async function RB(J){let Y=(await e5(J))?.vendor.trim();return Y?Y:null}async function Ng(J){let z=J.launchInit,Y=await e5(J.name),G=G5(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=TV(J.repo);if(G.kind==="reuse")return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(G.kind==="respawn-engine"){let g0=await R5(J.name,J.cwd,J.command,X,J.vendor);if(g0==="switched"){if(J.vendor)await QY(J.name,"@kobe_vendor",J.vendor);return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(g0==="respawn-failed")return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(G.kind==="rebuild"||G.kind==="respawn-engine")await eJ(J.name);let Z=b1(),Q=QX(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,H=f||X?void 0:J.taskId,B=f&&!X?J.taskId:void 0,V=bq(kq(Q.argv,J.vendor,H),J.vendor,B),j=ZX(kJ(V),X,J.cwd),L=(await a0(["new-session","-d","-s",J.name,"-c",w1(J.cwd),..._5(),"-P","-F","#{pane_id}",O7(j,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?RW(J.cwd):void 0,timeoutSeconds:H8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)})])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(Q.sessionId)await EY(L,uz,Q.sessionId);if(await n1([...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,gZ,X]]:[]]),process.env.TMUX){let{sizeArgs:g0}=await o5();if(g0.length>0)await P0(["resize-window","-t",`=${J.name}`,...g0])}await DB(L,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:Z,vendor:J.vendor});let A=zJ(),O=Z.map(Z1).join(" "),g=`${A}${O} new-chattab --session '#{session_name}'`,u=`${g} --vendor '%%'`,_=`run-shell ${Z1(u)}`,
|
|
56
|
-
`)){let[f,H]=Q.split("\t");if(f?.trim()&&H?.trim()===z)return f.trim()}return""}async function kg(J,z={}){if(!await H1(J))return"";let Y=await a5(J,"tasks",z.windowId);if(!Y)await RX(J,"tasks-restore",{windowId:z.windowId}),Y=await a5(J,"tasks",z.windowId);if(!Y)return"";return await P0(["select-pane","-t",Y]),Y}var Ag="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",gg,MB,Cg="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var YJ=k(()=>{ez();vJ();r1();Vz();P1();_V();uq();Eq();Bz();$q();LB();DG();gX();FX();TZ();P1();LB();TZ();gX();gg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};MB=new Map});var wZ={};j1(wZ,{windowIsSurface:()=>xg,windowCount:()=>
|
|
55
|
+
`)){let[Q,f,H,B,V]=Z.split("\t");if(!Q?.trim())continue;if(X.add(Q.trim()),!z&&B?.trim())z=B.trim();if(!Y&&V?.trim())Y=V.trim();if(f?.trim()==="1"&&H?.trim()==="claude")G=!0}return{worktree:z,vendor:Y,claudePaneAlive:G,windowCount:X.size}}async function e5(J){if(!await H1(J))return null;let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",Cg]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return t5(Y)}async function RB(J){let Y=(await e5(J))?.vendor.trim();return Y?Y:null}async function Ng(J){let z=J.launchInit,Y=await e5(J.name),G=G5(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=TV(J.repo);if(G.kind==="reuse")return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(G.kind==="respawn-engine"){let g0=await R5(J.name,J.cwd,J.command,X,J.vendor);if(g0==="switched"){if(J.vendor)await QY(J.name,"@kobe_vendor",J.vendor);return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(g0==="respawn-failed")return await kG(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(G.kind==="rebuild"||G.kind==="respawn-engine")await eJ(J.name);let Z=b1(),Q=QX(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,H=f||X?void 0:J.taskId,B=f&&!X?J.taskId:void 0,V=bq(kq(Q.argv,J.vendor,H),J.vendor,B),j=ZX(kJ(V),X,J.cwd),L=(await a0(["new-session","-d","-s",J.name,"-c",w1(J.cwd),..._5(),"-P","-F","#{pane_id}",O7(j,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?RW(J.cwd):void 0,timeoutSeconds:H8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)})])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(Q.sessionId)await EY(L,uz,Q.sessionId);if(await n1([...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,gZ,X]]:[]]),process.env.TMUX){let{sizeArgs:g0}=await o5();if(g0.length>0)await P0(["resize-window","-t",`=${J.name}`,...g0])}await DB(L,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:Z,vendor:J.vendor});let A=zJ(),O=Z.map(Z1).join(" "),g=`${A}${O} new-chattab --session '#{session_name}'`,u=`${g} --vendor '%%'`,_=`run-shell ${Z1(u)}`,S=`${A}${O} focus-tasks --session '#{session_name}' --window '#{window_id}'`,N=`run-shell ${Z1(S)}`,M=(g0)=>`${A}${O} layout --session '#{session_name}' --window '#{window_id}' --action ${g0}`,I=M("tasks-restore"),r=`run-shell ${Z1(I)}`,l=M("chat-tab-close"),e=`run-shell ${Z1(l)}`,J0=`${A}${O} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Z1(J0)}`,q0=`${A}${O} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,p=`run-shell -b ${Z1(q0)}`,j0=`${A}${O} capture-layout --session '#{session_name}'`,F0=`run-shell -b ${Z1(j0)}`,V0=g7({tmuxSocket:Fz}),t=lV(process.platform,$V),h=aV(t),C=xq(),o=tV.map((g0)=>["unbind-key","-n",g0]);if(C.overridden.has(xz))for(let g0 of yY){let N0=CG(g0);if("key"in N0)o.push(["unbind-key","-n",N0.key])}for(let g0 of C.overridden){if(g0===xz)continue;let N0=gG[g0],y=fX(g0),L0=CG(N0,{allowBare:y});if("key"in L0)o.push(y?["unbind-key",L0.key]:["unbind-key","-n",L0.key])}let E=["-L","-D","-U","-R"],c=C.focus.flatMap((g0,N0)=>{let y=E[N0],L0=y==="-L"?r:void 0;return g0&&y?[s5(g0.key,y,L0)]:[]}),s=C.binds,Z0=(g0,N0)=>{let y=s[g0];return y?[["bind-key",y.key,"run-shell",M(N0)]]:[]},A0=(...g0)=>{let N0=g0.map((y)=>s[y]?.chord).filter((y)=>!!y);return N0.length>0?N0.join("/"):null};await n1([["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",xZ],["set-option","-g","window-status-current-format",Gf],["set-option","-g","status-right",Yf({focusLeft:C.focus[0]?.key??null,detach:s["tmux.detach"]?.key??null,newTab:s["tmux.tab.new"]?.key??null,layoutSplits:A0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:A0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...h,["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",p],["set-hook","-g","window-layout-changed",F0],...o,...s["tmux.detach"]?[["bind-key","-n",s["tmux.detach"].key,"if-shell","-F",`#{?#{${NJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",N]]:[],...c,...s["tmux.tab.new"]?[["bind-key","-n",s["tmux.tab.new"].key,"run-shell",g]]:[],...s["tmux.tab.chooseEngine"]?zf(s["tmux.tab.chooseEngine"].key).map((g0)=>[...g0,_]):[],...s["tmux.tab.prev"]&&s["tmux.tab.next"]?tq(s["tmux.tab.prev"].key,s["tmux.tab.next"].key):s["tmux.tab.prev"]?[["bind-key","-n",s["tmux.tab.prev"].key,"previous-window"]]:s["tmux.tab.next"]?[["bind-key","-n",s["tmux.tab.next"].key,"next-window"]]:[],...s["tmux.tab.close"]?[eq(s["tmux.tab.close"].key,e)]:[],...s["tmux.tab.rename"]?[Jf(s["tmux.tab.rename"].key)]:[],...Z0("tmux.layout.workspaceSplit","workspace-split"),...Z0("tmux.layout.workspaceClose","workspace-close"),...Z0("tmux.layout.workspaceReset","workspace-reset"),...Z0("tmux.layout.tasksToggle","tasks-toggle"),...Z0("tmux.layout.opsToggle","ops-toggle"),...Z0("tmux.layout.terminalToggle","terminal-toggle"),...Z0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${A}${O} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",V0]]),await NG(),await P0(["select-pane","-t",L]);let h0=z?.firstMessage;if(h0)Y5(J.name,h0).catch((g0)=>console.error("[kobe tmux] first message delivery failed:",g0));return!0}async function a5(J,z,Y){let G=Y?.trim()||`=${J}`,{code:X,stdout:Z}=await a0(["list-panes","-t",G,"-F","#{pane_id}\t#{@kobe_role}"]);if(X!==0)return"";for(let Q of Z.split(`
|
|
56
|
+
`)){let[f,H]=Q.split("\t");if(f?.trim()&&H?.trim()===z)return f.trim()}return""}async function kg(J,z={}){if(!await H1(J))return"";let Y=await a5(J,"tasks",z.windowId);if(!Y)await RX(J,"tasks-restore",{windowId:z.windowId}),Y=await a5(J,"tasks",z.windowId);if(!Y)return"";return await P0(["select-pane","-t",Y]),Y}var Ag="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",gg,MB,Cg="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var YJ=k(()=>{ez();vJ();r1();Vz();P1();_V();uq();Eq();Bz();$q();LB();DG();gX();FX();TZ();P1();LB();TZ();gX();gg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};MB=new Map});var wZ={};j1(wZ,{windowIsSurface:()=>xg,windowCount:()=>Ig,tmuxSessionName:()=>M1,tmuxCommandSequence:()=>CB,tmuxAvailable:()=>Ez,tmuxArgs:()=>SG,tagPaneRole:()=>Y6,tagClaudePane:()=>Tg,switchClientBeforeKill:()=>wz,setWindowOption:()=>EY,setSessionOption:()=>QY,sessionExists:()=>H1,sendKeys:()=>Wf,sendKeyName:()=>SZ,runTmuxSequenceCapturing:()=>uZ,runTmuxSequence:()=>n1,runTmuxCapturing:()=>a0,runTmux:()=>P0,paneIdByRole:()=>kB,newWindow:()=>Mz,killSession:()=>eJ,globalTasksPaneWidth:()=>ff,getSessionOptions:()=>TJ,getSessionOption:()=>bG,getServerOptions:()=>xY,getServerOption:()=>z6,ensureFallbackSession:()=>Vf,currentSessionName:()=>AJ,claudePaneIdStrict:()=>HX,claudePaneId:()=>zB,capturePaneById:()=>BX,attachArgv:()=>CX,SURFACE_WINDOW_OPTION:()=>bB,PANE_ROLE_OPTION:()=>EZ,KOBE_TMUX_SOCKET:()=>Fz,KOBE_HOME_SESSION:()=>G6,CLAUDE_ROLE_OPTION:()=>yg,CHAT_TAB_SESSION_ID_OPTION:()=>uz});import{homedir as bg}from"os";function SG(...J){return["tmux","-L",Fz,...J]}function M1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function CX(J){return SG("attach-session","-t",`=${J}`)}async function gB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function P0(J){try{let z=Bun.spawn(SG(...J),{stdin:"ignore",cwd:NX,stdout:"ignore",stderr:"pipe"}),[Y,G]=await Promise.all([gB(z.stderr),z.exited]);if(G!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${G}): ${Y.trim()}`);return G}catch{return 1}}async function Sg(J){try{return await Bun.spawn(SG(...J),{stdin:"ignore",cwd:NX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function CB(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function n1(J){let z=CB(J);return z.length===0?0:P0(z)}async function a0(J){try{let z=Bun.spawn(SG(...J),{stdin:"ignore",cwd:NX,stdout:"pipe",stderr:"pipe"}),[Y,G,X]=await Promise.all([gB(z.stdout),gB(z.stderr),z.exited]);if(X!==0&&G.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${X}): ${G.trim()}`);return{code:X,stdout:Y}}catch{return{code:1,stdout:""}}}async function uZ(J){let z=CB(J);return z.length===0?{code:0,stdout:""}:a0(z)}async function Ez(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:NX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function H1(J){return await Sg(["has-session","-t",`=${J}`])===0}async function Ig(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
57
57
|
`).filter((G)=>G.trim().length>0).length}async function QY(J,z,Y){await P0(["set-option","-t",J,z,Y])}async function bG(J,z){let{code:Y,stdout:G}=await a0(["show-options","-v","-t",J,z]);return Y===0?G.trim():""}async function TJ(J,z){let Y=Object.fromEntries(z.map((Z)=>[Z,void 0])),{code:G,stdout:X}=await uZ(z.map((Z)=>["show-options","-q","-t",J,Z]));if(G!==0)return Y;for(let Z of X.split(`
|
|
58
58
|
`)){let Q=Z.indexOf(" ");if(Q<=0)continue;let f=Z.slice(0,Q);if(f in Y)Y[f]=Z.slice(Q+1).trim()}return Y}async function z6(J){let{code:z,stdout:Y}=await a0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function xY(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Y,stdout:G}=await uZ(J.map((X)=>["show-options","-sq",X]));if(Y!==0)return z;for(let X of G.split(`
|
|
59
59
|
`)){let Z=X.indexOf(" ");if(Z<=0)continue;let Q=X.slice(0,Z);if(Q in z)z[Q]=X.slice(Z+1).trim()}return z}async function ff(){let J=await z6(JY),z=Number.parseInt(J,10);return Number.isFinite(z)&&z>0?HG(z):qG}async function Y6(J,z){await P0(["set-option","-p","-t",J,EZ,z])}async function EY(J,z,Y){await P0(["set-window-option","-t",J,z,Y])}async function Tg(J){await Y6(J,NB)}async function kB(J,z,Y=!1){let{code:G,stdout:X}=await a0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${EZ}}`]);if(G!==0)return"";let Z="";for(let Q of X.split(`
|
|
60
|
-
`)){let[f,H]=Q.split("\t");if(!f)continue;if(!Z)Z=f.trim();if(H?.trim()===z)return f.trim()}return Y?Z:""}async function zB(J){return kB(J,NB,!0)}async function HX(J){return kB(J,NB,!1)}async function BX(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:G,stdout:X}=await a0(Y);return G===0?X:""}async function Wf(J,z){await P0(["send-keys","-t",J,"-l","--",z])}async function
|
|
60
|
+
`)){let[f,H]=Q.split("\t");if(!f)continue;if(!Z)Z=f.trim();if(H?.trim()===z)return f.trim()}return Y?Z:""}async function zB(J){return kB(J,NB,!0)}async function HX(J){return kB(J,NB,!1)}async function BX(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:G,stdout:X}=await a0(Y);return G===0?X:""}async function Wf(J,z){await P0(["send-keys","-t",J,"-l","--",z])}async function SZ(J,z){await P0(["send-keys","-t",J,z])}async function Mz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:G,stdout:X}=await a0(Y),Z=X.trim();if(G===0&&Z)await EY(Z,bB,"1");return}Y.push(z.command),await P0(Y)}async function xg(J){let{code:z,stdout:Y}=await a0(["display-message","-t",J,"-p",`#{${bB}}`]);return z===0&&Y.trim()==="1"}async function AJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:G}=await a0(J),X=G.trim();return Y===0&&X.length>0?X:null}async function eJ(J){if(!J.startsWith("kobe-hidden-")){let z=HZ(J);if(await H1(z))await P0(["kill-session","-t",`=${z}`])}if(await H1(J))await P0(["kill-session","-t",`=${J}`])}async function Vf(){let J=G6;if(await H1(J)){if(await bG(J,J6)==="tasks")return J;await P0(["kill-session","-t",`=${J}`])}let Y=(await a0(["new-session","-d","-s",J,"-c",NX,"-x","220","-y","50","-P","-F","#{pane_id}",F7()])).stdout.trim();if(Y){let G=await ff(),Z=(await a0(["split-window","-h","-b","-t",Y,"-l",`${G}`,"-c",NX,"-P","-F","#{pane_id}",bJ(zJ()+kY(b1()))])).stdout.trim();if(Z)await n1([["set-option","-p","-t",Z,EZ,"tasks"],["select-pane","-t",Z]])}return await QY(J,J6,"tasks"),J}async function wz(J,z){if(await AJ()!==J)return;let{prepareWindowForSwitch:G}=await Promise.resolve().then(() => (YJ(),cJ));if(z&&z!==J&&await H1(z)){await G(z),await P0(["switch-client","-t",`=${z}`]);return}let X=await Vf();await G(X),await P0(["switch-client","-t",`=${X}`])}var Fz,NX,EZ="@kobe_role",yg,NB="claude",uz="@kobe_session_id",bB="@kobe_surface",G6="kobe-home",J6="@kobe_home";var P1=k(()=>{ez();DG();Bz();Fz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";NX=bg()||"/";yg=EZ});async function ug(J,z=X6){let{code:Y,stdout:G}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${uz}}`]);if(Y!==0)return[];let X=[];for(let Z of G.split(`
|
|
61
61
|
`)){let[Q,f,H]=Z.split("\t"),B=Number.parseInt((Q??"").trim(),10);if(!Number.isInteger(B))continue;X.push({index:B,sessionId:H?.trim()??"",autoRename:f?.trim()??""})}return X}async function Eg(J,z,Y){let{code:G,stdout:X}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return G===0&&/\boff\b/.test(X)}async function wg(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function Pg(J,z,Y,G){return await G.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function Z6(J,z=hg){let Y=0,G=null,X=async(Z,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(G===null)G=await wg(z.runner);if(!G)return!0}return Eg(Z,Q.index,z.runner)};for(let Z of J.listTasks()){if(Z.archived||Z.kind==="main"||!Z.worktreePath)continue;let Q=M1(Z.id),f=await ug(Q,z.runner);if(f.length===0)continue;let H=f.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=Z.vendor??a1;for(let V of f)try{if(await X(Q,V))continue;let j=V.sessionId?await z.titleFromSessionId(B,V.sessionId):V.index===H?await z.titleFromWorktree(Z.worktreePath,B):"";if(j&&await Pg(Q,V.index,j,z.runner))Y++}catch{}}return Y}var X6,hg;var Q6=k(()=>{fq();P1();sJ();X6={capture:a0,run:P0};hg={runner:X6,titleFromSessionId:qV,titleFromWorktree:sG}});function f6(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 q6(J,z,Y=new Date){let G=f6(z);return`[${Y.toISOString()}] daemon ${J}: ${G.stack??`${G.name}: ${G.message}`}
|
|
62
62
|
`}function vg(J,z,Y=new Date){let G=f6(z);return`[${Y.toISOString()}] daemon error [${J}]: ${G.stack??`${G.name}: ${G.message}`}
|
|
63
63
|
`}function y1(J,z){process.stderr.write(vg(J,z))}function mg(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
|
|
64
|
-
`}function Pz(J,z){process.stderr.write(mg(J,z))}function H6(J=(z)=>process.stderr.write(z)){if(IB||SB)return;IB=(z)=>J(q6("unhandledRejection",z)),SB=(z)=>J(q6("uncaughtException",z)),process.on("unhandledRejection",IB),process.on("uncaughtException",SB)}var IB,SB;async function cg(J,z=sG){let Y=[];for(let G of J.listTasks()){if(G.archived||G.title!==Tz||!G.worktreePath)continue;try{let X=await z(G.worktreePath,G.vendor??a1);if(!X)continue;let Z=J.getTask(G.id);if(!Z||Z.title!==Tz)continue;await J.setTitle(G.id,X),Y.push({id:G.id,title:X})}catch(X){y1("auto-title-poller",X)}}return Y}function B6(J,z=yB,Y){if(z<=0)return()=>{};let G=!1,Z=setInterval(()=>{if(Y&&!Y())return;if(G)return;G=!0,cg(J).then(()=>Z6(J)).catch((Q)=>y1("auto-title-poller",Q)).finally(()=>{G=!1})},z);return Z.unref?.(),()=>clearInterval(Z)}var yB=4000;var j6=k(()=>{fq();RZ();Q6();sJ()});class TB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class xB{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let G of this.sinks)G(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function W6(J,z,Y=Cq){if(!Y())return"skipped";let G=J.getTask(z);if(!G)return"skipped";if((G.kind??"task")==="main"||G.archived)return"skipped";if(G.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var V6=k(()=>{CZ()});import{createHash as dg}from"crypto";import{homedir as ng}from"os";import vY from"path";function _g(){return vY.join(process.env.KOBE_HOME_DIR??ng(),".kobe")}function pg(J){let Y=(vY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=dg("sha1").update(vY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}function rg(J){if(!vY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return vY.join(_g(),ig,pg(J))}function og(J){if(!vY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[rg(J),...ag.map((z)=>vY.join(J,z))]}function hY(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function K6(J,z){return z===J||z.startsWith(`${J}/`)}function U6(J,z){let Y=hY(z),G,X=-1;for(let Z of J){if(!Z.worktreePath)continue;let Q=hY(Z.worktreePath);if(K6(Q,Y)&&Q.length>X)X=Q.length,G=Z.id}return G}function uB(J,z){let Y=hY(z),G,X=-1;for(let Z of J){if(!Z.repo)continue;let Q=hY(Z.repo);if(K6(Q,Y)&&Q.length>X)X=Q.length,G=Q}return G}function D6(J,z){let Y=hY(z),G=new Set,X=new Set;for(let Z of J){if(Z.repo)G.add(hY(Z.repo));if(Z.worktreePath)X.add(hY(Z.worktreePath))}for(let Z of G)for(let Q of og(Z).map(hY)){let f=`${Q}/`;if(!Y.startsWith(f))continue;let B=Y.slice(f.length).split("/")[0];if(!B)continue;let V=`${f}${B}`;if(X.has(V))return;return{repo:Z,worktreePath:V}}return}var ig="worktrees",lg=".kobe/worktrees",$g=".claude/worktrees",ag;var L6=k(()=>{ag=[lg,$g]});function PB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function PZ(J,z,Y,G){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(hB(Y),G)}function hZ(){return new Map([{name:"hello",handle(z,Y){let G=typeof z.protocolVersion==="number"?z.protocolVersion:_J,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:G;if(!EQ({localVersion:_J,localMin:AY,remoteVersion:G,remoteMin:X}))throw Error(`daemon is protocol v${_J} (min v${AY}); this client is v${G} (min v${X}). Upgrade your kobe.`);return{protocolVersion:_J,minProtocolVersion:AY,kobeVersion:o0,capabilities:[...oH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Qz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:o0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Qz)}}},{name:"task.get",handle(z,Y){let G=A1(z,"taskId"),X=Y.orch.getTask(G);if(!X)throw Error(`task not found: ${G}`);return{task:Qz(X)}}},{name:"task.create",async handle(z,Y){let G=A1(z,"repo"),X=await Y.orch.createTask({repo:G,title:Jz(z,"title"),branch:Jz(z,"branch"),baseRef:Jz(z,"baseRef"),vendor:wB(z,"vendor"),modelEffort:Jz(z,"effort")});return{taskId:X.id,task:Qz(X)}}},{name:"task.archive",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setArchived(G,EB(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setTitle(G,A1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setBranch(G,A1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let G=A1(z,"taskId"),X=wB(z,"vendor");if(!X)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(G,X),{}}},{name:"task.delete",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.deleteTask(G,{force:EB(z,"force")}),Y.activity.clearTask(G),{}}},{name:"task.pin",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setPinned(G,EB(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"direction");if(X!=="up"&&X!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(G,X==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"status");if(!zV(X))throw Error("status must be a TaskStatus");let Z=X==="done"?Y.orch.getTask(G):void 0,Q=Z?.status;if(await Y.orch.setStatus(G,X),X==="done"&&Q!=="done"&&Z)try{let f=await Y.issues.mirrorTaskDone(Z.repo,G);if(f)Y.bus.publish("issue.snapshot",f)}catch(f){y1("issue-done-mirror",f)}return{}}},{name:"task.reorder",async handle(z,Y){let G=z.moves;if(!Array.isArray(G)||G.length===0)throw Error("moves must be a non-empty array");if(G.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let X=G.map((Z)=>{if(typeof Z!=="object"||Z===null)throw Error("each move needs taskId and position");let Q=Z,f=A1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:f,position:H}});return await Y.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Y){let G=A1(z,"repo"),X=await Y.orch.ensureMainTask(G);return{task:Qz(X)}}},{name:"project.forget",async handle(z,Y){let G=A1(z,"repo");return await Y.orch.forgetProject(G),{}}},{name:"task.ensureWorktree",async handle(z,Y){let G=A1(z,"taskId");Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"running"});try{let X=await Y.orch.ensureWorktree(G);return Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let G=A1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(G)}}},{name:"worktree.adopt",async handle(z,Y){let G=await Y.orch.adoptWorktree({repo:A1(z,"repo"),worktreePath:A1(z,"worktreePath"),branch:Jz(z,"branch"),vendor:wB(z,"vendor"),title:Jz(z,"title"),ifExists:Jz(z,"ifExists")==="return"?"return":"error"});return{task:Qz(G)}}},{name:"worktree.reconcile",async handle(z,Y){let G=A1(z,"cwd"),X=A1(z,"worktreePath"),Z=uB(Y.orch.listTasks(),G)??uB(Y.orch.listTasks(),X);if(!Z)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:Z,worktreePath:X,ifExists:"return"})).id}}catch(Q){return y1("worktree-created",Q),{adopted:!1}}}},{name:"task.setActive",async handle(z,Y){let G=Jz(z,"taskId")??null;return await Y.orch.setActiveTask(G),Y.bus.publish("active-task",{taskId:G}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(A1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let G=await Y.issues.mutate(A1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",G),G}},{name:"session.deliver",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"text"),Z=Jz(z,"source");if(Z!==void 0&&Z!=="note"&&Z!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(G))throw Error(`task not found: ${G}`);return Y.bus.publish("session.deliver",{taskId:G,text:X,at:Date.now(),source:Z??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"text"),Z=Y.orch.getTask(G);if(!Z)throw Error(`task not found: ${G}`);let Q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===Z.repo&&!H.archived);if(!Q||Q.id===Z.id)return{ok:!0,routed:!1};let f=Z.title||Z.branch||G;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${f}" (task ${G}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let G=A1(z,"kind");if(!Zq(G))throw Error(`unknown engine event kind: ${G}`);let X=Jz(z,"taskId"),Z=Jz(z,"cwd");if(!X&&Z&&G==="session-start"){let H=D6(Y.orch.listTasks(),Z);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){y1("worktree-autosync",B)}}let Q=X??(Z?U6(Y.orch.listTasks(),Z):void 0);if(!Q)return{};let f=sg(z);if(Y.activity.report(Q,G,f),G==="turn-start")W6(Y.orch,Q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>y1("status-rules",H));return{}}}].map((z)=>[z.name,z]))}function hB(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function A1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Jz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function EB(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function wB(J,z){let Y=Jz(J,z);return Y&&Y.trim().length>0?Y:void 0}function sg(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,G={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")G.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")G.waiting=Y.waiting;if(typeof Y.note==="string")G.note=Y.note;return Object.keys(G).length>0?G:void 0}var Kf=k(()=>{Qq();V6();sJ();FJ();L6();GG()});import{execFile as tg}from"child_process";import{mkdir as eg,readFile as JC,realpath as M6,rename as zC,stat as YC,writeFile as GC}from"fs/promises";import{homedir as XC}from"os";import{dirname as ZC,isAbsolute as QC,join as qC,resolve as F6}from"path";import{promisify as fC}from"util";function HC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function Df(J=process.env.KOBE_HOME_DIR??XC()){return qC(J,".kobe","issues.json")}function A6(J){return typeof J==="string"&&O6.includes(J)}function BC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:A6(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function jC(){return{version:1,repos:{}}}function WC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function VC(J){let{stdout:z}=await iB("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return M6(QC(Y)?Y:F6(J,Y))}async function KC(J){let{stdout:z}=await iB("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function UC(J){let{stdout:z}=await iB("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((G)=>G.startsWith("worktree "))?.slice(9).trim();return Y?M6(Y):KC(J)}async function vB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=F6(J);if(!(await YC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[G,X]=await Promise.all([UC(z),VC(z)]);return{repoRoot:G,repoKey:X}}catch(G){if(HC(G))throw Error("repoRoot is not a git repository");throw G}}async function mB(J){try{let z=JSON.parse(await JC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[G,X]of Object.entries(z.repos)){if(!X||typeof X!=="object")continue;let Z=X;Y[G]={repoRoot:typeof Z.repoRoot==="string"?Z.repoRoot:"",nextId:typeof Z.nextId==="number"?Z.nextId:1,issues:Array.isArray(Z.issues)?Z.issues.map(BC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return jC();throw z}}async function cB(J,z){await eg(ZC(J),{recursive:!0});let Y=`${J}.tmp`;await GC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
-
`,"utf8"),await zC(Y,J)}function dB(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function nB(J,z){let G=(Uf.get(J)??Promise.resolve()).then(z),X=G.then(()=>{return},()=>{return});return Uf.set(J,X),X.then(()=>{if(Uf.get(J)===X)Uf.delete(J)}),G}class Lf{path;constructor(J=Df()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await vB(J);return nB(this.path,async()=>{let G=await mB(this.path),X=G.repos[Y]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await cB(this.path,G);return dB(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:G}=await vB(J);if(!z)return null;return nB(this.path,async()=>{let X=await mB(this.path),Z=X.repos[G];if(!Z)return null;let Q=Z.issues.find((f)=>f.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",Z.repoRoot=Y,await cB(this.path,X),dB(Y,Z)})}async mutate(J,z){let{repoRoot:Y,repoKey:G}=await vB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return nB(this.path,async()=>{let X=await mB(this.path),Z=X.repos[G];if(!Z)Z={repoRoot:Y,nextId:1,issues:[]},X.repos[G]=Z;Z.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");Z.issues=[{id:Z.nextId,title:Q.title,status:"open",created:WC(),body:typeof Q.body==="string"?Q.body:""},...Z.issues],Z.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!A6(Q.status))throw Error(`invalid status: must be one of ${O6.join(", ")}`);let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.status=Q.status}else if(Q.type==="update"){if(typeof Q.id!=="number")throw Error("update requires a numeric id");if(Q.title!==void 0&&(typeof Q.title!=="string"||Q.title.trim().length===0))throw Error("title must be a non-empty string");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")f.title=Q.title;if(typeof Q.body==="string")f.body=Q.body}else if(Q.type==="link"){if(typeof Q.id!=="number")throw Error("link requires a numeric id");if(typeof Q.taskId!=="string"||Q.taskId.length===0)throw Error("link requires a non-empty taskId");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let f=Z.issues.filter((H)=>H.id!==Q.id);if(f.length===Z.issues.length)throw Error(`no issue #${Q.id}`);Z.issues=f}else throw Error(`unknown op type: ${Q.type}`);return await cB(this.path,X),dB(Y,Z)})}}var iB,O6,Uf;var lB=k(()=>{iB=fC(tg),O6=["open","doing","hold","done"];Uf=new Map});import{lstat as R6,readdir as DC,realpath as LC,stat as MC}from"fs/promises";import{join as FC,relative as OC,resolve as g6,sep as AC}from"path";import{Readable as RC}from"stream";function I6(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=dJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!C6.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${C6.join(", ")}`);return z.root=J,new aB(z)}var dJ,$B,b6="READDIRP_RECURSIVE_ERROR",gC,C6,CC,NC,kC=(J)=>gC.has(J.code),bC,N6=(J)=>!0,k6=(J)=>{if(J===void 0)return N6;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((G)=>Y.basename===G)}return N6},aB;var S6=k(()=>{dJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},$B={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:dJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze($B);gC=new Set(["ENOENT","EPERM","EACCES","ELOOP",b6]),C6=[dJ.DIR_TYPE,dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE,dJ.FILE_TYPE],CC=new Set([dJ.DIR_TYPE,dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE]),NC=new Set([dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE,dJ.FILE_TYPE]),bC=process.platform==="win32";aB=class aB extends RC{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={...$B,...J},{root:Y,type:G}=z;this._fileFilter=k6(z.fileFilter),this._directoryFilter=k6(z.directoryFilter);let X=z.lstat?R6:MC;if(bC)this._stat=(Z)=>X(Z,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:$B.depth,this._wantsDir=G?CC.has(G):!1,this._wantsFile=G?NC.has(G):!1,this._wantsEverything=G===dJ.EVERYTHING_TYPE,this._root=g6(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:G,depth:X}=z,Z=Y.splice(0,J).map((f)=>this._formatEntry(f,G)),Q=await Promise.all(Z);for(let f of Q){if(!f)continue;if(this.destroyed)return;let H=await this._getEntryType(f);if(H==="directory"&&this._directoryFilter(f)){if(X<=this._maxDepth)this.parents.push(this._exploreDir(f.fullPath,X+1));if(this._wantsDir)this.push(f),J--}else if((H==="file"||this._includeAsFile(f))&&this._fileFilter(f)){if(this._wantsFile)this.push(f),J--}}}else{let G=this.parents.pop();if(!G){this.push(null);break}if(this.parent=await G,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await DC(J,this._rdOptions)}catch(G){this._onError(G)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,G=this._isDirent?J.name:J;try{let X=g6(FC(z,G));Y={path:OC(this._root,X),fullPath:X,basename:G},Y[this._statsProp]=this._isDirent?J:await this._stat(X)}catch(X){this._onError(X);return}return Y}_onError(J){if(kC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let G=await LC(Y),X=await R6(G);if(X.isFile())return"file";if(X.isDirectory()){let Z=G.length;if(Y.startsWith(G)&&Y.substr(Z,1)===AC){let Q=Error(`Circular symlink detected: "${Y}" points to "${G}"`);return Q.code=b6,this._onError(Q)}return"directory"}}catch(G){return this._onError(G),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as IC,unwatchFile as y6,watchFile as SC}from"fs";import{realpath as _B,lstat as yC,open as TC,stat as x6}from"fs/promises";import{type as xC}from"os";import*as u1 from"path";function T6(J,z,Y,G,X){let Z=(Q,f)=>{if(Y(J),X(Q,f,{watchedPath:J}),f&&J!==f)Of(u1.resolve(J,f),SG,u1.join(J,f))};try{return IC(J,{persistent:z.persistent},Z)}catch(Q){G(Q);return}}class tB{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,G=u1.dirname(J),X=u1.basename(J);this.fsw._getWatchedDir(G).add(X);let Q=u1.resolve(J),f={persistent:Y.persistent};if(!z)z=Af;let H;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;f.interval=B&&dC(X)?Y.binaryInterval:Y.interval,H=lC(J,Q,f,{listener:z,rawEmitter:this.fsw._emitRaw})}else H=iC(J,Q,f,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return H}_handleFile(J,z,Y){if(this.fsw.closed)return;let G=u1.dirname(J),X=u1.basename(J),Z=this.fsw._getWatchedDir(G),Q=z;if(Z.has(X))return;let f=async(B,V)=>{if(!this.fsw._throttle(hC,J,5))return;if(!V||V.mtimeMs===0)try{let j=await x6(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=j;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,j);if((EC||wC||PC)&&Q.ino!==j.ino){this.fsw._closeFile(B),Q=j;let A=this._watchWithNodeFs(J,f);if(A)this.fsw._addPathCloser(B,A)}else Q=j}catch(j){this.fsw._remove(G,X)}else if(Z.has(X)){let{atimeMs:j,mtimeMs:K}=V;if(!j||j<=K||K!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,V);Q=V}},H=this._watchWithNodeFs(J,f);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Oz.ADD,J,0))return;this.fsw._emit(Oz.ADD,J,z)}return H}async _handleSymlink(J,z,Y,G){if(this.fsw.closed)return;let X=J.fullPath,Z=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await _B(Y)}catch(f){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(Z.has(G)){if(this.fsw._symlinkPaths.get(X)!==Q)this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Oz.CHANGE,Y,J.stats)}else Z.add(G),this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Oz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Y,G,X,Z,Q){J=u1.join(J,"");let f=G?`${J}:${G}`:J;if(Q=this.fsw._throttle("readdir",f,1000),!Q)return;let H=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(j)=>Y.filterPath(j),directoryFilter:(j)=>Y.filterDir(j)});if(!V)return;return V.on(uC,async(j)=>{if(this.fsw.closed){V=void 0;return}let K=j.path,L=u1.join(J,K);if(B.add(K),j.stats.isSymbolicLink()&&await this._handleSymlink(j,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===G||!G&&!H.has(K))this.fsw._incrReadyCount(),L=u1.join(X,u1.relative(X,L)),this._addToNodeFs(L,z,Y,Z+1)}).on(Oz.ERROR,this._boundHandleError),new Promise((j,K)=>{if(!V)return K();V.once(oB,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(j(void 0),H.getChildren().filter((A)=>{return A!==J&&!B.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,G,X,Z,Q)})})}async _handleDir(J,z,Y,G,X,Z,Q){let f=this.fsw._getWatchedDir(u1.dirname(J)),H=f.has(u1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!X&&!H)this.fsw._emit(Oz.ADD_DIR,J,z);f.add(u1.basename(J)),this.fsw._getWatchedDir(J);let B,V,j=this.fsw.options.depth;if((j==null||G<=j)&&!this.fsw._symlinkPaths.has(Q)){if(!X){if(await this._handleRead(J,Y,Z,X,J,G,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,Z,X,J,G,B)})}return V}async _addToNodeFs(J,z,Y,G,X){let Z=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return Z(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(f)=>Y.filterPath(f),Q.filterDir=(f)=>Y.filterDir(f);try{let f=await vC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,f))return Z(),!1;let H=this.fsw.options.followSymlinks,B;if(f.isDirectory()){let V=u1.resolve(J),j=H?await _B(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(Q.watchPath,f,z,G,X,Q,j),this.fsw.closed)return;if(V!==j&&j!==void 0)this.fsw._symlinkPaths.set(V,j)}else if(f.isSymbolicLink()){let V=H?await _B(J):J;if(this.fsw.closed)return;let j=u1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(j).add(Q.watchPath),this.fsw._emit(Oz.ADD,Q.watchPath,f),B=await this._handleDir(j,f,z,G,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(u1.resolve(J),V)}else B=this._handleFile(Q.watchPath,f,z);if(Z(),B)this.fsw._addPathCloser(J,B);return!1}catch(f){if(this.fsw._handleError(f))return Z(),J}}}var uC="data",oB="end",u6="close",Af=()=>{},Rf,sB,EC,wC,PC,E6,T1,Oz,hC="watch",vC,SG="listeners",Mf="errHandlers",kX="rawEmitters",mC,cC,dC=(J)=>cC.has(u1.extname(J).slice(1).toLowerCase()),rB=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},vZ=(J,z,Y)=>{let G=J[z];if(!(G instanceof Set))J[z]=G=new Set([G]);G.add(Y)},nC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},mZ=(J,z,Y)=>{let G=J[z];if(G instanceof Set)G.delete(Y);else if(G===Y)delete J[z]},w6=(J)=>J instanceof Set?J.size===0:!J,Ff,Of=(J,z,Y,G,X)=>{let Z=Ff.get(J);if(!Z)return;rB(Z[z],(Q)=>{Q(Y,G,X)})},iC=(J,z,Y,G)=>{let{listener:X,errHandler:Z,rawEmitter:Q}=G,f=Ff.get(z),H;if(!Y.persistent){if(H=T6(J,Y,X,Z,Q),!H)return;return H.close.bind(H)}if(f)vZ(f,SG,X),vZ(f,Mf,Z),vZ(f,kX,Q);else{if(H=T6(J,Y,Of.bind(null,z,SG),Z,Of.bind(null,z,kX)),!H)return;H.on(Oz.ERROR,async(B)=>{let V=Of.bind(null,z,Mf);if(f)f.watcherUnusable=!0;if(sB&&B.code==="EPERM")try{await(await TC(J,"r")).close(),V(B)}catch(j){}else V(B)}),f={listeners:X,errHandlers:Z,rawEmitters:Q,watcher:H},Ff.set(z,f)}return()=>{if(mZ(f,SG,X),mZ(f,Mf,Z),mZ(f,kX,Q),w6(f.listeners))f.watcher.close(),Ff.delete(z),mC.forEach(nC(f)),f.watcher=void 0,Object.freeze(f)}},pB,lC=(J,z,Y,G)=>{let{listener:X,rawEmitter:Z}=G,Q=pB.get(z),f=Q&&Q.options;if(f&&(f.persistent<Y.persistent||f.interval>Y.interval))y6(z),Q=void 0;if(Q)vZ(Q,SG,X),vZ(Q,kX,Z);else Q={listeners:X,rawEmitters:Z,options:Y,watcher:SC(z,Y,(H,B)=>{rB(Q.rawEmitters,(j)=>{j(Oz.CHANGE,z,{curr:H,prev:B})});let V=H.mtimeMs;if(H.size!==B.size||V>B.mtimeMs||V===0)rB(Q.listeners,(j)=>j(J,H))})},pB.set(z,Q);return()=>{if(mZ(Q,SG,X),mZ(Q,kX,Z),w6(Q.listeners))pB.delete(z),y6(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var P6=k(()=>{Rf=process.platform,sB=Rf==="win32",EC=Rf==="darwin",wC=Rf==="linux",PC=Rf==="freebsd",E6=xC()==="OS400",T1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Oz=T1,vC={lstat:yC,stat:x6},mC=[SG,Mf,kX],cC=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"]),Ff=new Map;pB=new Map});import{EventEmitter as $C}from"events";import{stat as aC,Stats as Oc}from"fs";import{readdir as _C,stat as pC}from"fs/promises";import*as q1 from"path";function gf(J){return Array.isArray(J)?J:[J]}function zN(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=q1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!q1.isAbsolute(Y)}return!1};return()=>!1}function YN(J){if(typeof J!=="string")throw Error("string expected");J=q1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(n6,"/"),z)J="/"+J;return J}function h6(J,z,Y){let G=YN(z);for(let X=0;X<J.length;X++){let Z=J[X];if(Z(G,Y))return!0}return!1}function GN(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let G=gf(J).map((X)=>zN(X));if(z==null)return(X,Z)=>{return h6(G,X,Z)};return h6(G,z)}class l6{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!==d6&&J!==oC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await _C(Y)}catch(G){if(this._removeWatcher)this._removeWatcher(q1.dirname(Y),q1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Af,this.items=ZN,Object.freeze(this)}}class $6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let G=J;this.path=J=J.replace(JN,""),this.watchPath=G,this.fullWatchPath=q1.resolve(G),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?QN:qN}entryPath(J){return q1.join(this.watchPath,q1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function _6(J,z={}){let Y=new a6(z);return Y.add(J),Y}var eB="/",rC="//",d6=".",oC="..",sC="string",tC,n6,eC,JN,Jj=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),v6=(J)=>{let z=gf(J).flat();if(!z.every((Y)=>typeof Y===sC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(i6)},m6=(J)=>{let z=J.replace(tC,eB),Y=!1;if(z.startsWith(rC))Y=!0;if(z=z.replace(n6,eB),Y)z=eB+z;return z},i6=(J)=>m6(q1.normalize(m6(J))),c6=(J="")=>(z)=>{if(typeof z==="string")return i6(q1.isAbsolute(z)?z:q1.join(J,z));else return z},XN=(J,z)=>{if(q1.isAbsolute(J))return J;return q1.join(z,J)},ZN,QN="stat",qN="lstat",a6;var p6=k(()=>{S6();P6();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */tC=/\\/g,n6=/\/\//g,eC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,JN=/^\.[/\\]/;ZN=Object.freeze(new Set);a6=class a6 extends $C{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},G={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?gf(J.ignored):gf([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(E6)G.usePolling=!0;if(G.atomic===void 0)G.atomic=!G.usePolling;let X=process.env.CHOKIDAR_USEPOLLING;if(X!==void 0){let f=X.toLowerCase();if(f==="false"||f==="0")G.usePolling=!1;else if(f==="true"||f==="1")G.usePolling=!0;else G.usePolling=!!f}let Z=process.env.CHOKIDAR_INTERVAL;if(Z)G.interval=Number.parseInt(Z,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=Af,this._readyEmitted=!0,process.nextTick(()=>this.emit(T1.READY))},this._emitRaw=(...f)=>this.emit(T1.RAW,...f),this._boundRemove=this._remove.bind(this),this.options=G,this._nodeFsHandler=new tB(this),Object.freeze(G)}_addIgnoredPath(J){if(Jj(J)){for(let z of this._ignoredPaths)if(Jj(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(Jj(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:G}=this.options;this.closed=!1,this._closePromise=void 0;let X=v6(J);if(G)X=X.map((Z)=>{return XN(Z,G)});if(X.forEach((Z)=>{this._removeIgnoredPath(Z)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=X.length,Promise.all(X.map(async(Z)=>{let Q=await this._nodeFsHandler._addToNodeFs(Z,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((Z)=>{if(this.closed)return;Z.forEach((Q)=>{if(Q)this.add(q1.dirname(Q),q1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=v6(J),{cwd:Y}=this.options;return z.forEach((G)=>{if(!q1.isAbsolute(G)&&!this._closers.has(G)){if(Y)G=q1.join(Y,G);G=q1.resolve(G)}if(this._closePath(G),this._addIgnoredPath(G),this._watched.has(G))this._addIgnoredPath({path:G,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let G=Y();if(G instanceof Promise)J.push(G)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let X=(this.options.cwd?q1.relative(this.options.cwd,Y):Y)||d6;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==T1.ERROR)this.emit(T1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let G=this.options;if(sB)z=q1.normalize(z);if(G.cwd)z=q1.relative(G.cwd,z);let X=[z];if(Y!=null)X.push(Y);let Z=G.awaitWriteFinish,Q;if(Z&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(G.atomic){if(J===T1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((f,H)=>{this.emit(...f),this.emit(T1.ALL,...f),this._pendingUnlinks.delete(H)})},typeof G.atomic==="number"?G.atomic:100),this;if(J===T1.ADD&&this._pendingUnlinks.has(z))J=T1.CHANGE,this._pendingUnlinks.delete(z)}if(Z&&(J===T1.ADD||J===T1.CHANGE)&&this._readyEmitted){let f=(H,B)=>{if(H)J=T1.ERROR,X[0]=H,this.emitWithAll(J,X);else if(B){if(X.length>1)X[1]=B;else X.push(B);this.emitWithAll(J,X)}};return this._awaitWriteFinish(z,Z.stabilityThreshold,J,f),this}if(J===T1.CHANGE){if(!this._throttle(T1.CHANGE,z,50))return this}if(G.alwaysStat&&Y===void 0&&(J===T1.ADD||J===T1.ADD_DIR||J===T1.CHANGE)){let f=G.cwd?q1.join(G.cwd,z):z,H;try{H=await pC(f)}catch(B){}if(!H||this.closed)return;X.push(H)}return this.emitWithAll(J,X),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(T1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let G=this._throttled.get(J);if(!G)throw Error("invalid throttle");let X=G.get(z);if(X)return X.count++,!1;let Z,Q=()=>{let H=G.get(z),B=H?H.count:0;if(G.delete(z),clearTimeout(Z),H)clearTimeout(H.timeoutObject);return B};Z=setTimeout(Q,Y);let f={timeoutObject:Z,clear:Q,count:0};return G.set(z,f),f}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,G){let X=this.options.awaitWriteFinish;if(typeof X!=="object")return;let Z=X.pollInterval,Q,f=J;if(this.options.cwd&&!q1.isAbsolute(J))f=q1.join(this.options.cwd,J);let H=new Date,B=this._pendingWrites;function V(j){aC(f,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")G(K);return}let A=Number(new Date);if(j&&L.size!==j.size)B.get(J).lastChange=A;let O=B.get(J);if(A-O.lastChange>=z)B.delete(J),G(void 0,L);else Q=setTimeout(V,Z,L)})}if(!B.has(J))B.set(J,{lastChange:H,cancelWait:()=>{return B.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,Z)}_isIgnored(J,z){if(this.options.atomic&&eC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,X=(this.options.ignored||[]).map(c6(Y)),Q=[...[...this._ignoredPaths].map(c6(Y)),...X];this._userIgnored=GN(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new $6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=q1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new l6(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let G=q1.join(J,z),X=q1.resolve(G);if(Y=Y!=null?Y:this._watched.has(G)||this._watched.has(X),!this._throttle("remove",G,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(G).getChildren().forEach((j)=>this._remove(G,j));let f=this._getWatchedDir(J),H=f.has(z);if(f.remove(z),this._symlinkPaths.has(X))this._symlinkPaths.delete(X);let B=G;if(this.options.cwd)B=q1.relative(this.options.cwd,G);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===T1.ADD)return}this._watched.delete(G),this._watched.delete(X);let V=Y?T1.UNLINK_DIR:T1.UNLINK;if(H&&!this._isIgnored(G))this._emit(V,G);this._closePath(G)}_closePath(J){this._closeFile(J);let z=q1.dirname(J);this._getWatchedDir(z).remove(q1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:T1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},G=I6(J,Y);return this._streams.add(G),G.once(u6,()=>{G=void 0}),G.once(oB,()=>{if(G)this._streams.delete(G),G=void 0}),G}}});import{mkdirSync as fN,statSync as HN}from"fs";import{basename as r6,dirname as BN,join as jN}from"path";function Cf(J){if(J.debounceMs<=0)return()=>{};let z=BN(J.filePath),Y=new Set([r6(J.filePath),...J.matchBasenames??[]]),G=null,X=null,Z=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},f=()=>{if(G)clearTimeout(G);G=setTimeout(()=>{G=null,Q()},J.debounceMs),G.unref?.()},H=(V)=>{if(!Y.has(r6(V)))return;f()},B=(V)=>{try{let j=HN(jN(z,V));return`${j.mtimeMs}:${j.size}`}catch{return null}};try{fN(z,{recursive:!0});let V=new Map;for(let j of Y)V.set(j,B(j));X=_6(z,{depth:0,ignoreInitial:!0}),X.on("add",H),X.on("change",H),X.on("unlink",H),X.on("error",J.onError),X.once("ready",()=>{for(let j of Y)if(B(j)!==V.get(j)){f();break}})}catch(V){J.onError(V)}return()=>{if(Z)return;if(Z=!0,G)clearTimeout(G),G=null;let V=X;X=null,V?.close().catch(J.onError)}}var zj=k(()=>{p6()});import{homedir as WN}from"os";import{basename as VN,join as KN}from"path";function Gj(J=process.env.KOBE_HOME_DIR??WN()){return KN(J,".kobe","settings","keybindings.yaml")}function o6(J,z={}){let Y=z.debounceMs??Yj;if(Y<=0)return()=>{};let G=z.path??Gj(),X=VN(G),Z=X.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),Cf({filePath:G,matchBasenames:[X,Z],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(H){y1("keybindings-watcher",H)}},onError:(H)=>y1("keybindings-watcher",H)})}var Yj=200;var s6=k(()=>{zj()});class Xj{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??UN,this.log=J.log??Pz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var UN=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var t6=()=>{};import{spawn as DN}from"child_process";function CN(J,z,Y){return new Promise((G)=>{let X="",Z="",Q=!1,f=(B,V)=>{if(Q)return;Q=!0,G({status:B,stdout:X,stderr:Z,spawnError:V})},H=DN("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});H.stdout?.on("data",(B)=>{X+=String(B)}),H.stderr?.on("data",(B)=>{Z+=String(B)}),H.on("error",()=>f(null,!Y.aborted)),H.on("close",(B)=>f(B,!1))})}function kN(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if($1(J.repo)||$1(J.worktreePath))return!1;return!0}async function bN(J,z){let Y=z.tickMs??cZ,G=z.rand,X={tickMs:Y,settledMs:MN,noPrMs:LN,noRemoteMs:AN,failureBaseMs:FN,failureCapMs:ON,jitterRatio:RN},Z=[];for(let Q of J.listTasks()){if(!kN(Q)){z.schedule.delete(Q.id);continue}let f=z.schedule.get(Q.id);if(f&&z.now<f.nextAllowedAt)continue;let H=f?.failures??0;try{let B=await z.run(Q.worktreePath,Q.branch);if(B.kind==="error"){Pz("pr-status-poller",`gh pr view failed (${B.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,OZ({kind:"error",error:B.error},H,z.now,X,G));continue}if(B.kind==="empty"){z.schedule.set(Q.id,OZ({kind:"empty"},H,z.now,X,G));continue}let V=bV(B.view,z.at),j=J.getTask(Q.id);if(!j){z.schedule.delete(Q.id);continue}if(!Aq(j.prStatus,V??void 0))await J.setPRStatus(Q.id,V),Z.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,OZ({kind:"pr",settled:K},H,z.now,X,G))}catch(B){y1("pr-status-poller",B),z.schedule.set(Q.id,OZ({kind:"error",error:"network"},H,z.now,X,G))}}return Z}function e6(J,z=cZ,Y,G=NN){if(z<=0)return()=>{};let X=new Map,Z=!1,f=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,bN(J,{run:G,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((H)=>y1("pr-status-poller",H)).finally(()=>{Z=!1})},z);return f.unref?.(),()=>clearInterval(f)}var cZ=30000,LN=300000,MN=600000,FN,ON=900000,AN=1800000,RN=0.2,gN=1e4,NN=async(J,z)=>{let Y=new AbortController,G=!1,X=setTimeout(()=>{G=!0,Y.abort()},gN);try{let Z=await CN(["pr","view",z,"--json",kV],J,Y.signal);if(Z.status===0&&!G)try{let Q=JSON.parse(Z.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return h8({parseError:!0})}return h8({spawnError:Z.spawnError,timedOut:G,exitCode:Z.status,stderr:Z.stderr})}finally{clearTimeout(X)}};var JK=k(()=>{v8();O1();FN=cZ});function TN(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function xN(J,z,Y,G){let X=await oG(z,J),Z=await Y.latestCompletion(J);return{mtimeMs:X,completionId:Z?.id??null,completionAt:Z?.timestampMs??0}}function uN(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if($1(Y.repo)||$1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??a1)}return z}class zK{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=uN(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,G]of J)this.maybeCollect(Y,G)}catch(J){y1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:VZ(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=VZ(z);let G=this.options.cadence??{timeoutMs:IN,slowRetryMs:SN,minIntervalMs:yN},X=this.options.run??xN,Z=Y;zX(Z,G,(Q)=>X(J,Z.vendor,Z.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==Z)return;if(Z.value&&TN(Z.value,Q))return;Z.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function YK(J,z,Y=Zj,G){if(Y<=0)return()=>{};let X=new zK(J,z,{hasSubscribers:G});X.tick();let Z=setInterval(()=>X.tick(),Y);return Z.unref?.(),()=>{clearInterval(Z),X.stop()}}var Zj=1500,IN=4000,SN=60000,yN=1500;var GK=k(()=>{Gq();YX();Xq();O1();sJ()});import{readFileSync as EN}from"fs";import{homedir as wN}from"os";import{basename as PN,join as hN}from"path";function qj(J=process.env.KOBE_HOME_DIR??wN()){return hN(J,".config","kobe","state.json")}function XK(J){let z={};try{let B=JSON.parse(EN(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",G=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&mN.includes(z.focusAccent)?z.focusAccent:null,Z=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,f=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,H=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:G,focusAccent:X,locale:H,sortMode:Z,keysCollapsed:Q,projectFilter:f}}function cN(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 ZK(J,z={}){let Y=z.debounceMs??Qj;if(Y<=0)return()=>{};let G=z.pollMs??vN,X=z.statePath??qj(),Z=PN(X),Q=XK(X);return J.publish("ui-prefs",Q),Cf({filePath:X,matchBasenames:[Z],debounceMs:Y,pollMs:G,onTrigger:()=>{try{let H=XK(X);if(cN(Q,H))return;Q=H,J.publish("ui-prefs",H)}catch(H){y1("ui-prefs-watcher",H)}},onError:(H)=>y1("ui-prefs-watcher",H)})}var Qj=200,vN=250,mN;var QK=k(()=>{zj();mN=["primary","success","info"]});function bX(J){return yG.includes(J)?J:"auto"}var yG,qK,qY="editor.kind",mY="editor.customCommand",Nf="auto";var kf=k(()=>{yG=["auto","vim","nvim","nano","emacs","custom"],qK=["nvim","vim","emacs","nano"]});function xG(J){return J==="taskpanel"?"taskpanel":"chattab"}var fY="settings.surface",TG="chattab";function nJ(J=process.env){return{...J,...fj}}var fj;var cY=k(()=>{fj={GIT_OPTIONAL_LOCKS:"0"}});async function IX(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let G=(Y.execForPath??XY)(J),X=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,Z=!1,Q=X?setTimeout(()=>{Z=!0,X.abort()},Y.timeoutMs):null,f=X&&Y.signal?AbortSignal.any([X.signal,Y.signal]):X?.signal??Y.signal,H;try{H=await G.run(["git",...z],{cwd:J,env:fj,signal:f})}catch(B){if(Q)clearTimeout(Q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(Q)clearTimeout(Q);if(Z&&H.exitCode===-1&&!H.stderr)return{stdout:H.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:H.stdout,stderr:H.stderr,status:H.exitCode}}function dN(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((G)=>G===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function fK(J,z,Y={}){let G=dN(J,z);if(!G)return null;let X=(Y.execForPath??XY)(J);try{return await X.readFile(G)}catch{return null}}var bf=k(()=>{Vz();cY()});import{statSync as nN}from"fs";async function dZ(J,z){let Y=await IX(J,z,{timeoutMs:iN}),G=Y.status??-1;return{ok:G===0,stdout:Y.stdout,stderr:Y.stderr,code:G}}function $N(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 HK(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let G of Y){if(!G.startsWith("diff --git"))continue;let X=null,Z=G.match(/^\+\+\+ b\/(.*)$/m);if(Z&&Z[1]!=="/dev/null")X=Z[1];else{let Q=G.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)X=Q[1]}if(!X)continue;z.set(aN(X),G.endsWith(`
|
|
64
|
+
`}function Pz(J,z){process.stderr.write(mg(J,z))}function H6(J=(z)=>process.stderr.write(z)){if(SB||IB)return;SB=(z)=>J(q6("unhandledRejection",z)),IB=(z)=>J(q6("uncaughtException",z)),process.on("unhandledRejection",SB),process.on("uncaughtException",IB)}var SB,IB;async function cg(J,z=sG){let Y=[];for(let G of J.listTasks()){if(G.archived||G.title!==Tz||!G.worktreePath)continue;try{let X=await z(G.worktreePath,G.vendor??a1);if(!X)continue;let Z=J.getTask(G.id);if(!Z||Z.title!==Tz)continue;await J.setTitle(G.id,X),Y.push({id:G.id,title:X})}catch(X){y1("auto-title-poller",X)}}return Y}function B6(J,z=yB,Y){if(z<=0)return()=>{};let G=!1,Z=setInterval(()=>{if(Y&&!Y())return;if(G)return;G=!0,cg(J).then(()=>Z6(J)).catch((Q)=>y1("auto-title-poller",Q)).finally(()=>{G=!1})},z);return Z.unref?.(),()=>clearInterval(Z)}var yB=4000;var j6=k(()=>{fq();RZ();Q6();sJ()});class TB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class xB{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let G of this.sinks)G(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function W6(J,z,Y=Cq){if(!Y())return"skipped";let G=J.getTask(z);if(!G)return"skipped";if((G.kind??"task")==="main"||G.archived)return"skipped";if(G.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var V6=k(()=>{CZ()});import{createHash as dg}from"crypto";import{homedir as ng}from"os";import vY from"path";function _g(){return vY.join(process.env.KOBE_HOME_DIR??ng(),".kobe")}function pg(J){let Y=(vY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=dg("sha1").update(vY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}function rg(J){if(!vY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return vY.join(_g(),ig,pg(J))}function og(J){if(!vY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[rg(J),...ag.map((z)=>vY.join(J,z))]}function hY(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function K6(J,z){return z===J||z.startsWith(`${J}/`)}function U6(J,z){let Y=hY(z),G,X=-1;for(let Z of J){if(!Z.worktreePath)continue;let Q=hY(Z.worktreePath);if(K6(Q,Y)&&Q.length>X)X=Q.length,G=Z.id}return G}function uB(J,z){let Y=hY(z),G,X=-1;for(let Z of J){if(!Z.repo)continue;let Q=hY(Z.repo);if(K6(Q,Y)&&Q.length>X)X=Q.length,G=Q}return G}function D6(J,z){let Y=hY(z),G=new Set,X=new Set;for(let Z of J){if(Z.repo)G.add(hY(Z.repo));if(Z.worktreePath)X.add(hY(Z.worktreePath))}for(let Z of G)for(let Q of og(Z).map(hY)){let f=`${Q}/`;if(!Y.startsWith(f))continue;let B=Y.slice(f.length).split("/")[0];if(!B)continue;let V=`${f}${B}`;if(X.has(V))return;return{repo:Z,worktreePath:V}}return}var ig="worktrees",lg=".kobe/worktrees",$g=".claude/worktrees",ag;var L6=k(()=>{ag=[lg,$g]});function PB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function PZ(J,z,Y,G){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(hB(Y),G)}function hZ(){return new Map([{name:"hello",handle(z,Y){let G=typeof z.protocolVersion==="number"?z.protocolVersion:_J,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:G;if(!EQ({localVersion:_J,localMin:AY,remoteVersion:G,remoteMin:X}))throw Error(`daemon is protocol v${_J} (min v${AY}); this client is v${G} (min v${X}). Upgrade your kobe.`);return{protocolVersion:_J,minProtocolVersion:AY,kobeVersion:o0,capabilities:[...oH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Qz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:o0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Qz)}}},{name:"task.get",handle(z,Y){let G=A1(z,"taskId"),X=Y.orch.getTask(G);if(!X)throw Error(`task not found: ${G}`);return{task:Qz(X)}}},{name:"task.create",async handle(z,Y){let G=A1(z,"repo"),X=await Y.orch.createTask({repo:G,title:Jz(z,"title"),branch:Jz(z,"branch"),baseRef:Jz(z,"baseRef"),vendor:wB(z,"vendor"),modelEffort:Jz(z,"effort")});return{taskId:X.id,task:Qz(X)}}},{name:"task.archive",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setArchived(G,EB(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setTitle(G,A1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setBranch(G,A1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let G=A1(z,"taskId"),X=wB(z,"vendor");if(!X)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(G,X),{}}},{name:"task.delete",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.deleteTask(G,{force:EB(z,"force")}),Y.activity.clearTask(G),{}}},{name:"task.pin",async handle(z,Y){let G=A1(z,"taskId");return await Y.orch.setPinned(G,EB(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"direction");if(X!=="up"&&X!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(G,X==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"status");if(!zV(X))throw Error("status must be a TaskStatus");let Z=X==="done"?Y.orch.getTask(G):void 0,Q=Z?.status;if(await Y.orch.setStatus(G,X),X==="done"&&Q!=="done"&&Z)try{let f=await Y.issues.mirrorTaskDone(Z.repo,G);if(f)Y.bus.publish("issue.snapshot",f)}catch(f){y1("issue-done-mirror",f)}return{}}},{name:"task.reorder",async handle(z,Y){let G=z.moves;if(!Array.isArray(G)||G.length===0)throw Error("moves must be a non-empty array");if(G.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let X=G.map((Z)=>{if(typeof Z!=="object"||Z===null)throw Error("each move needs taskId and position");let Q=Z,f=A1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:f,position:H}});return await Y.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Y){let G=A1(z,"repo"),X=await Y.orch.ensureMainTask(G);return{task:Qz(X)}}},{name:"project.forget",async handle(z,Y){let G=A1(z,"repo");return await Y.orch.forgetProject(G),{}}},{name:"task.ensureWorktree",async handle(z,Y){let G=A1(z,"taskId");Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"running"});try{let X=await Y.orch.ensureWorktree(G);return Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let G=A1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(G)}}},{name:"worktree.adopt",async handle(z,Y){let G=await Y.orch.adoptWorktree({repo:A1(z,"repo"),worktreePath:A1(z,"worktreePath"),branch:Jz(z,"branch"),vendor:wB(z,"vendor"),title:Jz(z,"title"),ifExists:Jz(z,"ifExists")==="return"?"return":"error"});return{task:Qz(G)}}},{name:"worktree.reconcile",async handle(z,Y){let G=A1(z,"cwd"),X=A1(z,"worktreePath"),Z=uB(Y.orch.listTasks(),G)??uB(Y.orch.listTasks(),X);if(!Z)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:Z,worktreePath:X,ifExists:"return"})).id}}catch(Q){return y1("worktree-created",Q),{adopted:!1}}}},{name:"task.setActive",async handle(z,Y){let G=Jz(z,"taskId")??null;return await Y.orch.setActiveTask(G),Y.bus.publish("active-task",{taskId:G}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(A1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let G=await Y.issues.mutate(A1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",G),G}},{name:"session.deliver",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"text"),Z=Jz(z,"source");if(Z!==void 0&&Z!=="note"&&Z!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(G))throw Error(`task not found: ${G}`);return Y.bus.publish("session.deliver",{taskId:G,text:X,at:Date.now(),source:Z??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let G=A1(z,"taskId"),X=A1(z,"text"),Z=Y.orch.getTask(G);if(!Z)throw Error(`task not found: ${G}`);let Q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===Z.repo&&!H.archived);if(!Q||Q.id===Z.id)return{ok:!0,routed:!1};let f=Z.title||Z.branch||G;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${f}" (task ${G}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let G=A1(z,"kind");if(!Zq(G))throw Error(`unknown engine event kind: ${G}`);let X=Jz(z,"taskId"),Z=Jz(z,"cwd");if(!X&&Z&&G==="session-start"){let H=D6(Y.orch.listTasks(),Z);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){y1("worktree-autosync",B)}}let Q=X??(Z?U6(Y.orch.listTasks(),Z):void 0);if(!Q)return{};let f=sg(z);if(Y.activity.report(Q,G,f),G==="turn-start")W6(Y.orch,Q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>y1("status-rules",H));return{}}}].map((z)=>[z.name,z]))}function hB(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function A1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Jz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function EB(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function wB(J,z){let Y=Jz(J,z);return Y&&Y.trim().length>0?Y:void 0}function sg(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,G={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")G.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")G.waiting=Y.waiting;if(typeof Y.note==="string")G.note=Y.note;return Object.keys(G).length>0?G:void 0}var Kf=k(()=>{Qq();V6();sJ();FJ();L6();GG()});import{execFile as tg}from"child_process";import{mkdir as eg,readFile as JC,realpath as M6,rename as zC,stat as YC,writeFile as GC}from"fs/promises";import{homedir as XC}from"os";import{dirname as ZC,isAbsolute as QC,join as qC,resolve as F6}from"path";import{promisify as fC}from"util";function HC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function Df(J=process.env.KOBE_HOME_DIR??XC()){return qC(J,".kobe","issues.json")}function A6(J){return typeof J==="string"&&O6.includes(J)}function BC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:A6(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function jC(){return{version:1,repos:{}}}function WC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function VC(J){let{stdout:z}=await iB("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return M6(QC(Y)?Y:F6(J,Y))}async function KC(J){let{stdout:z}=await iB("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function UC(J){let{stdout:z}=await iB("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((G)=>G.startsWith("worktree "))?.slice(9).trim();return Y?M6(Y):KC(J)}async function vB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=F6(J);if(!(await YC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[G,X]=await Promise.all([UC(z),VC(z)]);return{repoRoot:G,repoKey:X}}catch(G){if(HC(G))throw Error("repoRoot is not a git repository");throw G}}async function mB(J){try{let z=JSON.parse(await JC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[G,X]of Object.entries(z.repos)){if(!X||typeof X!=="object")continue;let Z=X;Y[G]={repoRoot:typeof Z.repoRoot==="string"?Z.repoRoot:"",nextId:typeof Z.nextId==="number"?Z.nextId:1,issues:Array.isArray(Z.issues)?Z.issues.map(BC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return jC();throw z}}async function cB(J,z){await eg(ZC(J),{recursive:!0});let Y=`${J}.tmp`;await GC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
+
`,"utf8"),await zC(Y,J)}function dB(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function nB(J,z){let G=(Uf.get(J)??Promise.resolve()).then(z),X=G.then(()=>{return},()=>{return});return Uf.set(J,X),X.then(()=>{if(Uf.get(J)===X)Uf.delete(J)}),G}class Lf{path;constructor(J=Df()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await vB(J);return nB(this.path,async()=>{let G=await mB(this.path),X=G.repos[Y]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await cB(this.path,G);return dB(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:G}=await vB(J);if(!z)return null;return nB(this.path,async()=>{let X=await mB(this.path),Z=X.repos[G];if(!Z)return null;let Q=Z.issues.find((f)=>f.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",Z.repoRoot=Y,await cB(this.path,X),dB(Y,Z)})}async mutate(J,z){let{repoRoot:Y,repoKey:G}=await vB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return nB(this.path,async()=>{let X=await mB(this.path),Z=X.repos[G];if(!Z)Z={repoRoot:Y,nextId:1,issues:[]},X.repos[G]=Z;Z.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");Z.issues=[{id:Z.nextId,title:Q.title,status:"open",created:WC(),body:typeof Q.body==="string"?Q.body:""},...Z.issues],Z.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!A6(Q.status))throw Error(`invalid status: must be one of ${O6.join(", ")}`);let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.status=Q.status}else if(Q.type==="update"){if(typeof Q.id!=="number")throw Error("update requires a numeric id");if(Q.title!==void 0&&(typeof Q.title!=="string"||Q.title.trim().length===0))throw Error("title must be a non-empty string");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")f.title=Q.title;if(typeof Q.body==="string")f.body=Q.body}else if(Q.type==="link"){if(typeof Q.id!=="number")throw Error("link requires a numeric id");if(typeof Q.taskId!=="string"||Q.taskId.length===0)throw Error("link requires a non-empty taskId");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let f=Z.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let f=Z.issues.filter((H)=>H.id!==Q.id);if(f.length===Z.issues.length)throw Error(`no issue #${Q.id}`);Z.issues=f}else throw Error(`unknown op type: ${Q.type}`);return await cB(this.path,X),dB(Y,Z)})}}var iB,O6,Uf;var lB=k(()=>{iB=fC(tg),O6=["open","doing","hold","done"];Uf=new Map});import{lstat as R6,readdir as DC,realpath as LC,stat as MC}from"fs/promises";import{join as FC,relative as OC,resolve as g6,sep as AC}from"path";import{Readable as RC}from"stream";function S6(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=dJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!C6.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${C6.join(", ")}`);return z.root=J,new aB(z)}var dJ,$B,b6="READDIRP_RECURSIVE_ERROR",gC,C6,CC,NC,kC=(J)=>gC.has(J.code),bC,N6=(J)=>!0,k6=(J)=>{if(J===void 0)return N6;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((G)=>Y.basename===G)}return N6},aB;var I6=k(()=>{dJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},$B={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:dJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze($B);gC=new Set(["ENOENT","EPERM","EACCES","ELOOP",b6]),C6=[dJ.DIR_TYPE,dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE,dJ.FILE_TYPE],CC=new Set([dJ.DIR_TYPE,dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE]),NC=new Set([dJ.EVERYTHING_TYPE,dJ.FILE_DIR_TYPE,dJ.FILE_TYPE]),bC=process.platform==="win32";aB=class aB extends RC{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={...$B,...J},{root:Y,type:G}=z;this._fileFilter=k6(z.fileFilter),this._directoryFilter=k6(z.directoryFilter);let X=z.lstat?R6:MC;if(bC)this._stat=(Z)=>X(Z,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:$B.depth,this._wantsDir=G?CC.has(G):!1,this._wantsFile=G?NC.has(G):!1,this._wantsEverything=G===dJ.EVERYTHING_TYPE,this._root=g6(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:G,depth:X}=z,Z=Y.splice(0,J).map((f)=>this._formatEntry(f,G)),Q=await Promise.all(Z);for(let f of Q){if(!f)continue;if(this.destroyed)return;let H=await this._getEntryType(f);if(H==="directory"&&this._directoryFilter(f)){if(X<=this._maxDepth)this.parents.push(this._exploreDir(f.fullPath,X+1));if(this._wantsDir)this.push(f),J--}else if((H==="file"||this._includeAsFile(f))&&this._fileFilter(f)){if(this._wantsFile)this.push(f),J--}}}else{let G=this.parents.pop();if(!G){this.push(null);break}if(this.parent=await G,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await DC(J,this._rdOptions)}catch(G){this._onError(G)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,G=this._isDirent?J.name:J;try{let X=g6(FC(z,G));Y={path:OC(this._root,X),fullPath:X,basename:G},Y[this._statsProp]=this._isDirent?J:await this._stat(X)}catch(X){this._onError(X);return}return Y}_onError(J){if(kC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let G=await LC(Y),X=await R6(G);if(X.isFile())return"file";if(X.isDirectory()){let Z=G.length;if(Y.startsWith(G)&&Y.substr(Z,1)===AC){let Q=Error(`Circular symlink detected: "${Y}" points to "${G}"`);return Q.code=b6,this._onError(Q)}return"directory"}}catch(G){return this._onError(G),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as SC,unwatchFile as y6,watchFile as IC}from"fs";import{realpath as _B,lstat as yC,open as TC,stat as x6}from"fs/promises";import{type as xC}from"os";import*as u1 from"path";function T6(J,z,Y,G,X){let Z=(Q,f)=>{if(Y(J),X(Q,f,{watchedPath:J}),f&&J!==f)Of(u1.resolve(J,f),IG,u1.join(J,f))};try{return SC(J,{persistent:z.persistent},Z)}catch(Q){G(Q);return}}class tB{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,G=u1.dirname(J),X=u1.basename(J);this.fsw._getWatchedDir(G).add(X);let Q=u1.resolve(J),f={persistent:Y.persistent};if(!z)z=Af;let H;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;f.interval=B&&dC(X)?Y.binaryInterval:Y.interval,H=lC(J,Q,f,{listener:z,rawEmitter:this.fsw._emitRaw})}else H=iC(J,Q,f,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return H}_handleFile(J,z,Y){if(this.fsw.closed)return;let G=u1.dirname(J),X=u1.basename(J),Z=this.fsw._getWatchedDir(G),Q=z;if(Z.has(X))return;let f=async(B,V)=>{if(!this.fsw._throttle(hC,J,5))return;if(!V||V.mtimeMs===0)try{let j=await x6(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=j;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,j);if((EC||wC||PC)&&Q.ino!==j.ino){this.fsw._closeFile(B),Q=j;let A=this._watchWithNodeFs(J,f);if(A)this.fsw._addPathCloser(B,A)}else Q=j}catch(j){this.fsw._remove(G,X)}else if(Z.has(X)){let{atimeMs:j,mtimeMs:K}=V;if(!j||j<=K||K!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,V);Q=V}},H=this._watchWithNodeFs(J,f);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Oz.ADD,J,0))return;this.fsw._emit(Oz.ADD,J,z)}return H}async _handleSymlink(J,z,Y,G){if(this.fsw.closed)return;let X=J.fullPath,Z=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await _B(Y)}catch(f){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(Z.has(G)){if(this.fsw._symlinkPaths.get(X)!==Q)this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Oz.CHANGE,Y,J.stats)}else Z.add(G),this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Oz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Y,G,X,Z,Q){J=u1.join(J,"");let f=G?`${J}:${G}`:J;if(Q=this.fsw._throttle("readdir",f,1000),!Q)return;let H=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(j)=>Y.filterPath(j),directoryFilter:(j)=>Y.filterDir(j)});if(!V)return;return V.on(uC,async(j)=>{if(this.fsw.closed){V=void 0;return}let K=j.path,L=u1.join(J,K);if(B.add(K),j.stats.isSymbolicLink()&&await this._handleSymlink(j,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===G||!G&&!H.has(K))this.fsw._incrReadyCount(),L=u1.join(X,u1.relative(X,L)),this._addToNodeFs(L,z,Y,Z+1)}).on(Oz.ERROR,this._boundHandleError),new Promise((j,K)=>{if(!V)return K();V.once(oB,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(j(void 0),H.getChildren().filter((A)=>{return A!==J&&!B.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,G,X,Z,Q)})})}async _handleDir(J,z,Y,G,X,Z,Q){let f=this.fsw._getWatchedDir(u1.dirname(J)),H=f.has(u1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!X&&!H)this.fsw._emit(Oz.ADD_DIR,J,z);f.add(u1.basename(J)),this.fsw._getWatchedDir(J);let B,V,j=this.fsw.options.depth;if((j==null||G<=j)&&!this.fsw._symlinkPaths.has(Q)){if(!X){if(await this._handleRead(J,Y,Z,X,J,G,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,Z,X,J,G,B)})}return V}async _addToNodeFs(J,z,Y,G,X){let Z=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return Z(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(f)=>Y.filterPath(f),Q.filterDir=(f)=>Y.filterDir(f);try{let f=await vC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,f))return Z(),!1;let H=this.fsw.options.followSymlinks,B;if(f.isDirectory()){let V=u1.resolve(J),j=H?await _B(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(Q.watchPath,f,z,G,X,Q,j),this.fsw.closed)return;if(V!==j&&j!==void 0)this.fsw._symlinkPaths.set(V,j)}else if(f.isSymbolicLink()){let V=H?await _B(J):J;if(this.fsw.closed)return;let j=u1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(j).add(Q.watchPath),this.fsw._emit(Oz.ADD,Q.watchPath,f),B=await this._handleDir(j,f,z,G,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(u1.resolve(J),V)}else B=this._handleFile(Q.watchPath,f,z);if(Z(),B)this.fsw._addPathCloser(J,B);return!1}catch(f){if(this.fsw._handleError(f))return Z(),J}}}var uC="data",oB="end",u6="close",Af=()=>{},Rf,sB,EC,wC,PC,E6,T1,Oz,hC="watch",vC,IG="listeners",Mf="errHandlers",kX="rawEmitters",mC,cC,dC=(J)=>cC.has(u1.extname(J).slice(1).toLowerCase()),rB=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},vZ=(J,z,Y)=>{let G=J[z];if(!(G instanceof Set))J[z]=G=new Set([G]);G.add(Y)},nC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},mZ=(J,z,Y)=>{let G=J[z];if(G instanceof Set)G.delete(Y);else if(G===Y)delete J[z]},w6=(J)=>J instanceof Set?J.size===0:!J,Ff,Of=(J,z,Y,G,X)=>{let Z=Ff.get(J);if(!Z)return;rB(Z[z],(Q)=>{Q(Y,G,X)})},iC=(J,z,Y,G)=>{let{listener:X,errHandler:Z,rawEmitter:Q}=G,f=Ff.get(z),H;if(!Y.persistent){if(H=T6(J,Y,X,Z,Q),!H)return;return H.close.bind(H)}if(f)vZ(f,IG,X),vZ(f,Mf,Z),vZ(f,kX,Q);else{if(H=T6(J,Y,Of.bind(null,z,IG),Z,Of.bind(null,z,kX)),!H)return;H.on(Oz.ERROR,async(B)=>{let V=Of.bind(null,z,Mf);if(f)f.watcherUnusable=!0;if(sB&&B.code==="EPERM")try{await(await TC(J,"r")).close(),V(B)}catch(j){}else V(B)}),f={listeners:X,errHandlers:Z,rawEmitters:Q,watcher:H},Ff.set(z,f)}return()=>{if(mZ(f,IG,X),mZ(f,Mf,Z),mZ(f,kX,Q),w6(f.listeners))f.watcher.close(),Ff.delete(z),mC.forEach(nC(f)),f.watcher=void 0,Object.freeze(f)}},pB,lC=(J,z,Y,G)=>{let{listener:X,rawEmitter:Z}=G,Q=pB.get(z),f=Q&&Q.options;if(f&&(f.persistent<Y.persistent||f.interval>Y.interval))y6(z),Q=void 0;if(Q)vZ(Q,IG,X),vZ(Q,kX,Z);else Q={listeners:X,rawEmitters:Z,options:Y,watcher:IC(z,Y,(H,B)=>{rB(Q.rawEmitters,(j)=>{j(Oz.CHANGE,z,{curr:H,prev:B})});let V=H.mtimeMs;if(H.size!==B.size||V>B.mtimeMs||V===0)rB(Q.listeners,(j)=>j(J,H))})},pB.set(z,Q);return()=>{if(mZ(Q,IG,X),mZ(Q,kX,Z),w6(Q.listeners))pB.delete(z),y6(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var P6=k(()=>{Rf=process.platform,sB=Rf==="win32",EC=Rf==="darwin",wC=Rf==="linux",PC=Rf==="freebsd",E6=xC()==="OS400",T1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Oz=T1,vC={lstat:yC,stat:x6},mC=[IG,Mf,kX],cC=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"]),Ff=new Map;pB=new Map});import{EventEmitter as $C}from"events";import{stat as aC,Stats as Oc}from"fs";import{readdir as _C,stat as pC}from"fs/promises";import*as q1 from"path";function gf(J){return Array.isArray(J)?J:[J]}function zN(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=q1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!q1.isAbsolute(Y)}return!1};return()=>!1}function YN(J){if(typeof J!=="string")throw Error("string expected");J=q1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(n6,"/"),z)J="/"+J;return J}function h6(J,z,Y){let G=YN(z);for(let X=0;X<J.length;X++){let Z=J[X];if(Z(G,Y))return!0}return!1}function GN(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let G=gf(J).map((X)=>zN(X));if(z==null)return(X,Z)=>{return h6(G,X,Z)};return h6(G,z)}class l6{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!==d6&&J!==oC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await _C(Y)}catch(G){if(this._removeWatcher)this._removeWatcher(q1.dirname(Y),q1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Af,this.items=ZN,Object.freeze(this)}}class $6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let G=J;this.path=J=J.replace(JN,""),this.watchPath=G,this.fullWatchPath=q1.resolve(G),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?QN:qN}entryPath(J){return q1.join(this.watchPath,q1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function _6(J,z={}){let Y=new a6(z);return Y.add(J),Y}var eB="/",rC="//",d6=".",oC="..",sC="string",tC,n6,eC,JN,Jj=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),v6=(J)=>{let z=gf(J).flat();if(!z.every((Y)=>typeof Y===sC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(i6)},m6=(J)=>{let z=J.replace(tC,eB),Y=!1;if(z.startsWith(rC))Y=!0;if(z=z.replace(n6,eB),Y)z=eB+z;return z},i6=(J)=>m6(q1.normalize(m6(J))),c6=(J="")=>(z)=>{if(typeof z==="string")return i6(q1.isAbsolute(z)?z:q1.join(J,z));else return z},XN=(J,z)=>{if(q1.isAbsolute(J))return J;return q1.join(z,J)},ZN,QN="stat",qN="lstat",a6;var p6=k(()=>{I6();P6();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */tC=/\\/g,n6=/\/\//g,eC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,JN=/^\.[/\\]/;ZN=Object.freeze(new Set);a6=class a6 extends $C{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},G={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?gf(J.ignored):gf([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(E6)G.usePolling=!0;if(G.atomic===void 0)G.atomic=!G.usePolling;let X=process.env.CHOKIDAR_USEPOLLING;if(X!==void 0){let f=X.toLowerCase();if(f==="false"||f==="0")G.usePolling=!1;else if(f==="true"||f==="1")G.usePolling=!0;else G.usePolling=!!f}let Z=process.env.CHOKIDAR_INTERVAL;if(Z)G.interval=Number.parseInt(Z,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=Af,this._readyEmitted=!0,process.nextTick(()=>this.emit(T1.READY))},this._emitRaw=(...f)=>this.emit(T1.RAW,...f),this._boundRemove=this._remove.bind(this),this.options=G,this._nodeFsHandler=new tB(this),Object.freeze(G)}_addIgnoredPath(J){if(Jj(J)){for(let z of this._ignoredPaths)if(Jj(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(Jj(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:G}=this.options;this.closed=!1,this._closePromise=void 0;let X=v6(J);if(G)X=X.map((Z)=>{return XN(Z,G)});if(X.forEach((Z)=>{this._removeIgnoredPath(Z)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=X.length,Promise.all(X.map(async(Z)=>{let Q=await this._nodeFsHandler._addToNodeFs(Z,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((Z)=>{if(this.closed)return;Z.forEach((Q)=>{if(Q)this.add(q1.dirname(Q),q1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=v6(J),{cwd:Y}=this.options;return z.forEach((G)=>{if(!q1.isAbsolute(G)&&!this._closers.has(G)){if(Y)G=q1.join(Y,G);G=q1.resolve(G)}if(this._closePath(G),this._addIgnoredPath(G),this._watched.has(G))this._addIgnoredPath({path:G,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let G=Y();if(G instanceof Promise)J.push(G)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let X=(this.options.cwd?q1.relative(this.options.cwd,Y):Y)||d6;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==T1.ERROR)this.emit(T1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let G=this.options;if(sB)z=q1.normalize(z);if(G.cwd)z=q1.relative(G.cwd,z);let X=[z];if(Y!=null)X.push(Y);let Z=G.awaitWriteFinish,Q;if(Z&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(G.atomic){if(J===T1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((f,H)=>{this.emit(...f),this.emit(T1.ALL,...f),this._pendingUnlinks.delete(H)})},typeof G.atomic==="number"?G.atomic:100),this;if(J===T1.ADD&&this._pendingUnlinks.has(z))J=T1.CHANGE,this._pendingUnlinks.delete(z)}if(Z&&(J===T1.ADD||J===T1.CHANGE)&&this._readyEmitted){let f=(H,B)=>{if(H)J=T1.ERROR,X[0]=H,this.emitWithAll(J,X);else if(B){if(X.length>1)X[1]=B;else X.push(B);this.emitWithAll(J,X)}};return this._awaitWriteFinish(z,Z.stabilityThreshold,J,f),this}if(J===T1.CHANGE){if(!this._throttle(T1.CHANGE,z,50))return this}if(G.alwaysStat&&Y===void 0&&(J===T1.ADD||J===T1.ADD_DIR||J===T1.CHANGE)){let f=G.cwd?q1.join(G.cwd,z):z,H;try{H=await pC(f)}catch(B){}if(!H||this.closed)return;X.push(H)}return this.emitWithAll(J,X),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(T1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let G=this._throttled.get(J);if(!G)throw Error("invalid throttle");let X=G.get(z);if(X)return X.count++,!1;let Z,Q=()=>{let H=G.get(z),B=H?H.count:0;if(G.delete(z),clearTimeout(Z),H)clearTimeout(H.timeoutObject);return B};Z=setTimeout(Q,Y);let f={timeoutObject:Z,clear:Q,count:0};return G.set(z,f),f}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,G){let X=this.options.awaitWriteFinish;if(typeof X!=="object")return;let Z=X.pollInterval,Q,f=J;if(this.options.cwd&&!q1.isAbsolute(J))f=q1.join(this.options.cwd,J);let H=new Date,B=this._pendingWrites;function V(j){aC(f,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")G(K);return}let A=Number(new Date);if(j&&L.size!==j.size)B.get(J).lastChange=A;let O=B.get(J);if(A-O.lastChange>=z)B.delete(J),G(void 0,L);else Q=setTimeout(V,Z,L)})}if(!B.has(J))B.set(J,{lastChange:H,cancelWait:()=>{return B.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,Z)}_isIgnored(J,z){if(this.options.atomic&&eC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,X=(this.options.ignored||[]).map(c6(Y)),Q=[...[...this._ignoredPaths].map(c6(Y)),...X];this._userIgnored=GN(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new $6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=q1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new l6(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let G=q1.join(J,z),X=q1.resolve(G);if(Y=Y!=null?Y:this._watched.has(G)||this._watched.has(X),!this._throttle("remove",G,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(G).getChildren().forEach((j)=>this._remove(G,j));let f=this._getWatchedDir(J),H=f.has(z);if(f.remove(z),this._symlinkPaths.has(X))this._symlinkPaths.delete(X);let B=G;if(this.options.cwd)B=q1.relative(this.options.cwd,G);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===T1.ADD)return}this._watched.delete(G),this._watched.delete(X);let V=Y?T1.UNLINK_DIR:T1.UNLINK;if(H&&!this._isIgnored(G))this._emit(V,G);this._closePath(G)}_closePath(J){this._closeFile(J);let z=q1.dirname(J);this._getWatchedDir(z).remove(q1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:T1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},G=S6(J,Y);return this._streams.add(G),G.once(u6,()=>{G=void 0}),G.once(oB,()=>{if(G)this._streams.delete(G),G=void 0}),G}}});import{mkdirSync as fN,statSync as HN}from"fs";import{basename as r6,dirname as BN,join as jN}from"path";function Cf(J){if(J.debounceMs<=0)return()=>{};let z=BN(J.filePath),Y=new Set([r6(J.filePath),...J.matchBasenames??[]]),G=null,X=null,Z=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},f=()=>{if(G)clearTimeout(G);G=setTimeout(()=>{G=null,Q()},J.debounceMs),G.unref?.()},H=(V)=>{if(!Y.has(r6(V)))return;f()},B=(V)=>{try{let j=HN(jN(z,V));return`${j.mtimeMs}:${j.size}`}catch{return null}};try{fN(z,{recursive:!0});let V=new Map;for(let j of Y)V.set(j,B(j));X=_6(z,{depth:0,ignoreInitial:!0}),X.on("add",H),X.on("change",H),X.on("unlink",H),X.on("error",J.onError),X.once("ready",()=>{for(let j of Y)if(B(j)!==V.get(j)){f();break}})}catch(V){J.onError(V)}return()=>{if(Z)return;if(Z=!0,G)clearTimeout(G),G=null;let V=X;X=null,V?.close().catch(J.onError)}}var zj=k(()=>{p6()});import{homedir as WN}from"os";import{basename as VN,join as KN}from"path";function Gj(J=process.env.KOBE_HOME_DIR??WN()){return KN(J,".kobe","settings","keybindings.yaml")}function o6(J,z={}){let Y=z.debounceMs??Yj;if(Y<=0)return()=>{};let G=z.path??Gj(),X=VN(G),Z=X.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),Cf({filePath:G,matchBasenames:[X,Z],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(H){y1("keybindings-watcher",H)}},onError:(H)=>y1("keybindings-watcher",H)})}var Yj=200;var s6=k(()=>{zj()});class Xj{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??UN,this.log=J.log??Pz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var UN=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var t6=()=>{};import{spawn as DN}from"child_process";function CN(J,z,Y){return new Promise((G)=>{let X="",Z="",Q=!1,f=(B,V)=>{if(Q)return;Q=!0,G({status:B,stdout:X,stderr:Z,spawnError:V})},H=DN("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});H.stdout?.on("data",(B)=>{X+=String(B)}),H.stderr?.on("data",(B)=>{Z+=String(B)}),H.on("error",()=>f(null,!Y.aborted)),H.on("close",(B)=>f(B,!1))})}function kN(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if($1(J.repo)||$1(J.worktreePath))return!1;return!0}async function bN(J,z){let Y=z.tickMs??cZ,G=z.rand,X={tickMs:Y,settledMs:MN,noPrMs:LN,noRemoteMs:AN,failureBaseMs:FN,failureCapMs:ON,jitterRatio:RN},Z=[];for(let Q of J.listTasks()){if(!kN(Q)){z.schedule.delete(Q.id);continue}let f=z.schedule.get(Q.id);if(f&&z.now<f.nextAllowedAt)continue;let H=f?.failures??0;try{let B=await z.run(Q.worktreePath,Q.branch);if(B.kind==="error"){Pz("pr-status-poller",`gh pr view failed (${B.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,OZ({kind:"error",error:B.error},H,z.now,X,G));continue}if(B.kind==="empty"){z.schedule.set(Q.id,OZ({kind:"empty"},H,z.now,X,G));continue}let V=bV(B.view,z.at),j=J.getTask(Q.id);if(!j){z.schedule.delete(Q.id);continue}if(!Aq(j.prStatus,V??void 0))await J.setPRStatus(Q.id,V),Z.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,OZ({kind:"pr",settled:K},H,z.now,X,G))}catch(B){y1("pr-status-poller",B),z.schedule.set(Q.id,OZ({kind:"error",error:"network"},H,z.now,X,G))}}return Z}function e6(J,z=cZ,Y,G=NN){if(z<=0)return()=>{};let X=new Map,Z=!1,f=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,bN(J,{run:G,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((H)=>y1("pr-status-poller",H)).finally(()=>{Z=!1})},z);return f.unref?.(),()=>clearInterval(f)}var cZ=30000,LN=300000,MN=600000,FN,ON=900000,AN=1800000,RN=0.2,gN=1e4,NN=async(J,z)=>{let Y=new AbortController,G=!1,X=setTimeout(()=>{G=!0,Y.abort()},gN);try{let Z=await CN(["pr","view",z,"--json",kV],J,Y.signal);if(Z.status===0&&!G)try{let Q=JSON.parse(Z.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return h8({parseError:!0})}return h8({spawnError:Z.spawnError,timedOut:G,exitCode:Z.status,stderr:Z.stderr})}finally{clearTimeout(X)}};var JK=k(()=>{v8();O1();FN=cZ});function TN(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function xN(J,z,Y,G){let X=await oG(z,J),Z=await Y.latestCompletion(J);return{mtimeMs:X,completionId:Z?.id??null,completionAt:Z?.timestampMs??0}}function uN(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if($1(Y.repo)||$1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??a1)}return z}class zK{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=uN(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,G]of J)this.maybeCollect(Y,G)}catch(J){y1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:VZ(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=VZ(z);let G=this.options.cadence??{timeoutMs:SN,slowRetryMs:IN,minIntervalMs:yN},X=this.options.run??xN,Z=Y;zX(Z,G,(Q)=>X(J,Z.vendor,Z.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==Z)return;if(Z.value&&TN(Z.value,Q))return;Z.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function YK(J,z,Y=Zj,G){if(Y<=0)return()=>{};let X=new zK(J,z,{hasSubscribers:G});X.tick();let Z=setInterval(()=>X.tick(),Y);return Z.unref?.(),()=>{clearInterval(Z),X.stop()}}var Zj=1500,SN=4000,IN=60000,yN=1500;var GK=k(()=>{Gq();YX();Xq();O1();sJ()});import{readFileSync as EN}from"fs";import{homedir as wN}from"os";import{basename as PN,join as hN}from"path";function qj(J=process.env.KOBE_HOME_DIR??wN()){return hN(J,".config","kobe","state.json")}function XK(J){let z={};try{let B=JSON.parse(EN(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",G=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&mN.includes(z.focusAccent)?z.focusAccent:null,Z=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,f=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,H=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:G,focusAccent:X,locale:H,sortMode:Z,keysCollapsed:Q,projectFilter:f}}function cN(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 ZK(J,z={}){let Y=z.debounceMs??Qj;if(Y<=0)return()=>{};let G=z.pollMs??vN,X=z.statePath??qj(),Z=PN(X),Q=XK(X);return J.publish("ui-prefs",Q),Cf({filePath:X,matchBasenames:[Z],debounceMs:Y,pollMs:G,onTrigger:()=>{try{let H=XK(X);if(cN(Q,H))return;Q=H,J.publish("ui-prefs",H)}catch(H){y1("ui-prefs-watcher",H)}},onError:(H)=>y1("ui-prefs-watcher",H)})}var Qj=200,vN=250,mN;var QK=k(()=>{zj();mN=["primary","success","info"]});function bX(J){return yG.includes(J)?J:"auto"}var yG,qK,qY="editor.kind",mY="editor.customCommand",Nf="auto";var kf=k(()=>{yG=["auto","vim","nvim","nano","emacs","custom"],qK=["nvim","vim","emacs","nano"]});function xG(J){return J==="taskpanel"?"taskpanel":"chattab"}var fY="settings.surface",TG="chattab";function nJ(J=process.env){return{...J,...fj}}var fj;var cY=k(()=>{fj={GIT_OPTIONAL_LOCKS:"0"}});async function SX(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let G=(Y.execForPath??XY)(J),X=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,Z=!1,Q=X?setTimeout(()=>{Z=!0,X.abort()},Y.timeoutMs):null,f=X&&Y.signal?AbortSignal.any([X.signal,Y.signal]):X?.signal??Y.signal,H;try{H=await G.run(["git",...z],{cwd:J,env:fj,signal:f})}catch(B){if(Q)clearTimeout(Q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(Q)clearTimeout(Q);if(Z&&H.exitCode===-1&&!H.stderr)return{stdout:H.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:H.stdout,stderr:H.stderr,status:H.exitCode}}function dN(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((G)=>G===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function fK(J,z,Y={}){let G=dN(J,z);if(!G)return null;let X=(Y.execForPath??XY)(J);try{return await X.readFile(G)}catch{return null}}var bf=k(()=>{Vz();cY()});import{statSync as nN}from"fs";async function dZ(J,z){let Y=await SX(J,z,{timeoutMs:iN}),G=Y.status??-1;return{ok:G===0,stdout:Y.stdout,stderr:Y.stderr,code:G}}function $N(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 HK(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let G of Y){if(!G.startsWith("diff --git"))continue;let X=null,Z=G.match(/^\+\+\+ b\/(.*)$/m);if(Z&&Z[1]!=="/dev/null")X=Z[1];else{let Q=G.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)X=Q[1]}if(!X)continue;z.set(aN(X),G.endsWith(`
|
|
66
66
|
`)?G:`${G}
|
|
67
67
|
`)}return z}function aN(J){if(!(J.startsWith('"')&&J.endsWith('"')))return J;return J.slice(1,-1).replace(/\\([\\"nt])/g,(Y,G)=>G==="n"?`
|
|
68
68
|
`:G==="t"?"\t":G)}async function _N(J,z,Y){let G=Array(J.length),X=Math.max(1,Math.min(z,J.length)),Z=0;async function Q(){while(Z<J.length){let f=Z++;G[f]=await Y(J[f],f)}}return await Promise.all(Array.from({length:X},()=>Q())),G}async function pN(J,z){let Y=await dZ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
|
|
69
69
|
`)?Y.stdout:`${Y.stdout}
|
|
70
|
-
`;return""}async function BK(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let G;try{G=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!G.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!Rq(G))return Response.json({error:"worktreePath does not exist"},{status:400});if(!XY(G).isRemote)try{if(!nN(G).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let Z=await dZ(G,["rev-parse","--is-inside-work-tree"]);if(!Z.ok||Z.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${Z.stderr.trim()||G}`},{status:500});let[Q,f,H]=await Promise.all([dZ(G,["status","--porcelain=v1","-z","--untracked-files=all"]),dZ(G,["diff","--no-color"]),dZ(G,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let B=HK(f.stdout),V=HK(H.stdout),j=Q.stdout.split("\x00"),K=[],L=[];for(let g=0;g<j.length;g++){let u=j[g];if(!u)continue;let _=u[0]??" ",
|
|
71
|
-
`),O={files:K,raw:A};return Response.json(O)}var iN=15000,lN=8;var jK=k(()=>{Vz();bf()});import{isAbsolute as rN}from"path";function VK(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function sN(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function tN(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!rN(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!VK(Y))return Response.json({error:"invalid vendor"},{status:400});try{let G=e1(Y).history,[X,Z]=await Promise.all([G.listSessionIdsForWorktree(z),G.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:Z})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function eN(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!VK(z))return Response.json({error:"invalid vendor"},{status:400});if(!sN(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let G=await e1(z).history.readHistory(Y);return Response.json({messages:G})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function KK(J,z){if(z.pathname!==WK&&z.pathname!==oN)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===WK?tN(z):eN(z)}var WK="/api/history/sessions",oN="/api/history/messages";var UK=k(()=>{IY()});import{mkdir as Jk,readFile as zk,writeFile as Yk}from"fs/promises";import{join as DK}from"path";function LK(){return DK(fJ(),"notes")}function MK(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function FK(J){return DK(LK(),`${J}.md`)}async function Xk(J){let z=J.searchParams.get("taskId");if(!MK(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await zk(FK(z),"utf8")}catch(G){if(G.code!=="ENOENT")throw G}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Zk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!MK(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 Jk(LK(),{recursive:!0}),await Yk(FK(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function OK(J,z){if(z.pathname!==Gk)return null;if(J.method==="GET")return Xk(z);if(J.method==="PUT")return Zk(J);return Response.json({error:"method not allowed"},{status:405})}var Gk="/api/notes";var AK=k(()=>{r1()});function Bj(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return Bj(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let G=J.defs?.[z]??J.theme[z];return Bj(J,G,[...Y,z])}function Hj(J){return Math.max(0,Math.min(255,Math.round(J)))}function nZ(J,z,Y){let G=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),Z=(f,H)=>f>>H&255;return`#${(Hj(Z(G,16)+(Z(X,16)-Z(G,16))*Y)<<16|Hj(Z(G,8)+(Z(X,8)-Z(G,8))*Y)<<8|Hj(Z(G,0)+(Z(X,0)-Z(G,0))*Y)).toString(16).padStart(6,"0")}`}function qk(J){let z=(f)=>Bj(J,J.theme[f]),Y=z("background"),G=z("text");if(!Y||!G)return null;let X=z("textMuted")??nZ(G,Y,0.35),Z=z("primary")??G,Q=z("border")??nZ(G,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??nZ(Q,G,0.3),fg:G,muted:X,subtle:nZ(X,Y,0.35),primary:Z,"primary-hover":nZ(Z,G,0.35),"kobe-orange":Z,"kobe-green":z("success")??G,"kobe-blue":z("info")??G,"kobe-red":z("error")??G,"kobe-yellow":z("warning")??G,"kobe-violet":z("secondary")??Z}}function RK(J,z){if(z.pathname!==Hk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:fk})}var Qk,fk,Hk="/api/themes";var gK=k(()=>{wq();Pq();hq();vq();mq();cq();dq();Qk={claude:jX,conductor:WX,dracula:VX,nord:KX,opencode:UX,"osaka-jade":DX,tokyonight:LX};fk=Object.fromEntries(Object.entries(Qk).map(([J,z])=>[J,qk(z)]).filter((J)=>J[1]!==null))});import{createHash as Bk,randomUUID as jk}from"crypto";import{mkdir as Wk}from"fs/promises";import{join as jj,resolve as Vk}from"path";function Dk(J){return Bk("sha1").update(J).digest("hex").slice(0,16)}async function Fk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>CK)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let G=Y.get("repoRoot");if(typeof G!=="string"||G.length===0)return Response.json({error:"missing repoRoot"},{status:400});let X=Y.get("file");if(!(X instanceof File))return Response.json({error:"file must be a File"},{status:400});if(X.size>CK)return Response.json({error:"asset too large"},{status:413});let Z=Kk[X.type];if(!Z)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let Q=Dk(G),f=jj(uH(),Q);await Wk(f,{recursive:!0});let B=`${jk()}.${Z}`;return await Bun.write(jj(f,B),X),Response.json({url:`${If}/${Q}/${B}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ok(J){let z=J.slice(If.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let G=z.slice(0,Y),X=z.slice(Y+1);if(!Lk.test(G)||!Mk.test(X))return Response.json({error:"invalid asset path"},{status:400});let Z=uH(),Q=Vk(Z,G,X);if(Q!==jj(Z,G,X)||!Q.startsWith(`${Z}/`))return Response.json({error:"invalid asset path"},{status:400});let f=X.slice(X.lastIndexOf(".")+1).toLowerCase(),H=Uk[f];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(Q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function NK(J,z){if(z.pathname===If){if(J.method==="POST")return Fk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${If}/`)){if(J.method==="GET")return Ok(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var If="/api/issue-assets",CK=10485760,Kk,Uk,Lk,Mk;var kK=k(()=>{r1();Kk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Uk={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Lk=/^[a-f0-9]{16}$/,Mk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function bK(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function IK(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 Ak(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(G){return bK(G,IK(G))}}async function Rk(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let G=Y;if(typeof G.repoRoot!=="string"||G.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:G.repoRoot,op:G.op}))}catch(X){return bK(X,IK(X))}}async function SK(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Ak(Y,z);if(J.method==="POST")return Rk(Y,J);return Response.json({error:"method not allowed"},{status:405})}function yK(J){return gk.has(String(J??"").trim().toLowerCase())}function TK(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 Ck(J){let z=TK(J);return z!==null&&yK(z)}function xK(J,z={}){if(!J)return!0;if(Ck(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let G=TK(J);return G!==null&&G===Y}function uK(J){let z=String(J??"").trim();return z&&!yK(z)?z:void 0}var gk;var EK=k(()=>{gk=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Nk,wK;var PK=k(()=>{Nk=["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"],wK=new Set(Nk)});var Wj={};j1(Wj,{resolveRepoInit:()=>mK,resolveEngineLaunchInit:()=>HY});import{existsSync as vK,readFileSync as kk}from"fs";import{join as Sf}from"path";function Ik(J){return vK(Sf(J,hK))?`sh ${hK}`:void 0}function Sk(J){let z=Sf(J,bk);if(!vK(z))return;try{let Y=kk(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function mK(J,z){let Y=J?$H(J):{},G=Ik(z)??Y.initScript,X=Sk(z)??Y.initPrompt;return{initScript:G&&G.trim().length>0?G:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function yk(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function HY(J,z,Y={kind:"repo-init"}){let G=mK(J,z);return{initScript:G.initScript,firstMessage:yk(Y,G)}}var hK,bk;var SX=k(()=>{O1();hK=Sf(".kobe","init.sh"),bk=Sf(".kobe","init-prompt.md")});async function Tk(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function Vj(J,z){let Y=await Tk(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:G}=await J.request("task.ensureWorktree",{taskId:z});if(!G)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:G}}async function cK(J,z){let{task:Y,worktreePath:G}=await Vj(J,z),X=M1(z);if(!await H1(X)){let Z=HY(Y.repo??"",G,{kind:"repo-init"});if(!await PY({name:X,cwd:G,command:yJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:Z}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:G}}function xk(J){return _Q(J,{bareSafe:!0})}async function dK(J,z){let{task:Y,worktreePath:G}=await Vj(J,z),X=Y.kind==="main"?void 0:z,Z=Y.kind==="main"?z:void 0,Q=[...bq(kq(yJ(Y.vendor,Y.modelEffort),Y.vendor,X),Y.vendor,Z)],f=HY(Y.repo??"",G,{kind:"none"}),H=xk(Q),B=f.initScript?.trim()?`${f.initScript}
|
|
72
|
-
${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:G,command:[V,"-ilc",B]}}async function nK(J,z){let{worktreePath:Y}=await Vj(J,z),G=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[G,"-il"]}}async function iK(J){let z=M1(J);await wz(z).catch(()=>{}),await eJ(z).catch(()=>{})}var lK=k(()=>{vJ();Q8();
|
|
70
|
+
`;return""}async function BK(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let G;try{G=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!G.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!Rq(G))return Response.json({error:"worktreePath does not exist"},{status:400});if(!XY(G).isRemote)try{if(!nN(G).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let Z=await dZ(G,["rev-parse","--is-inside-work-tree"]);if(!Z.ok||Z.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${Z.stderr.trim()||G}`},{status:500});let[Q,f,H]=await Promise.all([dZ(G,["status","--porcelain=v1","-z","--untracked-files=all"]),dZ(G,["diff","--no-color"]),dZ(G,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let B=HK(f.stdout),V=HK(H.stdout),j=Q.stdout.split("\x00"),K=[],L=[];for(let g=0;g<j.length;g++){let u=j[g];if(!u)continue;let _=u[0]??" ",S=u[1]??" ",N=u.slice(3);if(!N)continue;if(_==="R"||_==="C"||S==="R"||S==="C")g++;let M=_==="?"&&S==="?",I=_!==" "&&_!=="?"?_:S,r=_!==" "&&_!=="?",l="";if(M)L.push({fileIndex:K.length,path:N});else if(l=V.get(N)??B.get(N)??"",V.has(N)&&B.has(N))l=`${V.get(N)}${B.get(N)}`;K.push({path:N,status:M?"untracked":$N(I),staged:r,patch:l})}if(L.length>0){let g=await _N(L,lN,(u)=>pN(G,u.path));for(let u=0;u<L.length;u++)K[L[u].fileIndex].patch=g[u]}K.sort((g,u)=>g.path.localeCompare(u.path));let A=[H.stdout,f.stdout].filter(Boolean).join(`
|
|
71
|
+
`),O={files:K,raw:A};return Response.json(O)}var iN=15000,lN=8;var jK=k(()=>{Vz();bf()});import{isAbsolute as rN}from"path";function VK(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function sN(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function tN(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!rN(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!VK(Y))return Response.json({error:"invalid vendor"},{status:400});try{let G=e1(Y).history,[X,Z]=await Promise.all([G.listSessionIdsForWorktree(z),G.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:Z})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function eN(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!VK(z))return Response.json({error:"invalid vendor"},{status:400});if(!sN(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let G=await e1(z).history.readHistory(Y);return Response.json({messages:G})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function KK(J,z){if(z.pathname!==WK&&z.pathname!==oN)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===WK?tN(z):eN(z)}var WK="/api/history/sessions",oN="/api/history/messages";var UK=k(()=>{SY()});import{mkdir as Jk,readFile as zk,writeFile as Yk}from"fs/promises";import{join as DK}from"path";function LK(){return DK(fJ(),"notes")}function MK(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function FK(J){return DK(LK(),`${J}.md`)}async function Xk(J){let z=J.searchParams.get("taskId");if(!MK(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await zk(FK(z),"utf8")}catch(G){if(G.code!=="ENOENT")throw G}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Zk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!MK(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 Jk(LK(),{recursive:!0}),await Yk(FK(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function OK(J,z){if(z.pathname!==Gk)return null;if(J.method==="GET")return Xk(z);if(J.method==="PUT")return Zk(J);return Response.json({error:"method not allowed"},{status:405})}var Gk="/api/notes";var AK=k(()=>{r1()});function Bj(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return Bj(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let G=J.defs?.[z]??J.theme[z];return Bj(J,G,[...Y,z])}function Hj(J){return Math.max(0,Math.min(255,Math.round(J)))}function nZ(J,z,Y){let G=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),Z=(f,H)=>f>>H&255;return`#${(Hj(Z(G,16)+(Z(X,16)-Z(G,16))*Y)<<16|Hj(Z(G,8)+(Z(X,8)-Z(G,8))*Y)<<8|Hj(Z(G,0)+(Z(X,0)-Z(G,0))*Y)).toString(16).padStart(6,"0")}`}function qk(J){let z=(f)=>Bj(J,J.theme[f]),Y=z("background"),G=z("text");if(!Y||!G)return null;let X=z("textMuted")??nZ(G,Y,0.35),Z=z("primary")??G,Q=z("border")??nZ(G,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??nZ(Q,G,0.3),fg:G,muted:X,subtle:nZ(X,Y,0.35),primary:Z,"primary-hover":nZ(Z,G,0.35),"kobe-orange":Z,"kobe-green":z("success")??G,"kobe-blue":z("info")??G,"kobe-red":z("error")??G,"kobe-yellow":z("warning")??G,"kobe-violet":z("secondary")??Z}}function RK(J,z){if(z.pathname!==Hk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:fk})}var Qk,fk,Hk="/api/themes";var gK=k(()=>{wq();Pq();hq();vq();mq();cq();dq();Qk={claude:jX,conductor:WX,dracula:VX,nord:KX,opencode:UX,"osaka-jade":DX,tokyonight:LX};fk=Object.fromEntries(Object.entries(Qk).map(([J,z])=>[J,qk(z)]).filter((J)=>J[1]!==null))});import{createHash as Bk,randomUUID as jk}from"crypto";import{mkdir as Wk}from"fs/promises";import{join as jj,resolve as Vk}from"path";function Dk(J){return Bk("sha1").update(J).digest("hex").slice(0,16)}async function Fk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>CK)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let G=Y.get("repoRoot");if(typeof G!=="string"||G.length===0)return Response.json({error:"missing repoRoot"},{status:400});let X=Y.get("file");if(!(X instanceof File))return Response.json({error:"file must be a File"},{status:400});if(X.size>CK)return Response.json({error:"asset too large"},{status:413});let Z=Kk[X.type];if(!Z)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let Q=Dk(G),f=jj(uH(),Q);await Wk(f,{recursive:!0});let B=`${jk()}.${Z}`;return await Bun.write(jj(f,B),X),Response.json({url:`${Sf}/${Q}/${B}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ok(J){let z=J.slice(Sf.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let G=z.slice(0,Y),X=z.slice(Y+1);if(!Lk.test(G)||!Mk.test(X))return Response.json({error:"invalid asset path"},{status:400});let Z=uH(),Q=Vk(Z,G,X);if(Q!==jj(Z,G,X)||!Q.startsWith(`${Z}/`))return Response.json({error:"invalid asset path"},{status:400});let f=X.slice(X.lastIndexOf(".")+1).toLowerCase(),H=Uk[f];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(Q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function NK(J,z){if(z.pathname===Sf){if(J.method==="POST")return Fk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${Sf}/`)){if(J.method==="GET")return Ok(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Sf="/api/issue-assets",CK=10485760,Kk,Uk,Lk,Mk;var kK=k(()=>{r1();Kk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Uk={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Lk=/^[a-f0-9]{16}$/,Mk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function bK(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function SK(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 Ak(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(G){return bK(G,SK(G))}}async function Rk(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let G=Y;if(typeof G.repoRoot!=="string"||G.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:G.repoRoot,op:G.op}))}catch(X){return bK(X,SK(X))}}async function IK(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Ak(Y,z);if(J.method==="POST")return Rk(Y,J);return Response.json({error:"method not allowed"},{status:405})}function yK(J){return gk.has(String(J??"").trim().toLowerCase())}function TK(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 Ck(J){let z=TK(J);return z!==null&&yK(z)}function xK(J,z={}){if(!J)return!0;if(Ck(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let G=TK(J);return G!==null&&G===Y}function uK(J){let z=String(J??"").trim();return z&&!yK(z)?z:void 0}var gk;var EK=k(()=>{gk=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Nk,wK;var PK=k(()=>{Nk=["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"],wK=new Set(Nk)});var Wj={};j1(Wj,{resolveRepoInit:()=>mK,resolveEngineLaunchInit:()=>HY});import{existsSync as vK,readFileSync as kk}from"fs";import{join as If}from"path";function Sk(J){return vK(If(J,hK))?`sh ${hK}`:void 0}function Ik(J){let z=If(J,bk);if(!vK(z))return;try{let Y=kk(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function mK(J,z){let Y=J?$H(J):{},G=Sk(z)??Y.initScript,X=Ik(z)??Y.initPrompt;return{initScript:G&&G.trim().length>0?G:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function yk(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function HY(J,z,Y={kind:"repo-init"}){let G=mK(J,z);return{initScript:G.initScript,firstMessage:yk(Y,G)}}var hK,bk;var IX=k(()=>{O1();hK=If(".kobe","init.sh"),bk=If(".kobe","init-prompt.md")});async function Tk(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function Vj(J,z){let Y=await Tk(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:G}=await J.request("task.ensureWorktree",{taskId:z});if(!G)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:G}}async function cK(J,z){let{task:Y,worktreePath:G}=await Vj(J,z),X=M1(z);if(!await H1(X)){let Z=HY(Y.repo??"",G,{kind:"repo-init"});if(!await PY({name:X,cwd:G,command:yJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:Z}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:G}}function xk(J){return _Q(J,{bareSafe:!0})}async function dK(J,z){let{task:Y,worktreePath:G}=await Vj(J,z),X=Y.kind==="main"?void 0:z,Z=Y.kind==="main"?z:void 0,Q=[...bq(kq(yJ(Y.vendor,Y.modelEffort),Y.vendor,X),Y.vendor,Z)],f=HY(Y.repo??"",G,{kind:"none"}),H=xk(Q),B=f.initScript?.trim()?`${f.initScript}
|
|
72
|
+
${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:G,command:[V,"-ilc",B]}}async function nK(J,z){let{worktreePath:Y}=await Vj(J,z),G=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[G,"-il"]}}async function iK(J){let z=M1(J);await wz(z).catch(()=>{}),await eJ(z).catch(()=>{})}var lK=k(()=>{vJ();Q8();IX();P1();YJ()});import{existsSync as uk}from"fs";import{join as $K,normalize as pK}from"path";function Ek(J){let z=null,Y=null,G=new TextEncoder,X=new ReadableStream({start(Z){z=J((f,H)=>{try{Z.enqueue(G.encode(`event: ${f}
|
|
73
73
|
data: ${JSON.stringify(H)}
|
|
74
74
|
|
|
75
75
|
`))}catch{}}),Y=setInterval(()=>{try{Z.enqueue(G.encode(`: ping
|
|
76
76
|
|
|
77
|
-
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(X,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function wk(J,z,Y){try{let{name:G,payload:X}=await J.json();if(!G)return Response.json({error:"missing rpc name"},{status:400});if(!wK.has(G))return Response.json({error:`rpc ${G} is not exposed to the web UI`},{status:403});let Z=await z.request(G,X),Q=X?.taskId;if(typeof Q==="string"){let f=G==="task.archive"&&X.archived!==!1;if(G==="task.delete"||f)Y(Q)}return Response.json({result:Z})}catch(G){let X=G instanceof Error&&G.name!=="Error"?G.name:void 0;return Response.json({error:G instanceof Error?G.message:String(G),...X?{name:X}:{}},{status:500})}}async function Pk(){try{let z=(await tz()).map((Y)=>({id:Y,label:FG(Y),effortLevels:e1(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function hk(){return Response.json({api:OG()})}function vk(){return Response.json({projects:CJ()})}function dY(J,z=""){return typeof J==="string"?J:z}function mk(J,z){return typeof J==="boolean"?J:z}function eK(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&tK.test(Y)&&!qJ(Y))}function ck(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function dk(J,z){return dY(J[Uz(z)]).trim()||FG(z)}function nk(J,z){return dY(J[Kz(z)]).trim()||NZ(z).join(" ")}function JU(){let J=d1(),z=eK(J),Y=[...sY,...z],G=dY(J.lastSelectedVendor,"claude"),X=dY(J.focusAccent,"primary");return Response.json({activeTheme:dY(J.activeTheme,"claude"),transparentBackground:mk(J.transparentBackground,!1),focusAccent:sK.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:xG(J[fY]??TG),editorKind:bX(J[qY]??Nf),editorCustomCommand:dY(J[mY]),remoteProjects:J["experimental.remoteProjects"]===!0,autoStatus:J[LG]===!0,dispatcher:J[MG]===!0,defaultEngine:G,engines:Y.map((Z)=>({id:Z,label:dk(J,Z),command:nk(J,Z),isBuiltin:qJ(Z),isCustom:!qJ(Z),isDefault:Z===G}))})}function iZ(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function yX(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function ik(J){try{let z=await J.json(),Y={};if(iZ(Y,"activeTheme",z.activeTheme),yX(Y,"transparentBackground",z.transparentBackground),sK.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(yX(Y,"notifications.toast.enabled",z.notificationsToast),yX(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[fY]=z.settingsSurface;if(yG.includes(z.editorKind))Y[qY]=z.editorKind;iZ(Y,mY,z.editorCustomCommand),yX(Y,"experimental.remoteProjects",z.remoteProjects),yX(Y,LG,z.autoStatus),yX(Y,MG,z.dispatcher),iZ(Y,"lastSelectedVendor",z.defaultEngine);let G=d1(),X=eK(G),Z=new Set([...sY,...X]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let f of Q){if(!f||typeof f!=="object")continue;let H=f;if(typeof H.id!=="string"||!Z.has(H.id))continue;iZ(Y,Kz(H.id),H.command),iZ(Y,Uz(H.id),H.label)}if(z.addEngine&&typeof z.addEngine==="object"){let f=z.addEngine,H=typeof f.id==="string"?f.id.trim().toLowerCase():"";if(!tK.test(H)||qJ(H)||Z.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...X,H],Y[Kz(H)]=dY(f.command).trim();let B=dY(f.label).trim();Y[Uz(H)]=B&&B!==H?B:ck(H)}if(typeof z.removeEngine==="string"){let f=z.removeEngine;if(!qJ(f)){if(Y.customEngineIds=X.filter((H)=>H!==f),Y[Kz(f)]=void 0,Y[Uz(f)]=void 0,G.lastSelectedVendor===f)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)$z(Y);return JU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function lk(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await cK(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function aK(J,z,Y){try{let G=J.searchParams.get("taskId");if(!G)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,G))}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}function zU(){return Response.json({review:C1(yf.review)??null,pr:C1(yf.pr)??null})}async function $k(J){try{let z=await J.json();if(typeof z.review==="string")o1(yf.review,z.review);if(typeof z.pr==="string")o1(yf.pr,z.pr);return zU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function ak(J,z){let G=pK($K(z,J==="/"?"/index.html":J));if(!G.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(uk(G)?G:$K(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 _k(J){let{link:z,sseSends:Y,staticDir:G}=J,X=J.tearDownSession??((Z)=>void iK(Z));return async function(Q){let f=new URL(Q.url);if(f.pathname===oK)return new Response(rK);if(!xK(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(f.pathname==="/events")return Ek((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(f.pathname==="/api/rpc"&&Q.method==="POST")return wk(Q,z,X);if(f.pathname==="/api/session"&&Q.method==="POST")return lk(Q,z);if(f.pathname==="/api/engine-spec"&&Q.method==="GET")return aK(f,z,dK);if(f.pathname==="/api/terminal-spec"&&Q.method==="GET")return aK(f,z,nK);if(f.pathname==="/api/engines"&&Q.method==="GET")return Pk();if(f.pathname==="/api/cli-invocation"&&Q.method==="GET")return hk();if(f.pathname==="/api/projects"&&Q.method==="GET")return vk();if(f.pathname==="/api/settings"&&Q.method==="GET")return JU();if(f.pathname==="/api/settings"&&Q.method==="PATCH")return ik(Q);if(f.pathname==="/api/quick-prompts"&&Q.method==="GET")return zU();if(f.pathname==="/api/quick-prompts"&&Q.method==="PUT")return $k(Q);let H=await OK(Q,f);if(H)return H;let B=await BK(Q,f);if(B)return B;let V=await KK(Q,f);if(V)return V;let j=await
|
|
78
|
-
`).map((G)=>Number.parseInt(G.trim(),10)).filter((G)=>Number.isFinite(G)&&G!==process.pid)}catch{return[]}}async function rk(J,z=oK){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==rK)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let G=await _K(J);for(let Z of G)try{process.kill(Z,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await _K(J)).length===0)return;await new Promise((Z)=>setTimeout(Z,100))}}async function GU(J){if(J.takeover!==!1)await rk(J.port);let z=new Set,Y=J.onEvent((f)=>{for(let H of z)H("channel",f)}),G=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",X=uK(G),Z=_k({link:J.link,sseSends:z,staticDir:J.staticDir?pK(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:G,idleTimeout:0,fetch:Z});return{port:Q.port??J.port,hostname:G,close(){Y(),Q.stop(!0)}}}var rK="kobe-web",oK="/__kobe_web",sK,tK,yf;var XU=k(()=>{QG();vJ();
|
|
77
|
+
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(X,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function wk(J,z,Y){try{let{name:G,payload:X}=await J.json();if(!G)return Response.json({error:"missing rpc name"},{status:400});if(!wK.has(G))return Response.json({error:`rpc ${G} is not exposed to the web UI`},{status:403});let Z=await z.request(G,X),Q=X?.taskId;if(typeof Q==="string"){let f=G==="task.archive"&&X.archived!==!1;if(G==="task.delete"||f)Y(Q)}return Response.json({result:Z})}catch(G){let X=G instanceof Error&&G.name!=="Error"?G.name:void 0;return Response.json({error:G instanceof Error?G.message:String(G),...X?{name:X}:{}},{status:500})}}async function Pk(){try{let z=(await tz()).map((Y)=>({id:Y,label:FG(Y),effortLevels:e1(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function hk(){return Response.json({api:OG()})}function vk(){return Response.json({projects:CJ()})}function dY(J,z=""){return typeof J==="string"?J:z}function mk(J,z){return typeof J==="boolean"?J:z}function eK(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&tK.test(Y)&&!qJ(Y))}function ck(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function dk(J,z){return dY(J[Uz(z)]).trim()||FG(z)}function nk(J,z){return dY(J[Kz(z)]).trim()||NZ(z).join(" ")}function JU(){let J=d1(),z=eK(J),Y=[...sY,...z],G=dY(J.lastSelectedVendor,"claude"),X=dY(J.focusAccent,"primary");return Response.json({activeTheme:dY(J.activeTheme,"claude"),transparentBackground:mk(J.transparentBackground,!1),focusAccent:sK.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:xG(J[fY]??TG),editorKind:bX(J[qY]??Nf),editorCustomCommand:dY(J[mY]),remoteProjects:J["experimental.remoteProjects"]===!0,autoStatus:J[LG]===!0,dispatcher:J[MG]===!0,defaultEngine:G,engines:Y.map((Z)=>({id:Z,label:dk(J,Z),command:nk(J,Z),isBuiltin:qJ(Z),isCustom:!qJ(Z),isDefault:Z===G}))})}function iZ(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function yX(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function ik(J){try{let z=await J.json(),Y={};if(iZ(Y,"activeTheme",z.activeTheme),yX(Y,"transparentBackground",z.transparentBackground),sK.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(yX(Y,"notifications.toast.enabled",z.notificationsToast),yX(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[fY]=z.settingsSurface;if(yG.includes(z.editorKind))Y[qY]=z.editorKind;iZ(Y,mY,z.editorCustomCommand),yX(Y,"experimental.remoteProjects",z.remoteProjects),yX(Y,LG,z.autoStatus),yX(Y,MG,z.dispatcher),iZ(Y,"lastSelectedVendor",z.defaultEngine);let G=d1(),X=eK(G),Z=new Set([...sY,...X]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let f of Q){if(!f||typeof f!=="object")continue;let H=f;if(typeof H.id!=="string"||!Z.has(H.id))continue;iZ(Y,Kz(H.id),H.command),iZ(Y,Uz(H.id),H.label)}if(z.addEngine&&typeof z.addEngine==="object"){let f=z.addEngine,H=typeof f.id==="string"?f.id.trim().toLowerCase():"";if(!tK.test(H)||qJ(H)||Z.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...X,H],Y[Kz(H)]=dY(f.command).trim();let B=dY(f.label).trim();Y[Uz(H)]=B&&B!==H?B:ck(H)}if(typeof z.removeEngine==="string"){let f=z.removeEngine;if(!qJ(f)){if(Y.customEngineIds=X.filter((H)=>H!==f),Y[Kz(f)]=void 0,Y[Uz(f)]=void 0,G.lastSelectedVendor===f)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)$z(Y);return JU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function lk(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await cK(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function aK(J,z,Y){try{let G=J.searchParams.get("taskId");if(!G)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,G))}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}function zU(){return Response.json({review:C1(yf.review)??null,pr:C1(yf.pr)??null})}async function $k(J){try{let z=await J.json();if(typeof z.review==="string")o1(yf.review,z.review);if(typeof z.pr==="string")o1(yf.pr,z.pr);return zU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function ak(J,z){let G=pK($K(z,J==="/"?"/index.html":J));if(!G.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(uk(G)?G:$K(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 _k(J){let{link:z,sseSends:Y,staticDir:G}=J,X=J.tearDownSession??((Z)=>void iK(Z));return async function(Q){let f=new URL(Q.url);if(f.pathname===oK)return new Response(rK);if(!xK(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(f.pathname==="/events")return Ek((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(f.pathname==="/api/rpc"&&Q.method==="POST")return wk(Q,z,X);if(f.pathname==="/api/session"&&Q.method==="POST")return lk(Q,z);if(f.pathname==="/api/engine-spec"&&Q.method==="GET")return aK(f,z,dK);if(f.pathname==="/api/terminal-spec"&&Q.method==="GET")return aK(f,z,nK);if(f.pathname==="/api/engines"&&Q.method==="GET")return Pk();if(f.pathname==="/api/cli-invocation"&&Q.method==="GET")return hk();if(f.pathname==="/api/projects"&&Q.method==="GET")return vk();if(f.pathname==="/api/settings"&&Q.method==="GET")return JU();if(f.pathname==="/api/settings"&&Q.method==="PATCH")return ik(Q);if(f.pathname==="/api/quick-prompts"&&Q.method==="GET")return zU();if(f.pathname==="/api/quick-prompts"&&Q.method==="PUT")return $k(Q);let H=await OK(Q,f);if(H)return H;let B=await BK(Q,f);if(B)return B;let V=await KK(Q,f);if(V)return V;let j=await IK(Q,f,z);if(j)return j;let K=await NK(Q,f);if(K)return K;let L=RK(Q,f);if(L)return L;if(G)return ak(f.pathname,G);return new Response("not found",{status:404})}}function uG(J,z){let Y=J.snapshot().find((G)=>G.channel===z);return Y?Y.payload:null}function Kj(J){return J.length>1?J.replace(/\/+$/,""):J}function pk(J,z){let Y=Kj(z),G=new Set([z]);for(let X of J){let Z=Kj(X.repo),Q=Kj(X.worktreePath);if(Z===Y||Q===Y){if(X.repo)G.add(X.repo);if(X.worktreePath)G.add(X.worktreePath)}}return[...G]}function YU(J){let z=hZ();return{async request(Y,G){return await PZ(z,Y,G,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(Qz),G={},X=uG(J.bus,"issue.snapshot");if(X)for(let f of pk(Y,X.repoRoot))G[f]={...X,repoRoot:f};let Z=uG(J.bus,"task.jobs"),Q=Z?.phase==="running"?{[Z.taskId]:Z}:{};return{tasks:Y,activeTaskId:uG(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:uG(J.bus,"update")?.info??null,jobs:Q,worktreeChanges:uG(J.bus,"worktree.changes")?.changes??{},issueSnapshots:G,deliver:uG(J.bus,"session.deliver"),uiPrefs:uG(J.bus,"ui-prefs"),connected:!0}}}}async function _K(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(`
|
|
78
|
+
`).map((G)=>Number.parseInt(G.trim(),10)).filter((G)=>Number.isFinite(G)&&G!==process.pid)}catch{return[]}}async function rk(J,z=oK){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==rK)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let G=await _K(J);for(let Z of G)try{process.kill(Z,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await _K(J)).length===0)return;await new Promise((Z)=>setTimeout(Z,100))}}async function GU(J){if(J.takeover!==!1)await rk(J.port);let z=new Set,Y=J.onEvent((f)=>{for(let H of z)H("channel",f)}),G=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",X=uK(G),Z=_k({link:J.link,sseSends:z,staticDir:J.staticDir?pK(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:G,idleTimeout:0,fetch:Z});return{port:Q.port??J.port,hostname:G,close(){Y(),Q.stop(!0)}}}var rK="kobe-web",oK="/__kobe_web",sK,tK,yf;var XU=k(()=>{QG();vJ();SY();CZ();Nq();O1();YG();kf();l1();jK();UK();AK();gK();Kf();GG();kK();EK();PK();lK();sK=["primary","success","info"],tK=/^[a-z][a-z0-9_-]{0,47}$/;yf={review:"boardPrompt.review",pr:"boardPrompt.pr"}});function ZU(J){return J>="0"&&J<="7"}function qU(J,z){let Y=[],G="",X=()=>{if(G.length>0){for(let Q of ok.encode(G))Y.push(Q);G=""}},Z=z+1;while(Z<J.length){let Q=J[Z];if(Q==='"'){Z++;break}if(Q==="\\"){let f=J[Z+1];if(f===void 0){G+="\\",Z++;continue}switch(f){case"a":X(),Y.push(7),Z+=2;break;case"b":X(),Y.push(8),Z+=2;break;case"t":X(),Y.push(9),Z+=2;break;case"n":X(),Y.push(10),Z+=2;break;case"v":X(),Y.push(11),Z+=2;break;case"f":X(),Y.push(12),Z+=2;break;case"r":X(),Y.push(13),Z+=2;break;case'"':G+='"',Z+=2;break;case"\\":G+="\\",Z+=2;break;default:if(ZU(f)){let H="",B=Z+1;while(B<J.length&&H.length<3&&ZU(J[B]))H+=J[B],B++;X(),Y.push(Number.parseInt(H,8)&255),Z=B}else G+=f,Z+=2;break}}else G+=Q,Z++}return X(),{value:sk.decode(new Uint8Array(Y)),end:Z}}function Tf(J){if(J.length===0||J[0]!=='"')return J;return qU(J,0).value}function fU(J,z){if(J[0]==='"'){let G=qU(J,0);if(J.startsWith(z,G.end))return{orig:G.value,neu:Tf(J.slice(G.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:Tf(J.slice(Y+z.length))}}function tk(J){let z=J.indexOf("{");if(z>=0){let G=J.indexOf("}",z),X=J.indexOf(" => ",z);if(G>z&&X>=0&&X<G){let Z=J.slice(0,z),Q=J.slice(z+1,X),f=J.slice(X+4,G),H=J.slice(G+1);return{path:Z+f+H,origPath:Z+Q+H}}}let Y=fU(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:Tf(J)}}function xf(J){let z=[];for(let Y of J.split(`
|
|
79
79
|
`)){let G=Y.replace(/\r$/,"");if(G.length<4)continue;if(G.startsWith("##"))continue;let X=G[0],Z=G[1];if(G[2]!==" ")continue;let Q=G.slice(3);if(X==="R"||X==="C"||Z==="R"||Z==="C"){let f=fU(Q," -> ");if(f){z.push({x:X,y:Z,path:f.neu,origPath:f.orig});continue}}z.push({x:X,y:Z,path:Tf(Q)})}return z}function QU(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function HU(J){let z=[];for(let Y of J.split(`
|
|
80
|
-
`)){let G=Y.replace(/\r$/,"");if(G.length===0)continue;let X=G.indexOf("\t");if(X<0)continue;let Z=G.indexOf("\t",X+1);if(Z<0)continue;let Q=G.slice(Z+1);if(Q.length===0)continue;let f=tk(Q);if(f.path.length===0)continue;z.push({path:f.path,...f.origPath!==void 0?{origPath:f.origPath}:{},added:QU(G.slice(0,X)),deleted:QU(G.slice(X+1,Z))})}return z}var ok,sk;var Uj=k(()=>{ok=new TextEncoder,sk=new TextDecoder});var BU={};j1(BU,{sameWorktreeChanges:()=>hz,readWorktreeChanges:()=>Jb,pickPushedChanges:()=>Ef,parsePorcelain:()=>TX});import{spawnSync as ek}from"child_process";function hz(J,z){return J.added===z.added&&J.deleted===z.deleted}function Ef(J,z){if(!J)return null;return J.get(z)??uf}function Jb(J){if(!J)return uf;try{let z=ek("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:nJ()});if(z.status!==0||!z.stdout)return uf;return TX(z.stdout)}catch{return uf}}function TX(J){let z=0,Y=0;for(let{x:G,y:X}of xf(J))if(G==="D"||X==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var uf;var xX=k(()=>{cY();Uj();uf={added:0,deleted:0}});async function Xb(J,z){let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:nJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}function Zb(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if($1(Y.repo)||$1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class jU{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=Zb(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){y1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:zb,slowRetryMs:Yb,minIntervalMs:Gb},G=this.options.run??Xb;zX(z,Y,(X)=>G(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&hz(z.value,X))return;z.value=X,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function WU(J,z,Y=Dj,G){if(Y<=0)return()=>{};let X=new jU(J,z,{hasSubscribers:G});X.tick();let Z=setInterval(()=>X.tick(),Y);return Z.unref?.(),()=>{clearInterval(Z),X.stop()}}var Dj=2000,zb=4000,Yb=60000,Gb=1500;var VU=k(()=>{cY();YX();O1();xX()});import{mkdir as KU,readFile as Qb,unlink as Lj,writeFile as qb}from"fs/promises";import{createServer as fb}from"net";import{dirname as UU}from"path";import{StringDecoder as Hb}from"string_decoder";function jb(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return DU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:DU}async function MU(J,z={}){let Y=z.socketPath??
|
|
80
|
+
`)){let G=Y.replace(/\r$/,"");if(G.length===0)continue;let X=G.indexOf("\t");if(X<0)continue;let Z=G.indexOf("\t",X+1);if(Z<0)continue;let Q=G.slice(Z+1);if(Q.length===0)continue;let f=tk(Q);if(f.path.length===0)continue;z.push({path:f.path,...f.origPath!==void 0?{origPath:f.origPath}:{},added:QU(G.slice(0,X)),deleted:QU(G.slice(X+1,Z))})}return z}var ok,sk;var Uj=k(()=>{ok=new TextEncoder,sk=new TextDecoder});var BU={};j1(BU,{sameWorktreeChanges:()=>hz,readWorktreeChanges:()=>Jb,pickPushedChanges:()=>Ef,parsePorcelain:()=>TX});import{spawnSync as ek}from"child_process";function hz(J,z){return J.added===z.added&&J.deleted===z.deleted}function Ef(J,z){if(!J)return null;return J.get(z)??uf}function Jb(J){if(!J)return uf;try{let z=ek("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:nJ()});if(z.status!==0||!z.stdout)return uf;return TX(z.stdout)}catch{return uf}}function TX(J){let z=0,Y=0;for(let{x:G,y:X}of xf(J))if(G==="D"||X==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var uf;var xX=k(()=>{cY();Uj();uf={added:0,deleted:0}});async function Xb(J,z){let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:nJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}function Zb(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if($1(Y.repo)||$1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class jU{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=Zb(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){y1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:zb,slowRetryMs:Yb,minIntervalMs:Gb},G=this.options.run??Xb;zX(z,Y,(X)=>G(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&hz(z.value,X))return;z.value=X,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function WU(J,z,Y=Dj,G){if(Y<=0)return()=>{};let X=new jU(J,z,{hasSubscribers:G});X.tick();let Z=setInterval(()=>X.tick(),Y);return Z.unref?.(),()=>{clearInterval(Z),X.stop()}}var Dj=2000,zb=4000,Yb=60000,Gb=1500;var VU=k(()=>{cY();YX();O1();xX()});import{mkdir as KU,readFile as Qb,unlink as Lj,writeFile as qb}from"fs/promises";import{createServer as fb}from"net";import{dirname as UU}from"path";import{StringDecoder as Hb}from"string_decoder";function jb(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return DU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:DU}async function MU(J,z={}){let Y=z.socketPath??Sz(z.homeDir),G=z.pidPath??oz(z.homeDir),X=z.startedAt??new Date,Z=new Set,Q=new Set,f=1,H=new Xj({clients:function*(){yield*Z,yield*Q},idleGraceMs:jb(),onIdleStop:()=>void q0().catch((h)=>y1("daemon-idle-shutdown",h))}),B=new xB;B.onPublish((h)=>{LU(Z,{type:"event",name:h.channel,payload:h.payload})});let j=new I8(B,void 0,void 0,async(h)=>{let C=J.getTask(h);if(!C?.worktreePath)return;return oG(C.vendor??a1,C.worktreePath)}),K=new Lf(Df(z.homeDir));await KU(UU(Y),{recursive:!0}),await KU(UU(G),{recursive:!0}),await Lj(Y).catch(()=>{});let L=fb((h)=>{let C={id:f++,connectedAt:new Date,socket:h,writer:new TB(h),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};Z.add(C);let o=new Hb("utf8");h.on("data",(E)=>{C.buffer+=o.write(E),t(C)}),h.on("error",()=>{}),h.on("close",()=>{if(Z.delete(C),C.subscribed)Pz("conn",`client #${C.id} (${C.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${Z.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(C.holdsLifetime)})}),A=J.subscribeTasks((h)=>{B.publish("task.snapshot",{tasks:h.map(Qz)})}),O=z.checkUpdate??zZ,g=z.updatePollMs??Bb,u=()=>{O().then((h)=>B.publish("update",{info:h})).catch((h)=>y1("update-poller",h))},_=null;if(g>0)u(),_=setInterval(u,g),_.unref?.();let S=z.autoTitlePollMs??yB,N=B6(J,S,()=>H.hasSubscribers()),M=ZK(B,{statePath:qj(z.homeDir),debounceMs:z.uiPrefsDebounceMs??Qj}),I=o6(B,{path:Gj(z.homeDir),debounceMs:z.keybindingsDebounceMs??Yj}),r=WU(J,B,z.worktreeChangesTickMs??Dj,()=>H.hasSubscribers()),l=YK(J,B,z.transcriptActivityTickMs??Zj,()=>H.hasSubscribers()),e=e6(J,z.prStatusPollMs??cZ,()=>H.hasSubscribers()),J0=null,T={socketPath:Y,pidPath:G,startedAt:X,get webPort(){return J0?.port},clients:Z,async close(){if(H.markStopping(),A(),J0?.close(),J0=null,_)clearInterval(_);N(),e(),M(),I(),r(),l(),j.close(),LU(Z,{type:"event",name:"daemon.stopping",payload:{}});for(let h of Array.from(Z))h.socket.destroy();await new Promise((h)=>L.close(()=>h())),await Lj(Y).catch(()=>{}),await Lj(G).catch(()=>{})}};await new Promise((h,C)=>{let o=L;o.once("error",C),L.listen(Y,()=>{o.removeListener("error",C),h()})}),await qb(G,`${process.pid}
|
|
81
81
|
`,"utf8");async function q0(){if(H.isStopping())return;H.markStopping(),await z.onStop?.(),setTimeout(()=>{T.close().catch((h)=>y1("daemon-shutdown",h))},0).unref()}let p=hZ();function j0(h){return{orch:J,bus:B,activity:j,issues:K,daemon:{startedAt:X,socketPath:Y,webPort:J0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:q0},clientId:h}}if(z.webPort!==void 0){let h=YU({orch:J,bus:B,activity:j,ctx:j0});J0=await GU({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:h,onEvent:(C)=>B.onPublish(C),onSseOpen:()=>{let C={subscribed:!0,holdsLifetime:!0};return Q.add(C),H.guiAttached(),Pz("conn",`web client subscribed \u2014 ${Z.size+Q.size} client(s), ${H.guiCount()} gui`),()=>{Q.delete(C),Pz("conn",`web client disconnected \u2014 ${Z.size+Q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),Pz("web",`daemon web transport listening on http://${J0.hostname}:${J0.port}`)}async function F0(h,C){if(h.name==="subscribe"){let o=hB(h.payload),E=C.subscribed;C.subscribed=!0;let c=o.role==="gui"?"gui":"pane";C.holdsLifetime=c==="gui",C.channels=iW(o.channels);let s=!E;if(C.holdsLifetime)H.guiAttached();Pz("conn",`client #${C.id} subscribed as ${c}${C.channels?` [${[...C.channels].join(",")}]`:""} \u2014 ${Z.size} client(s), ${H.guiCount()} gui${s?" (collectors resume)":""}`);for(let Z0 of B.snapshot()){if(C.channels&&!C.channels.has(Z0.channel))continue;lZ(C,{type:"event",name:Z0.channel,payload:Z0.payload})}if(!C.channels||C.channels.has("engine-state"))for(let Z0 of j.currentNonIdle())lZ(C,{type:"event",name:"engine-state",payload:Z0});return{}}return PZ(p,h.name,h.payload,j0(C.id))}async function V0(h,C){try{let o=await F0(h,C);lZ(C,{type:"response",id:h.id,name:h.name,payload:o})}catch(o){lZ(C,{type:"response",id:h.id,name:h.name,error:PB(o)})}}function t(h){let C=h.buffer.indexOf(`
|
|
82
82
|
`);while(C!==-1){let o=h.buffer.slice(0,C);if(h.buffer=h.buffer.slice(C+1),o.trim().length>0)try{let E=JSON.parse(o);if(E.type!=="request")throw Error("daemon only accepts request frames from clients");V0(E,h)}catch(E){lZ(h,{type:"response",id:"parse-error",error:{message:E instanceof Error?E.message:String(E)}})}C=h.buffer.indexOf(`
|
|
83
|
-
`)}}return T}async function uX(J){try{let z=await Qb(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function FU(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function lZ(J,z){J.writer.write(GZ(z),FU(z))}function LU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,G=FU(z),X=null;for(let Z of J){if(!Z.subscribed&&z.type==="event")continue;if(Y&&Z.channels&&!Z.channels.has(Y))continue;X??=GZ(z),Z.writer.write(X,G)}}var Bb=21600000,DU=3000;var wf=k(()=>{Xq();sJ();FJ();XV();j6();Kf();lB();s6();t6();lG();JK();GG();GK();QK();XU();VU();Kf();lB()});import{unlink as OU}from"fs/promises";function Wb(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function EX(J,z){let Y=await uX(z),G=Y!==null&&Y!==process.pid?Y:null,X=G!==null&&Wb(G),Z=X?"graceful":"absent",Q=new pJ(J),f=Q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([f,H]),Q.close(),X&&G!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(G,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(G,"SIGTERM")}catch{}Z="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(G,0),process.kill(G,"SIGKILL"),Z="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await OU(J).catch(()=>{}),await OU(z).catch(()=>{}),{pid:Y,method:Z}}var Pf=k(()=>{XZ();wf()});var Hf={};j1(Hf,{testDaemonResponds:()=>hf,ensureDaemonReachable:()=>wX,connectOrStartDaemon:()=>Az,connectIfRunning:()=>zz});import{spawn as Vb}from"child_process";import{closeSync as Kb,existsSync as Ub,mkdirSync as Db,openSync as Lb}from"fs";import{dirname as AU,resolve as Mj}from"path";import{fileURLToPath as Mb}from"url";function Ab(J,z,Y,G){let X="ignore",Z;try{Db(AU(G),{recursive:!0}),Z=Lb(G,"a"),X=["ignore",Z,Z]}catch{X="ignore"}if(Vb(J,[...z],{detached:!0,stdio:X,env:Y}).unref(),Z!==void 0)try{Kb(Z)}catch{}}async function wX(){let J=
|
|
83
|
+
`)}}return T}async function uX(J){try{let z=await Qb(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function FU(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function lZ(J,z){J.writer.write(GZ(z),FU(z))}function LU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,G=FU(z),X=null;for(let Z of J){if(!Z.subscribed&&z.type==="event")continue;if(Y&&Z.channels&&!Z.channels.has(Y))continue;X??=GZ(z),Z.writer.write(X,G)}}var Bb=21600000,DU=3000;var wf=k(()=>{Xq();sJ();FJ();XV();j6();Kf();lB();s6();t6();lG();JK();GG();GK();QK();XU();VU();Kf();lB()});import{unlink as OU}from"fs/promises";function Wb(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function EX(J,z){let Y=await uX(z),G=Y!==null&&Y!==process.pid?Y:null,X=G!==null&&Wb(G),Z=X?"graceful":"absent",Q=new pJ(J),f=Q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([f,H]),Q.close(),X&&G!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(G,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(G,"SIGTERM")}catch{}Z="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(G,0),process.kill(G,"SIGKILL"),Z="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await OU(J).catch(()=>{}),await OU(z).catch(()=>{}),{pid:Y,method:Z}}var Pf=k(()=>{XZ();wf()});var Hf={};j1(Hf,{testDaemonResponds:()=>hf,ensureDaemonReachable:()=>wX,connectOrStartDaemon:()=>Az,connectIfRunning:()=>zz});import{spawn as Vb}from"child_process";import{closeSync as Kb,existsSync as Ub,mkdirSync as Db,openSync as Lb}from"fs";import{dirname as AU,resolve as Mj}from"path";import{fileURLToPath as Mb}from"url";function Ab(J,z,Y,G){let X="ignore",Z;try{Db(AU(G),{recursive:!0}),Z=Lb(G,"a"),X=["ignore",Z,Z]}catch{X="ignore"}if(Vb(J,[...z],{detached:!0,stdio:X,env:Y}).unref(),Z!==void 0)try{Kb(Z)}catch{}}async function wX(){let J=Sz();if(await hf(J))return J;await EX(J,oz()).catch(()=>{});let[z,...Y]=Rb(Fb);Ab(z,Y,process.env,PQ());let G=Date.now()+5000;while(Date.now()<G){if(await hf(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Az(){let J=await wX(),z=new pJ(J);return await z.connect(),z}async function zz(){let J=Sz();if(!await hf(J))return null;let z=new pJ(J);return await z.connect(),z}async function hf(J,z=Ob){let Y=new pJ(J);try{await Y.connect()}catch{return Y.close(),!1}let G=Y.request("hello",{protocolVersion:_J}).then(()=>!0).catch(()=>!0),X,Z=new Promise((f)=>{X=setTimeout(()=>f(!1),z)}),Q=await Promise.race([G,Z]);if(X)clearTimeout(X);return Y.close(),Q}function Rb(J){let z=Mb(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=AU(z),G=[Mj(Y,"../cli/index.ts"),Mj(Y,"../../../kobe/src/cli/index.ts"),Mj(Y,"../cli/index.js")],X=G.find((Z)=>Ub(Z));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${G.join(", ")}`)}var Fb,Ob=3000;var OJ=k(()=>{Pf();lG();GG();XZ();Fb=["daemon","start"]});import{mkdir as gb,readFile as RU,unlink as CU,writeFile as gU}from"fs/promises";import{dirname as Cb}from"path";function Nb(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 Fj(J,z={}){await gb(Cb(J),{recursive:!0});try{await gU(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Y=-1;try{let X=(await RU(J,"utf8")).trim();if(Y=Number.parseInt(X,10),!Number.isFinite(Y))Y=-1}catch{return Fj(J,z)}let G=Y>0&&Nb(Y);if(G&&!z.forceTakeover)throw new $Z(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${G?", forced":", process gone"})`);try{await CU(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await gU(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let Z=-1;try{Z=Number.parseInt((await RU(J,"utf8")).trim(),10)}catch{Z=-1}throw new $Z(`task index lockfile contended during takeover (winner pid ${Z})`,Z)}throw X}}async function NU(J){try{await CU(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var $Z;var kU=k(()=>{$Z=class $Z extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function kb(J,z){let Y="",G=J;for(let X=z-1;X>=0;X--){let Z=G%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Z]+Y,G=(G-Z)/32}return Y}function IU(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let G=0;G<J;G++)Y[G]=(z[G]??0)&31;return Y}function bb(J){for(let z=J.length-1;z>=0;z--){let Y=J[z]??0;if(Y<31)return J[z]=Y+1,!0;J[z]=0}return!1}function Sb(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function yU(J=Date.now()){let z;if(J===bU){let Y=SU.slice();if(!bb(Y))z=IU(16);else z=Y}else z=IU(16);return bU=J,SU=z,kb(J,10)+Sb(z)}var bU=-1,SU;var TU=k(()=>{SU=Array(16).fill(0)});var Oj={};j1(Oj,{TaskIndexStore:()=>PX});import{mkdir as Ib,open as yb,readFile as xU,rename as Tb,unlink as uU}from"fs/promises";import{homedir as xb}from"os";import{dirname as ub,join as EU}from"path";async function hb(J){let z=Date.now()+Pb;for(;;)try{await Fj(J);return}catch(Y){if(!(Y instanceof $Z)||Date.now()>=z)throw Y;await Eb(wb)}}class PX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:BY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??xb(),this.kobeDir=EU(this.homeDir,".kobe"),this.path=EU(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await xU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:BY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:BY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=wU(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 Ib(ub(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await hb(this.lockPath);try{let Y=await this.readDiskTasks(),G=this.mergeWithDisk(Y,J,z),Z=`${JSON.stringify({version:BY,tasks:G},null,2)}
|
|
84
84
|
`,Q=await yb(this.tmpPath,"w",420);try{await Q.writeFile(Z,"utf8"),await Q.sync()}finally{await Q.close()}await Tb(this.tmpPath,this.path);for(let H of J)this.dirtyIds.delete(H);for(let H of z)this.removedIds.delete(H);let f=new Set(this.cache.tasks.map((H)=>H.id));for(let H of G)if(!f.has(H.id))this.cache.tasks.push(H)}finally{await NU(this.lockPath)}}async readDiskTasks(){let J;try{J=await xU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return wU(z,this.path).tasks}mergeWithDisk(J,z,Y){let G=new Map(J.map((Q)=>[Q.id,Q])),X=[],Z=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))X.push(Q);else{let f=G.get(Q.id);if(f===void 0)continue;X.push(f)}Z.add(Q.id)}for(let Q of J){if(Z.has(Q.id)||Y.has(Q.id))continue;X.push(Q),Z.add(Q.id)}return X}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??a1,...J,id:KZ(yU()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===J);if(Y<0)throw Error(`task not found: ${J}`);let G=this.cache.tasks[Y];if(!G)throw Error(`task not found: ${J}`);let{id:X,createdAt:Z,...Q}=z,f={...G,...Q,id:G.id,createdAt:G.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=f,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),f}async move(J,z,Y){this.assertLoaded();let G=this.cache.tasks.find((L)=>L.id===J);if(!G)throw Error(`task not found: ${J}`);let X=Y?.length?Y:this.cache.tasks.map((L)=>L.id),Z=X.indexOf(String(J));if(Z<0)throw Error(`task not movable in current group: ${J}`);let Q=X[Z+z];if(!Q)return G;let f=this.cache.tasks.findIndex((L)=>L.id===J),H=this.cache.tasks.findIndex((L)=>L.id===Q);if(f<0||H<0||f===H)return G;let[B]=this.cache.tasks.splice(f,1);if(!B)return G;let V=f<H?H-1:H,j=z>0?V+1:V,K={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((Z)=>{let Q=this.cache.tasks.findIndex((H)=>H.id===Z.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${Z.id}`);return{idx:Q,position:Z.position}}),Y=!1,G=new Map,X=[];for(let{idx:Z,position:Q}of z){let f=this.cache.tasks[Z];if(!f||f.position===Q)continue;if(!G.has(Z))G.set(Z,f);if(this.cache.tasks[Z]={...f,position:Q},!this.dirtyIds.has(f.id))this.dirtyIds.add(f.id),X.push(f.id);Y=!0}if(!Y)return;try{await this.save()}catch(Z){for(let[Q,f]of G)this.cache.tasks[Q]=f;for(let Q of X)this.dirtyIds.delete(Q);throw Z}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await uU(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await uU(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:BY,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:BY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function wU(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:BY,tasks:[]};let Y=J,G=Y.version;if(G!==void 0&&G!==1&&G!==2&&G!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(G)}; recovering with empty index.`),{version:BY,tasks:[]};let X=Array.isArray(Y.tasks)?Y.tasks:[],Z=[];for(let Q of X){let f=vb(Q);if(f)Z.push(f);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:BY,tasks:Z}}function vb(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(!ib(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,G=z.kind==="main"?"main":"task",X=G==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:KZ(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:X,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:G,vendor:tY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:mb(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 mb(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!cb(z.provider)||!db(z.lifecycle)||!nb(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 cb(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function db(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function nb(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function ib(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var Eb=(J)=>new Promise((z)=>setTimeout(z,J)),wb=25,Pb=5000,BY=3;var aZ=k(()=>{sJ();l1();kU();TU()});var vf;var PU=k(()=>{vf=class vf extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var mU={};j1(mU,{GitWorktreeManager:()=>mf});import vU from"fs";import Rz from"path";class mf{execDeps;constructor(J=lb){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let G=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),X={stdout:G.stdout,stderr:G.stderr,exitCode:G.exitCode};if(X.exitCode!==0&&!Y.allowFail)throw new vf(z,Y.cwd,X);return X}async create(J,z,Y,G){let X=this.ctxFor(J);if(nY("repo",X.dir),nY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Y)){let H=await this.tryDescribe(X,Y);if(H){if(H.branch!==z)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${z}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await X.exec.mkdirp(Rz.dirname(Y));let Q=await this.branchExists(X,z)?["worktree","add",Y,z]:G?["worktree","add","-b",z,Y,G]:["worktree","add","-b",z,Y];await this.runGit(X.exec,Q,{cwd:X.dir});let f=await this.tryDescribe(X,Y);if(!f)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(f.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${f.branch}'`);return f}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?cV(z,J.slug):PV(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){nY("path",J);let Y=this.execDeps.execForPath(J),G=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let X=await this.findRepoFor(Y,J);if(!X)throw Error(`remove(): ${J} is not a git worktree`);if(!G){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let Z=G?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,Z,{cwd:X}),await this.runGit(Y,["worktree","prune"],{cwd:X,allowFail:!0})}async list(J){let z=this.ctxFor(J);nY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),G=Aj(Y.stdout),X=[];for(let Z of G){if(!Z.path)continue;let Q=z.remote?hU(z.dir,Z.path):a8(J,Z.path);if(!Q)continue;if(!Z.branch||Z.detached)continue;let f=_Z(Q),H=_Z(Z.path),B=Rz.relative(f,H),V=Rz.join(Q,B),j=await this.isDirty(Z.path);X.push({path:V,branch:Z.branch,head:Z.head??"",dirty:j})}return X}async listAll(J){let z=this.ctxFor(J);nY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),G=Aj(Y.stdout),X=z.remote?z.dir:_Z(z.dir),Z=[];for(let Q of G){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:_Z(Q.path))===X)continue;let f=await this.isDirty(Q.path);Z.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:f,kobeManaged:z.remote?hU(z.dir,Q.path)!==null:vV(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return Z.sort((Q,f)=>f.lastActivityMs-Q.lastActivityMs),Z}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),G=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(G)&&G>0)return G*1000}catch{}if(!J.isRemote)try{return vU.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){nY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){nY("path",J);let z=this.execDeps.execForPath(J),G=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!G||G==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return G}async renameBranch(J,z,Y){if(nY("path",J),z===Y)return;let G=this.execDeps.execForPath(J),X=await this.findRepoFor(G,J);if(!X)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(G,["branch","-m",z,Y],{cwd:X})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),G=Aj(Y.stdout),X=(f)=>J.remote?f:_Z(f),Z=X(z),Q=G.find((f)=>f.path&&X(f.path)===Z);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let G=Y.stdout.trim();if(!G)return null;let X=Rz.isAbsolute(G)?G:Rz.resolve(z,G);return Rz.basename(X)===".git"?Rz.dirname(X):X}catch(Y){if(Y instanceof vf)return null;throw Y}}}function Aj(J){let z=[],Y=null;for(let G of J.split(`
|
|
85
85
|
`)){let X=G.replace(/\r$/,"");if(X===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(X.startsWith("worktree "))Y.path=X.slice(9);else if(X.startsWith("HEAD "))Y.head=X.slice(5);else if(X.startsWith("branch ")){let Z=X.slice(7);Y.branch=Z.startsWith("refs/heads/")?Z.slice(11):Z}else if(X==="detached")Y.detached=!0;else if(X==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function hU(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function nY(J,z){if(!z||!Rz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function _Z(J){try{return vU.realpathSync(J)}catch{return Rz.resolve(J)}}var lb;var Rj=k(()=>{Vz();O1();PU();_8();lb={execForRepo:GX,execForPath:XY,remoteBasePath(J){return pz(J)?.basePath??null}}});var cf;var cU=k(()=>{cf=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var nU={};j1(nU,{runCompletionsSubcommand:()=>pb});function $b(){return`# kobe bash completions
|
|
86
86
|
# Source: kobe completions bash
|
|
@@ -121,24 +121,24 @@ ${dU}`),process.exit(2);let Y;if(z==="bash")Y=$b();else if(z==="zsh")Y=ab();else
|
|
|
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 iU=k(()=>{cU()});var _U={};j1(_U,{runExportSubcommand:()=>
|
|
124
|
+
`;var iU=k(()=>{cU()});var _U={};j1(_U,{runExportSubcommand:()=>YS,renderExport:()=>aU,displayWidth:()=>df});function rb(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??a1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function gj(J){process.stderr.write(`kobe export: ${J}
|
|
125
125
|
|
|
126
126
|
${$U}
|
|
127
127
|
`),process.exit(2)}function ob(J){let z="json";for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="--json")z="json";else if(G==="--csv")z="csv";else if(G==="--format"){let X=J[++Y];if(X===void 0)gj("--format requires a value (json, csv, or table)");z=lU(X)}else if(G.startsWith("--format="))z=lU(G.slice(9));else gj(`unexpected argument "${G}"`)}return z}function lU(J){if(J==="json"||J==="csv"||J==="table")return J;gj(`unknown format "${J}" (expected json, csv, or table)`)}function sb(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function tb(J){let z=[pZ.join(",")];for(let Y of J)z.push(pZ.map((G)=>sb(Y[G])).join(","));return z.join(`
|
|
128
|
-
`)}function df(J){let z=0;for(let Y of J)z+=eb(Y.codePointAt(0));return z}function eb(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
|
|
129
|
-
`)}function aU(J,z){let Y=J.map(rb);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return tb(Y);return
|
|
128
|
+
`)}function df(J){let z=0;for(let Y of J)z+=eb(Y.codePointAt(0));return z}function eb(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 JS(J,z){return J+" ".repeat(Math.max(0,z-df(J)))}function zS(J){let z={};for(let X of pZ)z[X]=Math.max(df(X),...J.map((Z)=>df(Z[X])));let Y=(X)=>pZ.map((Z)=>JS(X[Z],z[Z])).join(" ").trimEnd(),G={};for(let X of pZ)G[X]=X;return[Y(G),...J.map(Y)].join(`
|
|
129
|
+
`)}function aU(J,z){let Y=J.map(rb);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return tb(Y);return zS(Y)}async function YS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${$U}
|
|
130
130
|
`);return}let z=ob(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (aZ(),Oj)),G=new Y;await G.load();let X=G.list();if(X.length===0&&z==="table"){process.stdout.write(`no tasks
|
|
131
131
|
`);return}process.stdout.write(`${aU(X,z)}
|
|
132
132
|
`)}var $U,pZ;var pU=k(()=>{sJ();$U=["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
|
-
`),pZ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var sU={};j1(sU,{runRepoSubcommand:()=>
|
|
133
|
+
`),pZ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var sU={};j1(sU,{runRepoSubcommand:()=>QS});import{readFileSync as GS}from"fs";import{resolve as nf}from"path";function iY(J){process.stderr.write(`kobe repo: ${J}
|
|
134
134
|
|
|
135
135
|
${oU}
|
|
136
|
-
`),process.exit(2)}function rU(J){try{return
|
|
137
|
-
`);return}let{getRepoInitOverride:G,setRepoInitOverride:X,resolveRepoRoot:Z}=await Promise.resolve().then(() => (O1(),rz)),{existsSync:Q}=await import("fs"),{join:f}=await import("path");if(z==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=Z(nf(process.cwd(),H??".")),V=G(B),j=Q(f(B,".kobe","init.sh")),K=Q(f(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?hX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?hX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let H=
|
|
138
|
-
`)});import{spawnSync as
|
|
136
|
+
`),process.exit(2)}function rU(J){try{return GS(nf(process.cwd(),J),"utf8")}catch(z){iY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function XS(J){let z={};for(let Y=0;Y<J.length;Y++){let G=J[Y],X=()=>{let Z=J[++Y];if(Z===void 0)iY(`${G} requires a value`);return Z};if(G==="--init-script")z.initScript=X();else if(G==="--init-script-file")z.initScript=rU(X());else if(G==="--init-prompt")z.initPrompt=X();else if(G==="--init-prompt-file")z.initPrompt=rU(X());else if(G.startsWith("-"))iY(`unknown flag "${G}"`);else if(z.path===void 0)z.path=G;else iY(`unexpected argument "${G}"`)}return z}function ZS(J){let z,Y=!1,G=!1;for(let X of J)if(X==="--init-script")Y=!0;else if(X==="--init-prompt")G=!0;else if(X.startsWith("-"))iY(`unknown flag "${X}"`);else if(z===void 0)z=X;else iY(`unexpected argument "${X}"`);if(!Y&&!G)Y=!0,G=!0;return{path:z,clearScript:Y,clearPrompt:G}}async function QS(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${oU}
|
|
137
|
+
`);return}let{getRepoInitOverride:G,setRepoInitOverride:X,resolveRepoRoot:Z}=await Promise.resolve().then(() => (O1(),rz)),{existsSync:Q}=await import("fs"),{join:f}=await import("path");if(z==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=Z(nf(process.cwd(),H??".")),V=G(B),j=Q(f(B,".kobe","init.sh")),K=Q(f(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?hX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?hX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let H=XS(Y);if(H.initScript===void 0&&H.initPrompt===void 0)iY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=Z(nf(process.cwd(),H.path??".")),V=X(B,{...H.initScript!==void 0?{initScript:H.initScript}:{},...H.initPrompt!==void 0?{initPrompt:H.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?hX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?hX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:H,clearScript:B,clearPrompt:V}=ZS(Y),j=Z(nf(process.cwd(),H??".")),K=X(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${K.initScript?hX(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?hX(K.initPrompt):"(unset)"}`);return}iY(`unknown verb "${z}"`)}function hX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var oU;var tU=k(()=>{oU=["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 qS}from"child_process";function BS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function eU(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function J4(J,z){let Y=z?.map((G)=>typeof G.message==="string"?G.message:null).filter((G)=>!!G);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function z4(J,z,Y){let G=["api","graphql","-f",`query=${J}`];for(let[H,B]of Object.entries(z))G.push("-f",`${H}=${B}`);let X=Y.spawn("gh",G,{encoding:"utf8"});if(X.error)throw Error(`failed to run gh: ${X.error.message}`);let Z=typeof X.stdout==="string"?X.stdout:String(X.stdout??""),Q=typeof X.stderr==="string"?X.stderr:String(X.stderr??""),f;try{f=JSON.parse(Z)}catch{throw Error(`failed to parse gh response: ${J4(Q,void 0)}`)}if((X.status??0)!==0||f.errors?.length)throw Error(J4(Q,f.errors));if(!f.data)throw Error("GitHub CLI response did not include data");return f.data}function jS(J){return`${J}
|
|
139
139
|
|
|
140
140
|
---
|
|
141
|
-
Submitted from kobe ${o0}.`}function vX(J,z={}){let Y=eU(J.title,"feedback title"),G=
|
|
141
|
+
Submitted from kobe ${o0}.`}function vX(J,z={}){let Y=eU(J.title,"feedback title"),G=jS(eU(J.body,"feedback body")),X=(z.repoSlug??JG)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:Z,name:Q}=BS(X),f=J.categorySlug?.trim()||Cj,H={spawn:z.spawn??qS},V=z4(fS,{owner:Z,name:Q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${X}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===f);if(!K)throw Error(`GitHub Discussion category not found: ${f}`);let A=z4(HS,{repositoryId:j,categoryId:K.id,title:Y,body:G},H).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var Cj="feedback",fS=`
|
|
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
|
+
`,HS=`
|
|
155
155
|
mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
|
|
156
156
|
createDiscussion(input: {
|
|
157
157
|
repositoryId: $repositoryId,
|
|
@@ -165,37 +165,37 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
`;var lf=k(()=>{FJ()});async function Y4(J={}){let z=J.mode==="require-running"?await zz():await Az();if(!z)return null;return{client:z,close:()=>z.close()}}var G4=k(()=>{OJ()});var K4={};j1(K4,{verbSchema:()=>
|
|
168
|
+
`;var lf=k(()=>{FJ()});async function Y4(J={}){let z=J.mode==="require-running"?await zz():await Az();if(!z)return null;return{client:z,close:()=>z.close()}}var G4=k(()=>{OJ()});var K4={};j1(K4,{verbSchema:()=>Ij,verbHelp:()=>j4,validateAgainstSpec:()=>bj,schemaIndex:()=>H4,runApiSubcommand:()=>PS,parseFlags:()=>kj,parseAgentsSpec:()=>q4,invokeVerb:()=>wS,fullSchema:()=>B4,findVerb:()=>rZ,deliverPrompt:()=>W4,defaultApiRuntime:()=>yj,apiUsage:()=>$f,VerbArgs:()=>Sj,VERB_GROUPS:()=>cX,VERBS:()=>dX,FANOUT_CAP:()=>mX,ApiError:()=>F1,API_VERBS:()=>KS,API_SCHEMA_VERSION:()=>Nj});import{resolve as X4}from"path";function Q4(J){for(let[z,Y]of Object.entries(cX))if(Y.includes(J))return z;return"other"}async function VS(J){let z=J.args.str("verb");if(z){let G=rZ(z);if(!G)throw new F1(`unknown verb: ${z}`,"BAD_VERB");return Ij(G)}let Y=J.args.str("group");if(Y)return DS(Y);if(J.args.bool("all"))return B4();return H4()}function rZ(J){let z=af[J]??J;return dX.find((Y)=>Y.name===z)}function kj(J,z=new Set){let Y=new Map,G=!1,X=!1;for(let Z=0;Z<J.length;Z++){let Q=J[Z];if(!Q.startsWith("--")&&Q!=="-h")throw new F1(`unexpected positional arg: ${Q}`,"BAD_FLAG");if(Q==="-h"){X=!0;continue}let f=Q.indexOf("=");if(f!==-1){let V=Q.slice(2,f),j=Q.slice(f+1);if(V==="pretty")G=j!=="false"&&j!=="0";else if(V==="help")X=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=Q.slice(2);if(H==="pretty"){G=!0;continue}if(H==="help"){X=!0;continue}if(z.has(H)){Y.set(H,"true");continue}let B=J[Z+1];if(B===void 0||B.startsWith("--"))throw new F1(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),Z+=1}return{flags:Y,pretty:G,help:X}}function bj(J,z){let Y=new Set(J.flags.map((G)=>G.name));for(let G of z.keys())if(!Y.has(G))throw new F1(`unknown flag --${G} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let G of J.flags){if(G.required&&!z.get(G.name))throw new F1(`--${G.name} is required for "${J.name}"`,"MISSING_FLAG");if(G.type==="enum"&&G.values){let X=z.get(G.name);if(X!==void 0&&!G.values.includes(X))throw new F1(`--${G.name} must be one of ${G.values.join(", ")}`,"BAD_FLAG")}if(G.type==="int"){let X=z.get(G.name);if(X!==void 0){let Z=Number.parseInt(X,10);if(!Number.isInteger(Z)||Z<=0)throw new F1(`--${G.name} must be a positive integer`,"BAD_FLAG")}}}}class Sj{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new F1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new F1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new F1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new F1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:X4(process.cwd(),z)}requirePath(J){return X4(process.cwd(),this.require(J))}}function q4(J){let z=[];for(let Y of J.split(",")){let G=Y.trim();if(!G)continue;let X=G.indexOf(":");if(X===-1)throw new F1(`--agents entry "${G}" must be vendor:count`,"BAD_FLAG");let Z=G.slice(0,X);if(!i1.includes(Z))throw new F1(`--agents vendor "${Z}" must be one of ${i1.join(", ")}`,"BAD_FLAG");let Q=Number.parseInt(G.slice(X+1),10);if(!Number.isInteger(Q)||Q<=0)throw new F1(`--agents count for "${Z}" must be a positive integer`,"BAD_FLAG");if(z.length+Q>mX)throw new F1(`--agents requests ${z.length+Q} agents, exceeds the cap of ${mX}`,"BAD_FLAG");for(let f=0;f<Q;f++)z.push(Z)}if(z.length===0)throw new F1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function US(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 Ij(J){return{name:J.name,group:Q4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(US)}}function H4(){return{apiVersion:Nj,kobeVersion:o0,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:cX,verbs:dX.map((J)=>({name:J.name,group:Q4(J.name),summary:J.summary})),globalFlags:f4,aliases:af}}function DS(J){let z=cX[J];if(!z)throw new F1(`unknown group: ${J}. Groups: ${Object.keys(cX).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let G=rZ(Y);return{name:Y,summary:G?.summary??""}})}}function B4(){return{apiVersion:Nj,kobeVersion:o0,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:f4,aliases:af,groups:cX,verbs:dX.map(Ij)}}function LS(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),G=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?G:`[${G}]`}).join(" ")}function j4(J){let z=[`kobe api ${J.name} ${LS(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(af).find(([,G])=>G===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let G of J.flags){let X=G.required?" (required)":"",Z=G.default!==void 0?` [default: ${G.default}]`:"",Q=G.type==="enum"&&G.values?` {${G.values.join("|")}}`:"";z.push(` --${G.name}${Q}${X}${Z} ${G.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
|
|
169
169
|
`)}function $f(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...dX.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
|
|
170
|
+
`)}function MS(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
|
|
171
171
|
`)}function jY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
|
|
172
|
-
`),process.exit(Y)}async function W4(J,z,Y,G=
|
|
172
|
+
`),process.exit(Y)}async function W4(J,z,Y,G=FS){let X=z.worktreePath;if(!X)X=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!X)throw new F1(`task ${z.id} has no worktree`,"NO_WORKTREE");let Z=M1(z.id),Q=await G.sessionExists(Z);if(!Q){let B=await G.resolveEngineLaunchInit(z.repo??"",X,{kind:"none"});if(!await G.ensureSession({name:Z,cwd:X,command:G.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new F1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:f,ready:H}=await G.waitForEnginePane(Z,!Q);if(!f)throw new F1(`no engine pane in session ${Z}`,"NO_ENGINE_PANE");return await G.pasteAndSubmit(f,Y),{session:Z,pane:f,started:!Q,engineReady:H}}async function OS(J){let z=null,Y=J.onChannel("active-task",(G)=>{z=G.taskId});try{await J.subscribe()}finally{Y()}return z}function iJ(J){if(!J.client)throw new F1("daemon required","BAD_DAEMON");return J.client}async function gz(J,z,Y){return iJ(J).request(z,Y)}async function AS(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new F1("issue-update requires --title and/or --body","MISSING_FLAG");return gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function RS(J){let z=iJ(J),{args:Y,runtime:G}=J,Z={repo:await G.resolveRepoRoot(Y.requirePath("repo"))},Q=Y.str("title");if(Q)Z.title=Q;let f=Y.str("branch");if(f)Z.branch=f;let H=Y.str("base-branch");if(H)Z.baseRef=H;let B=Y.vendor()??await G.defaultVendor();if(B)Z.vendor=B;let V=await z.request("task.create",Z),j=V.taskId;await z.request("task.setActive",{taskId:j});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:j,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:j,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:j})).task;let O=Y.str("prompt");if(!O)return{taskId:j,task:A,started:!1};let g=await J.runtime.deliverPrompt(z,{id:j,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:j})).task,{taskId:j,task:A,started:g.started,engineReady:g.engineReady,session:g.session}}async function gS(J){let z=iJ(J),Y=J.args.require("prompt"),G=J.args.str("task-id");if(!G){let Q=await OS(z);if(!Q)throw new F1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");G=Q}let X=await z.request("task.get",{taskId:G}),Z=await J.runtime.deliverPrompt(z,{id:G,worktreePath:X.task.worktreePath,vendor:X.task.vendor,repo:X.task.repo},Y);return{ok:!0,taskId:G,session:Z.session,started:Z.started,engineReady:Z.engineReady}}async function CS(J){let z=iJ(J),Y=J.args.require("task-id"),G=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:G,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function NS(J){let z=iJ(J),Y=J.args.require("task-id"),G=J.args.require("text");return await z.request("note.file",{taskId:Y,text:G})}async function kS(J){let z=iJ(J),Y=J.args.require("task-id"),G=await z.request("task.get",{taskId:Y}),X=await J.runtime.isTaskRunning(Y);return{task:G.task,running:X}}async function bS(J){return iJ(J).request("task.list")}async function SS(J){let z=iJ(J),G=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:G}),{ok:!0,activeTaskId:G}}async function IS(J){let z=iJ(J),Y=J.args.require("task-id"),G=J.args.bool("archived")??!0,X=await z.request("task.archive",{taskId:Y,archived:G});if(G)await J.runtime.tearDownSession(Y);return X}async function yS(J){let z=iJ(J),Y=J.args.require("task-id"),G=J.args.bool("force")??!1,X=await z.request("task.delete",{taskId:Y,force:G});return await J.runtime.tearDownSession(Y),X}async function TS(J){let z=iJ(J),{args:Y}=J,G={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},X=Y.str("branch");if(X)G.branch=X;let Z=Y.vendor();if(Z)G.vendor=Z;let Q=Y.str("title");if(Q)G.title=Q;return z.request("worktree.adopt",G)}async function xS(J){let z=iJ(J),{args:Y,runtime:G}=J,X=await G.resolveRepoRoot(Y.requirePath("repo")),Z=Y.require("prompt"),Q=Y.str("title"),f=Y.str("base-branch"),H=Y.str("agents"),B=await G.defaultVendor(),V=H?q4(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>mX)throw new F1(`fan-out of ${V.length} exceeds the cap of ${mX} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let K of V){let L={repo:X,vendor:K};if(Q)L.title=Q;if(f)L.baseRef=f;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},Z);j.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:j.length,tasks:j}}async function uS(J){let z=iJ(J),{args:Y,runtime:G}=J,X=Y.str("task-ids"),Z=Y.path("repo"),Q;if(X)Q=X.split(",").map((H)=>H.trim()).filter(Boolean);else if(Z){let H=await G.resolveRepoRoot(Z),{tasks:B}=await z.request("task.list");Q=[];for(let V of B){if(V.archived)continue;if(await G.resolveRepoRoot(V.repo)===H)Q.push(V.id)}}else throw new F1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let f=[];for(let H of Q){let{task:B}=await z.request("task.get",{taskId:H}),V=await G.isTaskRunning(H),j=B.worktreePath?await G.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};f.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:j})}return{tasks:f}}async function ES(J){return{ok:!0,discussion:vX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function V4(J,z,Y,G){return{args:new Sj(J,z),client:Y,runtime:G}}async function wS(J,z,Y){let G=rZ(J);if(!G)throw new F1(`unknown verb: ${J}`,"BAD_VERB");let X=new Set(G.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),Z=kj(z,X);return bj(G,Z.flags),G.handler(V4(G,Z.flags,Y.client,Y.runtime??yj))}async function PS(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)jY($f(),"MISSING_VERB",2);process.stdout.write(`${$f()}
|
|
173
173
|
`);return}let G=rZ(z);if(!G)jY(`unknown verb: ${z}
|
|
174
174
|
${$f()}`,"BAD_VERB",2);let X=new Set(G.flags.filter((f)=>f.type==="bool").map((f)=>f.name)),Z;try{Z=kj(Y,X)}catch(f){if(f instanceof F1)jY(f.message,f.code,2);jY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}if(Z.help){process.stdout.write(`${j4(G)}
|
|
175
|
-
`);return}try{bj(G,Z.flags)}catch(f){if(f instanceof F1)jY(f.message,f.code,2);jY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}let Q=null;if(!G.offline)try{Q=await Y4()}catch(f){jY(`could not reach or start the kobe daemon: ${f instanceof Error?f.message:String(f)}`,"BAD_DAEMON",2)}try{let f=await G.handler(V4(G,Z.flags,Q?.client??null,yj));MI(f,Z.pretty)}catch(f){if(f instanceof F1)jY(f.message,f.code,1);jY(f instanceof Error?f.message:String(f),"RPC_ERROR",1)}finally{Q?.close()}}var Nj=2,mX=10,Z4,WI,F1,K1,af,cX,dX,KI,f4,FI,yj;var U4=k(()=>{vJ();lf();P1();Eq();l1();FJ();G4();Z4=["backlog","in_progress","in_review","done","canceled","error"],WI=["open","doing","hold","done"];F1=class F1 extends Error{code;constructor(J,z){super(J);this.code=z}};K1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:i1,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})},af={"spawn-task":"add"},cX={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"]};dX=[{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:VI},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:bI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[K1.taskId()],handler:kI},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[K1.repo(),K1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},K1.vendor(),{name:"status",type:"enum",values:Z4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},K1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:RI},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mX}.`,flags:[K1.repo(),K1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},K1.vendor(),K1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:xI},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[K1.taskId(!1),K1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:gI},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[K1.taskId(!0),K1.prompt(!0,"Text delivered into the task's engine session.")],handler:CI},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[K1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:NI},{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:Cj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:EI},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[K1.repo()],handler:(J)=>gz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[K1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:WI,description:"New issue status."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:AI},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},K1.repo(!1)],handler:uI},{name:"rename",summary:"Set a task's title.",flags:[K1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>gz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[K1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>gz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[K1.taskId(),{...K1.vendor(),required:!0}],handler:(J)=>gz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[K1.taskId(),{name:"status",type:"enum",required:!0,values:Z4,description:"New status."}],handler:(J)=>gz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[K1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:SI},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[K1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>gz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[K1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:II},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[K1.taskId()],handler:(J)=>gz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[K1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:yI},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[K1.repo()],handler:(J)=>gz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[K1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},K1.vendor(),K1.title()],handler:TI}],KI=dX.map((J)=>J.name);f4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];FI={sessionExists:H1,ensureSession:async(J)=>(await Promise.resolve().then(() => (YJ(),cJ))).ensureSession(J),waitForEnginePane:kZ,pasteAndSubmit:bZ,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (SX(),Wj))).resolveEngineLaunchInit(J,z,Y),engineCommand:yJ};yj={isTaskRunning:(J)=>H1(M1(J)),deliverPrompt:(J,z,Y)=>W4(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (O1(),rz))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (O1(),rz)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xX(),BU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=M1(J);await wz(z).catch(()=>{}),await eJ(z).catch(()=>{})}}});var F4={};j1(F4,{updatePlan:()=>D4,runUpdateSubcommand:()=>vI,parseUpdateArgs:()=>L4});import{spawnSync as hI}from"child_process";function D4(){return{command:"sh",args:["-c",lz],display:lz}}function L4(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let G=J[Y];if(G==="--help"||G==="-h"||G==="help")return{help:!0,dryRun:z};if(G==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${G}"
|
|
175
|
+
`);return}try{bj(G,Z.flags)}catch(f){if(f instanceof F1)jY(f.message,f.code,2);jY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}let Q=null;if(!G.offline)try{Q=await Y4()}catch(f){jY(`could not reach or start the kobe daemon: ${f instanceof Error?f.message:String(f)}`,"BAD_DAEMON",2)}try{let f=await G.handler(V4(G,Z.flags,Q?.client??null,yj));MS(f,Z.pretty)}catch(f){if(f instanceof F1)jY(f.message,f.code,1);jY(f instanceof Error?f.message:String(f),"RPC_ERROR",1)}finally{Q?.close()}}var Nj=2,mX=10,Z4,WS,F1,K1,af,cX,dX,KS,f4,FS,yj;var U4=k(()=>{vJ();lf();P1();Eq();l1();FJ();G4();Z4=["backlog","in_progress","in_review","done","canceled","error"],WS=["open","doing","hold","done"];F1=class F1 extends Error{code;constructor(J,z){super(J);this.code=z}};K1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:i1,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})},af={"spawn-task":"add"},cX={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"]};dX=[{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:VS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:bS},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[K1.taskId()],handler:kS},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[K1.repo(),K1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},K1.vendor(),{name:"status",type:"enum",values:Z4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},K1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:RS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mX}.`,flags:[K1.repo(),K1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},K1.vendor(),K1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:xS},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[K1.taskId(!1),K1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:gS},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[K1.taskId(!0),K1.prompt(!0,"Text delivered into the task's engine session.")],handler:CS},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[K1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:NS},{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:Cj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:ES},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[K1.repo()],handler:(J)=>gz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[K1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:WS,description:"New issue status."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:AS},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},K1.repo(!1)],handler:uS},{name:"rename",summary:"Set a task's title.",flags:[K1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>gz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[K1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>gz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[K1.taskId(),{...K1.vendor(),required:!0}],handler:(J)=>gz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[K1.taskId(),{name:"status",type:"enum",required:!0,values:Z4,description:"New status."}],handler:(J)=>gz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[K1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:IS},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[K1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>gz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[K1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:SS},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[K1.taskId()],handler:(J)=>gz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[K1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:yS},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[K1.repo()],handler:(J)=>gz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[K1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},K1.vendor(),K1.title()],handler:TS}],KS=dX.map((J)=>J.name);f4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];FS={sessionExists:H1,ensureSession:async(J)=>(await Promise.resolve().then(() => (YJ(),cJ))).ensureSession(J),waitForEnginePane:kZ,pasteAndSubmit:bZ,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (IX(),Wj))).resolveEngineLaunchInit(J,z,Y),engineCommand:yJ};yj={isTaskRunning:(J)=>H1(M1(J)),deliverPrompt:(J,z,Y)=>W4(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (O1(),rz))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (O1(),rz)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xX(),BU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=M1(J);await wz(z).catch(()=>{}),await eJ(z).catch(()=>{})}}});var F4={};j1(F4,{updatePlan:()=>D4,runUpdateSubcommand:()=>vS,parseUpdateArgs:()=>L4});import{spawnSync as hS}from"child_process";function D4(){return{command:"sh",args:["-c",lz],display:lz}}function L4(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let G=J[Y];if(G==="--help"||G==="-h"||G==="help")return{help:!0,dryRun:z};if(G==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${G}"
|
|
176
176
|
|
|
177
|
-
`),M4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function M4(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${lz}`,"","Script URL:",` ${
|
|
178
|
-
`))}async function
|
|
177
|
+
`),M4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function M4(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${lz}`,"","Script URL:",` ${SQ}`,"","Manual fallback:",` ${PH()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
|
|
178
|
+
`))}async function vS(J,z){let Y={spawn:z?.spawn??hS,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},G=L4(J);if(G.help){M4(Y.stdout);return}let X=D4();if(Y.stdout.write(`kobe ${o0} -> latest
|
|
179
179
|
`),Y.stdout.write(`running: ${X.display}
|
|
180
180
|
`),G.dryRun)return;let Z=Y.spawn(X.command,X.args,{stdio:"inherit"});if(Z.error)Y.stderr.write(`kobe update: failed to run ${X.command}: ${Z.error.message}
|
|
181
|
-
`),Y.exit(1);Y.exit(Z.status??1)}var O4=k(()=>{FJ()});var C4={};j1(C4,{runThemeSubcommand:()=>
|
|
181
|
+
`),Y.exit(1);Y.exit(Z.status??1)}var O4=k(()=>{FJ()});var C4={};j1(C4,{runThemeSubcommand:()=>oS});import{existsSync as R4,mkdirSync as mS,readFileSync as cS,readdirSync as dS,unlinkSync as nS,writeFileSync as iS}from"fs";import{basename as A4,join as xj,resolve as lS}from"path";function WY(J){process.stderr.write(`kobe theme: ${J}
|
|
182
182
|
`),process.exit(1)}function lY(J){process.stderr.write(`kobe theme: ${J}
|
|
183
183
|
|
|
184
|
-
`),g4(),process.exit(2)}function $
|
|
184
|
+
`),g4(),process.exit(2)}function $S(){let J=[];J.push("bundled:");for(let G of[...Tj].sort())J.push(` ${G} [built-in]`);let z=MX(),Y=[];try{Y=dS(z).filter((G)=>G.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let G of Y){let X=G.slice(0,-5),Z=xj(z,G),Q=Tj.includes(X)?" (overrides built-in)":"";J.push(` ${X}${Q} ${Z}`)}process.stdout.write(`${J.join(`
|
|
185
185
|
`)}
|
|
186
|
-
`)}async function
|
|
186
|
+
`)}async function aS(J){if(/^https?:\/\//i.test(J)){let Z;try{Z=await fetch(J)}catch(V){WY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!Z.ok)WY(`failed to fetch ${J}: HTTP ${Z.status} ${Z.statusText}`);let Q=await Z.text(),f=J.split(/[?#]/)[0]??J,H=A4(f)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:Q,defaultName:B}}let z=lS(process.cwd(),J),Y;try{Y=cS(z,"utf8")}catch(Z){WY(`failed to read ${z}: ${Z instanceof Error?Z.message:String(Z)}`)}let G=A4(z),X=G.endsWith(".json")?G.slice(0,-5):G;return{text:Y,defaultName:X}}function _S(J){let z=null,Y,G=!1;for(let X=0;X<J.length;X+=1){let Z=J[X];if(Z==="--force"||Z==="-f"){G=!0;continue}if(Z==="--name"||Z==="-n"){let Q=J[X+1];if(Q===void 0)lY("--name requires a value");Y=Q,X+=1;continue}if(Z.startsWith("--name=")){Y=Z.slice(7);continue}if(Z.startsWith("--"))lY(`unknown flag: ${Z}`);if(z===null){z=Z;continue}lY(`unexpected positional argument: ${Z}`)}if(z===null)lY("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:G}}}async function pS(J){let{source:z,opts:Y}=_S(J),{text:G,defaultName:X}=await aS(z),Z;try{Z=JSON.parse(G)}catch(V){WY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let Q=iq(Z);if(!Q.ok)WY(`source is not a valid kobe theme: ${Q.reason}`);let f=Y.name??X;if(!f||!/^[a-zA-Z0-9._-]+$/.test(f))WY(`invalid theme name "${f}" (use letters, digits, '.', '_', '-')`);let H=MX();mS(H,{recursive:!0});let B=xj(H,`${f}.json`);if(R4(B)&&!Y.force)WY(`${B} already exists (pass --force to overwrite)`);iS(B,`${JSON.stringify(Q.theme,null,2)}
|
|
187
187
|
`,"utf8"),process.stdout.write(`installed theme "${f}" -> ${B}
|
|
188
|
-
`)}function
|
|
188
|
+
`)}function rS(J){let z=J[0];if(!z)lY("missing <name>");if(J.length>1)lY(`unexpected extra arguments after "${z}"`);if(Tj.includes(z))WY(`"${z}" is a built-in theme and cannot be removed`);let Y=xj(MX(),`${z}.json`);if(!R4(Y))WY(`no user theme named "${z}" (looked for ${Y})`);nS(Y),process.stdout.write(`removed theme "${z}" (${Y})
|
|
189
189
|
`)}function g4(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${MX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
|
|
190
|
-
`))}async function
|
|
190
|
+
`))}async function oS(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(g4(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)lY(`"${z}" takes no arguments`);$S();return}if(z==="add"){await pS(Y);return}if(z==="remove"||z==="rm"){rS(Y);return}lY(`unknown action "${z}" (try "list", "add", or "remove")`)}var Tj;var N4=k(()=>{r1();lq();YB();Tj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var I4={};j1(I4,{runFeedbackSubcommand:()=>tS,parseFeedbackArgs:()=>S4});import{readFileSync as k4}from"fs";function $Y(J){process.stderr.write(`kobe feedback: ${J}
|
|
191
191
|
|
|
192
192
|
${b4}
|
|
193
|
-
`),process.exit(2)}function
|
|
194
|
-
`);return}if(!z.title)$Y("--title is required");if(z.body&&z.bodyFile)$Y("pass either --body or --body-file, not both");let Y=z.bodyFile?
|
|
195
|
-
`)});import{homedir as
|
|
196
|
-
`))}function
|
|
193
|
+
`),process.exit(2)}function sS(J){if(J==="-")return k4(0,"utf8");return k4(J,"utf8")}function S4(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="--help"||G==="-h"||G==="help")return{...z,help:!0};if(G==="--title"){if(z.title=J[++Y],z.title===void 0)$Y("--title requires a value");continue}if(G==="--body"){if(z.body=J[++Y],z.body===void 0)$Y("--body requires a value");continue}if(G==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)$Y("--body-file requires a value");continue}if(G==="--category"){if(z.category=J[++Y],z.category===void 0)$Y("--category requires a value");continue}$Y(`unexpected argument "${G}"`)}return z}async function tS(J){let z=S4(J);if(z.help){process.stdout.write(`${b4}
|
|
194
|
+
`);return}if(!z.title)$Y("--title is required");if(z.body&&z.bodyFile)$Y("pass either --body or --body-file, not both");let Y=z.bodyFile?sS(z.bodyFile):z.body;if(!Y)$Y("--body or --body-file is required");let G=vX({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${G.number}: ${G.url}`)}var b4;var y4=k(()=>{lf();b4=["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 eS}from"os";async function T4(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??eS(),Y=new PX({homeDir:z});await Y.load();let G=new mf,X=new gq({store:Y,worktrees:G});return{homeDir:z,orchestrator:X,store:Y,worktrees:G,async close(){X.dispose()}}}var x4=k(()=>{RZ();aZ();Rj()});var E4={};j1(E4,{runDaemonSubcommand:()=>zI});function u4(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 JI(){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 zI(J){let[z="status"]=J,Y=Sz(),G=oz();if(z==="--help"||z==="-h"||z==="help"){u4(process.stdout);return}if(z==="status"){let f=new pJ(Y);try{let H=await f.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await uX(G);if(H)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${H})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{f.close()}return}if(z==="stop"){let f=new pJ(Y);try{await f.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{f.close()}return}if(z==="restart"){await EX(Y,G),(await Az()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
|
|
197
197
|
|
|
198
|
-
`),u4(process.stderr),process.exit(2);H6();let X=await T4(),Z=await MU(X.orchestrator,{socketPath:Y,pidPath:G,homeDir:X.homeDir,webPort:
|
|
198
|
+
`),u4(process.stderr),process.exit(2);H6();let X=await T4(),Z=await MU(X.orchestrator,{socketPath:Y,pidPath:G,homeDir:X.homeDir,webPort:JI(),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 ${Z.socketPath}`),Z.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${Z.webPort}`);let Q=async()=>{await Z.close(),await X.close(),process.exit(0)};process.once("SIGINT",()=>void Q()),process.once("SIGTERM",()=>void Q())}var w4=k(()=>{XZ();OJ();Pf();lG();wf();x4()});import{existsSync as YI,readFileSync as GI}from"fs";import{homedir as XI}from"os";import{join as P4}from"path";function wj(J={}){return["skills","add",ZI,"--skill","kobe","--agent",J.agent??_f]}function pf(J={}){return`npx ${wj(J).join(" ")}`}function Pj(J={}){let z=J.home??XI(),Y=J.cwd??process.cwd();return[P4(z,h4),P4(Y,h4)]}function QI(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function sZ(J){let z=Pj(J).find((X)=>YI(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:uj,stale:!1};let Y=null;try{Y=QI(GI(z,"utf8"))}catch{Y=null}let G=Y===null||Y<uj;return{installed:!0,installedVersion:Y,currentVersion:uj,stale:G}}function v4(){let J=sZ();if(!J.installed){if(C1(Ej)==="1")return;o1(Ej,"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
200
|
${oZ}
|
|
201
201
|
(wraps \`${pf()}\`; check anytime with \`kobe doctor\`)
|
|
@@ -204,35 +204,35 @@ kobe: the kobe agent skill isn't installed \u2014 install it so your coding agen
|
|
|
204
204
|
kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
|
|
205
205
|
${oZ}
|
|
206
206
|
|
|
207
|
-
`)}}var uj=2,h4=".claude/skills/kobe/SKILL.md",oZ="kobe skill install",
|
|
207
|
+
`)}}var uj=2,h4=".claude/skills/kobe/SKILL.md",oZ="kobe skill install",ZI="Sma1lboy/kobe",_f="claude-code",Ej="skillHintSeen";var rf=k(()=>{O1()});var of={};j1(of,{runResetSubcommand:()=>FI,runReloadSubcommand:()=>OI,runDoctorSubcommand:()=>LI});import{existsSync as qI,readFileSync as d4,statSync as fI}from"fs";import{unlink as HI}from"fs/promises";import{join as n4}from"path";import{createInterface as BI}from"readline";function jI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function WI(J){let z=new pJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function VI(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Y=Math.floor(z/60);if(Y<60)return`${Y}m ${z%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function KI(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function hj(J){try{let z=fI(J);return`present (${KI(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function i4(J){try{let z=JSON.parse(d4(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function UI(J,z){try{return d4(J,"utf8").split(`
|
|
208
208
|
`).filter((G)=>G.trim().length>0).slice(-z).join(`
|
|
209
|
-
`)}catch{return""}}async function vj(J){let z=Bun.spawn(
|
|
210
|
-
`).filter((Y)=>Y.trim().length>0).length}async function
|
|
209
|
+
`)}catch{return""}}async function vj(J){let z=Bun.spawn(SG(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,G]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:G,stdout:Y}}async function DI(){if(!await Ez())return 0;let{code:J,stdout:z}=await vj(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
|
|
210
|
+
`).filter((Y)=>Y.trim().length>0).length}async function LI(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((j)=>j.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
|
|
212
|
-
`)),process.exit(2);let Y=
|
|
213
|
-
`))f.push(` \u2502 ${L}`)}}if(f.push(""),await Ez())f.push(`tmux: ${await
|
|
214
|
-
`))}async function
|
|
215
|
-
`))}async function
|
|
212
|
+
`)),process.exit(2);let Y=Sz(),G=oz(),X=PQ(),Z=n4(fJ(),"tasks.json"),Q=aJ(),f=["kobe doctor",` home: ${bz()}`,` socket: ${Y}`,""],H=await WI(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",K=typeof H.uptimeMs==="number"?VI(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",A=typeof H.attachedClients==="number"?H.attachedClients:"?";f.push(`daemon: \u2713 running (pid ${j}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(O&&O!==o0)f.push(` \u26A0 stale build: daemon is v${O}, you launched v${o0}`),f.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)f.push(` build: v${O}`)}else{let j=await uX(G);if(j&&jI(j))f.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),f.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)f.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),f.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else f.push("daemon: \u2717 not running (no pidfile)");if(qI(Y))f.push(` orphan socket file present: ${Y}`);let K=UI(X,8);if(K){f.push(" last lines of daemon.log:");for(let L of K.split(`
|
|
213
|
+
`))f.push(` \u2502 ${L}`)}}if(f.push(""),await Ez())f.push(`tmux: ${await DI()} kobe session(s) on \`${Fz}\` socket`);else f.push("tmux: \u2717 not found on PATH (task sessions need tmux)");f.push("");let B=sZ();if(!B.installed)f.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),f.push(` \u2192 ${oZ}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;f.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),f.push(` \u2192 ${oZ}`)}else f.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);f.push("");let V=i4(Z);f.push(`tasks.json: ${hj(Z)}${V===null?"":` \u2014 ${V} task(s)`}`),f.push(`state.json: ${hj(Q)}`),f.push(`daemon.log: ${hj(X)}`),console.log(f.join(`
|
|
214
|
+
`))}async function MI(J){let z=BI({input:process.stdin,output:process.stdout});try{let Y=await new Promise((G)=>z.question(J,G));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function m4(J,z){try{await HI(J),console.log(` removed ${z} (${J})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Y instanceof Error?Y.message:String(Y)}`)}}function c4(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 FI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){c4(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((j)=>!z.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
|
|
216
216
|
|
|
217
|
-
`),c4(process.stderr),process.exit(2);let G=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),Z=
|
|
218
|
-
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await
|
|
217
|
+
`),c4(process.stderr),process.exit(2);let G=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),Z=Sz(),Q=oz(),f=n4(fJ(),"tasks.json"),H=aJ();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 (${Z})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${Fz}\` socket`),G){let j=i4(f);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${f}`),console.log(` \u2022 DELETE the UI state \u2014 ${H}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!G)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 MI(G?`
|
|
219
219
|
Stop daemon, kill sessions AND wipe task index? [y/N] `:`
|
|
220
220
|
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await EX(Z,Q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await Ez()){let{code:j}=await vj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${Fz}\``:` tmux: no sessions on \`${Fz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(G)await m4(f,"task index"),await m4(H,"UI state");console.log(`
|
|
221
|
-
kobe: reset complete. Relaunch kobe to start fresh.`)}async function
|
|
221
|
+
kobe: reset complete. Relaunch kobe to start fresh.`)}async function OI(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
|
|
222
222
|
`));return}let z=J.find((f)=>f.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
225
|
`),process.exit(2);if(!await Ez()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:G}=await vj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${Fz}\` socket`);return}let X=G.split(`
|
|
226
|
-
`).map((f)=>f.trim()).filter((f)=>f.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${Fz}\` socket`);return}let{refreshKobeWorkspacePanes:Z}=await Promise.resolve().then(() => (YJ(),cJ)),Q=0;for(let f of X)try{await Z(f),Q++}catch(H){console.error(` failed to reload session "${f}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${X.length} session(s) \u2014 engine panes untouched`)}var sf=k(()=>{XZ();Pf();lG();wf();r1();rf();P1();FJ()});var o4={};j1(o4,{runWebSubcommand:()=>
|
|
227
|
-
`).map((G)=>Number.parseInt(G.trim(),10)).filter((G)=>Number.isFinite(G)&&G!==process.pid)}catch{return[]}}async function
|
|
228
|
-
`),process.exit(2);z=G}try{let G=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),Z=G?void 0:
|
|
226
|
+
`).map((f)=>f.trim()).filter((f)=>f.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${Fz}\` socket`);return}let{refreshKobeWorkspacePanes:Z}=await Promise.resolve().then(() => (YJ(),cJ)),Q=0;for(let f of X)try{await Z(f),Q++}catch(H){console.error(` failed to reload session "${f}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${X.length} session(s) \u2014 engine panes untouched`)}var sf=k(()=>{XZ();Pf();lG();wf();r1();rf();P1();FJ()});var o4={};j1(o4,{runWebSubcommand:()=>SI});import{existsSync as a4}from"fs";import{homedir as AI}from"os";import{resolve as tf}from"path";import{fileURLToPath as _4}from"url";function l4(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${AI()}/.kobe (production)`}function gI(){let J=_4(import.meta.url),z=[tf(J,"../../../../kobe-web/dist"),tf(J,"../../web-ui")];for(let Y of z)if(a4(`${Y}/index.html`))return Y;return}function CI(){let J=_4(import.meta.url),z=[tf(J,"../../../../kobe-web/pty-server.mjs"),tf(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(a4(Y))return Y;return}async function $4(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((G)=>Number.parseInt(G.trim(),10)).filter((G)=>Number.isFinite(G)&&G!==process.pid)}catch{return[]}}async function NI(J){let z;try{z=(await(await fetch(`http://localhost:${J}${r4}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==p4)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await $4(J);for(let X of Y)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await $4(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function kI(J){let z=CI();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await NI(Y);return Bun.spawn(["node",z],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(J.webPort),KOBE_PTY_PORT:String(Y)}})}async function bI(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await wX();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${r4}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(G){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${G instanceof Error?G.message:String(G)})`)}if(Y!==p4)throw Error(`unexpected daemon web health marker on :${J}: ${Y}`);if(z){if(!(await fetch(`http://127.0.0.1:${J}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${J} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${z}`)}}async function SI(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(RI);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let G=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(G))process.stderr.write(`kobe web: --port needs a number
|
|
228
|
+
`),process.exit(2);z=G}try{let G=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),Z=G?void 0:gI();if(!G&&!Z)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 bI(z,Z);let Q=null,f=!1,H=()=>{if(f)return;f=!0,Q?.kill(),Q=null};if(G)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
|
|
229
229
|
`),process.stdout.write(` home: ${l4()}
|
|
230
|
-
`);else if(Q=await
|
|
230
|
+
`);else if(Q=await kI({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
|
|
231
231
|
`),process.stdout.write(` home: ${l4()}
|
|
232
232
|
`),!Q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
|
|
233
233
|
`);process.on("SIGINT",()=>{H(),process.exit(0)}),process.on("SIGTERM",()=>{H(),process.exit(0)}),Q?.exited.then(()=>{if(!f)process.stderr.write(`kobe web: PTY server exited
|
|
234
234
|
`),H(),process.exit(1)}),await new Promise(()=>{})}catch(G){process.stderr.write(`kobe web: ${G instanceof Error?G.message:String(G)}
|
|
235
|
-
`),process.exit(1)}}var p4="kobe-web",r4="/__kobe_web",
|
|
235
|
+
`),process.exit(1)}}var p4="kobe-web",r4="/__kobe_web",RI=`Usage: kobe web [options]
|
|
236
236
|
|
|
237
237
|
Launch the kobe web UI through daemon web transport on http://localhost:<port>.
|
|
238
238
|
|
|
@@ -241,13 +241,13 @@ 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 s4=k(()=>{OJ()});var e4={};j1(e4,{runSkillSubcommand:()=>
|
|
244
|
+
`;var s4=k(()=>{OJ()});var e4={};j1(e4,{runSkillSubcommand:()=>yI});function mj(){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: ${_f}.`].join(`
|
|
245
245
|
`)}function t4(J){let z=_f;for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="--agent"){let X=J[Y+1];if(!X||X.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
|
|
246
246
|
`),process.exit(2);z=X,Y++}else if(G.startsWith("--agent="))z=G.slice(8);else process.stderr.write(`kobe skill: unknown flag "${G}"
|
|
247
247
|
|
|
248
248
|
${mj()}
|
|
249
|
-
`),process.exit(2)}return z}async function
|
|
250
|
-
`),!z)process.exitCode=2;return}if(!
|
|
249
|
+
`),process.exit(2)}return z}async function yI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${mj()}
|
|
250
|
+
`),!z)process.exitCode=2;return}if(!II.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
|
|
251
251
|
|
|
252
252
|
${mj()}
|
|
253
253
|
`),process.exit(2);if(z==="status"){let f=sZ(),[H,B]=Pj(),V=!f.installed?"\u2717 not installed":f.stale?`\u26A0 out of date (installed ${f.installedVersion===null?"unstamped":`v${f.installedVersion}`}, this kobe wants v${f.currentVersion})`:`\u2713 installed (v${f.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,f.installed&&!f.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
|
|
@@ -257,27 +257,27 @@ ${mj()}
|
|
|
257
257
|
kobe skill install failed (npx exited ${Q}). Is \`npx\` on PATH and are you online?
|
|
258
258
|
You can run it yourself: ${pf({agent:G})}
|
|
259
259
|
`),process.exit(Q||1);process.stdout.write(`kobe skill: installed.
|
|
260
|
-
`)}var
|
|
261
|
-
`))}var xS=500,ES="worktree-created",zD="externalWorktreeSync";var dj=k(()=>{OJ();k8();Qq();O1();l1()});function jD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=iS.get(J))!==null&&z!==void 0?z:J}var nj,iS,BD;var WD=k(()=>{iS=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]]),BD=(nj=String.fromCodePoint)!==null&&nj!==void 0?nj:(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 VD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,G=new Uint16Array(Y/2);for(let X=0,Z=0;X<Y;X+=2){let Q=z.charCodeAt(X),f=z.charCodeAt(X+1);G[Z++]=Q|f<<8}return G}var KD;var UD=k(()=>{KD=VD("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 KJ;var DD=k(()=>{(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"})(KJ||(KJ={}))});function ij(J){return J>=h1.ZERO&&J<=h1.NINE}function lS(J){return J>=h1.UPPER_A&&J<=h1.UPPER_F||J>=h1.LOWER_A&&J<=h1.LOWER_F}function $S(J){return J>=h1.UPPER_A&&J<=h1.UPPER_Z||J>=h1.LOWER_A&&J<=h1.LOWER_Z||ij(J)}function aS(J){return J===h1.EQUALS||$S(J)}class lj{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=GJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=VY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=GJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case GJ.EntityStart:{if(J.charCodeAt(z)===h1.NUM)return this.state=GJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=GJ.NamedEntity,this.stateNamedEntity(J,z)}case GJ.NumericStart:return this.stateNumericStart(J,z);case GJ.NumericDecimal:return this.stateNumericDecimal(J,z);case GJ.NumericHex:return this.stateNumericHex(J,z);case GJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|LD)===h1.LOWER_X)return this.state=GJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=GJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(ij(Y)||lS(Y)){let G=Y<=h1.NINE?Y-h1.ZERO:(Y|LD)-h1.LOWER_A+10;this.result=this.result*16+G,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(ij(Y))this.result=this.result*10+(Y-h1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===h1.SEMI)this.consumed+=1;else if(this.decodeMode===VY.Strict)return 0;if(this.emitCodePoint(jD(this.result),this.consumed),this.errors){if(J!==h1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(G&KJ.FLAG13)!==0){let Q=(G&KJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let f=G&KJ.JUMP_TABLE;if(J.charCodeAt(z)!==f)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let f=this.runConsumed-1,H=Y[this.treeIndex+1+(f>>1)],B=f%2===0?H&255:H>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let Z=J.charCodeAt(z);if(Z===h1.SEMI&&X!==0&&(G&KJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=pS(Y,G,this.treeIndex+Math.max(1,X),Z),this.treeIndex<0)return this.result===0||this.decodeMode===VY.Attribute&&(X===0||aS(Z))?0:this.emitNotTerminatedNamedEntity();if(G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14,X!==0){if(Z===h1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==VY.Strict&&(G&KJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,G=(Y[z]&KJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,G,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:G}=this;if(this.emitCodePoint(z===1?G[J]&~(KJ.VALUE_LENGTH|KJ.FLAG13):G[J+1],Y),z===3)this.emitCodePoint(G[J+2],Y);return Y}end(){var J;switch(this.state){case GJ.NamedEntity:return this.result!==0&&(this.decodeMode!==VY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case GJ.NumericDecimal:return this.emitNumericEntity(0,2);case GJ.NumericHex:return this.emitNumericEntity(0,3);case GJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case GJ.EntityStart:return 0}}}function _S(J){let z="",Y=new lj(J,(G)=>z+=BD(G));return function(X,Z){let Q=0,f=0;while((f=X.indexOf("&",f))>=0){z+=X.slice(Q,f),Y.startEntity(Z);let B=Y.write(X,f+1);if(B<0){Q=f+Y.end();break}Q=f+B,f=B===0?Q+1:Q}let H=z+X.slice(Q);return z="",H}}function pS(J,z,Y,G){let X=(z&KJ.BRANCH_LENGTH)>>7,Z=z&KJ.JUMP_TABLE;if(X===0)return Z!==0&&G===Z?Y:-1;if(Z){let B=G-Z;return B<0||B>=X?-1:J[Y+B]-1}let Q=X+1>>1,f=0,H=X-1;while(f<=H){let B=f+H>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<G)f=B+1;else if(K>G)H=B-1;else return J[Y+Q+B]}return-1}function EG(J,z=VY.Legacy){return rS(J,z)}var h1,LD=32,GJ,VY,rS;var MD=k(()=>{WD();UD();DD();(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"})(h1||(h1={}));(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"})(GJ||(GJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(VY||(VY={}));rS=_S(KD)});var FD,OD;var RD=k(()=>{MD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(FD||(FD={}));(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"})(OD||(OD={}))});import{CliRenderer as sS,createCliRenderer as tS,engine as eS}from"@opentui/core";import{createTestRenderer as z$}from"@opentui/core/testing";import{ASCIIFontRenderable as Jy,BoxRenderable as zy,CodeRenderable as Yy,DiffRenderable as Gy,InputRenderable as Xy,LineNumberRenderable as Zy,MarkdownRenderable as Qy,ScrollBoxRenderable as qy,SelectRenderable as fy,TabSelectRenderable as Hy,TextareaRenderable as By,TextAttributes as $j,TextNodeRenderable as jy,TextRenderable as Wy}from"@opentui/core";import{engine as X$,Timeline as Z$}from"@opentui/core";import{BaseRenderable as ID,createTextAttributes as Ky,InputRenderable as aj,InputRenderableEvents as tZ,isTextNodeRenderable as rj,parseColor as gD,Renderable as Uy,RootTextNodeRenderable as Dy,ScrollBoxRenderable as Ly,SelectRenderable as CD,SelectRenderableEvents as _j,TabSelectRenderable as ND,TabSelectRenderableEvents as pj,TextNodeRenderable as My,TextRenderable as SD}from"@opentui/core";import{BaseRenderable as by,isTextNodeRenderable as Iy,TextNodeRenderable as Sy,TextRenderable as yy,Yoga as bD}from"@opentui/core";import{BoxRenderable as U$,RootRenderable as D$}from"@opentui/core";import{TimeToFirstDrawRenderable as Ey}from"@opentui/core";import{createSlotRegistry as F$}from"@opentui/core";function Oy({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:G,replaceText:X,insertNode:Z,removeNode:Q,setProperty:f,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(I,N,M,S){if(M!==void 0&&!S)S=[];if(typeof N!=="function")return K(I,N,S,M);Sz((r)=>K(I,N(),r,M),S)}function K(I,N,M,S,r){while(typeof M==="function")M=M();if(N===M)return M;let l=typeof N,e=S!==void 0;if(l==="string"||l==="number"){if(l==="number")N=N.toString();if(e){let J0=M[0];if(J0&&G(J0))X(J0,N);else J0=z(N);M=O(I,M,S,J0)}else if(M!==""&&typeof M==="string")X(B(I),M=N);else O(I,M,S,z(N)),M=N}else if(N==null||l==="boolean")M=O(I,M,S);else if(l==="function")return Sz(()=>{let J0=N();while(typeof J0==="function")J0=J0();M=K(I,J0,M,S)}),()=>M;else if(Array.isArray(N)){let J0=[];if(L(J0,N,r))return Sz(()=>M=K(I,J0,M,S,!0)),()=>M;if(J0.length===0){let T=O(I,M,S);if(e)return M=T}else if(Array.isArray(M))if(M.length===0)g(I,J0,S);else A(I,M,J0);else if(M==null||M==="")g(I,J0);else A(I,e&&M||[B(I)],J0);M=J0}else{if(Array.isArray(M)){if(e)return M=O(I,M,S,N);O(I,M,null,N)}else if(M==null||M===""||!B(I))Z(I,N);else u(I,N,B(I));M=N}return M}function L(I,N,M){let S=!1;for(let r=0,l=N.length;r<l;r++){let e=N[r],J0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))S=L(I,e)||S;else if((J0=typeof e)==="string"||J0==="number")I.push(z(e));else if(J0==="function")if(M){while(typeof e==="function")e=e();S=L(I,Array.isArray(e)?e:[e])||S}else I.push(e),S=!0;else I.push(e)}return S}function A(I,N,M){let S=M.length,r=N.length,l=S,e=0,J0=0,T=V(N[r-1]),q0=null;while(e<r||J0<l){if(N[e]===M[J0]){e++,J0++;continue}while(N[r-1]===M[l-1])r--,l--;if(r===e){let p=l<S?J0?V(M[J0-1]):M[l-J0]:T;while(J0<l)Z(I,M[J0++],p)}else if(l===J0)while(e<r){if(!q0||!q0.has(N[e]))Q(I,N[e]);e++}else if(N[e]===M[l-1]&&M[J0]===N[r-1]){let p=V(N[--r]);Z(I,M[J0++],V(N[e++])),Z(I,M[--l],p),N[r]=M[l]}else{if(!q0){q0=new Map;let j0=J0;while(j0<l)q0.set(M[j0],j0++)}let p=q0.get(N[e]);if(p!=null)if(J0<p&&p<l){let j0=e,F0=1,V0;while(++j0<r&&j0<l){if((V0=q0.get(N[j0]))==null||V0!==p+F0)break;F0++}if(F0>p-J0){let t=N[e];while(J0<p)Z(I,M[J0++],t)}else u(I,M[J0++],N[e++])}else e++;else Q(I,N[e++])}}}function O(I,N,M,S){if(M===void 0){let l;while(l=B(I))Q(I,l);return S&&Z(I,S),S??""}let r=S||Y();if(N.length){let l=!1;for(let e=N.length-1;e>=0;e--){let J0=N[e];if(r!==J0){let T=H(J0)===I;if(!l&&!e)T?u(I,r,J0):Z(I,r,M);else T&&Q(I,J0)}else l=!0}}else Z(I,r,M);return[r]}function g(I,N,M){for(let S=0,r=N.length;S<r;S++)Z(I,N[S],M)}function u(I,N,M){Z(I,N,M),Q(I,M)}function _(I,N,M={},S){if(N||(N={}),!S)Sz(()=>M.children=K(I,N.children,M.children));return Sz(()=>N.ref&&N.ref(I)),Sz(()=>{for(let r in N){if(r==="children"||r==="ref")continue;let l=N[r];if(l===M[r])continue;f(I,r,l,M[r]),M[r]=l}}),M}return{render(I,N){let M;return KG((S)=>{M=S,j(N,I())}),M},insert:j,spread(I,N,M){if(typeof N==="function")Sz((S)=>_(I,N(),S,M));else _(I,N,void 0,M)},createElement:J,createTextNode:z,insertNode:Z,setProp(I,N,M,S){return f(I,N,M,S),M},mergeProps:Fq,effect:Sz,memo:Fy,createComponent:AV,use(I,N,M){return p1(()=>I(N,M))}}}function Ay(J){let z=Oy(J);return z.mergeProps=Fq,z}function J9(J){if(!ef.has(J))ef.set(J,0);let z=ef.get(J)+1;return ef.set(J,z),`${J}-${z}`}function Ry(J,z,Y){if(XJ("Inserting node:",t1(z),"into parent:",t1(J),"with anchor:",t1(Y),z instanceof nX),z instanceof eZ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof eZ)Y=Y.getSlotChild(J);if(rj(z)){if(!(J instanceof SD)&&!rj(J))throw Error(`Orphan text error: "${z.toChunks().map((Z)=>Z.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof ID))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let G=oj(J),X=G.findIndex((Z)=>Z.id===Y.id);if(X===-1)XJ("[INSERT]","Could not find anchor",t1(J),t1(Y),"[children]",...G.map((Z)=>Z.id));J.add(z,X)}function gy(J,z){if(XJ("Removing node:",t1(z),"from parent:",t1(J)),z instanceof eZ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof ID&&!z.parent){z.destroyRecursively();return}})}function Cy(J){XJ("Creating text node:",J);let z=J9("text-node");if(typeof J==="number")J=J.toString();return nX.fromString(EG(J),{id:z})}function Ny(){let J=J9("slot-node");return XJ("Creating slot node",J),new eZ(J)}function kD(J){XJ("Getting parent of node:",t1(J));let z=J.parent??void 0;if(z instanceof Dy)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof Ly&&Y.content===z)z=Y;return z}function xy(J){Object.assign(PD,J)}function uy(){return PD}var ej,HJ=()=>{let J=PJ(ej);if(!J)throw Error("No renderer found");return J},Vy=(J)=>{let z=HJ();JJ(()=>{z.on("resize",J)}),k1(()=>{z.off("resize",J)})},vz=()=>{let J=HJ(),[z,Y]=a({width:J.width,height:J.height});return Vy((X,Z)=>{Y({width:X,height:Z})}),z},Fy=(J)=>K0(()=>J()),ef,XJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nX,t1=(J)=>{if(!J)return;return J.id},oj=(J)=>{let z;if(J instanceof SD)z=J.getTextChildren();else z=J.getChildren();return z},ky,x,x0,b,W,E0,D,U,W$,q,yD,mz,z9,TD,xD,eZ,JQ,JH,sj,tj,uD,ED,wD,Ty,PD,wy=(J,z)=>{let Y,G=!1,X=!1,Z=!0,Q=!1,f=J.destroy.bind(J),H=()=>{if(X)return;if(!Y){G=!0;return}X=!0,Y()};J.once("destroy",H),J.destroy=()=>{if(Z){Q=!0;return}f()};try{Y=ky(()=>b(ej.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{Z=!1,J.destroy=f}if(G)H();if(Q)f()},hD=async(J,z={})=>{let Y=z instanceof sS?z:await tS({...z,onDestroy:()=>{z.onDestroy?.()}});eS.attach(Y),wy(Y,J)};var P=k(()=>{W1();RD();W1();W1();W1();ej=yz();ef=new Map;nX=class nX extends My{static fromString(J,z={}){let Y=new nX(z);return Y.add(J),Y}};({render:ky,effect:x,memo:x0,createComponent:b,createElement:W,createTextNode:E0,insertNode:D,insert:U,spread:W$,setProp:q,mergeProps:yD,use:mz}=Ay({createElement(J){XJ("Creating element:",J);let z=J9(J),Y=PJ(ej);if(!Y)throw Error("No renderer found");let G=uy();if(!G[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new G[J](Y,{id:z});return XJ("Element created with id:",z),X},createTextNode:Cy,createSlotNode:Ny,replaceText(J,z){if(XJ("Replacing text:",z,"in node:",t1(J)),!(J instanceof nX))return;J.replace(EG(z),0)},setProperty(J,z,Y,G){if(z.startsWith("on:")){let X=z.slice(3);if(Y)J.on(X,Y);if(G)J.off(X,G);return}if(rj(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=Ky(Y),J.fg=Y.fg?gD(Y.fg):J.fg,J.bg=Y.bg?gD(Y.bg):J.bg;return}return}switch(z){case"id":XJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof Uy))return;if(Y)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof CD)X=_j.SELECTION_CHANGED;else if(J instanceof ND)X=pj.SELECTION_CHANGED;else if(J instanceof aj)X=tZ.CHANGE;if(!X)break;if(Y)J.on(X,Y);if(G)J.off(X,G);break;case"onInput":if(J instanceof aj){if(Y)J.on(tZ.INPUT,Y);if(G)J.off(tZ.INPUT,G)}break;case"onSubmit":if(J instanceof aj){if(Y)J.on(tZ.ENTER,Y);if(G)J.off(tZ.ENTER,G)}else J[z]=Y;break;case"onSelect":if(J instanceof CD){if(Y)J.on(_j.ITEM_SELECTED,Y);if(G)J.off(_j.ITEM_SELECTED,G)}else if(J instanceof ND){if(Y)J.on(pj.ITEM_SELECTED,Y);if(G)J.off(pj.ITEM_SELECTED,G)}break;case"style":for(let Z in Y){let Q=Y[Z];if(G!==void 0&&Q===G[Z])continue;J[Z]=Q}break;case"text":case"content":{let Z=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=EG(Z);break}default:J[z]=Y}},isTextNode(J){return J instanceof nX},insertNode:Ry,removeNode:gy,getParentNode:kD,getFirstChild(J){XJ("Getting first child of node:",t1(J));let z=oj(J)[0];if(!z){XJ("No first child found for node:",t1(J));return}return XJ("First child found:",t1(z),"for node:",t1(J)),z},getNextSibling(J){XJ("Getting next sibling of node:",t1(J));let z=kD(J);if(!z){XJ("No parent found for node:",t1(J));return}let Y=oj(z),G=Y.indexOf(J);if(G===-1||G===Y.length-1){XJ("No next sibling found for node:",t1(J));return}let X=Y[G+1];if(!X){XJ("Next sibling is null for node:",t1(J));return}return XJ("Next sibling found:",t1(X),"for node:",t1(J)),X}}));z9=class z9 extends by{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}};TD=class TD extends Sy{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()}};xD=class xD extends z9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=bD.default.Node.create(),this.yogaNode.setDisplay(bD.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};eZ=class eZ extends z9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Iy(J)||J instanceof yy){if(!this.textNode)this.textNode=new TD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new xD(`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()}};JQ=class JQ extends jy{_ctx;constructor(J,z){super(z);this._ctx=J}};JH=class JH extends JQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|$j.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|$j.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|$j.UNDERLINE}};sj=class sj extends JH{constructor(J){super(J,"b")}};tj=class tj extends JH{constructor(J){super(J,"i")}};uD=class uD extends JH{constructor(J){super(J,"u")}};ED=class ED extends JQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
262
|
-
`)}};wD=class wD extends JQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};Ty={box:zy,text:Wy,input:Xy,select:fy,textarea:By,ascii_font:Jy,tab_select:Hy,scrollbox:qy,code:Yy,diff:Gy,line_number:Zy,markdown:Qy,span:JQ,strong:sj,b:sj,em:tj,i:tj,u:uD,br:ED,a:wD},PD={...Ty};xy({time_to_first_draw:Ey})});function KY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function Py(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,X]of Object.entries(z)){let Z=X;if(typeof Z?.added!=="number"||typeof Z.deleted!=="number")return null;Y.set(G,{added:Z.added,deleted:Z.deleted})}return Y}function hy(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let X=z.get(Y);if(!X||!hz(G,X))return!1}return!0}function vy(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,X]of Object.entries(z)){let Z=X;if(typeof Z?.mtimeMs!=="number"||typeof Z.completionAt!=="number")return null;if(Z.completionId!==null&&typeof Z.completionId!=="string")return null;Y.set(G,{mtimeMs:Z.mtimeMs,completionId:Z.completionId,completionAt:Z.completionAt})}return Y}function my(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let X=z.get(Y);if(!X||X.mtimeMs!==G.mtimeMs||X.completionId!==G.completionId||X.completionAt!==G.completionAt)return!1}return!0}class UJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,G]=a([]),[X,Z]=a(null),[Q,f]=a(null),[H,B]=a(null),[V,j]=a(new Map),[K,L]=a(new Map),[A,O]=a(null),[g,u]=a(null),[_,I]=a(null),[N,M]=a(null),[S,r]=a("online");this.tasksAcc=Y,this.setTasks=(l)=>G(()=>l),this.activeTaskAcc=X,this.setActiveTaskSig=(l)=>Z(()=>l),this.updateAcc=Q,this.setUpdateSig=(l)=>f(()=>l),this.daemonVersionAcc=H,this.setDaemonVersionSig=(l)=>B(()=>l),this.engineStateAcc=V,this.setEngineStateSig=(l)=>j(()=>l),this.taskJobsAcc=K,this.setTaskJobsSig=(l)=>L(()=>l),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(l)=>O(()=>l),this.transcriptActivityAcc=g,this.setTranscriptActivitySig=(l)=>u(()=>l),this.uiPrefsAcc=_,this.setUiPrefsSig=(l)=>I(()=>l),this.keybindingsRevAcc=N,this.setKeybindingsRevSig=(l)=>M(()=>l),this.connectionStateAcc=S,this.setConnectionState=(l)=>r(()=>l),this.ensureReachable=z.ensureReachable??wX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(l)=>this.handleEvent(l.name,l.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")sz("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),sz("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)s1("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:_J,minProtocolVersion:AY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:_J,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!EQ({localVersion:_J,localMin:AY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${_J} (min v${AY}). 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(zQ));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"),sz("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()=>nW(this.daemonVersionAcc()??void 0,o0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return KG((Y)=>{return s0(()=>{let G=this.tasksAcc();if(z){z=!1;return}try{J(G)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,G=await this.client.request("task.create",{...Y,effort:z});return zQ(G.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return zQ(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 zQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(zQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else s1("orch",`dropped task.snapshot event: tasks is not an array (got ${KY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){s1("orch",`dropped engine-state event: taskId/state must be strings (taskId=${KY(Y?.taskId)}, state=${KY(Y?.state)})`);return}let G=new Map(this.engineStateAcc());if(Y.state==="idle")G.delete(Y.taskId);else G.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(G);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){s1("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${KY(Y?.taskId)}, kind=${KY(Y?.kind)})`);return}let G=this.taskJobsAcc();if(Y.phase==="running"){let X=new Map(G);X.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(X);return}if((Y.phase==="done"||Y.phase==="error")&&G.has(Y.taskId)){let X=new Map(G);X.delete(Y.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Y=Py(z);if(!Y){s1("orch",`dropped worktree.changes event: malformed changes payload (${KY(z)})`);return}let G=this.worktreeChangesAcc();if(G&&hy(G,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=vy(z);if(!Y){s1("orch",`dropped transcript.activity event: malformed activity payload (${KY(z)})`);return}let G=this.transcriptActivityAcc();if(G&&my(G,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=z;if(typeof Y?.theme!=="string"){s1("orch",`dropped ui-prefs event: theme must be a string (got ${KY(Y?.theme)})`);return}this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){s1("orch",`dropped keybindings event: rev must be a number (got ${KY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),G=null;for(let X of z.keys()){if(Y.has(X))continue;if(!G)G=new Map(z);G.delete(X)}if(G)this.setEngineStateSig(G)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),G=null;for(let X of z.keys()){if(Y.has(X))continue;if(!G)G=new Map(z);G.delete(X)}if(G)this.setTaskJobsSig(G)}}function zQ(J){return{id:KZ(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 aY=k(()=>{ZG();OJ();GG();W1();xX();sJ();FJ()});function cD(J){let z=J[jz];if(!z){if(Object.defineProperty(J,jz,{value:z=new Proxy(J,ny)}),!Array.isArray(J)){let Y=Object.keys(J),G=Object.getOwnPropertyDescriptors(J),X=Object.getPrototypeOf(J),Z=X!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&X!==Object.prototype;if(Z){let Q=Object.getOwnPropertyDescriptors(X);Y.push(...Object.keys(Q)),Object.assign(G,Q)}for(let Q=0,f=Y.length;Q<f;Q++){let H=Y[Q];if(Z&&H==="constructor")continue;if(G[H].get)Object.defineProperty(J,H,{configurable:!0,enumerable:G[H].enumerable,get:G[H].get.bind(z)})}}}return z}function zH(J){let z;return J!=null&&typeof J==="object"&&(J[jz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function GQ(J,z=new Set){let Y,G,X,Z;if(Y=J!=null&&J[Y9])return Y;if(!zH(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,f=J.length;Q<f;Q++)if(X=J[Q],(G=GQ(X,z))!==X)J[Q]=G}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),f=Object.getOwnPropertyDescriptors(J);for(let H=0,B=Q.length;H<B;H++){if(Z=Q[H],f[Z].get)continue;if(X=J[Z],(G=GQ(X,z))!==X)J[Z]=G}}return J}function YH(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function XQ(J,z,Y){if(J[z])return J[z];let[G,X]=a(Y,{equals:!1,internal:!0});return G.$=X,J[z]=G}function cy(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===jz||z===iX)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[jz][z],Y}function dD(J){Mq()&&XQ(YH(J,iX),mD)()}function dy(J){return dD(J),Reflect.ownKeys(J)}function GH(J,z,Y,G=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!G&&J[z]===Y)return;let X=J[z],Z=J.length;if(vD.onStoreNodeUpdate&&vD.onStoreNodeUpdate(J,z,Y,X),Y===void 0){if(delete J[z],J[UY]&&J[UY][z]&&X!==void 0)J[UY][z].$()}else if(J[z]=Y,J[UY]&&J[UY][z]&&X===void 0)J[UY][z].$();let Q=YH(J,iX),f;if(f=XQ(Q,z,X))f.$(()=>Y);if(Array.isArray(J)&&J.length!==Z){for(let H=J.length;H<Z;H++)(f=Q[H])&&f.$();(f=XQ(Q,"length",Z))&&f.$(J.length)}(f=Q[mD])&&f.$()}function nD(J,z){let Y=Object.keys(z);for(let G=0;G<Y.length;G+=1){let X=Y[G];if(iD(X))continue;GH(J,X,z[X])}}function iD(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function iy(J,z){if(typeof z==="function")z=z(J);if(z=GQ(z),Array.isArray(z)){if(J===z)return;let Y=0,G=z.length;for(;Y<G;Y++){let X=z[Y];if(J[Y]!==X)GH(J,Y,X)}GH(J,"length",G)}else nD(J,z)}function YQ(J,z,Y=[]){let G,X=J;if(z.length>1){G=z.shift();let Q=typeof G,f=Array.isArray(J);if(Q==="string"&&(G==="__proto__"||z.length>1&&iD(G))){console.warn(`Refusing to traverse unsafe key "${G}" on a store.`);return}if(Array.isArray(G)){for(let H=0;H<G.length;H++)YQ(J,[G[H]].concat(z),Y);return}else if(f&&Q==="function"){for(let H=0;H<J.length;H++)if(G(J[H],H))YQ(J,[H].concat(z),Y);return}else if(f&&Q==="object"){let{from:H=0,to:B=J.length-1,by:V=1}=G;for(let j=H;j<=B;j+=V)YQ(J,[j].concat(z),Y);return}else if(z.length>1){YQ(J[G],z,[G].concat(Y));return}X=J[G],Y=[G].concat(Y)}let Z=z[0];if(typeof Z==="function"){if(Z=Z(X,Y),Z===X)return}if(G===void 0&&Z==null)return;if(Z=GQ(Z),G===void 0||zH(X)&&zH(Z)&&!Array.isArray(Z))nD(X,Z);else GH(J,G,Z)}function cz(...[J,z]){let Y=GQ(J||{}),G=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let X=cD(Y);gV.registerGraph({value:Y,name:z&&z.name});function Z(...Q){Lq(()=>{G&&Q.length===1?iy(Y,Q[0]):YQ(Y,Q)})}return[X,Z]}var Y9,iX,UY,mD,vD,ny,y$;var lX=k(()=>{W1();Y9=Symbol("store-raw"),iX=Symbol("store-node"),UY=Symbol("store-has"),mD=Symbol("store-self"),vD={onStoreNodeUpdate:null};ny={get(J,z,Y){if(z===Y9)return J;if(z===jz)return Y;if(z===Kq)return dD(J),Y;let G=YH(J,iX),X=G[z],Z=X?X():J[z];if(z===iX||z===UY||z==="__proto__")return Z;if(!X){let Q=Object.getOwnPropertyDescriptor(J,z);if(Mq()&&(typeof Z!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))Z=XQ(G,z,Z)()}return zH(Z)?cD(Z):Z},has(J,z){if(z===Y9||z===jz||z===Kq||z===iX||z===UY||z==="__proto__")return!0;return Mq()&&XQ(YH(J,UY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:dy,getOwnPropertyDescriptor:cy};y$=Symbol("store-root")});function XH(J){let z=yz();return{provider:(Y)=>{let G=J.init(Y);return b(X0,{get when(){return G.ready===void 0||G.ready===!0},get children(){return b(z.Provider,{value:G,get children(){return Y.children}})}})},use(){let Y=PJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var G9=k(()=>{P();P();W1()});import{RGBA as wG}from"@opentui/core";function $y(){return Object.keys(BJ.themes)}function ZQ(J){return Boolean(BJ.themes[J])}function Z9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return PG("themes",{...BJ.themes,[J]:z}),!0}function X9(J,z="dark"){let Y=J.defs??{};function G(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return wG.fromInts(0,0,0,0);if(H.startsWith("#"))return wG.fromHex(H);if(B.includes(H))return wG.fromInts(0,0,0);let V=Y[H]??J.theme[H];if(V===void 0)return wG.fromInts(0,0,0);return G(V,[...B,H])}return G(H[z],B)}let X={};for(let[H,B]of Object.entries(J.theme))X[H]=G(B);let Z=X.text??wG.fromHex("#ffffff"),Q=X.background??wG.fromHex("#000000");return{...{primary:X.primary??Z,secondary:X.secondary??Z,accent:X.accent??X.primary??Z,error:X.error??Z,warning:X.warning??Z,success:X.success??Z,info:X.info??Z,text:Z,textMuted:X.textMuted??Z,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??Z,borderActive:X.borderActive??X.border??Z,borderSubtle:X.borderSubtle??X.border??Z,diffAdded:X.diffAdded??X.success??Z,diffRemoved:X.diffRemoved??X.error??Z,diffContext:X.diffContext??X.textMuted??Z,diffHunkHeader:X.diffHunkHeader??X.textMuted??Z,diffAddedBg:X.diffAddedBg??Q,diffRemovedBg:X.diffRemovedBg??Q,selectedListItemText:X.selectedListItemText??Q},...X}}var ly,hG,BJ,PG,i0,lD;var v1=k(()=>{P();W1();lX();G9();wq();Pq();hq();vq();mq();cq();dq();ly={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX},hG=["primary","success","info"],[BJ,PG]=cz({themes:{...ly},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:lD}=XH({name:"Theme",init:(J)=>{if(J.mode)PG("mode",J.mode);if(J.theme&&ZQ(J.theme))PG("active",J.theme);let z=HJ(),Y=K0(()=>{let X=BJ.themes[BJ.active];if(X)return X9(X,BJ.mode);let Z=BJ.themes.claude??BJ.themes.opencode??Object.values(BJ.themes)[0];if(!Z)return X9({theme:{background:"#000000",text:"#ffffff"}},BJ.mode);return X9(Z,BJ.mode)}),G=K0(()=>{let X=Y(),Z=X[BJ.focusAccent]??X.primary,Q={...X,focusAccent:Z};if(!BJ.transparentBackground)return Q;let f=wG.fromInts(0,0,0,0);return{...Q,background:f,backgroundPanel:f}});return s0(()=>{z?.setBackgroundColor(G().background)}),{theme:new Proxy({},{get(X,Z){let Q=G();return Q[Z]??Q.text}}),get selected(){return BJ.active},get transparentBackground(){return BJ.transparentBackground},get focusAccent(){return BJ.focusAccent},mode(){return BJ.mode},set(X){if(!ZQ(X))return!1;return PG("active",X),!0},setMode(X){PG("mode",X)},setTransparentBackground(X){PG("transparentBackground",X)},setFocusAccent(X){PG("focusAccent",X)},all(){return $y()},has(X){return ZQ(X)}}}}))});var $D,aD;var _D=k(()=>{$D={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"}},aD={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 pD,rD;var oD=k(()=>{pD={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"}},rD={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 sD,tD;var eD=k(()=>{sD={title:"kobe \u2014 keybindings",esc:"esc"},tD={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var JL,zL;var YL=k(()=>{JL={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},zL={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var GL,XL;var ZL=k(()=>{GL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},XL={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 QL,qL;var fL=k(()=>{QL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},qL={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 HL,BL;var jL=k(()=>{HL={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},BL={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var WL,VL;var KL=k(()=>{WL={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},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)"}},VL={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var UL,DL;var LL=k(()=>{UL={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}"}},DL={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 ML,FL;var OL=k(()=>{ML={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`"}},FL={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 QQ(J){return typeof J==="string"&&vG.some((z)=>z.id===J)}var ay,_y,vG,$X,aX="en";var _X=k(()=>{_D();oD();eD();YL();ZL();fL();jL();KL();LL();OL();ay={settings:WL,tasks:UL,files:pD,newTask:GL,ops:QL,update:ML,quickTask:HL,help:sD,common:$D,keys:JL},_y={settings:VL,tasks:DL,files:rD,newTask:XL,ops:qL,update:FL,quickTask:BL,help:tD,common:aD,keys:zL},vG=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$X={en:ay,zh:_y}});function qQ(J){if($X[J])py("lang",J)}function q9(){return Q9.lang}function AL(J,z){let Y=J;for(let G of z.split("."))if(Y&&typeof Y==="object"&&G in Y)Y=Y[G];else return;return typeof Y==="string"?Y:void 0}function ry(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,G)=>(G in z)?String(z[G]):Y)}function F(J,z){let Y=Q9.lang,G=AL($X[Y],J)??AL($X.en,J)??J;return ry(G,z)}function f9(J,z){let Y=Q9.lang,G=(X)=>{return X.keys[J]?.[z]};return G($X[Y])??G($X.en)??z}var Q9,py;var ZJ=k(()=>{lX();_X();_X();[Q9,py]=cz({lang:aX})});function oy(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let G=[];if(J.ctrl)G.push("ctrl");if(J.meta)G.push("cmd");if(J.option)G.push("alt");if(J.shift&&Y&&Y.length>1)G.push("shift");if(G.length===0)return z;let X=`${G.join("+")}+`;return z.map((Z)=>X+Z)}function B9(J,z){if(z.defaultPrevented)return!1;if(H9)return!1;let Y=J.slice(),G=oy(z);H9=!0;try{for(let X=Y.length-1;X>=0;X--){let Z=Y[X];if(!Z)continue;let Q=Z.config();if(Q.enabled===!1)continue;let f=Q.bindings.find((H)=>G.includes(H.key));if(f)return f.cmd(z,f.slot),z.preventDefault(),!0}return!1}finally{H9=!1}}var H9=!1;function ty(){if(j9)return;let J=HJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");j9=J.keyInput,RL=(z)=>{B9(ZH,z)},j9.on("keypress",RL)}function D1(J){ty();let z=sy++,Y={config:J,id:z};s0(()=>{J()}),ZH.push(Y),k1(()=>{let G=ZH.findIndex((X)=>X.id===z);if(G>=0)ZH.splice(G,1)})}var sy=1,ZH,j9=null,RL=null;var xJ=k(()=>{P();W1();ZH=[]});function QH(){let J=new Set;function z(G,X){let Z=setTimeout(()=>{J.delete(Z),G()},X);return J.add(Z),Z}function Y(G){if(J.delete(G))clearTimeout(G)}return k1(()=>{for(let G of J)clearTimeout(G);J.clear()}),{set:z,clear:Y}}var W9=k(()=>{W1()});import{RGBA as gL}from"@opentui/core";function zT(J){let z=vz(),Y=i0(),{theme:G}=Y,X=HJ(),Z=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},f=2,H=()=>Math.max(8,z().height-f*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),q(B,"onMouseDown",()=>{Z=!!X?.getSelection()}),q(B,"onMouseUp",()=>{if(Z){Z=!1;return}J.onClose?.()}),q(B,"alignItems","center"),q(B,"justifyContent","center"),q(B,"position","absolute"),q(B,"zIndex",3000),q(B,"left",0),q(B,"top",0),q(V,"onMouseUp",(j)=>{Z=!1,j.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),x((j)=>{var K=z().width,L=z().height,A=Y.transparentBackground?JT:ey,O=Q(),g=z().width-2,u=H(),_=G.backgroundDialog;return K!==j.e&&(j.e=q(B,"width",K,j.e)),L!==j.t&&(j.t=q(B,"height",L,j.t)),A!==j.a&&(j.a=q(B,"backgroundColor",A,j.a)),O!==j.o&&(j.o=q(V,"width",O,j.o)),g!==j.i&&(j.i=q(V,"maxWidth",g,j.i)),u!==j.n&&(j.n=q(V,"maxHeight",u,j.n)),_!==j.s&&(j.s=q(V,"backgroundColor",_,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function YT(){let[J,z]=cz({stack:[],size:"medium"}),Y=HJ(),G=null,X=QH();function Z(){X.set(()=>{if(!G)return;if(G.isDestroyed)return;function Q(H){for(let B of H.getChildren()){if(B===G)return!0;if(Q(B))return!0}return!1}let f=Y?.root;if(!f)return;if(!Q(f))return;G.focus()},1)}return D1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),Z()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),Z()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Lq(()=>{z("size","medium"),z("stack",[])}),Z()},replace(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();for(let H of J.stack)H.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:f}])},push(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();z("stack",[...J.stack,{element:Q,onClose:f}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)Z()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function NL(J){let z=YT();return b(CL.Provider,{value:z,get children(){return[x0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(X0,{get when(){return z.stack.length},get children(){return b(zT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function c1(){let J=PJ(CL);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var ey,JT,CL;var lJ=k(()=>{P();P();P();P();P();P();P();P();W1();lX();v1();xJ();W9();ey=gL.fromInts(0,0,0,128),JT=gL.fromInts(0,0,0,64);CL=yz()});import{spawnSync as V9}from"child_process";import*as bL from"fs";function kL(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 IL(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=bL.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(V9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return kL(z)}catch{return kL(z)}return null}function fQ(J){if(!J)return null;try{let z=V9("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function SL(J){if(!J)return[];try{let z=V9("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(`
|
|
263
|
-
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,G)=>{let X=(f)=>f==="main"?0:f==="master"?1:f==="develop"?2:3,Z=X(Y),Q=X(G);if(Z!==Q)return Z-Q;return Y.localeCompare(G)})}catch{return[]}}var Cz="main";var qH=()=>{};import*as yL from"fs";import*as fH from"os";function DJ(J){if(J==="~")return fH.homedir();if(J.startsWith("~/"))return fH.homedir()+J.slice(1);return J}function K9(J){if(!J)return{base:"",filter:""};let Y=DJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let G=Y.lastIndexOf("/");if(G===-1)return{base:"",filter:Y};return{base:Y.slice(0,G+1),filter:Y.slice(G+1)}}function U9(J){if(!J)return[];try{let z=yL.readdirSync(J,{withFileTypes:!0}),Y=[];for(let G of z)if(G.isDirectory())Y.push(G.name);return Y.sort((G,X)=>G.localeCompare(X))}catch{return[]}}function D9(J,z){let Y=z.toLowerCase(),X=Y.startsWith(".")?J:J.filter((Z)=>!Z.startsWith("."));if(!Y)return X;return X.filter((Z)=>Z.toLowerCase().startsWith(Y))}function HQ(J,z,Y){let G=z+Y;if(J.startsWith("~")){let X=fH.homedir();if(G===X)return"~";if(G.startsWith(`${X}/`))return`~${G.slice(X.length)}`}return G}var HH=()=>{};import{spawn as GT}from"child_process";import*as mG from"fs";import*as BQ from"path";function TL(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),G=z.lastIndexOf(":"),X=Math.max(Y,G);return(X>=0?z.slice(X+1):z).replace(/\.git$/i,"")}function xL(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),G=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Y&&!G&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function uL(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let G=J.trim();if(!G)return F("newTask.error.parentRequired");let X=DJ(G),Z;try{Z=mG.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!Z.isDirectory())return F("newTask.error.parentNotDir",{path:X});let Q=BQ.join(X,Y);if(mG.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function EL(J,z){return BQ.join(DJ(J.trim()),z.trim())}function wL(J,z){let Y=z.trim();if(!Y)return z;let G=DJ(J.trim());if(!G)return z;try{if(!mG.statSync(G).isDirectory())return z}catch{return z}if(!mG.existsSync(BQ.join(G,Y)))return Y;for(let X=2;X<1000;X++){let Z=`${Y}-${X}`;if(!mG.existsSync(BQ.join(G,Z)))return Z}return Y}function PL(J,z,Y){return new Promise((G)=>{let X="";try{let Z=GT("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});Z.stderr?.setEncoding("utf-8"),Z.stderr?.on("data",(Q)=>{if(X+=Q,Y){let f=Q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=f[f.length-1];if(H)Y(H)}}),Z.on("error",(Q)=>{G({ok:!1,error:Q.message})}),Z.on("close",(Q)=>{if(Q===0){G({ok:!0,path:z});return}let f=X.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${Q}`;G({ok:!1,error:f})})}catch(Z){G({ok:!1,error:Z instanceof Error?Z.message:String(Z)})}})}var hL=k(()=>{ZJ();HH()});function L9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function M9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function vL(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function LJ(J){return J.replace(/[\r\n]+/g,"")}function jQ(J){return!/\S/u.test(J)}function F9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return O9(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 O9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function mL(J,z){let Y=z.trim();if(!Y)return J;return J.filter((G)=>CQ(Y,G.path))}function cL(J,z){let Y=new Set,G=[];for(let X of[J,...z]){let Z=X.trim();if(!Z||Y.has(Z))continue;Y.add(Z),G.push(Z)}return G}function dL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function nL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function WQ(J,z,Y=XT){let G=J.length;if(G<=Y)return{items:J,start:0,total:G};let X=Math.floor(Y/2),Z=Math.max(0,z-X);if(Z+Y>G)Z=G-Y;return{items:J.slice(Z,Z+Y),start:Z,total:G}}function dz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function iL(J,z,Y){let G=z[Y];if(G)return G;return J.trim()||Cz}var XT=8;var A9=k(()=>{TH();qH()});import{TextAttributes as Yz}from"@opentui/core";function lL(J){let z=c1(),{theme:Y}=i0(),[G,X]=a("existing"),Z=()=>{let d=J.availableVendors;return d&&d.length>0?d:i1},Q=(()=>{let d=Z(),Y0=J.defaultVendor??"claude";return d.includes(Y0)?Y0:d[0]??"claude"})(),[f,H]=a(Q),[B,V]=a("tabs"),[j,K]=a(J.defaultRepo),[L,A]=a(fQ(DJ(J.defaultRepo.trim()))??Cz),[O,g]=a(!1),[u,_]=a(""),[I,N]=a(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,S]=a(""),[r,l]=a(!1),[e,J0]=a(Cz),[T,q0]=a(!1),[p,j0]=a(""),F0=K0(()=>cL(J.defaultRepo,J.savedRepos)),V0=K0(()=>vL(j(),F0())),t=K0(()=>K9(j())),h=K0(()=>U9(t().base)),C=K0(()=>D9(h(),t().filter)),o=K0(()=>dL(F0(),j())),E=K0(()=>V0()==="browse"?C():o()),[c,s]=a(0),Z0=K0(()=>WQ(E(),c())),[A0,h0]=a(!1),g0=K0(()=>SL(DJ(j().trim()))),N0=K0(()=>nL(g0(),L())),[y,L0]=a(0),Q0=K0(()=>WQ(N0(),y())),M0=K0(()=>K9(I())),T0=K0(()=>U9(M0().base)),X1=K0(()=>D9(T0(),M0().filter)),[z1,w0]=a(0),v0=K0(()=>WQ(X1(),z1())),[n,f0]=a(!1),[S0,r0]=a(""),[_0,p0]=a(0),[t0,N1]=a(new Set),[g1]=Dq(()=>G()==="adopt"?DJ(j().trim()):null,async(d)=>J.discoverAdoptable?await J.discoverAdoptable(d):[]),z0=K0(()=>mL(g1()??[],S0())),G0=K0(()=>WQ(z0().map((d)=>d.path),_0())),B0=K0(()=>{let d=G0();return z0().slice(d.start,d.start+d.items.length)});s0(()=>{z0(),p0((d)=>dz(d,z0().length))});function k0(d){N1((Y0)=>{let y0=new Set(Y0);if(y0.has(d))y0.delete(d);else y0.add(d);return y0})}function R(){let d=z0()[_0()];if(d)k0(d.path)}s0(()=>{N0(),L0(0)}),s0(()=>{let d=DJ(j().trim());if(!d)return;if(O())return;let Y0=fQ(d);if(Y0)A(Y0)}),s0(()=>{E(),s(0)}),s0(()=>{X1(),w0(0)}),s0(()=>{let d=u(),Y0=I();if(r())return;let y0=TL(d);S(wL(Y0,y0))});let[m0,U0]=a(null);s0(()=>{j(),u(),I(),M(),S0(),U0(null)});function u0(){let d=DJ(j().trim());if(!d)return;let Y0=IL(d);if(Y0){U0(Y0),V("repo");return}let y0=L().trim()||Cz;J.onSubmit({repo:d,baseRef:y0,vendor:f()}),z.clear()}async function W0(){if(T())return;let d=xL(u());if(d){U0(d),V("cloneUrl");return}let Y0=uL(I(),M());if(Y0){U0(Y0),V(M().trim()?"cloneParent":"cloneFolder");return}let y0=EL(I(),M());q0(!0),j0(F("newTask.clone.progressInto",{target:y0}));let I0=await PL(u().trim(),y0,(QJ)=>{j0(QJ)});if(q0(!1),!I0.ok){U0(F("newTask.error.cloneFailed",{error:I0.error})),V("cloneUrl");return}let jJ=e().trim()||Cz,MJ=DJ(I().trim());J.onSubmit({repo:I0.path,baseRef:jJ,vendor:f(),cloned:{parentDir:MJ}}),z.clear()}function D0(){let d=z0();if(d.length===0){U0(F("newTask.error.noAdoptable"));return}let Y0=t0(),y0=Y0.size>0?d.filter((I0)=>Y0.has(I0.path)):d.slice(_0(),_0()+1);if(y0.length===0)return;J.onSubmit({mode:"adopt",repo:DJ(j().trim()),vendor:f(),adopt:y0.map((I0)=>({worktreePath:I0.path,branch:I0.branch}))}),z.clear()}function C0(){if(G()==="clone"){W0();return}if(G()==="adopt"){D0();return}u0()}function J1(d){if(T())return;if(d===G())return;X(d),V(O9(d)),U0(null)}function Y1(d){if(T())return;let Y0=d===1?L9(G()):M9(G());if(Y0===G())return;X(Y0),U0(null),V("tabs")}function l0(d){H((Y0)=>d===1?OY(Z(),Y0):xH(Z(),Y0))}function x1(){if(!j().trim()&&V0()==="saved"){let Y0=E()[0];if(Y0){K(Y0),V("baseRef");return}}if(V0()==="browse"){let y0=C()[c()],I0=t();if(y0){K(HQ(j(),I0.base,y0)),s(0),h0(!0),V("baseRef");return}V("baseRef");return}let d=E()[c()];if(d){K(d),V("baseRef");return}V("baseRef")}function b0(d){let y0=E()[d];if(!y0)return;if(V0()==="browse"){let I0=t();K(HQ(j(),I0.base,y0)),s(d),h0(!0),V("baseRef");return}K(y0),s(d),V("baseRef")}function m1(){let Y0=X1()[z1()],y0=M0();if(Y0){N(HQ(I(),y0.base,Y0)),w0(0),f0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let y0=X1()[d];if(!y0)return;let I0=M0();N(HQ(I(),I0.base,y0)),w0(d),f0(!0),V("cloneFolder")}let R0=()=>{let d=z0();if(d.length===0)return;let Y0=d.every((y0)=>t0().has(y0.path));N1(Y0?new Set:new Set(d.map((y0)=>y0.path)))};D1(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>F9(d,G()))},{key:"ctrl+]",cmd:()=>J1(L9(G()))},{key:"ctrl+[",cmd:()=>J1(M9(G()))},{key:"ctrl+e",cmd:()=>H((d)=>OY(Z(),d))},{key:"up",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(dz(c()-1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;L0(dz(y()-1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=X1();if(d.length===0)return;w0(dz(z1()-1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;p0(dz(_0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(dz(c()+1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;L0(dz(y()+1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=X1();if(d.length===0)return;w0(dz(z1()+1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;p0(dz(_0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Y1(-1):l0(-1)},{key:"right",cmd:()=>B()==="tabs"?Y1(1):l0(1)},{key:"return",cmd:()=>V((d)=>F9(d,G()))}]:[],...G()==="adopt"?[{key:"ctrl+a",cmd:R0}]:[]]})),D1(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>C0()}]}));let V1=(d)=>B()===d?Y.primary:Y.textMuted,R1=(d)=>B()===d?Yz.BOLD|Yz.UNDERLINE:void 0,B1=(d,Y0)=>d?Y0?Yz.BOLD|Yz.UNDERLINE:Yz.BOLD:void 0;return(()=>{var d=W("box"),Y0=W("box"),y0=W("text"),I0=W("box"),jJ=W("box"),MJ=W("text"),QJ=W("box"),$J=W("box"),nz=W("text"),gJ=W("box"),iz=W("text"),MY=W("text");return D(d,Y0),D(d,I0),D(d,gJ),q(d,"paddingLeft",2),q(d,"paddingRight",2),q(d,"gap",0),D(Y0,y0),q(Y0,"flexDirection","row"),U(y0,()=>F("newTask.title")),D(I0,jJ),q(I0,"gap",1),q(I0,"paddingTop",1),q(I0,"paddingBottom",1),U(I0,()=>{let m=()=>B()==="tabs",i=($)=>$?Y.primary:Y.textMuted;return(()=>{var $=W("box"),w=W("text"),d0=W("text"),c0=W("text");return D($,w),D($,d0),D($,c0),q($,"flexDirection","row"),q($,"gap",2),q(w,"onMouseUp",()=>J1("existing")),U(w,(()=>{var O0=x0(()=>G()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(d0,"onMouseUp",()=>J1("clone")),U(d0,(()=>{var O0=x0(()=>G()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(c0,"onMouseUp",()=>J1("adopt")),U(c0,(()=>{var O0=x0(()=>G()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),x((O0)=>{var n0=i(G()==="existing"),f1=B1(G()==="existing",m()),L1=i(G()==="clone"),WJ=B1(G()==="clone",m()),Xz=i(G()==="adopt"),FY=B1(G()==="adopt",m());return n0!==O0.e&&(O0.e=q(w,"fg",n0,O0.e)),f1!==O0.t&&(O0.t=q(w,"attributes",f1,O0.t)),L1!==O0.a&&(O0.a=q(d0,"fg",L1,O0.a)),WJ!==O0.o&&(O0.o=q(d0,"attributes",WJ,O0.o)),Xz!==O0.i&&(O0.i=q(c0,"fg",Xz,O0.i)),FY!==O0.n&&(O0.n=q(c0,"attributes",FY,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),$})()},jJ),D(jJ,MJ),D(jJ,QJ),q(jJ,"gap",0),U(MJ,()=>F("newTask.field.engine")),D(QJ,$J),D(QJ,nz),q(QJ,"flexDirection","row"),q(QJ,"gap",2),U(QJ,b(Q1,{get each(){return Z()},children:(m)=>{let i=()=>f()===m;return(()=>{var $=W("text");return q($,"onMouseUp",()=>H(m)),U($,()=>i()?"\u25B8 ":" ",null),U($,m,null),x((w)=>{var d0=i()?Y.primary:Y.textMuted,c0=i()?Yz.BOLD:void 0;return d0!==w.e&&(w.e=q($,"fg",d0,w.e)),c0!==w.t&&(w.t=q($,"attributes",c0,w.t)),w},{e:void 0,t:void 0}),$})()}}),$J),q($J,"flexGrow",1),U(nz,()=>F("newTask.hint.engineCycle")),U(I0,b(X0,{get when(){return G()==="existing"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.repo")),q($,"onInput",(w)=>{h0(!1),K(LJ(w))}),q($,"onSubmit",()=>{if(!j().trim())return;x1()}),x((w)=>{var d0=V1("repo"),c0=R1("repo"),O0=j(),n0=J.defaultRepo,f1=B()==="repo";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(X0,{get when(){return x0(()=>B()==="repo"&&E().length>0)()&&!A0()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return Z0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:Z0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return Z0().items},children:(i,$)=>{let w=()=>Z0().start+$(),d0=()=>w()===c(),c0=()=>V0()==="saved"&&i===J.defaultRepo,O0=()=>V0()==="saved"&&j().trim()===i,n0=()=>V0()==="browse"?"/":"",f1=()=>c0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var L1=W("text");return q(L1,"wrapMode","none"),q(L1,"onMouseUp",()=>b0(w())),U(L1,()=>d0()?"\u25B8 ":" ",null),U(L1,i,null),U(L1,n0,null),U(L1,f1,null),x((WJ)=>{var Xz=d0()?Y.primary:O0()?Y.accent:Y.textMuted,FY=d0()?Yz.BOLD:void 0;return Xz!==WJ.e&&(WJ.e=q(L1,"fg",Xz,WJ.e)),FY!==WJ.t&&(WJ.t=q(L1,"attributes",FY,WJ.t)),WJ},{e:void 0,t:void 0}),L1})()}}),null),U(m,b(X0,{get when(){return Z0().start+Z0().items.length<Z0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:Z0().total-Z0().start-Z0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.fromBranch")),q($,"placeholder",Cz),q($,"onInput",(w)=>{g(!0),A(LJ(w))}),q($,"onSubmit",()=>{A(iL(L(),N0(),y())),g(!0),u0()}),x((w)=>{var d0=V1("baseRef"),c0=R1("baseRef"),O0=L(),n0=B()==="baseRef";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return x0(()=>B()==="baseRef"&&N0().length===0)()&&m0()==null},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>g0().length===0);return()=>$()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>B()==="baseRef")()&&N0().length>0},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),U(m,b(X0,{get when(){return Q0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:Q0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return Q0().items},children:(i,$)=>{let w=()=>Q0().start+$(),d0=()=>w()===y(),c0=()=>L().trim()===i;return(()=>{var O0=W("text");return q(O0,"wrapMode","none"),q(O0,"onMouseUp",()=>{A(i),g(!0),L0(w()),V("confirm")}),U(O0,()=>d0()?"\u25B8 ":" ",null),U(O0,i,null),x((n0)=>{var f1=d0()?Y.primary:c0()?Y.accent:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return f1!==n0.e&&(n0.e=q(O0,"fg",f1,n0.e)),L1!==n0.t&&(n0.t=q(O0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),O0})()}}),null),U(m,b(X0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}})]}}),null),U(I0,b(X0,{get when(){return G()==="clone"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.gitUrl")),q($,"placeholder","https://github.com/user/repo.git"),q($,"onInput",(w)=>_(LJ(w))),q($,"onSubmit",()=>{if(!u().trim())return;V("cloneParent")}),x((w)=>{var d0=V1("cloneUrl"),c0=R1("cloneUrl"),O0=u(),n0=B()==="cloneUrl";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.parentDir")),q($,"placeholder","~/"),q($,"onInput",(w)=>{f0(!1),N(LJ(w))}),q($,"onSubmit",()=>m1()),x((w)=>{var d0=V1("cloneParent"),c0=R1("cloneParent"),O0=I(),n0=B()==="cloneParent";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.hint.remembered")),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>B()==="cloneParent"&&X1().length>0)()&&!n()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return v0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:v0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return v0().items},children:(i,$)=>{let w=()=>v0().start+$(),d0=()=>w()===z1();return(()=>{var c0=W("text"),O0=E0("/");return D(c0,O0),q(c0,"wrapMode","none"),q(c0,"onMouseUp",()=>v(w())),U(c0,()=>d0()?"\u25B8 ":" ",O0),U(c0,i,O0),x((n0)=>{var f1=d0()?Y.primary:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return f1!==n0.e&&(n0.e=q(c0,"fg",f1,n0.e)),L1!==n0.t&&(n0.t=q(c0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),c0})()}}),null),U(m,b(X0,{get when(){return v0().start+v0().items.length<v0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:v0().total-v0().start-v0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.folderName")),q($,"onInput",(w)=>{l(!0),S(LJ(w))}),q($,"onSubmit",()=>V("cloneBaseRef")),x((w)=>{var d0=V1("cloneFolder"),c0=R1("cloneFolder"),O0=M(),n0=F("newTask.placeholder.folderName"),f1=B()==="cloneFolder";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.baseBranch")),q($,"placeholder",Cz),q($,"onInput",(w)=>J0(LJ(w))),q($,"onSubmit",()=>void W0()),x((w)=>{var d0=V1("cloneBaseRef"),c0=R1("cloneBaseRef"),O0=e(),n0=B()==="cloneBaseRef";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return T()},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>p()||F("newTask.clone.progressFallback")),x(($)=>q(i,"fg",Y.textMuted,$)),m}})]}}),null),U(I0,b(X0,{get when(){return G()==="adopt"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.adoptFilter")),q($,"onInput",(w)=>r0(LJ(w))),q($,"onSubmit",()=>R()),x((w)=>{var d0=V1("adoptFilter"),c0=R1("adoptFilter"),O0=S0(),n0=F("newTask.placeholder.adoptFilter"),f1=B()==="adoptFilter";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.adopt.repoLine",{path:DJ(j().trim())||F("newTask.adopt.repoNone")})),x(($)=>q(i,"fg",Y.textMuted,$)),m})(),b(X0,{get when(){return g1.loading},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.hint.scanningWorktrees")),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>!g1.loading)()&&z0().length===0},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>(g1()??[]).length===0);return()=>$()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return z0().length>0},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return G0().start>0},get children(){var $=W("text");return q($,"wrapMode","none"),U($,()=>F("newTask.picker.moreAbove",{count:G0().start})),x((w)=>q($,"fg",Y.textMuted,w)),$}}),i),U(m,b(Q1,{get each(){return B0()},children:($,w)=>{let d0=()=>G0().start+w(),c0=()=>d0()===_0(),O0=()=>t0().has($.path),n0=()=>[$.dirty?"dirty":"",$.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var f1=W("text");return q(f1,"wrapMode","none"),q(f1,"onMouseUp",()=>{p0(d0()),k0($.path)}),U(f1,()=>c0()?"\u25B8 ":" ",null),U(f1,()=>O0()?"[x] ":"[ ] ",null),U(f1,()=>$.branch,null),U(f1,(()=>{var L1=x0(()=>!!n0());return()=>L1()?` (${n0()})`:""})(),null),x((L1)=>{var WJ=c0()?Y.primary:O0()?Y.accent:Y.textMuted,Xz=c0()?Yz.BOLD:void 0;return WJ!==L1.e&&(L1.e=q(f1,"fg",WJ,L1.e)),Xz!==L1.t&&(L1.t=q(f1,"attributes",Xz,L1.t)),L1},{e:void 0,t:void 0}),f1})()}}),i),U(m,b(X0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var $=W("text");return q($,"wrapMode","none"),U($,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),x((w)=>q($,"fg",Y.textMuted,w)),$}}),i),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>t0().size>0);return()=>$()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}})]}}),null),U(I0,b(X0,{get when(){return m0()},get children(){var m=W("text"),i=E0("\u203B ");return D(m,i),q(m,"wrapMode","word"),U(m,m0,null),x(($)=>q(m,"fg",Y.error,$)),m}}),null),D(gJ,iz),D(gJ,MY),q(gJ,"flexDirection","row"),q(gJ,"justifyContent","space-between"),q(gJ,"alignItems","center"),q(gJ,"paddingTop",1),q(gJ,"paddingBottom",1),U(iz,()=>F("newTask.hint.legend")),q(MY,"onMouseUp",()=>C0()),U(MY,(()=>{var m=x0(()=>!!T());return()=>m()?F("newTask.button.cloning"):x0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),x((m)=>{var i=Yz.BOLD,$=Y.text,w=V1("engine"),d0=R1("engine"),c0=Y.textMuted,O0=Y.textMuted,n0=B()==="confirm"?Y.primary:Y.text,f1=B()==="confirm"?Yz.BOLD:void 0;return i!==m.e&&(m.e=q(y0,"attributes",i,m.e)),$!==m.t&&(m.t=q(y0,"fg",$,m.t)),w!==m.a&&(m.a=q(MJ,"fg",w,m.a)),d0!==m.o&&(m.o=q(MJ,"attributes",d0,m.o)),c0!==m.i&&(m.i=q(nz,"fg",c0,m.i)),O0!==m.n&&(m.n=q(iz,"fg",O0,m.n)),n0!==m.s&&(m.s=q(MY,"fg",n0,m.s)),f1!==m.h&&(m.h=q(MY,"attributes",f1,m.h)),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}),d})()}var $L=k(()=>{P();P();P();P();P();P();P();P();ZJ();l1();W1();v1();qH();xJ();HH();lJ();hL();A9()});function ZT(J,z,Y,G){return new Promise((X)=>{J.replace(()=>b(lL,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return G?.defaultCloneParent},get defaultVendor(){return G?.defaultVendor},get availableVendors(){return G?.availableVendors},get discoverAdoptable(){return G?.discoverAdoptable},onSubmit:(Z)=>X(Z),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var BH;var pX=k(()=>{P();$L();A9();BH={show:ZT}});function aL(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as _L}from"@opentui/core";function QT(J){let z=c1(),{theme:Y}=i0(),[G,X]=a("prompt"),[Z,Q]=a(""),[f,H]=a(J.defaultVendor),[B,V]=a(J.defaultBaseRef);function j(O){let g=jH.indexOf(G());X(jH[(g+O+jH.length)%jH.length]??"prompt")}function K(O){let g=J.engines;if(g.length===0)return;if(O>0){H((_)=>OY(g,_));return}let u=Math.max(0,g.indexOf(f()));H(g[(u-1+g.length)%g.length]??f())}function L(){if(jQ(Z())){X("prompt");return}J.onSubmit({prompt:Z().trim(),vendor:f(),baseRef:B().trim()||J.defaultBaseRef}),z.clear()}D1(()=>({enabled:!0,bindings:aL(G(),{cycleField:j,stepEngine:K,commit:L})}));let A=(O)=>G()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),g=W("box"),u=W("text"),_=W("text"),I=W("box"),N=W("text"),M=W("input"),S=W("box"),r=W("text"),l=W("box"),e=W("text"),J0=W("input"),T=W("box"),q0=W("text");return D(O,g),D(O,I),D(O,S),D(O,l),D(O,T),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(g,u),D(g,_),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),U(u,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(_,"onMouseUp",()=>J.onCancel()),U(_,()=>F("quickTask.esc")),D(I,N),D(I,M),q(I,"gap",0),U(N,()=>F("quickTask.promptLabel")),q(M,"onInput",(p)=>Q(LJ(p))),q(M,"onSubmit",()=>L()),D(S,r),q(S,"flexDirection","row"),q(S,"gap",2),U(r,()=>F("quickTask.engineLabel")),U(S,b(Q1,{get each(){return J.engines},children:(p)=>(()=>{var j0=W("text");return q(j0,"onMouseUp",()=>{H(p),X("engine")}),U(j0,()=>J.engineLabel(p)),x((F0)=>{var V0=f()===p?Y.primary:Y.textMuted,t=f()===p?_L.BOLD:void 0;return V0!==F0.e&&(F0.e=q(j0,"fg",V0,F0.e)),t!==F0.t&&(F0.t=q(j0,"attributes",t,F0.t)),F0},{e:void 0,t:void 0}),j0})()}),null),D(l,e),D(l,J0),q(l,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(J0,"onInput",(p)=>V(LJ(p))),q(J0,"onSubmit",()=>L()),D(T,q0),q(T,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),x((p)=>{var j0=_L.BOLD,F0=Y.text,V0=Y.textMuted,t=A("prompt"),h=Z(),C=F("quickTask.promptPlaceholder"),o=G()==="prompt",E=A("engine"),c=A("branch"),s=B(),Z0=J.defaultBaseRef,A0=G()==="branch",h0=Y.textMuted;return j0!==p.e&&(p.e=q(u,"attributes",j0,p.e)),F0!==p.t&&(p.t=q(u,"fg",F0,p.t)),V0!==p.a&&(p.a=q(_,"fg",V0,p.a)),t!==p.o&&(p.o=q(N,"fg",t,p.o)),h!==p.i&&(p.i=q(M,"value",h,p.i)),C!==p.n&&(p.n=q(M,"placeholder",C,p.n)),o!==p.s&&(p.s=q(M,"focused",o,p.s)),E!==p.h&&(p.h=q(r,"fg",E,p.h)),c!==p.r&&(p.r=q(e,"fg",c,p.r)),s!==p.d&&(p.d=q(J0,"value",s,p.d)),Z0!==p.l&&(p.l=q(J0,"placeholder",Z0,p.l)),A0!==p.u&&(p.u=q(J0,"focused",A0,p.u)),h0!==p.c&&(p.c=q(q0,"fg",h0,p.c)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function qT(J,z){return new Promise((Y)=>{J.replace(()=>b(QT,yD(z,{onSubmit:(G)=>Y(G),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var jH,pL;var rL=k(()=>{P();P();P();P();P();P();P();W1();l1();v1();ZJ();xJ();lJ();pX();jH=["prompt","engine","branch"];pL={show:qT}});async function WH(J={}){let z=J.logTag??"orch-connect",Y=J.connect??zz,G=null;try{let X=await Y();if(!X)return sz(z,"no daemon running \u2014 caller degrades"),null;return G=new UJ(X,{...J.orchestratorOptions,channels:J.channels}),await G.init(),G}catch(X){return s1(z,X),G?.dispose(),null}}var R9=k(()=>{ZG();OJ();aY()});function oL(J){let[z,Y]=a(J.initial??"sidebar"),[G,X]=a(0),Z=HJ();function Q(j){if(X((L)=>L+1),z()===j)return;let K=Z?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(j)}function f(j){let L=(VH.indexOf(z())+j+VH.length)%VH.length;Q(VH[L])}let H=new Map;function B(j){let K=H.get(j);if(!K)K=()=>z()===j,H.set(j,K);return K}let V={focused:z,is:B,setFocused:Q,cycle:f,refocusTick:G};return b(fT.Provider,{value:V,get children(){return J.children}})}var VH,fT;var sL=k(()=>{P();P();W1();VH=["sidebar","workspace","files","terminal"],fT=yz(null)});function tL(){for(let J of _Y){let z=HT.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function eL(){BT((J)=>J+1)}function C9(J){return jT.get(J)}function WT(J){return C9(J)?.keys??[]}function pY(J){let z=[];for(let Y in J){let G=J[Y];if(!G)continue;let X=WT(Y);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((Z,Q)=>z.push({key:Z,cmd:G,slot:Q}))}return z}var _Y,HT,g9,BT,jT;var rX=k(()=>{W1();_Y=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],HT=new Map(_Y.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[g9,BT]=a(0);jT=new Map(_Y.map((J)=>[J.id,J]))});function KH(){if(rY)return rY;let J=Iq();if(!J.exists)return rY={path:J.path,exists:!1,applied:[],warnings:[]},rY;let z=[...J.warnings],Y=yq(J.doc,process.platform,{chordOptsFor:JB});z.push(...Y.warnings);let G=Y.entries.filter((f)=>f.id.startsWith("tmux.")),X=Y.entries.filter((f)=>!f.id.startsWith("tmux.")),Z=oV(_Y,X);z.push(...Z.warnings);let Q=[...Z.applied];if(G.length>0){let f=e8(G);z.push(...f.warnings);for(let H of f.overridden){if(H===xz){Q.push({id:H,keys:f.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:yY});continue}let B=f.binds[H];Q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[gG[H]]});let V=_Y.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${fX(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let f of z)console.warn(`[kobe/keybindings] ${f}`);return rY={path:J.path,exists:!0,applied:Q,warnings:z},rY}function J3(){return rY??KH()}function z3(){rY=null,rV(),J5(),tL();let J=KH();return eL(),J}var rY=null;var N9=k(()=>{s8();uq();Tq();rX()});var VT=250,oX,Y3;var VQ=k(()=>{lX();YG();G9();({use:oX,provider:Y3}=XH({name:"KV",init:()=>{let[J,z]=cz(d1()),Y=new Set,G=null;function X(f){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=J[B];return $z(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${f} failed:`,H),!1}}function Z(){if(G)clearTimeout(G);G=setTimeout(()=>{G=null,X("write")},VT)}let Q={get ready(){return!0},get store(){return J},signal(f,H){if(J[f]===void 0)z(f,H);return[()=>Q.get(f),(B)=>Q.set(f,B)]},get(f,H){return J[f]??H},set(f,H){z(f,H),Y.add(f),Z()},flush(){if(G)clearTimeout(G),G=null;return X("flush")},clear(){for(let f of Object.keys(J))z(f,void 0);if(G)clearTimeout(G),G=null;Y.clear();try{uW({})}catch(f){console.error("[kobe] kv clear write failed:",f)}}};return Q}}))});var UH="../pulse-n3cq1btw.wav";var G3=()=>{};import{existsSync as UT,mkdirSync as DT}from"fs";import{tmpdir as LT}from"os";import{basename as MT,isAbsolute as FT,join as k9,resolve as OT}from"path";function RT(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function gT(){if(DH!==void 0)return DH;let z=(process.env.PATH??"").split(":").filter(Boolean);return DH=AT.find((Y)=>z.some((G)=>UT(k9(G,Y))))??null,DH}async function CT(){return Q3??=(async()=>{DT(Z3,{recursive:!0});let J=k9(Z3,MT(X3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(X3)),J})(),Q3}function q3(J=0.4){let z=gT();if(!z)return;CT().then((Y)=>{try{Bun.spawn(RT(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var X3,Z3,AT,DH,Q3;var f3=k(()=>{G3();X3=FT(UH)?UH:OT(import.meta.dir,UH),Z3=k9(LT(),"kobe-sfx"),AT=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function H3(J,z){return`${J}:${z}`}function j3(J){let z=oX(),[Y,G]=a([]),[X,Z]=a(new Map),Q=QH(),f=0;function H(K){if(Z((L)=>{let A=new Map(L),O=H3(K.taskId,K.tabId),g=L.get(O);if(g==="needs_input"||g==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}q3()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++f,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};G((O)=>[...O,A]),Q.set(()=>B(L),NT)}}function B(K){G((L)=>L.filter((A)=>A.id!==K))}function V(K,L){Z((A)=>{let O=H3(K,L);if(!A.has(O))return A;let g=new Map(A);return g.delete(O),g})}let j={toasts:Y,unread:X,notify:H,dismiss:B,markRead:V};return b(B3.Provider,{value:j,get children(){return J.children}})}function LH(){let J=PJ(B3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var NT=4500,B3;var MH=k(()=>{P();W1();W9();f3();VQ();B3=yz()});function b9(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=bT(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function bT(J){if(J===null)return"primary";return kT.includes(J)?J:null}var kT;var W3=k(()=>{kT=["primary","success","info"]});import{readFileSync as IT}from"fs";function V3(J){try{let z=JSON.parse(IT(aJ(),"utf8")),Y=typeof z.activeTheme==="string"&&ZQ(z.activeTheme)?z.activeTheme:J,G=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&hG.includes(z.focusAccent)?z.focusAccent:null,Z=QQ(z[FH])?z[FH]:aX;return{theme:Y,transparent:G,focusAccent:X,locale:Z}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aX}}}var FH="locale";var I9=k(()=>{r1();v1();_X()});function yT(J){if(J)hQ(J);sW(),KH();for(let{name:z,theme:Y}of SZ())Z9(z,Y)}function TT(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function xT(J){let z=()=>J.children,Y=()=>J.notifications?b(j3,{get children(){return z()}}):z(),G=()=>b(NL,{get children(){return Y()}}),X=()=>J.focus?b(oL,{initial:"sidebar",get children(){return G()}}):G(),Z=()=>J.kv?b(Y3,{get children(){return X()}}):X();return b(lD,{mode:"dark",get theme(){return J.theme},get children(){return Z()}})}function uT(J){let{theme:z}=i0();return JJ(()=>s1("pane-crash",J.error)),(()=>{var Y=W("box"),G=W("text"),X=W("text");return D(Y,G),D(Y,X),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(G,()=>F("common.paneCrash.title")),U(X,()=>F("common.paneCrash.hint")),x((Z)=>{var{background:Q,error:f,textMuted:H}=z;return Q!==Z.e&&(Z.e=q(Y,"backgroundColor",Q,Z.e)),f!==Z.t&&(Z.t=q(G,"fg",f,Z.t)),H!==Z.a&&(Z.a=q(X,"fg",H,Z.a)),Z},{e:void 0,t:void 0,a:void 0}),Y})()}function ET(J){let z=i0(),Y={selectedTheme:()=>z.selected,hasTheme:(f)=>z.has(f),setTheme:(f)=>z.set(f),reloadUserThemes:()=>{for(let{name:f,theme:H}of SZ())Z9(f,H)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(f)=>z.setTransparentBackground(f),focusAccent:()=>z.focusAccent,setFocusAccent:(f)=>z.setFocusAccent(f)};b9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),qQ(J.boot.locale);let[G,X]=a(null),Z=!1;JJ(()=>{(async()=>{let f=await WH({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!f)return;if(Z){f.dispose();return}X(f)})()}),s0(()=>{let f=G()?.uiPrefsSignal()();if(!f)return;if(b9(Y,f),QQ(f.locale))qQ(f.locale)});let Q=null;return s0(()=>{let f=G()?.keybindingsRevSignal()();if(f==null)return;if(Q===null||f===Q){Q=f;return}Q=f,z3()}),k1(()=>{Z=!0,G()?.dispose()}),null}async function RJ(J){yT(J.logContext);let z=V3(ST),Y=await J.setup(z),G=J.providers?.kv??!0,X=J.providers?.focus??!0,Z=J.providers?.notifications??!1;await hD(()=>b(xT,{get theme(){return z.theme},kv:G,focus:X,notifications:Z,get children(){return[b(ET,{boot:z}),b(RV,{fallback:(Q)=>b(uT,{error:Q}),get children(){return Y.root()}})]}}),TT(Y.onDestroy))}var ST="claude";var oY=k(()=>{P();P();P();P();P();P();P();ZG();W1();R9();sL();N9();VQ();MH();v1();lq();ZJ();lJ();W3();I9()});async function S9(J,z,Y,G,X={}){let Z=M1(z.id);if(await H1(Z))return!0;let Q=z.worktreePath;if(!Q)Q=await J.ensureWorktree(z.id);if(!Q)throw Error(`task ${z.id} has no worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (YJ(),cJ)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (SX(),Wj)),B=H(Y,Q,{kind:X.includeInitPrompt?"repo-init":"none"});if(!await f({name:Z,cwd:Q,command:yJ(G),taskId:z.id,vendor:G,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${z.id}`);return!1}async function OH(J,z,Y,G,X={}){await S9(J,z,Y,G,X),await J.setActiveTask(z.id).catch(()=>{});let{prepareWindowForSwitch:Z}=await Promise.resolve().then(() => (YJ(),cJ));await Z(M1(z.id)),await P0(["switch-client","-t",`=${M1(z.id)}`])}var y9=k(()=>{vJ();P1()});var K3={};j1(K3,{startNewTaskHost:()=>wT,NewTaskPage:()=>AH});function AH(J){let{theme:z}=i0(),Y=c1();JJ(()=>{G()});async function G(){let X=CJ(),Z=J.defaultRepo||X[0]||process.cwd(),Q=uJ(C1("lastSelectedVendor"),EJ()),f=await tz(),H=J.orchestrator,B=await BH.show(Y,Z,X,{defaultVendor:Q,availableVendors:f,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(o1("lastSelectedVendor",B.vendor),_z(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await OH(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),x((Z)=>q(X,"backgroundColor",z.background,Z)),X})()}async function wT(J){await RJ({setup:async()=>{let z=null;try{let Y=await Az(),G=new UJ(Y);await G.init(),z=G}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(AH,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var T9=k(()=>{P();P();P();P();OJ();W1();aY();QG();O1();l1();pX();v1();oY();y9();lJ()});function RH(J,z,Y,G,X={}){if(J.length===0)return z;let Z=new Map;for(let H of J)Z.set(Y(H),H);let Q=J.length===z.length,f=Array(z.length);for(let H=0;H<z.length;H++){let B=z[H],V=Z.get(Y(B));if(V&&G(V,B)&&(!X.samePosition||J[H]===V)){if(f[H]=V,Q&&J[H]!==V)Q=!1}else f[H]=B,Q=!1}return Q?J:f}function U3(J,z){if(!J)return!0;let Y=J.toLowerCase(),G=z.toLowerCase(),X=0;for(let Z=0;Z<G.length&&X<Y.length;Z++)if(G.charCodeAt(Z)===Y.charCodeAt(X))X++;return X===Y.length}function PT(J,z){let Y=z==="archived";return J.filter((G)=>G.archived===Y)}function x9(J,z,Y,G="default",X){let Z=PT(J,z),Q=Y?.trim()??"",f=X?Gz(X):null,H=Q?Z.filter((O)=>U3(Q,`${O.title} ${Nz(O.repo)}`)):Z,B=[],V=[],j=[],K=new Set;for(let O of H){if(O.kind==="main"){let g=Gz(O.repo);if(K.has(g))continue;K.add(g),B.push(O);continue}if(f&&Gz(O.repo)!==f)continue;if(O.pinned===!0)V.push(O);else j.push(O)}if(B.sort((O,g)=>Nz(O.repo).localeCompare(Nz(g.repo))),G==="recent")V.sort(D3),j.sort(D3);let L=[],A=0;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function D3(J,z){let Y=L3(z)-L3(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function L3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Nz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Gz(J){return J.trim().replace(/[\\/]+$/,"")||J}function hT(J,z){let Y=Nz(J);if(!z.some((X)=>X!==J&&Nz(X)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function M3(J,z){let Y=z==="archived",G=new Map;for(let Z of J){let Q=Gz(Z.repo),f=G.get(Q)??{repo:Z.repo,count:0};if(Z.kind==="main")f.repo=Z.repo;else if(Z.archived===Y)f.count+=1;G.set(Q,f)}let X=[...G.values()].map((Z)=>Z.repo);return[...G.values()].map((Z)=>({repo:Z.repo,label:hT(Z.repo,X),count:Z.count})).sort((Z,Q)=>Z.label.localeCompare(Q.label))}function F3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=Gz(z),G=J.find((Z)=>Z.task.kind!=="main"&&Gz(Z.task.repo)===Y);if(G)return G.flatIndex;return J.find((Z)=>Z.task.kind==="main"&&Gz(Z.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function u9(J){return J.map((z)=>z.task.id)}function O3(J){let z=[],Y=[];for(let G of J)if(G.task.kind==="main")z.push(G);else Y.push(G);return{projectRows:z,taskRows:Y}}function vT(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 A3(J,z){return RH(J,z,(Y)=>Y.task.id,(Y,G)=>Y.flatIndex===G.flatIndex&&vT(Y.task,G.task),{samePosition:!0})}var gH=()=>{};var R3={};j1(R3,{startQuickTaskHost:()=>nT});async function mT(J,z){let Y,G;if(z){let j=await TJ(z,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,G=j["@kobe_worktree"]||void 0}let X=(Y?J?.getTask(Y)?.repo:void 0)??CJ()[0],Z=X??G??process.cwd();if(!X)return{ctx:null,fallbackRepo:Z};let Q=await tz(),f=uJ(C1("lastSelectedVendor"),EJ()),H=Q.length===0||Q.includes(f)?f:Q[0]??f,B=fQ(DJ(X))??Cz,V=Q.length>0?Q:[H];return{ctx:{repo:X,vendor:H,baseRef:B,engines:V},fallbackRepo:Z}}async function cT(J,z,Y,G,X){let Z=await S9(J,z,Y,G),Q=M1(z.id),{pane:f}=await kZ(Q,!Z);if(f)await bZ(f,X)}function dT(J){let{theme:z}=i0(),Y=c1();JJ(()=>{G()});async function G(){let X=J.ctx,Z=await pL.show(Y,{repoLabel:Nz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:FG});if(Z===void 0)process.exit(0);o1("lastSelectedVendor",Z.vendor),_z(X.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let f=await Q.createTask({repo:X.repo,baseRef:Z.baseRef,vendor:Z.vendor});await cT(Q,f,X.repo,Z.vendor,Z.prompt),await OH(Q,f,X.repo,Z.vendor)}catch(f){console.error("[kobe quick-task] task.create/deliver failed:",f),process.exit(1)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),x((Z)=>q(X,"backgroundColor",z.background,Z)),X})()}async function nT(J){await RJ({setup:async()=>{let z=null;try{let X=await Az(),Z=new UJ(X);await Z.init(),z=Z}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Y,fallbackRepo:G}=await mT(z,J.session);return{root:()=>Y?b(dT,{ctx:Y,orchestrator:z}):b(AH,{defaultRepo:G,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var g3=k(()=>{P();P();P();P();OJ();W1();aY();QG();vJ();O1();P1();Eq();l1();rL();v1();qH();oY();HH();y9();T9();gH();lJ()});function NH(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let G=Y[1]==="C"?"\u2303":"\u2325",X=Y[2]??"";return`${G}${X.length===1?X.toUpperCase():X}`}function CH(J,z){if(J.includes("/"))return J.split("/").map((X)=>CH(X,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let G=lT[Y];if(G)return G;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(X)=>X.toUpperCase())}function sX(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let G=/^prefix\s+(.+)$/i.exec(Y);if(G){let f=G[1]??"";return`${z} ${f.includes("+")?sX(f,z):CH(f,!0)}`}let X=Y.split("+");if(X.length===1)return CH(X[0]??"",!1);let Z=X[X.length-1]??"";return`${X.slice(0,-1).map((f)=>iT[f.toLowerCase().trim()]??f).join("")} ${CH(Z,!0)}`}var iT,lT;var E9=k(()=>{iT={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},lT={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 C3}from"@opentui/core";function $T(J){let z=new Map,Y=[];for(let G of J){if(!z.has(G.category))z.set(G.category,[]),Y.push(G.category);z.get(G.category).push(G)}return Y.map((G)=>({category:G,rows:z.get(G)}))}function tX(J={}){let z=c1(),{theme:Y}=i0(),G=()=>$T(_Y),X=()=>J.onClose?J.onClose():z.clear(),[Z,Q]=a("\u2303B");return JJ(()=>{a0(["show-options","-g","prefix"]).then(({code:f,stdout:H})=>{if(f!==0)return;let B=NH(H);if(B)Q(B)})}),D1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var f=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),K=W("box");return D(f,H),D(f,j),q(f,"paddingLeft",2),q(f,"paddingRight",2),q(f,"gap",1),q(f,"flexShrink",1),D(H,B),D(H,V),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),q(H,"flexShrink",0),U(B,()=>F("help.title")),q(V,"onMouseUp",X),U(V,()=>F("help.esc")),D(j,K),q(j,"flexShrink",1),q(j,"flexGrow",1),q(j,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(Q1,{get each(){return G()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>f9("category",L.category)),U(A,b(Q1,{get each(){return L.rows},children:(g)=>{let u=g.hint?.keys??g.keys[0]??"\u2014",_=()=>u==="\u2014"?"\u2014":sX(u,Z()),I=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>sX(N,Z()));return(()=>{var N=W("box"),M=W("box"),S=W("text"),r=W("box"),l=W("text");return D(N,M),D(N,r),q(N,"flexDirection","row"),q(N,"gap",2),q(N,"paddingLeft",1),D(M,S),q(M,"width",14),U(S,_),D(r,l),q(r,"flexGrow",1),U(l,()=>f9("desc",g.id)),U(N,(()=>{var e=x0(()=>I().length>0);return()=>e()?(()=>{var J0=W("box"),T=W("text");return D(J0,T),U(T,()=>`(${I().join(", ")})`),x((q0)=>q(T,"fg",Y.textMuted,q0)),J0})():null})(),null),x((e)=>{var{primary:J0,text:T}=Y;return J0!==e.e&&(e.e=q(S,"fg",J0,e.e)),T!==e.t&&(e.t=q(l,"fg",T,e.t)),e},{e:void 0,t:void 0}),N})()}}),null),x((g)=>{var u=Y.accent,_=C3.BOLD;return u!==g.e&&(g.e=q(O,"fg",u,g.e)),_!==g.t&&(g.t=q(O,"attributes",_,g.t)),g},{e:void 0,t:void 0}),A})()})),x((L)=>{var A=C3.BOLD,O=Y.text,g=Y.textMuted,u={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(B,"attributes",A,L.e)),O!==L.t&&(L.t=q(B,"fg",O,L.t)),g!==L.a&&(L.a=q(V,"fg",g,L.a)),u!==L.o&&(L.o=q(j,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var w9=k(()=>{P();P();P();P();P();P();P();W1();P1();rX();v1();ZJ();E9();xJ();lJ();tX.show=(J)=>{J.replace(()=>b(tX,{}))}});import{TextAttributes as aT}from"@opentui/core";function N3(J){let z=c1(),{theme:Y}=i0(),[G,X]=a(J.currentTitle);function Z(){let Q=G().trim();if(jQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),f=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,f),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(f,H),D(f,B),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),U(H,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),q(B,"onMouseUp",()=>J.onCancel()),D(V,j),D(V,K),q(V,"gap",0),U(j,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>X(LJ(O))),q(K,"onSubmit",()=>Z()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),x((O)=>{var g=aT.BOLD,u=Y.text,_=Y.textMuted,I=Y.accent,N=G(),M=J.placeholder??J.currentTitle,S=Y.textMuted;return g!==O.e&&(O.e=q(H,"attributes",g,O.e)),u!==O.t&&(O.t=q(H,"fg",u,O.t)),_!==O.a&&(O.a=q(B,"fg",_,O.a)),I!==O.o&&(O.o=q(j,"fg",I,O.o)),N!==O.i&&(O.i=q(K,"value",N,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),S!==O.s&&(O.s=q(A,"fg",S,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var k3=k(()=>{P();P();P();P();P();P();P();ZJ();W1();v1();lJ();pX()});function _T(J,z,Y={}){return new Promise((G)=>{J.replace(()=>b(N3,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0))})}var DY;var P9=k(()=>{P();k3();DY={show:_T}});import{TextAttributes as pT}from"@opentui/core";function rT(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function LY(J){let z=c1(),{theme:Y}=i0(),[G,X]=cz({active:J.initialActive??"confirm"});return D1(()=>({bindings:[{key:"return",cmd:()=>{if(G.active==="confirm")J.onConfirm?.();if(G.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>X("active",G.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>X("active",G.active==="confirm"?"cancel":"confirm")}]})),(()=>{var Z=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(Z,Q),D(Z,B),D(Z,V),q(Z,"paddingLeft",2),q(Z,"paddingRight",2),q(Z,"paddingBottom",1),q(Z,"gap",0),D(Q,f),D(Q,H),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(f,()=>J.title),D(H,E0("esc")),q(H,"onMouseUp",()=>z.clear()),U(B,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(Q1,{each:["cancel","confirm"],children:(j)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(j==="confirm")J.onConfirm?.();if(j==="cancel")J.onCancel?.();z.clear()}),U(L,()=>rT(j==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),x((A)=>{var O=j===G.active?Y.primary:void 0,g=j===G.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(L,"fg",g,A.t)),A},{e:void 0,t:void 0}),K})()})),x((j)=>{var K=pT.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==j.e&&(j.e=q(f,"attributes",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z})()}var h9=k(()=>{P();P();P();P();P();P();P();ZJ();W1();lX();v1();xJ();lJ();LY.show=(J,z,Y,G,X,Z)=>{return new Promise((Q)=>{J.replace(()=>b(LY,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:G,confirmLabel:X,get initialActive(){return Z?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as oT}from"fs";import{join as sT}from"path";function b3(J){return J instanceof UJ}function I3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function v9(J,z,Y){if(await LY.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{oT(sT(bz(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}I3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
264
|
-
`),process.exit(0)}async function m9(J,z,Y){if(!(z instanceof UJ))return;if(await LY.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;
|
|
265
|
-
`),process.exit(0)}var S3=k(()=>{aY();r1();h9()});function tT(J){return`theme:${J}`}function c9(J){return`language:${J}`}function d9(J){return`accent:${J}`}function eT(J){return`engine:${J}`}function KQ(J){return`surface:${J}`}function n9(J){return[...J.themeNames.map((z)=>({id:tT(z),kind:"theme",name:z})),...vG.map((z)=>({id:c9(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:d9(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:KQ("chattab"),kind:"surface",surface:"chattab"},{id:KQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function Jx(J){return[...J.map((z)=>({id:eT(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function zx(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function UQ(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function y3(J,z){switch(J){case"general":return n9(z);case"engines":return Jx(z.engineList);case"accounts":case"keys":return[];case"feedback":return zx();case"dev":return UQ(z.hasDaemon)}}function DQ(J,z){return J.findIndex((Y)=>Y.id===z)}function kH(J,z){return J[z]}var cG;var i9=k(()=>{_X();cG=[{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 e0}from"@opentui/core";function T3(J){let{theme:z}=i0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(Q1,{each:cG,children:(G,X)=>{let Z=()=>X()===J.cursor(),Q=()=>Z()&&J.level()==="sidebar";return(()=>{var f=W("box"),H=W("text");return D(f,H),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>J.switchSection(G.id)),q(H,"wrapMode","none"),U(H,()=>F(`settings.sections.${G.id}`)),x((B)=>{var V=Q()?z.primary:void 0,j=Q()?z.selectedListItemText:Z()?z.accent:z.textMuted,K=Z()?e0.BOLD:void 0;return V!==B.e&&(B.e=q(f,"backgroundColor",V,B.e)),j!==B.t&&(B.t=q(H,"fg",j,B.t)),K!==B.a&&(B.a=q(H,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),f})()}})),Y})()}function x3(J){let z=i0(),{theme:Y}=z,G=()=>n9({themeNames:J.themeNames(),focusAccentSlots:hG}),X=(M)=>DQ(G(),M),Z=()=>X("transparent"),Q=()=>X("toast"),f=()=>X("sound"),H=()=>X("zen-keep-tasks"),B=()=>X(KQ("chattab")),V=()=>X(KQ("taskpanel")),j=()=>X("editor-kind"),K=()=>X("editor-custom"),L=()=>J.bodyRow()===Z(),A=()=>J.bodyRow()===Q(),O=()=>J.bodyRow()===f(),g=()=>J.bodyRow()===H(),u=()=>J.bodyRow()===B(),_=()=>J.bodyRow()===V(),I=()=>J.bodyRow()===j(),N=()=>J.bodyRow()===K();return(()=>{var M=W("box"),S=W("text"),r=W("text"),l=W("box"),e=W("box"),J0=W("text"),T=W("text"),q0=W("box"),p=W("text"),j0=W("text"),F0=W("box"),V0=W("text"),t=W("box"),h=W("text"),C=W("text"),o=W("box"),E=W("text"),c=W("text"),s=W("box"),Z0=W("text"),A0=E0(" "),h0=W("box"),g0=W("text"),N0=E0(" "),y=W("box"),L0=W("text"),Q0=W("text"),M0=W("box"),T0=W("text"),X1=E0(" "),z1=W("box"),w0=W("text"),v0=W("text"),n=W("box"),f0=W("text"),S0=E0(" "),r0=W("box"),_0=W("text"),p0=E0(" "),t0=W("box"),N1=W("text"),g1=W("text"),z0=W("box"),G0=W("text"),B0=W("box"),k0=W("text");return D(M,S),D(M,r),D(M,l),D(M,e),D(M,q0),D(M,t),D(M,o),D(M,y),D(M,z1),D(M,t0),q(M,"flexDirection","column"),q(M,"gap",1),U(S,()=>F("settings.general.theme")),U(r,()=>F("settings.general.themeHint")),q(l,"flexDirection","column"),q(l,"gap",0),U(l,b(Q1,{get each(){return J.themeNames()},children:(R,m0)=>{let U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>R===z.selected;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.setThemeCursor(m0()),J.selectTheme(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,R,null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}})),D(e,J0),D(e,T),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(J0,()=>F("settings.general.language")),q(T,"wrapMode","word"),U(T,()=>F("settings.general.languageHint")),U(e,b(Q1,{each:vG,children:(R)=>{let m0=()=>X(c9(R.id)),U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>J.currentLocale()===R.id;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.selectLanguage(R.id)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>R.label,null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(q0,p),D(q0,j0),D(q0,F0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingTop",1),U(p,()=>F("settings.general.transparent")),q(j0,"wrapMode","word"),U(j0,()=>F("settings.general.transparentHint")),D(F0,V0),q(F0,"flexDirection","row"),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),q(F0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Z()),J.toggleTransparent()}),q(V0,"wrapMode","none"),U(V0,(()=>{var R=x0(()=>!!z.transparentBackground);return()=>R()?F("settings.general.on"):F("settings.general.off")})()),D(t,h),D(t,C),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(h,()=>F("settings.general.focusAccent")),q(C,"wrapMode","word"),U(C,()=>F("settings.general.focusAccentHint")),U(t,b(Q1,{each:hG,children:(R)=>{let m0=()=>X(d9(R)),U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>z.focusAccent===R;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.selectFocusAccent(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>F(`settings.general.accent${R.charAt(0).toUpperCase()}${R.slice(1)}`),null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.focusAccent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(o,E),D(o,c),D(o,s),D(o,h0),q(o,"flexDirection","column"),q(o,"gap",0),q(o,"paddingTop",1),U(E,()=>F("settings.general.notifications")),q(c,"wrapMode","word"),U(c,()=>F("settings.general.notificationsHint")),D(s,Z0),q(s,"flexDirection","row"),q(s,"gap",1),q(s,"paddingLeft",1),q(s,"paddingRight",1),q(s,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(Z0,A0),q(Z0,"wrapMode","none"),U(Z0,()=>J.toastEnabled()?"[x]":"[ ]",A0),U(Z0,()=>F("settings.general.toast"),null),D(h0,g0),q(h0,"flexDirection","row"),q(h0,"gap",1),q(h0,"paddingLeft",1),q(h0,"paddingRight",1),q(h0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleSound()}),D(g0,N0),q(g0,"wrapMode","none"),U(g0,()=>J.soundEnabled()?"[x]":"[ ]",N0),U(g0,()=>F("settings.general.sound"),null),D(y,L0),D(y,Q0),D(y,M0),q(y,"flexDirection","column"),q(y,"gap",0),q(y,"paddingTop",1),U(L0,()=>F("settings.general.zen")),q(Q0,"wrapMode","word"),U(Q0,()=>F("settings.general.zenHint")),D(M0,T0),q(M0,"flexDirection","row"),q(M0,"gap",1),q(M0,"paddingLeft",1),q(M0,"paddingRight",1),q(M0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleZenKeepsTasks()}),D(T0,X1),q(T0,"wrapMode","none"),U(T0,()=>J.zenKeepsTasks()?"[x]":"[ ]",X1),U(T0,()=>F("settings.general.zenKeepTasks"),null),D(z1,w0),D(z1,v0),D(z1,n),D(z1,r0),q(z1,"flexDirection","column"),q(z1,"gap",0),q(z1,"paddingTop",1),U(w0,()=>F("settings.general.surface")),q(v0,"wrapMode","word"),U(v0,()=>F("settings.general.surfaceHint")),D(n,f0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"paddingLeft",1),q(n,"paddingRight",1),q(n,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(f0,S0),q(f0,"wrapMode","none"),U(f0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",S0),U(f0,()=>F("settings.general.surfaceChattab"),null),D(r0,_0),q(r0,"flexDirection","row"),q(r0,"gap",1),q(r0,"paddingLeft",1),q(r0,"paddingRight",1),q(r0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(_0,p0),q(_0,"wrapMode","none"),U(_0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",p0),U(_0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,N1),D(t0,g1),D(t0,z0),D(t0,B0),q(t0,"flexDirection","column"),q(t0,"gap",0),q(t0,"paddingTop",1),U(N1,()=>F("settings.general.editor")),q(g1,"wrapMode","word"),U(g1,()=>F("settings.general.editorHint")),D(z0,G0),q(z0,"flexDirection","row"),q(z0,"gap",1),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.cycleEditorKind()}),q(G0,"wrapMode","none"),U(G0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(B0,k0),q(B0,"flexDirection","row"),q(B0,"gap",1),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(k0,"wrapMode","none"),U(k0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),x((R)=>{var m0=Y.text,U0=e0.BOLD,u0=Y.textMuted,W0=Y.text,D0=e0.BOLD,C0=Y.textMuted,J1=Y.text,Y1=e0.BOLD,l0=Y.textMuted,x1=L()?Y.primary:void 0,b0=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,m1=e0.BOLD,v=Y.text,R0=e0.BOLD,V1=Y.textMuted,R1=Y.text,B1=e0.BOLD,d=Y.textMuted,Y0=A()?Y.primary:void 0,y0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,I0=e0.BOLD,jJ=O()?Y.primary:void 0,MJ=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,QJ=e0.BOLD,$J=Y.text,nz=e0.BOLD,gJ=Y.textMuted,iz=g()?Y.primary:void 0,MY=g()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,m=e0.BOLD,i=Y.text,$=e0.BOLD,w=Y.textMuted,d0=u()?Y.primary:void 0,c0=u()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,O0=e0.BOLD,n0=_()?Y.primary:void 0,f1=_()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,L1=e0.BOLD,WJ=Y.text,Xz=e0.BOLD,FY=Y.textMuted,WW=I()?Y.primary:void 0,VW=I()?Y.selectedListItemText:Y.accent,KW=e0.BOLD,UW=N()?Y.primary:void 0,DW=N()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return m0!==R.e&&(R.e=q(S,"fg",m0,R.e)),U0!==R.t&&(R.t=q(S,"attributes",U0,R.t)),u0!==R.a&&(R.a=q(r,"fg",u0,R.a)),W0!==R.o&&(R.o=q(J0,"fg",W0,R.o)),D0!==R.i&&(R.i=q(J0,"attributes",D0,R.i)),C0!==R.n&&(R.n=q(T,"fg",C0,R.n)),J1!==R.s&&(R.s=q(p,"fg",J1,R.s)),Y1!==R.h&&(R.h=q(p,"attributes",Y1,R.h)),l0!==R.r&&(R.r=q(j0,"fg",l0,R.r)),x1!==R.d&&(R.d=q(F0,"backgroundColor",x1,R.d)),b0!==R.l&&(R.l=q(V0,"fg",b0,R.l)),m1!==R.u&&(R.u=q(V0,"attributes",m1,R.u)),v!==R.c&&(R.c=q(h,"fg",v,R.c)),R0!==R.w&&(R.w=q(h,"attributes",R0,R.w)),V1!==R.m&&(R.m=q(C,"fg",V1,R.m)),R1!==R.f&&(R.f=q(E,"fg",R1,R.f)),B1!==R.y&&(R.y=q(E,"attributes",B1,R.y)),d!==R.g&&(R.g=q(c,"fg",d,R.g)),Y0!==R.p&&(R.p=q(s,"backgroundColor",Y0,R.p)),y0!==R.b&&(R.b=q(Z0,"fg",y0,R.b)),I0!==R.T&&(R.T=q(Z0,"attributes",I0,R.T)),jJ!==R.A&&(R.A=q(h0,"backgroundColor",jJ,R.A)),MJ!==R.O&&(R.O=q(g0,"fg",MJ,R.O)),QJ!==R.I&&(R.I=q(g0,"attributes",QJ,R.I)),$J!==R.S&&(R.S=q(L0,"fg",$J,R.S)),nz!==R.W&&(R.W=q(L0,"attributes",nz,R.W)),gJ!==R.C&&(R.C=q(Q0,"fg",gJ,R.C)),iz!==R.B&&(R.B=q(M0,"backgroundColor",iz,R.B)),MY!==R.v&&(R.v=q(T0,"fg",MY,R.v)),m!==R.k&&(R.k=q(T0,"attributes",m,R.k)),i!==R.x&&(R.x=q(w0,"fg",i,R.x)),$!==R.j&&(R.j=q(w0,"attributes",$,R.j)),w!==R.q&&(R.q=q(v0,"fg",w,R.q)),d0!==R.z&&(R.z=q(n,"backgroundColor",d0,R.z)),c0!==R.P&&(R.P=q(f0,"fg",c0,R.P)),O0!==R.H&&(R.H=q(f0,"attributes",O0,R.H)),n0!==R.F&&(R.F=q(r0,"backgroundColor",n0,R.F)),f1!==R.M&&(R.M=q(_0,"fg",f1,R.M)),L1!==R.D&&(R.D=q(_0,"attributes",L1,R.D)),WJ!==R.R&&(R.R=q(N1,"fg",WJ,R.R)),Xz!==R.E&&(R.E=q(N1,"attributes",Xz,R.E)),FY!==R.L&&(R.L=q(g1,"fg",FY,R.L)),WW!==R.N&&(R.N=q(z0,"backgroundColor",WW,R.N)),VW!==R.G&&(R.G=q(G0,"fg",VW,R.G)),KW!==R.U&&(R.U=q(G0,"attributes",KW,R.U)),UW!==R.K&&(R.K=q(B0,"backgroundColor",UW,R.K)),DW!==R.V&&(R.V=q(k0,"fg",DW,R.V)),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,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),M})()}function u3(J){let{theme:z}=i0(),Y=()=>J.vendors.length;return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("box"),H=W("text");return D(G,X),D(G,Z),D(G,Q),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.engines.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.engines.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Q1,{get each(){return J.vendors},children:(B,V)=>{let j=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(B)),q(O,"wrapMode","none"),U(O,()=>J.commandText(B),null),U(O,(()=>{var g=x0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):x0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),x((g)=>{var u=j()?z.primary:void 0,_=j()?z.selectedListItemText:z.accent,I=e0.BOLD,N=j()?z.selectedListItemText:z.text,M=e0.BOLD,S=j()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return u!==g.e&&(g.e=q(K,"backgroundColor",u,g.e)),_!==g.t&&(g.t=q(L,"fg",_,g.t)),I!==g.a&&(g.a=q(L,"attributes",I,g.a)),N!==g.o&&(g.o=q(A,"fg",N,g.o)),M!==g.i&&(g.i=q(A,"attributes",M,g.i)),S!==g.n&&(g.n=q(O,"fg",S,g.n)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),f),D(f,H),q(f,"flexDirection","row"),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(H,"wrapMode","none"),U(H,()=>F("settings.engines.addEngine")),x((B)=>{var V=z.text,j=e0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(X,"attributes",j,B.t)),K!==B.a&&(B.a=q(Z,"fg",K,B.a)),L!==B.o&&(B.o=q(f,"backgroundColor",L,B.o)),A!==B.i&&(B.i=q(H,"fg",A,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G})()}function E3(J){let{theme:z}=i0(),Y=(G)=>G.binary.found?`Binary: ${G.binary.path}`:`Binary: ${G.binary.error}`;return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(G,X),D(G,Z),D(G,Q),D(G,H),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.accounts.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.accounts.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),D(f,E0("claude-code")),U(Q,b(X0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(X0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let g=[O.organization,O.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return q(u,"wrapMode","word"),U(u,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(u,g?` (${g})`:"",null),x((_)=>q(u,"fg",z.success,_)),u})()}return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(H,B),q(H,"flexDirection","column"),q(H,"gap",0),D(B,E0("codex")),U(H,b(X0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(H,b(X0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(g,(()=>{var u=x0(()=>!!O.plan);return()=>u()?` (${O.plan})`:""})(),null),x((u)=>q(g,"fg",z.success,u)),g})();if(O.kind==="apikey")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.apiKeyConfigured")),x((u)=>q(g,"fg",z.success,u)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,j),q(V,"flexDirection","column"),q(V,"gap",0),D(j,E0("copilot")),U(V,b(X0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(X0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.tokenConfigured",{source:O.source})),x((u)=>q(g,"fg",z.success,u)),g})();if(O.kind==="oauth")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.copilotDetected")),x((u)=>q(g,"fg",z.success,u)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),x((K)=>{var L=z.text,A=e0.BOLD,O=z.textMuted,g=z.text,u=e0.BOLD,_=z.text,I=e0.BOLD,N=z.text,M=e0.BOLD;return L!==K.e&&(K.e=q(X,"fg",L,K.e)),A!==K.t&&(K.t=q(X,"attributes",A,K.t)),O!==K.a&&(K.a=q(Z,"fg",O,K.a)),g!==K.o&&(K.o=q(f,"fg",g,K.o)),u!==K.i&&(K.i=q(f,"attributes",u,K.i)),_!==K.n&&(K.n=q(B,"fg",_,K.n)),I!==K.s&&(K.s=q(B,"attributes",I,K.s)),N!==K.h&&(K.h=q(j,"fg",N,K.h)),M!==K.r&&(K.r=q(j,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),G})()}function w3(J){let{theme:z}=i0(),Y=()=>J.level()==="body",G=()=>Y()&&J.bodyRow()===0,X=()=>Y()&&J.bodyRow()===1,Z=()=>Y()&&J.bodyRow()===2,Q=(B)=>B?z.primary:z.textMuted,f=(B)=>B?e0.BOLD|e0.UNDERLINE:void 0,H;return s0(()=>{if(J.body()===""&&H&&H.plainText!=="")H.setText("")}),(()=>{var B=W("box"),V=W("text"),j=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),g=W("box"),u=W("text"),_=W("textarea"),I=W("box"),N=W("text");return D(B,V),D(B,j),D(B,K),q(B,"flexDirection","column"),q(B,"gap",1),U(V,()=>F("settings.feedback.title")),q(j,"wrapMode","word"),U(j,()=>F("settings.feedback.hint")),D(K,L),D(K,g),D(K,I),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(LJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(g,u),D(g,_),q(g,"gap",0),U(u,()=>F("settings.feedback.descriptionLabel")),mz((M)=>{H=M},_),q(_,"height",4),q(_,"wrapMode","word"),q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(_,"onContentChange",()=>J.setBody(H?.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()}),U(N,()=>F("settings.feedback.send")),U(B,b(X0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),x((S)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,S)),M}}),null),x((M)=>{var S=z.text,r=e0.BOLD,l=z.textMuted,e=Q(G()),J0=f(G()),T=J.title(),q0=F("settings.feedback.titlePlaceholder"),p=G(),j0=Q(X()),F0=f(X()),V0=J.body(),t=F("settings.feedback.descriptionPlaceholder"),h=X(),C=Z()?z.primary:z.backgroundElement,o=Z()?z.selectedListItemText:z.accent,E=e0.BOLD;return S!==M.e&&(M.e=q(V,"fg",S,M.e)),r!==M.t&&(M.t=q(V,"attributes",r,M.t)),l!==M.a&&(M.a=q(j,"fg",l,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),J0!==M.i&&(M.i=q(A,"attributes",J0,M.i)),T!==M.n&&(M.n=q(O,"value",T,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),p!==M.h&&(M.h=q(O,"focused",p,M.h)),j0!==M.r&&(M.r=q(u,"fg",j0,M.r)),F0!==M.d&&(M.d=q(u,"attributes",F0,M.d)),V0!==M.l&&(M.l=q(_,"initialValue",V0,M.l)),t!==M.u&&(M.u=q(_,"placeholder",t,M.u)),h!==M.c&&(M.c=q(_,"focused",h,M.c)),C!==M.w&&(M.w=q(I,"backgroundColor",C,M.w)),o!==M.m&&(M.m=q(N,"fg",o,M.m)),E!==M.f&&(M.f=q(N,"attributes",E,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 P3(J){let{theme:z}=i0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,G=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>DQ(UQ(J.hasDaemon),"remote-projects"),Z=()=>J.level()==="body"&&J.bodyRow()===X(),Q=()=>DQ(UQ(J.hasDaemon),"auto-status"),f=()=>J.level()==="body"&&J.bodyRow()===Q(),H=()=>DQ(UQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),K=W("text"),L=W("box"),A=W("text"),O=W("text"),g=W("box"),u=W("text"),_=W("text"),I=W("box"),N=W("text"),M=W("text"),S=W("box"),r=W("text"),l=W("text"),e=W("box"),J0=W("text");return D(V,j),D(V,K),D(V,L),D(V,O),D(V,g),q(V,"flexDirection","column"),q(V,"gap",1),U(j,()=>F("settings.dev.reset")),q(K,"wrapMode","word"),U(K,()=>F("settings.dev.resetHint")),D(L,A),q(L,"flexDirection","row"),q(L,"paddingLeft",1),q(L,"paddingRight",1),q(L,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(A,()=>F("settings.dev.resetButton")),U(V,b(X0,{get when(){return J.hasDaemon},get children(){var T=W("box"),q0=W("text"),p=W("text"),j0=W("box"),F0=W("text");return D(T,q0),D(T,p),D(T,j0),q(T,"flexDirection","column"),q(T,"gap",0),q(T,"paddingTop",1),U(q0,()=>F("settings.dev.restart")),q(p,"wrapMode","word"),U(p,()=>F("settings.dev.restartHint")),D(j0,F0),q(j0,"flexDirection","row"),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(F0,()=>F("settings.dev.restartButton")),x((V0)=>{var t=z.text,h=e0.BOLD,C=z.textMuted,o=G()?z.primary:z.backgroundElement,E=G()?z.selectedListItemText:z.accent,c=e0.BOLD;return t!==V0.e&&(V0.e=q(q0,"fg",t,V0.e)),h!==V0.t&&(V0.t=q(q0,"attributes",h,V0.t)),C!==V0.a&&(V0.a=q(p,"fg",C,V0.a)),o!==V0.o&&(V0.o=q(j0,"backgroundColor",o,V0.o)),E!==V0.i&&(V0.i=q(F0,"fg",E,V0.i)),c!==V0.n&&(V0.n=q(F0,"attributes",c,V0.n)),V0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),O),q(O,"wrapMode","word"),U(O,()=>F("settings.dev.doctorHint")),D(g,u),D(g,_),D(g,I),D(g,M),D(g,S),D(g,l),D(g,e),q(g,"flexDirection","column"),q(g,"gap",0),q(g,"paddingTop",1),U(u,()=>F("settings.dev.experimental")),q(_,"wrapMode","word"),U(_,()=>F("settings.dev.remoteHint")),D(I,N),q(I,"flexDirection","row"),q(I,"paddingLeft",1),q(I,"paddingRight",1),q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),U(N,(()=>{var T=x0(()=>!!J.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(M,"wrapMode","word"),U(M,()=>F("settings.dev.autoStatusHint")),D(S,r),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(r,(()=>{var T=x0(()=>!!J.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(l,"wrapMode","word"),U(l,()=>F("settings.dev.dispatcherHint")),D(e,J0),q(e,"flexDirection","row"),q(e,"paddingLeft",1),q(e,"paddingRight",1),q(e,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleDispatcher()}),U(J0,(()=>{var T=x0(()=>!!J.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),x((T)=>{var q0=z.text,p=e0.BOLD,j0=z.textMuted,F0=Y()?z.primary:z.backgroundElement,V0=Y()?z.selectedListItemText:z.warning,t=e0.BOLD,h=z.textMuted,C=z.text,o=e0.BOLD,E=z.textMuted,c=Z()?z.primary:z.backgroundElement,s=Z()?z.selectedListItemText:z.text,Z0=J.remoteProjectsEnabled()?e0.BOLD:void 0,A0=z.textMuted,h0=f()?z.primary:z.backgroundElement,g0=f()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?e0.BOLD:void 0,y=z.textMuted,L0=B()?z.primary:z.backgroundElement,Q0=B()?z.selectedListItemText:z.text,M0=J.dispatcherEnabled()?e0.BOLD:void 0;return q0!==T.e&&(T.e=q(j,"fg",q0,T.e)),p!==T.t&&(T.t=q(j,"attributes",p,T.t)),j0!==T.a&&(T.a=q(K,"fg",j0,T.a)),F0!==T.o&&(T.o=q(L,"backgroundColor",F0,T.o)),V0!==T.i&&(T.i=q(A,"fg",V0,T.i)),t!==T.n&&(T.n=q(A,"attributes",t,T.n)),h!==T.s&&(T.s=q(O,"fg",h,T.s)),C!==T.h&&(T.h=q(u,"fg",C,T.h)),o!==T.r&&(T.r=q(u,"attributes",o,T.r)),E!==T.d&&(T.d=q(_,"fg",E,T.d)),c!==T.l&&(T.l=q(I,"backgroundColor",c,T.l)),s!==T.u&&(T.u=q(N,"fg",s,T.u)),Z0!==T.c&&(T.c=q(N,"attributes",Z0,T.c)),A0!==T.w&&(T.w=q(M,"fg",A0,T.w)),h0!==T.m&&(T.m=q(S,"backgroundColor",h0,T.m)),g0!==T.f&&(T.f=q(r,"fg",g0,T.f)),N0!==T.y&&(T.y=q(r,"attributes",N0,T.y)),y!==T.g&&(T.g=q(l,"fg",y,T.g)),L0!==T.p&&(T.p=q(e,"backgroundColor",L0,T.p)),Q0!==T.b&&(T.b=q(J0,"fg",Q0,T.b)),M0!==T.T&&(T.T=q(J0,"attributes",M0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function h3(){let{theme:J}=i0(),z=J3(),Y=Object.keys(t8).sort();return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("text");return D(G,X),D(G,Z),D(G,Q),D(G,B),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.keybindings.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.keybindings.hint")),D(Q,f),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(f,()=>F("settings.keybindings.configFile")),q(H,"wrapMode","word"),U(H,()=>z.path,null),U(H,(()=>{var j=x0(()=>!!z.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),U(G,b(X0,{get when(){return!z.exists},get children(){var j=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),g=W("text"),u=W("text"),_=W("text"),I=W("text"),N=W("text"),M=W("text");return D(j,K),D(j,L),D(j,A),D(j,O),D(j,g),D(j,u),D(j,_),D(j,I),D(j,N),D(j,M),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(A,E0(" chat.fork.new: ctrl+g # string = one chord")),D(O,E0(" sidebar.select: [enter] # list = several chords")),D(g,E0(" files.createPR: null # null = unbind")),D(u,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(_,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,E0("darwin: # platform overlay (also: linux)")),D(N,E0(" bindings:")),D(M,E0(" palette.open: [cmd+p, ctrl+p]")),x((S)=>{var r=J.text,l=e0.BOLD,e=J.textMuted,J0=J.textMuted,T=J.textMuted,q0=J.textMuted,p=J.textMuted,j0=J.textMuted,F0=J.textMuted,V0=J.textMuted,t=J.textMuted;return r!==S.e&&(S.e=q(K,"fg",r,S.e)),l!==S.t&&(S.t=q(K,"attributes",l,S.t)),e!==S.a&&(S.a=q(L,"fg",e,S.a)),J0!==S.o&&(S.o=q(A,"fg",J0,S.o)),T!==S.i&&(S.i=q(O,"fg",T,S.i)),q0!==S.n&&(S.n=q(g,"fg",q0,S.n)),p!==S.s&&(S.s=q(u,"fg",p,S.s)),j0!==S.h&&(S.h=q(_,"fg",j0,S.h)),F0!==S.r&&(S.r=q(I,"fg",F0,S.r)),V0!==S.d&&(S.d=q(N,"fg",V0,S.d)),t!==S.l&&(S.l=q(M,"fg",t,S.l)),S},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),U(G,b(X0,{get when(){return z.exists},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(j,b(X0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),x((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(j,b(Q1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),x((O)=>q(A,"fg",J.text,O)),A})()}),null),x((L)=>{var A=J.text,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),U(G,b(X0,{get when(){return z.warnings.length>0},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(j,b(Q1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),x((O)=>q(A,"fg",J.warning,O)),A})()}),null),x((L)=>{var A=J.warning,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,E0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(B,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),x((j)=>{var K=J.text,L=e0.BOLD,A=J.textMuted,O=J.text,g=e0.BOLD,u=J.textMuted,_=J.textMuted,I=J.textMuted;return K!==j.e&&(j.e=q(X,"fg",K,j.e)),L!==j.t&&(j.t=q(X,"attributes",L,j.t)),A!==j.a&&(j.a=q(Z,"fg",A,j.a)),O!==j.o&&(j.o=q(f,"fg",O,j.o)),g!==j.i&&(j.i=q(f,"attributes",g,j.i)),u!==j.n&&(j.n=q(H,"fg",u,j.n)),_!==j.s&&(j.s=q(B,"fg",_,j.s)),I!==j.h&&(j.h=q(V,"fg",I,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),G})()}var v3=k(()=>{P();P();P();P();P();P();P();P();P();W1();N9();v1();ZJ();_X();Tq();pX();i9()});import{TextAttributes as Yx}from"@opentui/core";function Gx(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function dG(J){let z=c1(),Y=i0(),G=HJ(),{theme:X}=Y,[Z,Q]=a("sidebar"),[f,H]=a("general"),[B,V]=a(0),[j,K]=a(0),[L,A]=a(""),[O,g]=a(""),[u,_]=a(""),I=K0(()=>Y.all().slice().sort()),[,N]=a(Math.max(0,I().findIndex((v)=>v===Y.selected))),M=b3(J.orchestrator),[S,r]=a(null),[l,e]=a(null),[J0,T]=a(null),q0=!1;s0(()=>{if(f()!=="accounts"||q0)return;q0=!0,iQ().then(r),lQ().then(e),$Q().then(T)});function p(){return y3(f(),{themeNames:I(),focusAccentSlots:hG,engineList:w0(),hasDaemon:M})}function j0(){return p().length}function F0(){return xG(J.kv.get(fY,TG))}function V0(v){if(Y.selected===v)return;if(!Y.set(v))return;J.kv.set("activeTheme",v),J.onVisualPrefsChange?.()}function t(){return q9()}function h(v){if(q9()===v)return;qQ(v),J.kv.set(FH,v),J.onVisualPrefsChange?.()}function C(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),J.kv.set("transparentBackground",v),J.onVisualPrefsChange?.()}function o(){C(!Y.transparentBackground)}function E(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),J.kv.set("focusAccent",v),J.onVisualPrefsChange?.()}function c(v){J.kv.set(fY,v)}function s(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function Z0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function A0(){J.kv.set("notifications.toast.enabled",!s())}function h0(){J.kv.set("notifications.sound.enabled",!Z0())}function g0(){return J.kv.get(aq,!0)!==!1}function N0(){J.kv.set(aq,!g0())}function y(){return J.kv.get("experimental.remoteProjects",!1)===!0}function L0(){J.kv.set("experimental.remoteProjects",!y())}function Q0(){return J.kv.get(LG,!1)===!0}function M0(){J.kv.set(LG,!Q0())}function T0(){return J.kv.get(MG,!1)===!0}function X1(){J.kv.set(MG,!T0())}function z1(){let v=J.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((R0)=>typeof R0==="string"&&R0.trim().length>0):[]}function w0(){return[...i1,...z1()]}function v0(v){let R0=J.kv.get(Kz(v),"");return typeof R0==="string"?R0.trim():""}function n(v){return v0(v)||NZ(v).join(" ")}function f0(v){return qJ(v)&&v0(v).length===0&&!r0(v)}function S0(v){let R0=J.kv.get(Uz(v),"");return typeof R0==="string"?R0.trim():""}function r0(v){return S0(v).length>0}function _0(v){return S0(v)||o8[v]||v}let[p0,t0]=a(uJ(C1("lastSelectedVendor"),z1()));function N1(v){return p0()===v}function g1(v){o1("lastSelectedVendor",v),J.kv.set("lastSelectedVendor",v),t0(v)}async function z0(v){let R0=await DY.show(z,n(v),{dialogTitle:`${_0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(R0===void 0)return;J.kv.set(Kz(v),R0.trim())}async function G0(v){let R0=await DY.show(z,_0(v),{dialogTitle:`${_0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(R0===void 0)return;J.kv.set(Uz(v),R0.trim())}function B0(v){if(J.kv.set(Kz(v),""),J.kv.set(Uz(v),""),!qJ(v))J.kv.set("customEngineIds",z1().filter((R0)=>R0!==v)),K((R0)=>Math.max(0,Math.min(R0,w0().length)))}async function k0(){let v=await DY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let R0=v.trim().toLowerCase();if(!R0||qJ(R0)||z1().includes(R0))return;let V1=await DY.show(z,"",{dialogTitle:`Add engine \xB7 ${R0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(V1===void 0)return;let R1=await DY.show(z,R0,{dialogTitle:`Add engine \xB7 ${R0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z1(),R0]),V1.trim())J.kv.set(Kz(R0),V1.trim());let B1=R1?.trim()??"";J.kv.set(Uz(R0),B1&&B1!==R0?B1:Gx(R0))}function R(){if(f()!=="engines"||Z()!=="body")return null;let v=kH(p(),j());return v?.kind==="engine"?v.vendor:null}function m0(){return bX(J.kv.get(qY,Nf))}function U0(){let v=yG.indexOf(m0()),R0=yG[(v+1)%yG.length];if(R0)J.kv.set(qY,R0)}function u0(){let v=J.kv.get(mY,"");return typeof v==="string"?v:""}async function W0(){let v=await DY.show(z,u0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let R0=v.trim();if(J.kv.set(mY,R0),R0)J.kv.set(qY,"custom")}async function D0(){_("submitting...");try{let v=vX({title:L(),body:O()});_(`sent: ${v.url}`),A(""),g(""),K(0)}catch(v){_(`error: ${v instanceof Error?v.message:String(v)}`)}}let C0=()=>f()==="feedback"&&Z()==="body";function J1(v){let R0=j()+v;if(R0<0||R0>2){Q("sidebar");return}K(R0)}function Y1(){if(Z()!=="sidebar"||j0()===0)return;if(Q("body"),K(0),f()==="general")N(0)}function l0(v){if(Z()==="sidebar"){let R1=(B()+v+cG.length)%cG.length;V(R1);let B1=cG[R1];if(B1)H(B1.id),K(0);return}let R0=j0();if(R0===0)return;let V1=(j()+v+R0)%R0;if(K(V1),kH(p(),V1)?.kind==="theme")N(V1)}function x1(v){H(v),V(cG.findIndex((R0)=>R0.id===v)),K(0),Q("sidebar")}let b0={theme:(v)=>V0(v.name),language:(v)=>h(v.locale),transparent:()=>o(),focusAccent:(v)=>E(v.slot),toast:()=>A0(),sound:()=>h0(),zenKeepTasks:()=>N0(),surface:(v)=>c(v.surface),editorKind:()=>U0(),editorCustom:()=>void W0(),engine:(v)=>void z0(v.vendor),engineAdd:()=>void k0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void D0(),devReset:()=>void v9(z,J.kv,G),devRestartDaemon:()=>void m9(z,J.orchestrator,G),devRemoteProjects:()=>L0(),devAutoStatus:()=>M0(),devDispatcher:()=>X1()};function m1(){let v=kH(p(),j());if(!v)return;b0[v.kind](v)}return D1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!C0(),bindings:[{key:"down",cmd:()=>l0(1)},{key:"up",cmd:()=>l0(-1)},{key:"j",cmd:()=>l0(1)},{key:"k",cmd:()=>l0(-1)},{key:"tab",cmd:()=>l0(1)},{key:"right",cmd:Y1},{key:"l",cmd:Y1},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(Z()==="sidebar"){Y1();return}m1()}},{key:"t",cmd:o},{key:"r",cmd:()=>{let v=R();if(v)G0(v)}},{key:"x",cmd:()=>{let v=R();if(v)B0(v)}},{key:"d",cmd:()=>{let v=R();if(v)g1(v)}}]})),D1(()=>({enabled:C0(),bindings:[{key:"tab",cmd:()=>J1(1)},{key:"shift+tab",cmd:()=>J1(-1)}]})),D1(()=>({enabled:C0()&&j()===2,bindings:[{key:"return",cmd:()=>void D0()}]})),(()=>{var v=W("box"),R0=W("box"),V1=W("text"),R1=W("text"),B1=W("box"),d=W("box"),Y0=W("box"),y0=W("text");return D(v,R0),D(v,B1),D(v,Y0),q(v,"paddingLeft",2),q(v,"paddingRight",2),q(v,"paddingBottom",1),q(v,"gap",1),D(R0,V1),D(R0,R1),q(R0,"flexDirection","row"),q(R0,"justifyContent","space-between"),U(V1,()=>F("settings.title")),q(R1,"onMouseUp",()=>J.onClose()),U(R1,()=>F("settings.esc")),D(B1,d),q(B1,"flexDirection","row"),q(B1,"gap",2),U(B1,b(T3,{level:Z,cursor:B,switchSection:x1}),d),q(d,"flexGrow",1),q(d,"flexShrink",1),q(d,"flexDirection","column"),q(d,"gap",1),U(d,b(X0,{get when(){return f()==="general"},get children(){return b(x3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,themeNames:I,setThemeCursor:N,selectTheme:V0,currentLocale:t,selectLanguage:h,toggleTransparent:o,selectFocusAccent:E,toastEnabled:s,soundEnabled:Z0,toggleToast:A0,toggleSound:h0,zenKeepsTasks:g0,toggleZenKeepsTasks:N0,settingsSurface:F0,selectSurface:c,editorKind:m0,cycleEditorKind:U0,editorCustomCommand:u0,editEditorCustom:()=>void W0()})}}),null),U(d,b(X0,{get when(){return f()==="engines"},get children(){return b(u3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,get vendors(){return w0()},isCustom:(I0)=>!qJ(I0),displayName:_0,commandText:n,isDefault:f0,isDefaultEngine:N1,editEngine:(I0)=>void z0(I0),renameEngine:(I0)=>void G0(I0),resetEngine:B0,onAddEngine:()=>void k0()})}}),null),U(d,b(X0,{get when(){return f()==="accounts"},get children(){return b(E3,{claudeStatus:S,codexStatus:l,copilotStatus:J0})}}),null),U(d,b(X0,{get when(){return f()==="keys"},get children(){return b(h3,{})}}),null),U(d,b(X0,{get when(){return f()==="feedback"},get children(){return b(w3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,title:L,setTitle:(I0)=>{A(I0),_("")},body:O,setBody:(I0)=>{g(I0),_("")},status:u,onTitleSubmit:()=>K(1),submit:()=>void D0()})}}),null),U(d,b(X0,{get when(){return f()==="dev"},get children(){return b(P3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void v9(z,J.kv,G),confirmRestartDaemon:()=>void m9(z,J.orchestrator,G),remoteProjectsEnabled:y,toggleRemoteProjects:L0,autoStatusEnabled:Q0,toggleAutoStatus:M0,dispatcherEnabled:T0,toggleDispatcher:X1})}}),null),D(Y0,y0),q(Y0,"paddingTop",0),U(y0,(()=>{var I0=x0(()=>!!C0());return()=>I0()?F("settings.nav.feedback"):F("settings.nav.default")})()),x((I0)=>{var jJ=Yx.BOLD,MJ=X.text,QJ=X.textMuted,$J=X.textMuted;return jJ!==I0.e&&(I0.e=q(V1,"attributes",jJ,I0.e)),MJ!==I0.t&&(I0.t=q(V1,"fg",MJ,I0.t)),QJ!==I0.a&&(I0.a=q(R1,"fg",QJ,I0.a)),$J!==I0.o&&(I0.o=q(y0,"fg",$J,I0.o)),I0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var l9=k(()=>{P();P();P();P();P();P();P();P();W1();QG();vJ();lf();CZ();Nq();O1();XB();l1();v1();ZJ();kf();xJ();I9();lJ();P9();S3();i9();v3();dG.show=(J,z,Y)=>{let G=!1;return new Promise((X)=>{J.replace(()=>b(dG,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{G=!0},onClose:()=>X({visualPrefsChanged:G})}),()=>X({visualPrefsChanged:G}))})}});import{TextAttributes as Xx}from"@opentui/core";function c3(){let{theme:J}=i0(),z=vz(),Y=LH(),G=()=>Y.toasts().slice(-m3),X=()=>Math.max(0,z().width-Zx-Qx),Z=()=>Math.max(0,z().height-qx-m3-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Q1,{get each(){return G()},children:(f)=>{let H=()=>f.kind==="needs_input"?J.warning:f.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>f.kind==="needs_input"?"?":f.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),K=W("text"),L=W("text");return D(j,K),D(j,L),q(j,"flexDirection","row"),q(j,"gap",1),q(j,"paddingLeft",1),q(j,"paddingRight",1),q(j,"onMouseUp",()=>Y.dismiss(f.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>f.title),x((A)=>{var O=H(),g=B(),u=Xx.BOLD,_=B();return O!==A.e&&(A.e=q(j,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(K,"fg",g,A.t)),u!==A.a&&(A.a=q(K,"attributes",u,A.a)),_!==A.o&&(A.o=q(L,"fg",_,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),x((f)=>{var H=X(),B=Z();return H!==f.e&&(f.e=q(Q,"left",H,f.e)),B!==f.t&&(f.t=q(Q,"top",B,f.t)),f},{e:void 0,t:void 0}),Q}})}var m3=4,Zx=40,Qx=2,qx=2;var d3=k(()=>{P();P();P();P();P();P();P();W1();MH();v1()});import{TextAttributes as fx}from"@opentui/core";function Hx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function n3(J){let{theme:z}=i0(),Y=()=>Math.max(4,J.width()-2);return b(X0,{get when(){return J.stale()},get children(){var G=W("box"),X=W("text"),Z=W("box"),Q=W("text"),f=W("box"),H=W("text");return D(G,X),D(G,Z),D(G,f),q(G,"flexDirection","column"),q(G,"flexShrink",0),q(G,"paddingLeft",1),q(G,"paddingRight",1),q(G,"paddingBottom",1),q(X,"wrapMode","none"),U(X,()=>"\u2594".repeat(Y())),D(Z,Q),q(Z,"flexDirection","row"),q(Z,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(f,H),q(f,"flexDirection","row"),q(f,"gap",1),q(H,"wrapMode","word"),U(H,()=>Hx(J.daemonVersion(),J.clientVersion)),x((B)=>{var{warning:V,warning:j}=z,K=fx.BOLD,L=z.text;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(Q,"fg",j,B.t)),K!==B.a&&(B.a=q(Q,"attributes",K,B.a)),L!==B.o&&(B.o=q(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),G}})}var i3=k(()=>{P();P();P();P();P();P();W1();v1();ZJ()});function l3(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Bx(J){let z=J.tasks.find((Z)=>Z.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(Z){return J.logger.error(`${J.logPrefix} archive failed:`,Z),null}if(!Y)return{archived:Y};let G=M1(J.taskId),X=l3(J.tasks,J.taskId);if(await wz(G,X?M1(X.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)}),J.updateActiveTask)await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await eJ(G).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{archived:Y,nextTask:X}}async function jx(J){let z=l3(J.tasks,J.taskId),Y=M1(J.taskId);if(J.switchBeforeKill)await wz(Y,z?M1(z.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await eJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{nextTask:z}}async function $3(J,z){if(!J.orch)return;let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Bx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function a3(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(f){J.logger.error(`${J.logPrefix} forget project failed:`,f),J.notifyError?.(`Couldn't remove: ${f instanceof Error?f.message:String(f)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let X=!1;try{await J.orch.deleteTask(z),X=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(n8)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),X=!0}catch(B){J.logger.error(`${J.logPrefix} force delete failed:`,B),J.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!X)return;let{nextTask:Z}=await jx({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,Z)}async function _3(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;let G=await J.promptText(Y.title);if(!G||!J.orch)return;try{await J.orch.setTitle(z,G)}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 p3(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||Y.kind==="main")return;let G=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!G||!J.orch)return;try{await J.orch.setBranch(z,G)}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 r3(J,z){let Y=J.tasks().find((Z)=>Z.id===z);if(!Y||!J.orch)return;let G=await tz(),X=OY(G,Y.vendor??a1);try{await J.orch.setVendor(z,X)}catch(Z){J.logger.error(`${J.logPrefix} task.setVendor failed:`,Z),J.notifyError?.(`Couldn't switch engine: ${Z instanceof Error?Z.message:String(Z)}`);return}J.notifyInfo?.(`Engine \u2192 ${FG(X)} (applies on reopen)`),await J.reload?.()}async function o3(J){let z=CJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let G=J.lastVendor()??a1,X=await tz();if(X.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let Z=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:G,availableVendors:X,discoverAdoptable:Z?(H)=>Z.discoverAdoptableWorktrees(H):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),_z(Q.repo),J.onRepoSaved?.(),!Z){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let f;if(Q.mode==="adopt"){let H=Q.adopt.length,B=0,V;for(let j of Q.adopt)try{f=(await Z.adoptWorktree({repo:Q.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:Q.vendor})).id,B++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${j.worktreePath}:`,K)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<H)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:H}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{f=(await Z.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(H){J.logger.error(`${J.logPrefix} task.create failed:`,H),J.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await J.reload?.(),f)J.selectTask?.(f),await J.enterTask?.(f)}var s3=k(()=>{QG();vJ();$8();O1();ZJ();sJ();l1();YJ()});import{spawn as Wx}from"child_process";import{existsSync as Vx}from"fs";import{basename as Kx,delimiter as Ux,isAbsolute as Dx,join as Lx}from"path";function $9(J,z,Y){if(Dx(J))return Y(J);let G=z.PATH??"";for(let X of G.split(Ux)){if(!X)continue;if(Y(Lx(X,J)))return!0}return!1}function Ox(J){let z=Kx(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 t3(J={}){let z=J.env??process.env,Y=J.platform??process.platform,G=J.exists??Vx,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:Ox(X),command:X,args:[]};for(let Z of Mx)if($9(Z.command,z,G))return{id:Z.id,label:Z.label,command:Z.command,args:[]};if(Y==="darwin"&&$9("open",z,G)){for(let Z of Fx)if(Z.paths.some((Q)=>G(Q)))return{id:Z.id,label:Z.label,command:"open",args:["-a",Z.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&$9("xdg-open",z,G))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Ax(J,z){return[z.command,[...z.args,J]]}function e3(J,z,Y={}){if(!J)return!1;let G=Y.spawn??Wx,[X,Z]=Ax(J,z);try{let Q=G(X,Z,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Mx,Fx;var JM=k(()=>{Mx=[{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"}],Fx=[{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 bH(J){let z=new Map;function Y(G){let X=z.get(G);if(!X){let[Z,Q]=a(J.initial,J.equals?{equals:J.equals}:void 0);X={read:Z,write:(f)=>Q(()=>f),inFlight:!1,nextAllowedAt:0},z.set(G,X)}return X}return{read(G){if(!G)return J.initial;return Y(G).read()},poll(G){if(!G)return;let X=Y(G);zX(X,J,(Z)=>J.run(G,Z),(Z)=>X.write(Z))},reset(){z.clear()}}}var LQ=k(()=>{W1();YX();YX()});import{stat as Rx}from"fs/promises";import{join as gx}from"path";async function bx(J){try{let z=await Rx(gx(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function Ix(J,z,Y=GY){let G=await bx(J);if(G!==null){let f=zM.get(J);if(f&&f.fingerprint===G)return f.value}let X="",Z=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:nJ(),signal:z}),Q=Z.status===0?Z.stdout.trim():"";if(Q&&Q!=="HEAD")X=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:nJ(),signal:z})).status===0)X="(detached)";if(G!==null)zM.set(J,{fingerprint:G,value:X});return X}function GM(J){return YM.read(J)}function XM(J){YM.poll(J)}var Cx=2000,Nx=30000,kx=1500,zM,YM;var ZM=k(()=>{cY();LQ();zM=new Map;YM=bH({initial:"",timeoutMs:Cx,slowRetryMs:Nx,minIntervalMs:kx,run:(J,z)=>Ix(J,z)})});function a9(J){let z=J.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,G=null,X=()=>{Y=!0,G?.(),G=z(()=>{Y=!1,G=null},700)},Z=()=>{Y=!1,G?.(),G=null},Q=(H)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),j=V<0?0:V,K=Math.min(B.length-1,Math.max(0,j+H));J.setCursor(K)},f=(H)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){Z(),Q(1)},moveUp(){Z(),Q(-1)},selectCurrent(){Z();let H=J.getFlatIds(),B=J.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)Z(),f(0);else X()},pressShiftG(){Z(),f(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){Z()}}}function QM(J){let z=a9({getCursor:()=>J.cursorIndex(),setCursor:(Z)=>J.setCursorIndex(Z),getFlatIds:()=>J.flatTaskIds(),onSelect:(Z)=>J.onSelect(Z)}),Y=()=>{let Z=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=Z.length)return;return Z[Q]},G=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;D1(()=>({enabled:J.focused()&&!G(),bindings:pY({"sidebar.nav":(Z,Q)=>{let f=(Q??0)%2===0;if(X()){let H=Y();if(H===void 0)return;J.onMoveRequest?.(H,f?1:-1);return}if(f)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(X()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(Z)=>{if(X())return;if(Z.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onDeleteRequest?.(Z)},"sidebar.archive":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onArchiveRequest?.(Z)},"sidebar.localMerge":(Z)=>{if(!Z.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onRenameRequest?.(Z)},"sidebar.pin":(Z)=>{if(X())return;if(!Z.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),D1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),D1(()=>({enabled:J.focused(),bindings:pY({"sidebar.view":(Z,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),D1(()=>({enabled:J.focused()&&G(),bindings:pY({"sidebar.search.nav":(Z,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 qM=k(()=>{rX();xJ()});function _9(J,z){if(z<=0)return"";if(J.length<=z)return J;return`${J.slice(0,Math.max(0,z-1))}\u2026`}function p9(J,z){return` ${_9(J,Math.max(0,z))}`}function yx(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Tx(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function BM(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 xx(){return F("tasks.subtitle.noTracking")}function ux(){return F("tasks.subtitle.materializing")}function Ex(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!qJ(J.vendor)}function r9(J){let{task:z}=J,Y=z.kind==="main",G=Y?J.mainBranch??"":z.branch,X=Sx[z.status],Z=J.activity?.state,Q=Z!==void 0,f=wx(Z),H=Tx(Z),B=Ex(z)&&!Q,V=J.job!==void 0,j=V||!B&&(Z==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=eX[J.spinnerFrame]??eX[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":f?.tone??X.tone),A=B?xx():yx(z.status),O=V?J.truncateBranch(ux(),J.subtitleBudget):H?J.truncateBranch(H.text,J.subtitleBudget):G.length>0?J.truncateBranch(G,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),g=B?fM:f?.glyph??X.glyph,u=B?fM:f?.glyph??"\u2605";return{isMain:Y,titleText:Y?Nz(z.repo):z.title,subtitleText:O,loading:j,stateGlyph:j?K:g,projectGlyph:j?K:u,tone:L}}function o9(J,z){if(!J.loading)return J;let Y=eX[z()%eX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function wx(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 Sx,eX,HM=100,fM="\xB7";var jM=k(()=>{ZJ();l1();gH();Sx={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};eX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function s9(J){return WM.read(J)}function t9(J){WM.poll(J)}var Px=4000,hx=60000,vx=1500,mx,WM;var VM=k(()=>{cY();LQ();xX();LQ();mx={added:0,deleted:0},WM=bH({initial:mx,equals:hz,timeoutMs:Px,slowRetryMs:hx,minIntervalMs:vx,run:async(J,z)=>{let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:nJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}})});import{TextAttributes as E1}from"@opentui/core";function cx(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function UM(J,z=nx){if(J.length<=z)return J;return`${J.slice(0,Math.max(0,z-1))}\u2026`}function ix(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function lx(J,z){if(z<=0||J.length<=z)return J;return`\u2026${J.slice(J.length-Math.max(0,z-1))}`}function DM(J){let{theme:z}=i0(),Y=()=>J.focused?J.focused():!0,[G,X]=a("active"),[Z,Q]=a(!1),[f,H]=a(""),[B,V]=a(null),j=()=>J.projectFilter?.()??B(),K=(n)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(n);else V(n)};function L(){H(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(n){Q(!1),H(""),J.onSearchActiveChange?.(!1)}s0(()=>{if(!Z())return;let n=HJ();if(!n)return;let f0=(S0)=>{if(S0.defaultPrevented)return;if(!Y())return;if(S0.ctrl||S0.meta||S0.option)return;if(S0.name==="backspace"){H((p0)=>p0.slice(0,-1));return}let r0=S0.sequence;if(!r0||r0.length!==1)return;let _0=r0.charCodeAt(0);if(_0<32||_0===127)return;H((p0)=>p0+r0)};n.keyInput.on("keypress",f0),k1(()=>n.keyInput.off("keypress",f0))});let[O,g]=a(0),u=setInterval(()=>g((n)=>n+1),dx);k1(()=>clearInterval(u));let[_,I]=a(0),N=setInterval(()=>I((n)=>(n+1)%eX.length),HM);k1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",S=K0(()=>M3(J.tasks(),G())),r=K0(()=>{let n=j();if(!n)return null;let f0=Gz(n);return S().find((S0)=>Gz(S0.repo)===f0)??null}),l=K0(()=>r()?.repo??null),e=K0(()=>r()?.label??"all"),J0=K0(()=>{let n=r();return n?n.count:S().reduce((f0,S0)=>f0+S0.count,0)}),T=K0(()=>{let n=J0();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=K0((n)=>A3(n,x9(J.tasks(),G(),Z()?f():"",M(),l())),[]),p=K0(()=>u9(q0())),j0=K0(()=>O3(q0())),F0=K0(()=>j0().projectRows),V0=K0(()=>j0().taskRows),t=K0(()=>{let n=new Map;for(let f0 of q0())n.set(f0.flatIndex,f0);return n}),h=K0(()=>u9(x9(J.tasks(),G(),"",M(),l())).length),C=K0(()=>V0().length>0);s0(()=>{let n=j(),f0=S();if(n!==null&&f0.length>0&&(f0.length<=1||r()===null))K(null)});function o(){let n=S();if(n.length<=1){K(null);return}let f0=l(),S0=f0?Gz(f0):null,r0=S0===null?-1:n.findIndex((p0)=>Gz(p0.repo)===S0),_0=n[r0+1];K(_0?.repo??null)}let E=()=>J.width?J.width():KM,c=K0(()=>Math.max(6,E()-9)),s=K0(()=>Math.max(6,E()-16)),Z0=vz(),A0=K0(()=>{let n=Math.max(2,Math.min(10,Math.floor(Z0().height*0.25))),f0=Math.max(2,F0().length*2);return Math.min(n,f0)}),[h0,g0]=a(null),[N0,y]=a(-1),L0,Q0,M0,T0=new Map;s0(()=>{let n=J.width?J.width():KM,f0=M0;if(!f0)return;f0.width=n,f0.flexShrink=1,f0.minHeight=0}),s0(SJ([N0,q0],([n])=>{let f0=t().get(n);if(!f0)return;let S0=f0.task.kind==="main"?L0:Q0;if(!S0)return;if(S0.viewport.height<=0)return;let r0=T0.get(n);if(!r0)return;S0.scrollChildIntoView(r0.id)})),s0(SJ(()=>[J.selectedId(),p()],([n,f0])=>{let S0=p1(N0);if(n===null){if(S0===-1&&f0.length>0)y(0);else if(S0>=f0.length)y(Math.max(0,f0.length-1));else if(f0.length===0)y(-1);return}let r0=f0.indexOf(n);if(r0>=0){if(r0!==S0)y(r0)}else if(f0.length===0)y(-1);else if(S0<0||S0>=f0.length)y(f0.length-1)})),s0(SJ(G,()=>{let n=p();y(n.length>0?0:-1)},{defer:!0})),s0(SJ(l,(n)=>y(F3(q0(),n)),{defer:!0})),s0(SJ([Z,f],()=>{if(!Z())return;let n=p();y(n.length>0?0:-1)}));function X1(n){let f0=G(),S0=MQ.findIndex((p0)=>p0.view===f0);if(S0<0)return;let r0=(S0+n+MQ.length)%MQ.length,_0=MQ[r0];if(_0)X(_0.view)}QM({focused:Y,cursorIndex:N0,setCursorIndex:y,flatTaskIds:p,onSelect:(n)=>{J.onSelect(n),J.onActivate?.(n)},onDeleteRequest:(n)=>J.onDeleteRequest?.(n),onArchiveRequest:(n)=>J.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>J.onLocalMergeRequest?.(n),moveMode:J.moveMode,onMoveRequest:(n,f0)=>J.onMoveRequest?.(n,f0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onViewSwitch:(n)=>X1(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>o(),searchMode:Z,onSearchEnter:()=>L(),onSearchExit:(n)=>A(n)});let z1=(n)=>(()=>{var f0=W("box"),S0=W("box"),r0=W("text"),_0=W("text");return D(f0,S0),q(f0,"flexDirection","column"),q(f0,"flexShrink",0),U(f0,b(X0,{get when(){return n.topPad},get children(){var p0=W("box"),t0=W("text");return D(p0,t0),q(p0,"flexShrink",0),D(t0,E0(" ")),q(t0,"wrapMode","none"),p0}}),S0),D(S0,r0),D(S0,_0),q(S0,"flexDirection","row"),q(S0,"flexShrink",0),q(S0,"gap",1),q(S0,"paddingLeft",1),q(S0,"paddingRight",1),q(r0,"wrapMode","none"),U(r0,()=>n.label),q(_0,"wrapMode","none"),U(_0,()=>"\u2500".repeat(Math.max(2,E()-10-n.label.length-(n.suffix?.length??0)))),U(S0,b(X0,{get when(){return n.suffix},get children(){var p0=W("text");return q(p0,"wrapMode","none"),U(p0,()=>n.suffix),x((t0)=>{var N1=z.info,g1=E1.BOLD;return N1!==t0.e&&(t0.e=q(p0,"fg",N1,t0.e)),g1!==t0.t&&(t0.t=q(p0,"attributes",g1,t0.t)),t0},{e:void 0,t:void 0}),p0}}),null),x((p0)=>{var t0=z.textMuted,N1=E1.BOLD,g1=z.border;return t0!==p0.e&&(p0.e=q(r0,"fg",t0,p0.e)),N1!==p0.t&&(p0.t=q(r0,"attributes",N1,p0.t)),g1!==p0.a&&(p0.a=q(_0,"fg",g1,p0.a)),p0},{e:void 0,t:void 0,a:void 0}),f0})(),w0=(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}},v0=(n)=>{let f0=n.row.task,S0=n.row.flatIndex,r0=()=>S0===N0(),_0=()=>f0.id===J.selectedId(),p0=K0(()=>{let R=J.chatRunState?.();if(!R)return!1;let m0=`${f0.id}:`;for(let[U0,u0]of R)if(u0==="running"&&U0.startsWith(m0))return!0;return!1}),t0=K0(()=>{let R=Ef(J.worktreeChanges?.(),f0.worktreePath);if(R)return R;if(O(),!f0.archived)t9(f0.worktreePath);return s9(f0.worktreePath)},void 0,{equals:hz}),N1=K0(()=>{return O(),XM(f0.repo),GM(f0.repo)}),g1=K0(()=>r9({task:f0,activity:J.engineState?.().get(f0.id),job:J.taskJobs?.().get(f0.id),live:p0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:UM,mainBranch:N1()})),z0=K0(()=>o9(g1(),_)),G0=()=>!z0().loading?z.primary:w0(z0().tone),B0=()=>r0()?z.focusAccent:_0()?z.primary:void 0,k0=()=>r0()||_0()?"\u258C":" ";return(()=>{var R=W("box"),m0=W("box"),U0=W("box"),u0=W("text"),W0=W("box"),D0=W("text"),C0=W("text"),J1=W("box"),Y1=W("text"),l0=W("box"),x1=W("text");return D(R,m0),q(R,"flexDirection","column"),q(R,"gap",0),q(R,"paddingBottom",0),D(m0,U0),D(m0,J1),mz((b0)=>{T0.set(S0,b0),k1(()=>{if(T0.get(S0)===b0)T0.delete(S0)})},m0),q(m0,"flexDirection","column"),q(m0,"gap",0),q(m0,"onMouseUp",()=>{if(J.onSelect(f0.id),J.activateOnClick)J.onActivate?.(f0.id)}),q(m0,"onMouseOver",(b0)=>g0({task:f0,x:b0.x,y:b0.y})),q(m0,"onMouseOut",()=>g0((b0)=>b0?.task.id===f0.id?null:b0)),D(U0,u0),D(U0,W0),q(U0,"flexDirection","row"),q(U0,"gap",0),q(u0,"wrapMode","none"),U(u0,k0),D(W0,D0),D(W0,C0),q(W0,"flexDirection","row"),q(W0,"flexGrow",1),q(W0,"paddingRight",1),q(W0,"gap",0),q(D0,"wrapMode","none"),U(D0,()=>z0().projectGlyph),q(C0,"wrapMode","none"),q(C0,"flexGrow",1),U(C0,()=>p9(z0().titleText,c())),D(J1,Y1),D(J1,l0),q(J1,"flexDirection","row"),q(J1,"gap",0),q(Y1,"wrapMode","none"),U(Y1,k0),D(l0,x1),q(l0,"flexDirection","row"),q(l0,"flexGrow",1),q(l0,"paddingLeft",2),q(l0,"paddingRight",1),q(l0,"gap",1),q(x1,"wrapMode","none"),q(x1,"flexGrow",1),U(x1,()=>z0().subtitleText),U(l0,b(X0,{get when(){return t0().added>0},get children(){var b0=W("text"),m1=E0("+");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().added,null),x((v)=>q(b0,"fg",z.success,v)),b0}}),null),U(l0,b(X0,{get when(){return t0().deleted>0},get children(){var b0=W("text"),m1=E0("\u2212");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().deleted,null),x((v)=>q(b0,"fg",z.error,v)),b0}}),null),x((b0)=>{var m1=r0()?z.backgroundElement:void 0,v=B0(),R0=G0(),V1=E1.BOLD,R1=z.text,B1=E1.BOLD,d=B0(),Y0=z.textMuted,y0=E1.DIM;return m1!==b0.e&&(b0.e=q(m0,"backgroundColor",m1,b0.e)),v!==b0.t&&(b0.t=q(u0,"fg",v,b0.t)),R0!==b0.a&&(b0.a=q(D0,"fg",R0,b0.a)),V1!==b0.o&&(b0.o=q(D0,"attributes",V1,b0.o)),R1!==b0.i&&(b0.i=q(C0,"fg",R1,b0.i)),B1!==b0.n&&(b0.n=q(C0,"attributes",B1,b0.n)),d!==b0.s&&(b0.s=q(Y1,"fg",d,b0.s)),Y0!==b0.h&&(b0.h=q(x1,"fg",Y0,b0.h)),y0!==b0.r&&(b0.r=q(x1,"attributes",y0,b0.r)),b0},{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}),R})()};return(()=>{var n=W("box"),f0=W("box"),S0=W("box"),r0=W("text"),_0=W("box"),p0=W("box"),t0=W("text"),N1=W("scrollbox"),g1=W("box");return D(n,f0),D(n,_0),D(n,N1),mz((z0)=>{M0=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(f0,S0),q(f0,"flexDirection","row"),q(f0,"justifyContent","space-between"),q(f0,"gap",1),q(f0,"paddingBottom",1),q(f0,"paddingLeft",1),q(f0,"paddingRight",1),D(S0,r0),q(S0,"flexDirection","row"),q(S0,"gap",1),D(r0,E0("KOBE")),q(r0,"wrapMode","none"),U(S0,b(X0,{get when(){return J.headerStatus?.()},children:(z0)=>(()=>{var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(G0,()=>z0().label),x((B0)=>{var k0=z0().emphasize?z.warning:z.textMuted,R=z0().emphasize?E1.BOLD:E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),G0})()}),null),U(f0,b(X0,{get when(){return J.onAddTask},get children(){var z0=W("text");return D(z0,E0("[+]")),q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onAddTask?.()),x((G0)=>{var B0=z.primary,k0=E1.BOLD;return B0!==G0.e&&(G0.e=q(z0,"fg",B0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return Z()},get children(){var z0=W("box"),G0=W("text"),B0=W("text"),k0=W("text");return D(z0,G0),D(z0,B0),D(z0,k0),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"paddingBottom",1),q(z0,"paddingLeft",1),D(G0,E0("/")),q(G0,"wrapMode","none"),q(B0,"wrapMode","none"),U(B0,f),D(k0,E0("\u2588")),q(k0,"wrapMode","none"),U(z0,b(X0,{get when(){return f().length===0},get children(){var R=W("text"),m0=E0(" ");return D(R,m0),q(R,"wrapMode","none"),U(R,()=>F("tasks.search.placeholder"),null),x((U0)=>q(R,"fg",z.textMuted,U0)),R}}),null),U(z0,b(X0,{get when(){return f().length>0},get children(){var R=W("text"),m0=E0(" "),U0=E0("/");return D(R,m0),D(R,U0),q(R,"wrapMode","none"),U(R,()=>p().length,U0),U(R,h,null),x((u0)=>q(R,"fg",z.textMuted,u0)),R}}),null),x((R)=>{var{info:m0,text:U0,info:u0}=z,W0=E1.BLINK;return m0!==R.e&&(R.e=q(G0,"fg",m0,R.e)),U0!==R.t&&(R.t=q(B0,"fg",U0,R.t)),u0!==R.a&&(R.a=q(k0,"fg",u0,R.a)),W0!==R.o&&(R.o=q(k0,"attributes",W0,R.o)),R},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),_0),D(_0,p0),q(_0,"flexDirection","row"),q(_0,"justifyContent","space-between"),q(_0,"gap",1),q(_0,"paddingBottom",1),q(_0,"paddingLeft",1),q(_0,"paddingRight",1),D(p0,t0),q(p0,"flexDirection","row"),q(p0,"gap",2),U(p0,b(Q1,{each:MQ,children:(z0)=>{let G0=()=>G()===z0.view;return(()=>{var B0=W("text");return q(B0,"wrapMode","none"),q(B0,"onMouseUp",()=>X(z0.view)),U(B0,()=>cx(z0.view)),x((k0)=>{var R=G0()?z.primary:z.textMuted,m0=G0()?E1.BOLD:void 0;return R!==k0.e&&(k0.e=q(B0,"fg",R,k0.e)),m0!==k0.t&&(k0.t=q(B0,"attributes",m0,k0.t)),k0},{e:void 0,t:void 0}),B0})()}}),t0),D(t0,E0("[/]")),q(t0,"wrapMode","none"),U(_0,b(X0,{get when(){return J.sortMode},get children(){var z0=W("text");return q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(z0,()=>F("tasks.sort")),x((G0)=>{var B0=z.textMuted,k0=E1.DIM;return B0!==G0.e&&(G0.e=q(z0,"fg",B0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return F0().length>0},get children(){var z0=W("box"),G0=W("box"),B0=W("text"),k0=W("text"),R=W("scrollbox"),m0=W("box");return D(z0,G0),D(z0,R),q(z0,"flexDirection","column"),q(z0,"flexShrink",0),D(G0,B0),D(G0,k0),q(G0,"flexDirection","row"),q(G0,"flexShrink",0),q(G0,"gap",1),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"onMouseUp",()=>o()),q(B0,"wrapMode","none"),U(B0,()=>F("tasks.header.projects")),U(G0,b(X0,{get when(){return S().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,e),x((u0)=>{var W0=l()?z.primary:z.textMuted,D0=l()?E1.BOLD:void 0;return W0!==u0.e&&(u0.e=q(U0,"fg",W0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),k0),q(k0,"wrapMode","none"),U(k0,()=>"\u2500".repeat(Math.max(2,E()-10-F("tasks.header.projects").length-(S().length>1?e().length+1:0)-(S().length>1?T().length+1:0)))),U(G0,b(X0,{get when(){return S().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,T),x((u0)=>{var W0=z.textMuted,D0=E1.DIM;return W0!==u0.e&&(u0.e=q(U0,"fg",W0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),null),D(R,m0),mz((U0)=>{L0=U0},R),q(R,"flexShrink",0),q(R,"flexGrow",0),q(R,"minHeight",0),q(R,"stickyScroll",!1),q(R,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(m0,"flexShrink",0),q(m0,"gap",0),q(m0,"paddingRight",1),U(m0,b(Q1,{get each(){return F0()},children:(U0)=>b(v0,{row:U0})})),x((U0)=>{var u0=z.textMuted,W0=E1.BOLD,D0=z.border,C0=A0();return u0!==U0.e&&(U0.e=q(B0,"fg",u0,U0.e)),W0!==U0.t&&(U0.t=q(B0,"attributes",W0,U0.t)),D0!==U0.a&&(U0.a=q(k0,"fg",D0,U0.a)),C0!==U0.o&&(U0.o=q(R,"maxHeight",C0,U0.o)),U0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),N1),U(n,b(z1,{get label(){return F("tasks.header.tasks")},get suffix(){return x0(()=>M()==="default")()?void 0:M()},get topPad(){return F0().length>0}}),N1),D(N1,g1),mz((z0)=>{Q0=z0},N1),q(N1,"flexGrow",1),q(N1,"minHeight",0),q(N1,"stickyScroll",!1),q(N1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(g1,"flexShrink",0),q(g1,"gap",0),q(g1,"paddingRight",1),U(g1,b(Q1,{get each(){return V0()},children:(z0)=>{let{task:G0,flatIndex:B0}=z0,k0=()=>B0===N0(),R=()=>G0.id===J.selectedId(),m0=K0(()=>{let Y1=J.chatRunState?.();if(!Y1)return!1;let l0=`${G0.id}:`;for(let[x1,b0]of Y1)if(b0==="running"&&x1.startsWith(l0))return!0;return!1}),U0=K0(()=>{let Y1=Ef(J.worktreeChanges?.(),G0.worktreePath);if(Y1)return Y1;if(O(),!G0.archived)t9(G0.worktreePath);return s9(G0.worktreePath)},void 0,{equals:hz}),u0=K0(()=>r9({task:G0,activity:J.engineState?.().get(G0.id),job:J.taskJobs?.().get(G0.id),live:m0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:UM,mainBranch:""})),W0=K0(()=>o9(u0(),_)),D0=()=>w0(W0().tone),C0=()=>k0()?z.focusAccent:R()?z.primary:void 0,J1=()=>k0()||R()?"\u258C":" ";return(()=>{var Y1=W("box"),l0=W("box"),x1=W("box"),b0=W("text"),m1=W("box"),v=W("text"),R0=W("text"),V1=W("box"),R1=W("text"),B1=W("box"),d=W("text");return D(Y1,l0),q(Y1,"flexDirection","column"),q(Y1,"gap",0),q(Y1,"paddingBottom",1),D(l0,x1),D(l0,V1),mz((Y0)=>{T0.set(B0,Y0),k1(()=>{if(T0.get(B0)===Y0)T0.delete(B0)})},l0),q(l0,"flexDirection","column"),q(l0,"gap",0),q(l0,"onMouseUp",()=>{if(J.onSelect(G0.id),J.activateOnClick)J.onActivate?.(G0.id)}),q(l0,"onMouseOver",(Y0)=>g0({task:G0,x:Y0.x,y:Y0.y})),q(l0,"onMouseOut",()=>g0((Y0)=>Y0?.task.id===G0.id?null:Y0)),D(x1,b0),D(x1,m1),q(x1,"flexDirection","row"),q(x1,"gap",0),q(b0,"wrapMode","none"),U(b0,J1),D(m1,v),D(m1,R0),q(m1,"flexDirection","row"),q(m1,"flexGrow",1),q(m1,"paddingRight",1),q(m1,"gap",0),q(v,"wrapMode","none"),U(v,()=>W0().stateGlyph),q(R0,"wrapMode","none"),q(R0,"flexGrow",1),U(R0,()=>p9(W0().titleText,c())),U(m1,b(X0,{get when(){return x0(()=>!!J.moveMode?.())()&&k0()},get children(){var Y0=W("text");return q(Y0,"wrapMode","none"),U(Y0,()=>F("tasks.moveChip")),x((y0)=>q(Y0,"fg",z.warning,y0)),Y0}}),null),D(V1,R1),D(V1,B1),q(V1,"flexDirection","row"),q(V1,"gap",0),q(R1,"wrapMode","none"),U(R1,J1),D(B1,d),q(B1,"flexDirection","row"),q(B1,"flexGrow",1),q(B1,"paddingLeft",2),q(B1,"paddingRight",1),q(B1,"gap",1),q(d,"wrapMode","none"),q(d,"flexGrow",1),U(d,()=>W0().subtitleText),U(B1,b(X0,{get when(){return G0.pinned===!0},get children(){var Y0=W("text");return D(Y0,E0("\u25B4")),q(Y0,"wrapMode","none"),x((y0)=>q(Y0,"fg",z.warning,y0)),Y0}}),null),U(B1,b(X0,{get when(){return BM(G0)},children:(Y0)=>(()=>{var y0=W("text");return q(y0,"wrapMode","none"),U(y0,()=>Y0().glyph),x((I0)=>q(y0,"fg",w0(Y0().tone),I0)),y0})()}),null),U(B1,b(X0,{get when(){return U0().added>0},get children(){var Y0=W("text"),y0=E0("+");return D(Y0,y0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().added,null),x((I0)=>q(Y0,"fg",z.success,I0)),Y0}}),null),U(B1,b(X0,{get when(){return U0().deleted>0},get children(){var Y0=W("text"),y0=E0("\u2212");return D(Y0,y0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().deleted,null),x((I0)=>q(Y0,"fg",z.error,I0)),Y0}}),null),x((Y0)=>{var y0=k0()?z.backgroundElement:void 0,I0=C0(),jJ=D0(),MJ=E1.BOLD,QJ=z.text,$J=R()||k0()?E1.BOLD:void 0,nz=C0(),gJ=z.textMuted,iz=E1.DIM;return y0!==Y0.e&&(Y0.e=q(l0,"backgroundColor",y0,Y0.e)),I0!==Y0.t&&(Y0.t=q(b0,"fg",I0,Y0.t)),jJ!==Y0.a&&(Y0.a=q(v,"fg",jJ,Y0.a)),MJ!==Y0.o&&(Y0.o=q(v,"attributes",MJ,Y0.o)),QJ!==Y0.i&&(Y0.i=q(R0,"fg",QJ,Y0.i)),$J!==Y0.n&&(Y0.n=q(R0,"attributes",$J,Y0.n)),nz!==Y0.s&&(Y0.s=q(R1,"fg",nz,Y0.s)),gJ!==Y0.h&&(Y0.h=q(d,"fg",gJ,Y0.h)),iz!==Y0.r&&(Y0.r=q(d,"attributes",iz,Y0.r)),Y0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Y1})()}}),null),U(g1,b(X0,{get when(){return p().length===0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),U(G0,(()=>{var B0=x0(()=>!!(Z()&&f().trim().length>0));return()=>B0()?F("tasks.empty.noMatchSearch"):x0(()=>!!l())()?x0(()=>G()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):x0(()=>G()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),x((B0)=>q(G0,"fg",z.textMuted,B0)),z0}}),null),U(g1,b(X0,{get when(){return x0(()=>!!(l()&&p().length>0&&!C()))()&&!(Z()&&f().trim().length>0)},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,(()=>{var B0=x0(()=>G()==="active");return()=>B0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),x((B0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(g1,b(X0,{get when(){return x0(()=>G()==="archived")()&&p().length>0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,()=>F("tasks.archiveHint")),x((B0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return J.zenActive?.()},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"flexShrink",0),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"paddingTop",1),D(G0,E0("\u262F ZEN")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onZenClick?.()),x((B0)=>{var k0=z.accent,R=E1.BOLD;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return h0()},children:(z0)=>{let G0=K0(()=>{let W0=z0().task,D0=[];if(D0.push({text:W0.kind==="main"?Nz(W0.repo):W0.title,bold:!0}),W0.branch.length>0)D0.push({text:`\u2387 ${W0.branch}`});if(W0.worktreePath.length>0)D0.push({text:W0.worktreePath,dim:!0});return D0}),B0=72,k0=K0(()=>Math.min(68,Math.max(...G0().map((W0)=>ix(W0.text))))),R=K0(()=>k0()+4),m0=K0(()=>G0().length+2),U0=K0(()=>Math.max(0,Math.min(z0().x+2,Z0().width-R()-1))),u0=K0(()=>Math.max(0,Math.min(z0().y+1,Z0().height-m0()-1)));return(()=>{var W0=W("box");return q(W0,"position","absolute"),q(W0,"zIndex",2600),q(W0,"flexDirection","column"),q(W0,"border",!0),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),U(W0,b(Q1,{get each(){return G0()},children:(D0)=>(()=>{var C0=W("text");return q(C0,"wrapMode","none"),U(C0,(()=>{var J1=x0(()=>!!D0.dim);return()=>J1()?lx(D0.text,k0()):_9(D0.text,k0())})()),x((J1)=>{var Y1=D0.dim?z.textMuted:z.text,l0=D0.bold?E1.BOLD:D0.dim?E1.DIM:void 0;return Y1!==J1.e&&(J1.e=q(C0,"fg",Y1,J1.e)),l0!==J1.t&&(J1.t=q(C0,"attributes",l0,J1.t)),J1},{e:void 0,t:void 0}),C0})()})),x((D0)=>{var C0=U0(),J1=u0(),Y1=R(),l0=z.focusAccent,x1=z.backgroundElement;return C0!==D0.e&&(D0.e=q(W0,"left",C0,D0.e)),J1!==D0.t&&(D0.t=q(W0,"top",J1,D0.t)),Y1!==D0.a&&(D0.a=q(W0,"width",Y1,D0.a)),l0!==D0.o&&(D0.o=q(W0,"borderColor",l0,D0.o)),x1!==D0.i&&(D0.i=q(W0,"backgroundColor",x1,D0.i)),D0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),W0})()}}),null),x((z0)=>{var G0=Y()?z.focusAccent:z.textMuted,B0=E1.BOLD,k0=z.textMuted,R=E1.DIM;return G0!==z0.e&&(z0.e=q(r0,"fg",G0,z0.e)),B0!==z0.t&&(z0.t=q(r0,"attributes",B0,z0.t)),k0!==z0.a&&(z0.a=q(t0,"fg",k0,z0.a)),R!==z0.o&&(z0.o=q(t0,"attributes",R,z0.o)),z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var KM=32,MQ,dx=2000,nx=16;var LM=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();W1();v1();v1();ZM();gH();qM();jM();xX();VM();MQ=[{view:"active"},{view:"archived"}]});var RM={};j1(RM,{startTasksPane:()=>rx,legendRowCap:()=>AM,legendCap:()=>OM});import{existsSync as MM}from"fs";import{stat as $x}from"fs/promises";import{TextAttributes as IH}from"@opentui/core";function e9(J){return!!J&&Rq(J)}function FM(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 _x(J){let{theme:z}=i0(),Y=c1(),G=oX(),X=LH(),[Z,Q]=a(J.tasks().some((y)=>y.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null);function f(y){X.notify({kind:"error",taskId:Z()??"",tabId:"",title:y})}function H(y){X.notify({kind:"done",taskId:Z()??"",tabId:"",title:y})}let[B,V]=a(!1),[j,K]=a(G.get("activeSortMode")==="recent"?"recent":"default"),L=G.get("tasksPane.projectFilter"),[A,O]=a(typeof L==="string"&&L.length>0?L:null),g=(y)=>{O(y),G.set("tasksPane.projectFilter",y)},[u,_]=a(null),[I,N]=a(!1);{let y=process.env.TMUX_PANE;if(y){let L0=()=>{a0(["show-options","-wqv","-t",y,NY]).then(({code:M0,stdout:T0})=>{N(M0===0&&T0.trim().length>0)})};L0();let Q0=setInterval(L0,1000);k1(()=>clearInterval(Q0))}}let M=vz();s0(()=>{if(J.initialTaskId)return;let y=J.orch?.activeTaskSignal()();if(!y)return;Q(y)}),s0(SJ(()=>J.orch?.uiPrefsSignal()(),(y)=>{if(y&&y.sortMode!==p1(j))K(y.sortMode);if(y&&y.projectFilter!==p1(A))O(y.projectFilter)})),s0(()=>{let y=J.orch?.updateSignal()();if(y)_(y)});let S={orch:J.orch,tasks:()=>J.tasks(),confirm:async(y)=>await LY.show(Y,y.title,y.body,y.cancelLabel,y.confirmLabel)===!0,promptText:(y,L0)=>DY.show(Y,y,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:H,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(y,L0)=>{if(Z()!==y)return;let Q0=J.tasks();Q(L0?.id??(Q0.find((M0)=>!M0.archived)??Q0[0])?.id??null)},promptNewTask:(y,L0,Q0)=>BH.show(Y,y,L0,Q0),cursorRepo:()=>{let y=J.tasks();return(y.find((L0)=>L0.id===Z())??y[0])?.repo},lastVendor:()=>uJ(C1("lastSelectedVendor"),EJ()),rememberVendor:(y)=>o1("lastSelectedVendor",y),openCreateSurface:async(y)=>{if(xG(G.get(fY,TG))!=="chattab")return!1;let Q0=await AJ();if(!Q0)return!1;return await Qf(Q0,y),!0},selectTask:(y)=>Q(y),enterTask:(y)=>Z0(y)};async function r(){await o3(S)}async function l(){if(xG(G.get(fY,TG))==="chattab"){let Q0=await AJ();if(Q0){await Xf(Q0);return}}if(!(await dG.show(Y,G,J.orch??void 0)).visualPrefsChanged)return;if(!G.flush())return;try{let Q0=await AJ();if(Q0)await OX(Q0)}catch(Q0){console.error("[kobe tasks] failed to refresh workspace panes:",Q0)}}async function e(){let y=await AJ();if(y){await Zf(y);return}tX.show(Y)}async function J0(){if(!u()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:o0}));return}let L0=await AJ();if(!L0)return;await qf(L0)}async function T(y){await $3(S,y)}async function q0(y){await a3(S,y)}async function p(y){await _3(S,y)}async function j0(y){await p3(S,y)}async function F0(y){await r3(S,y)}async function V0(y){let Q0=J.tasks().find((T0)=>T0.id===y)?.worktreePath;if(!Q0||!MM(Q0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Q0=await J.orch.ensureWorktree(y)}catch(T0){console.error("[kobe tasks] task.ensureWorktree failed:",T0),f(FM(T0));return}await J.reload()}if(!Q0||!MM(Q0))return;let M0=t3();if(!M0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!e3(Q0,M0))console.error(`[kobe tasks] failed to open worktree with ${M0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:M0.label}))}async function t(){if(!process.env.TMUX_PANE)return;let y=await AJ();if(!y)return;let L0=await HX(y);if(!L0)return;await P0(["select-pane","-t",L0])}async function h(y,L0){let Q0=J.tasks().find((M0)=>M0.id===y);if(!Q0||Q0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(y,L0)}catch(M0){console.error("[kobe tasks] task.move failed:",M0),f(F("tasks.toast.moveTaskFailed",{message:M0 instanceof Error?M0.message:String(M0)}));return}Q(y),await J.reload()}let[C,o]=a(G.get("tasksPane.keysCollapsed",!1)===!0),E=(y)=>{o(y),G.set("tasksPane.keysCollapsed",y)};s0(SJ(()=>J.orch?.uiPrefsSignal()(),(y)=>{if(y&&y.keysCollapsed!==p1(C))o(y.keysCollapsed)}));let[c,s]=a(!1);D1(()=>({enabled:Y.stack.length===0&&!c(),bindings:pY({"help.open":()=>void e(),"task.new":()=>void r(),"settings.open.sidebar":()=>void l(),"tasks.update":()=>void J0(),"tasks.openWorktree":()=>{let y=Z();if(y)V0(y)},"tasks.renameBranch":()=>{let y=Z();if(y)j0(y)},"tasks.cycleEngine":()=>{let y=Z();if(y)F0(y)},"tasks.toggleKeys":()=>E(!C()),"tasks.focusEngine":()=>void t().catch((y)=>console.error("[kobe tasks] focus engine pane failed:",y))})}));async function Z0(y){let L0=M1(y),Q0=J.tasks().find((v0)=>v0.id===y),M0=await AJ();if(M0&&M0!==L0)await yZ(M0);if(await H1(L0)){let v0=await bG(L0,"@kobe_worktree")||Q0?.worktreePath||"";if(e9(v0)){let n=Q0?.repo?HY(Q0.repo,v0,{kind:"repo-init"}):void 0;await PY({name:L0,cwd:v0,command:yJ(Q0?.vendor),taskId:y,vendor:Q0?.vendor,repo:Q0?.repo,launchInit:n})}await AX(L0),await jf(L0),await P0(["switch-client","-t",`=${L0}`]),J.orch?.setActiveTask(y).catch(()=>{});return}let X1=Q0?.worktreePath;if(!e9(X1)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonOpen"));return}try{X1=await J.orch.ensureWorktree(y)}catch(v0){console.error("[kobe tasks] task.ensureWorktree failed:",v0),f(FM(v0));return}await J.reload()}if(!e9(X1))return;let z1=Q0?.repo?HY(Q0.repo,X1,{kind:"repo-init"}):void 0;if(!await PY({name:L0,cwd:X1,command:yJ(Q0?.vendor),taskId:y,vendor:Q0?.vendor,repo:Q0?.repo,launchInit:z1})){console.error(`[kobe tasks] failed to start session ${L0}`),f(F("tasks.toast.sessionStartFailed"));return}await AX(L0),await jf(L0),await P0(["switch-client","-t",`=${L0}`]),J.orch?.setActiveTask(y).catch(()=>{})}let A0=K0(()=>{let y=u();if(y?.hasUpdate)return{label:`v${y.latest} \u2191`,emphasize:!0};return{label:`v${o0}`,emphasize:!1}}),h0=()=>J.orch?.daemonStaleSignal()()??!1,g0=()=>J.orch?.daemonVersionSignal()()??null,N0=K0(()=>J.tasks().find((y)=>y.id===Z())?.kind==="main");return(()=>{var y=W("box"),L0=W("box");return D(y,L0),q(y,"flexDirection","column"),q(y,"flexGrow",1),U(y,b(n3,{stale:h0,daemonVersion:g0,clientVersion:o0,width:()=>M().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(DM,{get tasks(){return J.tasks},selectedId:Z,get onSelect(){return J.initialTaskId?()=>{}:Q},onActivate:(Q0)=>void Z0(Q0),activateOnClick:!0,headerStatus:A0,onHeaderStatusClick:()=>void J0(),onAddTask:()=>void r(),zenActive:I,onZenClick:()=>{(async()=>{let Q0=await AJ();if(Q0)await RX(Q0,"zen-toggle")})()},width:()=>M().width,get engineState(){return x0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return x0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Q0=J.orch;if(!Q0||Q0.connectionStateSignal()()!=="online")return null;return Q0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Q0)=>void p(Q0),onDeleteRequest:(Q0)=>void q0(Q0),onArchiveRequest:(Q0)=>void T(Q0),onLocalMergeRequest:(Q0)=>{let M0=J.tasks().find((T0)=>T0.id===Q0);if(!M0||M0.kind==="main")return;Q(Q0),V((T0)=>!T0)},moveMode:B,onMoveRequest:(Q0,M0)=>void h(Q0,M0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:A,onProjectFilterChange:g,onSortModeToggle:()=>{let Q0=j()==="default"?"recent":"default";K(Q0),G.set("activeSortMode",Q0)},focused:()=>Y.stack.length===0,onSearchActiveChange:s})),U(y,b(px,{moveMode:B,selectedIsMain:N0,collapsed:C,onToggleCollapsed:()=>E(!C())}),null),x((Q0)=>q(y,"backgroundColor",z.background,Q0)),y})()}function OM(J){let z=C9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function AM(J){let z=J.map(OM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function px(J){let{theme:z}=i0(),[Y,G]=a("Prefix");JJ(()=>{a0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=NH(L);if(A)G(A)})});let X=()=>{g9();let K=xq(),L=K.binds,A=[],O=K.focus.filter((u)=>u!==null).map((u)=>u.chord);if(O.length===4&&O.every((u,_)=>u===yY[_]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let g=(u,_)=>{let I=_.map((N)=>L[N]?.chord).filter((N)=>!!N);if(I.length>0)A.push({k:`prefix ${I.join("/")}`,label:u})};if(L["tmux.detach"])A.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"]),A},Z=()=>{g9();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=AM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...X()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],f=()=>J.moveMode?.()?Q():Z(),H=18,B=()=>Math.min(H,Math.max(...f().map((K)=>K.label.length))),V=(K)=>K.length<=B()?K:`${K.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=x0(()=>!!j());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(X0,{get when(){return!j()},get children(){return b(Q1,{get each(){return f()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var g=W("box"),u=W("box"),_=W("text"),I=E0("["),N=E0("]"),M=W("box"),S=W("text");return D(g,u),D(g,M),q(g,"flexDirection","row"),q(g,"gap",1),q(g,"justifyContent","space-between"),D(u,_),q(u,"width",10),q(u,"flexShrink",0),D(_,I),D(_,N),q(_,"wrapMode","none"),U(_,()=>sX(A.k,Y()),N),D(M,S),q(M,"flexShrink",0),q(S,"wrapMode","none"),U(S,()=>V(A.label)),x((r)=>{var l=O()?z.textMuted:z.accent,e=O()?IH.DIM:IH.BOLD,J0=B(),T=z.textMuted,q0=O()?IH.DIM:void 0;return l!==r.e&&(r.e=q(_,"fg",l,r.e)),e!==r.t&&(r.t=q(_,"attributes",e,r.t)),J0!==r.a&&(r.a=q(M,"width",J0,r.a)),T!==r.o&&(r.o=q(S,"fg",T,r.o)),q0!==r.i&&(r.i=q(S,"attributes",q0,r.i)),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()}})}}),null),x((A)=>{var O=z.textMuted,g=IH.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),g!==A.t&&(A.t=q(L,"attributes",g,A.t)),A},{e:void 0,t:void 0}),K})()}async function rx(J={}){await RJ({logContext:"tasks",providers:{notifications:!0},setup:()=>ox(J)})}async function ox(J){let z=new PX({homeDir:bz()});await z.load();let[Y,G]=a(z.list()),X=null;try{let B=await zz();if(B){let V=new UJ(B);await V.init(),X=V}else sz("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){s1("tasks-boot",B),sz("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let Z=()=>X&&X.connectionStateSignal()()==="online"?X.tasksSignal()():Y(),Q=async()=>{await z.load(),G(z.list())},f="",H=setInterval(()=>{if(X&&X.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await $x(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===f)return;f=B,await Q()})().catch(()=>{})},ax);return{root:()=>[b(_x,{tasks:Z,get initialTaskId(){return J.initialTaskId},orch:X,reload:Q}),b(c3,{})],onDestroy:()=>{if(H)clearInterval(H);X?.dispose()}}}var ax=1500;var gM=k(()=>{P();P();P();P();P();P();P();P();P1();Bz();ZJ();P();ZG();OJ();W1();aY();vJ();r1();Vz();aZ();SX();O1();uq();l1();FJ();w9();pX();P9();l9();d3();i3();rX();VQ();MH();v1();E9();oY();xJ();s3();JM();LM();gX();YJ();lJ();h9()});var CM={};j1(CM,{startSettingsHost:()=>tx});function sx(J){let z=oX(),Y=c1(),{theme:G}=i0(),X=!1,Z=!1;async function Q(){if(Z)return;Z=!0;try{if(z.flush()&&X){let H=await AJ();if(H)await OX(H)}}catch(f){console.error("[kobe settings] failed to refresh workspace panes:",f)}finally{process.exit(0)}}return D1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var f=W("scrollbox");return q(f,"flexGrow",1),q(f,"paddingTop",1),q(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(f,b(dG,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:Q})),x((H)=>q(f,"backgroundColor",G.background,H)),f})()}async function tx(){await RJ({setup:async()=>{let J=null;try{let z=await zz();if(z){let Y=new UJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(sx,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var NM=k(()=>{P();P();P();P();P();P();OJ();aY();l9();VQ();v1();oY();xJ();YJ();lJ()});var kM={};j1(kM,{startHelpHost:()=>Ju});function ex(){let J=c1(),{theme:z}=i0();function Y(){process.exit(0)}return D1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var G=W("box");return q(G,"flexGrow",1),q(G,"paddingTop",1),U(G,b(tX,{onClose:Y})),x((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Ju(){await RJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(ex,{})})})}var bM=k(()=>{P();P();P();P();P();w9();v1();oY();xJ();lJ()});var IM={};j1(IM,{startUpdateHost:()=>qu});import{spawn as zu,spawnSync as Yu}from"child_process";import{TextAttributes as JZ}from"@opentui/core";function Gu(J){if(!J)return!1;let z=process.platform,[Y,G]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return zu(Y,G,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Xu(J){return J.replace(/\r\n/g,`
|
|
260
|
+
`)}var II;var JD=k(()=>{rf();II=["install","status","command"]});var cj={};j1(cj,{runHookSubcommand:()=>vI,readTextWithTimeout:()=>XD,parseWorktreeAddPath:()=>QD,ensureGlobalKobeHooks:()=>dI});import{homedir as TI}from"os";import{join as YD,resolve as GD}from"path";async function XD(J,z=xI){let Y;try{return await Promise.race([J(),new Promise((G)=>{Y=setTimeout(()=>G(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function ZD(){try{let J=await XD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function uI(J,z){for(let Y=0;Y<J.length;Y++){if(J[Y]===z)return J[Y+1];if(J[Y].startsWith(`${z}=`))return J[Y].slice(z.length+1)}return}function wI(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function PI(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,G;while((G=Y.exec(J))!==null)z.push(G[1]??G[2]??G[3]??"");return z}function QD(J){let z=PI(J),Y=new Set(["-b","-B","--reason"]);for(let G=0;G+1<z.length;G++){if(z[G]!=="worktree"||z[G+1]!=="add")continue;let X=G+2;while(X<z.length){let Z=z[X];if(Z==="&&"||Z==="||"||Z===";"||Z==="|"||Z===">"||Z===">>")break;if(Z.startsWith("-")){X+=Y.has(Z)?2:1;continue}return Z}}return}async function hI(){let J=await ZD(),z=wI(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let G=QD(Y);if(!G)return;let X=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),Z=GD(X,G),Q=await zz();if(!Q)return;try{await Q.request("worktree.reconcile",{cwd:X,worktreePath:Z})}finally{Q.close()}}async function vI(J){let[z,...Y]=J;if(z==="setup"){await nI(Y);return}if(z===EI){try{await hI()}catch{}return}try{if(!z||!Zq(z))return;let G=await ZD(),X=uI(Y,"--task-id"),Z=typeof G.cwd==="string"&&G.cwd?G.cwd:process.cwd(),Q;for(let H of qD())if(Q=H.activityDetailFromPayload(z,G),Q)break;let f=await zz();if(!f)return;try{await f.request("engine.reportEvent",{...X?{taskId:X}:{cwd:Z},kind:z,...Q?{detail:Q}:{}})}finally{f.close()}}catch{}}function mI(){return i1.map((J)=>N8(J)).filter((J)=>J.supportsWorktreeSync())}function qD(){return i1.map((J)=>N8(J)).filter((J)=>J.supportsHooks())}function fD(){return YD(TI(),".claude","settings.json")}function cI(J){if(!J||J==="off")return;if(J==="global")return fD();if(J.startsWith("repo:"))return YD(GD(J.slice(5)),".claude","settings.json");return J}async function dI(){try{for(let J of qD()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await HD()}catch{}}async function HD(){let J=mI();if(J.length===0)return;let z=C1(zD),Y=new Set([fD()]),G=cI(z);if(G)Y.add(G);for(let X of J)for(let Z of Y)await X.removeWorktreeSyncHook(Z);if(z!=="off")o1(zD,"off")}async function nI(J){await HD(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
|
|
261
|
+
`))}var xI=500,EI="worktree-created",zD="externalWorktreeSync";var dj=k(()=>{OJ();k8();Qq();O1();l1()});function jD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=iI.get(J))!==null&&z!==void 0?z:J}var nj,iI,BD;var WD=k(()=>{iI=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]]),BD=(nj=String.fromCodePoint)!==null&&nj!==void 0?nj:(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 VD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,G=new Uint16Array(Y/2);for(let X=0,Z=0;X<Y;X+=2){let Q=z.charCodeAt(X),f=z.charCodeAt(X+1);G[Z++]=Q|f<<8}return G}var KD;var UD=k(()=>{KD=VD("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 KJ;var DD=k(()=>{(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"})(KJ||(KJ={}))});function ij(J){return J>=h1.ZERO&&J<=h1.NINE}function lI(J){return J>=h1.UPPER_A&&J<=h1.UPPER_F||J>=h1.LOWER_A&&J<=h1.LOWER_F}function $I(J){return J>=h1.UPPER_A&&J<=h1.UPPER_Z||J>=h1.LOWER_A&&J<=h1.LOWER_Z||ij(J)}function aI(J){return J===h1.EQUALS||$I(J)}class lj{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=GJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=VY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=GJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case GJ.EntityStart:{if(J.charCodeAt(z)===h1.NUM)return this.state=GJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=GJ.NamedEntity,this.stateNamedEntity(J,z)}case GJ.NumericStart:return this.stateNumericStart(J,z);case GJ.NumericDecimal:return this.stateNumericDecimal(J,z);case GJ.NumericHex:return this.stateNumericHex(J,z);case GJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|LD)===h1.LOWER_X)return this.state=GJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=GJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(ij(Y)||lI(Y)){let G=Y<=h1.NINE?Y-h1.ZERO:(Y|LD)-h1.LOWER_A+10;this.result=this.result*16+G,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(ij(Y))this.result=this.result*10+(Y-h1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===h1.SEMI)this.consumed+=1;else if(this.decodeMode===VY.Strict)return 0;if(this.emitCodePoint(jD(this.result),this.consumed),this.errors){if(J!==h1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(G&KJ.FLAG13)!==0){let Q=(G&KJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let f=G&KJ.JUMP_TABLE;if(J.charCodeAt(z)!==f)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let f=this.runConsumed-1,H=Y[this.treeIndex+1+(f>>1)],B=f%2===0?H&255:H>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let Z=J.charCodeAt(z);if(Z===h1.SEMI&&X!==0&&(G&KJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=pI(Y,G,this.treeIndex+Math.max(1,X),Z),this.treeIndex<0)return this.result===0||this.decodeMode===VY.Attribute&&(X===0||aI(Z))?0:this.emitNotTerminatedNamedEntity();if(G=Y[this.treeIndex],X=(G&KJ.VALUE_LENGTH)>>14,X!==0){if(Z===h1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==VY.Strict&&(G&KJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,G=(Y[z]&KJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,G,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:G}=this;if(this.emitCodePoint(z===1?G[J]&~(KJ.VALUE_LENGTH|KJ.FLAG13):G[J+1],Y),z===3)this.emitCodePoint(G[J+2],Y);return Y}end(){var J;switch(this.state){case GJ.NamedEntity:return this.result!==0&&(this.decodeMode!==VY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case GJ.NumericDecimal:return this.emitNumericEntity(0,2);case GJ.NumericHex:return this.emitNumericEntity(0,3);case GJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case GJ.EntityStart:return 0}}}function _I(J){let z="",Y=new lj(J,(G)=>z+=BD(G));return function(X,Z){let Q=0,f=0;while((f=X.indexOf("&",f))>=0){z+=X.slice(Q,f),Y.startEntity(Z);let B=Y.write(X,f+1);if(B<0){Q=f+Y.end();break}Q=f+B,f=B===0?Q+1:Q}let H=z+X.slice(Q);return z="",H}}function pI(J,z,Y,G){let X=(z&KJ.BRANCH_LENGTH)>>7,Z=z&KJ.JUMP_TABLE;if(X===0)return Z!==0&&G===Z?Y:-1;if(Z){let B=G-Z;return B<0||B>=X?-1:J[Y+B]-1}let Q=X+1>>1,f=0,H=X-1;while(f<=H){let B=f+H>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<G)f=B+1;else if(K>G)H=B-1;else return J[Y+Q+B]}return-1}function EG(J,z=VY.Legacy){return rI(J,z)}var h1,LD=32,GJ,VY,rI;var MD=k(()=>{WD();UD();DD();(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"})(h1||(h1={}));(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"})(GJ||(GJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(VY||(VY={}));rI=_I(KD)});var FD,OD;var RD=k(()=>{MD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(FD||(FD={}));(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"})(OD||(OD={}))});import{CliRenderer as sI,createCliRenderer as tI,engine as eI}from"@opentui/core";import{createTestRenderer as z$}from"@opentui/core/testing";import{ASCIIFontRenderable as Jy,BoxRenderable as zy,CodeRenderable as Yy,DiffRenderable as Gy,InputRenderable as Xy,LineNumberRenderable as Zy,MarkdownRenderable as Qy,ScrollBoxRenderable as qy,SelectRenderable as fy,TabSelectRenderable as Hy,TextareaRenderable as By,TextAttributes as $j,TextNodeRenderable as jy,TextRenderable as Wy}from"@opentui/core";import{engine as X$,Timeline as Z$}from"@opentui/core";import{BaseRenderable as SD,createTextAttributes as Ky,InputRenderable as aj,InputRenderableEvents as tZ,isTextNodeRenderable as rj,parseColor as gD,Renderable as Uy,RootTextNodeRenderable as Dy,ScrollBoxRenderable as Ly,SelectRenderable as CD,SelectRenderableEvents as _j,TabSelectRenderable as ND,TabSelectRenderableEvents as pj,TextNodeRenderable as My,TextRenderable as ID}from"@opentui/core";import{BaseRenderable as by,isTextNodeRenderable as Sy,TextNodeRenderable as Iy,TextRenderable as yy,Yoga as bD}from"@opentui/core";import{BoxRenderable as U$,RootRenderable as D$}from"@opentui/core";import{TimeToFirstDrawRenderable as Ey}from"@opentui/core";import{createSlotRegistry as F$}from"@opentui/core";function Oy({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:G,replaceText:X,insertNode:Z,removeNode:Q,setProperty:f,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(S,N,M,I){if(M!==void 0&&!I)I=[];if(typeof N!=="function")return K(S,N,I,M);Iz((r)=>K(S,N(),r,M),I)}function K(S,N,M,I,r){while(typeof M==="function")M=M();if(N===M)return M;let l=typeof N,e=I!==void 0;if(l==="string"||l==="number"){if(l==="number")N=N.toString();if(e){let J0=M[0];if(J0&&G(J0))X(J0,N);else J0=z(N);M=O(S,M,I,J0)}else if(M!==""&&typeof M==="string")X(B(S),M=N);else O(S,M,I,z(N)),M=N}else if(N==null||l==="boolean")M=O(S,M,I);else if(l==="function")return Iz(()=>{let J0=N();while(typeof J0==="function")J0=J0();M=K(S,J0,M,I)}),()=>M;else if(Array.isArray(N)){let J0=[];if(L(J0,N,r))return Iz(()=>M=K(S,J0,M,I,!0)),()=>M;if(J0.length===0){let T=O(S,M,I);if(e)return M=T}else if(Array.isArray(M))if(M.length===0)g(S,J0,I);else A(S,M,J0);else if(M==null||M==="")g(S,J0);else A(S,e&&M||[B(S)],J0);M=J0}else{if(Array.isArray(M)){if(e)return M=O(S,M,I,N);O(S,M,null,N)}else if(M==null||M===""||!B(S))Z(S,N);else u(S,N,B(S));M=N}return M}function L(S,N,M){let I=!1;for(let r=0,l=N.length;r<l;r++){let e=N[r],J0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))I=L(S,e)||I;else if((J0=typeof e)==="string"||J0==="number")S.push(z(e));else if(J0==="function")if(M){while(typeof e==="function")e=e();I=L(S,Array.isArray(e)?e:[e])||I}else S.push(e),I=!0;else S.push(e)}return I}function A(S,N,M){let I=M.length,r=N.length,l=I,e=0,J0=0,T=V(N[r-1]),q0=null;while(e<r||J0<l){if(N[e]===M[J0]){e++,J0++;continue}while(N[r-1]===M[l-1])r--,l--;if(r===e){let p=l<I?J0?V(M[J0-1]):M[l-J0]:T;while(J0<l)Z(S,M[J0++],p)}else if(l===J0)while(e<r){if(!q0||!q0.has(N[e]))Q(S,N[e]);e++}else if(N[e]===M[l-1]&&M[J0]===N[r-1]){let p=V(N[--r]);Z(S,M[J0++],V(N[e++])),Z(S,M[--l],p),N[r]=M[l]}else{if(!q0){q0=new Map;let j0=J0;while(j0<l)q0.set(M[j0],j0++)}let p=q0.get(N[e]);if(p!=null)if(J0<p&&p<l){let j0=e,F0=1,V0;while(++j0<r&&j0<l){if((V0=q0.get(N[j0]))==null||V0!==p+F0)break;F0++}if(F0>p-J0){let t=N[e];while(J0<p)Z(S,M[J0++],t)}else u(S,M[J0++],N[e++])}else e++;else Q(S,N[e++])}}}function O(S,N,M,I){if(M===void 0){let l;while(l=B(S))Q(S,l);return I&&Z(S,I),I??""}let r=I||Y();if(N.length){let l=!1;for(let e=N.length-1;e>=0;e--){let J0=N[e];if(r!==J0){let T=H(J0)===S;if(!l&&!e)T?u(S,r,J0):Z(S,r,M);else T&&Q(S,J0)}else l=!0}}else Z(S,r,M);return[r]}function g(S,N,M){for(let I=0,r=N.length;I<r;I++)Z(S,N[I],M)}function u(S,N,M){Z(S,N,M),Q(S,M)}function _(S,N,M={},I){if(N||(N={}),!I)Iz(()=>M.children=K(S,N.children,M.children));return Iz(()=>N.ref&&N.ref(S)),Iz(()=>{for(let r in N){if(r==="children"||r==="ref")continue;let l=N[r];if(l===M[r])continue;f(S,r,l,M[r]),M[r]=l}}),M}return{render(S,N){let M;return KG((I)=>{M=I,j(N,S())}),M},insert:j,spread(S,N,M){if(typeof N==="function")Iz((I)=>_(S,N(),I,M));else _(S,N,void 0,M)},createElement:J,createTextNode:z,insertNode:Z,setProp(S,N,M,I){return f(S,N,M,I),M},mergeProps:Fq,effect:Iz,memo:Fy,createComponent:AV,use(S,N,M){return p1(()=>S(N,M))}}}function Ay(J){let z=Oy(J);return z.mergeProps=Fq,z}function J9(J){if(!ef.has(J))ef.set(J,0);let z=ef.get(J)+1;return ef.set(J,z),`${J}-${z}`}function Ry(J,z,Y){if(XJ("Inserting node:",t1(z),"into parent:",t1(J),"with anchor:",t1(Y),z instanceof nX),z instanceof eZ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof eZ)Y=Y.getSlotChild(J);if(rj(z)){if(!(J instanceof ID)&&!rj(J))throw Error(`Orphan text error: "${z.toChunks().map((Z)=>Z.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof SD))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let G=oj(J),X=G.findIndex((Z)=>Z.id===Y.id);if(X===-1)XJ("[INSERT]","Could not find anchor",t1(J),t1(Y),"[children]",...G.map((Z)=>Z.id));J.add(z,X)}function gy(J,z){if(XJ("Removing node:",t1(z),"from parent:",t1(J)),z instanceof eZ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof SD&&!z.parent){z.destroyRecursively();return}})}function Cy(J){XJ("Creating text node:",J);let z=J9("text-node");if(typeof J==="number")J=J.toString();return nX.fromString(EG(J),{id:z})}function Ny(){let J=J9("slot-node");return XJ("Creating slot node",J),new eZ(J)}function kD(J){XJ("Getting parent of node:",t1(J));let z=J.parent??void 0;if(z instanceof Dy)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof Ly&&Y.content===z)z=Y;return z}function xy(J){Object.assign(PD,J)}function uy(){return PD}var ej,HJ=()=>{let J=PJ(ej);if(!J)throw Error("No renderer found");return J},Vy=(J)=>{let z=HJ();JJ(()=>{z.on("resize",J)}),k1(()=>{z.off("resize",J)})},vz=()=>{let J=HJ(),[z,Y]=a({width:J.width,height:J.height});return Vy((X,Z)=>{Y({width:X,height:Z})}),z},Fy=(J)=>K0(()=>J()),ef,XJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nX,t1=(J)=>{if(!J)return;return J.id},oj=(J)=>{let z;if(J instanceof ID)z=J.getTextChildren();else z=J.getChildren();return z},ky,x,x0,b,W,E0,D,U,W$,q,yD,mz,z9,TD,xD,eZ,JQ,JH,sj,tj,uD,ED,wD,Ty,PD,wy=(J,z)=>{let Y,G=!1,X=!1,Z=!0,Q=!1,f=J.destroy.bind(J),H=()=>{if(X)return;if(!Y){G=!0;return}X=!0,Y()};J.once("destroy",H),J.destroy=()=>{if(Z){Q=!0;return}f()};try{Y=ky(()=>b(ej.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{Z=!1,J.destroy=f}if(G)H();if(Q)f()},hD=async(J,z={})=>{let Y=z instanceof sI?z:await tI({...z,onDestroy:()=>{z.onDestroy?.()}});eI.attach(Y),wy(Y,J)};var P=k(()=>{W1();RD();W1();W1();W1();ej=yz();ef=new Map;nX=class nX extends My{static fromString(J,z={}){let Y=new nX(z);return Y.add(J),Y}};({render:ky,effect:x,memo:x0,createComponent:b,createElement:W,createTextNode:E0,insertNode:D,insert:U,spread:W$,setProp:q,mergeProps:yD,use:mz}=Ay({createElement(J){XJ("Creating element:",J);let z=J9(J),Y=PJ(ej);if(!Y)throw Error("No renderer found");let G=uy();if(!G[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new G[J](Y,{id:z});return XJ("Element created with id:",z),X},createTextNode:Cy,createSlotNode:Ny,replaceText(J,z){if(XJ("Replacing text:",z,"in node:",t1(J)),!(J instanceof nX))return;J.replace(EG(z),0)},setProperty(J,z,Y,G){if(z.startsWith("on:")){let X=z.slice(3);if(Y)J.on(X,Y);if(G)J.off(X,G);return}if(rj(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=Ky(Y),J.fg=Y.fg?gD(Y.fg):J.fg,J.bg=Y.bg?gD(Y.bg):J.bg;return}return}switch(z){case"id":XJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof Uy))return;if(Y)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof CD)X=_j.SELECTION_CHANGED;else if(J instanceof ND)X=pj.SELECTION_CHANGED;else if(J instanceof aj)X=tZ.CHANGE;if(!X)break;if(Y)J.on(X,Y);if(G)J.off(X,G);break;case"onInput":if(J instanceof aj){if(Y)J.on(tZ.INPUT,Y);if(G)J.off(tZ.INPUT,G)}break;case"onSubmit":if(J instanceof aj){if(Y)J.on(tZ.ENTER,Y);if(G)J.off(tZ.ENTER,G)}else J[z]=Y;break;case"onSelect":if(J instanceof CD){if(Y)J.on(_j.ITEM_SELECTED,Y);if(G)J.off(_j.ITEM_SELECTED,G)}else if(J instanceof ND){if(Y)J.on(pj.ITEM_SELECTED,Y);if(G)J.off(pj.ITEM_SELECTED,G)}break;case"style":for(let Z in Y){let Q=Y[Z];if(G!==void 0&&Q===G[Z])continue;J[Z]=Q}break;case"text":case"content":{let Z=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=EG(Z);break}default:J[z]=Y}},isTextNode(J){return J instanceof nX},insertNode:Ry,removeNode:gy,getParentNode:kD,getFirstChild(J){XJ("Getting first child of node:",t1(J));let z=oj(J)[0];if(!z){XJ("No first child found for node:",t1(J));return}return XJ("First child found:",t1(z),"for node:",t1(J)),z},getNextSibling(J){XJ("Getting next sibling of node:",t1(J));let z=kD(J);if(!z){XJ("No parent found for node:",t1(J));return}let Y=oj(z),G=Y.indexOf(J);if(G===-1||G===Y.length-1){XJ("No next sibling found for node:",t1(J));return}let X=Y[G+1];if(!X){XJ("Next sibling is null for node:",t1(J));return}return XJ("Next sibling found:",t1(X),"for node:",t1(J)),X}}));z9=class z9 extends by{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}};TD=class TD extends Iy{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()}};xD=class xD extends z9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=bD.default.Node.create(),this.yogaNode.setDisplay(bD.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};eZ=class eZ extends z9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Sy(J)||J instanceof yy){if(!this.textNode)this.textNode=new TD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new xD(`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()}};JQ=class JQ extends jy{_ctx;constructor(J,z){super(z);this._ctx=J}};JH=class JH extends JQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|$j.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|$j.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|$j.UNDERLINE}};sj=class sj extends JH{constructor(J){super(J,"b")}};tj=class tj extends JH{constructor(J){super(J,"i")}};uD=class uD extends JH{constructor(J){super(J,"u")}};ED=class ED extends JQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
262
|
+
`)}};wD=class wD extends JQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};Ty={box:zy,text:Wy,input:Xy,select:fy,textarea:By,ascii_font:Jy,tab_select:Hy,scrollbox:qy,code:Yy,diff:Gy,line_number:Zy,markdown:Qy,span:JQ,strong:sj,b:sj,em:tj,i:tj,u:uD,br:ED,a:wD},PD={...Ty};xy({time_to_first_draw:Ey})});function KY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function Py(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,X]of Object.entries(z)){let Z=X;if(typeof Z?.added!=="number"||typeof Z.deleted!=="number")return null;Y.set(G,{added:Z.added,deleted:Z.deleted})}return Y}function hy(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let X=z.get(Y);if(!X||!hz(G,X))return!1}return!0}function vy(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,X]of Object.entries(z)){let Z=X;if(typeof Z?.mtimeMs!=="number"||typeof Z.completionAt!=="number")return null;if(Z.completionId!==null&&typeof Z.completionId!=="string")return null;Y.set(G,{mtimeMs:Z.mtimeMs,completionId:Z.completionId,completionAt:Z.completionAt})}return Y}function my(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let X=z.get(Y);if(!X||X.mtimeMs!==G.mtimeMs||X.completionId!==G.completionId||X.completionAt!==G.completionAt)return!1}return!0}class UJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,G]=a([]),[X,Z]=a(null),[Q,f]=a(null),[H,B]=a(null),[V,j]=a(new Map),[K,L]=a(new Map),[A,O]=a(null),[g,u]=a(null),[_,S]=a(null),[N,M]=a(null),[I,r]=a("online");this.tasksAcc=Y,this.setTasks=(l)=>G(()=>l),this.activeTaskAcc=X,this.setActiveTaskSig=(l)=>Z(()=>l),this.updateAcc=Q,this.setUpdateSig=(l)=>f(()=>l),this.daemonVersionAcc=H,this.setDaemonVersionSig=(l)=>B(()=>l),this.engineStateAcc=V,this.setEngineStateSig=(l)=>j(()=>l),this.taskJobsAcc=K,this.setTaskJobsSig=(l)=>L(()=>l),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(l)=>O(()=>l),this.transcriptActivityAcc=g,this.setTranscriptActivitySig=(l)=>u(()=>l),this.uiPrefsAcc=_,this.setUiPrefsSig=(l)=>S(()=>l),this.keybindingsRevAcc=N,this.setKeybindingsRevSig=(l)=>M(()=>l),this.connectionStateAcc=I,this.setConnectionState=(l)=>r(()=>l),this.ensureReachable=z.ensureReachable??wX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(l)=>this.handleEvent(l.name,l.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")sz("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),sz("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)s1("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:_J,minProtocolVersion:AY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:_J,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!EQ({localVersion:_J,localMin:AY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${_J} (min v${AY}). 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(zQ));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"),sz("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()=>nW(this.daemonVersionAcc()??void 0,o0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return KG((Y)=>{return s0(()=>{let G=this.tasksAcc();if(z){z=!1;return}try{J(G)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,G=await this.client.request("task.create",{...Y,effort:z});return zQ(G.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return zQ(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 zQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(zQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else s1("orch",`dropped task.snapshot event: tasks is not an array (got ${KY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){s1("orch",`dropped engine-state event: taskId/state must be strings (taskId=${KY(Y?.taskId)}, state=${KY(Y?.state)})`);return}let G=new Map(this.engineStateAcc());if(Y.state==="idle")G.delete(Y.taskId);else G.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(G);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){s1("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${KY(Y?.taskId)}, kind=${KY(Y?.kind)})`);return}let G=this.taskJobsAcc();if(Y.phase==="running"){let X=new Map(G);X.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(X);return}if((Y.phase==="done"||Y.phase==="error")&&G.has(Y.taskId)){let X=new Map(G);X.delete(Y.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Y=Py(z);if(!Y){s1("orch",`dropped worktree.changes event: malformed changes payload (${KY(z)})`);return}let G=this.worktreeChangesAcc();if(G&&hy(G,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=vy(z);if(!Y){s1("orch",`dropped transcript.activity event: malformed activity payload (${KY(z)})`);return}let G=this.transcriptActivityAcc();if(G&&my(G,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=z;if(typeof Y?.theme!=="string"){s1("orch",`dropped ui-prefs event: theme must be a string (got ${KY(Y?.theme)})`);return}this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){s1("orch",`dropped keybindings event: rev must be a number (got ${KY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),G=null;for(let X of z.keys()){if(Y.has(X))continue;if(!G)G=new Map(z);G.delete(X)}if(G)this.setEngineStateSig(G)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),G=null;for(let X of z.keys()){if(Y.has(X))continue;if(!G)G=new Map(z);G.delete(X)}if(G)this.setTaskJobsSig(G)}}function zQ(J){return{id:KZ(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 aY=k(()=>{ZG();OJ();GG();W1();xX();sJ();FJ()});function cD(J){let z=J[jz];if(!z){if(Object.defineProperty(J,jz,{value:z=new Proxy(J,ny)}),!Array.isArray(J)){let Y=Object.keys(J),G=Object.getOwnPropertyDescriptors(J),X=Object.getPrototypeOf(J),Z=X!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&X!==Object.prototype;if(Z){let Q=Object.getOwnPropertyDescriptors(X);Y.push(...Object.keys(Q)),Object.assign(G,Q)}for(let Q=0,f=Y.length;Q<f;Q++){let H=Y[Q];if(Z&&H==="constructor")continue;if(G[H].get)Object.defineProperty(J,H,{configurable:!0,enumerable:G[H].enumerable,get:G[H].get.bind(z)})}}}return z}function zH(J){let z;return J!=null&&typeof J==="object"&&(J[jz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function GQ(J,z=new Set){let Y,G,X,Z;if(Y=J!=null&&J[Y9])return Y;if(!zH(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,f=J.length;Q<f;Q++)if(X=J[Q],(G=GQ(X,z))!==X)J[Q]=G}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),f=Object.getOwnPropertyDescriptors(J);for(let H=0,B=Q.length;H<B;H++){if(Z=Q[H],f[Z].get)continue;if(X=J[Z],(G=GQ(X,z))!==X)J[Z]=G}}return J}function YH(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function XQ(J,z,Y){if(J[z])return J[z];let[G,X]=a(Y,{equals:!1,internal:!0});return G.$=X,J[z]=G}function cy(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===jz||z===iX)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[jz][z],Y}function dD(J){Mq()&&XQ(YH(J,iX),mD)()}function dy(J){return dD(J),Reflect.ownKeys(J)}function GH(J,z,Y,G=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!G&&J[z]===Y)return;let X=J[z],Z=J.length;if(vD.onStoreNodeUpdate&&vD.onStoreNodeUpdate(J,z,Y,X),Y===void 0){if(delete J[z],J[UY]&&J[UY][z]&&X!==void 0)J[UY][z].$()}else if(J[z]=Y,J[UY]&&J[UY][z]&&X===void 0)J[UY][z].$();let Q=YH(J,iX),f;if(f=XQ(Q,z,X))f.$(()=>Y);if(Array.isArray(J)&&J.length!==Z){for(let H=J.length;H<Z;H++)(f=Q[H])&&f.$();(f=XQ(Q,"length",Z))&&f.$(J.length)}(f=Q[mD])&&f.$()}function nD(J,z){let Y=Object.keys(z);for(let G=0;G<Y.length;G+=1){let X=Y[G];if(iD(X))continue;GH(J,X,z[X])}}function iD(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function iy(J,z){if(typeof z==="function")z=z(J);if(z=GQ(z),Array.isArray(z)){if(J===z)return;let Y=0,G=z.length;for(;Y<G;Y++){let X=z[Y];if(J[Y]!==X)GH(J,Y,X)}GH(J,"length",G)}else nD(J,z)}function YQ(J,z,Y=[]){let G,X=J;if(z.length>1){G=z.shift();let Q=typeof G,f=Array.isArray(J);if(Q==="string"&&(G==="__proto__"||z.length>1&&iD(G))){console.warn(`Refusing to traverse unsafe key "${G}" on a store.`);return}if(Array.isArray(G)){for(let H=0;H<G.length;H++)YQ(J,[G[H]].concat(z),Y);return}else if(f&&Q==="function"){for(let H=0;H<J.length;H++)if(G(J[H],H))YQ(J,[H].concat(z),Y);return}else if(f&&Q==="object"){let{from:H=0,to:B=J.length-1,by:V=1}=G;for(let j=H;j<=B;j+=V)YQ(J,[j].concat(z),Y);return}else if(z.length>1){YQ(J[G],z,[G].concat(Y));return}X=J[G],Y=[G].concat(Y)}let Z=z[0];if(typeof Z==="function"){if(Z=Z(X,Y),Z===X)return}if(G===void 0&&Z==null)return;if(Z=GQ(Z),G===void 0||zH(X)&&zH(Z)&&!Array.isArray(Z))nD(X,Z);else GH(J,G,Z)}function cz(...[J,z]){let Y=GQ(J||{}),G=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let X=cD(Y);gV.registerGraph({value:Y,name:z&&z.name});function Z(...Q){Lq(()=>{G&&Q.length===1?iy(Y,Q[0]):YQ(Y,Q)})}return[X,Z]}var Y9,iX,UY,mD,vD,ny,y$;var lX=k(()=>{W1();Y9=Symbol("store-raw"),iX=Symbol("store-node"),UY=Symbol("store-has"),mD=Symbol("store-self"),vD={onStoreNodeUpdate:null};ny={get(J,z,Y){if(z===Y9)return J;if(z===jz)return Y;if(z===Kq)return dD(J),Y;let G=YH(J,iX),X=G[z],Z=X?X():J[z];if(z===iX||z===UY||z==="__proto__")return Z;if(!X){let Q=Object.getOwnPropertyDescriptor(J,z);if(Mq()&&(typeof Z!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))Z=XQ(G,z,Z)()}return zH(Z)?cD(Z):Z},has(J,z){if(z===Y9||z===jz||z===Kq||z===iX||z===UY||z==="__proto__")return!0;return Mq()&&XQ(YH(J,UY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:dy,getOwnPropertyDescriptor:cy};y$=Symbol("store-root")});function XH(J){let z=yz();return{provider:(Y)=>{let G=J.init(Y);return b(X0,{get when(){return G.ready===void 0||G.ready===!0},get children(){return b(z.Provider,{value:G,get children(){return Y.children}})}})},use(){let Y=PJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var G9=k(()=>{P();P();W1()});import{RGBA as wG}from"@opentui/core";function $y(){return Object.keys(BJ.themes)}function ZQ(J){return Boolean(BJ.themes[J])}function Z9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return PG("themes",{...BJ.themes,[J]:z}),!0}function X9(J,z="dark"){let Y=J.defs??{};function G(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return wG.fromInts(0,0,0,0);if(H.startsWith("#"))return wG.fromHex(H);if(B.includes(H))return wG.fromInts(0,0,0);let V=Y[H]??J.theme[H];if(V===void 0)return wG.fromInts(0,0,0);return G(V,[...B,H])}return G(H[z],B)}let X={};for(let[H,B]of Object.entries(J.theme))X[H]=G(B);let Z=X.text??wG.fromHex("#ffffff"),Q=X.background??wG.fromHex("#000000");return{...{primary:X.primary??Z,secondary:X.secondary??Z,accent:X.accent??X.primary??Z,error:X.error??Z,warning:X.warning??Z,success:X.success??Z,info:X.info??Z,text:Z,textMuted:X.textMuted??Z,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??Z,borderActive:X.borderActive??X.border??Z,borderSubtle:X.borderSubtle??X.border??Z,diffAdded:X.diffAdded??X.success??Z,diffRemoved:X.diffRemoved??X.error??Z,diffContext:X.diffContext??X.textMuted??Z,diffHunkHeader:X.diffHunkHeader??X.textMuted??Z,diffAddedBg:X.diffAddedBg??Q,diffRemovedBg:X.diffRemovedBg??Q,selectedListItemText:X.selectedListItemText??Q},...X}}var ly,hG,BJ,PG,i0,lD;var v1=k(()=>{P();W1();lX();G9();wq();Pq();hq();vq();mq();cq();dq();ly={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX},hG=["primary","success","info"],[BJ,PG]=cz({themes:{...ly},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:lD}=XH({name:"Theme",init:(J)=>{if(J.mode)PG("mode",J.mode);if(J.theme&&ZQ(J.theme))PG("active",J.theme);let z=HJ(),Y=K0(()=>{let X=BJ.themes[BJ.active];if(X)return X9(X,BJ.mode);let Z=BJ.themes.claude??BJ.themes.opencode??Object.values(BJ.themes)[0];if(!Z)return X9({theme:{background:"#000000",text:"#ffffff"}},BJ.mode);return X9(Z,BJ.mode)}),G=K0(()=>{let X=Y(),Z=X[BJ.focusAccent]??X.primary,Q={...X,focusAccent:Z};if(!BJ.transparentBackground)return Q;let f=wG.fromInts(0,0,0,0);return{...Q,background:f,backgroundPanel:f}});return s0(()=>{z?.setBackgroundColor(G().background)}),{theme:new Proxy({},{get(X,Z){let Q=G();return Q[Z]??Q.text}}),get selected(){return BJ.active},get transparentBackground(){return BJ.transparentBackground},get focusAccent(){return BJ.focusAccent},mode(){return BJ.mode},set(X){if(!ZQ(X))return!1;return PG("active",X),!0},setMode(X){PG("mode",X)},setTransparentBackground(X){PG("transparentBackground",X)},setFocusAccent(X){PG("focusAccent",X)},all(){return $y()},has(X){return ZQ(X)}}}}))});var $D,aD;var _D=k(()=>{$D={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"}},aD={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 pD,rD;var oD=k(()=>{pD={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"}},rD={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 sD,tD;var eD=k(()=>{sD={title:"kobe \u2014 keybindings",esc:"esc"},tD={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var JL,zL;var YL=k(()=>{JL={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},zL={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var GL,XL;var ZL=k(()=>{GL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},XL={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 QL,qL;var fL=k(()=>{QL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},qL={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 HL,BL;var jL=k(()=>{HL={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},BL={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var WL,VL;var KL=k(()=>{WL={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},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)"}},VL={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var UL,DL;var LL=k(()=>{UL={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}"}},DL={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 ML,FL;var OL=k(()=>{ML={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`"}},FL={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 QQ(J){return typeof J==="string"&&vG.some((z)=>z.id===J)}var ay,_y,vG,$X,aX="en";var _X=k(()=>{_D();oD();eD();YL();ZL();fL();jL();KL();LL();OL();ay={settings:WL,tasks:UL,files:pD,newTask:GL,ops:QL,update:ML,quickTask:HL,help:sD,common:$D,keys:JL},_y={settings:VL,tasks:DL,files:rD,newTask:XL,ops:qL,update:FL,quickTask:BL,help:tD,common:aD,keys:zL},vG=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$X={en:ay,zh:_y}});function qQ(J){if($X[J])py("lang",J)}function q9(){return Q9.lang}function AL(J,z){let Y=J;for(let G of z.split("."))if(Y&&typeof Y==="object"&&G in Y)Y=Y[G];else return;return typeof Y==="string"?Y:void 0}function ry(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,G)=>(G in z)?String(z[G]):Y)}function F(J,z){let Y=Q9.lang,G=AL($X[Y],J)??AL($X.en,J)??J;return ry(G,z)}function f9(J,z){let Y=Q9.lang,G=(X)=>{return X.keys[J]?.[z]};return G($X[Y])??G($X.en)??z}var Q9,py;var ZJ=k(()=>{lX();_X();_X();[Q9,py]=cz({lang:aX})});function oy(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let G=[];if(J.ctrl)G.push("ctrl");if(J.meta)G.push("cmd");if(J.option)G.push("alt");if(J.shift&&Y&&Y.length>1)G.push("shift");if(G.length===0)return z;let X=`${G.join("+")}+`;return z.map((Z)=>X+Z)}function B9(J,z){if(z.defaultPrevented)return!1;if(H9)return!1;let Y=J.slice(),G=oy(z);H9=!0;try{for(let X=Y.length-1;X>=0;X--){let Z=Y[X];if(!Z)continue;let Q=Z.config();if(Q.enabled===!1)continue;let f=Q.bindings.find((H)=>G.includes(H.key));if(f)return f.cmd(z,f.slot),z.preventDefault(),!0}return!1}finally{H9=!1}}var H9=!1;function ty(){if(j9)return;let J=HJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");j9=J.keyInput,RL=(z)=>{B9(ZH,z)},j9.on("keypress",RL)}function D1(J){ty();let z=sy++,Y={config:J,id:z};s0(()=>{J()}),ZH.push(Y),k1(()=>{let G=ZH.findIndex((X)=>X.id===z);if(G>=0)ZH.splice(G,1)})}var sy=1,ZH,j9=null,RL=null;var xJ=k(()=>{P();W1();ZH=[]});function QH(){let J=new Set;function z(G,X){let Z=setTimeout(()=>{J.delete(Z),G()},X);return J.add(Z),Z}function Y(G){if(J.delete(G))clearTimeout(G)}return k1(()=>{for(let G of J)clearTimeout(G);J.clear()}),{set:z,clear:Y}}var W9=k(()=>{W1()});import{RGBA as gL}from"@opentui/core";function zT(J){let z=vz(),Y=i0(),{theme:G}=Y,X=HJ(),Z=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},f=2,H=()=>Math.max(8,z().height-f*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),q(B,"onMouseDown",()=>{Z=!!X?.getSelection()}),q(B,"onMouseUp",()=>{if(Z){Z=!1;return}J.onClose?.()}),q(B,"alignItems","center"),q(B,"justifyContent","center"),q(B,"position","absolute"),q(B,"zIndex",3000),q(B,"left",0),q(B,"top",0),q(V,"onMouseUp",(j)=>{Z=!1,j.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),x((j)=>{var K=z().width,L=z().height,A=Y.transparentBackground?JT:ey,O=Q(),g=z().width-2,u=H(),_=G.backgroundDialog;return K!==j.e&&(j.e=q(B,"width",K,j.e)),L!==j.t&&(j.t=q(B,"height",L,j.t)),A!==j.a&&(j.a=q(B,"backgroundColor",A,j.a)),O!==j.o&&(j.o=q(V,"width",O,j.o)),g!==j.i&&(j.i=q(V,"maxWidth",g,j.i)),u!==j.n&&(j.n=q(V,"maxHeight",u,j.n)),_!==j.s&&(j.s=q(V,"backgroundColor",_,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function YT(){let[J,z]=cz({stack:[],size:"medium"}),Y=HJ(),G=null,X=QH();function Z(){X.set(()=>{if(!G)return;if(G.isDestroyed)return;function Q(H){for(let B of H.getChildren()){if(B===G)return!0;if(Q(B))return!0}return!1}let f=Y?.root;if(!f)return;if(!Q(f))return;G.focus()},1)}return D1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),Z()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),Z()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Lq(()=>{z("size","medium"),z("stack",[])}),Z()},replace(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();for(let H of J.stack)H.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:f}])},push(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();z("stack",[...J.stack,{element:Q,onClose:f}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)Z()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function NL(J){let z=YT();return b(CL.Provider,{value:z,get children(){return[x0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(X0,{get when(){return z.stack.length},get children(){return b(zT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function c1(){let J=PJ(CL);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var ey,JT,CL;var lJ=k(()=>{P();P();P();P();P();P();P();P();W1();lX();v1();xJ();W9();ey=gL.fromInts(0,0,0,128),JT=gL.fromInts(0,0,0,64);CL=yz()});import{spawnSync as V9}from"child_process";import*as bL from"fs";function kL(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 SL(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=bL.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(V9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return kL(z)}catch{return kL(z)}return null}function fQ(J){if(!J)return null;try{let z=V9("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function IL(J){if(!J)return[];try{let z=V9("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(`
|
|
263
|
+
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,G)=>{let X=(f)=>f==="main"?0:f==="master"?1:f==="develop"?2:3,Z=X(Y),Q=X(G);if(Z!==Q)return Z-Q;return Y.localeCompare(G)})}catch{return[]}}var Cz="main";var qH=()=>{};import*as yL from"fs";import*as fH from"os";function DJ(J){if(J==="~")return fH.homedir();if(J.startsWith("~/"))return fH.homedir()+J.slice(1);return J}function K9(J){if(!J)return{base:"",filter:""};let Y=DJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let G=Y.lastIndexOf("/");if(G===-1)return{base:"",filter:Y};return{base:Y.slice(0,G+1),filter:Y.slice(G+1)}}function U9(J){if(!J)return[];try{let z=yL.readdirSync(J,{withFileTypes:!0}),Y=[];for(let G of z)if(G.isDirectory())Y.push(G.name);return Y.sort((G,X)=>G.localeCompare(X))}catch{return[]}}function D9(J,z){let Y=z.toLowerCase(),X=Y.startsWith(".")?J:J.filter((Z)=>!Z.startsWith("."));if(!Y)return X;return X.filter((Z)=>Z.toLowerCase().startsWith(Y))}function HQ(J,z,Y){let G=z+Y;if(J.startsWith("~")){let X=fH.homedir();if(G===X)return"~";if(G.startsWith(`${X}/`))return`~${G.slice(X.length)}`}return G}var HH=()=>{};import{spawn as GT}from"child_process";import*as mG from"fs";import*as BQ from"path";function TL(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),G=z.lastIndexOf(":"),X=Math.max(Y,G);return(X>=0?z.slice(X+1):z).replace(/\.git$/i,"")}function xL(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),G=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Y&&!G&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function uL(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let G=J.trim();if(!G)return F("newTask.error.parentRequired");let X=DJ(G),Z;try{Z=mG.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!Z.isDirectory())return F("newTask.error.parentNotDir",{path:X});let Q=BQ.join(X,Y);if(mG.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function EL(J,z){return BQ.join(DJ(J.trim()),z.trim())}function wL(J,z){let Y=z.trim();if(!Y)return z;let G=DJ(J.trim());if(!G)return z;try{if(!mG.statSync(G).isDirectory())return z}catch{return z}if(!mG.existsSync(BQ.join(G,Y)))return Y;for(let X=2;X<1000;X++){let Z=`${Y}-${X}`;if(!mG.existsSync(BQ.join(G,Z)))return Z}return Y}function PL(J,z,Y){return new Promise((G)=>{let X="";try{let Z=GT("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});Z.stderr?.setEncoding("utf-8"),Z.stderr?.on("data",(Q)=>{if(X+=Q,Y){let f=Q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=f[f.length-1];if(H)Y(H)}}),Z.on("error",(Q)=>{G({ok:!1,error:Q.message})}),Z.on("close",(Q)=>{if(Q===0){G({ok:!0,path:z});return}let f=X.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${Q}`;G({ok:!1,error:f})})}catch(Z){G({ok:!1,error:Z instanceof Error?Z.message:String(Z)})}})}var hL=k(()=>{ZJ();HH()});function L9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function M9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function vL(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function LJ(J){return J.replace(/[\r\n]+/g,"")}function jQ(J){return!/\S/u.test(J)}function F9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return O9(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 O9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function mL(J,z){let Y=z.trim();if(!Y)return J;return J.filter((G)=>CQ(Y,G.path))}function cL(J,z){let Y=new Set,G=[];for(let X of[J,...z]){let Z=X.trim();if(!Z||Y.has(Z))continue;Y.add(Z),G.push(Z)}return G}function dL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function nL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function WQ(J,z,Y=XT){let G=J.length;if(G<=Y)return{items:J,start:0,total:G};let X=Math.floor(Y/2),Z=Math.max(0,z-X);if(Z+Y>G)Z=G-Y;return{items:J.slice(Z,Z+Y),start:Z,total:G}}function dz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function iL(J,z,Y){let G=z[Y];if(G)return G;return J.trim()||Cz}var XT=8;var A9=k(()=>{TH();qH()});import{TextAttributes as Yz}from"@opentui/core";function lL(J){let z=c1(),{theme:Y}=i0(),[G,X]=a("existing"),Z=()=>{let d=J.availableVendors;return d&&d.length>0?d:i1},Q=(()=>{let d=Z(),Y0=J.defaultVendor??"claude";return d.includes(Y0)?Y0:d[0]??"claude"})(),[f,H]=a(Q),[B,V]=a("tabs"),[j,K]=a(J.defaultRepo),[L,A]=a(fQ(DJ(J.defaultRepo.trim()))??Cz),[O,g]=a(!1),[u,_]=a(""),[S,N]=a(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,I]=a(""),[r,l]=a(!1),[e,J0]=a(Cz),[T,q0]=a(!1),[p,j0]=a(""),F0=K0(()=>cL(J.defaultRepo,J.savedRepos)),V0=K0(()=>vL(j(),F0())),t=K0(()=>K9(j())),h=K0(()=>U9(t().base)),C=K0(()=>D9(h(),t().filter)),o=K0(()=>dL(F0(),j())),E=K0(()=>V0()==="browse"?C():o()),[c,s]=a(0),Z0=K0(()=>WQ(E(),c())),[A0,h0]=a(!1),g0=K0(()=>IL(DJ(j().trim()))),N0=K0(()=>nL(g0(),L())),[y,L0]=a(0),Q0=K0(()=>WQ(N0(),y())),M0=K0(()=>K9(S())),T0=K0(()=>U9(M0().base)),X1=K0(()=>D9(T0(),M0().filter)),[z1,w0]=a(0),v0=K0(()=>WQ(X1(),z1())),[n,f0]=a(!1),[I0,r0]=a(""),[_0,p0]=a(0),[t0,N1]=a(new Set),[g1]=Dq(()=>G()==="adopt"?DJ(j().trim()):null,async(d)=>J.discoverAdoptable?await J.discoverAdoptable(d):[]),z0=K0(()=>mL(g1()??[],I0())),G0=K0(()=>WQ(z0().map((d)=>d.path),_0())),B0=K0(()=>{let d=G0();return z0().slice(d.start,d.start+d.items.length)});s0(()=>{z0(),p0((d)=>dz(d,z0().length))});function k0(d){N1((Y0)=>{let y0=new Set(Y0);if(y0.has(d))y0.delete(d);else y0.add(d);return y0})}function R(){let d=z0()[_0()];if(d)k0(d.path)}s0(()=>{N0(),L0(0)}),s0(()=>{let d=DJ(j().trim());if(!d)return;if(O())return;let Y0=fQ(d);if(Y0)A(Y0)}),s0(()=>{E(),s(0)}),s0(()=>{X1(),w0(0)}),s0(()=>{let d=u(),Y0=S();if(r())return;let y0=TL(d);I(wL(Y0,y0))});let[m0,U0]=a(null);s0(()=>{j(),u(),S(),M(),I0(),U0(null)});function u0(){let d=DJ(j().trim());if(!d)return;let Y0=SL(d);if(Y0){U0(Y0),V("repo");return}let y0=L().trim()||Cz;J.onSubmit({repo:d,baseRef:y0,vendor:f()}),z.clear()}async function W0(){if(T())return;let d=xL(u());if(d){U0(d),V("cloneUrl");return}let Y0=uL(S(),M());if(Y0){U0(Y0),V(M().trim()?"cloneParent":"cloneFolder");return}let y0=EL(S(),M());q0(!0),j0(F("newTask.clone.progressInto",{target:y0}));let S0=await PL(u().trim(),y0,(QJ)=>{j0(QJ)});if(q0(!1),!S0.ok){U0(F("newTask.error.cloneFailed",{error:S0.error})),V("cloneUrl");return}let jJ=e().trim()||Cz,MJ=DJ(S().trim());J.onSubmit({repo:S0.path,baseRef:jJ,vendor:f(),cloned:{parentDir:MJ}}),z.clear()}function D0(){let d=z0();if(d.length===0){U0(F("newTask.error.noAdoptable"));return}let Y0=t0(),y0=Y0.size>0?d.filter((S0)=>Y0.has(S0.path)):d.slice(_0(),_0()+1);if(y0.length===0)return;J.onSubmit({mode:"adopt",repo:DJ(j().trim()),vendor:f(),adopt:y0.map((S0)=>({worktreePath:S0.path,branch:S0.branch}))}),z.clear()}function C0(){if(G()==="clone"){W0();return}if(G()==="adopt"){D0();return}u0()}function J1(d){if(T())return;if(d===G())return;X(d),V(O9(d)),U0(null)}function Y1(d){if(T())return;let Y0=d===1?L9(G()):M9(G());if(Y0===G())return;X(Y0),U0(null),V("tabs")}function l0(d){H((Y0)=>d===1?OY(Z(),Y0):xH(Z(),Y0))}function x1(){if(!j().trim()&&V0()==="saved"){let Y0=E()[0];if(Y0){K(Y0),V("baseRef");return}}if(V0()==="browse"){let y0=C()[c()],S0=t();if(y0){K(HQ(j(),S0.base,y0)),s(0),h0(!0),V("baseRef");return}V("baseRef");return}let d=E()[c()];if(d){K(d),V("baseRef");return}V("baseRef")}function b0(d){let y0=E()[d];if(!y0)return;if(V0()==="browse"){let S0=t();K(HQ(j(),S0.base,y0)),s(d),h0(!0),V("baseRef");return}K(y0),s(d),V("baseRef")}function m1(){let Y0=X1()[z1()],y0=M0();if(Y0){N(HQ(S(),y0.base,Y0)),w0(0),f0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let y0=X1()[d];if(!y0)return;let S0=M0();N(HQ(S(),S0.base,y0)),w0(d),f0(!0),V("cloneFolder")}let R0=()=>{let d=z0();if(d.length===0)return;let Y0=d.every((y0)=>t0().has(y0.path));N1(Y0?new Set:new Set(d.map((y0)=>y0.path)))};D1(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>F9(d,G()))},{key:"ctrl+]",cmd:()=>J1(L9(G()))},{key:"ctrl+[",cmd:()=>J1(M9(G()))},{key:"ctrl+e",cmd:()=>H((d)=>OY(Z(),d))},{key:"up",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(dz(c()-1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;L0(dz(y()-1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=X1();if(d.length===0)return;w0(dz(z1()-1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;p0(dz(_0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(dz(c()+1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;L0(dz(y()+1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=X1();if(d.length===0)return;w0(dz(z1()+1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;p0(dz(_0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Y1(-1):l0(-1)},{key:"right",cmd:()=>B()==="tabs"?Y1(1):l0(1)},{key:"return",cmd:()=>V((d)=>F9(d,G()))}]:[],...G()==="adopt"?[{key:"ctrl+a",cmd:R0}]:[]]})),D1(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>C0()}]}));let V1=(d)=>B()===d?Y.primary:Y.textMuted,R1=(d)=>B()===d?Yz.BOLD|Yz.UNDERLINE:void 0,B1=(d,Y0)=>d?Y0?Yz.BOLD|Yz.UNDERLINE:Yz.BOLD:void 0;return(()=>{var d=W("box"),Y0=W("box"),y0=W("text"),S0=W("box"),jJ=W("box"),MJ=W("text"),QJ=W("box"),$J=W("box"),nz=W("text"),gJ=W("box"),iz=W("text"),MY=W("text");return D(d,Y0),D(d,S0),D(d,gJ),q(d,"paddingLeft",2),q(d,"paddingRight",2),q(d,"gap",0),D(Y0,y0),q(Y0,"flexDirection","row"),U(y0,()=>F("newTask.title")),D(S0,jJ),q(S0,"gap",1),q(S0,"paddingTop",1),q(S0,"paddingBottom",1),U(S0,()=>{let m=()=>B()==="tabs",i=($)=>$?Y.primary:Y.textMuted;return(()=>{var $=W("box"),w=W("text"),d0=W("text"),c0=W("text");return D($,w),D($,d0),D($,c0),q($,"flexDirection","row"),q($,"gap",2),q(w,"onMouseUp",()=>J1("existing")),U(w,(()=>{var O0=x0(()=>G()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(d0,"onMouseUp",()=>J1("clone")),U(d0,(()=>{var O0=x0(()=>G()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(c0,"onMouseUp",()=>J1("adopt")),U(c0,(()=>{var O0=x0(()=>G()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),x((O0)=>{var n0=i(G()==="existing"),f1=B1(G()==="existing",m()),L1=i(G()==="clone"),WJ=B1(G()==="clone",m()),Xz=i(G()==="adopt"),FY=B1(G()==="adopt",m());return n0!==O0.e&&(O0.e=q(w,"fg",n0,O0.e)),f1!==O0.t&&(O0.t=q(w,"attributes",f1,O0.t)),L1!==O0.a&&(O0.a=q(d0,"fg",L1,O0.a)),WJ!==O0.o&&(O0.o=q(d0,"attributes",WJ,O0.o)),Xz!==O0.i&&(O0.i=q(c0,"fg",Xz,O0.i)),FY!==O0.n&&(O0.n=q(c0,"attributes",FY,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),$})()},jJ),D(jJ,MJ),D(jJ,QJ),q(jJ,"gap",0),U(MJ,()=>F("newTask.field.engine")),D(QJ,$J),D(QJ,nz),q(QJ,"flexDirection","row"),q(QJ,"gap",2),U(QJ,b(Q1,{get each(){return Z()},children:(m)=>{let i=()=>f()===m;return(()=>{var $=W("text");return q($,"onMouseUp",()=>H(m)),U($,()=>i()?"\u25B8 ":" ",null),U($,m,null),x((w)=>{var d0=i()?Y.primary:Y.textMuted,c0=i()?Yz.BOLD:void 0;return d0!==w.e&&(w.e=q($,"fg",d0,w.e)),c0!==w.t&&(w.t=q($,"attributes",c0,w.t)),w},{e:void 0,t:void 0}),$})()}}),$J),q($J,"flexGrow",1),U(nz,()=>F("newTask.hint.engineCycle")),U(S0,b(X0,{get when(){return G()==="existing"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.repo")),q($,"onInput",(w)=>{h0(!1),K(LJ(w))}),q($,"onSubmit",()=>{if(!j().trim())return;x1()}),x((w)=>{var d0=V1("repo"),c0=R1("repo"),O0=j(),n0=J.defaultRepo,f1=B()==="repo";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(X0,{get when(){return x0(()=>B()==="repo"&&E().length>0)()&&!A0()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return Z0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:Z0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return Z0().items},children:(i,$)=>{let w=()=>Z0().start+$(),d0=()=>w()===c(),c0=()=>V0()==="saved"&&i===J.defaultRepo,O0=()=>V0()==="saved"&&j().trim()===i,n0=()=>V0()==="browse"?"/":"",f1=()=>c0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var L1=W("text");return q(L1,"wrapMode","none"),q(L1,"onMouseUp",()=>b0(w())),U(L1,()=>d0()?"\u25B8 ":" ",null),U(L1,i,null),U(L1,n0,null),U(L1,f1,null),x((WJ)=>{var Xz=d0()?Y.primary:O0()?Y.accent:Y.textMuted,FY=d0()?Yz.BOLD:void 0;return Xz!==WJ.e&&(WJ.e=q(L1,"fg",Xz,WJ.e)),FY!==WJ.t&&(WJ.t=q(L1,"attributes",FY,WJ.t)),WJ},{e:void 0,t:void 0}),L1})()}}),null),U(m,b(X0,{get when(){return Z0().start+Z0().items.length<Z0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:Z0().total-Z0().start-Z0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.fromBranch")),q($,"placeholder",Cz),q($,"onInput",(w)=>{g(!0),A(LJ(w))}),q($,"onSubmit",()=>{A(iL(L(),N0(),y())),g(!0),u0()}),x((w)=>{var d0=V1("baseRef"),c0=R1("baseRef"),O0=L(),n0=B()==="baseRef";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return x0(()=>B()==="baseRef"&&N0().length===0)()&&m0()==null},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>g0().length===0);return()=>$()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>B()==="baseRef")()&&N0().length>0},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),U(m,b(X0,{get when(){return Q0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:Q0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return Q0().items},children:(i,$)=>{let w=()=>Q0().start+$(),d0=()=>w()===y(),c0=()=>L().trim()===i;return(()=>{var O0=W("text");return q(O0,"wrapMode","none"),q(O0,"onMouseUp",()=>{A(i),g(!0),L0(w()),V("confirm")}),U(O0,()=>d0()?"\u25B8 ":" ",null),U(O0,i,null),x((n0)=>{var f1=d0()?Y.primary:c0()?Y.accent:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return f1!==n0.e&&(n0.e=q(O0,"fg",f1,n0.e)),L1!==n0.t&&(n0.t=q(O0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),O0})()}}),null),U(m,b(X0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}})]}}),null),U(S0,b(X0,{get when(){return G()==="clone"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.gitUrl")),q($,"placeholder","https://github.com/user/repo.git"),q($,"onInput",(w)=>_(LJ(w))),q($,"onSubmit",()=>{if(!u().trim())return;V("cloneParent")}),x((w)=>{var d0=V1("cloneUrl"),c0=R1("cloneUrl"),O0=u(),n0=B()==="cloneUrl";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.parentDir")),q($,"placeholder","~/"),q($,"onInput",(w)=>{f0(!1),N(LJ(w))}),q($,"onSubmit",()=>m1()),x((w)=>{var d0=V1("cloneParent"),c0=R1("cloneParent"),O0=S(),n0=B()==="cloneParent";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.hint.remembered")),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>B()==="cloneParent"&&X1().length>0)()&&!n()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return v0().start>0},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreAbove",{count:v0().start})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),U(m,b(Q1,{get each(){return v0().items},children:(i,$)=>{let w=()=>v0().start+$(),d0=()=>w()===z1();return(()=>{var c0=W("text"),O0=E0("/");return D(c0,O0),q(c0,"wrapMode","none"),q(c0,"onMouseUp",()=>v(w())),U(c0,()=>d0()?"\u25B8 ":" ",O0),U(c0,i,O0),x((n0)=>{var f1=d0()?Y.primary:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return f1!==n0.e&&(n0.e=q(c0,"fg",f1,n0.e)),L1!==n0.t&&(n0.t=q(c0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),c0})()}}),null),U(m,b(X0,{get when(){return v0().start+v0().items.length<v0().total},get children(){var i=W("text");return q(i,"wrapMode","none"),U(i,()=>F("newTask.picker.moreBelow",{count:v0().total-v0().start-v0().items.length})),x(($)=>q(i,"fg",Y.textMuted,$)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.folderName")),q($,"onInput",(w)=>{l(!0),I(LJ(w))}),q($,"onSubmit",()=>V("cloneBaseRef")),x((w)=>{var d0=V1("cloneFolder"),c0=R1("cloneFolder"),O0=M(),n0=F("newTask.placeholder.folderName"),f1=B()==="cloneFolder";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.baseBranch")),q($,"placeholder",Cz),q($,"onInput",(w)=>J0(LJ(w))),q($,"onSubmit",()=>void W0()),x((w)=>{var d0=V1("cloneBaseRef"),c0=R1("cloneBaseRef"),O0=e(),n0=B()==="cloneBaseRef";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"focused",n0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return T()},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>p()||F("newTask.clone.progressFallback")),x(($)=>q(i,"fg",Y.textMuted,$)),m}})]}}),null),U(S0,b(X0,{get when(){return G()==="adopt"},get children(){return[(()=>{var m=W("box"),i=W("text"),$=W("input");return D(m,i),D(m,$),q(m,"gap",0),U(i,()=>F("newTask.field.adoptFilter")),q($,"onInput",(w)=>r0(LJ(w))),q($,"onSubmit",()=>R()),x((w)=>{var d0=V1("adoptFilter"),c0=R1("adoptFilter"),O0=I0(),n0=F("newTask.placeholder.adoptFilter"),f1=B()==="adoptFilter";return d0!==w.e&&(w.e=q(i,"fg",d0,w.e)),c0!==w.t&&(w.t=q(i,"attributes",c0,w.t)),O0!==w.a&&(w.a=q($,"value",O0,w.a)),n0!==w.o&&(w.o=q($,"placeholder",n0,w.o)),f1!==w.i&&(w.i=q($,"focused",f1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.adopt.repoLine",{path:DJ(j().trim())||F("newTask.adopt.repoNone")})),x(($)=>q(i,"fg",Y.textMuted,$)),m})(),b(X0,{get when(){return g1.loading},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,()=>F("newTask.hint.scanningWorktrees")),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return x0(()=>!g1.loading)()&&z0().length===0},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"paddingLeft",2),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>(g1()??[]).length===0);return()=>$()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}}),b(X0,{get when(){return z0().length>0},get children(){var m=W("box"),i=W("text");return D(m,i),q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(X0,{get when(){return G0().start>0},get children(){var $=W("text");return q($,"wrapMode","none"),U($,()=>F("newTask.picker.moreAbove",{count:G0().start})),x((w)=>q($,"fg",Y.textMuted,w)),$}}),i),U(m,b(Q1,{get each(){return B0()},children:($,w)=>{let d0=()=>G0().start+w(),c0=()=>d0()===_0(),O0=()=>t0().has($.path),n0=()=>[$.dirty?"dirty":"",$.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var f1=W("text");return q(f1,"wrapMode","none"),q(f1,"onMouseUp",()=>{p0(d0()),k0($.path)}),U(f1,()=>c0()?"\u25B8 ":" ",null),U(f1,()=>O0()?"[x] ":"[ ] ",null),U(f1,()=>$.branch,null),U(f1,(()=>{var L1=x0(()=>!!n0());return()=>L1()?` (${n0()})`:""})(),null),x((L1)=>{var WJ=c0()?Y.primary:O0()?Y.accent:Y.textMuted,Xz=c0()?Yz.BOLD:void 0;return WJ!==L1.e&&(L1.e=q(f1,"fg",WJ,L1.e)),Xz!==L1.t&&(L1.t=q(f1,"attributes",Xz,L1.t)),L1},{e:void 0,t:void 0}),f1})()}}),i),U(m,b(X0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var $=W("text");return q($,"wrapMode","none"),U($,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),x((w)=>q($,"fg",Y.textMuted,w)),$}}),i),q(i,"wrapMode","none"),U(i,(()=>{var $=x0(()=>t0().size>0);return()=>$()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),x(($)=>q(i,"fg",Y.textMuted,$)),m}})]}}),null),U(S0,b(X0,{get when(){return m0()},get children(){var m=W("text"),i=E0("\u203B ");return D(m,i),q(m,"wrapMode","word"),U(m,m0,null),x(($)=>q(m,"fg",Y.error,$)),m}}),null),D(gJ,iz),D(gJ,MY),q(gJ,"flexDirection","row"),q(gJ,"justifyContent","space-between"),q(gJ,"alignItems","center"),q(gJ,"paddingTop",1),q(gJ,"paddingBottom",1),U(iz,()=>F("newTask.hint.legend")),q(MY,"onMouseUp",()=>C0()),U(MY,(()=>{var m=x0(()=>!!T());return()=>m()?F("newTask.button.cloning"):x0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),x((m)=>{var i=Yz.BOLD,$=Y.text,w=V1("engine"),d0=R1("engine"),c0=Y.textMuted,O0=Y.textMuted,n0=B()==="confirm"?Y.primary:Y.text,f1=B()==="confirm"?Yz.BOLD:void 0;return i!==m.e&&(m.e=q(y0,"attributes",i,m.e)),$!==m.t&&(m.t=q(y0,"fg",$,m.t)),w!==m.a&&(m.a=q(MJ,"fg",w,m.a)),d0!==m.o&&(m.o=q(MJ,"attributes",d0,m.o)),c0!==m.i&&(m.i=q(nz,"fg",c0,m.i)),O0!==m.n&&(m.n=q(iz,"fg",O0,m.n)),n0!==m.s&&(m.s=q(MY,"fg",n0,m.s)),f1!==m.h&&(m.h=q(MY,"attributes",f1,m.h)),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}),d})()}var $L=k(()=>{P();P();P();P();P();P();P();P();ZJ();l1();W1();v1();qH();xJ();HH();lJ();hL();A9()});function ZT(J,z,Y,G){return new Promise((X)=>{J.replace(()=>b(lL,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return G?.defaultCloneParent},get defaultVendor(){return G?.defaultVendor},get availableVendors(){return G?.availableVendors},get discoverAdoptable(){return G?.discoverAdoptable},onSubmit:(Z)=>X(Z),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var BH;var pX=k(()=>{P();$L();A9();BH={show:ZT}});function aL(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as _L}from"@opentui/core";function QT(J){let z=c1(),{theme:Y}=i0(),[G,X]=a("prompt"),[Z,Q]=a(""),[f,H]=a(J.defaultVendor),[B,V]=a(J.defaultBaseRef);function j(O){let g=jH.indexOf(G());X(jH[(g+O+jH.length)%jH.length]??"prompt")}function K(O){let g=J.engines;if(g.length===0)return;if(O>0){H((_)=>OY(g,_));return}let u=Math.max(0,g.indexOf(f()));H(g[(u-1+g.length)%g.length]??f())}function L(){if(jQ(Z())){X("prompt");return}J.onSubmit({prompt:Z().trim(),vendor:f(),baseRef:B().trim()||J.defaultBaseRef}),z.clear()}D1(()=>({enabled:!0,bindings:aL(G(),{cycleField:j,stepEngine:K,commit:L})}));let A=(O)=>G()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),g=W("box"),u=W("text"),_=W("text"),S=W("box"),N=W("text"),M=W("input"),I=W("box"),r=W("text"),l=W("box"),e=W("text"),J0=W("input"),T=W("box"),q0=W("text");return D(O,g),D(O,S),D(O,I),D(O,l),D(O,T),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(g,u),D(g,_),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),U(u,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(_,"onMouseUp",()=>J.onCancel()),U(_,()=>F("quickTask.esc")),D(S,N),D(S,M),q(S,"gap",0),U(N,()=>F("quickTask.promptLabel")),q(M,"onInput",(p)=>Q(LJ(p))),q(M,"onSubmit",()=>L()),D(I,r),q(I,"flexDirection","row"),q(I,"gap",2),U(r,()=>F("quickTask.engineLabel")),U(I,b(Q1,{get each(){return J.engines},children:(p)=>(()=>{var j0=W("text");return q(j0,"onMouseUp",()=>{H(p),X("engine")}),U(j0,()=>J.engineLabel(p)),x((F0)=>{var V0=f()===p?Y.primary:Y.textMuted,t=f()===p?_L.BOLD:void 0;return V0!==F0.e&&(F0.e=q(j0,"fg",V0,F0.e)),t!==F0.t&&(F0.t=q(j0,"attributes",t,F0.t)),F0},{e:void 0,t:void 0}),j0})()}),null),D(l,e),D(l,J0),q(l,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(J0,"onInput",(p)=>V(LJ(p))),q(J0,"onSubmit",()=>L()),D(T,q0),q(T,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),x((p)=>{var j0=_L.BOLD,F0=Y.text,V0=Y.textMuted,t=A("prompt"),h=Z(),C=F("quickTask.promptPlaceholder"),o=G()==="prompt",E=A("engine"),c=A("branch"),s=B(),Z0=J.defaultBaseRef,A0=G()==="branch",h0=Y.textMuted;return j0!==p.e&&(p.e=q(u,"attributes",j0,p.e)),F0!==p.t&&(p.t=q(u,"fg",F0,p.t)),V0!==p.a&&(p.a=q(_,"fg",V0,p.a)),t!==p.o&&(p.o=q(N,"fg",t,p.o)),h!==p.i&&(p.i=q(M,"value",h,p.i)),C!==p.n&&(p.n=q(M,"placeholder",C,p.n)),o!==p.s&&(p.s=q(M,"focused",o,p.s)),E!==p.h&&(p.h=q(r,"fg",E,p.h)),c!==p.r&&(p.r=q(e,"fg",c,p.r)),s!==p.d&&(p.d=q(J0,"value",s,p.d)),Z0!==p.l&&(p.l=q(J0,"placeholder",Z0,p.l)),A0!==p.u&&(p.u=q(J0,"focused",A0,p.u)),h0!==p.c&&(p.c=q(q0,"fg",h0,p.c)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function qT(J,z){return new Promise((Y)=>{J.replace(()=>b(QT,yD(z,{onSubmit:(G)=>Y(G),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var jH,pL;var rL=k(()=>{P();P();P();P();P();P();P();W1();l1();v1();ZJ();xJ();lJ();pX();jH=["prompt","engine","branch"];pL={show:qT}});async function WH(J={}){let z=J.logTag??"orch-connect",Y=J.connect??zz,G=null;try{let X=await Y();if(!X)return sz(z,"no daemon running \u2014 caller degrades"),null;return G=new UJ(X,{...J.orchestratorOptions,channels:J.channels}),await G.init(),G}catch(X){return s1(z,X),G?.dispose(),null}}var R9=k(()=>{ZG();OJ();aY()});function oL(J){let[z,Y]=a(J.initial??"sidebar"),[G,X]=a(0),Z=HJ();function Q(j){if(X((L)=>L+1),z()===j)return;let K=Z?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(j)}function f(j){let L=(VH.indexOf(z())+j+VH.length)%VH.length;Q(VH[L])}let H=new Map;function B(j){let K=H.get(j);if(!K)K=()=>z()===j,H.set(j,K);return K}let V={focused:z,is:B,setFocused:Q,cycle:f,refocusTick:G};return b(fT.Provider,{value:V,get children(){return J.children}})}var VH,fT;var sL=k(()=>{P();P();W1();VH=["sidebar","workspace","files","terminal"],fT=yz(null)});function tL(){for(let J of _Y){let z=HT.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function eL(){BT((J)=>J+1)}function C9(J){return jT.get(J)}function WT(J){return C9(J)?.keys??[]}function pY(J){let z=[];for(let Y in J){let G=J[Y];if(!G)continue;let X=WT(Y);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((Z,Q)=>z.push({key:Z,cmd:G,slot:Q}))}return z}var _Y,HT,g9,BT,jT;var rX=k(()=>{W1();_Y=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],HT=new Map(_Y.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[g9,BT]=a(0);jT=new Map(_Y.map((J)=>[J.id,J]))});function KH(){if(rY)return rY;let J=Sq();if(!J.exists)return rY={path:J.path,exists:!1,applied:[],warnings:[]},rY;let z=[...J.warnings],Y=yq(J.doc,process.platform,{chordOptsFor:JB});z.push(...Y.warnings);let G=Y.entries.filter((f)=>f.id.startsWith("tmux.")),X=Y.entries.filter((f)=>!f.id.startsWith("tmux.")),Z=oV(_Y,X);z.push(...Z.warnings);let Q=[...Z.applied];if(G.length>0){let f=e8(G);z.push(...f.warnings);for(let H of f.overridden){if(H===xz){Q.push({id:H,keys:f.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:yY});continue}let B=f.binds[H];Q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[gG[H]]});let V=_Y.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${fX(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let f of z)console.warn(`[kobe/keybindings] ${f}`);return rY={path:J.path,exists:!0,applied:Q,warnings:z},rY}function J3(){return rY??KH()}function z3(){rY=null,rV(),J5(),tL();let J=KH();return eL(),J}var rY=null;var N9=k(()=>{s8();uq();Tq();rX()});var VT=250,oX,Y3;var VQ=k(()=>{lX();YG();G9();({use:oX,provider:Y3}=XH({name:"KV",init:()=>{let[J,z]=cz(d1()),Y=new Set,G=null;function X(f){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=J[B];return $z(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${f} failed:`,H),!1}}function Z(){if(G)clearTimeout(G);G=setTimeout(()=>{G=null,X("write")},VT)}let Q={get ready(){return!0},get store(){return J},signal(f,H){if(J[f]===void 0)z(f,H);return[()=>Q.get(f),(B)=>Q.set(f,B)]},get(f,H){return J[f]??H},set(f,H){z(f,H),Y.add(f),Z()},flush(){if(G)clearTimeout(G),G=null;return X("flush")},clear(){for(let f of Object.keys(J))z(f,void 0);if(G)clearTimeout(G),G=null;Y.clear();try{uW({})}catch(f){console.error("[kobe] kv clear write failed:",f)}}};return Q}}))});var UH="../pulse-n3cq1btw.wav";var G3=()=>{};import{existsSync as UT,mkdirSync as DT}from"fs";import{tmpdir as LT}from"os";import{basename as MT,isAbsolute as FT,join as k9,resolve as OT}from"path";function RT(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function gT(){if(DH!==void 0)return DH;let z=(process.env.PATH??"").split(":").filter(Boolean);return DH=AT.find((Y)=>z.some((G)=>UT(k9(G,Y))))??null,DH}async function CT(){return Q3??=(async()=>{DT(Z3,{recursive:!0});let J=k9(Z3,MT(X3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(X3)),J})(),Q3}function q3(J=0.4){let z=gT();if(!z)return;CT().then((Y)=>{try{Bun.spawn(RT(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var X3,Z3,AT,DH,Q3;var f3=k(()=>{G3();X3=FT(UH)?UH:OT(import.meta.dir,UH),Z3=k9(LT(),"kobe-sfx"),AT=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function H3(J,z){return`${J}:${z}`}function j3(J){let z=oX(),[Y,G]=a([]),[X,Z]=a(new Map),Q=QH(),f=0;function H(K){if(Z((L)=>{let A=new Map(L),O=H3(K.taskId,K.tabId),g=L.get(O);if(g==="needs_input"||g==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}q3()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++f,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};G((O)=>[...O,A]),Q.set(()=>B(L),NT)}}function B(K){G((L)=>L.filter((A)=>A.id!==K))}function V(K,L){Z((A)=>{let O=H3(K,L);if(!A.has(O))return A;let g=new Map(A);return g.delete(O),g})}let j={toasts:Y,unread:X,notify:H,dismiss:B,markRead:V};return b(B3.Provider,{value:j,get children(){return J.children}})}function LH(){let J=PJ(B3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var NT=4500,B3;var MH=k(()=>{P();W1();W9();f3();VQ();B3=yz()});function b9(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=bT(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function bT(J){if(J===null)return"primary";return kT.includes(J)?J:null}var kT;var W3=k(()=>{kT=["primary","success","info"]});import{readFileSync as ST}from"fs";function V3(J){try{let z=JSON.parse(ST(aJ(),"utf8")),Y=typeof z.activeTheme==="string"&&ZQ(z.activeTheme)?z.activeTheme:J,G=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&hG.includes(z.focusAccent)?z.focusAccent:null,Z=QQ(z[FH])?z[FH]:aX;return{theme:Y,transparent:G,focusAccent:X,locale:Z}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aX}}}var FH="locale";var S9=k(()=>{r1();v1();_X()});function yT(J){if(J)hQ(J);sW(),KH();for(let{name:z,theme:Y}of IZ())Z9(z,Y)}function TT(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function xT(J){let z=()=>J.children,Y=()=>J.notifications?b(j3,{get children(){return z()}}):z(),G=()=>b(NL,{get children(){return Y()}}),X=()=>J.focus?b(oL,{initial:"sidebar",get children(){return G()}}):G(),Z=()=>J.kv?b(Y3,{get children(){return X()}}):X();return b(lD,{mode:"dark",get theme(){return J.theme},get children(){return Z()}})}function uT(J){let{theme:z}=i0();return JJ(()=>s1("pane-crash",J.error)),(()=>{var Y=W("box"),G=W("text"),X=W("text");return D(Y,G),D(Y,X),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(G,()=>F("common.paneCrash.title")),U(X,()=>F("common.paneCrash.hint")),x((Z)=>{var{background:Q,error:f,textMuted:H}=z;return Q!==Z.e&&(Z.e=q(Y,"backgroundColor",Q,Z.e)),f!==Z.t&&(Z.t=q(G,"fg",f,Z.t)),H!==Z.a&&(Z.a=q(X,"fg",H,Z.a)),Z},{e:void 0,t:void 0,a:void 0}),Y})()}function ET(J){let z=i0(),Y={selectedTheme:()=>z.selected,hasTheme:(f)=>z.has(f),setTheme:(f)=>z.set(f),reloadUserThemes:()=>{for(let{name:f,theme:H}of IZ())Z9(f,H)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(f)=>z.setTransparentBackground(f),focusAccent:()=>z.focusAccent,setFocusAccent:(f)=>z.setFocusAccent(f)};b9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),qQ(J.boot.locale);let[G,X]=a(null),Z=!1;JJ(()=>{(async()=>{let f=await WH({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!f)return;if(Z){f.dispose();return}X(f)})()}),s0(()=>{let f=G()?.uiPrefsSignal()();if(!f)return;if(b9(Y,f),QQ(f.locale))qQ(f.locale)});let Q=null;return s0(()=>{let f=G()?.keybindingsRevSignal()();if(f==null)return;if(Q===null||f===Q){Q=f;return}Q=f,z3()}),k1(()=>{Z=!0,G()?.dispose()}),null}async function RJ(J){yT(J.logContext);let z=V3(IT),Y=await J.setup(z),G=J.providers?.kv??!0,X=J.providers?.focus??!0,Z=J.providers?.notifications??!1;await hD(()=>b(xT,{get theme(){return z.theme},kv:G,focus:X,notifications:Z,get children(){return[b(ET,{boot:z}),b(RV,{fallback:(Q)=>b(uT,{error:Q}),get children(){return Y.root()}})]}}),TT(Y.onDestroy))}var IT="claude";var oY=k(()=>{P();P();P();P();P();P();P();ZG();W1();R9();sL();N9();VQ();MH();v1();lq();ZJ();lJ();W3();S9()});async function I9(J,z,Y,G,X={}){let Z=M1(z.id);if(await H1(Z))return!0;let Q=z.worktreePath;if(!Q)Q=await J.ensureWorktree(z.id);if(!Q)throw Error(`task ${z.id} has no worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (YJ(),cJ)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (IX(),Wj)),B=H(Y,Q,{kind:X.includeInitPrompt?"repo-init":"none"});if(!await f({name:Z,cwd:Q,command:yJ(G),taskId:z.id,vendor:G,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${z.id}`);return!1}async function OH(J,z,Y,G,X={}){await I9(J,z,Y,G,X),await J.setActiveTask(z.id).catch(()=>{});let{prepareWindowForSwitch:Z}=await Promise.resolve().then(() => (YJ(),cJ));await Z(M1(z.id)),await P0(["switch-client","-t",`=${M1(z.id)}`])}var y9=k(()=>{vJ();P1()});var K3={};j1(K3,{startNewTaskHost:()=>wT,NewTaskPage:()=>AH});function AH(J){let{theme:z}=i0(),Y=c1();JJ(()=>{G()});async function G(){let X=CJ(),Z=J.defaultRepo||X[0]||process.cwd(),Q=uJ(C1("lastSelectedVendor"),EJ()),f=await tz(),H=J.orchestrator,B=await BH.show(Y,Z,X,{defaultVendor:Q,availableVendors:f,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(o1("lastSelectedVendor",B.vendor),_z(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await OH(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),x((Z)=>q(X,"backgroundColor",z.background,Z)),X})()}async function wT(J){await RJ({setup:async()=>{let z=null;try{let Y=await Az(),G=new UJ(Y);await G.init(),z=G}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(AH,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var T9=k(()=>{P();P();P();P();OJ();W1();aY();QG();O1();l1();pX();v1();oY();y9();lJ()});function RH(J,z,Y,G,X={}){if(J.length===0)return z;let Z=new Map;for(let H of J)Z.set(Y(H),H);let Q=J.length===z.length,f=Array(z.length);for(let H=0;H<z.length;H++){let B=z[H],V=Z.get(Y(B));if(V&&G(V,B)&&(!X.samePosition||J[H]===V)){if(f[H]=V,Q&&J[H]!==V)Q=!1}else f[H]=B,Q=!1}return Q?J:f}function U3(J,z){if(!J)return!0;let Y=J.toLowerCase(),G=z.toLowerCase(),X=0;for(let Z=0;Z<G.length&&X<Y.length;Z++)if(G.charCodeAt(Z)===Y.charCodeAt(X))X++;return X===Y.length}function PT(J,z){let Y=z==="archived";return J.filter((G)=>G.archived===Y)}function x9(J,z,Y,G="default",X){let Z=PT(J,z),Q=Y?.trim()??"",f=X?Gz(X):null,H=Q?Z.filter((O)=>U3(Q,`${O.title} ${Nz(O.repo)}`)):Z,B=[],V=[],j=[],K=new Set;for(let O of H){if(O.kind==="main"){let g=Gz(O.repo);if(K.has(g))continue;K.add(g),B.push(O);continue}if(f&&Gz(O.repo)!==f)continue;if(O.pinned===!0)V.push(O);else j.push(O)}if(B.sort((O,g)=>Nz(O.repo).localeCompare(Nz(g.repo))),G==="recent")V.sort(D3),j.sort(D3);let L=[],A=0;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function D3(J,z){let Y=L3(z)-L3(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function L3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Nz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Gz(J){return J.trim().replace(/[\\/]+$/,"")||J}function hT(J,z){let Y=Nz(J);if(!z.some((X)=>X!==J&&Nz(X)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function M3(J,z){let Y=z==="archived",G=new Map;for(let Z of J){let Q=Gz(Z.repo),f=G.get(Q)??{repo:Z.repo,count:0};if(Z.kind==="main")f.repo=Z.repo;else if(Z.archived===Y)f.count+=1;G.set(Q,f)}let X=[...G.values()].map((Z)=>Z.repo);return[...G.values()].map((Z)=>({repo:Z.repo,label:hT(Z.repo,X),count:Z.count})).sort((Z,Q)=>Z.label.localeCompare(Q.label))}function F3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=Gz(z),G=J.find((Z)=>Z.task.kind!=="main"&&Gz(Z.task.repo)===Y);if(G)return G.flatIndex;return J.find((Z)=>Z.task.kind==="main"&&Gz(Z.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function u9(J){return J.map((z)=>z.task.id)}function O3(J){let z=[],Y=[];for(let G of J)if(G.task.kind==="main")z.push(G);else Y.push(G);return{projectRows:z,taskRows:Y}}function vT(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 A3(J,z){return RH(J,z,(Y)=>Y.task.id,(Y,G)=>Y.flatIndex===G.flatIndex&&vT(Y.task,G.task),{samePosition:!0})}var gH=()=>{};var R3={};j1(R3,{startQuickTaskHost:()=>nT});async function mT(J,z){let Y,G;if(z){let j=await TJ(z,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,G=j["@kobe_worktree"]||void 0}let X=(Y?J?.getTask(Y)?.repo:void 0)??CJ()[0],Z=X??G??process.cwd();if(!X)return{ctx:null,fallbackRepo:Z};let Q=await tz(),f=uJ(C1("lastSelectedVendor"),EJ()),H=Q.length===0||Q.includes(f)?f:Q[0]??f,B=fQ(DJ(X))??Cz,V=Q.length>0?Q:[H];return{ctx:{repo:X,vendor:H,baseRef:B,engines:V},fallbackRepo:Z}}async function cT(J,z,Y,G,X){let Z=await I9(J,z,Y,G),Q=M1(z.id),{pane:f}=await kZ(Q,!Z);if(f)await bZ(f,X)}function dT(J){let{theme:z}=i0(),Y=c1();JJ(()=>{G()});async function G(){let X=J.ctx,Z=await pL.show(Y,{repoLabel:Nz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:FG});if(Z===void 0)process.exit(0);o1("lastSelectedVendor",Z.vendor),_z(X.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let f=await Q.createTask({repo:X.repo,baseRef:Z.baseRef,vendor:Z.vendor});await cT(Q,f,X.repo,Z.vendor,Z.prompt),await OH(Q,f,X.repo,Z.vendor)}catch(f){console.error("[kobe quick-task] task.create/deliver failed:",f),process.exit(1)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),x((Z)=>q(X,"backgroundColor",z.background,Z)),X})()}async function nT(J){await RJ({setup:async()=>{let z=null;try{let X=await Az(),Z=new UJ(X);await Z.init(),z=Z}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Y,fallbackRepo:G}=await mT(z,J.session);return{root:()=>Y?b(dT,{ctx:Y,orchestrator:z}):b(AH,{defaultRepo:G,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var g3=k(()=>{P();P();P();P();OJ();W1();aY();QG();vJ();O1();P1();Eq();l1();rL();v1();qH();oY();HH();y9();T9();gH();lJ()});function NH(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let G=Y[1]==="C"?"\u2303":"\u2325",X=Y[2]??"";return`${G}${X.length===1?X.toUpperCase():X}`}function CH(J,z){if(J.includes("/"))return J.split("/").map((X)=>CH(X,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let G=lT[Y];if(G)return G;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(X)=>X.toUpperCase())}function sX(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let G=/^prefix\s+(.+)$/i.exec(Y);if(G){let f=G[1]??"";return`${z} ${f.includes("+")?sX(f,z):CH(f,!0)}`}let X=Y.split("+");if(X.length===1)return CH(X[0]??"",!1);let Z=X[X.length-1]??"";return`${X.slice(0,-1).map((f)=>iT[f.toLowerCase().trim()]??f).join("")} ${CH(Z,!0)}`}var iT,lT;var E9=k(()=>{iT={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},lT={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 C3}from"@opentui/core";function $T(J){let z=new Map,Y=[];for(let G of J){if(!z.has(G.category))z.set(G.category,[]),Y.push(G.category);z.get(G.category).push(G)}return Y.map((G)=>({category:G,rows:z.get(G)}))}function tX(J={}){let z=c1(),{theme:Y}=i0(),G=()=>$T(_Y),X=()=>J.onClose?J.onClose():z.clear(),[Z,Q]=a("\u2303B");return JJ(()=>{a0(["show-options","-g","prefix"]).then(({code:f,stdout:H})=>{if(f!==0)return;let B=NH(H);if(B)Q(B)})}),D1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var f=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),K=W("box");return D(f,H),D(f,j),q(f,"paddingLeft",2),q(f,"paddingRight",2),q(f,"gap",1),q(f,"flexShrink",1),D(H,B),D(H,V),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),q(H,"flexShrink",0),U(B,()=>F("help.title")),q(V,"onMouseUp",X),U(V,()=>F("help.esc")),D(j,K),q(j,"flexShrink",1),q(j,"flexGrow",1),q(j,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(Q1,{get each(){return G()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>f9("category",L.category)),U(A,b(Q1,{get each(){return L.rows},children:(g)=>{let u=g.hint?.keys??g.keys[0]??"\u2014",_=()=>u==="\u2014"?"\u2014":sX(u,Z()),S=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>sX(N,Z()));return(()=>{var N=W("box"),M=W("box"),I=W("text"),r=W("box"),l=W("text");return D(N,M),D(N,r),q(N,"flexDirection","row"),q(N,"gap",2),q(N,"paddingLeft",1),D(M,I),q(M,"width",14),U(I,_),D(r,l),q(r,"flexGrow",1),U(l,()=>f9("desc",g.id)),U(N,(()=>{var e=x0(()=>S().length>0);return()=>e()?(()=>{var J0=W("box"),T=W("text");return D(J0,T),U(T,()=>`(${S().join(", ")})`),x((q0)=>q(T,"fg",Y.textMuted,q0)),J0})():null})(),null),x((e)=>{var{primary:J0,text:T}=Y;return J0!==e.e&&(e.e=q(I,"fg",J0,e.e)),T!==e.t&&(e.t=q(l,"fg",T,e.t)),e},{e:void 0,t:void 0}),N})()}}),null),x((g)=>{var u=Y.accent,_=C3.BOLD;return u!==g.e&&(g.e=q(O,"fg",u,g.e)),_!==g.t&&(g.t=q(O,"attributes",_,g.t)),g},{e:void 0,t:void 0}),A})()})),x((L)=>{var A=C3.BOLD,O=Y.text,g=Y.textMuted,u={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(B,"attributes",A,L.e)),O!==L.t&&(L.t=q(B,"fg",O,L.t)),g!==L.a&&(L.a=q(V,"fg",g,L.a)),u!==L.o&&(L.o=q(j,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var w9=k(()=>{P();P();P();P();P();P();P();W1();P1();rX();v1();ZJ();E9();xJ();lJ();tX.show=(J)=>{J.replace(()=>b(tX,{}))}});import{TextAttributes as aT}from"@opentui/core";function N3(J){let z=c1(),{theme:Y}=i0(),[G,X]=a(J.currentTitle);function Z(){let Q=G().trim();if(jQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),f=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,f),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(f,H),D(f,B),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),U(H,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),q(B,"onMouseUp",()=>J.onCancel()),D(V,j),D(V,K),q(V,"gap",0),U(j,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>X(LJ(O))),q(K,"onSubmit",()=>Z()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),x((O)=>{var g=aT.BOLD,u=Y.text,_=Y.textMuted,S=Y.accent,N=G(),M=J.placeholder??J.currentTitle,I=Y.textMuted;return g!==O.e&&(O.e=q(H,"attributes",g,O.e)),u!==O.t&&(O.t=q(H,"fg",u,O.t)),_!==O.a&&(O.a=q(B,"fg",_,O.a)),S!==O.o&&(O.o=q(j,"fg",S,O.o)),N!==O.i&&(O.i=q(K,"value",N,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),I!==O.s&&(O.s=q(A,"fg",I,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var k3=k(()=>{P();P();P();P();P();P();P();ZJ();W1();v1();lJ();pX()});function _T(J,z,Y={}){return new Promise((G)=>{J.replace(()=>b(N3,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0))})}var DY;var P9=k(()=>{P();k3();DY={show:_T}});import{TextAttributes as pT}from"@opentui/core";function rT(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function LY(J){let z=c1(),{theme:Y}=i0(),[G,X]=cz({active:J.initialActive??"confirm"});return D1(()=>({bindings:[{key:"return",cmd:()=>{if(G.active==="confirm")J.onConfirm?.();if(G.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>X("active",G.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>X("active",G.active==="confirm"?"cancel":"confirm")}]})),(()=>{var Z=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(Z,Q),D(Z,B),D(Z,V),q(Z,"paddingLeft",2),q(Z,"paddingRight",2),q(Z,"paddingBottom",1),q(Z,"gap",0),D(Q,f),D(Q,H),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(f,()=>J.title),D(H,E0("esc")),q(H,"onMouseUp",()=>z.clear()),U(B,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(Q1,{each:["cancel","confirm"],children:(j)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(j==="confirm")J.onConfirm?.();if(j==="cancel")J.onCancel?.();z.clear()}),U(L,()=>rT(j==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),x((A)=>{var O=j===G.active?Y.primary:void 0,g=j===G.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(L,"fg",g,A.t)),A},{e:void 0,t:void 0}),K})()})),x((j)=>{var K=pT.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==j.e&&(j.e=q(f,"attributes",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z})()}var h9=k(()=>{P();P();P();P();P();P();P();ZJ();W1();lX();v1();xJ();lJ();LY.show=(J,z,Y,G,X,Z)=>{return new Promise((Q)=>{J.replace(()=>b(LY,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:G,confirmLabel:X,get initialActive(){return Z?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as oT}from"fs";import{join as sT}from"path";function b3(J){return J instanceof UJ}function S3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function v9(J,z,Y){if(await LY.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{oT(sT(bz(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}S3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
264
|
+
`),process.exit(0)}async function m9(J,z,Y){if(!(z instanceof UJ))return;if(await LY.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;S3(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
|
|
265
|
+
`),process.exit(0)}var I3=k(()=>{aY();r1();h9()});function tT(J){return`theme:${J}`}function c9(J){return`language:${J}`}function d9(J){return`accent:${J}`}function eT(J){return`engine:${J}`}function KQ(J){return`surface:${J}`}function n9(J){return[...J.themeNames.map((z)=>({id:tT(z),kind:"theme",name:z})),...vG.map((z)=>({id:c9(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:d9(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:KQ("chattab"),kind:"surface",surface:"chattab"},{id:KQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function Jx(J){return[...J.map((z)=>({id:eT(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function zx(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function UQ(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function y3(J,z){switch(J){case"general":return n9(z);case"engines":return Jx(z.engineList);case"accounts":case"keys":return[];case"feedback":return zx();case"dev":return UQ(z.hasDaemon)}}function DQ(J,z){return J.findIndex((Y)=>Y.id===z)}function kH(J,z){return J[z]}var cG;var i9=k(()=>{_X();cG=[{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 e0}from"@opentui/core";function T3(J){let{theme:z}=i0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(Q1,{each:cG,children:(G,X)=>{let Z=()=>X()===J.cursor(),Q=()=>Z()&&J.level()==="sidebar";return(()=>{var f=W("box"),H=W("text");return D(f,H),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>J.switchSection(G.id)),q(H,"wrapMode","none"),U(H,()=>F(`settings.sections.${G.id}`)),x((B)=>{var V=Q()?z.primary:void 0,j=Q()?z.selectedListItemText:Z()?z.accent:z.textMuted,K=Z()?e0.BOLD:void 0;return V!==B.e&&(B.e=q(f,"backgroundColor",V,B.e)),j!==B.t&&(B.t=q(H,"fg",j,B.t)),K!==B.a&&(B.a=q(H,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),f})()}})),Y})()}function x3(J){let z=i0(),{theme:Y}=z,G=()=>n9({themeNames:J.themeNames(),focusAccentSlots:hG}),X=(M)=>DQ(G(),M),Z=()=>X("transparent"),Q=()=>X("toast"),f=()=>X("sound"),H=()=>X("zen-keep-tasks"),B=()=>X(KQ("chattab")),V=()=>X(KQ("taskpanel")),j=()=>X("editor-kind"),K=()=>X("editor-custom"),L=()=>J.bodyRow()===Z(),A=()=>J.bodyRow()===Q(),O=()=>J.bodyRow()===f(),g=()=>J.bodyRow()===H(),u=()=>J.bodyRow()===B(),_=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===j(),N=()=>J.bodyRow()===K();return(()=>{var M=W("box"),I=W("text"),r=W("text"),l=W("box"),e=W("box"),J0=W("text"),T=W("text"),q0=W("box"),p=W("text"),j0=W("text"),F0=W("box"),V0=W("text"),t=W("box"),h=W("text"),C=W("text"),o=W("box"),E=W("text"),c=W("text"),s=W("box"),Z0=W("text"),A0=E0(" "),h0=W("box"),g0=W("text"),N0=E0(" "),y=W("box"),L0=W("text"),Q0=W("text"),M0=W("box"),T0=W("text"),X1=E0(" "),z1=W("box"),w0=W("text"),v0=W("text"),n=W("box"),f0=W("text"),I0=E0(" "),r0=W("box"),_0=W("text"),p0=E0(" "),t0=W("box"),N1=W("text"),g1=W("text"),z0=W("box"),G0=W("text"),B0=W("box"),k0=W("text");return D(M,I),D(M,r),D(M,l),D(M,e),D(M,q0),D(M,t),D(M,o),D(M,y),D(M,z1),D(M,t0),q(M,"flexDirection","column"),q(M,"gap",1),U(I,()=>F("settings.general.theme")),U(r,()=>F("settings.general.themeHint")),q(l,"flexDirection","column"),q(l,"gap",0),U(l,b(Q1,{get each(){return J.themeNames()},children:(R,m0)=>{let U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>R===z.selected;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.setThemeCursor(m0()),J.selectTheme(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,R,null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}})),D(e,J0),D(e,T),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(J0,()=>F("settings.general.language")),q(T,"wrapMode","word"),U(T,()=>F("settings.general.languageHint")),U(e,b(Q1,{each:vG,children:(R)=>{let m0=()=>X(c9(R.id)),U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>J.currentLocale()===R.id;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.selectLanguage(R.id)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>R.label,null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(q0,p),D(q0,j0),D(q0,F0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingTop",1),U(p,()=>F("settings.general.transparent")),q(j0,"wrapMode","word"),U(j0,()=>F("settings.general.transparentHint")),D(F0,V0),q(F0,"flexDirection","row"),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),q(F0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Z()),J.toggleTransparent()}),q(V0,"wrapMode","none"),U(V0,(()=>{var R=x0(()=>!!z.transparentBackground);return()=>R()?F("settings.general.on"):F("settings.general.off")})()),D(t,h),D(t,C),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(h,()=>F("settings.general.focusAccent")),q(C,"wrapMode","word"),U(C,()=>F("settings.general.focusAccentHint")),U(t,b(Q1,{each:hG,children:(R)=>{let m0=()=>X(d9(R)),U0=()=>J.level()==="body"&&J.bodyRow()===m0(),u0=()=>z.focusAccent===R;return(()=>{var W0=W("box"),D0=W("text");return D(W0,D0),q(W0,"flexDirection","row"),q(W0,"gap",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(m0()),J.selectFocusAccent(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>F(`settings.general.accent${R.charAt(0).toUpperCase()}${R.slice(1)}`),null),x((C0)=>{var J1=U0()?Y.primary:void 0,Y1=U0()?Y.selectedListItemText:u0()?Y.focusAccent:Y.text,l0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(W0,"backgroundColor",J1,C0.e)),Y1!==C0.t&&(C0.t=q(D0,"fg",Y1,C0.t)),l0!==C0.a&&(C0.a=q(D0,"attributes",l0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(o,E),D(o,c),D(o,s),D(o,h0),q(o,"flexDirection","column"),q(o,"gap",0),q(o,"paddingTop",1),U(E,()=>F("settings.general.notifications")),q(c,"wrapMode","word"),U(c,()=>F("settings.general.notificationsHint")),D(s,Z0),q(s,"flexDirection","row"),q(s,"gap",1),q(s,"paddingLeft",1),q(s,"paddingRight",1),q(s,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(Z0,A0),q(Z0,"wrapMode","none"),U(Z0,()=>J.toastEnabled()?"[x]":"[ ]",A0),U(Z0,()=>F("settings.general.toast"),null),D(h0,g0),q(h0,"flexDirection","row"),q(h0,"gap",1),q(h0,"paddingLeft",1),q(h0,"paddingRight",1),q(h0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleSound()}),D(g0,N0),q(g0,"wrapMode","none"),U(g0,()=>J.soundEnabled()?"[x]":"[ ]",N0),U(g0,()=>F("settings.general.sound"),null),D(y,L0),D(y,Q0),D(y,M0),q(y,"flexDirection","column"),q(y,"gap",0),q(y,"paddingTop",1),U(L0,()=>F("settings.general.zen")),q(Q0,"wrapMode","word"),U(Q0,()=>F("settings.general.zenHint")),D(M0,T0),q(M0,"flexDirection","row"),q(M0,"gap",1),q(M0,"paddingLeft",1),q(M0,"paddingRight",1),q(M0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleZenKeepsTasks()}),D(T0,X1),q(T0,"wrapMode","none"),U(T0,()=>J.zenKeepsTasks()?"[x]":"[ ]",X1),U(T0,()=>F("settings.general.zenKeepTasks"),null),D(z1,w0),D(z1,v0),D(z1,n),D(z1,r0),q(z1,"flexDirection","column"),q(z1,"gap",0),q(z1,"paddingTop",1),U(w0,()=>F("settings.general.surface")),q(v0,"wrapMode","word"),U(v0,()=>F("settings.general.surfaceHint")),D(n,f0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"paddingLeft",1),q(n,"paddingRight",1),q(n,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(f0,I0),q(f0,"wrapMode","none"),U(f0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",I0),U(f0,()=>F("settings.general.surfaceChattab"),null),D(r0,_0),q(r0,"flexDirection","row"),q(r0,"gap",1),q(r0,"paddingLeft",1),q(r0,"paddingRight",1),q(r0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(_0,p0),q(_0,"wrapMode","none"),U(_0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",p0),U(_0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,N1),D(t0,g1),D(t0,z0),D(t0,B0),q(t0,"flexDirection","column"),q(t0,"gap",0),q(t0,"paddingTop",1),U(N1,()=>F("settings.general.editor")),q(g1,"wrapMode","word"),U(g1,()=>F("settings.general.editorHint")),D(z0,G0),q(z0,"flexDirection","row"),q(z0,"gap",1),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.cycleEditorKind()}),q(G0,"wrapMode","none"),U(G0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(B0,k0),q(B0,"flexDirection","row"),q(B0,"gap",1),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(k0,"wrapMode","none"),U(k0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),x((R)=>{var m0=Y.text,U0=e0.BOLD,u0=Y.textMuted,W0=Y.text,D0=e0.BOLD,C0=Y.textMuted,J1=Y.text,Y1=e0.BOLD,l0=Y.textMuted,x1=L()?Y.primary:void 0,b0=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,m1=e0.BOLD,v=Y.text,R0=e0.BOLD,V1=Y.textMuted,R1=Y.text,B1=e0.BOLD,d=Y.textMuted,Y0=A()?Y.primary:void 0,y0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,S0=e0.BOLD,jJ=O()?Y.primary:void 0,MJ=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,QJ=e0.BOLD,$J=Y.text,nz=e0.BOLD,gJ=Y.textMuted,iz=g()?Y.primary:void 0,MY=g()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,m=e0.BOLD,i=Y.text,$=e0.BOLD,w=Y.textMuted,d0=u()?Y.primary:void 0,c0=u()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,O0=e0.BOLD,n0=_()?Y.primary:void 0,f1=_()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,L1=e0.BOLD,WJ=Y.text,Xz=e0.BOLD,FY=Y.textMuted,WW=S()?Y.primary:void 0,VW=S()?Y.selectedListItemText:Y.accent,KW=e0.BOLD,UW=N()?Y.primary:void 0,DW=N()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return m0!==R.e&&(R.e=q(I,"fg",m0,R.e)),U0!==R.t&&(R.t=q(I,"attributes",U0,R.t)),u0!==R.a&&(R.a=q(r,"fg",u0,R.a)),W0!==R.o&&(R.o=q(J0,"fg",W0,R.o)),D0!==R.i&&(R.i=q(J0,"attributes",D0,R.i)),C0!==R.n&&(R.n=q(T,"fg",C0,R.n)),J1!==R.s&&(R.s=q(p,"fg",J1,R.s)),Y1!==R.h&&(R.h=q(p,"attributes",Y1,R.h)),l0!==R.r&&(R.r=q(j0,"fg",l0,R.r)),x1!==R.d&&(R.d=q(F0,"backgroundColor",x1,R.d)),b0!==R.l&&(R.l=q(V0,"fg",b0,R.l)),m1!==R.u&&(R.u=q(V0,"attributes",m1,R.u)),v!==R.c&&(R.c=q(h,"fg",v,R.c)),R0!==R.w&&(R.w=q(h,"attributes",R0,R.w)),V1!==R.m&&(R.m=q(C,"fg",V1,R.m)),R1!==R.f&&(R.f=q(E,"fg",R1,R.f)),B1!==R.y&&(R.y=q(E,"attributes",B1,R.y)),d!==R.g&&(R.g=q(c,"fg",d,R.g)),Y0!==R.p&&(R.p=q(s,"backgroundColor",Y0,R.p)),y0!==R.b&&(R.b=q(Z0,"fg",y0,R.b)),S0!==R.T&&(R.T=q(Z0,"attributes",S0,R.T)),jJ!==R.A&&(R.A=q(h0,"backgroundColor",jJ,R.A)),MJ!==R.O&&(R.O=q(g0,"fg",MJ,R.O)),QJ!==R.I&&(R.I=q(g0,"attributes",QJ,R.I)),$J!==R.S&&(R.S=q(L0,"fg",$J,R.S)),nz!==R.W&&(R.W=q(L0,"attributes",nz,R.W)),gJ!==R.C&&(R.C=q(Q0,"fg",gJ,R.C)),iz!==R.B&&(R.B=q(M0,"backgroundColor",iz,R.B)),MY!==R.v&&(R.v=q(T0,"fg",MY,R.v)),m!==R.k&&(R.k=q(T0,"attributes",m,R.k)),i!==R.x&&(R.x=q(w0,"fg",i,R.x)),$!==R.j&&(R.j=q(w0,"attributes",$,R.j)),w!==R.q&&(R.q=q(v0,"fg",w,R.q)),d0!==R.z&&(R.z=q(n,"backgroundColor",d0,R.z)),c0!==R.P&&(R.P=q(f0,"fg",c0,R.P)),O0!==R.H&&(R.H=q(f0,"attributes",O0,R.H)),n0!==R.F&&(R.F=q(r0,"backgroundColor",n0,R.F)),f1!==R.M&&(R.M=q(_0,"fg",f1,R.M)),L1!==R.D&&(R.D=q(_0,"attributes",L1,R.D)),WJ!==R.R&&(R.R=q(N1,"fg",WJ,R.R)),Xz!==R.E&&(R.E=q(N1,"attributes",Xz,R.E)),FY!==R.L&&(R.L=q(g1,"fg",FY,R.L)),WW!==R.N&&(R.N=q(z0,"backgroundColor",WW,R.N)),VW!==R.G&&(R.G=q(G0,"fg",VW,R.G)),KW!==R.U&&(R.U=q(G0,"attributes",KW,R.U)),UW!==R.K&&(R.K=q(B0,"backgroundColor",UW,R.K)),DW!==R.V&&(R.V=q(k0,"fg",DW,R.V)),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,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),M})()}function u3(J){let{theme:z}=i0(),Y=()=>J.vendors.length;return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("box"),H=W("text");return D(G,X),D(G,Z),D(G,Q),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.engines.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.engines.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Q1,{get each(){return J.vendors},children:(B,V)=>{let j=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(B)),q(O,"wrapMode","none"),U(O,()=>J.commandText(B),null),U(O,(()=>{var g=x0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):x0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),x((g)=>{var u=j()?z.primary:void 0,_=j()?z.selectedListItemText:z.accent,S=e0.BOLD,N=j()?z.selectedListItemText:z.text,M=e0.BOLD,I=j()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return u!==g.e&&(g.e=q(K,"backgroundColor",u,g.e)),_!==g.t&&(g.t=q(L,"fg",_,g.t)),S!==g.a&&(g.a=q(L,"attributes",S,g.a)),N!==g.o&&(g.o=q(A,"fg",N,g.o)),M!==g.i&&(g.i=q(A,"attributes",M,g.i)),I!==g.n&&(g.n=q(O,"fg",I,g.n)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),f),D(f,H),q(f,"flexDirection","row"),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(H,"wrapMode","none"),U(H,()=>F("settings.engines.addEngine")),x((B)=>{var V=z.text,j=e0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(X,"attributes",j,B.t)),K!==B.a&&(B.a=q(Z,"fg",K,B.a)),L!==B.o&&(B.o=q(f,"backgroundColor",L,B.o)),A!==B.i&&(B.i=q(H,"fg",A,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G})()}function E3(J){let{theme:z}=i0(),Y=(G)=>G.binary.found?`Binary: ${G.binary.path}`:`Binary: ${G.binary.error}`;return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(G,X),D(G,Z),D(G,Q),D(G,H),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.accounts.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.accounts.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),D(f,E0("claude-code")),U(Q,b(X0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(X0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let g=[O.organization,O.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return q(u,"wrapMode","word"),U(u,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(u,g?` (${g})`:"",null),x((_)=>q(u,"fg",z.success,_)),u})()}return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(H,B),q(H,"flexDirection","column"),q(H,"gap",0),D(B,E0("codex")),U(H,b(X0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(H,b(X0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(g,(()=>{var u=x0(()=>!!O.plan);return()=>u()?` (${O.plan})`:""})(),null),x((u)=>q(g,"fg",z.success,u)),g})();if(O.kind==="apikey")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.apiKeyConfigured")),x((u)=>q(g,"fg",z.success,u)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,j),q(V,"flexDirection","column"),q(V,"gap",0),D(j,E0("copilot")),U(V,b(X0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),x((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(X0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.tokenConfigured",{source:O.source})),x((u)=>q(g,"fg",z.success,u)),g})();if(O.kind==="oauth")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.copilotDetected")),x((u)=>q(g,"fg",z.success,u)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),x((u)=>q(g,"fg",z.textMuted,u)),g})()},null),U(L,b(X0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),x((u)=>q(g,"fg",z.warning,u)),g})()}),null),x((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),x((K)=>{var L=z.text,A=e0.BOLD,O=z.textMuted,g=z.text,u=e0.BOLD,_=z.text,S=e0.BOLD,N=z.text,M=e0.BOLD;return L!==K.e&&(K.e=q(X,"fg",L,K.e)),A!==K.t&&(K.t=q(X,"attributes",A,K.t)),O!==K.a&&(K.a=q(Z,"fg",O,K.a)),g!==K.o&&(K.o=q(f,"fg",g,K.o)),u!==K.i&&(K.i=q(f,"attributes",u,K.i)),_!==K.n&&(K.n=q(B,"fg",_,K.n)),S!==K.s&&(K.s=q(B,"attributes",S,K.s)),N!==K.h&&(K.h=q(j,"fg",N,K.h)),M!==K.r&&(K.r=q(j,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),G})()}function w3(J){let{theme:z}=i0(),Y=()=>J.level()==="body",G=()=>Y()&&J.bodyRow()===0,X=()=>Y()&&J.bodyRow()===1,Z=()=>Y()&&J.bodyRow()===2,Q=(B)=>B?z.primary:z.textMuted,f=(B)=>B?e0.BOLD|e0.UNDERLINE:void 0,H;return s0(()=>{if(J.body()===""&&H&&H.plainText!=="")H.setText("")}),(()=>{var B=W("box"),V=W("text"),j=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),g=W("box"),u=W("text"),_=W("textarea"),S=W("box"),N=W("text");return D(B,V),D(B,j),D(B,K),q(B,"flexDirection","column"),q(B,"gap",1),U(V,()=>F("settings.feedback.title")),q(j,"wrapMode","word"),U(j,()=>F("settings.feedback.hint")),D(K,L),D(K,g),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(LJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(g,u),D(g,_),q(g,"gap",0),U(u,()=>F("settings.feedback.descriptionLabel")),mz((M)=>{H=M},_),q(_,"height",4),q(_,"wrapMode","word"),q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(_,"onContentChange",()=>J.setBody(H?.plainText??"")),D(S,N),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(N,()=>F("settings.feedback.send")),U(B,b(X0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),x((I)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,I)),M}}),null),x((M)=>{var I=z.text,r=e0.BOLD,l=z.textMuted,e=Q(G()),J0=f(G()),T=J.title(),q0=F("settings.feedback.titlePlaceholder"),p=G(),j0=Q(X()),F0=f(X()),V0=J.body(),t=F("settings.feedback.descriptionPlaceholder"),h=X(),C=Z()?z.primary:z.backgroundElement,o=Z()?z.selectedListItemText:z.accent,E=e0.BOLD;return I!==M.e&&(M.e=q(V,"fg",I,M.e)),r!==M.t&&(M.t=q(V,"attributes",r,M.t)),l!==M.a&&(M.a=q(j,"fg",l,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),J0!==M.i&&(M.i=q(A,"attributes",J0,M.i)),T!==M.n&&(M.n=q(O,"value",T,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),p!==M.h&&(M.h=q(O,"focused",p,M.h)),j0!==M.r&&(M.r=q(u,"fg",j0,M.r)),F0!==M.d&&(M.d=q(u,"attributes",F0,M.d)),V0!==M.l&&(M.l=q(_,"initialValue",V0,M.l)),t!==M.u&&(M.u=q(_,"placeholder",t,M.u)),h!==M.c&&(M.c=q(_,"focused",h,M.c)),C!==M.w&&(M.w=q(S,"backgroundColor",C,M.w)),o!==M.m&&(M.m=q(N,"fg",o,M.m)),E!==M.f&&(M.f=q(N,"attributes",E,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 P3(J){let{theme:z}=i0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,G=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>DQ(UQ(J.hasDaemon),"remote-projects"),Z=()=>J.level()==="body"&&J.bodyRow()===X(),Q=()=>DQ(UQ(J.hasDaemon),"auto-status"),f=()=>J.level()==="body"&&J.bodyRow()===Q(),H=()=>DQ(UQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),K=W("text"),L=W("box"),A=W("text"),O=W("text"),g=W("box"),u=W("text"),_=W("text"),S=W("box"),N=W("text"),M=W("text"),I=W("box"),r=W("text"),l=W("text"),e=W("box"),J0=W("text");return D(V,j),D(V,K),D(V,L),D(V,O),D(V,g),q(V,"flexDirection","column"),q(V,"gap",1),U(j,()=>F("settings.dev.reset")),q(K,"wrapMode","word"),U(K,()=>F("settings.dev.resetHint")),D(L,A),q(L,"flexDirection","row"),q(L,"paddingLeft",1),q(L,"paddingRight",1),q(L,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(A,()=>F("settings.dev.resetButton")),U(V,b(X0,{get when(){return J.hasDaemon},get children(){var T=W("box"),q0=W("text"),p=W("text"),j0=W("box"),F0=W("text");return D(T,q0),D(T,p),D(T,j0),q(T,"flexDirection","column"),q(T,"gap",0),q(T,"paddingTop",1),U(q0,()=>F("settings.dev.restart")),q(p,"wrapMode","word"),U(p,()=>F("settings.dev.restartHint")),D(j0,F0),q(j0,"flexDirection","row"),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(F0,()=>F("settings.dev.restartButton")),x((V0)=>{var t=z.text,h=e0.BOLD,C=z.textMuted,o=G()?z.primary:z.backgroundElement,E=G()?z.selectedListItemText:z.accent,c=e0.BOLD;return t!==V0.e&&(V0.e=q(q0,"fg",t,V0.e)),h!==V0.t&&(V0.t=q(q0,"attributes",h,V0.t)),C!==V0.a&&(V0.a=q(p,"fg",C,V0.a)),o!==V0.o&&(V0.o=q(j0,"backgroundColor",o,V0.o)),E!==V0.i&&(V0.i=q(F0,"fg",E,V0.i)),c!==V0.n&&(V0.n=q(F0,"attributes",c,V0.n)),V0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),O),q(O,"wrapMode","word"),U(O,()=>F("settings.dev.doctorHint")),D(g,u),D(g,_),D(g,S),D(g,M),D(g,I),D(g,l),D(g,e),q(g,"flexDirection","column"),q(g,"gap",0),q(g,"paddingTop",1),U(u,()=>F("settings.dev.experimental")),q(_,"wrapMode","word"),U(_,()=>F("settings.dev.remoteHint")),D(S,N),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),U(N,(()=>{var T=x0(()=>!!J.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(M,"wrapMode","word"),U(M,()=>F("settings.dev.autoStatusHint")),D(I,r),q(I,"flexDirection","row"),q(I,"paddingLeft",1),q(I,"paddingRight",1),q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(r,(()=>{var T=x0(()=>!!J.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(l,"wrapMode","word"),U(l,()=>F("settings.dev.dispatcherHint")),D(e,J0),q(e,"flexDirection","row"),q(e,"paddingLeft",1),q(e,"paddingRight",1),q(e,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleDispatcher()}),U(J0,(()=>{var T=x0(()=>!!J.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),x((T)=>{var q0=z.text,p=e0.BOLD,j0=z.textMuted,F0=Y()?z.primary:z.backgroundElement,V0=Y()?z.selectedListItemText:z.warning,t=e0.BOLD,h=z.textMuted,C=z.text,o=e0.BOLD,E=z.textMuted,c=Z()?z.primary:z.backgroundElement,s=Z()?z.selectedListItemText:z.text,Z0=J.remoteProjectsEnabled()?e0.BOLD:void 0,A0=z.textMuted,h0=f()?z.primary:z.backgroundElement,g0=f()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?e0.BOLD:void 0,y=z.textMuted,L0=B()?z.primary:z.backgroundElement,Q0=B()?z.selectedListItemText:z.text,M0=J.dispatcherEnabled()?e0.BOLD:void 0;return q0!==T.e&&(T.e=q(j,"fg",q0,T.e)),p!==T.t&&(T.t=q(j,"attributes",p,T.t)),j0!==T.a&&(T.a=q(K,"fg",j0,T.a)),F0!==T.o&&(T.o=q(L,"backgroundColor",F0,T.o)),V0!==T.i&&(T.i=q(A,"fg",V0,T.i)),t!==T.n&&(T.n=q(A,"attributes",t,T.n)),h!==T.s&&(T.s=q(O,"fg",h,T.s)),C!==T.h&&(T.h=q(u,"fg",C,T.h)),o!==T.r&&(T.r=q(u,"attributes",o,T.r)),E!==T.d&&(T.d=q(_,"fg",E,T.d)),c!==T.l&&(T.l=q(S,"backgroundColor",c,T.l)),s!==T.u&&(T.u=q(N,"fg",s,T.u)),Z0!==T.c&&(T.c=q(N,"attributes",Z0,T.c)),A0!==T.w&&(T.w=q(M,"fg",A0,T.w)),h0!==T.m&&(T.m=q(I,"backgroundColor",h0,T.m)),g0!==T.f&&(T.f=q(r,"fg",g0,T.f)),N0!==T.y&&(T.y=q(r,"attributes",N0,T.y)),y!==T.g&&(T.g=q(l,"fg",y,T.g)),L0!==T.p&&(T.p=q(e,"backgroundColor",L0,T.p)),Q0!==T.b&&(T.b=q(J0,"fg",Q0,T.b)),M0!==T.T&&(T.T=q(J0,"attributes",M0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function h3(){let{theme:J}=i0(),z=J3(),Y=Object.keys(t8).sort();return(()=>{var G=W("box"),X=W("text"),Z=W("text"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("text");return D(G,X),D(G,Z),D(G,Q),D(G,B),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(X,()=>F("settings.keybindings.title")),q(Z,"wrapMode","word"),U(Z,()=>F("settings.keybindings.hint")),D(Q,f),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(f,()=>F("settings.keybindings.configFile")),q(H,"wrapMode","word"),U(H,()=>z.path,null),U(H,(()=>{var j=x0(()=>!!z.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),U(G,b(X0,{get when(){return!z.exists},get children(){var j=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),g=W("text"),u=W("text"),_=W("text"),S=W("text"),N=W("text"),M=W("text");return D(j,K),D(j,L),D(j,A),D(j,O),D(j,g),D(j,u),D(j,_),D(j,S),D(j,N),D(j,M),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(A,E0(" chat.fork.new: ctrl+g # string = one chord")),D(O,E0(" sidebar.select: [enter] # list = several chords")),D(g,E0(" files.createPR: null # null = unbind")),D(u,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(_,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,E0("darwin: # platform overlay (also: linux)")),D(N,E0(" bindings:")),D(M,E0(" palette.open: [cmd+p, ctrl+p]")),x((I)=>{var r=J.text,l=e0.BOLD,e=J.textMuted,J0=J.textMuted,T=J.textMuted,q0=J.textMuted,p=J.textMuted,j0=J.textMuted,F0=J.textMuted,V0=J.textMuted,t=J.textMuted;return r!==I.e&&(I.e=q(K,"fg",r,I.e)),l!==I.t&&(I.t=q(K,"attributes",l,I.t)),e!==I.a&&(I.a=q(L,"fg",e,I.a)),J0!==I.o&&(I.o=q(A,"fg",J0,I.o)),T!==I.i&&(I.i=q(O,"fg",T,I.i)),q0!==I.n&&(I.n=q(g,"fg",q0,I.n)),p!==I.s&&(I.s=q(u,"fg",p,I.s)),j0!==I.h&&(I.h=q(_,"fg",j0,I.h)),F0!==I.r&&(I.r=q(S,"fg",F0,I.r)),V0!==I.d&&(I.d=q(N,"fg",V0,I.d)),t!==I.l&&(I.l=q(M,"fg",t,I.l)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),U(G,b(X0,{get when(){return z.exists},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(j,b(X0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),x((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(j,b(Q1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),x((O)=>q(A,"fg",J.text,O)),A})()}),null),x((L)=>{var A=J.text,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),U(G,b(X0,{get when(){return z.warnings.length>0},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(j,b(Q1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),x((O)=>q(A,"fg",J.warning,O)),A})()}),null),x((L)=>{var A=J.warning,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,E0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(B,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),x((j)=>{var K=J.text,L=e0.BOLD,A=J.textMuted,O=J.text,g=e0.BOLD,u=J.textMuted,_=J.textMuted,S=J.textMuted;return K!==j.e&&(j.e=q(X,"fg",K,j.e)),L!==j.t&&(j.t=q(X,"attributes",L,j.t)),A!==j.a&&(j.a=q(Z,"fg",A,j.a)),O!==j.o&&(j.o=q(f,"fg",O,j.o)),g!==j.i&&(j.i=q(f,"attributes",g,j.i)),u!==j.n&&(j.n=q(H,"fg",u,j.n)),_!==j.s&&(j.s=q(B,"fg",_,j.s)),S!==j.h&&(j.h=q(V,"fg",S,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),G})()}var v3=k(()=>{P();P();P();P();P();P();P();P();P();W1();N9();v1();ZJ();_X();Tq();pX();i9()});import{TextAttributes as Yx}from"@opentui/core";function Gx(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function dG(J){let z=c1(),Y=i0(),G=HJ(),{theme:X}=Y,[Z,Q]=a("sidebar"),[f,H]=a("general"),[B,V]=a(0),[j,K]=a(0),[L,A]=a(""),[O,g]=a(""),[u,_]=a(""),S=K0(()=>Y.all().slice().sort()),[,N]=a(Math.max(0,S().findIndex((v)=>v===Y.selected))),M=b3(J.orchestrator),[I,r]=a(null),[l,e]=a(null),[J0,T]=a(null),q0=!1;s0(()=>{if(f()!=="accounts"||q0)return;q0=!0,iQ().then(r),lQ().then(e),$Q().then(T)});function p(){return y3(f(),{themeNames:S(),focusAccentSlots:hG,engineList:w0(),hasDaemon:M})}function j0(){return p().length}function F0(){return xG(J.kv.get(fY,TG))}function V0(v){if(Y.selected===v)return;if(!Y.set(v))return;J.kv.set("activeTheme",v),J.onVisualPrefsChange?.()}function t(){return q9()}function h(v){if(q9()===v)return;qQ(v),J.kv.set(FH,v),J.onVisualPrefsChange?.()}function C(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),J.kv.set("transparentBackground",v),J.onVisualPrefsChange?.()}function o(){C(!Y.transparentBackground)}function E(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),J.kv.set("focusAccent",v),J.onVisualPrefsChange?.()}function c(v){J.kv.set(fY,v)}function s(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function Z0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function A0(){J.kv.set("notifications.toast.enabled",!s())}function h0(){J.kv.set("notifications.sound.enabled",!Z0())}function g0(){return J.kv.get(aq,!0)!==!1}function N0(){J.kv.set(aq,!g0())}function y(){return J.kv.get("experimental.remoteProjects",!1)===!0}function L0(){J.kv.set("experimental.remoteProjects",!y())}function Q0(){return J.kv.get(LG,!1)===!0}function M0(){J.kv.set(LG,!Q0())}function T0(){return J.kv.get(MG,!1)===!0}function X1(){J.kv.set(MG,!T0())}function z1(){let v=J.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((R0)=>typeof R0==="string"&&R0.trim().length>0):[]}function w0(){return[...i1,...z1()]}function v0(v){let R0=J.kv.get(Kz(v),"");return typeof R0==="string"?R0.trim():""}function n(v){return v0(v)||NZ(v).join(" ")}function f0(v){return qJ(v)&&v0(v).length===0&&!r0(v)}function I0(v){let R0=J.kv.get(Uz(v),"");return typeof R0==="string"?R0.trim():""}function r0(v){return I0(v).length>0}function _0(v){return I0(v)||o8[v]||v}let[p0,t0]=a(uJ(C1("lastSelectedVendor"),z1()));function N1(v){return p0()===v}function g1(v){o1("lastSelectedVendor",v),J.kv.set("lastSelectedVendor",v),t0(v)}async function z0(v){let R0=await DY.show(z,n(v),{dialogTitle:`${_0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(R0===void 0)return;J.kv.set(Kz(v),R0.trim())}async function G0(v){let R0=await DY.show(z,_0(v),{dialogTitle:`${_0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(R0===void 0)return;J.kv.set(Uz(v),R0.trim())}function B0(v){if(J.kv.set(Kz(v),""),J.kv.set(Uz(v),""),!qJ(v))J.kv.set("customEngineIds",z1().filter((R0)=>R0!==v)),K((R0)=>Math.max(0,Math.min(R0,w0().length)))}async function k0(){let v=await DY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let R0=v.trim().toLowerCase();if(!R0||qJ(R0)||z1().includes(R0))return;let V1=await DY.show(z,"",{dialogTitle:`Add engine \xB7 ${R0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(V1===void 0)return;let R1=await DY.show(z,R0,{dialogTitle:`Add engine \xB7 ${R0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z1(),R0]),V1.trim())J.kv.set(Kz(R0),V1.trim());let B1=R1?.trim()??"";J.kv.set(Uz(R0),B1&&B1!==R0?B1:Gx(R0))}function R(){if(f()!=="engines"||Z()!=="body")return null;let v=kH(p(),j());return v?.kind==="engine"?v.vendor:null}function m0(){return bX(J.kv.get(qY,Nf))}function U0(){let v=yG.indexOf(m0()),R0=yG[(v+1)%yG.length];if(R0)J.kv.set(qY,R0)}function u0(){let v=J.kv.get(mY,"");return typeof v==="string"?v:""}async function W0(){let v=await DY.show(z,u0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let R0=v.trim();if(J.kv.set(mY,R0),R0)J.kv.set(qY,"custom")}async function D0(){_("submitting...");try{let v=vX({title:L(),body:O()});_(`sent: ${v.url}`),A(""),g(""),K(0)}catch(v){_(`error: ${v instanceof Error?v.message:String(v)}`)}}let C0=()=>f()==="feedback"&&Z()==="body";function J1(v){let R0=j()+v;if(R0<0||R0>2){Q("sidebar");return}K(R0)}function Y1(){if(Z()!=="sidebar"||j0()===0)return;if(Q("body"),K(0),f()==="general")N(0)}function l0(v){if(Z()==="sidebar"){let R1=(B()+v+cG.length)%cG.length;V(R1);let B1=cG[R1];if(B1)H(B1.id),K(0);return}let R0=j0();if(R0===0)return;let V1=(j()+v+R0)%R0;if(K(V1),kH(p(),V1)?.kind==="theme")N(V1)}function x1(v){H(v),V(cG.findIndex((R0)=>R0.id===v)),K(0),Q("sidebar")}let b0={theme:(v)=>V0(v.name),language:(v)=>h(v.locale),transparent:()=>o(),focusAccent:(v)=>E(v.slot),toast:()=>A0(),sound:()=>h0(),zenKeepTasks:()=>N0(),surface:(v)=>c(v.surface),editorKind:()=>U0(),editorCustom:()=>void W0(),engine:(v)=>void z0(v.vendor),engineAdd:()=>void k0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void D0(),devReset:()=>void v9(z,J.kv,G),devRestartDaemon:()=>void m9(z,J.orchestrator,G),devRemoteProjects:()=>L0(),devAutoStatus:()=>M0(),devDispatcher:()=>X1()};function m1(){let v=kH(p(),j());if(!v)return;b0[v.kind](v)}return D1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!C0(),bindings:[{key:"down",cmd:()=>l0(1)},{key:"up",cmd:()=>l0(-1)},{key:"j",cmd:()=>l0(1)},{key:"k",cmd:()=>l0(-1)},{key:"tab",cmd:()=>l0(1)},{key:"right",cmd:Y1},{key:"l",cmd:Y1},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(Z()==="sidebar"){Y1();return}m1()}},{key:"t",cmd:o},{key:"r",cmd:()=>{let v=R();if(v)G0(v)}},{key:"x",cmd:()=>{let v=R();if(v)B0(v)}},{key:"d",cmd:()=>{let v=R();if(v)g1(v)}}]})),D1(()=>({enabled:C0(),bindings:[{key:"tab",cmd:()=>J1(1)},{key:"shift+tab",cmd:()=>J1(-1)}]})),D1(()=>({enabled:C0()&&j()===2,bindings:[{key:"return",cmd:()=>void D0()}]})),(()=>{var v=W("box"),R0=W("box"),V1=W("text"),R1=W("text"),B1=W("box"),d=W("box"),Y0=W("box"),y0=W("text");return D(v,R0),D(v,B1),D(v,Y0),q(v,"paddingLeft",2),q(v,"paddingRight",2),q(v,"paddingBottom",1),q(v,"gap",1),D(R0,V1),D(R0,R1),q(R0,"flexDirection","row"),q(R0,"justifyContent","space-between"),U(V1,()=>F("settings.title")),q(R1,"onMouseUp",()=>J.onClose()),U(R1,()=>F("settings.esc")),D(B1,d),q(B1,"flexDirection","row"),q(B1,"gap",2),U(B1,b(T3,{level:Z,cursor:B,switchSection:x1}),d),q(d,"flexGrow",1),q(d,"flexShrink",1),q(d,"flexDirection","column"),q(d,"gap",1),U(d,b(X0,{get when(){return f()==="general"},get children(){return b(x3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:N,selectTheme:V0,currentLocale:t,selectLanguage:h,toggleTransparent:o,selectFocusAccent:E,toastEnabled:s,soundEnabled:Z0,toggleToast:A0,toggleSound:h0,zenKeepsTasks:g0,toggleZenKeepsTasks:N0,settingsSurface:F0,selectSurface:c,editorKind:m0,cycleEditorKind:U0,editorCustomCommand:u0,editEditorCustom:()=>void W0()})}}),null),U(d,b(X0,{get when(){return f()==="engines"},get children(){return b(u3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,get vendors(){return w0()},isCustom:(S0)=>!qJ(S0),displayName:_0,commandText:n,isDefault:f0,isDefaultEngine:N1,editEngine:(S0)=>void z0(S0),renameEngine:(S0)=>void G0(S0),resetEngine:B0,onAddEngine:()=>void k0()})}}),null),U(d,b(X0,{get when(){return f()==="accounts"},get children(){return b(E3,{claudeStatus:I,codexStatus:l,copilotStatus:J0})}}),null),U(d,b(X0,{get when(){return f()==="keys"},get children(){return b(h3,{})}}),null),U(d,b(X0,{get when(){return f()==="feedback"},get children(){return b(w3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,title:L,setTitle:(S0)=>{A(S0),_("")},body:O,setBody:(S0)=>{g(S0),_("")},status:u,onTitleSubmit:()=>K(1),submit:()=>void D0()})}}),null),U(d,b(X0,{get when(){return f()==="dev"},get children(){return b(P3,{level:Z,bodyRow:j,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void v9(z,J.kv,G),confirmRestartDaemon:()=>void m9(z,J.orchestrator,G),remoteProjectsEnabled:y,toggleRemoteProjects:L0,autoStatusEnabled:Q0,toggleAutoStatus:M0,dispatcherEnabled:T0,toggleDispatcher:X1})}}),null),D(Y0,y0),q(Y0,"paddingTop",0),U(y0,(()=>{var S0=x0(()=>!!C0());return()=>S0()?F("settings.nav.feedback"):F("settings.nav.default")})()),x((S0)=>{var jJ=Yx.BOLD,MJ=X.text,QJ=X.textMuted,$J=X.textMuted;return jJ!==S0.e&&(S0.e=q(V1,"attributes",jJ,S0.e)),MJ!==S0.t&&(S0.t=q(V1,"fg",MJ,S0.t)),QJ!==S0.a&&(S0.a=q(R1,"fg",QJ,S0.a)),$J!==S0.o&&(S0.o=q(y0,"fg",$J,S0.o)),S0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var l9=k(()=>{P();P();P();P();P();P();P();P();W1();QG();vJ();lf();CZ();Nq();O1();XB();l1();v1();ZJ();kf();xJ();S9();lJ();P9();I3();i9();v3();dG.show=(J,z,Y)=>{let G=!1;return new Promise((X)=>{J.replace(()=>b(dG,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{G=!0},onClose:()=>X({visualPrefsChanged:G})}),()=>X({visualPrefsChanged:G}))})}});import{TextAttributes as Xx}from"@opentui/core";function c3(){let{theme:J}=i0(),z=vz(),Y=LH(),G=()=>Y.toasts().slice(-m3),X=()=>Math.max(0,z().width-Zx-Qx),Z=()=>Math.max(0,z().height-qx-m3-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Q1,{get each(){return G()},children:(f)=>{let H=()=>f.kind==="needs_input"?J.warning:f.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>f.kind==="needs_input"?"?":f.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),K=W("text"),L=W("text");return D(j,K),D(j,L),q(j,"flexDirection","row"),q(j,"gap",1),q(j,"paddingLeft",1),q(j,"paddingRight",1),q(j,"onMouseUp",()=>Y.dismiss(f.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>f.title),x((A)=>{var O=H(),g=B(),u=Xx.BOLD,_=B();return O!==A.e&&(A.e=q(j,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(K,"fg",g,A.t)),u!==A.a&&(A.a=q(K,"attributes",u,A.a)),_!==A.o&&(A.o=q(L,"fg",_,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),x((f)=>{var H=X(),B=Z();return H!==f.e&&(f.e=q(Q,"left",H,f.e)),B!==f.t&&(f.t=q(Q,"top",B,f.t)),f},{e:void 0,t:void 0}),Q}})}var m3=4,Zx=40,Qx=2,qx=2;var d3=k(()=>{P();P();P();P();P();P();P();W1();MH();v1()});import{TextAttributes as fx}from"@opentui/core";function Hx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function n3(J){let{theme:z}=i0(),Y=()=>Math.max(4,J.width()-2);return b(X0,{get when(){return J.stale()},get children(){var G=W("box"),X=W("text"),Z=W("box"),Q=W("text"),f=W("box"),H=W("text");return D(G,X),D(G,Z),D(G,f),q(G,"flexDirection","column"),q(G,"flexShrink",0),q(G,"paddingLeft",1),q(G,"paddingRight",1),q(G,"paddingBottom",1),q(X,"wrapMode","none"),U(X,()=>"\u2594".repeat(Y())),D(Z,Q),q(Z,"flexDirection","row"),q(Z,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(f,H),q(f,"flexDirection","row"),q(f,"gap",1),q(H,"wrapMode","word"),U(H,()=>Hx(J.daemonVersion(),J.clientVersion)),x((B)=>{var{warning:V,warning:j}=z,K=fx.BOLD,L=z.text;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(Q,"fg",j,B.t)),K!==B.a&&(B.a=q(Q,"attributes",K,B.a)),L!==B.o&&(B.o=q(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),G}})}var i3=k(()=>{P();P();P();P();P();P();W1();v1();ZJ()});function l3(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Bx(J){let z=J.tasks.find((Z)=>Z.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(Z){return J.logger.error(`${J.logPrefix} archive failed:`,Z),null}if(!Y)return{archived:Y};let G=M1(J.taskId),X=l3(J.tasks,J.taskId);if(await wz(G,X?M1(X.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)}),J.updateActiveTask)await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await eJ(G).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{archived:Y,nextTask:X}}async function jx(J){let z=l3(J.tasks,J.taskId),Y=M1(J.taskId);if(J.switchBeforeKill)await wz(Y,z?M1(z.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await eJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{nextTask:z}}async function $3(J,z){if(!J.orch)return;let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Bx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function a3(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(f){J.logger.error(`${J.logPrefix} forget project failed:`,f),J.notifyError?.(`Couldn't remove: ${f instanceof Error?f.message:String(f)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let X=!1;try{await J.orch.deleteTask(z),X=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(n8)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),X=!0}catch(B){J.logger.error(`${J.logPrefix} force delete failed:`,B),J.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!X)return;let{nextTask:Z}=await jx({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,Z)}async function _3(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;let G=await J.promptText(Y.title);if(!G||!J.orch)return;try{await J.orch.setTitle(z,G)}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 p3(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||Y.kind==="main")return;let G=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!G||!J.orch)return;try{await J.orch.setBranch(z,G)}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 r3(J,z){let Y=J.tasks().find((Z)=>Z.id===z);if(!Y||!J.orch)return;let G=await tz(),X=OY(G,Y.vendor??a1);try{await J.orch.setVendor(z,X)}catch(Z){J.logger.error(`${J.logPrefix} task.setVendor failed:`,Z),J.notifyError?.(`Couldn't switch engine: ${Z instanceof Error?Z.message:String(Z)}`);return}J.notifyInfo?.(`Engine \u2192 ${FG(X)} (applies on reopen)`),await J.reload?.()}async function o3(J){let z=CJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let G=J.lastVendor()??a1,X=await tz();if(X.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let Z=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:G,availableVendors:X,discoverAdoptable:Z?(H)=>Z.discoverAdoptableWorktrees(H):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),_z(Q.repo),J.onRepoSaved?.(),!Z){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let f;if(Q.mode==="adopt"){let H=Q.adopt.length,B=0,V;for(let j of Q.adopt)try{f=(await Z.adoptWorktree({repo:Q.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:Q.vendor})).id,B++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${j.worktreePath}:`,K)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<H)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:H}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{f=(await Z.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(H){J.logger.error(`${J.logPrefix} task.create failed:`,H),J.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await J.reload?.(),f)J.selectTask?.(f),await J.enterTask?.(f)}var s3=k(()=>{QG();vJ();$8();O1();ZJ();sJ();l1();YJ()});import{spawn as Wx}from"child_process";import{existsSync as Vx}from"fs";import{basename as Kx,delimiter as Ux,isAbsolute as Dx,join as Lx}from"path";function $9(J,z,Y){if(Dx(J))return Y(J);let G=z.PATH??"";for(let X of G.split(Ux)){if(!X)continue;if(Y(Lx(X,J)))return!0}return!1}function Ox(J){let z=Kx(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 t3(J={}){let z=J.env??process.env,Y=J.platform??process.platform,G=J.exists??Vx,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:Ox(X),command:X,args:[]};for(let Z of Mx)if($9(Z.command,z,G))return{id:Z.id,label:Z.label,command:Z.command,args:[]};if(Y==="darwin"&&$9("open",z,G)){for(let Z of Fx)if(Z.paths.some((Q)=>G(Q)))return{id:Z.id,label:Z.label,command:"open",args:["-a",Z.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&$9("xdg-open",z,G))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Ax(J,z){return[z.command,[...z.args,J]]}function e3(J,z,Y={}){if(!J)return!1;let G=Y.spawn??Wx,[X,Z]=Ax(J,z);try{let Q=G(X,Z,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Mx,Fx;var JM=k(()=>{Mx=[{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"}],Fx=[{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 bH(J){let z=new Map;function Y(G){let X=z.get(G);if(!X){let[Z,Q]=a(J.initial,J.equals?{equals:J.equals}:void 0);X={read:Z,write:(f)=>Q(()=>f),inFlight:!1,nextAllowedAt:0},z.set(G,X)}return X}return{read(G){if(!G)return J.initial;return Y(G).read()},poll(G){if(!G)return;let X=Y(G);zX(X,J,(Z)=>J.run(G,Z),(Z)=>X.write(Z))},reset(){z.clear()}}}var LQ=k(()=>{W1();YX();YX()});import{stat as Rx}from"fs/promises";import{join as gx}from"path";async function bx(J){try{let z=await Rx(gx(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function Sx(J,z,Y=GY){let G=await bx(J);if(G!==null){let f=zM.get(J);if(f&&f.fingerprint===G)return f.value}let X="",Z=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:nJ(),signal:z}),Q=Z.status===0?Z.stdout.trim():"";if(Q&&Q!=="HEAD")X=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:nJ(),signal:z})).status===0)X="(detached)";if(G!==null)zM.set(J,{fingerprint:G,value:X});return X}function GM(J){return YM.read(J)}function XM(J){YM.poll(J)}var Cx=2000,Nx=30000,kx=1500,zM,YM;var ZM=k(()=>{cY();LQ();zM=new Map;YM=bH({initial:"",timeoutMs:Cx,slowRetryMs:Nx,minIntervalMs:kx,run:(J,z)=>Sx(J,z)})});function a9(J){let z=J.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,G=null,X=()=>{Y=!0,G?.(),G=z(()=>{Y=!1,G=null},700)},Z=()=>{Y=!1,G?.(),G=null},Q=(H)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),j=V<0?0:V,K=Math.min(B.length-1,Math.max(0,j+H));J.setCursor(K)},f=(H)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){Z(),Q(1)},moveUp(){Z(),Q(-1)},selectCurrent(){Z();let H=J.getFlatIds(),B=J.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)Z(),f(0);else X()},pressShiftG(){Z(),f(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){Z()}}}function QM(J){let z=a9({getCursor:()=>J.cursorIndex(),setCursor:(Z)=>J.setCursorIndex(Z),getFlatIds:()=>J.flatTaskIds(),onSelect:(Z)=>J.onSelect(Z)}),Y=()=>{let Z=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=Z.length)return;return Z[Q]},G=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;D1(()=>({enabled:J.focused()&&!G(),bindings:pY({"sidebar.nav":(Z,Q)=>{let f=(Q??0)%2===0;if(X()){let H=Y();if(H===void 0)return;J.onMoveRequest?.(H,f?1:-1);return}if(f)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(X()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(Z)=>{if(X())return;if(Z.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onDeleteRequest?.(Z)},"sidebar.archive":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onArchiveRequest?.(Z)},"sidebar.localMerge":(Z)=>{if(!Z.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(X())return;let Z=Y();if(Z!==void 0)J.onRenameRequest?.(Z)},"sidebar.pin":(Z)=>{if(X())return;if(!Z.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),D1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),D1(()=>({enabled:J.focused(),bindings:pY({"sidebar.view":(Z,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),D1(()=>({enabled:J.focused()&&G(),bindings:pY({"sidebar.search.nav":(Z,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 qM=k(()=>{rX();xJ()});function _9(J,z){if(z<=0)return"";if(J.length<=z)return J;return`${J.slice(0,Math.max(0,z-1))}\u2026`}function p9(J,z){return` ${_9(J,Math.max(0,z))}`}function yx(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Tx(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function BM(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 xx(){return F("tasks.subtitle.noTracking")}function ux(){return F("tasks.subtitle.materializing")}function Ex(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!qJ(J.vendor)}function r9(J){let{task:z}=J,Y=z.kind==="main",G=Y?J.mainBranch??"":z.branch,X=Ix[z.status],Z=J.activity?.state,Q=Z!==void 0,f=wx(Z),H=Tx(Z),B=Ex(z)&&!Q,V=J.job!==void 0,j=V||!B&&(Z==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=eX[J.spinnerFrame]??eX[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":f?.tone??X.tone),A=B?xx():yx(z.status),O=V?J.truncateBranch(ux(),J.subtitleBudget):H?J.truncateBranch(H.text,J.subtitleBudget):G.length>0?J.truncateBranch(G,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),g=B?fM:f?.glyph??X.glyph,u=B?fM:f?.glyph??"\u2605";return{isMain:Y,titleText:Y?Nz(z.repo):z.title,subtitleText:O,loading:j,stateGlyph:j?K:g,projectGlyph:j?K:u,tone:L}}function o9(J,z){if(!J.loading)return J;let Y=eX[z()%eX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function wx(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 Ix,eX,HM=100,fM="\xB7";var jM=k(()=>{ZJ();l1();gH();Ix={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};eX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function s9(J){return WM.read(J)}function t9(J){WM.poll(J)}var Px=4000,hx=60000,vx=1500,mx,WM;var VM=k(()=>{cY();LQ();xX();LQ();mx={added:0,deleted:0},WM=bH({initial:mx,equals:hz,timeoutMs:Px,slowRetryMs:hx,minIntervalMs:vx,run:async(J,z)=>{let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:nJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}})});import{TextAttributes as E1}from"@opentui/core";function cx(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function UM(J,z=nx){if(J.length<=z)return J;return`${J.slice(0,Math.max(0,z-1))}\u2026`}function ix(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function lx(J,z){if(z<=0||J.length<=z)return J;return`\u2026${J.slice(J.length-Math.max(0,z-1))}`}function DM(J){let{theme:z}=i0(),Y=()=>J.focused?J.focused():!0,[G,X]=a("active"),[Z,Q]=a(!1),[f,H]=a(""),[B,V]=a(null),j=()=>J.projectFilter?.()??B(),K=(n)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(n);else V(n)};function L(){H(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(n){Q(!1),H(""),J.onSearchActiveChange?.(!1)}s0(()=>{if(!Z())return;let n=HJ();if(!n)return;let f0=(I0)=>{if(I0.defaultPrevented)return;if(!Y())return;if(I0.ctrl||I0.meta||I0.option)return;if(I0.name==="backspace"){H((p0)=>p0.slice(0,-1));return}let r0=I0.sequence;if(!r0||r0.length!==1)return;let _0=r0.charCodeAt(0);if(_0<32||_0===127)return;H((p0)=>p0+r0)};n.keyInput.on("keypress",f0),k1(()=>n.keyInput.off("keypress",f0))});let[O,g]=a(0),u=setInterval(()=>g((n)=>n+1),dx);k1(()=>clearInterval(u));let[_,S]=a(0),N=setInterval(()=>S((n)=>(n+1)%eX.length),HM);k1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",I=K0(()=>M3(J.tasks(),G())),r=K0(()=>{let n=j();if(!n)return null;let f0=Gz(n);return I().find((I0)=>Gz(I0.repo)===f0)??null}),l=K0(()=>r()?.repo??null),e=K0(()=>r()?.label??"all"),J0=K0(()=>{let n=r();return n?n.count:I().reduce((f0,I0)=>f0+I0.count,0)}),T=K0(()=>{let n=J0();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=K0((n)=>A3(n,x9(J.tasks(),G(),Z()?f():"",M(),l())),[]),p=K0(()=>u9(q0())),j0=K0(()=>O3(q0())),F0=K0(()=>j0().projectRows),V0=K0(()=>j0().taskRows),t=K0(()=>{let n=new Map;for(let f0 of q0())n.set(f0.flatIndex,f0);return n}),h=K0(()=>u9(x9(J.tasks(),G(),"",M(),l())).length),C=K0(()=>V0().length>0);s0(()=>{let n=j(),f0=I();if(n!==null&&f0.length>0&&(f0.length<=1||r()===null))K(null)});function o(){let n=I();if(n.length<=1){K(null);return}let f0=l(),I0=f0?Gz(f0):null,r0=I0===null?-1:n.findIndex((p0)=>Gz(p0.repo)===I0),_0=n[r0+1];K(_0?.repo??null)}let E=()=>J.width?J.width():KM,c=K0(()=>Math.max(6,E()-9)),s=K0(()=>Math.max(6,E()-16)),Z0=vz(),A0=K0(()=>{let n=Math.max(2,Math.min(10,Math.floor(Z0().height*0.25))),f0=Math.max(2,F0().length*2);return Math.min(n,f0)}),[h0,g0]=a(null),[N0,y]=a(-1),L0,Q0,M0,T0=new Map;s0(()=>{let n=J.width?J.width():KM,f0=M0;if(!f0)return;f0.width=n,f0.flexShrink=1,f0.minHeight=0}),s0(IJ([N0,q0],([n])=>{let f0=t().get(n);if(!f0)return;let I0=f0.task.kind==="main"?L0:Q0;if(!I0)return;if(I0.viewport.height<=0)return;let r0=T0.get(n);if(!r0)return;I0.scrollChildIntoView(r0.id)})),s0(IJ(()=>[J.selectedId(),p()],([n,f0])=>{let I0=p1(N0);if(n===null){if(I0===-1&&f0.length>0)y(0);else if(I0>=f0.length)y(Math.max(0,f0.length-1));else if(f0.length===0)y(-1);return}let r0=f0.indexOf(n);if(r0>=0){if(r0!==I0)y(r0)}else if(f0.length===0)y(-1);else if(I0<0||I0>=f0.length)y(f0.length-1)})),s0(IJ(G,()=>{let n=p();y(n.length>0?0:-1)},{defer:!0})),s0(IJ(l,(n)=>y(F3(q0(),n)),{defer:!0})),s0(IJ([Z,f],()=>{if(!Z())return;let n=p();y(n.length>0?0:-1)}));function X1(n){let f0=G(),I0=MQ.findIndex((p0)=>p0.view===f0);if(I0<0)return;let r0=(I0+n+MQ.length)%MQ.length,_0=MQ[r0];if(_0)X(_0.view)}QM({focused:Y,cursorIndex:N0,setCursorIndex:y,flatTaskIds:p,onSelect:(n)=>{J.onSelect(n),J.onActivate?.(n)},onDeleteRequest:(n)=>J.onDeleteRequest?.(n),onArchiveRequest:(n)=>J.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>J.onLocalMergeRequest?.(n),moveMode:J.moveMode,onMoveRequest:(n,f0)=>J.onMoveRequest?.(n,f0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onViewSwitch:(n)=>X1(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>o(),searchMode:Z,onSearchEnter:()=>L(),onSearchExit:(n)=>A(n)});let z1=(n)=>(()=>{var f0=W("box"),I0=W("box"),r0=W("text"),_0=W("text");return D(f0,I0),q(f0,"flexDirection","column"),q(f0,"flexShrink",0),U(f0,b(X0,{get when(){return n.topPad},get children(){var p0=W("box"),t0=W("text");return D(p0,t0),q(p0,"flexShrink",0),D(t0,E0(" ")),q(t0,"wrapMode","none"),p0}}),I0),D(I0,r0),D(I0,_0),q(I0,"flexDirection","row"),q(I0,"flexShrink",0),q(I0,"gap",1),q(I0,"paddingLeft",1),q(I0,"paddingRight",1),q(r0,"wrapMode","none"),U(r0,()=>n.label),q(_0,"wrapMode","none"),U(_0,()=>"\u2500".repeat(Math.max(2,E()-10-n.label.length-(n.suffix?.length??0)))),U(I0,b(X0,{get when(){return n.suffix},get children(){var p0=W("text");return q(p0,"wrapMode","none"),U(p0,()=>n.suffix),x((t0)=>{var N1=z.info,g1=E1.BOLD;return N1!==t0.e&&(t0.e=q(p0,"fg",N1,t0.e)),g1!==t0.t&&(t0.t=q(p0,"attributes",g1,t0.t)),t0},{e:void 0,t:void 0}),p0}}),null),x((p0)=>{var t0=z.textMuted,N1=E1.BOLD,g1=z.border;return t0!==p0.e&&(p0.e=q(r0,"fg",t0,p0.e)),N1!==p0.t&&(p0.t=q(r0,"attributes",N1,p0.t)),g1!==p0.a&&(p0.a=q(_0,"fg",g1,p0.a)),p0},{e:void 0,t:void 0,a:void 0}),f0})(),w0=(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}},v0=(n)=>{let f0=n.row.task,I0=n.row.flatIndex,r0=()=>I0===N0(),_0=()=>f0.id===J.selectedId(),p0=K0(()=>{let R=J.chatRunState?.();if(!R)return!1;let m0=`${f0.id}:`;for(let[U0,u0]of R)if(u0==="running"&&U0.startsWith(m0))return!0;return!1}),t0=K0(()=>{let R=Ef(J.worktreeChanges?.(),f0.worktreePath);if(R)return R;if(O(),!f0.archived)t9(f0.worktreePath);return s9(f0.worktreePath)},void 0,{equals:hz}),N1=K0(()=>{return O(),XM(f0.repo),GM(f0.repo)}),g1=K0(()=>r9({task:f0,activity:J.engineState?.().get(f0.id),job:J.taskJobs?.().get(f0.id),live:p0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:UM,mainBranch:N1()})),z0=K0(()=>o9(g1(),_)),G0=()=>!z0().loading?z.primary:w0(z0().tone),B0=()=>r0()?z.focusAccent:_0()?z.primary:void 0,k0=()=>r0()||_0()?"\u258C":" ";return(()=>{var R=W("box"),m0=W("box"),U0=W("box"),u0=W("text"),W0=W("box"),D0=W("text"),C0=W("text"),J1=W("box"),Y1=W("text"),l0=W("box"),x1=W("text");return D(R,m0),q(R,"flexDirection","column"),q(R,"gap",0),q(R,"paddingBottom",0),D(m0,U0),D(m0,J1),mz((b0)=>{T0.set(I0,b0),k1(()=>{if(T0.get(I0)===b0)T0.delete(I0)})},m0),q(m0,"flexDirection","column"),q(m0,"gap",0),q(m0,"onMouseUp",()=>{if(y(I0),J.onSelect(f0.id),J.activateOnClick)J.onActivate?.(f0.id)}),q(m0,"onMouseOver",(b0)=>g0({task:f0,x:b0.x,y:b0.y})),q(m0,"onMouseOut",()=>g0((b0)=>b0?.task.id===f0.id?null:b0)),D(U0,u0),D(U0,W0),q(U0,"flexDirection","row"),q(U0,"gap",0),q(u0,"wrapMode","none"),U(u0,k0),D(W0,D0),D(W0,C0),q(W0,"flexDirection","row"),q(W0,"flexGrow",1),q(W0,"paddingRight",1),q(W0,"gap",0),q(D0,"wrapMode","none"),U(D0,()=>z0().projectGlyph),q(C0,"wrapMode","none"),q(C0,"flexGrow",1),U(C0,()=>p9(z0().titleText,c())),D(J1,Y1),D(J1,l0),q(J1,"flexDirection","row"),q(J1,"gap",0),q(Y1,"wrapMode","none"),U(Y1,k0),D(l0,x1),q(l0,"flexDirection","row"),q(l0,"flexGrow",1),q(l0,"paddingLeft",2),q(l0,"paddingRight",1),q(l0,"gap",1),q(x1,"wrapMode","none"),q(x1,"flexGrow",1),U(x1,()=>z0().subtitleText),U(l0,b(X0,{get when(){return t0().added>0},get children(){var b0=W("text"),m1=E0("+");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().added,null),x((v)=>q(b0,"fg",z.success,v)),b0}}),null),U(l0,b(X0,{get when(){return t0().deleted>0},get children(){var b0=W("text"),m1=E0("\u2212");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().deleted,null),x((v)=>q(b0,"fg",z.error,v)),b0}}),null),x((b0)=>{var m1=r0()?z.backgroundElement:void 0,v=B0(),R0=G0(),V1=E1.BOLD,R1=z.text,B1=E1.BOLD,d=B0(),Y0=z.textMuted,y0=E1.DIM;return m1!==b0.e&&(b0.e=q(m0,"backgroundColor",m1,b0.e)),v!==b0.t&&(b0.t=q(u0,"fg",v,b0.t)),R0!==b0.a&&(b0.a=q(D0,"fg",R0,b0.a)),V1!==b0.o&&(b0.o=q(D0,"attributes",V1,b0.o)),R1!==b0.i&&(b0.i=q(C0,"fg",R1,b0.i)),B1!==b0.n&&(b0.n=q(C0,"attributes",B1,b0.n)),d!==b0.s&&(b0.s=q(Y1,"fg",d,b0.s)),Y0!==b0.h&&(b0.h=q(x1,"fg",Y0,b0.h)),y0!==b0.r&&(b0.r=q(x1,"attributes",y0,b0.r)),b0},{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}),R})()};return(()=>{var n=W("box"),f0=W("box"),I0=W("box"),r0=W("text"),_0=W("box"),p0=W("box"),t0=W("text"),N1=W("scrollbox"),g1=W("box");return D(n,f0),D(n,_0),D(n,N1),mz((z0)=>{M0=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(f0,I0),q(f0,"flexDirection","row"),q(f0,"justifyContent","space-between"),q(f0,"gap",1),q(f0,"paddingBottom",1),q(f0,"paddingLeft",1),q(f0,"paddingRight",1),D(I0,r0),q(I0,"flexDirection","row"),q(I0,"gap",1),D(r0,E0("KOBE")),q(r0,"wrapMode","none"),U(I0,b(X0,{get when(){return J.headerStatus?.()},children:(z0)=>(()=>{var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(G0,()=>z0().label),x((B0)=>{var k0=z0().emphasize?z.warning:z.textMuted,R=z0().emphasize?E1.BOLD:E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),G0})()}),null),U(f0,b(X0,{get when(){return J.onAddTask},get children(){var z0=W("text");return D(z0,E0("[+]")),q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onAddTask?.()),x((G0)=>{var B0=z.primary,k0=E1.BOLD;return B0!==G0.e&&(G0.e=q(z0,"fg",B0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return Z()},get children(){var z0=W("box"),G0=W("text"),B0=W("text"),k0=W("text");return D(z0,G0),D(z0,B0),D(z0,k0),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"paddingBottom",1),q(z0,"paddingLeft",1),D(G0,E0("/")),q(G0,"wrapMode","none"),q(B0,"wrapMode","none"),U(B0,f),D(k0,E0("\u2588")),q(k0,"wrapMode","none"),U(z0,b(X0,{get when(){return f().length===0},get children(){var R=W("text"),m0=E0(" ");return D(R,m0),q(R,"wrapMode","none"),U(R,()=>F("tasks.search.placeholder"),null),x((U0)=>q(R,"fg",z.textMuted,U0)),R}}),null),U(z0,b(X0,{get when(){return f().length>0},get children(){var R=W("text"),m0=E0(" "),U0=E0("/");return D(R,m0),D(R,U0),q(R,"wrapMode","none"),U(R,()=>p().length,U0),U(R,h,null),x((u0)=>q(R,"fg",z.textMuted,u0)),R}}),null),x((R)=>{var{info:m0,text:U0,info:u0}=z,W0=E1.BLINK;return m0!==R.e&&(R.e=q(G0,"fg",m0,R.e)),U0!==R.t&&(R.t=q(B0,"fg",U0,R.t)),u0!==R.a&&(R.a=q(k0,"fg",u0,R.a)),W0!==R.o&&(R.o=q(k0,"attributes",W0,R.o)),R},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),_0),D(_0,p0),q(_0,"flexDirection","row"),q(_0,"justifyContent","space-between"),q(_0,"gap",1),q(_0,"paddingBottom",1),q(_0,"paddingLeft",1),q(_0,"paddingRight",1),D(p0,t0),q(p0,"flexDirection","row"),q(p0,"gap",2),U(p0,b(Q1,{each:MQ,children:(z0)=>{let G0=()=>G()===z0.view;return(()=>{var B0=W("text");return q(B0,"wrapMode","none"),q(B0,"onMouseUp",()=>X(z0.view)),U(B0,()=>cx(z0.view)),x((k0)=>{var R=G0()?z.primary:z.textMuted,m0=G0()?E1.BOLD:void 0;return R!==k0.e&&(k0.e=q(B0,"fg",R,k0.e)),m0!==k0.t&&(k0.t=q(B0,"attributes",m0,k0.t)),k0},{e:void 0,t:void 0}),B0})()}}),t0),D(t0,E0("[/]")),q(t0,"wrapMode","none"),U(_0,b(X0,{get when(){return J.sortMode},get children(){var z0=W("text");return q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(z0,()=>F("tasks.sort")),x((G0)=>{var B0=z.textMuted,k0=E1.DIM;return B0!==G0.e&&(G0.e=q(z0,"fg",B0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return F0().length>0},get children(){var z0=W("box"),G0=W("box"),B0=W("text"),k0=W("text"),R=W("scrollbox"),m0=W("box");return D(z0,G0),D(z0,R),q(z0,"flexDirection","column"),q(z0,"flexShrink",0),D(G0,B0),D(G0,k0),q(G0,"flexDirection","row"),q(G0,"flexShrink",0),q(G0,"gap",1),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"onMouseUp",()=>o()),q(B0,"wrapMode","none"),U(B0,()=>F("tasks.header.projects")),U(G0,b(X0,{get when(){return I().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,e),x((u0)=>{var W0=l()?z.primary:z.textMuted,D0=l()?E1.BOLD:void 0;return W0!==u0.e&&(u0.e=q(U0,"fg",W0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),k0),q(k0,"wrapMode","none"),U(k0,()=>"\u2500".repeat(Math.max(2,E()-10-F("tasks.header.projects").length-(I().length>1?e().length+1:0)-(I().length>1?T().length+1:0)))),U(G0,b(X0,{get when(){return I().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,T),x((u0)=>{var W0=z.textMuted,D0=E1.DIM;return W0!==u0.e&&(u0.e=q(U0,"fg",W0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),null),D(R,m0),mz((U0)=>{L0=U0},R),q(R,"flexShrink",0),q(R,"flexGrow",0),q(R,"minHeight",0),q(R,"stickyScroll",!1),q(R,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(m0,"flexShrink",0),q(m0,"gap",0),q(m0,"paddingRight",1),U(m0,b(Q1,{get each(){return F0()},children:(U0)=>b(v0,{row:U0})})),x((U0)=>{var u0=z.textMuted,W0=E1.BOLD,D0=z.border,C0=A0();return u0!==U0.e&&(U0.e=q(B0,"fg",u0,U0.e)),W0!==U0.t&&(U0.t=q(B0,"attributes",W0,U0.t)),D0!==U0.a&&(U0.a=q(k0,"fg",D0,U0.a)),C0!==U0.o&&(U0.o=q(R,"maxHeight",C0,U0.o)),U0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),N1),U(n,b(z1,{get label(){return F("tasks.header.tasks")},get suffix(){return x0(()=>M()==="default")()?void 0:M()},get topPad(){return F0().length>0}}),N1),D(N1,g1),mz((z0)=>{Q0=z0},N1),q(N1,"flexGrow",1),q(N1,"minHeight",0),q(N1,"stickyScroll",!1),q(N1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(g1,"flexShrink",0),q(g1,"gap",0),q(g1,"paddingRight",1),U(g1,b(Q1,{get each(){return V0()},children:(z0)=>{let{task:G0,flatIndex:B0}=z0,k0=()=>B0===N0(),R=()=>G0.id===J.selectedId(),m0=K0(()=>{let Y1=J.chatRunState?.();if(!Y1)return!1;let l0=`${G0.id}:`;for(let[x1,b0]of Y1)if(b0==="running"&&x1.startsWith(l0))return!0;return!1}),U0=K0(()=>{let Y1=Ef(J.worktreeChanges?.(),G0.worktreePath);if(Y1)return Y1;if(O(),!G0.archived)t9(G0.worktreePath);return s9(G0.worktreePath)},void 0,{equals:hz}),u0=K0(()=>r9({task:G0,activity:J.engineState?.().get(G0.id),job:J.taskJobs?.().get(G0.id),live:m0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:UM,mainBranch:""})),W0=K0(()=>o9(u0(),_)),D0=()=>w0(W0().tone),C0=()=>k0()?z.focusAccent:R()?z.primary:void 0,J1=()=>k0()||R()?"\u258C":" ";return(()=>{var Y1=W("box"),l0=W("box"),x1=W("box"),b0=W("text"),m1=W("box"),v=W("text"),R0=W("text"),V1=W("box"),R1=W("text"),B1=W("box"),d=W("text");return D(Y1,l0),q(Y1,"flexDirection","column"),q(Y1,"gap",0),q(Y1,"paddingBottom",1),D(l0,x1),D(l0,V1),mz((Y0)=>{T0.set(B0,Y0),k1(()=>{if(T0.get(B0)===Y0)T0.delete(B0)})},l0),q(l0,"flexDirection","column"),q(l0,"gap",0),q(l0,"onMouseUp",()=>{if(y(B0),J.onSelect(G0.id),J.activateOnClick)J.onActivate?.(G0.id)}),q(l0,"onMouseOver",(Y0)=>g0({task:G0,x:Y0.x,y:Y0.y})),q(l0,"onMouseOut",()=>g0((Y0)=>Y0?.task.id===G0.id?null:Y0)),D(x1,b0),D(x1,m1),q(x1,"flexDirection","row"),q(x1,"gap",0),q(b0,"wrapMode","none"),U(b0,J1),D(m1,v),D(m1,R0),q(m1,"flexDirection","row"),q(m1,"flexGrow",1),q(m1,"paddingRight",1),q(m1,"gap",0),q(v,"wrapMode","none"),U(v,()=>W0().stateGlyph),q(R0,"wrapMode","none"),q(R0,"flexGrow",1),U(R0,()=>p9(W0().titleText,c())),U(m1,b(X0,{get when(){return x0(()=>!!J.moveMode?.())()&&k0()},get children(){var Y0=W("text");return q(Y0,"wrapMode","none"),U(Y0,()=>F("tasks.moveChip")),x((y0)=>q(Y0,"fg",z.warning,y0)),Y0}}),null),D(V1,R1),D(V1,B1),q(V1,"flexDirection","row"),q(V1,"gap",0),q(R1,"wrapMode","none"),U(R1,J1),D(B1,d),q(B1,"flexDirection","row"),q(B1,"flexGrow",1),q(B1,"paddingLeft",2),q(B1,"paddingRight",1),q(B1,"gap",1),q(d,"wrapMode","none"),q(d,"flexGrow",1),U(d,()=>W0().subtitleText),U(B1,b(X0,{get when(){return G0.pinned===!0},get children(){var Y0=W("text");return D(Y0,E0("\u25B4")),q(Y0,"wrapMode","none"),x((y0)=>q(Y0,"fg",z.warning,y0)),Y0}}),null),U(B1,b(X0,{get when(){return BM(G0)},children:(Y0)=>(()=>{var y0=W("text");return q(y0,"wrapMode","none"),U(y0,()=>Y0().glyph),x((S0)=>q(y0,"fg",w0(Y0().tone),S0)),y0})()}),null),U(B1,b(X0,{get when(){return U0().added>0},get children(){var Y0=W("text"),y0=E0("+");return D(Y0,y0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().added,null),x((S0)=>q(Y0,"fg",z.success,S0)),Y0}}),null),U(B1,b(X0,{get when(){return U0().deleted>0},get children(){var Y0=W("text"),y0=E0("\u2212");return D(Y0,y0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().deleted,null),x((S0)=>q(Y0,"fg",z.error,S0)),Y0}}),null),x((Y0)=>{var y0=k0()?z.backgroundElement:void 0,S0=C0(),jJ=D0(),MJ=E1.BOLD,QJ=z.text,$J=R()||k0()?E1.BOLD:void 0,nz=C0(),gJ=z.textMuted,iz=E1.DIM;return y0!==Y0.e&&(Y0.e=q(l0,"backgroundColor",y0,Y0.e)),S0!==Y0.t&&(Y0.t=q(b0,"fg",S0,Y0.t)),jJ!==Y0.a&&(Y0.a=q(v,"fg",jJ,Y0.a)),MJ!==Y0.o&&(Y0.o=q(v,"attributes",MJ,Y0.o)),QJ!==Y0.i&&(Y0.i=q(R0,"fg",QJ,Y0.i)),$J!==Y0.n&&(Y0.n=q(R0,"attributes",$J,Y0.n)),nz!==Y0.s&&(Y0.s=q(R1,"fg",nz,Y0.s)),gJ!==Y0.h&&(Y0.h=q(d,"fg",gJ,Y0.h)),iz!==Y0.r&&(Y0.r=q(d,"attributes",iz,Y0.r)),Y0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Y1})()}}),null),U(g1,b(X0,{get when(){return p().length===0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),U(G0,(()=>{var B0=x0(()=>!!(Z()&&f().trim().length>0));return()=>B0()?F("tasks.empty.noMatchSearch"):x0(()=>!!l())()?x0(()=>G()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):x0(()=>G()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),x((B0)=>q(G0,"fg",z.textMuted,B0)),z0}}),null),U(g1,b(X0,{get when(){return x0(()=>!!(l()&&p().length>0&&!C()))()&&!(Z()&&f().trim().length>0)},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,(()=>{var B0=x0(()=>G()==="active");return()=>B0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),x((B0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(g1,b(X0,{get when(){return x0(()=>G()==="archived")()&&p().length>0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,()=>F("tasks.archiveHint")),x((B0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return J.zenActive?.()},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"flexShrink",0),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"paddingTop",1),D(G0,E0("\u262F ZEN")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onZenClick?.()),x((B0)=>{var k0=z.accent,R=E1.BOLD;return k0!==B0.e&&(B0.e=q(G0,"fg",k0,B0.e)),R!==B0.t&&(B0.t=q(G0,"attributes",R,B0.t)),B0},{e:void 0,t:void 0}),z0}}),null),U(n,b(X0,{get when(){return h0()},children:(z0)=>{let G0=K0(()=>{let W0=z0().task,D0=[];if(D0.push({text:W0.kind==="main"?Nz(W0.repo):W0.title,bold:!0}),W0.branch.length>0)D0.push({text:`\u2387 ${W0.branch}`});if(W0.worktreePath.length>0)D0.push({text:W0.worktreePath,dim:!0});return D0}),B0=72,k0=K0(()=>Math.min(68,Math.max(...G0().map((W0)=>ix(W0.text))))),R=K0(()=>k0()+4),m0=K0(()=>G0().length+2),U0=K0(()=>Math.max(0,Math.min(z0().x+2,Z0().width-R()-1))),u0=K0(()=>Math.max(0,Math.min(z0().y+1,Z0().height-m0()-1)));return(()=>{var W0=W("box");return q(W0,"position","absolute"),q(W0,"zIndex",2600),q(W0,"flexDirection","column"),q(W0,"border",!0),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),U(W0,b(Q1,{get each(){return G0()},children:(D0)=>(()=>{var C0=W("text");return q(C0,"wrapMode","none"),U(C0,(()=>{var J1=x0(()=>!!D0.dim);return()=>J1()?lx(D0.text,k0()):_9(D0.text,k0())})()),x((J1)=>{var Y1=D0.dim?z.textMuted:z.text,l0=D0.bold?E1.BOLD:D0.dim?E1.DIM:void 0;return Y1!==J1.e&&(J1.e=q(C0,"fg",Y1,J1.e)),l0!==J1.t&&(J1.t=q(C0,"attributes",l0,J1.t)),J1},{e:void 0,t:void 0}),C0})()})),x((D0)=>{var C0=U0(),J1=u0(),Y1=R(),l0=z.focusAccent,x1=z.backgroundElement;return C0!==D0.e&&(D0.e=q(W0,"left",C0,D0.e)),J1!==D0.t&&(D0.t=q(W0,"top",J1,D0.t)),Y1!==D0.a&&(D0.a=q(W0,"width",Y1,D0.a)),l0!==D0.o&&(D0.o=q(W0,"borderColor",l0,D0.o)),x1!==D0.i&&(D0.i=q(W0,"backgroundColor",x1,D0.i)),D0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),W0})()}}),null),x((z0)=>{var G0=Y()?z.focusAccent:z.textMuted,B0=E1.BOLD,k0=z.textMuted,R=E1.DIM;return G0!==z0.e&&(z0.e=q(r0,"fg",G0,z0.e)),B0!==z0.t&&(z0.t=q(r0,"attributes",B0,z0.t)),k0!==z0.a&&(z0.a=q(t0,"fg",k0,z0.a)),R!==z0.o&&(z0.o=q(t0,"attributes",R,z0.o)),z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var KM=32,MQ,dx=2000,nx=16;var LM=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();W1();v1();v1();ZM();gH();qM();jM();xX();VM();MQ=[{view:"active"},{view:"archived"}]});var RM={};j1(RM,{startTasksPane:()=>rx,legendRowCap:()=>AM,legendCap:()=>OM});import{existsSync as MM}from"fs";import{stat as $x}from"fs/promises";import{TextAttributes as SH}from"@opentui/core";function e9(J){return!!J&&Rq(J)}function FM(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 _x(J){let{theme:z}=i0(),Y=c1(),G=oX(),X=LH(),[Z,Q]=a(J.tasks().some((y)=>y.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null);function f(y){X.notify({kind:"error",taskId:Z()??"",tabId:"",title:y})}function H(y){X.notify({kind:"done",taskId:Z()??"",tabId:"",title:y})}let[B,V]=a(!1),[j,K]=a(G.get("activeSortMode")==="recent"?"recent":"default"),L=G.get("tasksPane.projectFilter"),[A,O]=a(typeof L==="string"&&L.length>0?L:null),g=(y)=>{O(y),G.set("tasksPane.projectFilter",y)},[u,_]=a(null),[S,N]=a(!1);{let y=process.env.TMUX_PANE;if(y){let L0=()=>{a0(["show-options","-wqv","-t",y,NY]).then(({code:M0,stdout:T0})=>{N(M0===0&&T0.trim().length>0)})};L0();let Q0=setInterval(L0,1000);k1(()=>clearInterval(Q0))}}let M=vz();s0(()=>{if(J.initialTaskId)return;let y=J.orch?.activeTaskSignal()();if(!y)return;Q(y)}),s0(IJ(()=>J.orch?.uiPrefsSignal()(),(y)=>{if(y&&y.sortMode!==p1(j))K(y.sortMode);if(y&&y.projectFilter!==p1(A))O(y.projectFilter)})),s0(()=>{let y=J.orch?.updateSignal()();if(y)_(y)});let I={orch:J.orch,tasks:()=>J.tasks(),confirm:async(y)=>await LY.show(Y,y.title,y.body,y.cancelLabel,y.confirmLabel)===!0,promptText:(y,L0)=>DY.show(Y,y,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:H,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(y,L0)=>{if(Z()!==y)return;let Q0=J.tasks();Q(L0?.id??(Q0.find((M0)=>!M0.archived)??Q0[0])?.id??null)},promptNewTask:(y,L0,Q0)=>BH.show(Y,y,L0,Q0),cursorRepo:()=>{let y=J.tasks();return(y.find((L0)=>L0.id===Z())??y[0])?.repo},lastVendor:()=>uJ(C1("lastSelectedVendor"),EJ()),rememberVendor:(y)=>o1("lastSelectedVendor",y),openCreateSurface:async(y)=>{if(xG(G.get(fY,TG))!=="chattab")return!1;let Q0=await AJ();if(!Q0)return!1;return await Qf(Q0,y),!0},selectTask:(y)=>Q(y),enterTask:(y)=>Z0(y)};async function r(){await o3(I)}async function l(){if(xG(G.get(fY,TG))==="chattab"){let Q0=await AJ();if(Q0){await Xf(Q0);return}}if(!(await dG.show(Y,G,J.orch??void 0)).visualPrefsChanged)return;if(!G.flush())return;try{let Q0=await AJ();if(Q0)await OX(Q0)}catch(Q0){console.error("[kobe tasks] failed to refresh workspace panes:",Q0)}}async function e(){let y=await AJ();if(y){await Zf(y);return}tX.show(Y)}async function J0(){if(!u()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:o0}));return}let L0=await AJ();if(!L0)return;await qf(L0)}async function T(y){await $3(I,y)}async function q0(y){await a3(I,y)}async function p(y){await _3(I,y)}async function j0(y){await p3(I,y)}async function F0(y){await r3(I,y)}async function V0(y){let Q0=J.tasks().find((T0)=>T0.id===y)?.worktreePath;if(!Q0||!MM(Q0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Q0=await J.orch.ensureWorktree(y)}catch(T0){console.error("[kobe tasks] task.ensureWorktree failed:",T0),f(FM(T0));return}await J.reload()}if(!Q0||!MM(Q0))return;let M0=t3();if(!M0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!e3(Q0,M0))console.error(`[kobe tasks] failed to open worktree with ${M0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:M0.label}))}async function t(){if(!process.env.TMUX_PANE)return;let y=await AJ();if(!y)return;let L0=await HX(y);if(!L0)return;await P0(["select-pane","-t",L0])}async function h(y,L0){let Q0=J.tasks().find((M0)=>M0.id===y);if(!Q0||Q0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(y,L0)}catch(M0){console.error("[kobe tasks] task.move failed:",M0),f(F("tasks.toast.moveTaskFailed",{message:M0 instanceof Error?M0.message:String(M0)}));return}Q(y),await J.reload()}let[C,o]=a(G.get("tasksPane.keysCollapsed",!1)===!0),E=(y)=>{o(y),G.set("tasksPane.keysCollapsed",y)};s0(IJ(()=>J.orch?.uiPrefsSignal()(),(y)=>{if(y&&y.keysCollapsed!==p1(C))o(y.keysCollapsed)}));let[c,s]=a(!1);D1(()=>({enabled:Y.stack.length===0&&!c(),bindings:pY({"help.open":()=>void e(),"task.new":()=>void r(),"settings.open.sidebar":()=>void l(),"tasks.update":()=>void J0(),"tasks.openWorktree":()=>{let y=Z();if(y)V0(y)},"tasks.renameBranch":()=>{let y=Z();if(y)j0(y)},"tasks.cycleEngine":()=>{let y=Z();if(y)F0(y)},"tasks.toggleKeys":()=>E(!C()),"tasks.focusEngine":()=>void t().catch((y)=>console.error("[kobe tasks] focus engine pane failed:",y))})}));async function Z0(y){let L0=M1(y),Q0=J.tasks().find((v0)=>v0.id===y),M0=await AJ();if(M0&&M0!==L0)await yZ(M0);if(await H1(L0)){let v0=await bG(L0,"@kobe_worktree")||Q0?.worktreePath||"";if(e9(v0)){let n=Q0?.repo?HY(Q0.repo,v0,{kind:"repo-init"}):void 0;await PY({name:L0,cwd:v0,command:yJ(Q0?.vendor),taskId:y,vendor:Q0?.vendor,repo:Q0?.repo,launchInit:n})}await AX(L0),await jf(L0),await P0(["switch-client","-t",`=${L0}`]),J.orch?.setActiveTask(y).catch(()=>{});return}let X1=Q0?.worktreePath;if(!e9(X1)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonOpen"));return}try{X1=await J.orch.ensureWorktree(y)}catch(v0){console.error("[kobe tasks] task.ensureWorktree failed:",v0),f(FM(v0));return}await J.reload()}if(!e9(X1))return;let z1=Q0?.repo?HY(Q0.repo,X1,{kind:"repo-init"}):void 0;if(!await PY({name:L0,cwd:X1,command:yJ(Q0?.vendor),taskId:y,vendor:Q0?.vendor,repo:Q0?.repo,launchInit:z1})){console.error(`[kobe tasks] failed to start session ${L0}`),f(F("tasks.toast.sessionStartFailed"));return}await AX(L0),await jf(L0),await P0(["switch-client","-t",`=${L0}`]),J.orch?.setActiveTask(y).catch(()=>{})}let A0=K0(()=>{let y=u();if(y?.hasUpdate)return{label:`v${y.latest} \u2191`,emphasize:!0};return{label:`v${o0}`,emphasize:!1}}),h0=()=>J.orch?.daemonStaleSignal()()??!1,g0=()=>J.orch?.daemonVersionSignal()()??null,N0=K0(()=>J.tasks().find((y)=>y.id===Z())?.kind==="main");return(()=>{var y=W("box"),L0=W("box");return D(y,L0),q(y,"flexDirection","column"),q(y,"flexGrow",1),U(y,b(n3,{stale:h0,daemonVersion:g0,clientVersion:o0,width:()=>M().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(DM,{get tasks(){return J.tasks},selectedId:Z,get onSelect(){return J.initialTaskId?()=>{}:Q},onActivate:(Q0)=>void Z0(Q0),activateOnClick:!0,headerStatus:A0,onHeaderStatusClick:()=>void J0(),onAddTask:()=>void r(),zenActive:S,onZenClick:()=>{(async()=>{let Q0=await AJ();if(Q0)await RX(Q0,"zen-toggle")})()},width:()=>M().width,get engineState(){return x0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return x0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Q0=J.orch;if(!Q0||Q0.connectionStateSignal()()!=="online")return null;return Q0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Q0)=>void p(Q0),onDeleteRequest:(Q0)=>void q0(Q0),onArchiveRequest:(Q0)=>void T(Q0),onLocalMergeRequest:(Q0)=>{let M0=J.tasks().find((T0)=>T0.id===Q0);if(!M0||M0.kind==="main")return;Q(Q0),V((T0)=>!T0)},moveMode:B,onMoveRequest:(Q0,M0)=>void h(Q0,M0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:A,onProjectFilterChange:g,onSortModeToggle:()=>{let Q0=j()==="default"?"recent":"default";K(Q0),G.set("activeSortMode",Q0)},focused:()=>Y.stack.length===0,onSearchActiveChange:s})),U(y,b(px,{moveMode:B,selectedIsMain:N0,collapsed:C,onToggleCollapsed:()=>E(!C())}),null),x((Q0)=>q(y,"backgroundColor",z.background,Q0)),y})()}function OM(J){let z=C9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function AM(J){let z=J.map(OM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function px(J){let{theme:z}=i0(),[Y,G]=a("Prefix");JJ(()=>{a0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=NH(L);if(A)G(A)})});let X=()=>{g9();let K=xq(),L=K.binds,A=[],O=K.focus.filter((u)=>u!==null).map((u)=>u.chord);if(O.length===4&&O.every((u,_)=>u===yY[_]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let g=(u,_)=>{let S=_.map((N)=>L[N]?.chord).filter((N)=>!!N);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:u})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return 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"]),A},Z=()=>{g9();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=AM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...X()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],f=()=>J.moveMode?.()?Q():Z(),H=18,B=()=>Math.min(H,Math.max(...f().map((K)=>K.label.length))),V=(K)=>K.length<=B()?K:`${K.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=x0(()=>!!j());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(X0,{get when(){return!j()},get children(){return b(Q1,{get each(){return f()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var g=W("box"),u=W("box"),_=W("text"),S=E0("["),N=E0("]"),M=W("box"),I=W("text");return D(g,u),D(g,M),q(g,"flexDirection","row"),q(g,"gap",1),q(g,"justifyContent","space-between"),D(u,_),q(u,"width",10),q(u,"flexShrink",0),D(_,S),D(_,N),q(_,"wrapMode","none"),U(_,()=>sX(A.k,Y()),N),D(M,I),q(M,"flexShrink",0),q(I,"wrapMode","none"),U(I,()=>V(A.label)),x((r)=>{var l=O()?z.textMuted:z.accent,e=O()?SH.DIM:SH.BOLD,J0=B(),T=z.textMuted,q0=O()?SH.DIM:void 0;return l!==r.e&&(r.e=q(_,"fg",l,r.e)),e!==r.t&&(r.t=q(_,"attributes",e,r.t)),J0!==r.a&&(r.a=q(M,"width",J0,r.a)),T!==r.o&&(r.o=q(I,"fg",T,r.o)),q0!==r.i&&(r.i=q(I,"attributes",q0,r.i)),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()}})}}),null),x((A)=>{var O=z.textMuted,g=SH.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),g!==A.t&&(A.t=q(L,"attributes",g,A.t)),A},{e:void 0,t:void 0}),K})()}async function rx(J={}){await RJ({logContext:"tasks",providers:{notifications:!0},setup:()=>ox(J)})}async function ox(J){let z=new PX({homeDir:bz()});await z.load();let[Y,G]=a(z.list()),X=null;try{let B=await zz();if(B){let V=new UJ(B);await V.init(),X=V}else sz("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){s1("tasks-boot",B),sz("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let Z=()=>X&&X.connectionStateSignal()()==="online"?X.tasksSignal()():Y(),Q=async()=>{await z.load(),G(z.list())},f="",H=setInterval(()=>{if(X&&X.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await $x(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===f)return;f=B,await Q()})().catch(()=>{})},ax);return{root:()=>[b(_x,{tasks:Z,get initialTaskId(){return J.initialTaskId},orch:X,reload:Q}),b(c3,{})],onDestroy:()=>{if(H)clearInterval(H);X?.dispose()}}}var ax=1500;var gM=k(()=>{P();P();P();P();P();P();P();P();P1();Bz();ZJ();P();ZG();OJ();W1();aY();vJ();r1();Vz();aZ();IX();O1();uq();l1();FJ();w9();pX();P9();l9();d3();i3();rX();VQ();MH();v1();E9();oY();xJ();s3();JM();LM();gX();YJ();lJ();h9()});var CM={};j1(CM,{startSettingsHost:()=>tx});function sx(J){let z=oX(),Y=c1(),{theme:G}=i0(),X=!1,Z=!1;async function Q(){if(Z)return;Z=!0;try{if(z.flush()&&X){let H=await AJ();if(H)await OX(H)}}catch(f){console.error("[kobe settings] failed to refresh workspace panes:",f)}finally{process.exit(0)}}return D1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var f=W("scrollbox");return q(f,"flexGrow",1),q(f,"paddingTop",1),q(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(f,b(dG,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:Q})),x((H)=>q(f,"backgroundColor",G.background,H)),f})()}async function tx(){await RJ({setup:async()=>{let J=null;try{let z=await zz();if(z){let Y=new UJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(sx,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var NM=k(()=>{P();P();P();P();P();P();OJ();aY();l9();VQ();v1();oY();xJ();YJ();lJ()});var kM={};j1(kM,{startHelpHost:()=>Ju});function ex(){let J=c1(),{theme:z}=i0();function Y(){process.exit(0)}return D1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var G=W("box");return q(G,"flexGrow",1),q(G,"paddingTop",1),U(G,b(tX,{onClose:Y})),x((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Ju(){await RJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(ex,{})})})}var bM=k(()=>{P();P();P();P();P();w9();v1();oY();xJ();lJ()});var SM={};j1(SM,{startUpdateHost:()=>qu});import{spawn as zu,spawnSync as Yu}from"child_process";import{TextAttributes as JZ}from"@opentui/core";function Gu(J){if(!J)return!1;let z=process.platform,[Y,G]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return zu(Y,G,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Xu(J){return J.replace(/\r\n/g,`
|
|
266
266
|
`).split(`
|
|
267
|
-
`).map((z)=>z.trim()).filter(Boolean)}function Zu(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function Qu(){let{theme:J}=i0(),z=HJ(),[Y,G]=a(null),[X,Z]=a([]),[Q,f]=a(!0),[H,B]=a("update"),[V,j]=a(null),K=K0(()=>Y()?.latest??o0),L=K0(()=>X()[0]?.url??vH(K())),A=K0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:lz},{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")}]);JJ(()=>{O()});async function O(){let
|
|
267
|
+
`).map((z)=>z.trim()).filter(Boolean)}function Zu(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function Qu(){let{theme:J}=i0(),z=HJ(),[Y,G]=a(null),[X,Z]=a([]),[Q,f]=a(!0),[H,B]=a("update"),[V,j]=a(null),K=K0(()=>Y()?.latest??o0),L=K0(()=>X()[0]?.url??vH(K())),A=K0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:lz},{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")}]);JJ(()=>{O()});async function O(){let S=await zZ({force:!0});G(S);let N=S?.latest??o0,M=await hH({current:o0,latest:N});Z(M),f(!1)}function g(S){let N=A().map((r)=>r.id),I=(N.indexOf(H())+S+N.length)%N.length;B(N[I]??"update")}function u(S=H()){if(S==="close")process.exit(0);if(S==="release"){j(Gu(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}_()}async function _(){j(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
|
|
268
268
|
kobe ${o0} -> latest
|
|
269
269
|
`),process.stdout.write(`running: ${lz}
|
|
270
270
|
|
|
271
|
-
`);let
|
|
272
|
-
kobe update: failed to start updater: ${
|
|
271
|
+
`);let S=Yu("sh",["-c",lz],{stdio:"inherit"}),N=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
|
|
272
|
+
kobe update: failed to start updater: ${S.error.message}
|
|
273
273
|
`);process.stdout.write(N===0?`
|
|
274
274
|
${F("update.updateComplete")}
|
|
275
275
|
`:`
|
|
276
276
|
${F("update.updateFailed",{code:String(N)})}
|
|
277
|
-
`),process.stdout.write(F("update.pressAnyKey")),await Zu(),process.exit(N)}return D1(()=>({bindings:[{key:"up",cmd:()=>g(-1)},{key:"down",cmd:()=>g(1)},{key:"k",cmd:()=>g(-1)},{key:"j",cmd:()=>g(1)},{key:"return",cmd:()=>u()},{key:"u",cmd:()=>u("update")},{key:"r",cmd:()=>u("release")},{key:"q",cmd:()=>u("close")},{key:"escape",cmd:()=>u("close")},{key:"ctrl+c",cmd:()=>u("close")}]})),(()=>{var
|
|
278
|
-
`)}function Bu(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function ju(J){let z=bX(C1(qY)),Y=C1(mY)??"",G=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return TM(z,Y,J,G);if(G)return TM("custom","",J,G);let X=Z1(J);for(let Z of qK)if(await xM(Z))return{bin:Z,command:`${Z} ${X}`};return null}async function xM(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 Wu(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:nJ()}).exited===1}catch{return!1}}async function uM(J,z,Y){let G=await ju(Y);if(!G)return!1;if(!await xM(G.bin))return!1;let X=await Vu(G,z,Y);return await Mz(J,{cwd:z,command:X,name:Ku(Y)}),!0}async function Vu(J,z,Y){let{bin:G,command:X}=J;if(G!=="nvim"&&G!=="vim")return X;if(X!==`${G} ${Z1(Y)}`)return X;let Z=Bu(z,Y);if(!Z)return X;if(!await Wu(z,Z))return X;return Hu(G,Y,Z)}function Ku(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var yM="{file}";var EM=k(()=>{cY();O1();kf();P1();Bz()});async function
|
|
279
|
-
`).map((Z)=>Z.replace(/\r$/,"")),X=new Set;for(let Z of G)if(Z.length>0)X.add(Z);return Array.from(X).sort()}async function zW(J,z){let Y=await SH(["status","--porcelain","--untracked-files=all"],J,z),G=vM(Y),X=new Map;try{let Z=await SH(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(wM(Z).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let Z=await SH(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(wM(Z).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{X=new Map}}return G.map((Z)=>{let Q=X.get(Z.path);if(Q)return{...Z,added:Q.added,deleted:Q.deleted};return Z})}function wM(J){return HU(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function PM(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let G=Y.split("/").filter((Z)=>Z.length>0);if(G.length===0)continue;let X=z;for(let Z=0;Z<G.length;Z++){let Q=G[Z],H=Z!==G.length-1,B=X.children.find((V)=>V.name===Q&&V.isDir===H);if(!B)B={name:Q,path:G.slice(0,Z+1).join("/"),isDir:H,children:[]},X.children.push(B);X=B}}return hM(z),z}function hM(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)hM(z)}function vM(J){let z=[];for(let Y of xf(J)){let G;if(Y.x==="?"&&Y.y==="?")G="?";else{let Z=Y.y!==" "?Y.y:Y.x;if(Z==="M"||Z==="A"||Z==="D"||Z==="R"||Z==="C"||Z==="U")G=Z;else continue}let X=Y.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:G})}return z}var YW=k(()=>{Uj();bf()});function GW(J){D1(()=>({enabled:J.focused(),bindings:pY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let G=J.currentTab(),X=FQ.indexOf(G);if(X<0)return;let Z=(Y??0)%2===0?-1:1,Q=FQ[(X+Z+FQ.length)%FQ.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 FQ;var XW=k(()=>{rX();xJ();FQ=["all","changes"]});import{spawn as mM}from"child_process";import{existsSync as Uu}from"fs";import{platform as Du}from"os";function cM(J){if(!J)return;let z=Du();if(z==="linux"){if(Uu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){OQ("wslview",[J],()=>{let Y=mM("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),G="";Y.stdout?.on("data",(X)=>{G+=X.toString()}),Y.on("close",(X)=>{if(X===0)OQ("explorer.exe",[G.trim()])})});return}OQ("xdg-open",[J]);return}if(z==="darwin"){OQ("open",[J]);return}if(z==="win32"){OQ("cmd.exe",["/c","start","",J]);return}}function OQ(J,z,Y){try{let G=mM(J,z,{stdio:"ignore",detached:!0});G.on("error",()=>Y?.()),G.unref()}catch{Y?.()}}var dM=()=>{};function ZW(J,z,Y,G){for(let X of J.children)if(X.isDir){let Z=z.has(X.path);if(G.push({kind:"dir",path:X.path,name:X.name,depth:Y,expanded:Z,hasChildren:X.children.length>0}),Z)ZW(X,z,Y+1,G)}else G.push({kind:"file",path:X.path,name:X.name,depth:Y})}function nM(J,z){if(z<=0)return J;let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}function iM(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function Lu(J){return`${J.kind}\x00${J.path}`}function Mu(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function lM(J,z){return RH(J,z,Lu,Mu)}function $M(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function aM(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let G=J[Y],X=z[Y];if(G.path!==X.path||G.status!==X.status||G.added!==X.added||G.deleted!==X.deleted)return!1}return!0}var _M=()=>{};import{watch as Fu}from"fs";import{TextAttributes as AQ}from"@opentui/core";function Ou(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function Ru(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function gu(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function QW(J){let{theme:z}=i0(),Y=vz(),G=()=>J.focused?J.focused():!0,[X,Z]=a("all"),[Q,f]=a(0),[H,B]=a(0),[V,j]=a(null,{equals:$M}),[K,L]=a(null,{equals:aM}),[A,O]=a(null),[g,u]=a(new Set),_=0;async function I(t,h,C){let o=++_;if(h==null){j(null),L(null),O(null);return}O(null);try{if(t==="all"){let E=await JW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;j(E)}else if(t==="changes"){let E=await zW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;L(E)}}catch(E){if(C?.aborted)return;let c=E instanceof Error?E.message:String(E);if(o===_&&J.worktreePath()===h)O(c)}}s0(SJ(J.worktreePath,async(t)=>{j(null),L(null),O(null),f(0),u(new Set);let h=new AbortController;k1(()=>h.abort()),await I(X(),t,h.signal)})),s0(SJ(J.worktreePath,(t)=>{if(t==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let h=null,C=null;try{C=Fu(t,{recursive:!0},(o,E)=>{if(E==null)return;let c=E.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(h!=null)clearTimeout(h);h=setTimeout(()=>{h=null,B((s)=>s+1)},500)}),C.on("error",()=>{})}catch{}k1(()=>{if(h!=null)clearTimeout(h);if(C!=null)C.close()})})),s0(SJ([X,H],async([t,h])=>{let C=J.worktreePath();if(C==null)return;f(0);let o=new AbortController;k1(()=>o.abort());let c=H()>0;if(t==="all"){if(V()==null||c)await I("all",C,o.signal)}else if(t==="changes"){if(K()==null||c)await I("changes",C,o.signal)}}));let N=K0(()=>{let t=V();if(t==null)return null;return PM(t)}),M=K0((t)=>{let h=[];if(X()==="all"){let C=N();if(C!=null)ZW(C,g(),0,h)}else if(X()==="changes"){let C=K();if(C!=null)h.push(...iM(C))}return lM(t??[],h)},[]),S=K0(()=>{let t=0,h=0;for(let C of M()){if(C.kind!=="status")continue;if(C.added!=null)t=Math.max(t,String(C.added).length+1);if(C.deleted!=null)h=Math.max(h,String(C.deleted).length+1)}return{added:t,deleted:h}}),r=K0(()=>{let t=S(),h=(t.added>0?t.added+1:0)+(t.deleted>0?t.deleted+1:0);return Math.max(8,Y().width-6-h)});function l(){let t=M();if(t.length===0)return;f(Math.min(Q()+1,t.length-1))}function e(){if(M().length===0)return;f(Math.max(Q()-1,0))}function J0(){let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind!=="dir")return;if(!C.expanded&&C.hasChildren)u((o)=>{let E=new Set(o);return E.add(C.path),E});else if(C.expanded){if(h+1<t.length)f(h+1)}}function T(){if(X()!=="all")return;let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind==="dir"&&C.expanded){u((E)=>{let c=new Set(E);return c.delete(C.path),c});return}if(C.kind!=="dir"&&C.kind!=="file")return;let o=C.depth-1;if(o<0)return;for(let E=h-1;E>=0;E--){let c=t[E];if(!c)continue;if(c.kind==="dir"&&c.depth===o){f(E);return}}}function q0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C)return;if(C.kind==="dir"){u((o)=>{let E=new Set(o);if(E.has(C.path))E.delete(C.path);else E.add(C.path);return E});return}J.onOpenFile(C.path)}function p(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;J.onMention?.(C.path)}function j0(){B((t)=>t+1),J.onRefresh?.()}function F0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;let o=J.worktreePath();if(!o)return;let E=`${o}/${C.path}`;cM(E)}GW({focused:G,moveDown:l,moveUp:e,setTab:(t)=>Z(t),currentTab:X,openCurrent:q0,mentionCurrent:p,createPR:J.onCreatePR,openExternal:F0,refresh:j0,expandOrDescend:J0,collapseOrParent:T});let V0;return s0(SJ([Q,M],([t,h])=>{if(!V0)return;if(h.length===0)return;let C=V0.scrollTop,o=V0.viewport.height;if(o<=0)return;if(t<C)V0.scrollTo({x:0,y:t});else if(t>=C+o)V0.scrollTo({x:0,y:t-o+1})})),(()=>{var t=W("box"),h=W("box"),C=W("box"),o=W("scrollbox");return D(t,h),D(t,o),q(t,"flexDirection","column"),q(t,"flexGrow",1),q(t,"paddingTop",1),q(t,"paddingBottom",1),q(t,"paddingLeft",0),q(t,"paddingRight",0),U(t,b(X0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"justifyContent","flex-end"),q(E,"gap",2),q(E,"paddingBottom",1),q(E,"flexShrink",0),U(E,b(X0,{get when(){return J.onZenToggle},get children(){var c=W("box"),s=W("text"),Z0=W("text");return D(c,s),D(c,Z0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onZenToggle?.()),D(s,E0("[~]")),q(s,"wrapMode","none"),q(Z0,"wrapMode","none"),U(Z0,()=>F("files.actions.zen")),x((A0)=>{var h0=z.accent,g0=AQ.BOLD,N0=z.text;return h0!==A0.e&&(A0.e=q(s,"fg",h0,A0.e)),g0!==A0.t&&(A0.t=q(s,"attributes",g0,A0.t)),N0!==A0.a&&(A0.a=q(Z0,"fg",N0,A0.a)),A0},{e:void 0,t:void 0,a:void 0}),c}}),null),U(E,b(X0,{get when(){return J.onCreatePR},get children(){var c=W("box"),s=W("text"),Z0=W("text");return D(c,s),D(c,Z0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onCreatePR?.()),D(s,E0("[P]")),q(s,"wrapMode","none"),q(Z0,"wrapMode","none"),U(Z0,()=>F("files.actions.createPR")),x((A0)=>{var h0=z.accent,g0=AQ.BOLD,N0=z.text;return h0!==A0.e&&(A0.e=q(s,"fg",h0,A0.e)),g0!==A0.t&&(A0.t=q(s,"attributes",g0,A0.t)),N0!==A0.a&&(A0.a=q(Z0,"fg",N0,A0.a)),A0},{e:void 0,t:void 0,a:void 0}),c}}),null),E}}),h),D(h,C),q(h,"flexDirection","row"),q(h,"justifyContent","space-between"),q(h,"paddingBottom",0),q(h,"flexShrink",0),q(C,"flexDirection","row"),q(C,"gap",2),U(C,b(Q1,{each:Au,children:(E)=>{let c=()=>X()===E;return(()=>{var s=W("text");return q(s,"wrapMode","none"),q(s,"onMouseUp",()=>Z(E)),U(s,()=>gu(E)),x((Z0)=>{var A0=c()?z.primary:z.textMuted,h0=c()?AQ.BOLD:void 0;return A0!==Z0.e&&(Z0.e=q(s,"fg",A0,Z0.e)),h0!==Z0.t&&(Z0.t=q(s,"attributes",h0,Z0.t)),Z0},{e:void 0,t:void 0}),s})()}})),U(h,b(X0,{get when(){return J.cornerBadge?.()},children:(E)=>(()=>{var c=W("text");return q(c,"wrapMode","none"),U(c,()=>E().text),x((s)=>{var Z0=E().active?z.accent:z.textMuted,A0=E().active?AQ.BOLD:void 0;return Z0!==s.e&&(s.e=q(c,"fg",Z0,s.e)),A0!==s.t&&(s.t=q(c,"attributes",A0,s.t)),s},{e:void 0,t:void 0}),c})()}),null),U(t,b(X0,{get when(){return X()==="changes"},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","column"),q(E,"paddingBottom",1),q(E,"flexShrink",0),q(E,"gap",0),q(c,"wrapMode","none"),U(c,()=>F("files.legend.changes")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),o),U(t,b(X0,{get when(){return X()!=="changes"},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"paddingBottom",1),q(E,"flexShrink",0),E}}),o),mz((E)=>{V0=E},o),q(o,"flexGrow",1),q(o,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(o,b(X0,{get when(){return J.worktreePath()==null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,()=>F("files.empty.noTask")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var E=W("box"),c=W("text"),s=W("text");return D(E,c),D(E,s),q(E,"paddingTop",1),q(E,"paddingLeft",1),q(E,"flexDirection","column"),q(E,"gap",0),q(c,"wrapMode","word"),U(c,()=>Ru(A()??"")),q(s,"wrapMode","word"),U(s,()=>F("files.error.retryHint")),x((Z0)=>{var{error:A0,textMuted:h0}=z;return A0!==Z0.e&&(Z0.e=q(c,"fg",A0,Z0.e)),h0!==Z0.t&&(Z0.t=q(s,"fg",h0,Z0.t)),Z0},{e:void 0,t:void 0}),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&K()!=null)},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,(()=>{var s=x0(()=>X()==="all");return()=>s()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var E=W("box");return q(E,"flexShrink",0),q(E,"gap",0),q(E,"paddingRight",1),U(E,b(Q1,{get each(){return M()},children:(c,s)=>{let Z0=()=>s()===Q(),A0=(()=>{var M0=W("text");return q(M0,"wrapMode","none"),U(M0,()=>Z0()?"\u258C":" "),x((T0)=>q(M0,"fg",Z0()?z.focusAccent:void 0,T0)),M0})(),h0=()=>Z0()?z.backgroundElement:void 0;if(c.kind==="dir"){let M0=" ".repeat(c.depth),T0=c.expanded?"\u25BE":"\u25B8";return(()=>{var X1=W("box"),z1=W("box"),w0=W("text");return D(X1,z1),q(X1,"flexDirection","row"),q(X1,"gap",0),q(X1,"onMouseUp",()=>{f(s()),u((v0)=>{let n=new Set(v0);if(n.has(c.path))n.delete(c.path);else n.add(c.path);return n})}),U(X1,A0,z1),D(z1,w0),q(z1,"flexGrow",1),q(z1,"paddingRight",1),q(w0,"wrapMode","none"),U(w0,()=>`${M0}${T0} ${c.name}/`),x((v0)=>{var n=h0(),f0=z.textMuted,S0=AQ.BOLD;return n!==v0.e&&(v0.e=q(X1,"backgroundColor",n,v0.e)),f0!==v0.t&&(v0.t=q(w0,"fg",f0,v0.t)),S0!==v0.a&&(v0.a=q(w0,"attributes",S0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),X1})()}if(c.kind==="file"){let M0=" ".repeat(c.depth);return(()=>{var T0=W("box"),X1=W("box"),z1=W("text");return D(T0,X1),q(T0,"flexDirection","row"),q(T0,"gap",0),q(T0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(T0,A0,X1),D(X1,z1),q(X1,"flexGrow",1),q(X1,"paddingRight",1),q(z1,"wrapMode","none"),U(z1,()=>`${M0} ${c.name}`),x((w0)=>{var v0=h0(),n=z.text;return v0!==w0.e&&(w0.e=q(T0,"backgroundColor",v0,w0.e)),n!==w0.t&&(w0.t=q(z1,"fg",n,w0.t)),w0},{e:void 0,t:void 0}),T0})()}let g0=Ou(c.status),N0=()=>{switch(g0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},y=S(),L0=c.added==null?" ".repeat(y.added):`+${c.added}`.padStart(y.added),Q0=c.deleted==null?" ".repeat(y.deleted):`-${c.deleted}`.padStart(y.deleted);return(()=>{var M0=W("box"),T0=W("box"),X1=W("text"),z1=W("text");return D(M0,T0),q(M0,"flexDirection","row"),q(M0,"gap",0),q(M0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(M0,A0,T0),D(T0,X1),D(T0,z1),q(T0,"flexDirection","row"),q(T0,"flexGrow",1),q(T0,"gap",1),q(T0,"paddingRight",1),q(X1,"wrapMode","none"),U(X1,()=>c.status),q(z1,"wrapMode","none"),q(z1,"flexGrow",1),U(z1,()=>nM(c.path,r())),U(T0,b(X0,{get when(){return y.added>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,L0),x((v0)=>q(w0,"fg",z.success,v0)),w0}}),null),U(T0,b(X0,{get when(){return y.deleted>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,Q0),x((v0)=>q(w0,"fg",z.error,v0)),w0}}),null),x((w0)=>{var v0=h0(),n=N0(),f0=z.text;return v0!==w0.e&&(w0.e=q(M0,"backgroundColor",v0,w0.e)),n!==w0.t&&(w0.t=q(X1,"fg",n,w0.t)),f0!==w0.a&&(w0.a=q(z1,"fg",f0,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),M0})()}})),E}}),null),U(t,b(X0,{get when(){return J.worktreePath()!=null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","row"),q(E,"paddingTop",1),q(E,"flexShrink",0),q(c,"wrapMode","none"),U(c,()=>F("files.footer.openHint")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),t})()}var Au;var pM=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();W1();v1();YW();XW();dM();_M();Au=["all","changes"]});var rM=k(()=>{pM();YW();XW()});function sM(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function tM(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var oM=2500,RQ=1500;import{promises as Cu}from"fs";import Nu from"path";async function yH(J,z){let Y=new AbortController,G=setTimeout(()=>Y.abort(),ku);try{let X=await GY("git",z,{cwd:J,env:nJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(G)}}async function bu(J){return await yH(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function Iu(J){let z=await yH(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function Su(J){let z=await yH(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function yu(J){let z=await yH(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
280
|
-
`).filter((Y)=>Y.length>0).length}async function Tu(J){let[z,Y,G,X]=await Promise.all([bu(J),
|
|
277
|
+
`),process.stdout.write(F("update.pressAnyKey")),await Zu(),process.exit(N)}return D1(()=>({bindings:[{key:"up",cmd:()=>g(-1)},{key:"down",cmd:()=>g(1)},{key:"k",cmd:()=>g(-1)},{key:"j",cmd:()=>g(1)},{key:"return",cmd:()=>u()},{key:"u",cmd:()=>u("update")},{key:"r",cmd:()=>u("release")},{key:"q",cmd:()=>u("close")},{key:"escape",cmd:()=>u("close")},{key:"ctrl+c",cmd:()=>u("close")}]})),(()=>{var S=W("box"),N=W("box"),M=W("text"),I=W("text"),r=W("box"),l=W("text"),e=W("text"),J0=E0("v"),T=W("text"),q0=W("text"),p=E0("v"),j0=W("box"),F0=W("box"),V0=W("text"),t=W("scrollbox"),h=W("box");return D(S,N),D(S,r),D(S,j0),D(S,F0),D(S,t),q(S,"flexDirection","column"),q(S,"flexGrow",1),q(S,"paddingTop",1),q(S,"paddingLeft",2),q(S,"paddingRight",2),D(N,M),D(N,I),q(N,"flexDirection","row"),q(N,"justifyContent","space-between"),q(N,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(I,E0("q / esc")),q(I,"wrapMode","none"),q(I,"onMouseUp",()=>u("close")),D(r,l),D(r,e),D(r,T),D(r,q0),q(r,"flexDirection","row"),q(r,"gap",2),q(r,"flexShrink",0),q(r,"paddingTop",1),q(l,"wrapMode","none"),U(l,()=>F("update.current")),D(e,J0),q(e,"wrapMode","none"),U(e,o0,null),q(T,"wrapMode","none"),U(T,()=>F("update.latest")),D(q0,p),q(q0,"wrapMode","none"),U(q0,K,null),q(j0,"flexDirection","column"),q(j0,"flexShrink",0),q(j0,"paddingTop",1),q(j0,"gap",0),U(j0,b(Q1,{get each(){return A()},children:(C)=>(()=>{var o=W("box"),E=W("box"),c=W("text"),s=E0("["),Z0=E0("]"),A0=W("box"),h0=W("text"),g0=W("text");return D(o,E),D(o,A0),D(o,g0),q(o,"flexDirection","row"),q(o,"gap",1),q(o,"paddingLeft",1),q(o,"paddingRight",1),q(o,"onMouseUp",()=>u(C.id)),D(E,c),q(E,"width",4),q(E,"flexShrink",0),D(c,s),D(c,Z0),q(c,"wrapMode","none"),U(c,()=>C.key,Z0),D(A0,h0),q(A0,"width",14),q(A0,"flexShrink",0),q(h0,"wrapMode","none"),U(h0,()=>C.label),q(g0,"wrapMode","word"),U(g0,()=>C.detail),x((N0)=>{var y=H()===C.id?J.primary:void 0,L0=H()===C.id?J.selectedListItemText:J.accent,Q0=JZ.BOLD,M0=H()===C.id?J.selectedListItemText:J.text,T0=H()===C.id?J.selectedListItemText:J.textMuted;return y!==N0.e&&(N0.e=q(o,"backgroundColor",y,N0.e)),L0!==N0.t&&(N0.t=q(c,"fg",L0,N0.t)),Q0!==N0.a&&(N0.a=q(c,"attributes",Q0,N0.a)),M0!==N0.o&&(N0.o=q(h0,"fg",M0,N0.o)),T0!==N0.i&&(N0.i=q(g0,"fg",T0,N0.i)),N0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),o})()})),U(S,b(X0,{get when(){return V()},get children(){var C=W("text");return q(C,"wrapMode","word"),U(C,V),x((o)=>q(C,"fg",J.info,o)),C}}),F0),D(F0,V0),q(F0,"flexShrink",0),q(F0,"paddingTop",1),q(V0,"wrapMode","none"),U(V0,()=>F("update.changesSectionHeader",{from:o0,to:K()})),D(t,h),q(t,"flexGrow",1),q(t,"flexShrink",1),q(t,"stickyScroll",!1),q(h,"flexDirection","column"),q(h,"paddingRight",1),q(h,"paddingBottom",1),q(h,"gap",0),U(h,b(X0,{get when(){return Q()},get children(){var C=W("text");return U(C,()=>F("update.loadingNotes")),x((o)=>q(C,"fg",J.textMuted,o)),C}}),null),U(h,b(X0,{get when(){return x0(()=>!Q())()&&X().length===0},get children(){var C=W("text");return q(C,"wrapMode","word"),U(C,()=>F("update.notesUnavailable")),x((o)=>q(C,"fg",J.textMuted,o)),C}}),null),U(h,b(Q1,{get each(){return X()},children:(C)=>(()=>{var o=W("box"),E=W("text"),c=E0("v");return D(o,E),q(o,"flexDirection","column"),q(o,"paddingBottom",1),q(o,"gap",0),D(E,c),q(E,"wrapMode","none"),U(E,()=>C.version,null),U(o,b(Q1,{get each(){return Xu(C.body)},children:(s)=>(()=>{var Z0=W("text");return q(Z0,"wrapMode","word"),U(Z0,s),x((A0)=>q(Z0,"fg",J.textMuted,A0)),Z0})()}),null),x((s)=>{var Z0=J.text,A0=JZ.BOLD;return Z0!==s.e&&(s.e=q(E,"fg",Z0,s.e)),A0!==s.t&&(s.t=q(E,"attributes",A0,s.t)),s},{e:void 0,t:void 0}),o})()}),null),x((C)=>{var{background:o,text:E}=J,c=JZ.BOLD,s=J.textMuted,Z0=J.textMuted,A0=J.text,h0=JZ.BOLD,g0=J.textMuted,N0=Y()?.hasUpdate?J.warning:J.success,y=JZ.BOLD,L0=J.textMuted,Q0=JZ.DIM,M0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return o!==C.e&&(C.e=q(S,"backgroundColor",o,C.e)),E!==C.t&&(C.t=q(M,"fg",E,C.t)),c!==C.a&&(C.a=q(M,"attributes",c,C.a)),s!==C.o&&(C.o=q(I,"fg",s,C.o)),Z0!==C.i&&(C.i=q(l,"fg",Z0,C.i)),A0!==C.n&&(C.n=q(e,"fg",A0,C.n)),h0!==C.s&&(C.s=q(e,"attributes",h0,C.s)),g0!==C.h&&(C.h=q(T,"fg",g0,C.h)),N0!==C.r&&(C.r=q(q0,"fg",N0,C.r)),y!==C.d&&(C.d=q(q0,"attributes",y,C.d)),L0!==C.l&&(C.l=q(V0,"fg",L0,C.l)),Q0!==C.u&&(C.u=q(V0,"attributes",Q0,C.u)),M0!==C.c&&(C.c=q(t,"verticalScrollbarOptions",M0,C.c)),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),S})()}async function qu(){await RJ({setup:()=>({root:()=>b(Qu,{})})})}var IM=k(()=>{P();P();P();P();P();P();P();P();P();W1();FJ();v1();ZJ();oY();xJ()});function fu(J){return J.trim().split(/\s+/)[0]??""}function TM(J,z,Y,G){let X=Z1(Y);if(J==="vim")return{bin:"vim",command:`vim ${X}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${X}`};if(J==="nano")return{bin:"nano",command:`nano ${X}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${X}`};let Z=(z.trim()||(G??"").trim()).trim();if(!Z)return null;let Q=fu(Z);if(!Q)return null;let f=Z.includes(yM)?Z.split(yM).join(X):`${Z} ${X}`;return{bin:Q,command:f}}function Hu(J,z,Y){let G=Z1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Z1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${G} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${G}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
|
|
278
|
+
`)}function Bu(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function ju(J){let z=bX(C1(qY)),Y=C1(mY)??"",G=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return TM(z,Y,J,G);if(G)return TM("custom","",J,G);let X=Z1(J);for(let Z of qK)if(await xM(Z))return{bin:Z,command:`${Z} ${X}`};return null}async function xM(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 Wu(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:nJ()}).exited===1}catch{return!1}}async function uM(J,z,Y){let G=await ju(Y);if(!G)return!1;if(!await xM(G.bin))return!1;let X=await Vu(G,z,Y);return await Mz(J,{cwd:z,command:X,name:Ku(Y)}),!0}async function Vu(J,z,Y){let{bin:G,command:X}=J;if(G!=="nvim"&&G!=="vim")return X;if(X!==`${G} ${Z1(Y)}`)return X;let Z=Bu(z,Y);if(!Z)return X;if(!await Wu(z,Z))return X;return Hu(G,Y,Z)}function Ku(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var yM="{file}";var EM=k(()=>{cY();O1();kf();P1();Bz()});async function IH(J,z,Y){if(!z)throw Error("git(): cwd is required");let G=await SX(z,J,{signal:Y}),X=G.status??-1;if(X!==0){let Z=(G.stderr??"").trim(),Q=(G.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${X}: ${Z||Q||"(no output)"}`)}return G.stdout??""}async function JW(J,z){let G=(await IH(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
|
|
279
|
+
`).map((Z)=>Z.replace(/\r$/,"")),X=new Set;for(let Z of G)if(Z.length>0)X.add(Z);return Array.from(X).sort()}async function zW(J,z){let Y=await IH(["status","--porcelain","--untracked-files=all"],J,z),G=vM(Y),X=new Map;try{let Z=await IH(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(wM(Z).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let Z=await IH(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(wM(Z).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{X=new Map}}return G.map((Z)=>{let Q=X.get(Z.path);if(Q)return{...Z,added:Q.added,deleted:Q.deleted};return Z})}function wM(J){return HU(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function PM(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let G=Y.split("/").filter((Z)=>Z.length>0);if(G.length===0)continue;let X=z;for(let Z=0;Z<G.length;Z++){let Q=G[Z],H=Z!==G.length-1,B=X.children.find((V)=>V.name===Q&&V.isDir===H);if(!B)B={name:Q,path:G.slice(0,Z+1).join("/"),isDir:H,children:[]},X.children.push(B);X=B}}return hM(z),z}function hM(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)hM(z)}function vM(J){let z=[];for(let Y of xf(J)){let G;if(Y.x==="?"&&Y.y==="?")G="?";else{let Z=Y.y!==" "?Y.y:Y.x;if(Z==="M"||Z==="A"||Z==="D"||Z==="R"||Z==="C"||Z==="U")G=Z;else continue}let X=Y.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:G})}return z}var YW=k(()=>{Uj();bf()});function GW(J){D1(()=>({enabled:J.focused(),bindings:pY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let G=J.currentTab(),X=FQ.indexOf(G);if(X<0)return;let Z=(Y??0)%2===0?-1:1,Q=FQ[(X+Z+FQ.length)%FQ.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 FQ;var XW=k(()=>{rX();xJ();FQ=["all","changes"]});import{spawn as mM}from"child_process";import{existsSync as Uu}from"fs";import{platform as Du}from"os";function cM(J){if(!J)return;let z=Du();if(z==="linux"){if(Uu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){OQ("wslview",[J],()=>{let Y=mM("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),G="";Y.stdout?.on("data",(X)=>{G+=X.toString()}),Y.on("close",(X)=>{if(X===0)OQ("explorer.exe",[G.trim()])})});return}OQ("xdg-open",[J]);return}if(z==="darwin"){OQ("open",[J]);return}if(z==="win32"){OQ("cmd.exe",["/c","start","",J]);return}}function OQ(J,z,Y){try{let G=mM(J,z,{stdio:"ignore",detached:!0});G.on("error",()=>Y?.()),G.unref()}catch{Y?.()}}var dM=()=>{};function ZW(J,z,Y,G){for(let X of J.children)if(X.isDir){let Z=z.has(X.path);if(G.push({kind:"dir",path:X.path,name:X.name,depth:Y,expanded:Z,hasChildren:X.children.length>0}),Z)ZW(X,z,Y+1,G)}else G.push({kind:"file",path:X.path,name:X.name,depth:Y})}function nM(J,z){if(z<=0)return J;let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}function iM(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function Lu(J){return`${J.kind}\x00${J.path}`}function Mu(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function lM(J,z){return RH(J,z,Lu,Mu)}function $M(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function aM(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let G=J[Y],X=z[Y];if(G.path!==X.path||G.status!==X.status||G.added!==X.added||G.deleted!==X.deleted)return!1}return!0}var _M=()=>{};import{watch as Fu}from"fs";import{TextAttributes as AQ}from"@opentui/core";function Ou(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function Ru(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function gu(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function QW(J){let{theme:z}=i0(),Y=vz(),G=()=>J.focused?J.focused():!0,[X,Z]=a("all"),[Q,f]=a(0),[H,B]=a(0),[V,j]=a(null,{equals:$M}),[K,L]=a(null,{equals:aM}),[A,O]=a(null),[g,u]=a(new Set),_=0;async function S(t,h,C){let o=++_;if(h==null){j(null),L(null),O(null);return}O(null);try{if(t==="all"){let E=await JW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;j(E)}else if(t==="changes"){let E=await zW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;L(E)}}catch(E){if(C?.aborted)return;let c=E instanceof Error?E.message:String(E);if(o===_&&J.worktreePath()===h)O(c)}}s0(IJ(J.worktreePath,async(t)=>{j(null),L(null),O(null),f(0),u(new Set);let h=new AbortController;k1(()=>h.abort()),await S(X(),t,h.signal)})),s0(IJ(J.worktreePath,(t)=>{if(t==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let h=null,C=null;try{C=Fu(t,{recursive:!0},(o,E)=>{if(E==null)return;let c=E.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(h!=null)clearTimeout(h);h=setTimeout(()=>{h=null,B((s)=>s+1)},500)}),C.on("error",()=>{})}catch{}k1(()=>{if(h!=null)clearTimeout(h);if(C!=null)C.close()})})),s0(IJ([X,H],async([t,h])=>{let C=J.worktreePath();if(C==null)return;f(0);let o=new AbortController;k1(()=>o.abort());let c=H()>0;if(t==="all"){if(V()==null||c)await S("all",C,o.signal)}else if(t==="changes"){if(K()==null||c)await S("changes",C,o.signal)}}));let N=K0(()=>{let t=V();if(t==null)return null;return PM(t)}),M=K0((t)=>{let h=[];if(X()==="all"){let C=N();if(C!=null)ZW(C,g(),0,h)}else if(X()==="changes"){let C=K();if(C!=null)h.push(...iM(C))}return lM(t??[],h)},[]),I=K0(()=>{let t=0,h=0;for(let C of M()){if(C.kind!=="status")continue;if(C.added!=null)t=Math.max(t,String(C.added).length+1);if(C.deleted!=null)h=Math.max(h,String(C.deleted).length+1)}return{added:t,deleted:h}}),r=K0(()=>{let t=I(),h=(t.added>0?t.added+1:0)+(t.deleted>0?t.deleted+1:0);return Math.max(8,Y().width-6-h)});function l(){let t=M();if(t.length===0)return;f(Math.min(Q()+1,t.length-1))}function e(){if(M().length===0)return;f(Math.max(Q()-1,0))}function J0(){let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind!=="dir")return;if(!C.expanded&&C.hasChildren)u((o)=>{let E=new Set(o);return E.add(C.path),E});else if(C.expanded){if(h+1<t.length)f(h+1)}}function T(){if(X()!=="all")return;let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind==="dir"&&C.expanded){u((E)=>{let c=new Set(E);return c.delete(C.path),c});return}if(C.kind!=="dir"&&C.kind!=="file")return;let o=C.depth-1;if(o<0)return;for(let E=h-1;E>=0;E--){let c=t[E];if(!c)continue;if(c.kind==="dir"&&c.depth===o){f(E);return}}}function q0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C)return;if(C.kind==="dir"){u((o)=>{let E=new Set(o);if(E.has(C.path))E.delete(C.path);else E.add(C.path);return E});return}J.onOpenFile(C.path)}function p(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;J.onMention?.(C.path)}function j0(){B((t)=>t+1),J.onRefresh?.()}function F0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;let o=J.worktreePath();if(!o)return;let E=`${o}/${C.path}`;cM(E)}GW({focused:G,moveDown:l,moveUp:e,setTab:(t)=>Z(t),currentTab:X,openCurrent:q0,mentionCurrent:p,createPR:J.onCreatePR,openExternal:F0,refresh:j0,expandOrDescend:J0,collapseOrParent:T});let V0;return s0(IJ([Q,M],([t,h])=>{if(!V0)return;if(h.length===0)return;let C=V0.scrollTop,o=V0.viewport.height;if(o<=0)return;if(t<C)V0.scrollTo({x:0,y:t});else if(t>=C+o)V0.scrollTo({x:0,y:t-o+1})})),(()=>{var t=W("box"),h=W("box"),C=W("box"),o=W("scrollbox");return D(t,h),D(t,o),q(t,"flexDirection","column"),q(t,"flexGrow",1),q(t,"paddingTop",1),q(t,"paddingBottom",1),q(t,"paddingLeft",0),q(t,"paddingRight",0),U(t,b(X0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"justifyContent","flex-end"),q(E,"gap",2),q(E,"paddingBottom",1),q(E,"flexShrink",0),U(E,b(X0,{get when(){return J.onZenToggle},get children(){var c=W("box"),s=W("text"),Z0=W("text");return D(c,s),D(c,Z0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onZenToggle?.()),D(s,E0("[~]")),q(s,"wrapMode","none"),q(Z0,"wrapMode","none"),U(Z0,()=>F("files.actions.zen")),x((A0)=>{var h0=z.accent,g0=AQ.BOLD,N0=z.text;return h0!==A0.e&&(A0.e=q(s,"fg",h0,A0.e)),g0!==A0.t&&(A0.t=q(s,"attributes",g0,A0.t)),N0!==A0.a&&(A0.a=q(Z0,"fg",N0,A0.a)),A0},{e:void 0,t:void 0,a:void 0}),c}}),null),U(E,b(X0,{get when(){return J.onCreatePR},get children(){var c=W("box"),s=W("text"),Z0=W("text");return D(c,s),D(c,Z0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onCreatePR?.()),D(s,E0("[P]")),q(s,"wrapMode","none"),q(Z0,"wrapMode","none"),U(Z0,()=>F("files.actions.createPR")),x((A0)=>{var h0=z.accent,g0=AQ.BOLD,N0=z.text;return h0!==A0.e&&(A0.e=q(s,"fg",h0,A0.e)),g0!==A0.t&&(A0.t=q(s,"attributes",g0,A0.t)),N0!==A0.a&&(A0.a=q(Z0,"fg",N0,A0.a)),A0},{e:void 0,t:void 0,a:void 0}),c}}),null),E}}),h),D(h,C),q(h,"flexDirection","row"),q(h,"justifyContent","space-between"),q(h,"paddingBottom",0),q(h,"flexShrink",0),q(C,"flexDirection","row"),q(C,"gap",2),U(C,b(Q1,{each:Au,children:(E)=>{let c=()=>X()===E;return(()=>{var s=W("text");return q(s,"wrapMode","none"),q(s,"onMouseUp",()=>Z(E)),U(s,()=>gu(E)),x((Z0)=>{var A0=c()?z.primary:z.textMuted,h0=c()?AQ.BOLD:void 0;return A0!==Z0.e&&(Z0.e=q(s,"fg",A0,Z0.e)),h0!==Z0.t&&(Z0.t=q(s,"attributes",h0,Z0.t)),Z0},{e:void 0,t:void 0}),s})()}})),U(h,b(X0,{get when(){return J.cornerBadge?.()},children:(E)=>(()=>{var c=W("text");return q(c,"wrapMode","none"),U(c,()=>E().text),x((s)=>{var Z0=E().active?z.accent:z.textMuted,A0=E().active?AQ.BOLD:void 0;return Z0!==s.e&&(s.e=q(c,"fg",Z0,s.e)),A0!==s.t&&(s.t=q(c,"attributes",A0,s.t)),s},{e:void 0,t:void 0}),c})()}),null),U(t,b(X0,{get when(){return X()==="changes"},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","column"),q(E,"paddingBottom",1),q(E,"flexShrink",0),q(E,"gap",0),q(c,"wrapMode","none"),U(c,()=>F("files.legend.changes")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),o),U(t,b(X0,{get when(){return X()!=="changes"},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"paddingBottom",1),q(E,"flexShrink",0),E}}),o),mz((E)=>{V0=E},o),q(o,"flexGrow",1),q(o,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(o,b(X0,{get when(){return J.worktreePath()==null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,()=>F("files.empty.noTask")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var E=W("box"),c=W("text"),s=W("text");return D(E,c),D(E,s),q(E,"paddingTop",1),q(E,"paddingLeft",1),q(E,"flexDirection","column"),q(E,"gap",0),q(c,"wrapMode","word"),U(c,()=>Ru(A()??"")),q(s,"wrapMode","word"),U(s,()=>F("files.error.retryHint")),x((Z0)=>{var{error:A0,textMuted:h0}=z;return A0!==Z0.e&&(Z0.e=q(c,"fg",A0,Z0.e)),h0!==Z0.t&&(Z0.t=q(s,"fg",h0,Z0.t)),Z0},{e:void 0,t:void 0}),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&K()!=null)},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,(()=>{var s=x0(()=>X()==="all");return()=>s()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(X0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var E=W("box");return q(E,"flexShrink",0),q(E,"gap",0),q(E,"paddingRight",1),U(E,b(Q1,{get each(){return M()},children:(c,s)=>{let Z0=()=>s()===Q(),A0=(()=>{var M0=W("text");return q(M0,"wrapMode","none"),U(M0,()=>Z0()?"\u258C":" "),x((T0)=>q(M0,"fg",Z0()?z.focusAccent:void 0,T0)),M0})(),h0=()=>Z0()?z.backgroundElement:void 0;if(c.kind==="dir"){let M0=" ".repeat(c.depth),T0=c.expanded?"\u25BE":"\u25B8";return(()=>{var X1=W("box"),z1=W("box"),w0=W("text");return D(X1,z1),q(X1,"flexDirection","row"),q(X1,"gap",0),q(X1,"onMouseUp",()=>{f(s()),u((v0)=>{let n=new Set(v0);if(n.has(c.path))n.delete(c.path);else n.add(c.path);return n})}),U(X1,A0,z1),D(z1,w0),q(z1,"flexGrow",1),q(z1,"paddingRight",1),q(w0,"wrapMode","none"),U(w0,()=>`${M0}${T0} ${c.name}/`),x((v0)=>{var n=h0(),f0=z.textMuted,I0=AQ.BOLD;return n!==v0.e&&(v0.e=q(X1,"backgroundColor",n,v0.e)),f0!==v0.t&&(v0.t=q(w0,"fg",f0,v0.t)),I0!==v0.a&&(v0.a=q(w0,"attributes",I0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),X1})()}if(c.kind==="file"){let M0=" ".repeat(c.depth);return(()=>{var T0=W("box"),X1=W("box"),z1=W("text");return D(T0,X1),q(T0,"flexDirection","row"),q(T0,"gap",0),q(T0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(T0,A0,X1),D(X1,z1),q(X1,"flexGrow",1),q(X1,"paddingRight",1),q(z1,"wrapMode","none"),U(z1,()=>`${M0} ${c.name}`),x((w0)=>{var v0=h0(),n=z.text;return v0!==w0.e&&(w0.e=q(T0,"backgroundColor",v0,w0.e)),n!==w0.t&&(w0.t=q(z1,"fg",n,w0.t)),w0},{e:void 0,t:void 0}),T0})()}let g0=Ou(c.status),N0=()=>{switch(g0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},y=I(),L0=c.added==null?" ".repeat(y.added):`+${c.added}`.padStart(y.added),Q0=c.deleted==null?" ".repeat(y.deleted):`-${c.deleted}`.padStart(y.deleted);return(()=>{var M0=W("box"),T0=W("box"),X1=W("text"),z1=W("text");return D(M0,T0),q(M0,"flexDirection","row"),q(M0,"gap",0),q(M0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(M0,A0,T0),D(T0,X1),D(T0,z1),q(T0,"flexDirection","row"),q(T0,"flexGrow",1),q(T0,"gap",1),q(T0,"paddingRight",1),q(X1,"wrapMode","none"),U(X1,()=>c.status),q(z1,"wrapMode","none"),q(z1,"flexGrow",1),U(z1,()=>nM(c.path,r())),U(T0,b(X0,{get when(){return y.added>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,L0),x((v0)=>q(w0,"fg",z.success,v0)),w0}}),null),U(T0,b(X0,{get when(){return y.deleted>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,Q0),x((v0)=>q(w0,"fg",z.error,v0)),w0}}),null),x((w0)=>{var v0=h0(),n=N0(),f0=z.text;return v0!==w0.e&&(w0.e=q(M0,"backgroundColor",v0,w0.e)),n!==w0.t&&(w0.t=q(X1,"fg",n,w0.t)),f0!==w0.a&&(w0.a=q(z1,"fg",f0,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),M0})()}})),E}}),null),U(t,b(X0,{get when(){return J.worktreePath()!=null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","row"),q(E,"paddingTop",1),q(E,"flexShrink",0),q(c,"wrapMode","none"),U(c,()=>F("files.footer.openHint")),x((s)=>q(c,"fg",z.textMuted,s)),E}}),null),t})()}var Au;var pM=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();W1();v1();YW();XW();dM();_M();Au=["all","changes"]});var rM=k(()=>{pM();YW();XW()});function sM(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function tM(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var oM=2500,RQ=1500;import{promises as Cu}from"fs";import Nu from"path";async function yH(J,z){let Y=new AbortController,G=setTimeout(()=>Y.abort(),ku);try{let X=await GY("git",z,{cwd:J,env:nJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(G)}}async function bu(J){return await yH(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function Su(J){let z=await yH(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function Iu(J){let z=await yH(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function yu(J){let z=await yH(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
280
|
+
`).filter((Y)=>Y.length>0).length}async function Tu(J){let[z,Y,G,X]=await Promise.all([bu(J),Su(J),Iu(J),yu(J)]);return{branch:z,targetBranch:Y,hasUpstream:G,dirtyCount:X}}function xu(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 uu(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function Eu(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:xu(z.dirtyCount),upstreamSentence:uu(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(G,X)=>Object.hasOwn(Y,X)?Y[X]:G)}async function wu(J){let z=Nu.join(J,".kobe","pr-instructions.md");try{let Y=await Cu.readFile(z,"utf8");return Y.length>0?Y:eM}catch{return eM}}async function JF(J){let[z,Y]=await Promise.all([wu(J),Tu(J)]);return Eu(z,Y)}var ku=5000,eM=`The user likes the current state of the code.
|
|
281
281
|
|
|
282
282
|
{{dirtyCountSentence}}
|
|
283
283
|
The current branch is {{branch}}.
|
|
@@ -294,7 +294,7 @@ Follow these steps to create a PR:
|
|
|
294
294
|
- Push to origin.
|
|
295
295
|
- 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.
|
|
296
296
|
|
|
297
|
-
If any of these steps fail, ask the user for help.`;var zF=k(()=>{cY();LQ()});var qW={};j1(qW,{startOpsPreview:()=>pu,startOpsHost:()=>nu});import{createHash as Pu}from"crypto";import{SyntaxStyle as hu}from"@opentui/core";function cu(J){let{theme:z}=i0(),[Y,G]=a(null),X=!1;JJ(()=>{(async()=>{let N=await WH({logTag:"ops-activity",channels:["transcript.activity"]});if(!N)return;if(X){N.dispose();return}G(N)})()}),k1(()=>{X=!0,Y()?.dispose()});let Z=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>Z()?.get(J.worktree)??null,[f,H]=a(0),[B,V]=a(0),j=!1;s0(()=>{let N=Z();if(!N)return;let M=N.get(J.worktree)?.mtimeMs??0;if(!j&&M>0)j=!0,H(M);V(M)}),s0(()=>{if(Z()!==null)return;let N=!1,M,S=oM,r=0,l=0;async function e(){try{let J0=await oG(J.vendor,J.worktree);if(N)return;if(!j)j=!0,H(J0),l=J0;if(J0>l)l=J0,r=0;else r++;V(J0)}catch{r++}finally{if(!N)S=sM(S,r),M=setTimeout(()=>void e(),S)}}e(),k1(()=>{if(N=!0,M)clearTimeout(M)})});let K=()=>j&&B()>f(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){H(B())}JJ(()=>{if(!J.targetPane)return;let N=VZ(J.vendor),M=!1,S=null,r=!1,l="",e=!1,J0=0,T=null,q0=RQ,p=0,j0,F0=()=>Z()!==null;async function V0(o){if(o===T)return;T=o,await EY(J.targetPane,mu,o)}async function t(){if(F0())return Q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function h(){try{l=YF(await BX(J.targetPane,80)),S=await t(),r=!0,await V0(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function C(){let o=F0();try{let E=YF(await BX(J.targetPane,80));if(M)return;if(o&&!r)S=Q()?.completionId??null,r=!0;let c=o?Q()?.mtimeMs??0:0,s=c>p;if(c>p)p=c;if(E!==l)l=E,e=!0,J0=0,await V0(N.supportsCompletionMarkers()?"running":"unknown");else if(e)J0++;if(N.supportsCompletionMarkers()&&e&&J0>=vu){let Z0=await t();if(!M&&Z0!==null&&Z0!==S)S=Z0,e=!1,J0=0,await V0("done")}q0=o?tM(q0,s,T):RQ}catch{q0=RQ}finally{if(!M)j0=setTimeout(()=>void C(),q0)}}h(),j0=setTimeout(()=>void C(),RQ),k1(()=>{if(M=!0,j0)clearTimeout(j0)})});function O(N){if(!J.taskId)return;Mz(M1(J.taskId),{cwd:J.worktree,command:A7({worktree:J.worktree,relPath:N,cliInvocation:b1()}),name:du(N)})}function g(N){if(!J.taskId){O(N);return}let M=`${J.worktree}/${N}`;uM(M1(J.taskId),J.worktree,M).then((S)=>{if(!S)O(N)})}function u(N){if(!J.targetPane)return;Wf(J.targetPane,`@${N} `)}async function _(){if(!J.targetPane)return;let N=await JF(J.worktree);await Wf(J.targetPane,N),await IZ(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let N=M1(J.taskId),M=b1(),S=`${zJ()}${kJ(M)} layout --session ${Z1(N)} --action zen-toggle`;P0(["run-shell","-b",S])}return(()=>{var N=W("box");return q(N,"flexDirection","column"),q(N,"flexGrow",1),U(N,b(QW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:g,onMention:u,onCreatePR:()=>void _(),get onZenToggle(){return J.taskId?I:void 0},cornerBadge:L,onRefresh:A})),x((M)=>q(N,"backgroundColor",z.background,M)),N})()}function du(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function YF(J){return Pu("sha1").update(J).digest("hex")}async function nu(J){await RJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(cu,J)})})}function iu(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 lu(J,z){let Y=await IX(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function $u(J,z){return await fK(J,z)??""}function au(J){let z={fg:J.primary},Y={fg:J.success},G={fg:J.info},X={fg:J.warning},Z={fg:J.accent},Q={fg:J.textMuted,italic:!0},f={fg:J.textMuted},H={fg:J.text};return hu.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:G,"function.call":G,"function.method":G,"function.builtin":G,constructor:G,type:X,"type.builtin":X,constant:Z,"constant.builtin":Z,boolean:Z,number:Z,operator:f,"punctuation.bracket":f,"punctuation.delimiter":f,"punctuation.special":f,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":Z,property:H,attribute:X,label:H,module:H})}function _u(J){let{theme:z}=i0(),Y=au(z),G=iu(J.relPath),[X]=Dq(()=>J.relPath,async(Z)=>{let Q=await lu(J.worktree,Z);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await $u(J.worktree,Z)}});return D1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var Z=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(Z,Q),D(Z,V),q(Z,"flexDirection","column"),q(Z,"flexGrow",1),D(Q,f),D(Q,H),D(Q,B),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(f,()=>J.relPath),U(H,(()=>{var j=x0(()=>X()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(B,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(X0,{get when(){return X()},get fallback(){return(()=>{var j=W("text");return U(j,()=>F("ops.preview.loading")),x((K)=>q(j,"fg",z.textMuted,K)),j})()},children:(j)=>b(X0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",G),q(K,"syntaxStyle",Y),x((L)=>q(K,"content",j().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",G),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),x((L)=>q(K,"diff",j().text,L)),K}})})),x((j)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==j.e&&(j.e=q(Z,"backgroundColor",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z})()}async function pu(J){await RJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(_u,J)})})}var vu=2,mu="@kobe_tab_state";var fW=k(()=>{P();P();P();P();P();P();P();ez();Gq();Xq();P1();EM();Bz();bf();W1();R9();v1();ZJ();oY();xJ();rM();DG();zF()});var QF={};j1(QF,{startDirectTmux:()=>ou,chooseInitialTask:()=>ZF});import{resolve as GF}from"path";function ZF(J,z={}){let Y=(Q)=>Q?J.find((f)=>f.id===Q):void 0,G=Y(z.activeTaskId);if(G)return G;let X=Y(z.persistedTaskId);if(X)return X;if(z.cwdRepo){let Q=J.find((f)=>f.kind==="main"&&f.repo===z.cwdRepo);if(Q)return Q}let Z=J.filter((Q)=>!Q.archived);return Z.find((Q)=>Q.pinned)??Z[0]??J[0]}async function XF(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 ru(J){lH();let z=[...CJ()];if(z.length===0)z=[_z(GF(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(G){console.error(`[kobe] ensureMainTask failed for ${Y}:`,G)}return z[0]??GF(process.cwd())}async function ou(){if(hQ("gui"),Promise.resolve().then(() => (dj(),cj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await Ez()){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 Az(),z=new UJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await ru(z),G=ZF(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:C1("lastSelectedTaskId"),cwdRepo:Y});if(!G){let j=await Vf();if(await NG(),await AX(j),await Bf(j),await XF(CX(j))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let X=G.worktreePath||await z.ensureWorktree(G.id),Z=M1(G.id);await z.setActiveTask(G.id).catch(()=>{}),o1("lastSelectedTaskId",G.id);let Q=G.vendor;if(G.kind==="main"){let K=await RB(Z)??uJ(C1("lastSelectedVendor"),EJ());if(K!==G.vendor)await z.setVendor(G.id,K).catch(()=>{}),Q=K}let f=HY(G.repo,X,{kind:"repo-init"});if(!await PY({name:Z,cwd:X,command:yJ(Q),taskId:G.id,vendor:Q,repo:G.repo,launchInit:f})){console.error(`kobe: tmux session ${Z} failed to start (check the daemon log)`),process.exitCode=1;return}await NG(),await AX(Z),await Bf(Z);let B=await XF(CX(Z));if(B===null){console.error(`kobe: failed to attach to tmux session ${Z}`),process.exitCode=1;return}if(B!==0&&!await H1(Z)){console.error(`kobe: tmux session ${Z} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(G.id);if(V&&V.title===Tz&&V.worktreePath)try{let j=await sG(V.worktreePath,V.vendor);if(j)await z.setTitle(V.id,j)}catch(j){console.error("[kobe] auto-title failed:",j)}}finally{z.dispose()}}var qF=k(()=>{ZG();OJ();aY();vJ();fq();RZ();SX();O1();P1();l1();$q();gX();YJ()});var fF={};j1(fF,{startTui:()=>su});async function su(){v4();let{startDirectTmux:J}=await Promise.resolve().then(() => (qF(),QF));await J()}var HF=k(()=>{rf()});TH();l1();import{resolve as BW}from"path";FJ();function NW(){return[`kobe ${o0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
|
|
297
|
+
If any of these steps fail, ask the user for help.`;var zF=k(()=>{cY();LQ()});var qW={};j1(qW,{startOpsPreview:()=>pu,startOpsHost:()=>nu});import{createHash as Pu}from"crypto";import{SyntaxStyle as hu}from"@opentui/core";function cu(J){let{theme:z}=i0(),[Y,G]=a(null),X=!1;JJ(()=>{(async()=>{let N=await WH({logTag:"ops-activity",channels:["transcript.activity"]});if(!N)return;if(X){N.dispose();return}G(N)})()}),k1(()=>{X=!0,Y()?.dispose()});let Z=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>Z()?.get(J.worktree)??null,[f,H]=a(0),[B,V]=a(0),j=!1;s0(()=>{let N=Z();if(!N)return;let M=N.get(J.worktree)?.mtimeMs??0;if(!j&&M>0)j=!0,H(M);V(M)}),s0(()=>{if(Z()!==null)return;let N=!1,M,I=oM,r=0,l=0;async function e(){try{let J0=await oG(J.vendor,J.worktree);if(N)return;if(!j)j=!0,H(J0),l=J0;if(J0>l)l=J0,r=0;else r++;V(J0)}catch{r++}finally{if(!N)I=sM(I,r),M=setTimeout(()=>void e(),I)}}e(),k1(()=>{if(N=!0,M)clearTimeout(M)})});let K=()=>j&&B()>f(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){H(B())}JJ(()=>{if(!J.targetPane)return;let N=VZ(J.vendor),M=!1,I=null,r=!1,l="",e=!1,J0=0,T=null,q0=RQ,p=0,j0,F0=()=>Z()!==null;async function V0(o){if(o===T)return;T=o,await EY(J.targetPane,mu,o)}async function t(){if(F0())return Q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function h(){try{l=YF(await BX(J.targetPane,80)),I=await t(),r=!0,await V0(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function C(){let o=F0();try{let E=YF(await BX(J.targetPane,80));if(M)return;if(o&&!r)I=Q()?.completionId??null,r=!0;let c=o?Q()?.mtimeMs??0:0,s=c>p;if(c>p)p=c;if(E!==l)l=E,e=!0,J0=0,await V0(N.supportsCompletionMarkers()?"running":"unknown");else if(e)J0++;if(N.supportsCompletionMarkers()&&e&&J0>=vu){let Z0=await t();if(!M&&Z0!==null&&Z0!==I)I=Z0,e=!1,J0=0,await V0("done")}q0=o?tM(q0,s,T):RQ}catch{q0=RQ}finally{if(!M)j0=setTimeout(()=>void C(),q0)}}h(),j0=setTimeout(()=>void C(),RQ),k1(()=>{if(M=!0,j0)clearTimeout(j0)})});function O(N){if(!J.taskId)return;Mz(M1(J.taskId),{cwd:J.worktree,command:A7({worktree:J.worktree,relPath:N,cliInvocation:b1()}),name:du(N)})}function g(N){if(!J.taskId){O(N);return}let M=`${J.worktree}/${N}`;uM(M1(J.taskId),J.worktree,M).then((I)=>{if(!I)O(N)})}function u(N){if(!J.targetPane)return;Wf(J.targetPane,`@${N} `)}async function _(){if(!J.targetPane)return;let N=await JF(J.worktree);await Wf(J.targetPane,N),await SZ(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let N=M1(J.taskId),M=b1(),I=`${zJ()}${kJ(M)} layout --session ${Z1(N)} --action zen-toggle`;P0(["run-shell","-b",I])}return(()=>{var N=W("box");return q(N,"flexDirection","column"),q(N,"flexGrow",1),U(N,b(QW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:g,onMention:u,onCreatePR:()=>void _(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),x((M)=>q(N,"backgroundColor",z.background,M)),N})()}function du(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function YF(J){return Pu("sha1").update(J).digest("hex")}async function nu(J){await RJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(cu,J)})})}function iu(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 lu(J,z){let Y=await SX(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function $u(J,z){return await fK(J,z)??""}function au(J){let z={fg:J.primary},Y={fg:J.success},G={fg:J.info},X={fg:J.warning},Z={fg:J.accent},Q={fg:J.textMuted,italic:!0},f={fg:J.textMuted},H={fg:J.text};return hu.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:G,"function.call":G,"function.method":G,"function.builtin":G,constructor:G,type:X,"type.builtin":X,constant:Z,"constant.builtin":Z,boolean:Z,number:Z,operator:f,"punctuation.bracket":f,"punctuation.delimiter":f,"punctuation.special":f,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":Z,property:H,attribute:X,label:H,module:H})}function _u(J){let{theme:z}=i0(),Y=au(z),G=iu(J.relPath),[X]=Dq(()=>J.relPath,async(Z)=>{let Q=await lu(J.worktree,Z);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await $u(J.worktree,Z)}});return D1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var Z=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(Z,Q),D(Z,V),q(Z,"flexDirection","column"),q(Z,"flexGrow",1),D(Q,f),D(Q,H),D(Q,B),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(f,()=>J.relPath),U(H,(()=>{var j=x0(()=>X()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(B,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(X0,{get when(){return X()},get fallback(){return(()=>{var j=W("text");return U(j,()=>F("ops.preview.loading")),x((K)=>q(j,"fg",z.textMuted,K)),j})()},children:(j)=>b(X0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",G),q(K,"syntaxStyle",Y),x((L)=>q(K,"content",j().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",G),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),x((L)=>q(K,"diff",j().text,L)),K}})})),x((j)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==j.e&&(j.e=q(Z,"backgroundColor",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z})()}async function pu(J){await RJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(_u,J)})})}var vu=2,mu="@kobe_tab_state";var fW=k(()=>{P();P();P();P();P();P();P();ez();Gq();Xq();P1();EM();Bz();bf();W1();R9();v1();ZJ();oY();xJ();rM();DG();zF()});var QF={};j1(QF,{startDirectTmux:()=>ou,chooseInitialTask:()=>ZF});import{resolve as GF}from"path";function ZF(J,z={}){let Y=(Q)=>Q?J.find((f)=>f.id===Q):void 0,G=Y(z.activeTaskId);if(G)return G;let X=Y(z.persistedTaskId);if(X)return X;if(z.cwdRepo){let Q=J.find((f)=>f.kind==="main"&&f.repo===z.cwdRepo);if(Q)return Q}let Z=J.filter((Q)=>!Q.archived);return Z.find((Q)=>Q.pinned)??Z[0]??J[0]}async function XF(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 ru(J){lH();let z=[...CJ()];if(z.length===0)z=[_z(GF(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(G){console.error(`[kobe] ensureMainTask failed for ${Y}:`,G)}return z[0]??GF(process.cwd())}async function ou(){if(hQ("gui"),Promise.resolve().then(() => (dj(),cj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await Ez()){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 Az(),z=new UJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await ru(z),G=ZF(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:C1("lastSelectedTaskId"),cwdRepo:Y});if(!G){let j=await Vf();if(await NG(),await AX(j),await Bf(j),await XF(CX(j))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let X=G.worktreePath||await z.ensureWorktree(G.id),Z=M1(G.id);await z.setActiveTask(G.id).catch(()=>{}),o1("lastSelectedTaskId",G.id);let Q=G.vendor;if(G.kind==="main"){let K=await RB(Z)??uJ(C1("lastSelectedVendor"),EJ());if(K!==G.vendor)await z.setVendor(G.id,K).catch(()=>{}),Q=K}let f=HY(G.repo,X,{kind:"repo-init"});if(!await PY({name:Z,cwd:X,command:yJ(Q),taskId:G.id,vendor:Q,repo:G.repo,launchInit:f})){console.error(`kobe: tmux session ${Z} failed to start (check the daemon log)`),process.exitCode=1;return}await NG(),await AX(Z),await Bf(Z);let B=await XF(CX(Z));if(B===null){console.error(`kobe: failed to attach to tmux session ${Z}`),process.exitCode=1;return}if(B!==0&&!await H1(Z)){console.error(`kobe: tmux session ${Z} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(G.id);if(V&&V.title===Tz&&V.worktreePath)try{let j=await sG(V.worktreePath,V.vendor);if(j)await z.setTitle(V.id,j)}catch(j){console.error("[kobe] auto-title failed:",j)}}finally{z.dispose()}}var qF=k(()=>{ZG();OJ();aY();vJ();fq();RZ();IX();O1();P1();l1();$q();gX();YJ()});var fF={};j1(fF,{startTui:()=>su});async function su(){v4();let{startDirectTmux:J}=await Promise.resolve().then(() => (qF(),QF));await J()}var HF=k(()=>{rf()});TH();l1();import{resolve as BW}from"path";FJ();function NW(){return[`kobe ${o0}`,"","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(`
|
|
298
298
|
`)}var BF=`Usage: kobe add [path]
|
|
299
299
|
kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
|
|
300
300
|
|
|
@@ -327,4 +327,4 @@ ${KF}
|
|
|
327
327
|
pass a path glob to adopt, e.g. kobe adopt '${Q}/*' --yes`);return}let j=B.filter(V);if(j.length===0){console.log(`
|
|
328
328
|
no worktrees match glob ${JSON.stringify(z)}`);return}if(!X){console.log(`
|
|
329
329
|
${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await VF(H,Q,j,f),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function WF(J){J.write(`${NW()}
|
|
330
|
-
`)}function kz(J){let z={};for(let Y=0;Y<J.length;Y++){let G=J[Y],X=J[Y+1];if(X===void 0)continue;if(G==="--task-id")z.taskId=X,Y++;else if(G==="--worktree")z.worktree=X,Y++;else if(G==="--target-pane")z.targetPane=X,Y++;else if(G==="--vendor")z.vendor=X,Y++;else if(G==="--preview")z.preview=X,Y++;else if(G==="--session")z.session=X,Y++;else if(G==="--repo")z.repo=X,Y++;else if(G==="--initial-task-id")z.initialTaskId=X,Y++;else if(G==="--action")z.action=X,Y++;else if(G==="--window")z.windowId=X,Y++;else if(G==="--cols")z.cols=X,Y++;else if(G==="--rows")z.rows=X,Y++;else if(G==="--status")z.status=X,Y++;else if(G==="--client")z.client=X,Y++}return z}async function YE(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (FJ(),CW));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){WF(process.stdout);return}if(z==="add"){await tu(Y);return}if(z==="remove"){await eu(Y);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (iU(),nU));await X(Y);return}if(z==="adopt"){await zE(Y);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (pU(),_U));await X(Y);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (tU(),sU));await X(Y);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (U4(),K4));await X(Y);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (O4(),F4));await X(Y);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (N4(),C4));await X(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (y4(),
|
|
330
|
+
`)}function kz(J){let z={};for(let Y=0;Y<J.length;Y++){let G=J[Y],X=J[Y+1];if(X===void 0)continue;if(G==="--task-id")z.taskId=X,Y++;else if(G==="--worktree")z.worktree=X,Y++;else if(G==="--target-pane")z.targetPane=X,Y++;else if(G==="--vendor")z.vendor=X,Y++;else if(G==="--preview")z.preview=X,Y++;else if(G==="--session")z.session=X,Y++;else if(G==="--repo")z.repo=X,Y++;else if(G==="--initial-task-id")z.initialTaskId=X,Y++;else if(G==="--action")z.action=X,Y++;else if(G==="--window")z.windowId=X,Y++;else if(G==="--cols")z.cols=X,Y++;else if(G==="--rows")z.rows=X,Y++;else if(G==="--status")z.status=X,Y++;else if(G==="--client")z.client=X,Y++}return z}async function YE(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (FJ(),CW));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){WF(process.stdout);return}if(z==="add"){await tu(Y);return}if(z==="remove"){await eu(Y);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (iU(),nU));await X(Y);return}if(z==="adopt"){await zE(Y);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (pU(),_U));await X(Y);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (tU(),sU));await X(Y);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (U4(),K4));await X(Y);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (O4(),F4));await X(Y);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (N4(),C4));await X(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (y4(),I4));await X(Y);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (w4(),E4));await X(Y);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (sf(),of));await X(Y);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (s4(),o4));await X(Y);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (sf(),of));await X(Y);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (sf(),of));await X(Y);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (JD(),e4));await X(Y);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (dj(),cj));await X(Y);return}if(z==="new-chattab"){let X=kz(Y),Z=X.session;if(!Z)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (P1(),wZ));if(await Q(Z))return;let f;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (O1(),rz)),{isBuiltinVendor:j}=await Promise.resolve().then(() => (l1(),LW));if(!(j(B)||V().includes(B))){let A=[...i1,...V()].join(", "),O=`kobe: unknown engine '${B}' (known: ${A})`,{runTmux:g}=await Promise.resolve().then(() => (P1(),wZ));await g(["display-message","-t",Z,O]),console.error(O),process.exit(2)}f=B;let{setPersistedString:L}=await Promise.resolve().then(() => (O1(),rz));L("lastSelectedVendor",f)}let{newChatTab:H}=await Promise.resolve().then(() => (YJ(),cJ));await H(Z,f);return}if(z==="kill-sessions"){let{runTmux:X,KOBE_TMUX_SOCKET:Z}=await Promise.resolve().then(() => (P1(),wZ)),Q=await X(["kill-server"]);console.log(Q===0?`kobe: killed all tmux sessions on the \`${Z}\` socket`:`kobe: no tmux sessions to kill on the \`${Z}\` socket`);return}if(z==="quick-create"){let Z=kz(Y).session;if(!Z)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:Q}=await Promise.resolve().then(() => (YJ(),cJ));await Q(Z);return}if(z==="focus-tasks"){let X=kz(Y),Z=X.session;if(!Z)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (P1(),wZ));if(X.windowId&&await Q(X.windowId))return;let{selectTasksPane:f}=await Promise.resolve().then(() => (YJ(),cJ));await f(Z,{windowId:X.windowId});return}if(z==="heal-layout"){let Z=kz(Y).session;if(!Z)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:Q}=await Promise.resolve().then(() => (YJ(),cJ)),{coalesceLayoutWork:f}=await Promise.resolve().then(() => (FX(),pq));await f(Z,"heal",()=>Q(Z));return}if(z==="resync-window"){let X=kz(Y),Z=X.session;if(!Z)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let Q=Number.parseInt(X.cols??"",10),f=Number.parseInt(X.rows??"",10),H=Number.isInteger(Q)&&Q>0&&Number.isInteger(f)&&f>0?{columns:Q,rows:f}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (YJ(),cJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (FX(),pq));await V(Z,"resync",()=>B(Z,{size:H,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let Z=kz(Y).session;if(!Z)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:Q}=await Promise.resolve().then(() => (YJ(),cJ)),{coalesceLayoutWork:f,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (FX(),pq));await f(Z,"capture",async()=>{if(H(Z,"resize")<B)return;await Q(Z)});return}if(z==="layout"){let X=kz(Y),Z=X.session;if(!Z)console.error("kobe layout: --session <name> is required"),process.exit(2);let Q=X.action;if(!Q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(Q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:H}=await Promise.resolve().then(() => (YJ(),cJ));await H(Z,Q,{windowId:X.windowId});return}if(z==="quick-task"){let X=kz(Y),{startQuickTaskHost:Z}=await Promise.resolve().then(() => (g3(),R3));await Z({session:X.session});return}if(z==="tasks"){let X=kz(Y),{startTasksPane:Z}=await Promise.resolve().then(() => (gM(),RM));await Z({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (NM(),CM));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (bM(),kM));await X();return}if(z==="new-task"){let X=kz(Y),{startNewTaskHost:Z}=await Promise.resolve().then(() => (T9(),K3));await Z({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (IM(),SM));await X();return}if(z==="ops"){let X=kz(Y);if(!X.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(X.preview){let{startOpsPreview:Q}=await Promise.resolve().then(() => (fW(),qW));await Q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:Z}=await Promise.resolve().then(() => (fW(),qW));await Z({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:tY(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),WF(process.stderr),process.exit(2);let{startTui:G}=await Promise.resolve().then(() => (HF(),fF));await G()}YE().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
|