@sma1lboy/kobe 0.7.57 → 0.7.58
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 +195 -189
- package/dist/web-ui/assets/{AppShell-DatLbUH8.js → AppShell-DYYsNna-.js} +1 -1
- package/dist/web-ui/assets/{Board-eEGLQBF4.js → Board-DFvFTCfS.js} +1 -1
- package/dist/web-ui/assets/{BoardPeek-BN0d-Zie.js → BoardPeek-azp6Xi2V.js} +2 -2
- package/dist/web-ui/assets/{ChatTerminal-DtqC7Mxi.js → ChatTerminal-EpSnfEJZ.js} +1 -1
- package/dist/web-ui/assets/{ChatTranscript-CzQspNKE.js → ChatTranscript-CowigMAX.js} +1 -1
- package/dist/web-ui/assets/{ConfirmDialog-BPIwmIjt.js → ConfirmDialog-tuUb_aaU.js} +1 -1
- package/dist/web-ui/assets/{IssueIntakePanel-BF7ifkKK.js → IssueIntakePanel-bsK91mzk.js} +1 -1
- package/dist/web-ui/assets/{IssuePeek-DTInqza8.js → IssuePeek-3F96kaQD.js} +1 -1
- package/dist/web-ui/assets/{IssuesPage-Bx7iHFBo.js → IssuesPage-DalvKvN9.js} +1 -1
- package/dist/web-ui/assets/{RichEditor-DvjbbcLw.js → RichEditor-zy83VTqE.js} +1 -1
- package/dist/web-ui/assets/{SettingsPage-DZ25Tk5v.js → SettingsPage-DptYLhau.js} +1 -1
- package/dist/web-ui/assets/{SlideOver-D9BDfm6L.js → SlideOver-D8j2kVQ4.js} +1 -1
- package/dist/web-ui/assets/{ViewToggle-DsJBr4VT.js → ViewToggle-D94SlG5v.js} +1 -1
- package/dist/web-ui/assets/{WorkspaceTabs-C2pSVT1A.js → WorkspaceTabs-Bpwl4xfL.js} +3 -3
- package/dist/web-ui/assets/board-BDSbaYQw.js +1 -0
- package/dist/web-ui/assets/createLucideIcon-Bil0PUgZ.js +1 -0
- package/dist/web-ui/assets/{external-link-C51-09OW.js → external-link-DcgSntwH.js} +1 -1
- package/dist/web-ui/assets/index-CtQxKzN2.js +10 -0
- package/dist/web-ui/assets/{issues-YCoQHBtW.js → issues-Blka5z4p.js} +1 -1
- package/dist/web-ui/assets/issues-ChjzgBJa.js +1 -0
- package/dist/web-ui/assets/{lazy-issue-panels-C8OnZML2.js → lazy-issue-panels-oSh_c9Ad.js} +3 -3
- package/dist/web-ui/assets/{rotate-cw-pZvvI6Ao.js → rotate-cw-C_GlCKHM.js} +1 -1
- package/dist/web-ui/assets/routes-BS7BcPPt.js +1 -0
- package/dist/web-ui/assets/{settings-B_VT_pPR.js → settings-DnpDLygw.js} +1 -1
- package/dist/web-ui/assets/{store-BXWXnGds.js → store-Dr4_yLwW.js} +2 -2
- package/dist/web-ui/assets/{tabs-Db1r1FTh.js → tabs-CRxsaB4E.js} +1 -1
- package/dist/web-ui/assets/task._taskId-BTug_YDj.js +1 -0
- package/dist/web-ui/assets/terminal-Cqsy8MII.js +1 -0
- package/dist/web-ui/assets/terminal-DLTENDa9.js +1 -0
- package/dist/web-ui/assets/{toast-CfAxitbT.js → toast-CHhAlb5K.js} +1 -1
- package/dist/web-ui/index.html +7 -7
- package/package.json +1 -1
- package/dist/web-ui/assets/board-rpuYw0Ze.js +0 -1
- package/dist/web-ui/assets/createLucideIcon-BoVlWivB.js +0 -1
- package/dist/web-ui/assets/index-BC9H3mAq.js +0 -10
- package/dist/web-ui/assets/issues-CvEDCZIa.js +0 -1
- package/dist/web-ui/assets/routes-BvOMdZDM.js +0 -1
- package/dist/web-ui/assets/task._taskId-DweEr9w7.js +0 -1
- package/dist/web-ui/assets/terminal-Ckm9XXat.js +0 -1
- package/dist/web-ui/assets/terminal-DV9S9xMa.js +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var DO=Object.defineProperty;var LO=(J)=>J;function FO(J,z){this[J]=LO.bind(null,z)}var q1=(J,z)=>{for(var Y in z)DO(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:FO.bind(z,Y)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var PQ=import.meta.require;import{basename as MO}from"path";function OO(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function hQ(J,z){let Y;try{Y=OO(J)}catch{return!1}return Y.test(z)||Y.test(MO(z))}var $f=()=>{};var oW={};q1(oW,{resolvePersistedVendor:()=>PJ,prevVendorWithin:()=>af,nextVendorWithin:()=>AY,nextVendor:()=>AO,isBuiltinVendor:()=>jJ,coerceVendorId:()=>RY,BUILTIN_VENDORS:()=>tY,ALL_VENDORS:()=>a1});function jJ(J){return J==="claude"||J==="codex"||J==="copilot"}function AO(J){let z=a1.indexOf(J);return a1[(z+1)%a1.length]??a1[0]}function AY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function af(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function RY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function PJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(jJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var tY,a1;var _1=C(()=>{tY=["claude","codex","copilot"],a1=[...tY]});var vQ;var sW=C(()=>{vQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.57",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as tW}from"crypto";import{homedir as gO}from"os";import{join as eY}from"path";function eW(){return process.env.KOBE_DEV==="1"}function rJ(){return process.env.KOBE_HOME_DIR??gO()}function XJ(){return eY(rJ(),".kobe")}function oJ(){return eY(rJ(),".config","kobe","state.json")}function NO(){return eY(XJ(),"settings")}function JV(){return eY(NO(),"keybindings.yaml")}function _f(){return eY(XJ(),"issue-assets")}function mQ(J,z,Y){let Z=tW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(XJ(),"ssh",`${Z}.sock`)}function zV(J){let z=tW("sha1").update(J).digest("hex").slice(0,16);return eY(XJ(),"worktree-init",z)}var p1=()=>{};var ZV={};q1(ZV,{repoSlug:()=>JZ,releasePageUrl:()=>tf,recommendedGlobalInstallCommand:()=>of,isNewerSemver:()=>pf,fetchReleaseSummaries:()=>bO,fetchReleaseNotesRange:()=>sf,fetchReleaseNotes:()=>kO,compareSemver:()=>cQ,checkLatestVersion:()=>XX,UPDATE_SCRIPT_URL:()=>dQ,UPDATE_COMMAND:()=>oz,PACKAGE_NAME:()=>rf,CURRENT_VERSION:()=>J1});function JZ(){let J=vQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function of(){return`npm install -g ${rf}@latest`}async function CO(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),nQ);try{let Z=J.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function pf(J,z){return cQ(J,z)>0}function cQ(J,z){let Y=(X)=>X.split("-")[0]??X,Z=Y(J).split(".").map((X)=>Number.parseInt(X,10)),G=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let Q=Z[X]??0,H=G[X]??0;if(Number.isNaN(Q)||Number.isNaN(H))return 0;if(Q>H)return 1;if(Q<H)return-1}return 0}async function XX(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:pf(z,J1)};if(eW()&&!J.force)return null;let Y=await CO(rf);if(!Y)return null;return{current:J1,latest:Y,hasUpdate:pf(Y,J1)}}function YV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kO(J){let z=JZ();if(!z)return null;let Y=`v${J}`,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let Q=await X.json();if(typeof Q.body!=="string"||typeof Q.html_url!=="string")return null;return{body:Q.body,url:Q.html_url,version:J}}catch{return null}finally{clearTimeout(G)}}async function sf(J){let z=JZ();if(!z)return[];let Y=J.limit??100,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let Q=await X.json();if(!Array.isArray(Q))return[];return Q.map((H)=>{let f=YV(H.tag_name);if(!f||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(cQ(f,J.current)<=0)return null;if(cQ(f,J.latest)>0)return null;return{version:f,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(G)}}async function bO(J=12){let z=JZ();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),nQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((Q)=>{let H=YV(Q.tag_name);if(!H||typeof Q.html_url!=="string")return null;return{version:H,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(Z)}}function tf(J){let z=JZ();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,rf,dQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",oz,nQ=3000;var NJ=C(()=>{sW();p1();J1=vQ.version,rf=vQ.name;oz=`curl -fsSL ${dQ} | sh`});import{spawn as SO,spawnSync as IO}from"child_process";import{existsSync as XV}from"fs";import{mkdir as yO,readFile as TO,readdir as xO}from"fs/promises";function zZ(J){return`'${J.replace(/'/g,"'\\''")}'`}function uO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zZ(J)}function qV(J){return J.map(zZ).join(" ")}function EO(J,z){let Y=qV(J);return z?`cd ${zZ(z)} && ${Y}`:Y}function wO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${zZ(Z)}`).join(" ")} `}function QX(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function HV(J,z={}){return new Promise((Y)=>{let[Z,...G]=J,X="",Q="",H=!1,f=(V)=>{if(H)return;H=!0,Y({stdout:X,stderr:Q,exitCode:V})},j;try{j=SO(Z??"",G,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{f(-1);return}j.stdout?.setEncoding("utf8"),j.stdout?.on("data",(V)=>{X+=V}),j.stderr?.setEncoding("utf8"),j.stderr?.on("data",(V)=>{Q+=V}),j.on("error",()=>f(-1)),j.on("close",(V)=>f(V??-1))})}class iQ{isRemote=!1;run(J,z={}){return HV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return XV(J)}existsSync(J){return XV(J)}async mkdirp(J){await yO(J,{recursive:!0})}async readFile(J){try{return await TO(J,"utf8")}catch{return null}}async readdir(J){try{return await xO(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class iZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=QV,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===QV?PO:async(Z,G)=>this.spawn(Z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...QX(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...QX(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${wO(z.env)}${qV(J)}`,Z=z.cwd?`cd ${zZ(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...QX(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...QX(this.spec,{batch:!0}),EO(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
-
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${
|
|
3
|
+
var CO=Object.defineProperty;var kO=(J)=>J;function bO(J,z){this[J]=kO.bind(null,z)}var q1=(J,z)=>{for(var Y in z)CO(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:bO.bind(z,Y)})};var k=(J,z)=>()=>(J&&(z=J(J=0)),z);var EQ=import.meta.require;import{basename as IO}from"path";function SO(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function wQ(J,z){let Y;try{Y=SO(J)}catch{return!1}return Y.test(z)||Y.test(IO(z))}var pj=()=>{};var rW={};q1(rW,{resolvePersistedVendor:()=>hJ,prevVendorWithin:()=>rj,nextVendorWithin:()=>AY,nextVendor:()=>yO,isBuiltinVendor:()=>fJ,coerceVendorId:()=>RY,BUILTIN_VENDORS:()=>eY,ALL_VENDORS:()=>_1});function fJ(J){return J==="claude"||J==="codex"||J==="copilot"}function yO(J){let z=_1.indexOf(J);return _1[(z+1)%_1.length]??_1[0]}function AY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function rj(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function RY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function hJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(fJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var eY,_1;var p1=k(()=>{eY=["claude","codex","copilot"],_1=[...eY]});var PQ;var oW=k(()=>{PQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.58",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 sW}from"crypto";import{homedir as xO}from"os";import{join as gY}from"path";function tW(){return process.env.KOBE_DEV==="1"}function rJ(){return process.env.KOBE_HOME_DIR??xO()}function WJ(){return gY(rJ(),".kobe")}function oJ(){return gY(rJ(),".config","kobe","state.json")}function uO(){return gY(WJ(),"settings")}function eW(){return gY(uO(),"keybindings.yaml")}function oj(){return gY(WJ(),"issue-assets")}function JV(){return gY(WJ(),"attachments")}function hQ(J,z,Y){let Z=sW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return gY(WJ(),"ssh",`${Z}.sock`)}function zV(J){let z=sW("sha1").update(J).digest("hex").slice(0,16);return gY(WJ(),"worktree-init",z)}var r1=()=>{};var ZV={};q1(ZV,{repoSlug:()=>JZ,releasePageUrl:()=>zB,recommendedGlobalInstallCommand:()=>ej,isNewerSemver:()=>sj,fetchReleaseSummaries:()=>PO,fetchReleaseNotesRange:()=>JB,fetchReleaseNotes:()=>wO,compareSemver:()=>vQ,checkLatestVersion:()=>QX,UPDATE_SCRIPT_URL:()=>mQ,UPDATE_COMMAND:()=>oz,PACKAGE_NAME:()=>tj,CURRENT_VERSION:()=>J1});function JZ(){let J=PQ.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 ej(){return`npm install -g ${tj}@latest`}async function EO(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),cQ);try{let Z=J.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function sj(J,z){return vQ(J,z)>0}function vQ(J,z){let Y=(X)=>X.split("-")[0]??X,Z=Y(J).split(".").map((X)=>Number.parseInt(X,10)),G=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let q=Z[X]??0,H=G[X]??0;if(Number.isNaN(q)||Number.isNaN(H))return 0;if(q>H)return 1;if(q<H)return-1}return 0}async function QX(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:sj(z,J1)};if(tW()&&!J.force)return null;let Y=await EO(tj);if(!Y)return null;return{current:J1,latest:Y,hasUpdate:sj(Y,J1)}}function YV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function wO(J){let z=JZ();if(!z)return null;let Y=`v${J}`,Z=new AbortController,G=setTimeout(()=>Z.abort(),cQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let q=await X.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:J}}catch{return null}finally{clearTimeout(G)}}async function JB(J){let z=JZ();if(!z)return[];let Y=J.limit??100,Z=new AbortController,G=setTimeout(()=>Z.abort(),cQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let q=await X.json();if(!Array.isArray(q))return[];return q.map((H)=>{let j=YV(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(vQ(j,J.current)<=0)return null;if(vQ(j,J.latest)>0)return null;return{version:j,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(G)}}async function PO(J=12){let z=JZ();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),cQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((q)=>{let H=YV(q.tag_name);if(!H||typeof q.html_url!=="string")return null;return{version:H,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(Z)}}function zB(J){let z=JZ();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,tj,mQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",oz,cQ=3000;var NJ=k(()=>{oW();r1();J1=PQ.version,tj=PQ.name;oz=`curl -fsSL ${mQ} | sh`});function dZ(J,z={}){if(z.bareSafe&&hO.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function nZ(J,z={}){return J.map((Y)=>dZ(Y,z)).join(" ")}var hO;var dQ=k(()=>{hO=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as vO,spawnSync as mO}from"child_process";import{existsSync as cO}from"fs";import{mkdir as dO,readFile as nO,readdir as iO}from"fs/promises";function $O(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:dZ(J)}function aO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${iQ(Z)}`).join(" ")} `}function nQ(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 QV(J,z={}){return new Promise((Y)=>{let[Z,...G]=J,X="",q="",H=!1,j=(V)=>{if(H)return;H=!0,Y({stdout:X,stderr:q,exitCode:V})},B;try{B=vO(Z??"",G,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{j(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{X+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{q+=V}),B.on("error",()=>j(-1)),B.on("close",(V)=>j(V??-1))})}class lQ{isRemote=!1;run(J,z={}){return QV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return cO(J)}async mkdirp(J){await dO(J,{recursive:!0})}async readFile(J){try{return await nO(J,"utf8")}catch{return null}}async readdir(J){try{return await iO(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class iZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=XV,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===XV?_O:async(Z,G)=>this.spawn(Z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...nQ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...nQ(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=`${aO(z.env)}${lO(J)}`,Z=z.cwd?`cd ${iQ(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...nQ(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
+
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${iQ(z.cwd)} && ${J}`:J;return`${nQ(this.spec,{tty:z.tty}).map($O).join(" ")} ${iQ(Y)}`}}var iQ,lO,XV=(J,z)=>{let[Y,...Z]=J,G=mO(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},_O=(J,z,Y)=>QV(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var YB=k(()=>{dQ();iQ=dZ,lO=nZ});import{spawnSync as pO}from"child_process";import{platform as rO}from"os";function qV(J,z,Y){return{service:oO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function GB(J=ZB){return J.platform()==="darwin"}function HV(J,z,Y=ZB){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function $Q(J,z=ZB){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var ZB,oO="kobe-remote-ssh";var XB=k(()=>{ZB={run(J){let[z,...Y]=J,Z=pO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return rO()}}});import{mkdirSync as sO,readFileSync as tO,renameSync as eO,writeFileSync as JA}from"fs";import{dirname as zA}from"path";function MJ(){try{let J=tO(oJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function jV(J){let z=oJ();sO(zA(z),{recursive:!0});let Y=`${z}.tmp`;JA(Y,JSON.stringify(J,null,2),"utf8"),eO(Y,z)}function lZ(J){let z=MJ();if(J(z)!==!1)jV(z);return z}function NY(J){return lZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function fz(J,z){let Y=MJ()[J];return typeof Y==="boolean"?Y:z}function BV(J,z){NY({[J]:z})}function fV(J){jV(J)}var sz=k(()=>{r1()});var zY={};q1(zY,{statePath:()=>GA,setRepoInitOverride:()=>XA,setPersistedString:()=>zJ,resolveRepoRoot:()=>tz,resolveMainRepoRoot:()=>ZA,removeSavedRepo:()=>jB,remoteRepoKey:()=>UV,normalizeSavedRepos:()=>qB,isRemoteRepoKey:()=>o1,isRemoteProjectsEnabled:()=>BB,isGitRepo:()=>YA,getSavedRepos:()=>SJ,getRepoInitOverride:()=>HB,getRemoteRepos:()=>fB,getRemoteRepoConfig:()=>JY,getPersistedString:()=>S1,getCustomEngineIds:()=>vJ,addSavedRepo:()=>ez,addRemoteRepo:()=>WB});import{spawnSync as QB}from"child_process";import{realpathSync as WV}from"fs";function tz(J){if(o1(J))return J;let z=QB("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(WV(J)===WV(Y))return J}catch{}return Y}function YA(J){if(o1(J))return!1;let z=QB("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function ZA(J){if(o1(J))return J;let z=QB("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return tz(J);return(z.stdout??"").split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim()||tz(J)}function GA(){return oJ()}function aQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function SJ(){return aQ(MJ())}function S1(J){let z=MJ()[J];return typeof z==="string"?z:void 0}function zJ(J,z){NY({[J]:z})}function vJ(){let J=MJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function ez(J){let z=tz(J),Y={added:!1,path:z,total:0};return lZ((Z)=>{let G=aQ(Z);if(G.includes(z))return Y={added:!1,path:z,total:G.length},!1;Z.savedRepos=[...G,z],Y={added:!0,path:z,total:G.length+1};return}),Y}function qB(){let J=SJ(),z=new Set,Y=[],Z=!1;for(let G of J){let X=tz(G);if(X!==G)Z=!0;if(z.has(X)){Z=!0;continue}z.add(X),Y.push(X)}if(!Z)return;NY({savedRepos:Y})}function VV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function KV(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 HB(J){return KV(VV(MJ())[tz(J)])}function XA(J,z){let Y=tz(J),Z={};return lZ((G)=>{let X={...VV(G)},q=KV(X[Y]),H=z.initScript===void 0?q.initScript:z.initScript||void 0,j=z.initPrompt===void 0?q.initPrompt:z.initPrompt||void 0;if(Z={...H?{initScript:H}:{},...j?{initPrompt:j}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:B,...V}=X;G.repoConfigs=V}else X[Y]=Z,G.repoConfigs=X;return}),Z}function jB(J){let z={removed:!1,path:J,total:0};return lZ((Y)=>{let Z=aQ(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((G)=>G!==J),o1(J)){let G=_Q(Y);if(J in G){let X={...G};delete X[J],Y.remoteRepos=X}}z={removed:!0,path:J,total:Z.length-1};return}),z}function o1(J){return J.startsWith("ssh://")}function BB(){return fz("experimental.remoteProjects",!1)}function UV(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function _Q(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function JY(J){return _Q(MJ())[J]??null}function fB(){return _Q(MJ())}function WB(J){let z=UV(J.host,J.user,J.port),Y=!1;return lZ((Z)=>{let G={..._Q(Z)};G[z]=J,Z.remoteRepos=G;let X=aQ(Z);if(Y=!X.includes(z),Y)Z.savedRepos=[...X,z];return}),{key:z,added:Y}}var C1=k(()=>{r1();sz()});var MV={};q1(MV,{runAddRemote:()=>HA,parseRemoteFlags:()=>LV});import{createInterface as QA}from"readline";function LV(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let G=Number(J[++Y]);if(!Number.isInteger(G)||G<=0)Wz(`invalid --port "${J[Y]}"`);z.port=G;break}case"--key":{let G=J[Y+1];if(G&&!G.startsWith("-"))z.key={present:!0,path:G},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(DV),process.exit(0);break;default:Wz(`unknown flag "${Z}"`)}}return z}function Wz(J){process.stderr.write(`kobe add --remote: ${J}
|
|
5
5
|
|
|
6
|
-
${
|
|
7
|
-
`),z.close(),X(
|
|
6
|
+
${DV}`),process.exit(2)}async function qA(J){let z=QA({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,Z=!1,G=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(X)=>{if(!Z||!G)process.stdout.write(X)},process.stdout.write(J),Z=!0,new Promise((X)=>{z.question("",(q)=>{if(Z=!1,G)Y._writeToOutput=G;process.stdout.write(`
|
|
7
|
+
`),z.close(),X(q)})})}async function HA(J){if(!BB())Wz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=LV(J);if(!z.host)Wz("--host is required");if(!z.user)Wz("--user is required");if(!z.path)Wz("--path (remote base path) is required");if(z.key&&z.password)Wz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Wz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!GB())Wz("--password needs the macOS keychain (unsupported on this platform)");let X=qV(z.host,z.user,z.port),q=await qA(`Password for ${z.user}@${z.host}: `);if(q.length===0)Wz("empty password");if(!HV(X,q))Wz("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:G}=WB({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(G?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await jA(z,Y)}async function jA(J,z){if(z.kind==="password"&&!GB())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>$Q(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:hQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new iZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(G){console.log(`could not connect (${G instanceof Error?G.message:String(G)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var DV;var FV=k(()=>{r1();YB();XB();C1();DV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
|
|
8
8
|
[--port N] [--key [path] | --password]
|
|
9
9
|
|
|
10
10
|
Register an SSH-backed project. Worktrees + the engine run on <host> under
|
|
11
11
|
<basePath>. Choose ONE auth: --key [path] (ssh-agent when path omitted) or
|
|
12
12
|
`+`--password (prompted, stored in the OS keychain \u2014 never in state.json).
|
|
13
|
-
`});function
|
|
14
|
-
`}var sJ=3,
|
|
15
|
-
`}function
|
|
16
|
-
`)}catch{}}function
|
|
13
|
+
`});function pQ(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function OV(J,z){if(!J)return!1;return J!==z}function fA(J){return typeof J==="string"&&BA.has(J)}function AV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(fA(Y))z.add(Y);return z.size>0?z:null}function Vz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function qX(J){return`${JSON.stringify(J)}
|
|
14
|
+
`}var sJ=3,CY=2,VB,BA;var zZ=k(()=>{VB=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],BA=new Set(VB)});import{createHash as WA}from"crypto";import{homedir as rQ,tmpdir as VA}from"os";import{join as YZ}from"path";function KA(J){return WA("sha1").update(J).digest("hex").slice(0,8)}function UB(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=KB)return J;let G=KA(z),X=Z===void 0?"":`-${Z}`,q=YZ(VA(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(q,"utf8")<=KB)return q;throw Error(`kobe socket path exceeds ${KB} bytes even after fallback: ${q}`)}function Ez(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return UB(YZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return UB(YZ(Z,"kobe.sock"),Z,"daemon");let G=rQ();return UB(YZ(G,".kobe","daemon.sock"),G,"daemon")}function YY(J=process.env.KOBE_HOME_DIR??rQ()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return YZ(J,".kobe","daemon.pid")}function oQ(J=process.env.KOBE_HOME_DIR??rQ()){return YZ(J,".kobe","daemon.log")}function RV(J=process.env.KOBE_HOME_DIR??rQ()){return YZ(J,".kobe","client.log")}var KB=100;var $Z=()=>{};import{appendFile as gV,mkdir as UA}from"fs/promises";import{dirname as DA}from"path";function sQ(J){kV=J}function LA(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function bV(J,z,Y=new Date){return`[${Y.toISOString()}] client ${kV} [${J}] pid=${process.pid}: ${z}
|
|
15
|
+
`}function MA(){if(NV)return;NV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
|
|
16
|
+
`)}catch{}}function IV(J){let z=RV();CV=CV.then(async()=>{try{await gV(z,J)}catch(Y){if(Y?.code==="ENOENT")await UA(DA(z),{recursive:!0}),await gV(z,J);else throw Y}}).catch(()=>MA())}function ZY(J,z){IV(bV(J,z))}function YJ(J,z){let Y=LA(z);IV(bV(J,Y.stack??Y.message))}function SV(){if(DB||LB)return;DB=(J)=>YJ("crash-net",J),LB=(J)=>YJ("crash-net",J),process.on("unhandledRejection",DB),process.on("uncaughtException",LB)}var kV="client",NV=!1,CV,DB,LB;var ZZ=k(()=>{$Z();CV=Promise.resolve()});import{connect as FA}from"net";import{StringDecoder as OA}from"string_decoder";class tJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),G=new Promise((X,q)=>{this.pending.set(Z,{resolve:(H)=>X(H),reject:q})});return Y.write(qX({type:"request",id:Z,name:J,payload:z})),G}openSocket(){return new Promise((J,z)=>{let Y=FA(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",G),J()},G=(q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(q)};Y.once("connect",Z),Y.once("error",G);let X=new OA("utf8");this.buffer="",Y.on("data",(q)=>this.onData(X.write(q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
|
|
17
17
|
`);while(z!==-1){let Y=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Y.trim().length>0)this.onLine(Y);z=this.buffer.indexOf(`
|
|
18
|
-
`)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){
|
|
19
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("claude:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&
|
|
20
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("codex:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&
|
|
21
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("copilot:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&
|
|
22
|
-
`)){let G=Z.trim();if(!G)continue;if(!
|
|
23
|
-
`)}function
|
|
24
|
-
`)}return
|
|
25
|
-
`)}function
|
|
26
|
-
`)}catch{}}class UX{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await sZ(J,(z)=>
|
|
18
|
+
`)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){YJ("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var HX=k(()=>{zZ();ZZ()});import{spawnSync as AA}from"child_process";import{existsSync as RA,statSync as gA}from"fs";import{homedir as NA}from"os";import jX from"path";async function yV(J=CA){let z=[],Y=(B)=>{if(!B)return;return z.push(B),J.fileExists(B)?B:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home(),X=Y(jX.join(G,".claude","local","claude"));if(X)return X;let q=J.env("NVM_BIN");if(q){let B=Y(jX.join(q,"claude"));if(B)return B}let H=jX.join(G,".nvm","versions","node"),j=J.readdir(H).sort().reverse();for(let B of j){let V=Y(jX.join(H,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=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(jX.join(G,B));if(V)return V}throw new tQ(z)}var tQ,CA;var TV=k(()=>{tQ=class tQ 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}};CA={fileExists(J){try{return gA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return NA()},which(J){let z=process.platform==="win32"?"where":"which",Y=AA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
19
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("claude:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&RA(G)?G:void 0}return Z},readdir(J){try{return EQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as kA}from"child_process";import{existsSync as bA,statSync as IA}from"fs";import{homedir as SA}from"os";import xV from"path";async function uV(J=yA){let z=[],Y=(q)=>{if(!q)return;return z.push(q),J.fileExists(q)?q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let H=Y(q);if(H)return H}let X=J.env("NVM_BIN");if(X){let q=Y(xV.join(X,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Y(xV.join(G,q));if(H)return H}throw new eQ(z)}var eQ,yA;var EV=k(()=>{eQ=class eQ 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}};yA={fileExists(J){try{return IA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return SA()},which(J){let z=process.platform==="win32"?"where":"which",Y=kA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
20
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("codex:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&bA(G)?G:void 0}return Z},readdir(J){try{return EQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as TA}from"child_process";import{existsSync as xA,statSync as uA}from"fs";import{homedir as EA}from"os";import kY from"path";async function wV(J=wA){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let f of G){let K=Y(kY.join(V,f));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let f=X(V);if(f)return f}let q=J.env("NVM_BIN"),H=X(q);if(H)return H;let j=J.home(),B=[kY.join(j,".npm-global/bin"),kY.join(j,".local/bin"),kY.join(j,".bun/bin"),kY.join(j,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),f=J.env("LOCALAPPDATA");if(B.unshift(kY.join(j,"AppData/Roaming/npm")),V)B.unshift(kY.join(V,"npm"));if(f)B.unshift(kY.join(f,"npm"))}for(let V of B){let f=X(V);if(f)return f}throw new Jq(z)}var Jq,wA;var PV=k(()=>{Jq=class Jq 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}};wA={fileExists(J){try{return uA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return EA()},which(J){let z=process.platform==="win32"?"where":"which",Y=TA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
21
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("copilot:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&xA(G)?G:void 0}return Z},platform(){return process.platform}}});import{readFileSync as PA,statSync as hA}from"fs";import{readFile as vA,stat as mA}from"fs/promises";async function aZ(J,z=hV){let{size:Y}=await mA(J);if(Y>z)return"";return vA(J,"utf8")}function vV(J,z=hV){let Y;try{Y=hA(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return PA(J,"utf8")}function bY(J,z=cA){return J.length<=z}var hV=104857600,cA=8388608;var BX=()=>{};import{homedir as dA}from"os";import IY from"path";function nA(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return IY.join(Y,".claude.json");return IY.join(z,".claude.json")}function iA(J,z){let Z=J("CODEX_HOME")?.trim()??IY.join(z,".codex");return IY.join(Z,"auth.json")}function lA(J,z){let Z=J("COPILOT_HOME")?.trim()??IY.join(z,".copilot");return IY.join(Z,"config.json")}function $A(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),G=Z+"=".repeat((4-Z.length%4)%4);try{let X=Buffer.from(G,"base64").toString("utf8"),q=JSON.parse(X);return typeof q==="object"&&q!==null?q:null}catch{return null}}async function Yq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof tQ||z instanceof eQ||z instanceof Jq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function mV(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,G])=>(await Yq(G)).found?Z:null))).filter((Z)=>Z!==null)}function aA(J=_Z){if(J!==_Z)return mV(J);if(zq)return zq;let z=mV(J).catch((Y)=>{throw zq=null,Y});return zq=z,z}async function GY(J=_Z){return[...await aA(J),...vJ()]}async function Zq(J=_Z){let z=await Yq(()=>J.findClaudeBinary()),Y=nA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(j){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${j instanceof Error?j.message:String(j)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(j){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${j instanceof Error?j.message:String(j)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:z,account:{kind:"none"}};let q=X,H=typeof q.emailAddress==="string"?q.emailAddress:void 0;if(!H)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:H,organization:typeof q.organizationName==="string"?q.organizationName:void 0,displayName:typeof q.displayName==="string"?q.displayName:void 0,billingType:typeof q.billingType==="string"?q.billingType:void 0}}}async function Gq(J=_Z){let z=await Yq(()=>J.findCodexBinary()),Y=iA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(B){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(B){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let X=G??{},q=X.tokens,H=typeof q?.id_token==="string"?q.id_token:void 0;if(H){let B=$A(H);if(!B)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,f=B["https://api.openai.com/auth"],K=typeof f==="object"&&f!==null&&!Array.isArray(f)?f: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 j=X.OPENAI_API_KEY;if(typeof j==="string"&&j.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function Xq(J=_Z){let z=await Yq(()=>J.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(X)?.trim())return{binary:z,account:{kind:"token",source:X}};let Y=lA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(X){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(X){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!MB(G))return{binary:z,account:{kind:"none"}};if(cV(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function MB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function cV(J,z,Y=0){if(Y>4||!MB(J))return!1;for(let[Z,G]of Object.entries(J)){if(z.includes(Z)&&typeof G==="string"&&G.length>0)return!0;if(MB(G)&&cV(G,z,Y+1))return!0}return!1}var _Z,zq=null;var GZ=k(()=>{C1();TV();EV();PV();BX();_Z={readFile(J){return vV(J)},env(J){return process.env[J]},home(){return dA()},findClaudeBinary(){return yV()},findCodexBinary(){return uV()},findCopilotBinary(){return wV()}}});function dV(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let Z=Y;if(Z.type==="text"&&typeof Z.text==="string"){z.push({type:"text",text:Z.text});continue}if(Z.type==="tool_use"){z.push({type:"tool_call",callId:typeof Z.id==="string"?Z.id:"",name:typeof Z.name==="string"?Z.name:"",input:Z.input});continue}if(Z.type==="tool_result"){z.push({type:"tool_result",callId:typeof Z.tool_use_id==="string"?Z.tool_use_id:"",output:Z.content,isError:Z.is_error===!0});continue}if(Z.type==="thinking"&&typeof Z.thinking==="string")z.push({type:"thinking",text:Z.thinking})}return z}function nV(J){return J.isMeta===!0||J.isCompactSummary===!0}function iV(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as Gh,mkdir as Xh,readdir as FB,stat as _A,unlink as Qh}from"fs/promises";import{homedir as lV}from"os";import Qq from"path";function rA(J){return J.replace(/[/.]/g,"-")}async function fX(J){if(!J)return[];let z=Qq.join(lV(),".claude","projects",rA(J)),Y;try{Y=await FB(z)}catch{return[]}let Z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=Qq.join(z,G),q=0;try{q=(await _A(X)).mtimeMs}catch{}Z.push({sessionId:G.slice(0,-6),path:X,mtimeMs:q})}return Z.sort((G,X)=>X.mtimeMs-G.mtimeMs),Z}async function $V(J){return(await fX(J))[0]?.mtimeMs??0}async function aV(J,z=pA){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let G of Z){let X=Qq.join(Y,G,`${J}.jsonl`),q;try{q=await z.readFile(X)}catch{continue}return oA(sA(q,J))}return[]}function oA(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function sA(J,z){let Y=[];for(let Z of J.split(`
|
|
22
|
+
`)){let G=Z.trim();if(!G)continue;if(!bY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!OB(X))continue;let q=tA(X,z);if(q)Y.push(q)}return Y}function tA(J,z){if(nV(J))return null;let Y=OB(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let G=dV(Y.content);if(Z==="user"&&iV(G))return null;let X=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=eA(Y.usage);return H?{role:Z,blocks:G,timestamp:X,sessionId:q,usage:H}:{role:Z,blocks:G,timestamp:X,sessionId:q}}function eA(J){if(!OB(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,G=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function OB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var pA;var AB=k(()=>{BX();pA={projectsDir(){return Qq.join(lV(),".claude","projects")},async readdir(J){try{return await FB(J)}catch{return[]}},async readFile(J){return await aZ(J)},async pathExists(J){try{return await FB(J),!0}catch{return!1}}}});import{fileURLToPath as pV}from"url";function T1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=pV(new URL("./index.ts",import.meta.url)),Y=pV(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var XY=()=>{};function VX(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function sV(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function NB(J){if(!Number.isFinite(J))return oV;return Math.max(JR,Math.min(zR,Math.round(J)))}function XZ(J){if(!Number.isFinite(J))return null;return Math.max(YR,Math.min(ZR,Math.round(J)))}function eV(J){let z=Number.parseInt(J[qq]??"",10),Y=Number.isFinite(z)&&z>0?NB(z):oV,Z=XZ(Number.parseInt(J[Hq]??"",10)),G=XZ(Number.parseInt(J[jq]??"",10)),X=[];if(Z!==null)X.push("-x",`${Z}%`);if(G!==null)X.push("-y",`${G}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-CB,opsHeightPct:G??KX,rightColumnResizeArgs:X}}function Y1(J){return dZ(J)}function TJ(J){return nZ(J)}function xJ(J,z){let G=`${z?RB:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${G}"\${SHELL:-/bin/sh}"; ${z}`:`${G}exec "\${SHELL:-/bin/sh}"`}function J7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function rZ(J,z,Y){return`${J}${z.map(Y1).join(" ")} engine-tab-exit --session ${Y1(Y)}`}function z7(){return`clear; printf ${Y1("\\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 kB(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return GR;return Math.max(XR,Math.min(QR,Math.round(z)))}function qR(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",G="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
|
|
23
|
+
`)}function Y7(J,z,Y){let Z=xJ(J,Y),G=z?.initScript?.trim();if(!G)return Z;let X=kB(z?.timeoutSeconds),q=qR(G,X);if(z?.markerPath){let H=Y1(z.markerPath),j=Y1(HR(z.markerPath));return RB+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${j} && : > ${H}; fi`,"fi",Z].join(`
|
|
24
|
+
`)}return RB+[q,Z].join(`
|
|
25
|
+
`)}function HR(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function rV(J){return`cd ${Y1(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Y1(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 Z7(J){let z=Y1(J.worktree),Y=Y1(J.relPath),Z=J.cliInvocation.map(Y1).join(" "),G=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${Z} ops --worktree ${z} --preview ${Y} || { ${G}; }`}function G7(J){return`${TJ([...J.cliInvocation,"update-page"])}`}function X7(J){let z=J.opener??"open";return[`tmux -L ${Y1(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 yY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return TJ(Y)}function oZ(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Y1).join(" "),Y=J.vendor?` --vendor ${Y1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Y1(J.taskId)} --worktree ${Y1(J.cwd)} --target-pane ${Y1(J.claudePaneId)}${Y} || { ${rV(J.cwd)}; }`}return rV(J.cwd)}var oV=32,eJ="tasks",QZ="claude",Kz="ops",Uz="shell",WX="workspace_aux",gB=4,Dz="@kobe_hidden_shell_pane",yJ="@kobe_hidden_tasks_pane",SY="@kobe_zen_panes",pZ="@kobe_zen",qq="@kobe_tasks_width",JR=16,zR=120,CB=60,KX=50,Hq="@kobe_right_width_pct",jq="@kobe_ops_height_pct",YR=10,ZR=90,tV,RB="trap ':' INT; ",GR=120,XR=5,QR=3600;var Lz=k(()=>{dQ();tV=[qq,Hq,jq]});function Jz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function BR(J){return J.map((z)=>TJ(["hook",z.verb]))}function fR(J,z){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>Jz(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function H7(J,z=T1()){let Y={};for(let{event:Z,matcher:G,verb:X}of J){let H={hooks:[{type:"command",command:TJ([...z,"hook",X])}]};if(G)H.matcher=G;Y[Z]=[H]}return Y}function Bq(J,z,Y,Z=T1()){let G=BR(Y),{hooks:X,...q}=J,H=Jz(X)?{...X}:{},j=z?H7(Y,Z):{};for(let{event:B}of Y){let f=(Array.isArray(H[B])?H[B]:[]).filter((K)=>!fR(K,G));if(z&&Array.isArray(j[B]))f.push(...j[B]);if(f.length>0)H[B]=f;else delete H[B]}return Object.keys(H).length>0?{...q,hooks:H}:{...q}}function j7(J=T1()){let z=TJ([...J,"hook",q7]);return{[Q7]:[{matcher:jR,hooks:[{type:"command",command:z}]}]}}function WR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(q7))}function fq(J,z,Y=T1()){let{hooks:Z,...G}=J,X=Jz(Z)?{...Z}:{},q=Q7,j=(Array.isArray(X[q])?X[q]:[]).filter((B)=>!WR(B));if(z)j.push(...j7(Y)[q]);if(j.length>0)X[q]=j;else delete X[q];return Object.keys(X).length>0?{...G,hooks:X}:{...G}}var Q7="PostToolUse",jR="Bash",q7="worktree-created";var bB=k(()=>{XY();Lz()});import{mkdir as VR,readFile as KR,writeFile as UR}from"fs/promises";import{dirname as DR}from"path";async function LR(J){try{let z=JSON.parse(await KR(J,"utf8"));return Jz(z)?z:{}}catch{return{}}}async function sZ(J,z){try{let Y=await LR(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await VR(DR(J),{recursive:!0}),await UR(J,`${JSON.stringify(Z,null,2)}
|
|
26
|
+
`)}catch{}}class UX{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await sZ(J,(z)=>Bq(z,!0,this.eventMap))}async removeActivityHooks(J){await sZ(J,(z)=>Bq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await sZ(J,(z)=>fq(z,!0))}async removeWorktreeWatchHook(J){await sZ(J,(z)=>fq(z,!1))}}var IB=k(()=>{bB()});import{homedir as MR}from"os";import{join as FR}from"path";function OR(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 AR(){return FR(MR(),".claude","settings.json")}function gR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(RR))}function NR(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:G,...X}=Jz(Y)?Y:{},H=(Array.isArray(G)?G:[]).filter((B)=>!gR(B));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let j={...X};if(H.length>0)j.WorktreeCreate=H;return Object.keys(j).length>0?{...Z,hooks:j}:{...Z}}var B7,bh,RR="worktree-created",SB;var f7=k(()=>{IB();bB();B7=[{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"}],bh=B7.map((J)=>J.event);SB=class SB extends UX{vendor="claude";eventMap=B7;globalSettingsPath(){return AR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:OR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await sZ(J,(z)=>NR(z,null))}}});function yB(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(!CR(Y))continue;let Z=typeof Y.type==="string"?Y.type:void 0;if(Z==="input_text"||Z==="output_text"){let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)z.push({type:"text",text:G});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function CR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function W7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!kR(Y)&&!bR(Y))return!1}return!0}function kR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function bR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
|
|
27
27
|
<INSTRUCTIONS>
|
|
28
|
-
`)&&J.endsWith("</INSTRUCTIONS>")}var
|
|
29
|
-
`)){let Y=z.trim();if(!Y)continue;if(!
|
|
30
|
-
`)){let G=Z.trim();if(!G)continue;if(!
|
|
31
|
-
`)){let G=Z.trim();if(!G)continue;if(!
|
|
32
|
-
`)){let Z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Z)continue;let G=Z[1],X=Z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');z[G]=X}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function
|
|
33
|
-
`)){let
|
|
34
|
-
`)){G++;let
|
|
35
|
-
`)){Z++;let X=P7(G);if(!X||X.type!=="turn.completed")continue;let Q=h7(X,0),H={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function P7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return v7(Y)?Y:null}catch{return null}}function h7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function v7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var pR,lj,rR,$j,Lq;var Fq=C(()=>{Fj();hj();QY();pR={listSessionFiles:(J)=>BX(J),readFile:(J)=>w7(J,"utf8")};lj=class lj extends Dq{deps;vendor="claude";cache=new Map;constructor(J=pR){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let G of z.slice(0,4)){let X=this.cache.get(G.path),Q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)Q=X.marker;else{let H=await this.deps.readFile(G.path).catch(()=>"");Q=oR(H,G.path,G.mtimeMs)}if(Z.set(G.path,{mtimeMs:G.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=Z,Y}};rR={findLatestRollout:(J)=>Pj(J),readFile:(J)=>w7(J,"utf8")};$j=class $j extends Dq{deps;vendor="codex";cache=null;constructor(J=rR){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=sR(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Lq=class Lq extends Dq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function Zg(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:tR,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Uq(J),createTurnDetector:()=>new Lq(J)}}function i1(J){return jJ(J)?Yg[J]:Zg(J)}var tR,eR,Jg,zg,Yg;var QY=C(()=>{_1();XZ();Fj();V7();hj();I7();E7();ij();Fq();tR={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},eR={async listSessionIdsForWorktree(J){return[...await BX(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>pV(J),latestTranscriptMtimeForWorktree:(J)=>_V(J)},Jg={listSessionIdsForWorktree:(J)=>N7(J),readHistory:(J)=>k7(J),latestTranscriptMtimeForWorktree:(J)=>C7(J)},zg={listSessionIdsForWorktree:(J)=>T7(J),readHistory:(J)=>u7(J),latestTranscriptMtimeForWorktree:(J)=>x7(J)},Yg={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:eR,detectAccount:(J)=>Yq(J),createHookAdapter:()=>new Ij,createTurnDetector:()=>new lj},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:Jg,detectAccount:(J)=>Zq(J),createHookAdapter:()=>new vj,createTurnDetector:()=>new $j},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:zg,detectAccount:(J)=>Gq(J),createHookAdapter:()=>new Uq("copilot"),createTurnDetector:()=>new Lq("copilot")}}});async function tZ(J,z){if(!z)return 0;return i1(J).history.latestTranscriptMtimeForWorktree(z)}var Mq=C(()=>{QY()});function m7(J){return typeof J==="string"&&Gg.includes(J)}var FX=(J)=>J,o1="claude",Gg;var zz=C(()=>{Gg=["backlog","in_progress","in_review","done","canceled","error"]});function Oq(J){return Xg.includes(J)}function c7(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var Xg;var Aq=C(()=>{Xg=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function Qg(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return d7;let z=Number(J);return Number.isFinite(z)&&z>0?z:d7}class aj{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=Qg(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let G=c7(Z?.state,z,Y),X=this.now(),Q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")Q.lapse=this.armLapse(J,X);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let G=this.activity.get(J);if(!G||G.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){G.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var d7=600000;var n7=C(()=>{Aq()});function i7(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Rq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function l7(J){let z=J.find((G)=>G.role==="user");if(!z)return"";let Y=z.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),Z=i7(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function eZ(J,z=o1){if(!J)return"";let{history:Y}=i1(z),Z=await Y.listSessionIdsForWorktree(J);for(let G of Z.slice(0,qg)){let X=l7(await Y.readHistory(G));if(X)return X}return""}async function $7(J,z){if(!z)return"";try{return l7(await i1(J).history.readHistory(z))}catch{return""}}var qg=8;var gq=C(()=>{QY();zz()});function a7(J){let z=String(J),Y=z.length-1;return x1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function rj(J){x1.context=J}function Hg(){return{...x1.context,id:x1.getNextContextId(),count:0}}function BZ(J,z){let Y=O1,Z=$0,G=J.length===0,X=z===void 0?Z:z,Q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},H=G?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>t1(()=>TY(Q)));Mz.afterCreateOwner&&Mz.afterCreateOwner(Q),$0=Q,O1=null;try{return xJ(H,!0)}finally{O1=Y,$0=Z}}function p(J,z){z=z?Object.assign({},bq,z):bq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(JK(Y),Mz.afterCreateSignal)Mz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(f0&&f0.running&&f0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return sj(Y,G)};return[zK.bind(Y),Z]}function _7(J,z,Y){let Z=YG(J,z,!0,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function wz(J,z,Y){let Z=YG(J,z,!1,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function _0(J,z,Y){e7=Ag;let Z=YG(J,z,!1,vJ,Y),G=AX&&mJ(AX);if(G)Z.suspense=G;if(!Y||!Y.render)Z.user=!0;FJ?FJ.push(Z):VZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},bq,Y):bq;let Z=YG(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,zG&&f0&&f0.running)Z.tState=vJ,s1.push(Z);else VZ(Z);return zK.bind(Z)}function Kg(J){return J&&typeof J==="object"&&"then"in J}function WZ(J,z,Y){let Z,G,X;if(typeof z==="function")Z=J,G=z,X=Y||{};else Z=!0,G=J,X=z||{};let Q=null,H=_j,f=null,j=!1,V=!1,B="initialValue"in X,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(X.storage||p)(X.initialValue),[R,u]=p(void 0),[P,S]=p(void 0,{equals:!1}),[g,M]=p(B?"ready":"unresolved");if(x1.context){if(f=x1.getNextContextId(),X.ssrLoadFrom==="initial")H=X.initialValue;else if(x1.load&&x1.has(f))H=x1.load(f)}function T(z0,q0,o,B0){if(Q===z0){if(Q=null,B0!==void 0&&(B=!0),(z0===H||q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(B0,{value:q0}));if(H=_j,f0&&z0&&j)f0.promises.delete(z0),j=!1,xJ(()=>{f0.running=!0,d(q0,o)},!1);else d(q0,o)}return q0}function d(z0,q0){xJ(()=>{if(q0===void 0)O(()=>z0);M(q0!==void 0?"errored":B?"ready":"unresolved"),u(q0);for(let o of L.keys())o.decrement();L.clear()},!1)}function i(){let z0=AX&&mJ(AX),q0=A(),o=R();if(o!==void 0&&!Q)throw o;if(O1&&!O1.user&&z0)_7(()=>{if(P(),Q){if(z0.resolved&&f0&&j)f0.promises.add(Q);else if(!L.has(z0))z0.increment(),L.add(z0)}});return q0}function J0(z0=!0){if(z0!==!1&&V)return;V=!1;let q0=K?K():Z;if(j=f0&&f0.running,q0==null||q0===!1){T(Q,t1(A));return}if(f0&&Q)f0.promises.delete(Q);let o,B0=H!==_j?H:t1(()=>{try{return G(q0,{value:A(),refetching:z0})}catch(g0){o=g0}});if(o!==void 0){T(Q,void 0,kq(o),q0);return}else if(!Kg(B0))return T(Q,B0,void 0,q0),B0;if(Q=B0,"v"in B0){if(B0.s===1)T(Q,B0.v,void 0,q0);else T(Q,void 0,kq(B0.v),q0);return B0}return V=!0,queueMicrotask(()=>V=!1),xJ(()=>{M(B?"refreshing":"pending"),S()},!1),B0.then((g0)=>T(B0,g0,void 0,q0),(g0)=>T(B0,void 0,kq(g0),q0))}Object.defineProperties(i,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let z0=g();return z0==="pending"||z0==="refreshing"}},latest:{get(){if(!B)return i();let z0=R();if(z0&&!Q)throw z0;return A()}}});let E=$0;if(K)_7(()=>(E=$0,J0(!1)));else J0(!1);return[i,{refetch:(z0)=>Dg(E,()=>J0(z0)),mutate:O}]}function Tq(J){return xJ(J,!1)}function t1(J){if(!JG&&O1===null)return J();let z=O1;O1=null;try{if(JG)return JG.untrack(J);return J()}finally{O1=z}}function BJ(J,z,Y){let Z=Array.isArray(J),G,X=Y&&Y.defer;return(Q)=>{let H;if(Z){H=Array(J.length);for(let j=0;j<J.length;j++)H[j]=J[j]()}else H=J();if(X)return X=!1,Q;let f=t1(()=>z(H,G,Q));return G=H,f}}function QJ(J){_0(()=>t1(J))}function T1(J){if($0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if($0.cleanups===null)$0.cleanups=[J];else $0.cleanups.push(J);return J}function Ug(J,z){if(MX||(MX=Symbol("error")),$0=YG(void 0,void 0,!0),$0.context={...$0.context,[MX]:[z]},f0&&f0.running)f0.sources.add($0);try{return J()}catch(Y){gX(Y)}finally{$0=$0.owner}}function xq(){return O1}function Dg(J,z){let Y=$0,Z=O1;$0=J,O1=null;try{return xJ(z,!0)}catch(G){gX(G)}finally{$0=Y,O1=Z}}function Lg(J){if(f0&&f0.running)return J(),f0.done;let z=O1,Y=$0;return Promise.resolve().then(()=>{O1=z,$0=Y;let Z;if(zG||AX)Z=f0||(f0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((G)=>Z.resolve=G)),Z.running=!0;return xJ(J,!1),O1=$0=null,Z?Z.done:void 0})}function r7(J,z){let Y=YG(()=>t1(()=>{return Object.assign(J,{[Wg]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,VZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function JK(J){if($0){if($0.sourceMap)$0.sourceMap.push(J);else $0.sourceMap=[J];J.graph=$0}if(Mz.afterRegisterGraph)Mz.afterRegisterGraph(J)}function Pz(J,z){let Y=Symbol("context");return{id:Y,Provider:Rg(Y,z),defaultValue:J}}function mJ(J){let z;return $0&&$0.context&&(z=$0.context[J.id])!==void 0?z:J.defaultValue}function Fg(J){let z=U0(J),Y=U0(()=>oj(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function zK(){let J=f0&&f0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===vJ)VZ(this);else{let z=s1;s1=null,xJ(()=>Sq(this),!1),s1=z}if(O1){let z=this.observers;if(!z||z[z.length-1]!==O1){let Y=z?z.length:0;if(!O1.sources)O1.sources=[this],O1.sourceSlots=[Y];else O1.sources.push(this),O1.sourceSlots.push(Y);if(!z)this.observers=[O1],this.observerSlots=[O1.sources.length-1];else z.push(O1),this.observerSlots.push(O1.sources.length-1)}}if(J&&f0.sources.has(this))return this.tValue;return this.value}function sj(J,z,Y){let Z=f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(f0){let G=f0.running;if(G||!Y&&f0.sources.has(J))f0.sources.add(J),J.tValue=z;if(!G)J.value=z}else J.value=z;if(J.observers&&J.observers.length)xJ(()=>{for(let G=0;G<J.observers.length;G+=1){let X=J.observers[G],Q=f0&&f0.running;if(Q&&f0.disposed.has(X))continue;if(Q?!X.tState:!X.state){if(X.pure)s1.push(X);else FJ.push(X);if(X.observers)ZK(X)}if(!Q)X.state=vJ;else X.tState=vJ}if(s1.length>1e6){if(s1=[],fg)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function VZ(J){if(!J.fn)return;TY(J);let z=yq;if(o7(J,f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value,z),f0&&!f0.running&&f0.sources.has(J))queueMicrotask(()=>{xJ(()=>{f0&&(f0.running=!0),O1=$0=J,o7(J,J.tValue,z),O1=$0=null},!1)})}function o7(J,z,Y){let Z,G=$0,X=O1;O1=$0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(f0&&f0.running)J.tState=vJ,J.tOwned&&J.tOwned.forEach(TY),J.tOwned=void 0;else J.state=vJ,J.owned&&J.owned.forEach(TY),J.owned=null;return J.updatedAt=Y+1,gX(Q)}finally{O1=X,$0=G}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)sj(J,Z,!0);else if(f0&&f0.running&&J.pure){if(!f0.sources.has(J))J.value=Z;f0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function YG(J,z,Y,Z=vJ,G){let X={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:$0,context:$0?$0.context:null,pure:Y};if(f0&&f0.running)X.state=0,X.tState=Z;if($0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if($0!==Vg)if(f0&&f0.running&&$0.pure)if(!$0.tOwned)$0.tOwned=[X];else $0.tOwned.push(X);else if(!$0.owned)$0.owned=[X];else $0.owned.push(X);if(G&&G.name)X.name=G.name;if(JG&&X.fn){let Q=X.fn,[H,f]=p(void 0,{equals:!1}),j=JG.factory(Q,f);T1(()=>j.dispose());let V,B=()=>Lg(f).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),f0&&f0.running){if(!V)V=JG.factory(Q,B);return V.track(K)}return j.track(K)}}return Mz.afterCreateOwner&&Mz.afterCreateOwner(X),X}function RX(J){let z=f0&&f0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===OX)return Sq(J);if(J.suspense&&t1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<yq)){if(z&&f0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let G=J,X=Y[Z+1];while((G=G.owner)&&G!==X)if(f0.disposed.has(G))return}if((z?J.tState:J.state)===vJ)VZ(J);else if((z?J.tState:J.state)===OX){let G=s1;s1=null,xJ(()=>Sq(J,Y[0]),!1),s1=G}}}function xJ(J,z){if(s1)return J();let Y=!1;if(!z)s1=[];if(FJ)Y=!0;else FJ=[];yq++;try{let Z=J();return Mg(Y),Z}catch(Z){if(!Y)FJ=null;s1=null,gX(Z)}}function Mg(J){if(s1){if(zG&&f0&&f0.running)Og(s1);else YK(s1);s1=null}if(J)return;let z;if(f0){if(!f0.promises.size&&!f0.queue.size){let{sources:Z,disposed:G}=f0;FJ.push.apply(FJ,f0.effects),z=f0.resolve;for(let X of FJ)"tState"in X&&(X.state=X.tState),delete X.tState;f0=null,xJ(()=>{for(let X of G)TY(X);for(let X of Z){if(X.value=X.tValue,X.owned)for(let Q=0,H=X.owned.length;Q<H;Q++)TY(X.owned[Q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}p7(!1)},!1)}else if(f0.running){f0.running=!1,f0.effects.push.apply(f0.effects,FJ),FJ=null,p7(!0);return}}let Y=FJ;if(FJ=null,Y.length)xJ(()=>e7(Y),!1);else Mz.afterUpdate&&Mz.afterUpdate();if(z)z()}function YK(J){for(let z=0;z<J.length;z++)RX(J[z])}function Og(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=f0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),xJ(()=>{f0.running=!0,RX(Y)},!1),f0&&(f0.running=!1)})}}function Ag(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)RX(Z);else J[Y++]=Z}if(x1.context){if(x1.count){x1.effects||(x1.effects=[]),x1.effects.push(...J.slice(0,Y));return}rj()}if(x1.effects&&(x1.done||!x1.count))J=[...x1.effects,...J],Y+=x1.effects.length,delete x1.effects;for(z=0;z<Y;z++)RX(J[z])}function Sq(J,z){let Y=f0&&f0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let G=J.sources[Z];if(G.sources){let X=Y?G.tState:G.state;if(X===vJ){if(G!==z&&(!G.updatedAt||G.updatedAt<yq))RX(G)}else if(X===OX)Sq(G,z)}}}function ZK(J){let z=f0&&f0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=OX;else Z.state=OX;if(Z.pure)s1.push(Z);else FJ.push(Z);Z.observers&&ZK(Z)}}}function TY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),Q=Y.observerSlots.pop();if(Z<G.length)X.sourceSlots[Q]=Z,G[Z]=X,Y.observerSlots[Z]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)TY(J.tOwned[z]);delete J.tOwned}if(f0&&f0.running&&J.pure)GK(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)TY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(f0&&f0.running)J.tState=0;else J.state=0;delete J.sourceMap}function GK(J,z){if(!z)J.tState=0,f0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)GK(J.owned[Y])}function kq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function s7(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){gX(Z,Y&&Y.owner||null)}}function gX(J,z=$0){let Y=MX&&z&&z.context&&z.context[MX],Z=kq(J);if(!Y)throw Z;if(FJ)FJ.push({fn(){s7(Z,Y,z)},state:vJ});else s7(Z,Y,z)}function oj(J){if(typeof J==="function"&&!J.length)return oj(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=oj(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let G=0;G<Z.length;G++)z.push(Z[G]);else z.push(Z)}return z}return J}function Rg(J,z){return function(Z){let G;return wz(()=>G=t1(()=>{return $0.context={...$0.context,[J]:Z.value},Fg(()=>Z.children)}),void 0,z),G}}function t7(J){for(let z=0;z<J.length;z++)J[z]()}function Ng(J,z,Y={}){let Z=[],G=[],X=[],Q=0,H=z.length>1?[]:null;return T1(()=>t7(X)),()=>{let f=J()||[],j=f.length,V,B;return f[Iq],t1(()=>{let L,A,O,R,u,P,S,g,M;if(j===0){if(Q!==0)t7(X),X=[],Z=[],G=[],Q=0,H&&(H=[]);if(Y.fallback)Z=[gg],G[0]=BZ((T)=>{return X[0]=T,Y.fallback()}),Q=1}else if(Q===0){G=Array(j);for(B=0;B<j;B++)Z[B]=f[B],G[B]=BZ(K);Q=j}else{O=Array(j),R=Array(j),H&&(u=Array(j));for(P=0,S=Math.min(Q,j);P<S&&Z[P]===f[P];P++);for(S=Q-1,g=j-1;S>=P&&g>=P&&Z[S]===f[g];S--,g--)O[g]=G[S],R[g]=X[S],H&&(u[g]=H[S]);L=new Map,A=Array(g+1);for(B=g;B>=P;B--)M=f[B],V=L.get(M),A[B]=V===void 0?-1:V,L.set(M,B);for(V=P;V<=S;V++)if(M=Z[V],B=L.get(M),B!==void 0&&B!==-1)O[B]=G[V],R[B]=X[V],H&&(u[B]=H[V]),B=A[B],L.set(M,B);else X[V]();for(B=P;B<j;B++)if(B in O){if(G[B]=O[B],X[B]=R[B],H)H[B]=u[B],H[B](B)}else G[B]=BZ(K);G=G.slice(0,Q=j),Z=f.slice(0)}return G});function K(L){if(X[B]=L,H){let[A,O]=p(B,{name:"index"});return H[B]=O,z(f[B],A)}return z(f[B])}}}function XK(J,z){if(Cg){if(x1.context){let Y=x1.context;rj(Hg());let Z=r7(J,z||{});return rj(Y),Z}}return r7(J,z||{})}function Nq(){return!0}function pj(J){return!(J=typeof J==="function"?J():J)?{}:J}function bg(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function uq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let H=J[Q];z=z||!!H&&Fz in H,J[Q]=typeof H==="function"?(z=!0,U0(H)):H}if(Bg&&z)return new Proxy({get(Q){for(let H=J.length-1;H>=0;H--){let f=pj(J[H])[Q];if(f!==void 0)return f}},has(Q){for(let H=J.length-1;H>=0;H--)if(Q in pj(J[H]))return!0;return!1},keys(){let Q=[];for(let H=0;H<J.length;H++)Q.push(...Object.keys(pj(J[H])));return[...new Set(Q)]}},kg);let Y={},Z=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let H=J[Q];if(!H)continue;let f=Object.getOwnPropertyNames(H);for(let j=f.length-1;j>=0;j--){let V=f[j];if(V==="__proto__"||V==="constructor")continue;let B=Object.getOwnPropertyDescriptor(H,V);if(!Z[V])Z[V]=B.get?{enumerable:!0,configurable:!0,get:bg.bind(Y[V]=[B.get.bind(H)])}:B.value!==void 0?B:void 0;else{let K=Y[V];if(K){if(B.get)K.push(B.get.bind(H));else if(B.value!==void 0)K.push(()=>B.value)}}}}let G={},X=Object.keys(Z);for(let Q=X.length-1;Q>=0;Q--){let H=X[Q],f=Z[H];if(f&&f.get)Object.defineProperty(G,H,f);else G[H]=f?f.value:void 0}return G}function Z1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(Ng(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=Z();if(G){let X=J.children;return typeof X==="function"&&X.length>0?t1(()=>X(z?G:()=>{if(!t1(Z))throw Sg("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function QK(J){let z;if(x1.context&&x1.load)z=x1.load(x1.getContextId());let[Y,Z]=p(z,{name:"errored"});return Cq||(Cq=new Set),Cq.add(Z),T1(()=>Cq.delete(Z)),U0(()=>{let G;if(G=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(G);return typeof X==="function"&&X.length?t1(()=>X(G,()=>Z())):X}return Ug(()=>J.children,Z)},void 0,{name:"value"})}var x1,fg=!0,jg=(J,z)=>J===z,Fz,Bg,Iq,Wg,bq,MX=null,e7,vJ=1,OX=2,Vg,_j,$0=null,f0=null,zG=null,JG=null,O1=null,s1=null,FJ=null,yq=0,Mz,Jv,p7,AX,gg,Cg=!1,kg,Sg=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,Cq,qK;var W1=C(()=>{x1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return a7(this.context.count)},getNextContextId(){return a7(this.context.count++)}};Fz=Symbol("solid-proxy"),Bg=typeof Proxy==="function",Iq=Symbol("solid-track"),Wg=Symbol("solid-dev-component"),bq={equals:jg},e7=YK,Vg={},_j={},Mz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Jv,p7]=p(!1);gg=Symbol("fallback");kg={get(J,z,Y){if(z===Fz)return Y;return J.get(z)},has(J,z){if(z===Fz)return!0;return J.has(z)},set:Nq,deleteProperty:Nq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Nq,deleteProperty:Nq}},ownKeys(J){return J.keys()}};qK={hooks:Mz,writeSignal:sj,registerGraph:JK};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});import{spawn as Ig}from"child_process";function tj(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function ej(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function HK(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),G=(Y()*2-1)*J*Z;return Math.max(0,J+G)}function fK(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function ZG(J,z,Y,Z){let G=Date.now();if(!ej(J,G))return!1;J.inFlight=!0;let X=new AbortController,Q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let H,f=!1;try{H=await Y(X.signal),f=!0}catch{}clearTimeout(Q);let j=X.signal.aborted;if(J.nextAllowedAt=tj(G,Date.now(),j,z),J.inFlight=!1,f&&!j)Z(H)})(),!0}function qY(J,z,Y){return new Promise((Z)=>{let G="",X=!1,Q=(f)=>{if(X)return;X=!0,Z({status:f,stdout:G})},H=Ig(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(f)=>{G+=String(f)}),H.on("error",()=>Q(null)),H.on("close",(f)=>Q(f))})}var GG=()=>{};function yg(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function Tg(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(Z==="SUCCESS")return"passing";if(Z==="PENDING"||Z==="EXPECTED")return"pending";if(Z==="FAILURE"||Z==="ERROR")return"failing";return"unknown"}function xg(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=Tg(Z);if(G==="failing")return"failing";if(G==="pending")z=!0;else if(G==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function BK(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:yg(J.state,J.reviewDecision),checkState:xg(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function wq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function Eq(J,z){return z.some((Y)=>J.includes(Y))}function JB(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(Eq(z,Pg))return{kind:"empty"};if(Eq(z,ug))return{kind:"error",error:"no-remote"};if(Eq(z,Eg))return{kind:"error",error:"auth"};if(Eq(z,wg))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+HK(H,Z.jitterRatio,G);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(Z.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:X(fK(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var jK="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",ug,Eg,wg,Pg;var zB=C(()=>{GG();ug=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Eg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],wg=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],Pg=["no pull requests found","no open pull requests","no pull request found"]});var YB,ZB,GB,XB="DIRTY_WORKTREE",QB,qB;var HB=C(()=>{YB=class YB extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};ZB=class ZB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};GB=class GB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};QB=class QB extends Error{taskId;constructor(J){super(`${XB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};qB=class qB extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var WK;var VK=C(()=>{WK=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});function KK(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mQ(J.host,J.user,J.port)}}function XG(J){let z=JY(J);if(!z)return new iQ;return new iZ(KK(z))}function HY(J){for(let z of Object.values(Hj()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(KK(z));return new iQ}function UK(J){return J&&r1(J)?J:void 0}function xY(J){let z=HY(J);return z.isRemote||z.existsSync(J)}function m1(J){return HY(J).isRemote?rJ():J}var Oz=C(()=>{p1();C1();ef();Yj()});import{isAbsolute as hg,join as vg,resolve as mg}from"path";function fB(J){if(typeof J!=="string")return null;let z=J.trim();if(!z)return null;let Y=rJ();if(z==="~")return Y;let Z=z.startsWith("~/")?vg(Y,z.slice(2)):z;return hg(Z)?Z:mg(Y,Z)}function DK(){let J=LJ()[Pq];return fB(typeof J==="string"?J:null)}var Pq="worktree.basePath";var jB=C(()=>{p1();sz()});import{createHash as cg}from"crypto";import FK from"fs";import MJ from"path";function lg(){return DK()??MJ.join(XJ(),MK)}function $g(){return MJ.join(XJ(),MK)}function OK(J){if(!MJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return MJ.join(lg(),bK(J))}function AK(J){if(!MJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=OK(J),Y=MJ.join($g(),bK(J));return[...z===Y?[z]:[z,Y],...ig.map((G)=>MJ.join(J,G))]}function RK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return MJ.join(OK(J),z)}async function gK(J){if(r1(J)){let Y=JY(J)?.basePath;if(!Y)return[];return XG(J).readdir(CK(Y))}let z=new Set;for(let Y of AK(J))try{for(let Z of FK.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function BB(J,z){if(!MJ.isAbsolute(J)||!MJ.isAbsolute(z))return null;let Y=LK(z);for(let Z of AK(J)){let G=LK(Z),X=MJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!MJ.isAbsolute(X))return Z}return null}function NK(J,z){return BB(J,z)!==null}function CK(J){return`${ag(J)}/.kobe/worktrees`}function kK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${CK(J)}/${z}`}function ag(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function LK(J){try{return FK.realpathSync(J)}catch{return MJ.resolve(J)}}function bK(J){let Y=(MJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cg("sha1").update(MJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var MK="worktrees",dg=".kobe/worktrees",ng=".claude/worktrees",ig;var WB=C(()=>{p1();Oz();C1();jB();ig=[dg,ng]});class VB{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??WK,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((G)=>!z.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,G),G}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${Z}-v${G}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await gK(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var SK=C(()=>{VK();WB()});var yK={};q1(yK,{PLACEHOLDER_TASK_TITLE:()=>hz,Orchestrator:()=>hq});import{realpathSync as _g}from"fs";import{basename as pg,resolve as rg}from"path";function IK(J){return JY(J)?.basePath??J}class hq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new VB((X)=>this.store.list().filter((Q)=>Q.repo===X&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=p(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[Z,G]=p(null);this.activeTaskAcc=Z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??hz).trim()||hz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??o1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=CX(J),Z=this.store.list().find((Q)=>Q.kind==="main"&&CX(Q.repo).key===Y);if(Z)return Z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{let Q=PJ(S1("lastSelectedVendor"),hJ());return await this.store.create({repo:z,title:og(z),branch:"",worktreePath:IK(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return IK(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Rq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),G;try{G=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:G.path,branch:Y})}catch(X){throw await this.rollbackWorktree(G.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),G.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Rq(hz,J.id))return;let Y=Rq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new YB(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(wq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new GB;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new QB(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(G){throw new qB(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=CX(J).key;for(let Y of SJ())if(CX(Y).key===z)Qj(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(CX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>QG(Z.worktreePath)));return z.filter((Z)=>!Y.has(QG(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=QG(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((H)=>H.worktreePath&&QG(H.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(J.repo)).find((H)=>QG(H.path)===z);if(!G)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||G.branch,Q=(J.title??pg(G.path)).trim()||hz;return this.store.create({repo:J.repo,title:Q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:J.vendor??o1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new ZB(String(J));return z}}function og(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function CX(J){let z=tz(J);return{repo:z,key:r1(z)?z:QG(z)}}function QG(J){try{return _g(J)}catch{return rg(J)}}var hz="(new task)";var kX=C(()=>{W1();zB();C1();zz();_1();HB();SK()});function qG(J,z,Y){if(!z)return J;let Z=XG(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function l1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Q1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var bX="@kobe_remote";var KZ=C(()=>{Oz();Lz()});function vq(){return Bz(UZ,!1)}var UZ="experimental.autoStatus";var SX=C(()=>{sz()});function KB(){return Bz(DZ,!1)}var DZ="experimental.dispatcher";var mq=C(()=>{sz()});import{randomUUID as sg}from"crypto";function Az(J){return`engineCommand.${J}`}function Rz(J){return`engineName.${J}`}function LZ(J){return S1(Rz(J))?.trim()||UB[J]||J}function IX(J){return i1(J??"claude").defaultCommand}function tg(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function cJ(J,z){let Y=J??"claude",Z=S1(Az(Y))?.trim(),G=(()=>{if(Z){let X=tg(Z);if(X.length>0)return X}return IX(Y)})();return eg(G,Y,z)}function eg(J,z,Y){let Z=Y?.trim();if(!Z)return J;let G=z??"claude";if(!i1(G).effortLevels?.includes(Z))return J;if(G==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function HG(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>J2.has(Z)))return{argv:J,sessionId:null};let Y=sg();return{argv:[...J,"--session-id",Y],sessionId:Y}}function FZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...y1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function z2(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
|
|
36
|
-
`)}function
|
|
37
|
-
`)}function
|
|
38
|
-
|
|
39
|
-
`):null}function cq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let G=
|
|
40
|
-
`)}function dq(J,z,Y,Z=KB){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",G2(Y)]}var UB,J2;var Yz=C(()=>{XY();QY();SX();mq();C1();_1();UB=Object.fromEntries(tY.map((J)=>[J,i1(J).displayName]));J2=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var TK={};q1(TK,{archivedHistoryPreviewEnabled:()=>DB,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function DB(){return Bz(yX,!1)}var yX="experimental.archivedHistoryPreview";var nq=C(()=>{sz()});import{spawnSync as X2}from"child_process";function xK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of Q2)if(z(Y.binary))return Y.command;return null}return null}function EK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of q2)for(let Z of H2)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var Q2,uK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return X2(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},q2,H2;var wK=C(()=>{Q2=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];q2=["copy-mode","copy-mode-vi"],H2=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as PK,readFileSync as f2}from"fs";function hK(){MZ=null}function j2(){let J=JV();if(PK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(PK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function iq(){if(MZ)return MZ;let{canonical:J,found:z}=j2();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=f2(z,"utf8");Z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${z}: ${X}`)}return MZ={path:J,exists:!0,doc:Z,warnings:Y},MZ}var MZ=null;var LB=C(()=>{p1()});function fG(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function L2(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let Z=Y.split("+"),G=Z.pop()??"";if(G===""&&Z.length>0){if(G="+",Z[Z.length-1]==="")Z.pop()}if(!G)return{error:`"${J}": no key after the modifiers`};let X=new Set;for(let f of Z){let j=V2[f];if(!j)return{error:`"${J}": unknown modifier "${f}" (use ctrl / cmd / alt / shift)`};X.add(j)}if(G=K2[G]??G,X.has("shift")&&G.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=D2.filter((f)=>X.has(f)).join("+"),H=Q?`${Q}+${G}`:G;if(G.length>1&&!U2.has(G))return{chord:H,warning:`"${J}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:H}}function lq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function F2(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function M2(J){if(!lq(J))return null;let z=J.bindings;if(lq(z))return z;return J}function $q(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!lq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(J.bindings!==void 0)if(lq(J.bindings))X.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of F2(z)){let H=J[Q];if(H===void 0)continue;let f=M2(H);if(f)X.push(f);else Z.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of X)for(let[H,f]of Object.entries(Q)){if(f===null||f===!1||Array.isArray(f)&&f.length===0){G.set(H,[]);continue}let j=typeof f==="string"?[f]:Array.isArray(f)?f:null;if(!j){Z.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof f}`);continue}let V=[],B=!1;for(let K of j){if(typeof K!=="string"){Z.push(`${H}: chord entries must be strings`),B=!0;continue}let L=L2(K,Y?.chordOptsFor?.(H));if("error"in L){Z.push(`${H}: ${L.error}`),B=!0;continue}if(L.warning)Z.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&B){Z.push(`${H}: no valid chords \u2014 keeping the default`);continue}G.set(H,V)}return{entries:Array.from(G,([Q,H])=>({id:Q,keys:H})),warnings:Z}}function O2(J,z){return J===z||J==="global"||z==="global"}function vK(J,z){let Y=[],Z=[];for(let G of z){let X=J.find((B)=>B.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=FB[G.id];if(Q){Y.push(`${G.id}: not customizable \u2014 ${Q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let H=B2[G.id];if(H&&G.keys.length>0){let B=H.validateCount(G.keys.length);if(B){Y.push(`${G.id}: ${B} \u2014 keeping the default`);continue}}let f=G.keys.filter((B)=>{if(B.length===1&&W2.has(X.scope))return Y.push(`${G.id}: "${B}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(f.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&f.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let j=X.keys,V=X;if(V.keys=f,X.hint)if(f.length===0)V.hint=void 0;else X.hint.keys=f.join("/");Z.push({id:G.id,keys:f,defaultKeys:j})}for(let G of Z)for(let X of G.keys){let Q=J.find((H)=>H.id===G.id);if(!Q)continue;for(let H of J){if(H.id===G.id)continue;if(!H.keys.includes(X))continue;if(!O2(Q.scope,H.scope))continue;Y.push(`${G.id}: "${X}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var FB,B2,W2,V2,K2,U2,D2;var aq=C(()=>{FB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};B2={"sidebar.nav":fG("down","up"),"files.nav":fG("down","up"),"sidebar.search.nav":fG("down","up"),"files.hierarchy":fG("collapse","expand"),"sidebar.view":fG("previous view","next view"),"files.tab":fG("previous tab","next tab")},W2=new Set(["global","workspace","terminal"]),V2={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},K2={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},U2=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),D2=["ctrl","cmd","alt","shift"]});function jG(J){return J in mK}function RZ(J,z){let Y=J.split("+"),Z=Y.pop()??"";if(Z===""&&Y.length>0){if(Z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(Z.length===1)X=G.has("shift")?Z.toUpperCase():Z;else{let f=R2[Z];if(!f)return{error:`"${J}": tmux can't bind the key "${Z}"`};X=f}let Q=/^f\d+$/.test(Z);if(G.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let H="";if(G.has("ctrl"))H+="C-";if(G.has("alt"))H+="M-";if(G.has("shift"))H+="S-";return{key:H+X}}function dK(){let J={};for(let[Y,Z]of Object.entries(AZ)){let G=RZ(Z,{allowBare:jG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);J[Y]={chord:Z,key:G.key}}let z=uY.map((Y)=>{let Z=RZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function MB(J){let z=dK(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===vz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(vz);continue}if(Z.keys.length!==uY.length){z.warnings.push(`${vz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let H=[],f=!0;for(let j of Z.keys){let V=RZ(j);if("error"in V){z.warnings.push(`${vz}: ${V.error} \u2014 keeping the default`),f=!1;break}H.push({chord:j,key:V.key})}if(!f)continue;z.focus=H,Y.add(vz);continue}if(!(Z.id in AZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let G=Z.id;if(Z.keys.length===0){z.binds[G]=null,Y.add(G);continue}if(Z.keys.length>1)z.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let X=Z.keys[0],Q=RZ(X,{allowBare:jG(G)});if("error"in Q){z.warnings.push(`${G}: ${Q.error} \u2014 keeping the default`);continue}if(X!==AZ[G])Y.add(G);z.binds[G]={chord:X,key:Q.key}}return z.overridden=Y,z}function OB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function nK(){OZ=null}function _q(){if(OZ)return OZ;let J=iq();if(!J.exists||J.doc===null)return OZ=dK(),OZ;let z=$q(J.doc,process.platform,{chordOptsFor:OB}),Y=z.warnings.filter((G)=>G.startsWith("tmux.")),Z=MB(z.entries);Z.warnings=[...Y,...Z.warnings];for(let G of Z.warnings)console.warn(`[kobe/keybindings] ${G}`);return OZ=Z,OZ}var A2,mK,cK,AZ,vz="tmux.focus",uY,R2,OZ=null;var pq=C(()=>{LB();aq();A2={"tmux.detach":"ctrl+q","tmux.tab.new":"ctrl+t","tmux.tab.chooseEngine":"ctrl+shift+t","tmux.tab.prev":"ctrl+[","tmux.tab.next":"ctrl+]","tmux.tab.close":"ctrl+w","tmux.tab.rename":"f2"},mK={"tmux.layout.workspaceSplit":"s","tmux.layout.workspaceClose":"x","tmux.layout.workspaceReset":"r","tmux.layout.tasksToggle":"a","tmux.layout.opsToggle":"o","tmux.layout.terminalToggle":"z","tmux.layout.zenToggle":"space"},cK=["F6","F7","F8","F9","F10","F11"],AZ={...A2,...mK};uY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],R2={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function TX(J,z){let Y=null;for(let G=0;G<24;G++){let X=await BG(J);if(X){if(!z)return{pane:X,ready:!0};let Q=(await WG(X)).trim();if(Q.length>0&&Q===Y)return{pane:X,ready:!0};Y=Q}await iK(250)}return{pane:await BG(J)||await AB(J),ready:!1}}async function xX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await d0(["set-buffer","-b",Y,"--",z]),await d0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await iK(g2),await uX(J,"Enter")}async function lK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var iK=(J)=>new Promise((z)=>setTimeout(z,J)),g2=150;var rq=C(()=>{c1()});function $K(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var VG;var oq=C(()=>{VG={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var KG;var sq=C(()=>{KG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var UG;var tq=C(()=>{UG={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var DG;var eq=C(()=>{DG={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var LG;var JH=C(()=>{LG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var FG;var zH=C(()=>{FG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var MG;var YH=C(()=>{MG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var aK;var _K=C(()=>{oq();sq();tq();eq();JH();zH();YH();aK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG}});function T2(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,G,X]=Y;return`#${Z}${Z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function pK(J,z,Y="dark"){let Z=J.defs??{};function G(Q,H){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return T2(Q);if(H.includes(Q))return null;let j=Z[Q]??J.theme[Q];if(j===void 0)return null;return G(j,[...H,Q])}if(!Q||typeof Q!=="object")return null;let f=Q[Y];return typeof f==="string"?G(f,H):null}let X=J.theme[z];if(X===void 0)return null;return G(X,[z])}function ZH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function GH(J){if(!ZH(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!ZH(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!ZH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,G]of Object.entries(z.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${Z} must be a string (hex like "#abc" or a ref name)`}}for(let[Z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!ZH(G))return{ok:!1,reason:`theme.${Z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${Z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${Z}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var RB=()=>{};import{readFileSync as x2,readdirSync as u2}from"fs";import{join as rK}from"path";function OG(){return rK(XJ(),"themes")}function EX(){let J=OG(),z;try{z=u2(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=rK(J,Z),X;try{let f=x2(G,"utf8");X=JSON.parse(f)}catch(f){let j=f instanceof Error?f.message:String(f);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${j}`);continue}let Q=GH(X);if(!Q.ok){console.warn(`[kobe] skipping user theme ${G}: ${Q.reason}`);continue}let H=Z.slice(0,-5);Y.push({name:H,theme:Q.theme})}return Y}var XH=C(()=>{p1();RB()});import{readFileSync as E2}from"fs";function P2(){try{let J=JSON.parse(E2(oJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&w2.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function h2(J){return EX().find((Y)=>Y.name===J)?.theme??aK[J]??null}function gz(J,...z){for(let Y of z){let Z=pK(J,Y);if(Z)return Z}return null}function oK(J,z){let Y=gz(J,"text"),Z=gz(J,"background"),G=gz(J,"textMuted","text"),X=gz(J,"backgroundPanel","background"),Q=gz(J,"backgroundElement","backgroundPanel","background"),H=gz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),f=gz(J,"selectedListItemText","background"),j=gz(J,z,"primary","borderActive","border","text");return{border:gz(J,"border","text"),activeBorder:j,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:Q,currentWindowFg:j,activityFg:gz(J,"info","primary","text"),bellFg:gz(J,"warning","error","primary","text"),messageBg:H,messageFg:Y,messageCommandFg:j,modeBg:j,modeFg:f??Z}}function Zz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function tK(J){let z=Zz({bg:J.statusBg,fg:J.statusFg}),Y=Zz({bg:J.statusBg,fg:J.statusMutedFg}),Z=Zz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function v2(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of tK(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);Z.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=Z.join(",");if(G!==J.marker)Y.push(G?["set-option","-g",gB,G]:["set-option","-gu",gB]);return Y}async function sK(J){let{code:z,stdout:Y}=await a0(J);return z===0?Y.trim():""}async function gZ(){try{let J=P2(),z=J.enabled?h2(J.themeName):null,Y=z?oK(z,J.focusAccentSlot):oK({theme:{}},J.focusAccentSlot),Z=tK(Y),[G,...X]=await Promise.all([sK(["show-options","-gqv",gB]),...Z.map((f)=>sK(["show-options",f.showFlag,f.option]))]),Q=Object.fromEntries(Z.map((f,j)=>[f.key,X[j]??""])),H=v2({marker:G,current:Q,hexes:Y});if(H.length>0)await $1(H)}catch{}}var gB="@kobe_border_theme",w2;var QH=C(()=>{p1();c1();_K();XH();w2=["primary","success","info"]});function eK(){return Bz(qH,!0)}function HH(){return Bz(JU,!1)}function zU(J){WV(JU,J)}var qH="zen.keepTasks",JU="zen.active";var NB=C(()=>{sz()});var fH={};q1(fH,{recordGen:()=>EY,isLatestGen:()=>QU,genAgeMs:()=>$2,coalesceLayoutWork:()=>a2,RESIZE_GUARD_MS:()=>l2,LAYOUT_COALESCE_MS:()=>GU});import{createHash as m2,randomUUID as c2}from"crypto";import{mkdirSync as d2,readFileSync as YU,renameSync as n2,writeFileSync as i2}from"fs";import{join as ZU}from"path";function XU(){return ZU(XJ(),"layout-coord")}function CB(J,z){let Y=m2("sha1").update(J).digest("hex").slice(0,16);return ZU(XU(),`${Y}.${z}`)}function EY(J,z){let Y=c2();try{d2(XU(),{recursive:!0});let Z=CB(J,z),G=`${Z}.${Y}.tmp`;i2(G,`${Date.now()}
|
|
41
|
-
${Y}`),
|
|
42
|
-
`)[1]?.trim()===Y}catch{return!0}}function
|
|
43
|
-
`)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function
|
|
44
|
-
`)){let Z=Y.trim();if(!Z)continue;let[G,X,
|
|
45
|
-
`).map((
|
|
46
|
-
`).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function
|
|
47
|
-
`)){let Z=Y.trim();if(!Z)continue;let[G,X,
|
|
48
|
-
`)){let[G,X]=Z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function
|
|
49
|
-
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function
|
|
50
|
-
`).some((X)=>{let
|
|
51
|
-
`).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function
|
|
52
|
-
`).filter((Z)=>Z.trim().length>0).length}async function
|
|
53
|
-
`).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await
|
|
54
|
-
`)){let[Z,G,X,
|
|
55
|
-
`)){let[
|
|
56
|
-
`)){let[H,
|
|
57
|
-
`).filter((Z)=>Z.trim().length>0).length}async function
|
|
58
|
-
`)){let
|
|
59
|
-
`)){let X=G.indexOf(" ");if(X<=0)continue;let
|
|
60
|
-
`)){let[H,
|
|
61
|
-
`)){let[
|
|
62
|
-
`}function
|
|
63
|
-
`}function u1(J,z){process.stderr.write(
|
|
64
|
-
`}function iz(J,z){process.stderr.write(vN(J,z))}function eU(J=(z)=>process.stderr.write(z)){if(sB||tB)return;sB=(z)=>J(sU("unhandledRejection",z)),tB=(z)=>J(sU("uncaughtException",z)),process.on("unhandledRejection",sB),process.on("uncaughtException",tB)}var sB,tB;async function mN(J,z=eZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==hz||!Z.worktreePath)continue;try{let G=await z(Z.worktreePath,Z.vendor??o1);if(!G)continue;let X=J.getTask(Z.id);if(!X||X.title!==hz)continue;await J.setTitle(Z.id,G),Y.push({id:Z.id,title:G})}catch(G){u1("auto-title-poller",G)}}return Y}function J5(J,z=eB,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,mN(J).then(()=>rU(J)).catch((Q)=>u1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var eB=4000;var z5=C(()=>{gq();kX();oU();zz()});class J9{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class z9{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function Y5(J,z,Y=vq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var Z5=C(()=>{SX()});import{createHash as cN}from"crypto";import{homedir as dN}from"os";import mY from"path";function aN(){return mY.join(process.env.KOBE_HOME_DIR??dN(),".kobe")}function _N(J){let Y=(mY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cN("sha1").update(mY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function pN(J){if(!mY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return mY.join(aN(),nN,_N(J))}function rN(J){if(!mY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[pN(J),...$N.map((z)=>mY.join(J,z))]}function lz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function G5(J,z){return z===J||z.startsWith(`${J}/`)}function X5(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let Q=lz(X.worktreePath);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=X.id}return Z}function Q5(J,z){let Y=lz(z);for(let Z of J)if(Z.worktreePath&&lz(Z.worktreePath)===Y)return Z.id;return}function Y9(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.repo)continue;let Q=lz(X.repo);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=Q}return Z}function q5(J,z){let Y=lz(z),Z=new Set,G=new Set;for(let X of J){if(X.repo)Z.add(lz(X.repo));if(X.worktreePath)G.add(lz(X.worktreePath))}for(let X of Z)for(let Q of rN(X).map(lz)){let H=`${Q}/`;if(!Y.startsWith(H))continue;let j=Y.slice(H.length).split("/")[0];if(!j)continue;let V=`${H}${j}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var nN="worktrees",iN=".kobe/worktrees",lN=".claude/worktrees",$N;var H5=C(()=>{$N=[iN,lN]});function X9(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function sX(J,z,Y,Z){let G=J.get(z);if(!G)throw Error(`unknown daemon request: ${z}`);return G.handle(Q9(Y),Z)}function tX(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:sJ,G=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:Z,remoteMin:G}))throw Error(`daemon is protocol v${sJ} (min v${NY}); this client is v${Z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:sJ,minProtocolVersion:NY,kobeVersion:J1,capabilities:[...jj],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Vz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Vz)}}},{name:"task.get",handle(z,Y){let Z=g1(z,"taskId"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);return{task:Vz(G)}}},{name:"task.create",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.createTask({repo:Z,title:Xz(z,"title"),branch:Xz(z,"branch"),baseRef:Xz(z,"baseRef"),vendor:G9(z,"vendor"),modelEffort:Xz(z,"effort")});return{taskId:G.id,task:Vz(G)}}},{name:"task.archive",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setArchived(Z,Z9(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setTitle(Z,g1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setBranch(Z,g1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=g1(z,"taskId"),G=G9(z,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,G),{}}},{name:"task.delete",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.deleteTask(Z,{force:Z9(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setPinned(Z,Z9(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(Z,G==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"status");if(!m7(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(Z):void 0,Q=X?.status;if(await Y.orch.setStatus(Z,G),G==="done"&&Q!=="done"&&X)try{let H=await Y.issues.mirrorTaskDone(X.repo,Z);if(H)Y.bus.publish("issue.snapshot",H)}catch(H){u1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let Q=X,H=g1(Q,"taskId"),f=Q.position;if(typeof f!=="number"||!Number.isFinite(f))throw Error("position must be a finite number");return{taskId:H,position:f}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.ensureMainTask(Z);return{task:Vz(G)}}},{name:"project.forget",async handle(z,Y){let Z=g1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=g1(z,"taskId");Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(Z);return Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let Z=g1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:g1(z,"repo"),worktreePath:g1(z,"worktreePath"),branch:Xz(z,"branch"),vendor:G9(z,"vendor"),title:Xz(z,"title"),ifExists:Xz(z,"ifExists")==="return"?"return":"error"});return{task:Vz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=g1(z,"cwd"),G=g1(z,"worktreePath"),X=Y9(Y.orch.listTasks(),Z)??Y9(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(Q){return u1("worktree-created",Q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=g1(z,"worktreePath"),G=Q5(Y.orch.listTasks(),Z);if(!G)return{archived:!1};try{return await Y.orch.setArchived(G,!0),{archived:!0,taskId:G}}catch(X){return u1("worktree-removed",X),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Xz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(g1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(g1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Xz(z,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(Z))throw Error(`task not found: ${Z}`);return Y.bus.publish("session.deliver",{taskId:Z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);let Q=Y.orch.listTasks().find((f)=>(f.kind??"task")==="main"&&f.repo===X.repo&&!f.archived);if(!Q||Q.id===X.id)return{ok:!0,routed:!1};let H=X.title||X.branch||Z;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=g1(z,"kind");if(!Oq(Z))throw Error(`unknown engine event kind: ${Z}`);let G=Xz(z,"taskId"),X=Xz(z,"cwd");if(!G&&X&&Z==="session-start"){let f=q5(Y.orch.listTasks(),X);if(f)try{await Y.orch.adoptWorktree({repo:f.repo,worktreePath:f.worktreePath,ifExists:"return"})}catch(j){u1("worktree-autosync",j)}}let Q=G??(X?X5(Y.orch.listTasks(),X):void 0);if(!Q)return{};let H=oN(z);if(Y.activity.report(Q,Z,H),Z==="turn-start")Y5(Y.orch,Q).then((f)=>{if(f==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((f)=>u1("status-rules",f));return{}}}].map((z)=>[z.name,z]))}function Q9(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function g1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Xz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function Z9(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function G9(J,z){let Y=Xz(J,z);return Y&&Y.trim().length>0?Y:void 0}function oN(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var RH=C(()=>{Aq();Z5();zz();NJ();H5();YZ()});import{execFile as sN}from"child_process";import{mkdir as tN,readFile as eN,realpath as f5,rename as JC,stat as zC,writeFile as YC}from"fs/promises";import{homedir as ZC}from"os";import{dirname as GC,isAbsolute as XC,join as QC,resolve as j5}from"path";import{promisify as qC}from"util";function HC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function NH(J=process.env.KOBE_HOME_DIR??ZC()){return QC(J,".kobe","issues.json")}function W5(J){return typeof J==="string"&&B5.includes(J)}function fC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:W5(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function jC(){return{version:1,repos:{}}}function BC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function WC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return f5(XC(Y)?Y:j5(J,Y))}async function VC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function KC(J){let{stdout:z}=await W9("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?f5(Y):VC(J)}async function q9(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=j5(J);if(!(await zC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([KC(z),WC(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(HC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function H9(J){try{let z=JSON.parse(await eN(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,G]of Object.entries(z.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[Z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(fC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return jC();throw z}}async function f9(J,z){await tN(GC(J),{recursive:!0});let Y=`${J}.tmp`;await YC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
-
`,"utf8"),await JC(Y,J)}function j9(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function B9(J,z){let Z=(gH.get(J)??Promise.resolve()).then(z),G=Z.then(()=>{return},()=>{return});return gH.set(J,G),G.then(()=>{if(gH.get(J)===G)gH.delete(J)}),Z}class CH{path;constructor(J=NH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await q9(J);return B9(this.path,async()=>{let Z=await H9(this.path),G=Z.repos[Y]??null;if(G&&G.repoRoot!==z)G.repoRoot=z,await f9(this.path,Z);return j9(z,G)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z)return null;return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)return null;let Q=X.issues.find((H)=>H.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",X.repoRoot=Y,await f9(this.path,G),j9(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[Z]=X;X.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:Q.title,status:"open",created:BC(),body:typeof Q.body==="string"?Q.body:""},...X.issues],X.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!W5(Q.status))throw Error(`invalid status: must be one of ${B5.join(", ")}`);let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.status=Q.status}else if(Q.type==="update"){if(typeof Q.id!=="number")throw Error("update requires a numeric id");if(Q.title!==void 0&&(typeof Q.title!=="string"||Q.title.trim().length===0))throw Error("title must be a non-empty string");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")H.title=Q.title;if(typeof Q.body==="string")H.body=Q.body}else if(Q.type==="link"){if(typeof Q.id!=="number")throw Error("link requires a numeric id");if(typeof Q.taskId!=="string"||Q.taskId.length===0)throw Error("link requires a non-empty taskId");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let H=X.issues.filter((f)=>f.id!==Q.id);if(H.length===X.issues.length)throw Error(`no issue #${Q.id}`);X.issues=H}else throw Error(`unknown op type: ${Q.type}`);return await f9(this.path,G),j9(Y,X)})}}var W9,B5,gH;var V9=C(()=>{W9=qC(sN),B5=["open","doing","hold","done"];gH=new Map});import{lstat as V5,readdir as UC,realpath as DC,stat as LC}from"fs/promises";import{join as FC,relative as MC,resolve as K5,sep as OC}from"path";import{Readable as AC}from"stream";function M5(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=nJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!U5.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${U5.join(", ")}`);return z.root=J,new U9(z)}var nJ,K9,F5="READDIRP_RECURSIVE_ERROR",RC,U5,gC,NC,CC=(J)=>RC.has(J.code),kC,D5=(J)=>!0,L5=(J)=>{if(J===void 0)return D5;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return D5},U9;var O5=C(()=>{nJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},K9={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:nJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(K9);RC=new Set(["ENOENT","EPERM","EACCES","ELOOP",F5]),U5=[nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE],gC=new Set([nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE]),NC=new Set([nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE]),kC=process.platform==="win32";U9=class U9 extends AC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...K9,...J},{root:Y,type:Z}=z;this._fileFilter=L5(z.fileFilter),this._directoryFilter=L5(z.directoryFilter);let G=z.lstat?V5:LC;if(kC)this._stat=(X)=>G(X,{bigint:!0});else this._stat=G;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:K9.depth,this._wantsDir=Z?gC.has(Z):!1,this._wantsFile=Z?NC.has(Z):!1,this._wantsEverything=Z===nJ.EVERYTHING_TYPE,this._root=K5(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:G}=z,X=Y.splice(0,J).map((H)=>this._formatEntry(H,Z)),Q=await Promise.all(X);for(let H of Q){if(!H)continue;if(this.destroyed)return;let f=await this._getEntryType(H);if(f==="directory"&&this._directoryFilter(H)){if(G<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,G+1));if(this._wantsDir)this.push(H),J--}else if((f==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await UC(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let G=K5(FC(z,Z));Y={path:MC(this._root,G),fullPath:G,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(G)}catch(G){this._onError(G);return}return Y}_onError(J){if(CC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await DC(Y),G=await V5(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===OC){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=F5,this._onError(Q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as bC,unwatchFile as A5,watchFile as SC}from"fs";import{realpath as D9,lstat as IC,open as yC,stat as g5}from"fs/promises";import{type as TC}from"os";import*as P1 from"path";function R5(J,z,Y,Z,G){let X=(Q,H)=>{if(Y(J),G(Q,H,{watchedPath:J}),H&&J!==H)SH(P1.resolve(J,H),SZ,P1.join(J,H))};try{return bC(J,{persistent:z.persistent},X)}catch(Q){Z(Q);return}}class A9{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=P1.dirname(J),G=P1.basename(J);this.fsw._getWatchedDir(Z).add(G);let Q=P1.resolve(J),H={persistent:Y.persistent};if(!z)z=IH;let f;if(Y.usePolling){let j=Y.interval!==Y.binaryInterval;H.interval=j&&cC(G)?Y.binaryInterval:Y.interval,f=iC(J,Q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else f=nC(J,Q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return f}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=P1.dirname(J),G=P1.basename(J),X=this.fsw._getWatchedDir(Z),Q=z;if(X.has(G))return;let H=async(j,V)=>{if(!this.fsw._throttle(PC,J,5))return;if(!V||V.mtimeMs===0)try{let B=await g5(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=B;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,B);if((uC||EC||wC)&&Q.ino!==B.ino){this.fsw._closeFile(j),Q=B;let A=this._watchWithNodeFs(J,H);if(A)this.fsw._addPathCloser(j,A)}else Q=B}catch(B){this.fsw._remove(Z,G)}else if(X.has(G)){let{atimeMs:B,mtimeMs:K}=V;if(!B||B<=K||K!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,V);Q=V}},f=this._watchWithNodeFs(J,H);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(bz.ADD,J,0))return;this.fsw._emit(bz.ADD,J,z)}return f}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let G=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await D9(Y)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(Z)){if(this.fsw._symlinkPaths.get(G)!==Q)this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.CHANGE,Y,J.stats)}else X.add(Z),this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(G))return!0;this.fsw._symlinkPaths.set(G,!0)}_handleRead(J,z,Y,Z,G,X,Q){J=P1.join(J,"");let H=Z?`${J}:${Z}`:J;if(Q=this.fsw._throttle("readdir",H,1000),!Q)return;let f=this.fsw._getWatchedDir(Y.path),j=new Set,V=this.fsw._readdirp(J,{fileFilter:(B)=>Y.filterPath(B),directoryFilter:(B)=>Y.filterDir(B)});if(!V)return;return V.on(xC,async(B)=>{if(this.fsw.closed){V=void 0;return}let K=B.path,L=P1.join(J,K);if(j.add(K),B.stats.isSymbolicLink()&&await this._handleSymlink(B,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!f.has(K))this.fsw._incrReadyCount(),L=P1.join(G,P1.relative(G,L)),this._addToNodeFs(L,z,Y,X+1)}).on(bz.ERROR,this._boundHandleError),new Promise((B,K)=>{if(!V)return K();V.once(M9,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(B(void 0),f.getChildren().filter((A)=>{return A!==J&&!j.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,G,X,Q)})})}async _handleDir(J,z,Y,Z,G,X,Q){let H=this.fsw._getWatchedDir(P1.dirname(J)),f=H.has(P1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!G&&!f)this.fsw._emit(bz.ADD_DIR,J,z);H.add(P1.basename(J)),this.fsw._getWatchedDir(J);let j,V,B=this.fsw.options.depth;if((B==null||Z<=B)&&!this.fsw._symlinkPaths.has(Q)){if(!G){if(await this._handleRead(J,Y,X,G,J,Z,j),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,G,J,Z,j)})}return V}async _addToNodeFs(J,z,Y,Z,G){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(H)=>Y.filterPath(H),Q.filterDir=(H)=>Y.filterDir(H);try{let H=await hC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,H))return X(),!1;let f=this.fsw.options.followSymlinks,j;if(H.isDirectory()){let V=P1.resolve(J),B=f?await D9(J):J;if(this.fsw.closed)return;if(j=await this._handleDir(Q.watchPath,H,z,Z,G,Q,B),this.fsw.closed)return;if(V!==B&&B!==void 0)this.fsw._symlinkPaths.set(V,B)}else if(H.isSymbolicLink()){let V=f?await D9(J):J;if(this.fsw.closed)return;let B=P1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(B).add(Q.watchPath),this.fsw._emit(bz.ADD,Q.watchPath,H),j=await this._handleDir(B,H,z,Z,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(P1.resolve(J),V)}else j=this._handleFile(Q.watchPath,H,z);if(X(),j)this.fsw._addPathCloser(J,j);return!1}catch(H){if(this.fsw._handleError(H))return X(),J}}}var xC="data",M9="end",N5="close",IH=()=>{},yH,O9,uC,EC,wC,C5,w1,bz,PC="watch",hC,SZ="listeners",kH="errHandlers",kG="rawEmitters",vC,mC,cC=(J)=>mC.has(P1.extname(J).slice(1).toLowerCase()),F9=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},eX=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},dC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},JQ=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},k5=(J)=>J instanceof Set?J.size===0:!J,bH,SH=(J,z,Y,Z,G)=>{let X=bH.get(J);if(!X)return;F9(X[z],(Q)=>{Q(Y,Z,G)})},nC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:Q}=Z,H=bH.get(z),f;if(!Y.persistent){if(f=R5(J,Y,G,X,Q),!f)return;return f.close.bind(f)}if(H)eX(H,SZ,G),eX(H,kH,X),eX(H,kG,Q);else{if(f=R5(J,Y,SH.bind(null,z,SZ),X,SH.bind(null,z,kG)),!f)return;f.on(bz.ERROR,async(j)=>{let V=SH.bind(null,z,kH);if(H)H.watcherUnusable=!0;if(O9&&j.code==="EPERM")try{await(await yC(J,"r")).close(),V(j)}catch(B){}else V(j)}),H={listeners:G,errHandlers:X,rawEmitters:Q,watcher:f},bH.set(z,H)}return()=>{if(JQ(H,SZ,G),JQ(H,kH,X),JQ(H,kG,Q),k5(H.listeners))H.watcher.close(),bH.delete(z),vC.forEach(dC(H)),H.watcher=void 0,Object.freeze(H)}},L9,iC=(J,z,Y,Z)=>{let{listener:G,rawEmitter:X}=Z,Q=L9.get(z),H=Q&&Q.options;if(H&&(H.persistent<Y.persistent||H.interval>Y.interval))A5(z),Q=void 0;if(Q)eX(Q,SZ,G),eX(Q,kG,X);else Q={listeners:G,rawEmitters:X,options:Y,watcher:SC(z,Y,(f,j)=>{F9(Q.rawEmitters,(B)=>{B(bz.CHANGE,z,{curr:f,prev:j})});let V=f.mtimeMs;if(f.size!==j.size||V>j.mtimeMs||V===0)F9(Q.listeners,(B)=>B(J,f))})},L9.set(z,Q);return()=>{if(JQ(Q,SZ,G),JQ(Q,kG,X),k5(Q.listeners))L9.delete(z),A5(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var b5=C(()=>{yH=process.platform,O9=yH==="win32",uC=yH==="darwin",EC=yH==="linux",wC=yH==="freebsd",C5=TC()==="OS400",w1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},bz=w1,hC={lstat:IC,stat:g5},vC=[SZ,kH,kG],mC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),bH=new Map;L9=new Map});import{EventEmitter as lC}from"events";import{stat as $C,Stats as hd}from"fs";import{readdir as aC,stat as _C}from"fs/promises";import*as H1 from"path";function TH(J){return Array.isArray(J)?J:[J]}function Jk(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=H1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!H1.isAbsolute(Y)}return!1};return()=>!1}function zk(J){if(typeof J!=="string")throw Error("string expected");J=H1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(u5,"/"),z)J="/"+J;return J}function S5(J,z,Y){let Z=zk(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function Yk(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=TH(J).map((G)=>Jk(G));if(z==null)return(G,X)=>{return S5(Z,G,X)};return S5(Z,z)}class w5{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==x5&&J!==rC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await aC(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(H1.dirname(Y),H1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=IH,this.items=Gk,Object.freeze(this)}}class P5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(eC,""),this.watchPath=Z,this.fullWatchPath=H1.resolve(Z),this.dirParts=[],this.dirParts.forEach((G)=>{if(G.length>1)G.pop()}),this.followSymlinks=z,this.statMethod=z?Xk:Qk}entryPath(J){return H1.join(this.watchPath,H1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function v5(J,z={}){let Y=new h5(z);return Y.add(J),Y}var R9="/",pC="//",x5=".",rC="..",oC="string",sC,u5,tC,eC,g9=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),I5=(J)=>{let z=TH(J).flat();if(!z.every((Y)=>typeof Y===oC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(E5)},y5=(J)=>{let z=J.replace(sC,R9),Y=!1;if(z.startsWith(pC))Y=!0;if(z=z.replace(u5,R9),Y)z=R9+z;return z},E5=(J)=>y5(H1.normalize(y5(J))),T5=(J="")=>(z)=>{if(typeof z==="string")return E5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},Zk=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},Gk,Xk="stat",Qk="lstat",h5;var m5=C(()=>{O5();b5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */sC=/\\/g,u5=/\/\//g,tC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,eC=/^\.[/\\]/;Gk=Object.freeze(new Set);h5=class h5 extends lC{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?TH(J.ignored):TH([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(C5)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let G=process.env.CHOKIDAR_USEPOLLING;if(G!==void 0){let H=G.toLowerCase();if(H==="false"||H==="0")Z.usePolling=!1;else if(H==="true"||H==="1")Z.usePolling=!0;else Z.usePolling=!!H}let X=process.env.CHOKIDAR_INTERVAL;if(X)Z.interval=Number.parseInt(X,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=IH,this._readyEmitted=!0,process.nextTick(()=>this.emit(w1.READY))},this._emitRaw=(...H)=>this.emit(w1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new A9(this),Object.freeze(Z)}_addIgnoredPath(J){if(g9(J)){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let G=I5(J);if(Z)G=G.map((X)=>{return Zk(X,Z)});if(G.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=G.length,Promise.all(G.map(async(X)=>{let Q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((X)=>{if(this.closed)return;X.forEach((Q)=>{if(Q)this.add(H1.dirname(Q),H1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=I5(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!H1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=H1.join(Y,Z);Z=H1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let G=(this.options.cwd?H1.relative(this.options.cwd,Y):Y)||x5;J[G]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==w1.ERROR)this.emit(w1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(O9)z=H1.normalize(z);if(Z.cwd)z=H1.relative(Z.cwd,z);let G=[z];if(Y!=null)G.push(Y);let X=Z.awaitWriteFinish,Q;if(X&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(Z.atomic){if(J===w1.UNLINK)return this._pendingUnlinks.set(z,[J,...G]),setTimeout(()=>{this._pendingUnlinks.forEach((H,f)=>{this.emit(...H),this.emit(w1.ALL,...H),this._pendingUnlinks.delete(f)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===w1.ADD&&this._pendingUnlinks.has(z))J=w1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===w1.ADD||J===w1.CHANGE)&&this._readyEmitted){let H=(f,j)=>{if(f)J=w1.ERROR,G[0]=f,this.emitWithAll(J,G);else if(j){if(G.length>1)G[1]=j;else G.push(j);this.emitWithAll(J,G)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,H),this}if(J===w1.CHANGE){if(!this._throttle(w1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===w1.ADD||J===w1.ADD_DIR||J===w1.CHANGE)){let H=Z.cwd?H1.join(Z.cwd,z):z,f;try{f=await _C(H)}catch(j){}if(!f||this.closed)return;G.push(f)}return this.emitWithAll(J,G),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(w1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let G=Z.get(z);if(G)return G.count++,!1;let X,Q=()=>{let f=Z.get(z),j=f?f.count:0;if(Z.delete(z),clearTimeout(X),f)clearTimeout(f.timeoutObject);return j};X=setTimeout(Q,Y);let H={timeoutObject:X,clear:Q,count:0};return Z.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let G=this.options.awaitWriteFinish;if(typeof G!=="object")return;let X=G.pollInterval,Q,H=J;if(this.options.cwd&&!H1.isAbsolute(J))H=H1.join(this.options.cwd,J);let f=new Date,j=this._pendingWrites;function V(B){$C(H,(K,L)=>{if(K||!j.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(B&&L.size!==B.size)j.get(J).lastChange=A;let O=j.get(J);if(A-O.lastChange>=z)j.delete(J),Z(void 0,L);else Q=setTimeout(V,X,L)})}if(!j.has(J))j.set(J,{lastChange:f,cancelWait:()=>{return j.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&tC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(T5(Y)),Q=[...[...this._ignoredPaths].map(T5(Y)),...G];this._userIgnored=Yk(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new P5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new w5(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=H1.join(J,z),G=H1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(G),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((B)=>this._remove(Z,B));let H=this._getWatchedDir(J),f=H.has(z);if(H.remove(z),this._symlinkPaths.has(G))this._symlinkPaths.delete(G);let j=Z;if(this.options.cwd)j=H1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(j)){if(this._pendingWrites.get(j).cancelWait()===w1.ADD)return}this._watched.delete(Z),this._watched.delete(G);let V=Y?w1.UNLINK_DIR:w1.UNLINK;if(f&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=H1.dirname(J);this._getWatchedDir(z).remove(H1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:w1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=M5(J,Y);return this._streams.add(Z),Z.once(N5,()=>{Z=void 0}),Z.once(M9,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as qk,statSync as Hk}from"fs";import{basename as c5,dirname as fk,join as jk}from"path";function xH(J){if(J.debounceMs<=0)return()=>{};let z=fk(J.filePath),Y=new Set([c5(J.filePath),...J.matchBasenames??[]]),Z=null,G=null,X=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,Q()},J.debounceMs),Z.unref?.()},f=(V)=>{if(!Y.has(c5(V)))return;H()},j=(V)=>{try{let B=Hk(jk(z,V));return`${B.mtimeMs}:${B.size}`}catch{return null}};try{qk(z,{recursive:!0});let V=new Map;for(let B of Y)V.set(B,j(B));G=v5(z,{depth:0,ignoreInitial:!0}),G.on("add",f),G.on("change",f),G.on("unlink",f),G.on("error",J.onError),G.once("ready",()=>{for(let B of Y)if(j(B)!==V.get(B)){H();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,Z)clearTimeout(Z),Z=null;let V=G;G=null,V?.close().catch(J.onError)}}var N9=C(()=>{m5()});import{homedir as Bk}from"os";import{basename as Wk,join as Vk}from"path";function k9(J=process.env.KOBE_HOME_DIR??Bk()){return Vk(J,".kobe","settings","keybindings.yaml")}function d5(J,z={}){let Y=z.debounceMs??C9;if(Y<=0)return()=>{};let Z=z.path??k9(),G=Wk(Z),X=G.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),xH({filePath:Z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(f){u1("keybindings-watcher",f)}},onError:(f)=>u1("keybindings-watcher",f)})}var C9=200;var n5=C(()=>{N9()});class b9{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??Kk,this.log=J.log??iz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var Kk=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var i5=()=>{};import{spawn as Uk}from"child_process";function gk(J,z,Y){return new Promise((Z)=>{let G="",X="",Q=!1,H=(j,V)=>{if(Q)return;Q=!0,Z({status:j,stdout:G,stderr:X,spawnError:V})},f=Uk("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});f.stdout?.on("data",(j)=>{G+=String(j)}),f.stderr?.on("data",(j)=>{X+=String(j)}),f.on("error",()=>H(null,!Y.aborted)),f.on("close",(j)=>H(j,!1))})}function Ck(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(r1(J.repo)||r1(J.worktreePath))return!1;return!0}async function kk(J,z){let Y=z.tickMs??zQ,Z=z.rand,G={tickMs:Y,settledMs:Lk,noPrMs:Dk,noRemoteMs:Ok,failureBaseMs:Fk,failureCapMs:Mk,jitterRatio:Ak},X=[];for(let Q of J.listTasks()){if(!Ck(Q)){z.schedule.delete(Q.id);continue}let H=z.schedule.get(Q.id);if(H&&z.now<H.nextAllowedAt)continue;let f=H?.failures??0;try{let j=await z.run(Q.worktreePath,Q.branch);if(j.kind==="error"){iz("pr-status-poller",`gh pr view failed (${j.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,NX({kind:"error",error:j.error},f,z.now,G,Z));continue}if(j.kind==="empty"){z.schedule.set(Q.id,NX({kind:"empty"},f,z.now,G,Z));continue}let V=BK(j.view,z.at),B=J.getTask(Q.id);if(!B){z.schedule.delete(Q.id);continue}if(!wq(B.prStatus,V??void 0))await J.setPRStatus(Q.id,V),X.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,NX({kind:"pr",settled:K},f,z.now,G,Z))}catch(j){u1("pr-status-poller",j),z.schedule.set(Q.id,NX({kind:"error",error:"network"},f,z.now,G,Z))}}return X}function l5(J,z=zQ,Y,Z=Nk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,kk(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:z}).catch((f)=>u1("pr-status-poller",f)).finally(()=>{X=!1})},z);return H.unref?.(),()=>clearInterval(H)}var zQ=30000,Dk=300000,Lk=600000,Fk,Mk=900000,Ok=1800000,Ak=0.2,Rk=1e4,Nk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},Rk);try{let X=await gk(["pr","view",z,"--json",jK],J,Y.signal);if(X.status===0&&!Z)try{let Q=JSON.parse(X.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return JB({parseError:!0})}return JB({spawnError:X.spawnError,timedOut:Z,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(G)}};var $5=C(()=>{zB();C1();Fk=zQ});function yk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Tk(J,z,Y,Z){let G=await tZ(z,J),X=await Y.latestCompletion(J);return{mtimeMs:G,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function xk(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(r1(Y.repo)||r1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??o1)}return z}class a5{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=xk(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){u1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:LX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=LX(z);let Z=this.options.cadence??{timeoutMs:bk,slowRetryMs:Sk,minIntervalMs:Ik},G=this.options.run??Tk,X=Y;ZG(X,Z,(Q)=>G(J,X.vendor,X.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&yk(X.value,Q))return;X.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function _5(J,z,Y=S9,Z){if(Y<=0)return()=>{};let G=new a5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var S9=1500,bk=4000,Sk=60000,Ik=1500;var p5=C(()=>{Fq();GG();Mq();C1();zz()});import{readFileSync as uk}from"fs";import{homedir as Ek}from"os";import{basename as wk,join as Pk}from"path";function y9(J=process.env.KOBE_HOME_DIR??Ek()){return Pk(J,".config","kobe","state.json")}function r5(J){let z={};try{let j=JSON.parse(uk(J,"utf8"));if(j&&typeof j==="object"&&!Array.isArray(j))z=j}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vk.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,H=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,f=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:G,locale:f,sortMode:X,keysCollapsed:Q,projectFilter:H}}function mk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function o5(J,z={}){let Y=z.debounceMs??I9;if(Y<=0)return()=>{};let Z=z.pollMs??hk,G=z.statePath??y9(),X=wk(G),Q=r5(G);return J.publish("ui-prefs",Q),xH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let f=r5(G);if(mk(Q,f))return;Q=f,J.publish("ui-prefs",f)}catch(f){u1("ui-prefs-watcher",f)}},onError:(f)=>u1("ui-prefs-watcher",f)})}var I9=200,hk=250,vk;var s5=C(()=>{N9();vk=["primary","success","info"]});function bG(J){return IZ.includes(J)?J:"auto"}var IZ,t5,BY="editor.kind",cY="editor.customCommand",uH="auto";var EH=C(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],t5=["nvim","vim","emacs","nano"]});function TZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var WY="settings.surface",yZ="chattab";function e5(J){return J>="0"&&J<="7"}function z6(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let Q of ck.encode(Z))Y.push(Q);Z=""}},X=z+1;while(X<J.length){let Q=J[X];if(Q==='"'){X++;break}if(Q==="\\"){let H=J[X+1];if(H===void 0){Z+="\\",X++;continue}switch(H){case"a":G(),Y.push(7),X+=2;break;case"b":G(),Y.push(8),X+=2;break;case"t":G(),Y.push(9),X+=2;break;case"n":G(),Y.push(10),X+=2;break;case"v":G(),Y.push(11),X+=2;break;case"f":G(),Y.push(12),X+=2;break;case"r":G(),Y.push(13),X+=2;break;case'"':Z+='"',X+=2;break;case"\\":Z+="\\",X+=2;break;default:if(e5(H)){let f="",j=X+1;while(j<J.length&&f.length<3&&e5(J[j]))f+=J[j],j++;G(),Y.push(Number.parseInt(f,8)&255),X=j}else Z+=H,X+=2;break}}else Z+=Q,X++}return G(),{value:dk.decode(new Uint8Array(Y)),end:X}}function xZ(J){if(J.length===0||J[0]!=='"')return J;return z6(J,0).value}function Y6(J,z){if(J[0]==='"'){let Z=z6(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:xZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:xZ(J.slice(Y+z.length))}}function nk(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),G=J.indexOf(" => ",z);if(Z>z&&G>=0&&G<Z){let X=J.slice(0,z),Q=J.slice(z+1,G),H=J.slice(G+4,Z),f=J.slice(Z+1);return{path:X+H+f,origPath:X+Q+f}}}let Y=Y6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:xZ(J)}}function wH(J){let z=[];for(let Y of J.split(`
|
|
66
|
-
`)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let G=Z[0],X=Z[1];if(Z[2]!==" ")continue;let
|
|
67
|
-
`)){let Z=Y.replace(/\r$/,"");if(Z.length===0)continue;let G=Z.indexOf("\t");if(G<0)continue;let X=Z.indexOf("\t",G+1);if(X<0)continue;let
|
|
28
|
+
`)&&J.endsWith("</INSTRUCTIONS>")}var V7=()=>{};function K7(J,z={}){let Y=TB(J.input_tokens,0),Z=TB(J.cached_input_tokens,0),G=TB(J.output_tokens,0),X=Math.max(0,Y-Z);if(Y<=0&&G<=0&&Z<=0)return;return{input_tokens:X,output_tokens:G,...Z>0?{cache_read_input_tokens:Z}:{},...IR(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function TB(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function IR(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as SR,stat as yR,unlink as Eh}from"fs/promises";import{homedir as TR}from"os";import qZ from"path";async function wB(J=HZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let G of Y){let X=qZ.join(z,G),q=(await J.readdir(X)).sort().reverse();for(let H of q){let j=qZ.join(X,H),B=(await J.readdir(j)).sort().reverse();for(let V of B){let f=qZ.join(j,V),K=(await J.readdir(f)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(qZ.join(f,L)),Z.length>=U7){if(!D7)D7=!0,console.warn(`[codex history] rollout scan truncated at ${U7} files; older sessions may be omitted`);return Z}}}}return Z}async function xR(J,z=HZ){if(!J)return;let Y=J.toLowerCase(),Z=await wB(z);for(let G of Z)if(qZ.basename(G).match(O7)?.[1]?.toLowerCase()===Y)return G;return}function uR(J){for(let z of J.split(`
|
|
29
|
+
`)){let Y=z.trim();if(!Y)continue;if(!bY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function A7(J,z){let Y=L7.get(z);if(!Y)Y=new Map,L7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let G;try{G=await z.readFile(J)}catch{return null}let X=uR(G);if(X)Y.set(J,X);return X}async function R7(J,z=HZ){if(!J)return[];let Y=await wB(z),Z=[],G=0;for(let X of Y){if(G>=ER)break;if(G++,await A7(X,z)!==J)continue;let q=qZ.basename(X).match(O7)?.[1];if(q)Z.push(q)}return Z.reverse()}async function PB(J,z=HZ){if(!J)return null;let Y=await wB(z),Z=0;for(let G of Y){if(Z>=wR)break;if(Z++,await A7(G,z)!==J)continue;try{return{path:G,mtimeMs:(await z.stat(G)).mtimeMs}}catch{}}return null}async function g7(J,z=HZ){return(await PB(J,z))?.mtimeMs??0}async function N7(J,z=HZ){return(await PR(J,z)).messages}async function PR(J,z=HZ){let Y=await xR(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let G=hR(vR(Z,J)),X=iR(Z);return{messages:G,...X?{usageMetrics:X}:{}}}function hR(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 vR(J,z){let Y=[];for(let Z of J.split(`
|
|
30
|
+
`)){let G=Z.trim();if(!G)continue;if(!bY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;if(X.type!=="response_item")continue;let q=DX(X.payload)?X.payload:void 0;if(!q)continue;let H=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),j=mR(q,H,z);if(j)Y.push(j)}return Y}function mR(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let G=yB(J.content);if(Z==="user"&&W7(G))return;return{role:Z,blocks:G,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return cR(J,z,Y);if(J.type==="function_call")return xB(J,z,Y,{name:EB(J.name,"function_call"),input:uB(J.arguments)});if(J.type==="custom_tool_call")return xB(J,z,Y,{name:EB(J.name,"custom_tool_call"),input:uB(J.input)});if(J.type==="tool_search_call")return xB(J,z,Y,{name:"tool_search_call",input:Wq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return M7(J,z,Y,uB(J.output));if(J.type==="tool_search_output")return M7(J,z,Y,Wq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return dR(J,z,Y);return}function cR(J,z,Y){let Z=nR(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function xB(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function M7(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function dR(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",G=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,X=EB(J.name,Z),q=Wq(J,["type","call_id","status"]),H=Wq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:q},{type:"tool_result",callId:G,output:H,isError:!1}]}}function nR(J){let z=F7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return F7(J.summary)}function F7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!DX(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function Wq(J,z){let Y={};for(let[Z,G]of Object.entries(J))if(!z.includes(Z))Y[Z]=G;return Y}function EB(J,z){return typeof J==="string"&&J.length>0?J:z}function uB(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function iR(J){let z,Y=null;for(let Z of J.split(`
|
|
31
|
+
`)){let G=Z.trim();if(!G)continue;if(!bY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;let q=typeof X.timestamp==="string"?lR(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let H=DX(X.usage)?X.usage:void 0;if(!H)continue;let j=K7(H);if(!j)continue;if(q!==null&&(Y===null||q>Y))Y=q,z=j;else if(Y===null)z=j}return z}function lR(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function DX(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var HZ,U7=5000,D7=!1,O7,L7,ER=200,wR=12;var hB=k(()=>{BX();V7();HZ={sessionsDir(){return qZ.join(TR(),".codex","sessions")},async readdir(J){try{return await SR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:yR};O7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;L7=new WeakMap});import{homedir as $R}from"os";import{join as aR}from"path";function _R(){return aR($R(),".codex","hooks.json")}var k7,lh,vB;var b7=k(()=>{IB();k7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],lh=k7.map((J)=>J.event);vB=class vB extends UX{vendor="codex";eventMap=k7;globalSettingsPath(){return _R()}}});function I7(J){if(!Vq(J))return;let z=Vq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,G=0;for(let q of Object.values(z)){if(!Vq(q)||!Vq(q.usage))continue;Y+=Kq(q.usage.inputTokens,0),Z+=Kq(q.usage.outputTokens,0),G+=Kq(q.usage.cacheReadTokens,0)}let X=Kq(J.currentTokens,0);if(Y===0&&Z===0&&G===0&&X===0)return;return{input_tokens:Y,output_tokens:Z,...G>0?{cache_read_input_tokens:G}:{},...X>0?{context_tokens:X}:{}}}function Vq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Kq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as pR,rm as rR,stat as oR}from"fs/promises";import{homedir as sR}from"os";import TY from"path";async function cB(J=jZ){let z=TY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>TY.join(z,Z))}async function S7(J,z=jZ){let Y=[];for(let Z of await cB(z)){let G=await dB(Z,z);if(G.cwd!==J)continue;Y.push({id:G.id??TY.basename(Z),updatedAt:G.updatedAt??""})}return Y.sort((Z,G)=>Z.updatedAt.localeCompare(G.updatedAt)).map((Z)=>Z.id)}async function y7(J,z=jZ){if(!J)return 0;let Y=0;for(let Z of await cB(z)){if((await dB(Z,z)).cwd!==J)continue;try{let{mtimeMs:X}=await z.stat(TY.join(Z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function tR(J,z=jZ){let Y=await eR(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(TY.join(Y,"events.jsonl")).catch(()=>""),G=z2(Z,J);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function T7(J,z=jZ){return(await tR(J,z)).messages}async function eR(J,z=jZ){for(let Y of await cB(z)){if(TY.basename(Y)===J)return Y;let Z=await dB(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function dB(J,z=jZ){let Y=await z.readFile(TY.join(J,"workspace.yaml")).catch(()=>"");return J2(Y)}function J2(J){let z={};for(let Y of J.split(`
|
|
32
|
+
`)){let Z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Z)continue;let G=Z[1],X=Z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');z[G]=X}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function z2(J,z){let Y=[],Z=new Map,G=z,X,q=null;for(let H of J.split(`
|
|
33
|
+
`)){let j=H.trim();if(!j)continue;if(!bY(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!mB(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),f=mB(B.data)?B.data:{};if(B.type==="session.start"){let K=typeof f.sessionId==="string"?f.sessionId:void 0;if(K)G=K;continue}if(B.type==="user.message"){let K=typeof f.content==="string"?f.content:"";if(!K)continue;if(!q)q=Buffer.from(K.slice(0,Y2),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:G});continue}if(B.type==="assistant.message"){let K=[],L=typeof f.content==="string"?f.content:"";if(L)K.push({type:"text",text:L});let O=Array.isArray(f.toolRequests)?f.toolRequests:[];for(let A of O){if(!mB(A))continue;let C=typeof A.id==="string"?A.id:typeof A.toolCallId==="string"?A.toolCallId:"tool",E=typeof A.name==="string"?A.name:typeof A.toolName==="string"?A.toolName:"tool";K.push({type:"tool_call",callId:C,name:E,input:A.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:G});continue}if(B.type==="tool.execution_start"){let K=typeof f.toolCallId==="string"?f.toolCallId:void 0,L=typeof f.toolName==="string"?f.toolName:"tool";if(K)Z.set(K,L);continue}if(B.type==="tool.execution_complete"){let K=typeof f.toolCallId==="string"?f.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof f.toolName==="string"?f.toolName:"tool"),O=f.result??(f.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:O,isError:f.success===!1}],timestamp:V,sessionId:G});continue}if(B.type==="session.shutdown")X=I7(f)}return{messages:Y,usageMetrics:X,firstUserMessage:q}}function mB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var jZ,Y2=200;var x7=k(()=>{BX();jZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return TY.join(sR(),".copilot")},async readdir(J){try{return await pR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:oR,async rm(J){await rR(J,{recursive:!0,force:!0})}}});function nB(J){return l1(J).createHookAdapter()}class Uq{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var iB=k(()=>{QY()});import{readFile as u7}from"fs/promises";class Dq{supportsCompletionMarkers(){return!0}}function LX(J){return l1(J).createTurnDetector()}function Q2(J,z="claude",Y=0){let Z=null,G=0;for(let X of J.split(`
|
|
34
|
+
`)){G++;let q=E7(X);if(!q)continue;let H=P7(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let j=w7(q,Y),B={id:`claude:${z}:${j}:${G}`,timestampMs:j,source:"claude"};if(!Z||B.timestampMs>=Z.timestampMs)Z=B}return Z}function q2(J,z="codex"){let Y=null,Z=0;for(let G of J.split(`
|
|
35
|
+
`)){Z++;let X=E7(G);if(!X||X.type!=="turn.completed")continue;let q=w7(X,0),H={id:`codex:${z}:${q}:${Z}`,timestampMs:q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function E7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return P7(Y)?Y:null}catch{return null}}function w7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function P7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var G2,lB,X2,$B,Lq;var Mq=k(()=>{AB();hB();QY();G2={listSessionFiles:(J)=>fX(J),readFile:(J)=>u7(J,"utf8")};lB=class lB extends Dq{deps;vendor="claude";cache=new Map;constructor(J=G2){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let G of z.slice(0,4)){let X=this.cache.get(G.path),q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)q=X.marker;else{let H=await this.deps.readFile(G.path).catch(()=>"");q=Q2(H,G.path,G.mtimeMs)}if(Z.set(G.path,{mtimeMs:G.mtimeMs,marker:q}),q&&(!Y||q.timestampMs>Y.timestampMs))Y=q}return this.cache=Z,Y}};X2={findLatestRollout:(J)=>PB(J),readFile:(J)=>u7(J,"utf8")};$B=class $B extends Dq{deps;vendor="codex";cache=null;constructor(J=X2){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=q2(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Lq=class Lq extends Dq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function V2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:H2,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Uq(J),createTurnDetector:()=>new Lq(J)}}function l1(J){return fJ(J)?W2[J]:V2(J)}var H2,j2,B2,f2,W2;var QY=k(()=>{p1();GZ();AB();f7();hB();b7();x7();iB();Mq();H2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},j2={async listSessionIdsForWorktree(J){return[...await fX(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>aV(J),latestTranscriptMtimeForWorktree:(J)=>$V(J)},B2={listSessionIdsForWorktree:(J)=>R7(J),readHistory:(J)=>N7(J),latestTranscriptMtimeForWorktree:(J)=>g7(J)},f2={listSessionIdsForWorktree:(J)=>S7(J),readHistory:(J)=>T7(J),latestTranscriptMtimeForWorktree:(J)=>y7(J)},W2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:j2,detectAccount:(J)=>Zq(J),createHookAdapter:()=>new SB,createTurnDetector:()=>new lB},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:B2,detectAccount:(J)=>Gq(J),createHookAdapter:()=>new vB,createTurnDetector:()=>new $B},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:f2,detectAccount:(J)=>Xq(J),createHookAdapter:()=>new Uq("copilot"),createTurnDetector:()=>new Lq("copilot")}}});async function tZ(J,z){if(!z)return 0;return l1(J).history.latestTranscriptMtimeForWorktree(z)}var Fq=k(()=>{QY()});function h7(J){return typeof J==="string"&&K2.includes(J)}var MX=(J)=>J,s1="claude",K2;var zz=k(()=>{K2=["backlog","in_progress","in_review","done","canceled","error"]});function Oq(J){return U2.includes(J)}function v7(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 U2;var Aq=k(()=>{U2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function D2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return m7;let z=Number(J);return Number.isFinite(z)&&z>0?z:m7}class aB{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=D2(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let G=v7(Z?.state,z,Y),X=this.now(),q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")q.lapse=this.armLapse(J,X);this.activity.set(J,q),this.bus.publish("engine-state",this.payload(J,q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let G=this.activity.get(J);if(!G||G.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){G.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var m7=600000;var c7=k(()=>{Aq()});function d7(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Rq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function n7(J){let z=J.find((G)=>G.role==="user");if(!z)return"";let Y=z.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),Z=d7(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function eZ(J,z=s1){if(!J)return"";let{history:Y}=l1(z),Z=await Y.listSessionIdsForWorktree(J);for(let G of Z.slice(0,L2)){let X=n7(await Y.readHistory(G));if(X)return X}return""}async function i7(J,z){if(!z)return"";try{return n7(await l1(J).history.readHistory(z))}catch{return""}}var L2=8;var gq=k(()=>{QY();zz()});function l7(J){let z=String(J),Y=z.length-1;return x1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function rB(J){x1.context=J}function M2(){return{...x1.context,id:x1.getNextContextId(),count:0}}function BZ(J,z){let Y=O1,Z=_0,G=J.length===0,X=z===void 0?Z:z,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},H=G?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>e1(()=>xY(q)));Fz.afterCreateOwner&&Fz.afterCreateOwner(q),_0=q,O1=null;try{return uJ(H,!0)}finally{O1=Y,_0=Z}}function p(J,z){z=z?Object.assign({},bq,z):bq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(t7(Y),Fz.afterCreateSignal)Fz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(j0&&j0.running&&j0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return sB(Y,G)};return[e7.bind(Y),Z]}function $7(J,z,Y){let Z=YG(J,z,!0,mJ,Y);if(zG&&j0&&j0.running)t1.push(Z);else WZ(Z)}function wz(J,z,Y){let Z=YG(J,z,!1,mJ,Y);if(zG&&j0&&j0.running)t1.push(Z);else WZ(Z)}function d0(J,z,Y){s7=T2;let Z=YG(J,z,!1,mJ,Y),G=AX&&cJ(AX);if(G)Z.suspense=G;if(!Y||!Y.render)Z.user=!0;FJ?FJ.push(Z):WZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},bq,Y):bq;let Z=YG(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,zG&&j0&&j0.running)Z.tState=mJ,t1.push(Z);else WZ(Z);return e7.bind(Z)}function N2(J){return J&&typeof J==="object"&&"then"in J}function fZ(J,z,Y){let Z,G,X;if(typeof z==="function")Z=J,G=z,X=Y||{};else Z=!0,G=J,X=z||{};let q=null,H=_B,j=null,B=!1,V=!1,f="initialValue"in X,K=typeof Z==="function"&&U0(Z),L=new Set,[O,A]=(X.storage||p)(X.initialValue),[C,E]=p(void 0),[y,N]=p(void 0,{equals:!1}),[g,F]=p(f?"ready":"unresolved");if(x1.context){if(j=x1.getNextContextId(),X.ssrLoadFrom==="initial")H=X.initialValue;else if(x1.load&&x1.has(j))H=x1.load(j)}function w(J0,q0,D0,K0){if(q===J0){if(q=null,K0!==void 0&&(f=!0),(J0===H||q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(K0,{value:q0}));if(H=_B,j0&&J0&&B)j0.promises.delete(J0),B=!1,uJ(()=>{j0.running=!0,l(q0,D0)},!1);else l(q0,D0)}return q0}function l(J0,q0){uJ(()=>{if(q0===void 0)A(()=>J0);F(q0!==void 0?"errored":f?"ready":"unresolved"),E(q0);for(let D0 of L.keys())D0.decrement();L.clear()},!1)}function d(){let J0=AX&&cJ(AX),q0=O(),D0=C();if(D0!==void 0&&!q)throw D0;if(O1&&!O1.user&&J0)$7(()=>{if(y(),q){if(J0.resolved&&j0&&B)j0.promises.add(q);else if(!L.has(J0))J0.increment(),L.add(J0)}});return q0}function s(J0=!0){if(J0!==!1&&V)return;V=!1;let q0=K?K():Z;if(B=j0&&j0.running,q0==null||q0===!1){w(q,e1(O));return}if(j0&&q)j0.promises.delete(q);let D0,K0=H!==_B?H:e1(()=>{try{return G(q0,{value:O(),refetching:J0})}catch(T0){D0=T0}});if(D0!==void 0){w(q,void 0,kq(D0),q0);return}else if(!N2(K0))return w(q,K0,void 0,q0),K0;if(q=K0,"v"in K0){if(K0.s===1)w(q,K0.v,void 0,q0);else w(q,void 0,kq(K0.v),q0);return K0}return V=!0,queueMicrotask(()=>V=!1),uJ(()=>{F(f?"refreshing":"pending"),N()},!1),K0.then((T0)=>w(K0,T0,void 0,q0),(T0)=>w(K0,void 0,kq(T0),q0))}Object.defineProperties(d,{state:{get:()=>g()},error:{get:()=>C()},loading:{get(){let J0=g();return J0==="pending"||J0==="refreshing"}},latest:{get(){if(!f)return d();let J0=C();if(J0&&!q)throw J0;return O()}}});let P=_0;if(K)$7(()=>(P=_0,s(!1)));else s(!1);return[d,{refetch:(J0)=>k2(P,()=>s(J0)),mutate:A}]}function Tq(J){return uJ(J,!1)}function e1(J){if(!JG&&O1===null)return J();let z=O1;O1=null;try{if(JG)return JG.untrack(J);return J()}finally{O1=z}}function JJ(J,z,Y){let Z=Array.isArray(J),G,X=Y&&Y.defer;return(q)=>{let H;if(Z){H=Array(J.length);for(let B=0;B<J.length;B++)H[B]=J[B]()}else H=J();if(X)return X=!1,q;let j=e1(()=>z(H,G,q));return G=H,j}}function ZJ(J){d0(()=>e1(J))}function b1(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 C2(J,z){if(FX||(FX=Symbol("error")),_0=YG(void 0,void 0,!0),_0.context={..._0.context,[FX]:[z]},j0&&j0.running)j0.sources.add(_0);try{return J()}catch(Y){gX(Y)}finally{_0=_0.owner}}function xq(){return O1}function k2(J,z){let Y=_0,Z=O1;_0=J,O1=null;try{return uJ(z,!0)}catch(G){gX(G)}finally{_0=Y,O1=Z}}function b2(J){if(j0&&j0.running)return J(),j0.done;let z=O1,Y=_0;return Promise.resolve().then(()=>{O1=z,_0=Y;let Z;if(zG||AX)Z=j0||(j0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((G)=>Z.resolve=G)),Z.running=!0;return uJ(J,!1),O1=_0=null,Z?Z.done:void 0})}function _7(J,z){let Y=YG(()=>e1(()=>{return Object.assign(J,{[R2]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,WZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function t7(J){if(_0){if(_0.sourceMap)_0.sourceMap.push(J);else _0.sourceMap=[J];J.graph=_0}if(Fz.afterRegisterGraph)Fz.afterRegisterGraph(J)}function Pz(J,z){let Y=Symbol("context");return{id:Y,Provider:x2(Y,z),defaultValue:J}}function cJ(J){let z;return _0&&_0.context&&(z=_0.context[J.id])!==void 0?z:J.defaultValue}function I2(J){let z=U0(J),Y=U0(()=>oB(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function e7(){let J=j0&&j0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===mJ)WZ(this);else{let z=t1;t1=null,uJ(()=>Iq(this),!1),t1=z}if(O1){let z=this.observers;if(!z||z[z.length-1]!==O1){let Y=z?z.length:0;if(!O1.sources)O1.sources=[this],O1.sourceSlots=[Y];else O1.sources.push(this),O1.sourceSlots.push(Y);if(!z)this.observers=[O1],this.observerSlots=[O1.sources.length-1];else z.push(O1),this.observerSlots.push(O1.sources.length-1)}}if(J&&j0.sources.has(this))return this.tValue;return this.value}function sB(J,z,Y){let Z=j0&&j0.running&&j0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(j0){let G=j0.running;if(G||!Y&&j0.sources.has(J))j0.sources.add(J),J.tValue=z;if(!G)J.value=z}else J.value=z;if(J.observers&&J.observers.length)uJ(()=>{for(let G=0;G<J.observers.length;G+=1){let X=J.observers[G],q=j0&&j0.running;if(q&&j0.disposed.has(X))continue;if(q?!X.tState:!X.state){if(X.pure)t1.push(X);else FJ.push(X);if(X.observers)zK(X)}if(!q)X.state=mJ;else X.tState=mJ}if(t1.length>1e6){if(t1=[],F2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function WZ(J){if(!J.fn)return;xY(J);let z=yq;if(p7(J,j0&&j0.running&&j0.sources.has(J)?J.tValue:J.value,z),j0&&!j0.running&&j0.sources.has(J))queueMicrotask(()=>{uJ(()=>{j0&&(j0.running=!0),O1=_0=J,p7(J,J.tValue,z),O1=_0=null},!1)})}function p7(J,z,Y){let Z,G=_0,X=O1;O1=_0=J;try{Z=J.fn(z)}catch(q){if(J.pure)if(j0&&j0.running)J.tState=mJ,J.tOwned&&J.tOwned.forEach(xY),J.tOwned=void 0;else J.state=mJ,J.owned&&J.owned.forEach(xY),J.owned=null;return J.updatedAt=Y+1,gX(q)}finally{O1=X,_0=G}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)sB(J,Z,!0);else if(j0&&j0.running&&J.pure){if(!j0.sources.has(J))J.value=Z;j0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function YG(J,z,Y,Z=mJ,G){let X={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:_0,context:_0?_0.context:null,pure:Y};if(j0&&j0.running)X.state=0,X.tState=Z;if(_0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(_0!==g2)if(j0&&j0.running&&_0.pure)if(!_0.tOwned)_0.tOwned=[X];else _0.tOwned.push(X);else if(!_0.owned)_0.owned=[X];else _0.owned.push(X);if(G&&G.name)X.name=G.name;if(JG&&X.fn){let q=X.fn,[H,j]=p(void 0,{equals:!1}),B=JG.factory(q,j);b1(()=>B.dispose());let V,f=()=>b2(j).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),j0&&j0.running){if(!V)V=JG.factory(q,f);return V.track(K)}return B.track(K)}}return Fz.afterCreateOwner&&Fz.afterCreateOwner(X),X}function RX(J){let z=j0&&j0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===OX)return Iq(J);if(J.suspense&&e1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<yq)){if(z&&j0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let G=J,X=Y[Z+1];while((G=G.owner)&&G!==X)if(j0.disposed.has(G))return}if((z?J.tState:J.state)===mJ)WZ(J);else if((z?J.tState:J.state)===OX){let G=t1;t1=null,uJ(()=>Iq(J,Y[0]),!1),t1=G}}}function uJ(J,z){if(t1)return J();let Y=!1;if(!z)t1=[];if(FJ)Y=!0;else FJ=[];yq++;try{let Z=J();return S2(Y),Z}catch(Z){if(!Y)FJ=null;t1=null,gX(Z)}}function S2(J){if(t1){if(zG&&j0&&j0.running)y2(t1);else JK(t1);t1=null}if(J)return;let z;if(j0){if(!j0.promises.size&&!j0.queue.size){let{sources:Z,disposed:G}=j0;FJ.push.apply(FJ,j0.effects),z=j0.resolve;for(let X of FJ)"tState"in X&&(X.state=X.tState),delete X.tState;j0=null,uJ(()=>{for(let X of G)xY(X);for(let X of Z){if(X.value=X.tValue,X.owned)for(let q=0,H=X.owned.length;q<H;q++)xY(X.owned[q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}a7(!1)},!1)}else if(j0.running){j0.running=!1,j0.effects.push.apply(j0.effects,FJ),FJ=null,a7(!0);return}}let Y=FJ;if(FJ=null,Y.length)uJ(()=>s7(Y),!1);else Fz.afterUpdate&&Fz.afterUpdate();if(z)z()}function JK(J){for(let z=0;z<J.length;z++)RX(J[z])}function y2(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=j0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),uJ(()=>{j0.running=!0,RX(Y)},!1),j0&&(j0.running=!1)})}}function T2(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)RX(Z);else J[Y++]=Z}if(x1.context){if(x1.count){x1.effects||(x1.effects=[]),x1.effects.push(...J.slice(0,Y));return}rB()}if(x1.effects&&(x1.done||!x1.count))J=[...x1.effects,...J],Y+=x1.effects.length,delete x1.effects;for(z=0;z<Y;z++)RX(J[z])}function Iq(J,z){let Y=j0&&j0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let G=J.sources[Z];if(G.sources){let X=Y?G.tState:G.state;if(X===mJ){if(G!==z&&(!G.updatedAt||G.updatedAt<yq))RX(G)}else if(X===OX)Iq(G,z)}}}function zK(J){let z=j0&&j0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=OX;else Z.state=OX;if(Z.pure)t1.push(Z);else FJ.push(Z);Z.observers&&zK(Z)}}}function xY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),q=Y.observerSlots.pop();if(Z<G.length)X.sourceSlots[q]=Z,G[Z]=X,Y.observerSlots[Z]=q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)xY(J.tOwned[z]);delete J.tOwned}if(j0&&j0.running&&J.pure)YK(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)xY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(j0&&j0.running)J.tState=0;else J.state=0;delete J.sourceMap}function YK(J,z){if(!z)J.tState=0,j0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)YK(J.owned[Y])}function kq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function r7(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){gX(Z,Y&&Y.owner||null)}}function gX(J,z=_0){let Y=FX&&z&&z.context&&z.context[FX],Z=kq(J);if(!Y)throw Z;if(FJ)FJ.push({fn(){r7(Z,Y,z)},state:mJ});else r7(Z,Y,z)}function oB(J){if(typeof J==="function"&&!J.length)return oB(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=oB(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let G=0;G<Z.length;G++)z.push(Z[G]);else z.push(Z)}return z}return J}function x2(J,z){return function(Z){let G;return wz(()=>G=e1(()=>{return _0.context={..._0.context,[J]:Z.value},I2(()=>Z.children)}),void 0,z),G}}function o7(J){for(let z=0;z<J.length;z++)J[z]()}function E2(J,z,Y={}){let Z=[],G=[],X=[],q=0,H=z.length>1?[]:null;return b1(()=>o7(X)),()=>{let j=J()||[],B=j.length,V,f;return j[Sq],e1(()=>{let L,O,A,C,E,y,N,g,F;if(B===0){if(q!==0)o7(X),X=[],Z=[],G=[],q=0,H&&(H=[]);if(Y.fallback)Z=[u2],G[0]=BZ((w)=>{return X[0]=w,Y.fallback()}),q=1}else if(q===0){G=Array(B);for(f=0;f<B;f++)Z[f]=j[f],G[f]=BZ(K);q=B}else{A=Array(B),C=Array(B),H&&(E=Array(B));for(y=0,N=Math.min(q,B);y<N&&Z[y]===j[y];y++);for(N=q-1,g=B-1;N>=y&&g>=y&&Z[N]===j[g];N--,g--)A[g]=G[N],C[g]=X[N],H&&(E[g]=H[N]);L=new Map,O=Array(g+1);for(f=g;f>=y;f--)F=j[f],V=L.get(F),O[f]=V===void 0?-1:V,L.set(F,f);for(V=y;V<=N;V++)if(F=Z[V],f=L.get(F),f!==void 0&&f!==-1)A[f]=G[V],C[f]=X[V],H&&(E[f]=H[V]),f=O[f],L.set(F,f);else X[V]();for(f=y;f<B;f++)if(f in A){if(G[f]=A[f],X[f]=C[f],H)H[f]=E[f],H[f](f)}else G[f]=BZ(K);G=G.slice(0,q=B),Z=j.slice(0)}return G});function K(L){if(X[f]=L,H){let[O,A]=p(f,{name:"index"});return H[f]=A,z(j[f],O)}return z(j[f])}}}function ZK(J,z){if(w2){if(x1.context){let Y=x1.context;rB(M2());let Z=_7(J,z||{});return rB(Y),Z}}return _7(J,z||{})}function Nq(){return!0}function pB(J){return!(J=typeof J==="function"?J():J)?{}:J}function h2(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function uq(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Mz in H,J[q]=typeof H==="function"?(z=!0,U0(H)):H}if(A2&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=pB(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in pB(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(pB(J[H])));return[...new Set(q)]}},P2);let Y={},Z=Object.create(null);for(let q=J.length-1;q>=0;q--){let H=J[q];if(!H)continue;let j=Object.getOwnPropertyNames(H);for(let B=j.length-1;B>=0;B--){let V=j[B];if(V==="__proto__"||V==="constructor")continue;let f=Object.getOwnPropertyDescriptor(H,V);if(!Z[V])Z[V]=f.get?{enumerable:!0,configurable:!0,get:h2.bind(Y[V]=[f.get.bind(H)])}:f.value!==void 0?f:void 0;else{let K=Y[V];if(K){if(f.get)K.push(f.get.bind(H));else if(f.value!==void 0)K.push(()=>f.value)}}}}let G={},X=Object.keys(Z);for(let q=X.length-1;q>=0;q--){let H=X[q],j=Z[H];if(j&&j.get)Object.defineProperty(G,H,j);else G[H]=j?j.value:void 0}return G}function Z1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(E2(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function z0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=Z();if(G){let X=J.children;return typeof X==="function"&&X.length>0?e1(()=>X(z?G:()=>{if(!e1(Z))throw v2("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function GK(J){let z;if(x1.context&&x1.load)z=x1.load(x1.getContextId());let[Y,Z]=p(z,{name:"errored"});return Cq||(Cq=new Set),Cq.add(Z),b1(()=>Cq.delete(Z)),U0(()=>{let G;if(G=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(G);return typeof X==="function"&&X.length?e1(()=>X(G,()=>Z())):X}return C2(()=>J.children,Z)},void 0,{name:"value"})}var x1,F2=!0,O2=(J,z)=>J===z,Mz,A2,Sq,R2,bq,FX=null,s7,mJ=1,OX=2,g2,_B,_0=null,j0=null,zG=null,JG=null,O1=null,t1=null,FJ=null,yq=0,Fz,Av,a7,AX,u2,w2=!1,P2,v2=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,Cq,XK;var V1=k(()=>{x1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return l7(this.context.count)},getNextContextId(){return l7(this.context.count++)}};Mz=Symbol("solid-proxy"),A2=typeof Proxy==="function",Sq=Symbol("solid-track"),R2=Symbol("solid-dev-component"),bq={equals:O2},s7=JK,g2={},_B={},Fz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Av,a7]=p(!1);u2=Symbol("fallback");P2={get(J,z,Y){if(z===Mz)return Y;return J.get(z)},has(J,z){if(z===Mz)return!0;return J.has(z)},set:Nq,deleteProperty:Nq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Nq,deleteProperty:Nq}},ownKeys(J){return J.keys()}};XK={hooks:Fz,writeSignal:sB,registerGraph:t7};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 m2}from"child_process";function tB(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function eB(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function QK(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),G=(Y()*2-1)*J*Z;return Math.max(0,J+G)}function qK(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function ZG(J,z,Y,Z){let G=Date.now();if(!eB(J,G))return!1;J.inFlight=!0;let X=new AbortController,q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let H,j=!1;try{H=await Y(X.signal),j=!0}catch{}clearTimeout(q);let B=X.signal.aborted;if(J.nextAllowedAt=tB(G,Date.now(),B,z),J.inFlight=!1,j&&!B)Z(H)})(),!0}function qY(J,z,Y){return new Promise((Z)=>{let G="",X=!1,q=(j)=>{if(X)return;X=!0,Z({status:j,stdout:G})},H=m2(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(j)=>{G+=String(j)}),H.on("error",()=>q(null)),H.on("close",(j)=>q(j))})}var GG=()=>{};function c2(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 d2(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(Z==="SUCCESS")return"passing";if(Z==="PENDING"||Z==="EXPECTED")return"pending";if(Z==="FAILURE"||Z==="ERROR")return"failing";return"unknown"}function n2(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=d2(Z);if(G==="failing")return"failing";if(G==="pending")z=!0;else if(G==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function jK(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:c2(J.state,J.reviewDecision),checkState:n2(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function wq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function Eq(J,z){return z.some((Y)=>J.includes(Y))}function Jf(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(Eq(z,a2))return{kind:"empty"};if(Eq(z,i2))return{kind:"error",error:"no-remote"};if(Eq(z,l2))return{kind:"error",error:"auth"};if(Eq(z,$2))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+QK(H,Z.jitterRatio,G);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(Z.noRemoteMs),failures:0};let q=z+1;return{nextAllowedAt:X(qK(Z.failureBaseMs,q-1,Z.failureCapMs)),failures:q}}var HK="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",i2,l2,$2,a2;var zf=k(()=>{GG();i2=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],l2=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],$2=["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"],a2=["no pull requests found","no open pull requests","no pull request found"]});var Yf,Zf,Gf,Xf="DIRTY_WORKTREE",Qf,qf;var Hf=k(()=>{Yf=class Yf 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"}};Zf=class Zf extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};Gf=class Gf extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};Qf=class Qf extends Error{taskId;constructor(J){super(`${Xf}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};qf=class qf 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 BK;var fK=k(()=>{BK=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});import{existsSync as _2}from"fs";function WK(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>$Q(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:hQ(J.host,J.user,J.port)}}function XG(J){let z=JY(J);if(!z)return new lQ;return new iZ(WK(z))}function HY(J){for(let z of Object.values(fB()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(WK(z));return new lQ}function VK(J){return J&&o1(J)?J:void 0}function uY(J){return HY(J).isRemote||_2(J)}function c1(J){return HY(J).isRemote?rJ():J}var Oz=k(()=>{r1();C1();YB();XB()});import{isAbsolute as p2,join as r2,resolve as o2}from"path";function jf(J){if(typeof J!=="string")return null;let z=J.trim();if(!z)return null;let Y=rJ();if(z==="~")return Y;let Z=z.startsWith("~/")?r2(Y,z.slice(2)):z;return p2(Z)?Z:o2(Y,Z)}function KK(){let J=MJ()[Pq];return jf(typeof J==="string"?J:null)}var Pq="worktree.basePath";var Bf=k(()=>{r1();sz()});import{createHash as s2}from"crypto";import DK from"fs";import OJ from"path";function zg(){return KK()??OJ.join(WJ(),LK)}function Yg(){return OJ.join(WJ(),LK)}function MK(J){if(!OJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return OJ.join(zg(),CK(J))}function FK(J){if(!OJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=MK(J),Y=OJ.join(Yg(),CK(J));return[...z===Y?[z]:[z,Y],...Jg.map((G)=>OJ.join(J,G))]}function OK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return OJ.join(MK(J),z)}async function AK(J){if(o1(J)){let Y=JY(J)?.basePath;if(!Y)return[];return XG(J).readdir(gK(Y))}let z=new Set;for(let Y of FK(J))try{for(let Z of DK.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function ff(J,z){if(!OJ.isAbsolute(J)||!OJ.isAbsolute(z))return null;let Y=UK(z);for(let Z of FK(J)){let G=UK(Z),X=OJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!OJ.isAbsolute(X))return Z}return null}function RK(J,z){return ff(J,z)!==null}function gK(J){return`${Zg(J)}/.kobe/worktrees`}function NK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${gK(J)}/${z}`}function Zg(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function UK(J){try{return DK.realpathSync(J)}catch{return OJ.resolve(J)}}function CK(J){let Y=(OJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=s2("sha1").update(OJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var LK="worktrees",t2=".kobe/worktrees",e2=".claude/worktrees",Jg;var Wf=k(()=>{r1();Oz();C1();Bf();Jg=[t2,e2]});class Vf{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??BK,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((G)=>!z.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,G),G}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${Z}-v${G}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await AK(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 kK=k(()=>{fK();Wf()});var IK={};q1(IK,{PLACEHOLDER_TASK_TITLE:()=>hz,Orchestrator:()=>hq});import{realpathSync as Gg}from"fs";import{basename as Xg,resolve as Qg}from"path";function bK(J){return JY(J)?.basePath??J}class hq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new Vf((X)=>this.store.list().filter((q)=>q.repo===X&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[z,Y]=p(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[Z,G]=p(null);this.activeTaskAcc=Z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??hz).trim()||hz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??s1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=CX(J),Z=this.store.list().find((q)=>q.kind==="main"&&CX(q.repo).key===Y);if(Z)return Z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{let q=hJ(S1("lastSelectedVendor"),vJ());return await this.store.create({repo:z,title:qg(z),branch:"",worktreePath:bK(z),status:"backlog",kind:"main",vendor:q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return bK(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Rq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),G;try{G=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:G.path,branch:Y})}catch(X){throw await this.rollbackWorktree(G.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),G.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Rq(hz,J.id))return;let Y=Rq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new Yf(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(wq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new Gf;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new Qf(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(G){throw new qf(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=CX(J).key;for(let Y of SJ())if(CX(Y).key===z)jB(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(CX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>QG(Z.worktreePath)));return z.filter((Z)=>!Y.has(QG(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=QG(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((H)=>H.worktreePath&&QG(H.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(J.repo)).find((H)=>QG(H.path)===z);if(!G)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||G.branch,q=(J.title??Xg(G.path)).trim()||hz;return this.store.create({repo:J.repo,title:q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:J.vendor??s1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new Zf(String(J));return z}}function qg(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function CX(J){let z=tz(J);return{repo:z,key:o1(z)?z:QG(z)}}function QG(J){try{return Gg(J)}catch{return Qg(J)}}var hz="(new task)";var kX=k(()=>{V1();zf();C1();zz();p1();Hf();kK()});function qG(J,z,Y){if(!z)return J;let Z=XG(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function $1(){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}=${Y1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var bX="@kobe_remote";var VZ=k(()=>{Oz();Lz()});function vq(){return fz(KZ,!1)}var KZ="experimental.autoStatus";var IX=k(()=>{sz()});function Kf(){return fz(UZ,!1)}var UZ="experimental.dispatcher";var mq=k(()=>{sz()});import{randomUUID as Hg}from"crypto";function Az(J){return`engineCommand.${J}`}function Rz(J){return`engineName.${J}`}function DZ(J){return S1(Rz(J))?.trim()||Uf[J]||J}function SX(J){return l1(J??"claude").defaultCommand}function jg(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function dJ(J,z){let Y=J??"claude",Z=S1(Az(Y))?.trim(),G=(()=>{if(Z){let X=jg(Z);if(X.length>0)return X}return SX(Y)})();return Bg(G,Y,z)}function Bg(J,z,Y){let Z=Y?.trim();if(!Z)return J;let G=z??"claude";if(!l1(G).effortLevels?.includes(Z))return J;if(G==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function HG(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>fg.has(Z)))return{argv:J,sessionId:null};let Y=Hg();return{argv:[...J,"--session-id",Y],sessionId:Y}}function LZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...T1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function Wg(J,z=LZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
|
|
36
|
+
`)}function Vg(J,z=LZ()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${z} note --task-id ${J} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
|
|
37
|
+
`)}function Kg(J,z=LZ(),Y={}){let Z=[];if((Y.status??vq)())Z.push(Wg(J,z));if((Y.notes??Kf)())Z.push(Vg(J,z));return Z.length>0?Z.join(`
|
|
38
|
+
|
|
39
|
+
`):null}function cq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let G=Kg(Y,LZ(),Z);if(!G)return J;return[...J,"--append-system-prompt",G]}function Ug(J,z=LZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${z} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${z} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
|
|
40
|
+
`)}function dq(J,z,Y,Z=Kf){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",Ug(Y)]}var Uf,fg;var Yz=k(()=>{XY();QY();IX();mq();C1();p1();Uf=Object.fromEntries(eY.map((J)=>[J,l1(J).displayName]));fg=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var SK={};q1(SK,{archivedHistoryPreviewEnabled:()=>Df,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function Df(){return fz(yX,!1)}var yX="experimental.archivedHistoryPreview";var nq=k(()=>{sz()});import{spawnSync as Dg}from"child_process";function yK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of Lg)if(z(Y.binary))return Y.command;return null}return null}function xK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of Mg)for(let Z of Fg)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var Lg,TK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return Dg(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},Mg,Fg;var uK=k(()=>{Lg=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];Mg=["copy-mode","copy-mode-vi"],Fg=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as EK,readFileSync as Og}from"fs";function wK(){MZ=null}function Ag(){let J=eW();if(EK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(EK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function iq(){if(MZ)return MZ;let{canonical:J,found:z}=Ag();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=Og(z,"utf8");Z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${z}: ${X}`)}return MZ={path:J,exists:!0,doc:Z,warnings:Y},MZ}var MZ=null;var Lf=k(()=>{r1()});function jG(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function Ig(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let Z=Y.split("+"),G=Z.pop()??"";if(G===""&&Z.length>0){if(G="+",Z[Z.length-1]==="")Z.pop()}if(!G)return{error:`"${J}": no key after the modifiers`};let X=new Set;for(let j of Z){let B=Ng[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};X.add(B)}if(G=Cg[G]??G,X.has("shift")&&G.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=bg.filter((j)=>X.has(j)).join("+"),H=q?`${q}+${G}`:G;if(G.length>1&&!kg.has(G))return{chord:H,warning:`"${J}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:H}}function lq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Sg(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function yg(J){if(!lq(J))return null;let z=J.bindings;if(lq(z))return z;return J}function $q(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!lq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(J.bindings!==void 0)if(lq(J.bindings))X.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of Sg(z)){let H=J[q];if(H===void 0)continue;let j=yg(H);if(j)X.push(j);else Z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of X)for(let[H,j]of Object.entries(q)){if(j===null||j===!1||Array.isArray(j)&&j.length===0){G.set(H,[]);continue}let B=typeof j==="string"?[j]:Array.isArray(j)?j:null;if(!B){Z.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof j}`);continue}let V=[],f=!1;for(let K of B){if(typeof K!=="string"){Z.push(`${H}: chord entries must be strings`),f=!0;continue}let L=Ig(K,Y?.chordOptsFor?.(H));if("error"in L){Z.push(`${H}: ${L.error}`),f=!0;continue}if(L.warning)Z.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&f){Z.push(`${H}: no valid chords \u2014 keeping the default`);continue}G.set(H,V)}return{entries:Array.from(G,([q,H])=>({id:q,keys:H})),warnings:Z}}function Tg(J,z){return J===z||J==="global"||z==="global"}function PK(J,z){let Y=[],Z=[];for(let G of z){let X=J.find((f)=>f.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=Mf[G.id];if(q){Y.push(`${G.id}: not customizable \u2014 ${q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let H=Rg[G.id];if(H&&G.keys.length>0){let f=H.validateCount(G.keys.length);if(f){Y.push(`${G.id}: ${f} \u2014 keeping the default`);continue}}let j=G.keys.filter((f)=>{if(f.length===1&&gg.has(X.scope))return Y.push(`${G.id}: "${f}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(j.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&j.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let B=X.keys,V=X;if(V.keys=j,X.hint)if(j.length===0)V.hint=void 0;else X.hint.keys=j.join("/");Z.push({id:G.id,keys:j,defaultKeys:B})}for(let G of Z)for(let X of G.keys){let q=J.find((H)=>H.id===G.id);if(!q)continue;for(let H of J){if(H.id===G.id)continue;if(!H.keys.includes(X))continue;if(!Tg(q.scope,H.scope))continue;Y.push(`${G.id}: "${X}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var Mf,Rg,gg,Ng,Cg,kg,bg;var aq=k(()=>{Mf={"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)"};Rg={"sidebar.nav":jG("down","up"),"files.nav":jG("down","up"),"sidebar.search.nav":jG("down","up"),"files.hierarchy":jG("collapse","expand"),"sidebar.view":jG("previous view","next view"),"files.tab":jG("previous tab","next tab")},gg=new Set(["global","workspace","terminal"]),Ng={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},Cg={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},kg=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}`)]),bg=["ctrl","cmd","alt","shift"]});function BG(J){return J in hK}function AZ(J,z){let Y=J.split("+"),Z=Y.pop()??"";if(Z===""&&Y.length>0){if(Z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(Z.length===1)X=G.has("shift")?Z.toUpperCase():Z;else{let j=ug[Z];if(!j)return{error:`"${J}": tmux can't bind the key "${Z}"`};X=j}let q=/^f\d+$/.test(Z);if(G.size===0&&!q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let H="";if(G.has("ctrl"))H+="C-";if(G.has("alt"))H+="M-";if(G.has("shift"))H+="S-";return{key:H+X}}function mK(){let J={};for(let[Y,Z]of Object.entries(OZ)){let G=AZ(Z,{allowBare:BG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);J[Y]={chord:Z,key:G.key}}let z=EY.map((Y)=>{let Z=AZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function Ff(J){let z=mK(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===vz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(vz);continue}if(Z.keys.length!==EY.length){z.warnings.push(`${vz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let H=[],j=!0;for(let B of Z.keys){let V=AZ(B);if("error"in V){z.warnings.push(`${vz}: ${V.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:V.key})}if(!j)continue;z.focus=H,Y.add(vz);continue}if(!(Z.id in OZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let G=Z.id;if(Z.keys.length===0){z.binds[G]=null,Y.add(G);continue}if(Z.keys.length>1)z.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let X=Z.keys[0],q=AZ(X,{allowBare:BG(G)});if("error"in q){z.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(X!==OZ[G])Y.add(G);z.binds[G]={chord:X,key:q.key}}return z.overridden=Y,z}function Of(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function cK(){FZ=null}function _q(){if(FZ)return FZ;let J=iq();if(!J.exists||J.doc===null)return FZ=mK(),FZ;let z=$q(J.doc,process.platform,{chordOptsFor:Of}),Y=z.warnings.filter((G)=>G.startsWith("tmux.")),Z=Ff(z.entries);Z.warnings=[...Y,...Z.warnings];for(let G of Z.warnings)console.warn(`[kobe/keybindings] ${G}`);return FZ=Z,FZ}var xg,hK,vK,OZ,vz="tmux.focus",EY,ug,FZ=null;var pq=k(()=>{Lf();aq();xg={"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"},hK={"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"},vK=["F6","F7","F8","F9","F10","F11"],OZ={...xg,...hK};EY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],ug={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function TX(J,z){let Y=null;for(let G=0;G<24;G++){let X=await fG(J);if(X){if(!z)return{pane:X,ready:!0};let q=(await WG(X)).trim();if(q.length>0&&q===Y)return{pane:X,ready:!0};Y=q}await dK(250)}return{pane:await fG(J)||await Af(J),ready:!1}}async function xX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await n0(["set-buffer","-b",Y,"--",z]),await n0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await dK(Eg),await uX(J,"Enter")}async function nK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var dK=(J)=>new Promise((z)=>setTimeout(z,J)),Eg=150;var rq=k(()=>{P1()});function iK(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var VG;var oq=k(()=>{VG={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var KG;var sq=k(()=>{KG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var UG;var tq=k(()=>{UG={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var DG;var eq=k(()=>{DG={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var LG;var JH=k(()=>{LG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var MG;var zH=k(()=>{MG={$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 FG;var YH=k(()=>{FG={$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 lK;var $K=k(()=>{oq();sq();tq();eq();JH();zH();YH();lK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:FG,"osaka-jade":MG}});function ng(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,G,X]=Y;return`#${Z}${Z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function aK(J,z,Y="dark"){let Z=J.defs??{};function G(q,H){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return ng(q);if(H.includes(q))return null;let B=Z[q]??J.theme[q];if(B===void 0)return null;return G(B,[...H,q])}if(!q||typeof q!=="object")return null;let j=q[Y];return typeof j==="string"?G(j,H):null}let X=J.theme[z];if(X===void 0)return null;return G(X,[z])}function ZH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function GH(J){if(!ZH(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!ZH(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!ZH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,G]of Object.entries(z.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${Z} must be a string (hex like "#abc" or a ref name)`}}for(let[Z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!ZH(G))return{ok:!1,reason:`theme.${Z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${Z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${Z}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var Rf=()=>{};import{readFileSync as ig,readdirSync as lg}from"fs";import{join as _K}from"path";function OG(){return _K(WJ(),"themes")}function EX(){let J=OG(),z;try{z=lg(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=_K(J,Z),X;try{let j=ig(G,"utf8");X=JSON.parse(j)}catch(j){let B=j instanceof Error?j.message:String(j);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${B}`);continue}let q=GH(X);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let H=Z.slice(0,-5);Y.push({name:H,theme:q.theme})}return Y}var XH=k(()=>{r1();Rf()});import{readFileSync as $g}from"fs";function _g(){try{let J=JSON.parse($g(oJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&ag.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 pg(J){return EX().find((Y)=>Y.name===J)?.theme??lK[J]??null}function gz(J,...z){for(let Y of z){let Z=aK(J,Y);if(Z)return Z}return null}function pK(J,z){let Y=gz(J,"text"),Z=gz(J,"background"),G=gz(J,"textMuted","text"),X=gz(J,"backgroundPanel","background"),q=gz(J,"backgroundElement","backgroundPanel","background"),H=gz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=gz(J,"selectedListItemText","background"),B=gz(J,z,"primary","borderActive","border","text");return{border:gz(J,"border","text"),activeBorder:B,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:B,activityFg:gz(J,"info","primary","text"),bellFg:gz(J,"warning","error","primary","text"),messageBg:H,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:j??Z}}function Zz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function oK(J){let z=Zz({bg:J.statusBg,fg:J.statusFg}),Y=Zz({bg:J.statusBg,fg:J.statusMutedFg}),Z=Zz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function rg(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of oK(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);Z.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=Z.join(",");if(G!==J.marker)Y.push(G?["set-option","-g",gf,G]:["set-option","-gu",gf]);return Y}async function rK(J){let{code:z,stdout:Y}=await p0(J);return z===0?Y.trim():""}async function RZ(){try{let J=_g(),z=J.enabled?pg(J.themeName):null,Y=z?pK(z,J.focusAccentSlot):pK({theme:{}},J.focusAccentSlot),Z=oK(Y),[G,...X]=await Promise.all([rK(["show-options","-gqv",gf]),...Z.map((j)=>rK(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Z.map((j,B)=>[j.key,X[B]??""])),H=rg({marker:G,current:q,hexes:Y});if(H.length>0)await a1(H)}catch{}}var gf="@kobe_border_theme",ag;var QH=k(()=>{r1();P1();$K();XH();ag=["primary","success","info"]});function sK(){return fz(qH,!0)}function HH(){return fz(tK,!1)}function eK(J){BV(tK,J)}var qH="zen.keepTasks",tK="zen.active";var Nf=k(()=>{sz()});var jH={};q1(jH,{recordGen:()=>wY,isLatestGen:()=>GU,genAgeMs:()=>YN,coalesceLayoutWork:()=>ZN,RESIZE_GUARD_MS:()=>zN,LAYOUT_COALESCE_MS:()=>YU});import{createHash as og,randomUUID as sg}from"crypto";import{mkdirSync as tg,readFileSync as JU,renameSync as eg,writeFileSync as JN}from"fs";import{join as zU}from"path";function ZU(){return zU(WJ(),"layout-coord")}function Cf(J,z){let Y=og("sha1").update(J).digest("hex").slice(0,16);return zU(ZU(),`${Y}.${z}`)}function wY(J,z){let Y=sg();try{tg(ZU(),{recursive:!0});let Z=Cf(J,z),G=`${Z}.${Y}.tmp`;JN(G,`${Date.now()}
|
|
41
|
+
${Y}`),eg(G,Z)}catch{}return Y}function GU(J,z,Y){try{return JU(Cf(J,z),"utf8").split(`
|
|
42
|
+
`)[1]?.trim()===Y}catch{return!0}}function YN(J,z,Y=Date.now()){try{let Z=Number.parseInt(JU(Cf(J,z),"utf8").split(`
|
|
43
|
+
`)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function ZN(J,z,Y,Z=YU){let G=wY(J,z);if(Z>0)await new Promise((X)=>setTimeout(X,Z));if(!GU(J,z,G))return;await Y()}var YU=120,zN=400;var AG=k(()=>{r1()});function XN(J){let z=[];for(let Y of J.split(`
|
|
44
|
+
`)){let Z=Y.trim();if(!Z)continue;let[G,X,q,H,j]=Z.split("\t");if(!G||!X||!q)continue;let B=Number.parseInt(j?.trim()??"",10);z.push({windowId:G.trim(),paneId:X.trim(),role:q.trim(),version:H?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return z}function QN(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function qN(J,z){return J.filter((Y)=>{let Z=QN(Y);return Z===null||z.has(Z)})}function XU(J,z){let Y=new Map;for(let G of J){let X=Y.get(G.windowId)??[];X.push(G),Y.set(G.windowId,X)}let Z=[];for(let G of Y.values()){let X=G.find((B)=>B.role==="claude")?.paneId,q=G.find((B)=>B.role==="tasks"),H=G.find((B)=>B.role==="ops");if(q&&(z.force||q.version!==z.currentVersion))Z.push({role:"tasks",paneId:q.paneId});let j=z.force?!0:X&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&j)Z.push({role:"ops",paneId:H.paneId,claudePaneId:X??null})}return Z}async function BH(J){let{code:z,stdout:Y}=await p0(["list-panes","-s","-t",`=${J}`,"-F",GN]);if(z!==0)return null;return XN(Y)}async function QU(J,z){if(z.length===0)return;let Y=await BH(J),Z=Y?qN(z,new Set(Y.map((G)=>G.paneId))):z;if(Z.length>0)await a1(Z)}function qU(J,z){let Y=T1(),Z=$1(),G=[];for(let X of J){let q=X.role==="tasks"?yY(Y,{initialTaskId:z.taskId}):oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:z.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",c1(z.cwd),xJ(Z+q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,Nz,J1])}return G}function HN(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function HU(J,z,Y,Z,G){let X=await BH(J);if(!X)return"no-engine-pane";let q=X.filter((f)=>f.role==="claude");if(q.length===0)return"no-engine-pane";let H=c1(z),j=rZ($1(),T1(),J),B=[];for(let f of q){let K=HG(Y,G),L=xJ(qG(TJ(K.argv),Z,z),j);B.push(["respawn-pane","-k","-c",H,"-t",f.paneId,L]),B.push(K.sessionId?["set-window-option","-t",f.paneId,mz,K.sessionId]:["set-window-option","-u","-t",f.paneId,mz])}let V=await a1(B);return HN(q.length,V)}async function jU(){return(await cz()).rightColumnResizeArgs}async function kf(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await cz(),G=await BH(J);if(!G)return{rows:null,commands:[]};let X=[];for(let q of G)if(q.role==="tasks"&&(z.force||q.paneWidth!==Y))X.push(["resize-pane","-t",q.paneId,"-x",`${Y}`]);if(Z.length>0){for(let q of G)if(q.role==="ops")X.push(["resize-pane","-t",q.paneId,...Z])}return{rows:G,commands:X}}async function gZ(J,z){wY(J,"resize");let{rows:Y,commands:Z}=await kf(J);if(!Y)return;let G=[...Z];if(z)G.push(...qU(XU(Y,{currentVersion:J1,force:!1,vendorChanged:z.vendorChanged}),z));await QU(J,G)}async function BU(J){if(!await K1(J))return;await gZ(J)}async function bf(J){let{code:z,stdout:Y}=await p0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Dz}} #{${yJ}}`]);if(z!==0)return;let Z=Y.split(`
|
|
45
|
+
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(Z.length===0)return;if(Z.some((B)=>B[5]?.trim()==="1"))return;if(Z.some((B)=>(B[6]?.trim()??"")!==""))return;if(Z.some((B)=>(B[7]?.trim()??"")!==""))return;if(!Z.some((B)=>B[0]?.trim()==="shell"))return;let G=Number.parseInt(Z[0][3]?.trim()??"",10),X=Number.parseInt(Z[0][4]?.trim()??"",10),q=[],H=Z.find(([B])=>B?.trim()==="tasks");if(H){let B=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",qq,`${NB(B)}`])}let j=Z.find(([B])=>B?.trim()==="ops");if(j&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let B=Number.parseInt(j[1]?.trim()??"",10),V=Number.parseInt(j[2]?.trim()??"",10),f=Number.isFinite(B)?XZ(100*B/G):null,K=Number.isFinite(V)?XZ(100*V/X):null;if(f!==null)q.push(["set-option","-s",Hq,`${f}`]);if(K!==null)q.push(["set-option","-s",jq,`${K}`])}if(q.length>0)await a1(q)}function jN(J){let z=J.split(`
|
|
46
|
+
`).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function fU(J){let{code:z,stdout:Y}=await p0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Dz}} #{${yJ}}`]);if(z!==0||!jN(Y))return;await bf(J)}async function RG(J){let z=await EJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,G=z["@kobe_vendor"]||void 0,X=await BH(J);if(!X)return;let q=qU(XU(X,{currentVersion:J1,force:!0}),{cwd:Y,taskId:Z,vendor:G});await QU(J,q),await RZ()}var Nz="@kobe_pane_version",GN;var wX=k(()=>{XY();Yz();Oz();P1();Lz();QH();NJ();VZ();AG();GN=`#{window_id} #{pane_id} #{@kobe_role} #{${Nz}} #{pane_width}`});var hf={};q1(hf,{syncSessionZen:()=>VH,runLayoutAction:()=>NZ,resolveShellPane:()=>fH,planWorkspaceSplit:()=>VU,parseLayoutPaneRows:()=>WU,expandedTerminalHeightPercent:()=>KU,engineTabExit:()=>bN,applyZenToNewWindow:()=>Pf});function WU(J){let z=[];for(let Y of J.split(`
|
|
47
|
+
`)){let Z=Y.trim();if(!Z)continue;let[G,X,q,H,j,B,V]=Z.split("\t");if(!G)continue;let f=Number.parseInt(H??"",10),K=Number.parseInt(j??"",10),L=Number.parseInt(B??"",10),O=Number.parseInt(V??"",10);z.push({paneId:G.trim(),role:X?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(f)?f:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(O)?O:0})}return z}function VU(J){let z=J.find((Z)=>Z.role===QZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===WX);if(Y.length+1>=gB)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 fH(J){return J.find((z)=>z.role===Uz)??J.find((z)=>z.role==="")}function KU(J){return 100-(XZ(J??Number.NaN)??KX)}async function nJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:G}=await p0(["list-panes","-t",Y,"-F",BN]);return Z===0?WU(G):null}async function If(J){let{code:z,stdout:Y}=await p0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
|
|
48
|
+
`)){let[G,X]=Z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function jY(J,z){let{code:Y,stdout:Z}=await p0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function yf(J,z,Y){await n0(["set-window-option","-t",J,z,Y])}async function PY(J,z){await n0(["set-window-option","-u","-t",J,z])}async function Tf(J){let{code:z,stdout:Y}=await p0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function E1(J,z){await n0(["display-message","-t",J,z])}async function WH(J){let z=await EJ(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 fN(J){let z=T1(),Y=$1();return xJ(Y+oZ({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function WN(J,z){return z?.trim()||await If(J)}async function VN(J,z){let Y=await nJ(J,z);if(!Y)return;let Z=VU(Y);if(Z.kind==="missing-engine"){await E1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await E1(z,`kobe: workspace split limit is ${gB} panes`);return}let{cwd:G}=await WH(J),{code:X,stdout:q}=await p0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",c1(G),"-P","-F","#{pane_id}",xJ("true")]),H=q.trim();if(X!==0||!H)return;await a1([["set-option","-p","-t",H,"@kobe_role",WX],["select-pane","-t",H]])}async function KN(J,z){let Y=await nJ(J,z);if(!Y)return;let Z=Y.filter((q)=>q.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace split to close");return}let X=Z.find((q)=>q.active)??Z[Z.length-1];if(!X)return;await n0(["kill-pane","-t",X.paneId])}async function UN(J,z){let Y=await nJ(J,z);if(!Y)return;let Z=Y.filter((G)=>G.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace splits to reset");return}await a1(Z.map((G)=>["kill-pane","-t",G.paneId]))}async function UU(){return(await cz()).tasksWidth}async function DN(J){let{cwd:z,taskId:Y}=await WH(J),Z=T1(),G=$1();return{cwd:z,command:xJ(G+yY(Z,{initialTaskId:Y}))}}async function DU(J,z){let Y=await nJ(J,z);if(!Y)return;let Z=Y.find((A)=>A.role===Kz);if(Z){await n0(["kill-pane","-t",Z.paneId]);return}let G=fH(Y),X=Y.find((A)=>A.role===QZ);if(!X){await E1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:j}=await WH(J),B=fN({cwd:q,taskId:H,vendor:j,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await LN()}%`,"-c",c1(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",X.paneId,"-l",`${await xf()}%`,"-c",c1(q),"-P","-F","#{pane_id}",B],{code:f,stdout:K}=await p0(V),L=K.trim();if(f!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",Kz],["set-option","-p","-t",L,Nz,J1]];if(G?.role==="")O.push(["set-option","-p","-t",G.paneId,"@kobe_role",Uz]);await a1(O)}async function LN(){return(await cz()).opsHeightPct}async function xf(){return(await cz()).rightColumnWidthPct}async function LU(){return KU((await cz()).opsHeightPct)}async function MN(J){let{code:z,stdout:Y}=await p0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
|
|
49
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function MU(J,z){let Y=await MN(J),Z=sV(z);while(Y.has(Z))Z++;return Z}async function FU(J){let z=VX(J);if(await K1(z))return z;return await n0(["new-session","-d","-s",z,"-n","hidden-panes","-c",c1(process.cwd()),"while :; do sleep 3600; done"]),z}async function uf(J){let z=VX(J);if(!await K1(z))return;let{code:Y,stdout:Z}=await p0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
|
|
50
|
+
`).some((X)=>{let q=X.trim();return q===Uz||q===eJ}))await n0(["kill-session","-t",`=${z}`])}async function FN(J,z){await OU(J,z,Dz)}async function ON(J,z){await OU(J,z,yJ)}async function OU(J,z,Y){let Z=await jY(z,Y);if(!Z)return;if(await Tf(Z))await n0(["kill-pane","-t",Z]);await PY(z,Y)}async function Sf(J,z){await FN(J,z),await ON(J,z),await uf(J)}function AU(J){return J.find((z)=>z.role===QZ)??J[0]}async function Ef(J,z,Y){let Z=AU(Y);if(!Z)return await E1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await UU(),{cwd:X,command:q}=await DN(J),{code:H,stdout:j}=await p0(["split-window","-h","-b","-t",Z.paneId,"-l",`${G}`,"-c",c1(X),"-P","-F","#{pane_id}",q]),B=j.trim();if(H!==0||!B)return!1;return await a1([["set-option","-p","-t",B,"@kobe_role",eJ],["set-option","-p","-t",B,Nz,J1],["select-pane","-t",B]]),await PY(z,yJ),await E1(z,"kobe: Tasks pane restored"),!0}async function RU(J,z,Y){let Z=await FU(J),G=await MU(Z,z),{code:X,stdout:q}=await p0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide Tasks pane");return}await yf(z,yJ,H),await E1(z,"kobe: Tasks pane hidden")}async function wf(J,z,Y){let Z=await nJ(J,z);if(!Z)return;if(!await Tf(Y)){await PY(z,yJ);let q=Z.find((H)=>H.role===eJ);if(q){await n0(["select-pane","-t",q.paneId]);return}await Ef(J,z,Z);return}let G=AU(Z);if(!G){await E1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await n0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await UU()}`])!==0){await E1(z,"kobe: could not restore Tasks pane");return}await a1([["set-option","-p","-t",Y,"@kobe_role",eJ],["set-option","-p","-t",Y,Nz,J1],["select-pane","-t",Y]]),await PY(z,yJ),await uf(J),await E1(z,"kobe: Tasks pane restored")}async function AN(J,z){let Y=await jY(z,yJ);if(Y){await wf(J,z,Y);return}let Z=await nJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await RU(J,z,G);return}await Ef(J,z,Z)}async function RN(J,z){let Y=await jY(z,yJ);if(Y){await wf(J,z,Y);return}let Z=await nJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await n0(["select-pane","-t",G.paneId]);return}await Ef(J,z,Z)}async function gU(J,z,Y){if(Y.role==="")await n0(["set-option","-p","-t",Y.paneId,"@kobe_role",Uz]);let Z=await FU(J),G=await MU(Z,z),{code:X,stdout:q}=await p0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide terminal pane");return}await yf(z,Dz,H),await E1(z,"kobe: Terminal pane hidden")}async function NU(J,z,Y){let Z=Y.find((V)=>V.role===Kz),G=Y.find((V)=>V.role===QZ);if(!Z&&!G)return await E1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await WH(J),q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await LU()}%`,"-c",c1(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await xf()}%`,"-c",c1(X),"-P","-F","#{pane_id}"],{code:H,stdout:j}=await p0(q),B=j.trim();if(H!==0||!B)return!1;return await n0(["set-option","-p","-t",B,"@kobe_role",Uz]),await PY(z,Dz),await E1(z,"kobe: Terminal pane restored"),!0}async function CU(J,z,Y){let Z=await nJ(J,z);if(!Z)return;if(!await Tf(Y)){await PY(z,Dz),await NU(J,z,Z);return}let G=Z.find((B)=>B.role===Kz),X=Z.find((B)=>B.role===QZ);if(!G&&!X){await E1(z,"kobe: cannot restore terminal pane in this layout");return}let q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await LU()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await xf()}%`];if(await n0(q)!==0){await E1(z,"kobe: could not restore terminal pane");return}await n0(["set-option","-p","-t",Y,"@kobe_role",Uz]),await PY(z,Dz),await uf(J),Z=await nJ(J,z);let j=Z?.find((B)=>B.paneId===Y);if(j)await n0(["select-pane","-t",j.paneId]);await E1(z,"kobe: Terminal pane restored")}async function gN(J,z){let Y=await jY(z,Dz);if(Y){await CU(J,z,Y);return}let Z=await nJ(J,z);if(!Z)return;let G=fH(Z);if(G){await gU(J,z,G);return}await NU(J,z,Z)}async function NN(J){let z=HH();if(eK(!z),z){await SU(J);return}await IU(J)}async function VH(J){if(!await K1(J))return;let z=HH(),Y=(await CZ(J,pZ)).length>0;if(z===Y)return;if(z)await IU(J);else await SU(J)}async function kU(J){let{code:z,stdout:Y}=await p0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
|
|
51
|
+
`).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function bU(J,z){return!!(await nJ(J,z))?.some((Z)=>Z.role===QZ)}async function IU(J){let z=await kU(J);for(let Y of z){if(!await bU(J,Y))continue;if(await jY(Y,SY))continue;await yU(J,Y)}await BY(J,pZ,"1"),await E1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function SU(J){let z=await kU(J);for(let Y of z){let Z=await jY(Y,SY);if(Z)await CN(J,Y,Z)}await n0(["set-option","-u","-t",J,pZ]),await E1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function Pf(J,z){let Y=(await CZ(J,pZ)).length>0;if(!Y&&!HH())return;if(!Y)await BY(J,pZ,"1");if(await jY(z,SY))return;if(!await bU(J,z))return;await yU(J,z)}async function yU(J,z){let Y=await nJ(J,z);if(!Y)return;let Z=[],G=Y.find((q)=>q.role===Kz);if(G)await n0(["kill-pane","-t",G.paneId]),Z.push(Kz);let X=fH(Y);if(X)await gU(J,z,X),Z.push(Uz);if(!sK()){let q=Y.find((H)=>H.role===eJ);if(q)await RU(J,z,q),Z.push(eJ)}if(Z.length===0){await E1(z,"kobe: already focused \u2014 nothing to hide");return}await yf(z,SY,Z.join(",")),await E1(z,"kobe: Zen mode on")}async function CN(J,z,Y){let Z=new Set(Y.split(",").map((G)=>G.trim()));if(Z.has(eJ)){let G=await jY(z,yJ);if(G)await wf(J,z,G)}if(Z.has(Kz)){let G=await nJ(J,z);if(G&&!G.some((X)=>X.role===Kz))await DU(J,z)}if(Z.has(Uz)){let G=await jY(z,Dz);if(G)await CU(J,z,G)}await PY(z,SY),await E1(z,"kobe: Zen mode off")}async function TU(J){let{code:z,stdout:Y}=await p0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
52
|
+
`).filter((Z)=>Z.trim().length>0).length}async function kN(J,z){if(await TU(J)<=1){await E1(z,"Cannot close the only ChatTab");return}await Sf(J,z),await n0(["kill-window","-t",z])}async function bN(J){if(!await K1(J))return;let z=await If(J);if(!z)return;if(await TU(J)>1){await Sf(J,z),await n0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (KH(),xU));if(await Y(J),await If(J)!==z)await Sf(J,z),await n0(["kill-window","-t",z])}async function NZ(J,z,Y={}){if(!await K1(J))return;let Z=await WN(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await VN(J,Z);return;case"workspace-close":await KN(J,Z);return;case"workspace-reset":await UN(J,Z);return;case"tasks-toggle":await AN(J,Z);return;case"tasks-restore":await RN(J,Z);return;case"ops-toggle":await DU(J,Z);return;case"terminal-toggle":await gN(J,Z);return;case"zen-toggle":await NN(J);return;case"chat-tab-close":await kN(J,Z);return}}var BN="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var hY=k(()=>{XY();Oz();Nf();P1();Lz();NJ();VZ();wX()});var xU={};q1(xU,{quickCreate:()=>cf,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,newChatTab:()=>mf,kobeStatusRight:()=>dX,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,buildPanesAround:()=>DH,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function hX(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function vX(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function mX(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function cX(J){return[["bind-key","-n",J,"command-prompt","-p",PX],["bind-key","T","command-prompt","-p",PX]]}function vf(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function dX(J){return`${[J.focusLeft?`${vf(J.focusLeft)} tasks`:null,J.detach?`${vf(J.detach)} detach`:null,J.newTab?`${vf(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function DH(J,z){let Y=$1(),Z=await LH(),G=xJ(z.opsCommand??Y+oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:X}=await _X([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,UH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",c1(z.cwd),"-P","-F","tasks=#{pane_id}",xJ(Y+yY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-CB}%`,"-c",c1(z.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-KX}%`,"-c",c1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),q=Object.fromEntries(X.split(`
|
|
53
|
+
`).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await a1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",eJ]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Nz,J1]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Kz]]:[],...q.ops?[["set-option","-p","-t",q.ops,Nz,J1]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Uz]]:[]]),q.ops){let H=await jU();if(H.length>0)await n0(["resize-pane","-t",q.ops,...H])}}async function mf(J,z){if(!await K1(J))return;let Y=await EJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",bX]),Z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[bX]||void 0,q=z??Y["@kobe_vendor"];if(z)await IN(J,G,z);let H=dJ(q),j=HG(H,q),B=T1(),f=(await p0(["new-window","-t",`=${J}`,"-c",c1(Z),"-P","-F","#{pane_id}",xJ(qG(TJ(j.argv),X,Z),rZ($1(),B,J))])).stdout.trim();if(!f)return;if(j.sessionId)await vY(f,mz,j.sessionId);await DH(f,{cwd:Z,taskId:G,inv:B,vendor:q});let{stdout:K}=await p0(["display-message","-p","-t",f,"#{window_id}"]),L=K.trim();if(L)await Pf(J,L)}async function iX(J){if(!await K1(J))return;let Y=(await EJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=T1(),X=`${$1()}${Z.map(Y1).join(" ")} settings`;await Cz(J,{cwd:c1(Y),command:X,name:"settings",surface:!0})}async function lX(J){if(!await K1(J))return;let Y=(await EJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=T1(),X=`${$1()}${Z.map(Y1).join(" ")} help-page`;await Cz(J,{cwd:c1(Y),command:X,name:"help",surface:!0})}async function $X(J,z){if(!await K1(J))return;let Z=(await EJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=T1(),X=$1(),q=z?` --repo ${Y1(z)}`:"",H=`${X}${G.map(Y1).join(" ")} new-task${q}`;await Cz(J,{cwd:c1(Z),command:H,name:"new task",surface:!0})}async function aX(J){if(!await K1(J))return;let Y=(await EJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=T1(),X=`${$1()}${G7({cliInvocation:Z})}`;await Cz(J,{cwd:c1(Y),command:X,name:"update",surface:!0})}async function cf(J){if(!await K1(J))return;let Y=(await EJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=T1(),X=`${$1()}${Z.map(Y1).join(" ")} quick-task --session ${Y1(J)}`;await Cz(J,{cwd:c1(Y),command:X,name:"quick task",surface:!0})}async function IN(J,z,Y){if(await BY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (CJ(),MH)),G=await Z();try{await G.request("task.setVendor",{taskId:z,vendor:Y})}finally{G.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var PX,UH="@kobe_tab_state",gG="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",nX;var KH=k(()=>{XY();Yz();Oz();P1();Lz();p1();NJ();VZ();hY();wX();PX=`engine (${_1.join("/")}/\u2026)`;nX=gG});var wJ={};q1(wJ,{tmuxWindowSizeArgsForClient:()=>lf,tmuxSessionName:()=>y1,tmuxInitialSizeArgs:()=>EU,tmuxInitialClientSize:()=>nf,tmuxAvailable:()=>dz,switchClientBeforeKill:()=>nz,sessionExists:()=>K1,selectTasksPane:()=>wN,runLayoutAction:()=>NZ,resyncWindowToClient:()=>TN,refreshKobeWorkspacePanes:()=>RG,quickCreate:()=>cf,prepareWindowForSwitch:()=>vU,prepareWindowForAttach:()=>FH,parseTmuxClientRows:()=>wU,parseObservedSession:()=>cU,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,observeSessionVendor:()=>af,newChatTab:()=>mf,kobeStatusRight:()=>dX,killSession:()=>Gz,healSessionLayout:()=>BU,focusBindCommand:()=>mU,enterWindow:()=>yN,ensureSession:()=>pX,currentSessionName:()=>PJ,clientsWithConflictingSize:()=>PU,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,captureGlobalLayoutOnDrag:()=>fU,captureGlobalLayout:()=>bf,attachArgv:()=>NG,PANE_VERSION_OPTION:()=>Nz,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function EU(J=process.stdout,z=process.env){let Y=nf(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function nf(J=process.stdout,z=process.env){let Y=mY(J.columns)??mY(z.COLUMNS),Z=mY(J.rows)??mY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function mY(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 wU(J){let z=[];for(let Y of J.split(`
|
|
54
|
+
`)){let[Z,G,X,q,H]=Y.split("\t"),j=mY(X?.trim()),B=mY(q?.trim());if(!Z?.trim()||!G?.trim()||!j||!B)continue;z.push({name:Z.trim(),session:G.trim(),width:j,height:B,flags:H?.trim()??""})}return z}function PU(J,z,Y,Z={}){return J.filter((G)=>G.session===z).filter((G)=>G.name!==Z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function lf(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function $f(J,z,Y={}){if(!z)return;let{code:Z,stdout:G}=await p0(["list-clients","-t",`=${J}`,"-F",SN]);if(Z!==0)return;let X=PU(wU(G),J,z,Y),q=[];if(Y.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let H of X)q.push(["refresh-client","-f","ignore-size","-t",H]);if(q.length>0)await a1(q)}async function FH(J){wY(J,"resize");let z=nf();await $f(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await n0(["resize-window","-t",`=${J}`,...Y]);await gZ(J)}async function hU(){let{code:J,stdout:z}=await p0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,G,X]=z.trim().split("\t"),q=mY(Z),H=mY(G),j=q&&H?{columns:q,rows:H}:null;return{sizeArgs:j?lf(j,{status:X}):[],clientSize:j,clientName:Y?.trim()||void 0}}async function vU(J){wY(J,"resize");let z=await hU();await $f(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await n0(["resize-window","-t",`=${J}`,...Y]);await gZ(J)}async function yN(J){await vU(J),await n0(["switch-client","-t",`=${J}`])}async function TN(J,z){if(!z.size)return;wY(J,"resize"),await $f(J,z.size,{currentClientName:z.clientName});let Y=lf(z.size,{status:z.status}),{commands:Z}=await kf(J,{force:!0});await a1([["resize-window","-t",`=${J}`,...Y],...Z])}function mU(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${xN[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function pX(J){let z=df.get(J.name);if(z)return z;let Y=EN(J);df.set(J.name,Y);try{return await Y}finally{df.delete(J.name)}}function cU(J){let z="",Y="",Z=!1,G=new Set;for(let X of J.split(`
|
|
55
|
+
`)){let[q,H,j,B,V]=X.split("\t");if(!q?.trim())continue;if(G.add(q.trim()),!z&&B?.trim())z=B.trim();if(!Y&&V?.trim())Y=V.trim();if(H?.trim()==="1"&&j?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:G.size}}async function dU(J){if(!await K1(J))return null;let{code:z,stdout:Y}=await p0(["list-panes","-s","-t",`=${J}`,"-F",uN]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return cU(Y)}async function af(J){let Y=(await dU(J))?.vendor.trim();return Y?Y:null}async function EN(J){let z=J.launchInit,Y=await dU(J.name),Z=iK(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),G=VK(J.repo);if(Z.kind==="reuse")return await gZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let C0=await HU(J.name,J.cwd,J.command,G,J.vendor);if(C0==="switched"){if(J.vendor)await BY(J.name,"@kobe_vendor",J.vendor);return await gZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(C0==="respawn-failed")return await gZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await Gz(J.name);let X=T1(),q=J.archived===!0&&Df(),H=q?{argv:[],sessionId:void 0}:HG(J.command,J.vendor),j=J.repo!==void 0&&J.cwd===J.repo,B=j||G?void 0:J.taskId,V=j&&!G?J.taskId:void 0,f=dq(cq(H.argv,J.vendor,B),J.vendor,V),K=[...X,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[]],L=qG(TJ(q?K:f),G,J.cwd),O=q?J7(L):Y7(L,{initScript:G?void 0:z?.initScript,markerPath:!G&&z?.initScript?zV(J.cwd):void 0,timeoutSeconds:kB(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},rZ($1(),X,J.name)),C=(await p0(["new-session","-d","-s",J.name,"-c",c1(J.cwd),...EU(),"-P","-F","#{pane_id}",O])).stdout.trim();if(!C)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(H.sessionId)await vY(C,mz,H.sessionId);if(await a1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...G?[["set-option","-t",J.name,bX,G]]:[]]),process.env.TMUX){let{sizeArgs:C0}=await hU();if(C0.length>0)await n0(["resize-window","-t",`=${J.name}`,...C0])}await DH(C,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:X,vendor:J.vendor});let E=$1(),y=X.map(Y1).join(" "),N=`${E}${y} new-chattab --session '#{session_name}'`,g=`${N} --vendor '%%'`,F=`run-shell ${Y1(g)}`,w=`${E}${y} focus-tasks --session '#{session_name}' --window '#{window_id}'`,l=`run-shell ${Y1(w)}`,d=(C0)=>`${E}${y} layout --session '#{session_name}' --window '#{window_id}' --action ${C0}`,s=d("tasks-restore"),P=`run-shell ${Y1(s)}`,J0=d("chat-tab-close"),q0=`run-shell ${Y1(J0)}`,D0=`${E}${y} heal-layout --session '#{session_name}'`,K0=`run-shell -b ${Y1(D0)}`,T0=`${E}${y} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,S=`run-shell -b ${Y1(T0)}`,a=`${E}${y} capture-layout --session '#{session_name}'`,h=`run-shell -b ${Y1(a)}`,R=X7({tmuxSocket:kz}),t=yK(process.platform,TK),u=xK(t),n=_q(),X0=vK.map((C0)=>["unbind-key","-n",C0]);if(n.overridden.has(vz))for(let C0 of EY){let w0=AZ(C0);if("key"in w0)X0.push(["unbind-key","-n",w0.key])}for(let C0 of n.overridden){if(C0===vz)continue;let w0=OZ[C0],I0=BG(C0),m=AZ(w0,{allowBare:I0});if("key"in m)X0.push(I0?["unbind-key",m.key]:["unbind-key","-n",m.key])}let Q0=["-L","-D","-U","-R"],L0=n.focus.flatMap((C0,w0)=>{let I0=Q0[w0],m=I0==="-L"?P:void 0;return C0&&I0?[mU(C0.key,I0,m)]:[]}),M0=n.binds,r0=(C0,w0)=>{let I0=M0[C0];return I0?[["bind-key",I0.key,"run-shell",d(w0)]]:[]},g0=(...C0)=>{let w0=C0.map((I0)=>M0[I0]?.chord).filter((I0)=>!!I0);return w0.length>0?w0.join("/"):null},i0="#{?#{@kobe_surface},0,1}";await a1([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",gG],["set-option","-g","window-status-current-format",nX],["set-option","-g","status-right",dX({focusLeft:n.focus[0]?.key??null,detach:M0["tmux.detach"]?.key??null,newTab:M0["tmux.tab.new"]?.key??null,layoutSplits:g0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:g0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...u,["set-hook","-g","window-resized",K0],["set-hook","-g","client-resized",S],["set-hook","-g","pane-exited",K0],["set-hook","-g","window-layout-changed",h],...X0,...M0["tmux.detach"]?[["bind-key","-n",M0["tmux.detach"].key,"if-shell","-F",`#{?#{${yJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",l]]:[],...L0,...M0["tmux.tab.new"]?[["bind-key","-n",M0["tmux.tab.new"].key,"run-shell",N]]:[],...M0["tmux.tab.chooseEngine"]?cX(M0["tmux.tab.chooseEngine"].key).map((C0)=>[...C0,F]):[],...M0["tmux.tab.prev"]&&M0["tmux.tab.next"]?hX(M0["tmux.tab.prev"].key,M0["tmux.tab.next"].key):M0["tmux.tab.prev"]?[["bind-key","-n",M0["tmux.tab.prev"].key,"if-shell","-F",i0,"previous-window"]]:M0["tmux.tab.next"]?[["bind-key","-n",M0["tmux.tab.next"].key,"if-shell","-F",i0,"next-window"]]:[],...M0["tmux.tab.close"]?[vX(M0["tmux.tab.close"].key,q0)]:[],...M0["tmux.tab.rename"]?[mX(M0["tmux.tab.rename"].key)]:[],...r0("tmux.layout.workspaceSplit","workspace-split"),...r0("tmux.layout.workspaceClose","workspace-close"),...r0("tmux.layout.workspaceReset","workspace-reset"),...r0("tmux.layout.tasksToggle","tasks-toggle"),...r0("tmux.layout.opsToggle","ops-toggle"),...r0("tmux.layout.terminalToggle","terminal-toggle"),...r0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${E}${y} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",R]]),await RZ(),await n0(["select-pane","-t",C]);let k1=z?.firstMessage;if(k1)nK(J.name,k1).catch((C0)=>console.error("[kobe tmux] first message delivery failed:",C0));return!0}async function uU(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:G,stdout:X}=await p0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let q of X.split(`
|
|
56
|
+
`)){let[H,j]=q.split("\t");if(H?.trim()&&j?.trim()===z)return H.trim()}return""}async function wN(J,z={}){if(!await K1(J))return"";let Y=await uU(J,"tasks",z.windowId);if(!Y)await NZ(J,"tasks-restore",{windowId:z.windowId}),Y=await uU(J,"tasks",z.windowId);if(!Y)return"";return await n0(["select-pane","-t",Y]),Y}var SN="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",xN,df,uN="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var GJ=k(()=>{XY();Yz();r1();Oz();nq();P1();uK();pq();rq();Lz();QH();KH();VZ();hY();AG();wX();P1();KH();wX();hY();xN={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};df=new Map});var kG={};q1(kG,{windowIsSurface:()=>nN,windowCount:()=>vN,tmuxSessionName:()=>y1,tmuxCommandSequence:()=>pf,tmuxAvailable:()=>dz,tmuxArgs:()=>kZ,tagPaneRole:()=>lU,tagClaudePane:()=>dN,switchClientBeforeKill:()=>nz,setWindowOption:()=>vY,setSessionOption:()=>BY,sessionExists:()=>K1,sendKeys:()=>OH,sendKeyName:()=>uX,runTmuxSequenceCapturing:()=>_X,runTmuxSequence:()=>a1,runTmuxCapturing:()=>p0,runTmux:()=>n0,readLayoutGeometry:()=>cz,paneIdByRole:()=>of,newWindow:()=>Cz,killSession:()=>Gz,globalTasksPaneWidth:()=>LH,getSessionOptions:()=>EJ,getSessionOption:()=>CZ,getServerOptions:()=>iU,getServerOption:()=>mN,ensureFallbackSession:()=>AH,currentSessionName:()=>PJ,claudePaneIdStrict:()=>fG,claudePaneId:()=>Af,capturePaneById:()=>WG,attachArgv:()=>NG,SURFACE_WINDOW_OPTION:()=>sf,PANE_ROLE_OPTION:()=>rX,KOBE_TMUX_SOCKET:()=>kz,KOBE_HOME_SESSION:()=>$U,CLAUDE_ROLE_OPTION:()=>cN,CHAT_TAB_SESSION_ID_OPTION:()=>mz});import{homedir as PN}from"os";function kZ(...J){return["tmux","-L",kz,...J]}function y1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function NG(J){return kZ("attach-session","-t",`=${J}`)}async function _f(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function n0(J){try{let z=Bun.spawn(kZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([_f(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function hN(J){try{return await Bun.spawn(kZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function pf(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 a1(J){let z=pf(J);return z.length===0?0:n0(z)}async function p0(J){try{let z=Bun.spawn(kZ(...J),{stdin:"ignore",cwd:CG,stdout:"pipe",stderr:"pipe"}),[Y,Z,G]=await Promise.all([_f(z.stdout),_f(z.stderr),z.exited]);if(G!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${G}): ${Z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function _X(J){let z=pf(J);return z.length===0?{code:0,stdout:""}:p0(z)}async function dz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function K1(J){return await hN(["has-session","-t",`=${J}`])===0}async function vN(J){let{code:z,stdout:Y}=await p0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
57
|
+
`).filter((Z)=>Z.trim().length>0).length}async function BY(J,z,Y){await n0(["set-option","-t",J,z,Y])}async function CZ(J,z){let{code:Y,stdout:Z}=await p0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function EJ(J,z){let Y=Object.fromEntries(z.map((X)=>[X,void 0])),{code:Z,stdout:G}=await _X(z.map((X)=>["show-options","-q","-t",J,X]));if(Z!==0)return Y;for(let X of G.split(`
|
|
58
|
+
`)){let q=X.indexOf(" ");if(q<=0)continue;let H=X.slice(0,q);if(H in Y)Y[H]=X.slice(q+1).trim()}return Y}async function mN(J){let{code:z,stdout:Y}=await p0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function iU(J){let z=Object.fromEntries(J.map((G)=>[G,void 0])),{code:Y,stdout:Z}=await _X(J.map((G)=>["show-options","-sq",G]));if(Y!==0)return z;for(let G of Z.split(`
|
|
59
|
+
`)){let X=G.indexOf(" ");if(X<=0)continue;let q=G.slice(0,X);if(q in z)z[q]=G.slice(X+1).trim()}return z}async function LH(){return(await cz()).tasksWidth}async function cz(){return eV(await iU(tV))}async function lU(J,z){await n0(["set-option","-p","-t",J,rX,z])}async function vY(J,z,Y){await n0(["set-window-option","-t",J,z,Y])}async function dN(J){await lU(J,rf)}async function of(J,z,Y=!1){let{code:Z,stdout:G}=await p0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${rX}}`]);if(Z!==0)return"";let X="";for(let q of G.split(`
|
|
60
|
+
`)){let[H,j]=q.split("\t");if(!H)continue;if(!X)X=H.trim();if(j?.trim()===z)return H.trim()}return Y?X:""}async function Af(J){return of(J,rf,!0)}async function fG(J){return of(J,rf,!1)}async function WG(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:G}=await p0(Y);return Z===0?G:""}async function OH(J,z){await n0(["send-keys","-t",J,"-l","--",z])}async function uX(J,z){await n0(["send-keys","-t",J,z])}async function Cz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:G}=await p0(Y),X=G.trim();if(Z===0&&X)await vY(X,sf,"1");return}Y.push(z.command),await n0(Y)}async function nN(J){let{code:z,stdout:Y}=await p0(["display-message","-t",J,"-p",`#{${sf}}`]);return z===0&&Y.trim()==="1"}async function PJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await p0(J),G=Z.trim();return Y===0&&G.length>0?G:null}async function Gz(J){if(!J.startsWith("kobe-hidden-")){let z=VX(J);if(await K1(z))await n0(["kill-session","-t",`=${z}`])}if(await K1(J))await n0(["kill-session","-t",`=${J}`])}async function AH(){let J=$U;if(await K1(J)){if(await CZ(J,nU)==="tasks")return J;await n0(["kill-session","-t",`=${J}`])}let Y=(await p0(["new-session","-d","-s",J,"-c",CG,"-x","220","-y","50","-P","-F","#{pane_id}",z7()])).stdout.trim();if(Y){let Z=await LH(),X=(await p0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",CG,"-P","-F","#{pane_id}",xJ($1()+yY(T1()))])).stdout.trim();if(X)await a1([["set-option","-p","-t",X,rX,"tasks"],["select-pane","-t",X]])}return await BY(J,nU,"tasks"),J}async function nz(J,z){if(await PJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (GJ(),wJ));if(z&&z!==J&&await K1(z)){await Z(z);return}await Z(await AH())}var kz,CG,rX="@kobe_role",cN,rf="claude",mz="@kobe_session_id",sf="@kobe_surface",$U="kobe-home",nU="@kobe_home";var P1=k(()=>{XY();VZ();Lz();kz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";CG=PN()||"/";cN=rX});async function iN(J,z=aU){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${mz}}`]);if(Y!==0)return[];let G=[];for(let X of Z.split(`
|
|
61
|
+
`)){let[q,H,j]=X.split("\t"),B=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(B))continue;G.push({index:B,sessionId:j?.trim()??"",autoRename:H?.trim()??""})}return G}async function lN(J,z,Y){let{code:Z,stdout:G}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(G)}async function $N(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function aN(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function _U(J,z=_N){let Y=0,Z=null,G=async(X,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Z===null)Z=await $N(z.runner);if(!Z)return!0}return lN(X,q.index,z.runner)};for(let X of J.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let q=y1(X.id),H=await iN(q,z.runner);if(H.length===0)continue;let j=H.reduce((V,f)=>Math.min(V,f.index),Number.POSITIVE_INFINITY),B=X.vendor??s1;for(let V of H)try{if(await G(q,V))continue;let f=V.sessionId?await z.titleFromSessionId(B,V.sessionId):V.index===j?await z.titleFromWorktree(X.worktreePath,B):"";if(f&&await aN(q,V.index,f,z.runner))Y++}catch{}}return Y}var aU,_N;var pU=k(()=>{gq();P1();zz();aU={capture:p0,run:n0};_N={runner:aU,titleFromSessionId:i7,titleFromWorktree:eZ}});function oU(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 rU(J,z,Y=new Date){let Z=oU(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
|
|
62
|
+
`}function pN(J,z,Y=new Date){let Z=oU(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
|
|
63
|
+
`}function u1(J,z){process.stderr.write(pN(J,z))}function rN(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
|
|
64
|
+
`}function iz(J,z){process.stderr.write(rN(J,z))}function sU(J=(z)=>process.stderr.write(z)){if(tf||ef)return;tf=(z)=>J(rU("unhandledRejection",z)),ef=(z)=>J(rU("uncaughtException",z)),process.on("unhandledRejection",tf),process.on("uncaughtException",ef)}var tf,ef;async function oN(J,z=eZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==hz||!Z.worktreePath)continue;try{let G=await z(Z.worktreePath,Z.vendor??s1);if(!G)continue;let X=J.getTask(Z.id);if(!X||X.title!==hz)continue;await J.setTitle(Z.id,G),Y.push({id:Z.id,title:G})}catch(G){u1("auto-title-poller",G)}}return Y}function tU(J,z=J9,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,oN(J).then(()=>_U(J)).catch((q)=>u1("auto-title-poller",q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var J9=4000;var eU=k(()=>{gq();kX();pU();zz()});class z9{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 Y9{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function J5(J,z,Y=vq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var z5=k(()=>{IX()});import{createHash as sN}from"crypto";import{homedir as tN}from"os";import cY from"path";function ZC(){return cY.join(process.env.KOBE_HOME_DIR??tN(),".kobe")}function GC(J){let Y=(cY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=sN("sha1").update(cY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function XC(J){if(!cY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return cY.join(ZC(),eN,GC(J))}function QC(J){if(!cY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[XC(J),...YC.map((z)=>cY.join(J,z))]}function lz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function Y5(J,z){return z===J||z.startsWith(`${J}/`)}function Z5(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let q=lz(X.worktreePath);if(Y5(q,Y)&&q.length>G)G=q.length,Z=X.id}return Z}function G5(J,z){let Y=lz(z);for(let Z of J)if(Z.worktreePath&&lz(Z.worktreePath)===Y)return Z.id;return}function Z9(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.repo)continue;let q=lz(X.repo);if(Y5(q,Y)&&q.length>G)G=q.length,Z=q}return Z}function X5(J,z){let Y=lz(z),Z=new Set,G=new Set;for(let X of J){if(X.repo)Z.add(lz(X.repo));if(X.worktreePath)G.add(lz(X.worktreePath))}for(let X of Z)for(let q of QC(X).map(lz)){let H=`${q}/`;if(!Y.startsWith(H))continue;let B=Y.slice(H.length).split("/")[0];if(!B)continue;let V=`${H}${B}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var eN="worktrees",JC=".kobe/worktrees",zC=".claude/worktrees",YC;var Q5=k(()=>{YC=[JC,zC]});function Q9(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function oX(J,z,Y,Z){let G=J.get(z);if(!G)throw Error(`unknown daemon request: ${z}`);return G.handle(q9(Y),Z)}function sX(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:sJ,G=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!pQ({localVersion:sJ,localMin:CY,remoteVersion:Z,remoteMin:G}))throw Error(`daemon is protocol v${sJ} (min v${CY}); this client is v${Z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:sJ,minProtocolVersion:CY,kobeVersion:J1,capabilities:[...VB],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Vz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Vz)}}},{name:"task.get",handle(z,Y){let Z=g1(z,"taskId"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);return{task:Vz(G)}}},{name:"task.create",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.createTask({repo:Z,title:Xz(z,"title"),branch:Xz(z,"branch"),baseRef:Xz(z,"baseRef"),vendor:X9(z,"vendor"),modelEffort:Xz(z,"effort")});return{taskId:G.id,task:Vz(G)}}},{name:"task.archive",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setArchived(Z,G9(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setTitle(Z,g1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setBranch(Z,g1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=g1(z,"taskId"),G=X9(z,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,G),{}}},{name:"task.delete",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.deleteTask(Z,{force:G9(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setPinned(Z,G9(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(Z,G==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"status");if(!h7(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(Z):void 0,q=X?.status;if(await Y.orch.setStatus(Z,G),G==="done"&&q!=="done"&&X)try{let H=await Y.issues.mirrorTaskDone(X.repo,Z);if(H)Y.bus.publish("issue.snapshot",H)}catch(H){u1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let q=X,H=g1(q,"taskId"),j=q.position;if(typeof j!=="number"||!Number.isFinite(j))throw Error("position must be a finite number");return{taskId:H,position:j}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.ensureMainTask(Z);return{task:Vz(G)}}},{name:"project.forget",async handle(z,Y){let Z=g1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=g1(z,"taskId");Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(Z);return Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let Z=g1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:g1(z,"repo"),worktreePath:g1(z,"worktreePath"),branch:Xz(z,"branch"),vendor:X9(z,"vendor"),title:Xz(z,"title"),ifExists:Xz(z,"ifExists")==="return"?"return":"error"});return{task:Vz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=g1(z,"cwd"),G=g1(z,"worktreePath"),X=Z9(Y.orch.listTasks(),Z)??Z9(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(q){return u1("worktree-created",q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=g1(z,"worktreePath"),G=G5(Y.orch.listTasks(),Z);if(!G)return{archived:!1};try{return await Y.orch.setArchived(G,!0),{archived:!0,taskId:G}}catch(X){return u1("worktree-removed",X),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Xz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(g1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(g1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Xz(z,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(Z))throw Error(`task not found: ${Z}`);return Y.bus.publish("session.deliver",{taskId:Z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);let q=Y.orch.listTasks().find((j)=>(j.kind??"task")==="main"&&j.repo===X.repo&&!j.archived);if(!q||q.id===X.id)return{ok:!0,routed:!1};let H=X.title||X.branch||Z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=g1(z,"kind");if(!Oq(Z))throw Error(`unknown engine event kind: ${Z}`);let G=Xz(z,"taskId"),X=Xz(z,"cwd");if(!G&&X&&Z==="session-start"){let j=X5(Y.orch.listTasks(),X);if(j)try{await Y.orch.adoptWorktree({repo:j.repo,worktreePath:j.worktreePath,ifExists:"return"})}catch(B){u1("worktree-autosync",B)}}let q=G??(X?Z5(Y.orch.listTasks(),X):void 0);if(!q)return{};let H=qC(z);if(Y.activity.report(q,Z,H),Z==="turn-start")J5(Y.orch,q).then((j)=>{if(j==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((j)=>u1("status-rules",j));return{}}}].map((z)=>[z.name,z]))}function q9(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function g1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Xz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function G9(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 X9(J,z){let Y=Xz(J,z);return Y&&Y.trim().length>0?Y:void 0}function qC(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var RH=k(()=>{Aq();z5();zz();NJ();Q5();zZ()});import{execFile as HC}from"child_process";import{mkdir as jC,readFile as BC,realpath as q5,rename as fC,stat as WC,writeFile as VC}from"fs/promises";import{homedir as KC}from"os";import{dirname as UC,isAbsolute as DC,join as LC,resolve as H5}from"path";import{promisify as MC}from"util";function FC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function NH(J=process.env.KOBE_HOME_DIR??KC()){return LC(J,".kobe","issues.json")}function B5(J){return typeof J==="string"&&j5.includes(J)}function OC(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:B5(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 AC(){return{version:1,repos:{}}}function RC(){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 gC(J){let{stdout:z}=await V9("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return q5(DC(Y)?Y:H5(J,Y))}async function NC(J){let{stdout:z}=await V9("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function CC(J){let{stdout:z}=await V9("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?q5(Y):NC(J)}async function H9(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=H5(J);if(!(await WC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([CC(z),gC(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(FC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function j9(J){try{let z=JSON.parse(await BC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,G]of Object.entries(z.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[Z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(OC).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return AC();throw z}}async function B9(J,z){await jC(UC(J),{recursive:!0});let Y=`${J}.tmp`;await VC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
+
`,"utf8"),await fC(Y,J)}function f9(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function W9(J,z){let Z=(gH.get(J)??Promise.resolve()).then(z),G=Z.then(()=>{return},()=>{return});return gH.set(J,G),G.then(()=>{if(gH.get(J)===G)gH.delete(J)}),Z}class CH{path;constructor(J=NH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await H9(J);return W9(this.path,async()=>{let Z=await j9(this.path),G=Z.repos[Y]??null;if(G&&G.repoRoot!==z)G.repoRoot=z,await B9(this.path,Z);return f9(z,G)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await H9(J);if(!z)return null;return W9(this.path,async()=>{let G=await j9(this.path),X=G.repos[Z];if(!X)return null;let q=X.issues.find((H)=>H.taskId===z);if(!q||q.status==="done")return null;return q.status="done",X.repoRoot=Y,await B9(this.path,G),f9(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await H9(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return W9(this.path,async()=>{let G=await j9(this.path),X=G.repos[Z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[Z]=X;X.repoRoot=Y;let q=z;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:q.title,status:"open",created:RC(),body:typeof q.body==="string"?q.body:""},...X.issues],X.nextId+=1}else if(q.type==="setStatus"){if(typeof q.id!=="number")throw Error("setStatus requires a numeric id");if(!B5(q.status))throw Error(`invalid status: must be one of ${j5.join(", ")}`);let H=X.issues.find((j)=>j.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.status=q.status}else if(q.type==="update"){if(typeof q.id!=="number")throw Error("update requires a numeric id");if(q.title!==void 0&&(typeof q.title!=="string"||q.title.trim().length===0))throw Error("title must be a non-empty string");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");let H=X.issues.find((j)=>j.id===q.id);if(!H)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")H.title=q.title;if(typeof q.body==="string")H.body=q.body}else if(q.type==="link"){if(typeof q.id!=="number")throw Error("link requires a numeric id");if(typeof q.taskId!=="string"||q.taskId.length===0)throw Error("link requires a non-empty taskId");let H=X.issues.find((j)=>j.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let H=X.issues.find((j)=>j.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let H=X.issues.filter((j)=>j.id!==q.id);if(H.length===X.issues.length)throw Error(`no issue #${q.id}`);X.issues=H}else throw Error(`unknown op type: ${q.type}`);return await B9(this.path,G),f9(Y,X)})}}var V9,j5,gH;var K9=k(()=>{V9=MC(HC),j5=["open","doing","hold","done"];gH=new Map});import{lstat as f5,readdir as kC,realpath as bC,stat as IC}from"fs/promises";import{join as SC,relative as yC,resolve as W5,sep as TC}from"path";import{Readable as xC}from"stream";function L5(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=iJ.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&&!V5.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${V5.join(", ")}`);return z.root=J,new D9(z)}var iJ,U9,D5="READDIRP_RECURSIVE_ERROR",uC,V5,EC,wC,PC=(J)=>uC.has(J.code),hC,K5=(J)=>!0,U5=(J)=>{if(J===void 0)return K5;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return K5},D9;var M5=k(()=>{iJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},U9={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:iJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(U9);uC=new Set(["ENOENT","EPERM","EACCES","ELOOP",D5]),V5=[iJ.DIR_TYPE,iJ.EVERYTHING_TYPE,iJ.FILE_DIR_TYPE,iJ.FILE_TYPE],EC=new Set([iJ.DIR_TYPE,iJ.EVERYTHING_TYPE,iJ.FILE_DIR_TYPE]),wC=new Set([iJ.EVERYTHING_TYPE,iJ.FILE_DIR_TYPE,iJ.FILE_TYPE]),hC=process.platform==="win32";D9=class D9 extends xC{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={...U9,...J},{root:Y,type:Z}=z;this._fileFilter=U5(z.fileFilter),this._directoryFilter=U5(z.directoryFilter);let G=z.lstat?f5:IC;if(hC)this._stat=(X)=>G(X,{bigint:!0});else this._stat=G;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:U9.depth,this._wantsDir=Z?EC.has(Z):!1,this._wantsFile=Z?wC.has(Z):!1,this._wantsEverything=Z===iJ.EVERYTHING_TYPE,this._root=W5(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:G}=z,X=Y.splice(0,J).map((H)=>this._formatEntry(H,Z)),q=await Promise.all(X);for(let H of q){if(!H)continue;if(this.destroyed)return;let j=await this._getEntryType(H);if(j==="directory"&&this._directoryFilter(H)){if(G<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,G+1));if(this._wantsDir)this.push(H),J--}else if((j==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await kC(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let G=W5(SC(z,Z));Y={path:yC(this._root,G),fullPath:G,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(G)}catch(G){this._onError(G);return}return Y}_onError(J){if(PC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await bC(Y),G=await f5(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===TC){let q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return q.code=D5,this._onError(q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as vC,unwatchFile as F5,watchFile as mC}from"fs";import{realpath as L9,lstat as cC,open as dC,stat as A5}from"fs/promises";import{type as nC}from"os";import*as h1 from"path";function O5(J,z,Y,Z,G){let X=(q,H)=>{if(Y(J),G(q,H,{watchedPath:J}),H&&J!==H)IH(h1.resolve(J,H),bZ,h1.join(J,H))};try{return vC(J,{persistent:z.persistent},X)}catch(q){Z(q);return}}class R9{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=h1.dirname(J),G=h1.basename(J);this.fsw._getWatchedDir(Z).add(G);let q=h1.resolve(J),H={persistent:Y.persistent};if(!z)z=SH;let j;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;H.interval=B&&sC(G)?Y.binaryInterval:Y.interval,j=Jk(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=eC(J,q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return j}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=h1.dirname(J),G=h1.basename(J),X=this.fsw._getWatchedDir(Z),q=z;if(X.has(G))return;let H=async(B,V)=>{if(!this.fsw._throttle(_C,J,5))return;if(!V||V.mtimeMs===0)try{let f=await A5(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=f;if(!K||K<=L||L!==q.mtimeMs)this.fsw._emit(bz.CHANGE,J,f);if((lC||$C||aC)&&q.ino!==f.ino){this.fsw._closeFile(B),q=f;let O=this._watchWithNodeFs(J,H);if(O)this.fsw._addPathCloser(B,O)}else q=f}catch(f){this.fsw._remove(Z,G)}else if(X.has(G)){let{atimeMs:f,mtimeMs:K}=V;if(!f||f<=K||K!==q.mtimeMs)this.fsw._emit(bz.CHANGE,J,V);q=V}},j=this._watchWithNodeFs(J,H);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(bz.ADD,J,0))return;this.fsw._emit(bz.ADD,J,z)}return j}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let G=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let q;try{q=await L9(Y)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(Z)){if(this.fsw._symlinkPaths.get(G)!==q)this.fsw._symlinkPaths.set(G,q),this.fsw._emit(bz.CHANGE,Y,J.stats)}else X.add(Z),this.fsw._symlinkPaths.set(G,q),this.fsw._emit(bz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(G))return!0;this.fsw._symlinkPaths.set(G,!0)}_handleRead(J,z,Y,Z,G,X,q){J=h1.join(J,"");let H=Z?`${J}:${Z}`:J;if(q=this.fsw._throttle("readdir",H,1000),!q)return;let j=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(f)=>Y.filterPath(f),directoryFilter:(f)=>Y.filterDir(f)});if(!V)return;return V.on(iC,async(f)=>{if(this.fsw.closed){V=void 0;return}let K=f.path,L=h1.join(J,K);if(B.add(K),f.stats.isSymbolicLink()&&await this._handleSymlink(f,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!j.has(K))this.fsw._incrReadyCount(),L=h1.join(G,h1.relative(G,L)),this._addToNodeFs(L,z,Y,X+1)}).on(bz.ERROR,this._boundHandleError),new Promise((f,K)=>{if(!V)return K();V.once(O9,()=>{if(this.fsw.closed){V=void 0;return}let L=q?q.clear():!1;if(f(void 0),j.getChildren().filter((O)=>{return O!==J&&!B.has(O)}).forEach((O)=>{this.fsw._remove(J,O)}),V=void 0,L)this._handleRead(J,!1,Y,Z,G,X,q)})})}async _handleDir(J,z,Y,Z,G,X,q){let H=this.fsw._getWatchedDir(h1.dirname(J)),j=H.has(h1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!G&&!j)this.fsw._emit(bz.ADD_DIR,J,z);H.add(h1.basename(J)),this.fsw._getWatchedDir(J);let B,V,f=this.fsw.options.depth;if((f==null||Z<=f)&&!this.fsw._symlinkPaths.has(q)){if(!G){if(await this._handleRead(J,Y,X,G,J,Z,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,G,J,Z,B)})}return V}async _addToNodeFs(J,z,Y,Z,G){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let q=this.fsw._getWatchHelpers(J);if(Y)q.filterPath=(H)=>Y.filterPath(H),q.filterDir=(H)=>Y.filterDir(H);try{let H=await pC[q.statMethod](q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(q.watchPath,H))return X(),!1;let j=this.fsw.options.followSymlinks,B;if(H.isDirectory()){let V=h1.resolve(J),f=j?await L9(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(q.watchPath,H,z,Z,G,q,f),this.fsw.closed)return;if(V!==f&&f!==void 0)this.fsw._symlinkPaths.set(V,f)}else if(H.isSymbolicLink()){let V=j?await L9(J):J;if(this.fsw.closed)return;let f=h1.dirname(q.watchPath);if(this.fsw._getWatchedDir(f).add(q.watchPath),this.fsw._emit(bz.ADD,q.watchPath,H),B=await this._handleDir(f,H,z,Z,J,q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(h1.resolve(J),V)}else B=this._handleFile(q.watchPath,H,z);if(X(),B)this.fsw._addPathCloser(J,B);return!1}catch(H){if(this.fsw._handleError(H))return X(),J}}}var iC="data",O9="end",R5="close",SH=()=>{},yH,A9,lC,$C,aC,g5,w1,bz,_C="watch",pC,bZ="listeners",kH="errHandlers",bG="rawEmitters",rC,oC,sC=(J)=>oC.has(h1.extname(J).slice(1).toLowerCase()),F9=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},tX=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},tC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},eX=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},N5=(J)=>J instanceof Set?J.size===0:!J,bH,IH=(J,z,Y,Z,G)=>{let X=bH.get(J);if(!X)return;F9(X[z],(q)=>{q(Y,Z,G)})},eC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:q}=Z,H=bH.get(z),j;if(!Y.persistent){if(j=O5(J,Y,G,X,q),!j)return;return j.close.bind(j)}if(H)tX(H,bZ,G),tX(H,kH,X),tX(H,bG,q);else{if(j=O5(J,Y,IH.bind(null,z,bZ),X,IH.bind(null,z,bG)),!j)return;j.on(bz.ERROR,async(B)=>{let V=IH.bind(null,z,kH);if(H)H.watcherUnusable=!0;if(A9&&B.code==="EPERM")try{await(await dC(J,"r")).close(),V(B)}catch(f){}else V(B)}),H={listeners:G,errHandlers:X,rawEmitters:q,watcher:j},bH.set(z,H)}return()=>{if(eX(H,bZ,G),eX(H,kH,X),eX(H,bG,q),N5(H.listeners))H.watcher.close(),bH.delete(z),rC.forEach(tC(H)),H.watcher=void 0,Object.freeze(H)}},M9,Jk=(J,z,Y,Z)=>{let{listener:G,rawEmitter:X}=Z,q=M9.get(z),H=q&&q.options;if(H&&(H.persistent<Y.persistent||H.interval>Y.interval))F5(z),q=void 0;if(q)tX(q,bZ,G),tX(q,bG,X);else q={listeners:G,rawEmitters:X,options:Y,watcher:mC(z,Y,(j,B)=>{F9(q.rawEmitters,(f)=>{f(bz.CHANGE,z,{curr:j,prev:B})});let V=j.mtimeMs;if(j.size!==B.size||V>B.mtimeMs||V===0)F9(q.listeners,(f)=>f(J,j))})},M9.set(z,q);return()=>{if(eX(q,bZ,G),eX(q,bG,X),N5(q.listeners))M9.delete(z),F5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var C5=k(()=>{yH=process.platform,A9=yH==="win32",lC=yH==="darwin",$C=yH==="linux",aC=yH==="freebsd",g5=nC()==="OS400",w1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},bz=w1,pC={lstat:cC,stat:A5},rC=[bZ,kH,bG],oC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),bH=new Map;M9=new Map});import{EventEmitter as zk}from"events";import{stat as Yk,Stats as Xn}from"fs";import{readdir as Zk,stat as Gk}from"fs/promises";import*as H1 from"path";function TH(J){return Array.isArray(J)?J:[J]}function fk(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=H1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!H1.isAbsolute(Y)}return!1};return()=>!1}function Wk(J){if(typeof J!=="string")throw Error("string expected");J=H1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(T5,"/"),z)J="/"+J;return J}function k5(J,z,Y){let Z=Wk(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function Vk(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=TH(J).map((G)=>fk(G));if(z==null)return(G,X)=>{return k5(Z,G,X)};return k5(Z,z)}class u5{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!==y5&&J!==Qk)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 Zk(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(H1.dirname(Y),H1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=SH,this.items=Uk,Object.freeze(this)}}class E5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(Bk,""),this.watchPath=Z,this.fullWatchPath=H1.resolve(Z),this.dirParts=[],this.dirParts.forEach((G)=>{if(G.length>1)G.pop()}),this.followSymlinks=z,this.statMethod=z?Dk:Lk}entryPath(J){return H1.join(this.watchPath,H1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function P5(J,z={}){let Y=new w5(z);return Y.add(J),Y}var g9="/",Xk="//",y5=".",Qk="..",qk="string",Hk,T5,jk,Bk,N9=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),b5=(J)=>{let z=TH(J).flat();if(!z.every((Y)=>typeof Y===qk))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(x5)},I5=(J)=>{let z=J.replace(Hk,g9),Y=!1;if(z.startsWith(Xk))Y=!0;if(z=z.replace(T5,g9),Y)z=g9+z;return z},x5=(J)=>I5(H1.normalize(I5(J))),S5=(J="")=>(z)=>{if(typeof z==="string")return x5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},Kk=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},Uk,Dk="stat",Lk="lstat",w5;var h5=k(()=>{M5();C5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */Hk=/\\/g,T5=/\/\//g,jk=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Bk=/^\.[/\\]/;Uk=Object.freeze(new Set);w5=class w5 extends zk{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?TH(J.ignored):TH([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(g5)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let G=process.env.CHOKIDAR_USEPOLLING;if(G!==void 0){let H=G.toLowerCase();if(H==="false"||H==="0")Z.usePolling=!1;else if(H==="true"||H==="1")Z.usePolling=!0;else Z.usePolling=!!H}let X=process.env.CHOKIDAR_INTERVAL;if(X)Z.interval=Number.parseInt(X,10);let q=0;this._emitReady=()=>{if(q++,q>=this._readyCount)this._emitReady=SH,this._readyEmitted=!0,process.nextTick(()=>this.emit(w1.READY))},this._emitRaw=(...H)=>this.emit(w1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new R9(this),Object.freeze(Z)}_addIgnoredPath(J){if(N9(J)){for(let z of this._ignoredPaths)if(N9(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(N9(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let G=b5(J);if(Z)G=G.map((X)=>{return Kk(X,Z)});if(G.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=G.length,Promise.all(G.map(async(X)=>{let q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(q)this._emitReady();return q})).then((X)=>{if(this.closed)return;X.forEach((q)=>{if(q)this.add(H1.dirname(q),H1.basename(z||q))})}),this}unwatch(J){if(this.closed)return this;let z=b5(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!H1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=H1.join(Y,Z);Z=H1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let G=(this.options.cwd?H1.relative(this.options.cwd,Y):Y)||y5;J[G]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==w1.ERROR)this.emit(w1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(A9)z=H1.normalize(z);if(Z.cwd)z=H1.relative(Z.cwd,z);let G=[z];if(Y!=null)G.push(Y);let X=Z.awaitWriteFinish,q;if(X&&(q=this._pendingWrites.get(z)))return q.lastChange=new Date,this;if(Z.atomic){if(J===w1.UNLINK)return this._pendingUnlinks.set(z,[J,...G]),setTimeout(()=>{this._pendingUnlinks.forEach((H,j)=>{this.emit(...H),this.emit(w1.ALL,...H),this._pendingUnlinks.delete(j)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===w1.ADD&&this._pendingUnlinks.has(z))J=w1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===w1.ADD||J===w1.CHANGE)&&this._readyEmitted){let H=(j,B)=>{if(j)J=w1.ERROR,G[0]=j,this.emitWithAll(J,G);else if(B){if(G.length>1)G[1]=B;else G.push(B);this.emitWithAll(J,G)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,H),this}if(J===w1.CHANGE){if(!this._throttle(w1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===w1.ADD||J===w1.ADD_DIR||J===w1.CHANGE)){let H=Z.cwd?H1.join(Z.cwd,z):z,j;try{j=await Gk(H)}catch(B){}if(!j||this.closed)return;G.push(j)}return this.emitWithAll(J,G),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(w1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let G=Z.get(z);if(G)return G.count++,!1;let X,q=()=>{let j=Z.get(z),B=j?j.count:0;if(Z.delete(z),clearTimeout(X),j)clearTimeout(j.timeoutObject);return B};X=setTimeout(q,Y);let H={timeoutObject:X,clear:q,count:0};return Z.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let G=this.options.awaitWriteFinish;if(typeof G!=="object")return;let X=G.pollInterval,q,H=J;if(this.options.cwd&&!H1.isAbsolute(J))H=H1.join(this.options.cwd,J);let j=new Date,B=this._pendingWrites;function V(f){Yk(H,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let O=Number(new Date);if(f&&L.size!==f.size)B.get(J).lastChange=O;let A=B.get(J);if(O-A.lastChange>=z)B.delete(J),Z(void 0,L);else q=setTimeout(V,X,L)})}if(!B.has(J))B.set(J,{lastChange:j,cancelWait:()=>{return B.delete(J),clearTimeout(q),Y}}),q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&jk.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(S5(Y)),q=[...[...this._ignoredPaths].map(S5(Y)),...G];this._userIgnored=Vk(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new E5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new u5(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=H1.join(J,z),G=H1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(G),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((f)=>this._remove(Z,f));let H=this._getWatchedDir(J),j=H.has(z);if(H.remove(z),this._symlinkPaths.has(G))this._symlinkPaths.delete(G);let B=Z;if(this.options.cwd)B=H1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===w1.ADD)return}this._watched.delete(Z),this._watched.delete(G);let V=Y?w1.UNLINK_DIR:w1.UNLINK;if(j&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=H1.dirname(J);this._getWatchedDir(z).remove(H1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:w1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=L5(J,Y);return this._streams.add(Z),Z.once(R5,()=>{Z=void 0}),Z.once(O9,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as Mk,statSync as Fk}from"fs";import{basename as v5,dirname as Ok,join as Ak}from"path";function xH(J){if(J.debounceMs<=0)return()=>{};let z=Ok(J.filePath),Y=new Set([v5(J.filePath),...J.matchBasenames??[]]),Z=null,G=null,X=!1,q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,q()},J.debounceMs),Z.unref?.()},j=(V)=>{if(!Y.has(v5(V)))return;H()},B=(V)=>{try{let f=Fk(Ak(z,V));return`${f.mtimeMs}:${f.size}`}catch{return null}};try{Mk(z,{recursive:!0});let V=new Map;for(let f of Y)V.set(f,B(f));G=P5(z,{depth:0,ignoreInitial:!0}),G.on("add",j),G.on("change",j),G.on("unlink",j),G.on("error",J.onError),G.once("ready",()=>{for(let f of Y)if(B(f)!==V.get(f)){H();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,Z)clearTimeout(Z),Z=null;let V=G;G=null,V?.close().catch(J.onError)}}var C9=k(()=>{h5()});import{homedir as Rk}from"os";import{basename as gk,join as Nk}from"path";function b9(J=process.env.KOBE_HOME_DIR??Rk()){return Nk(J,".kobe","settings","keybindings.yaml")}function m5(J,z={}){let Y=z.debounceMs??k9;if(Y<=0)return()=>{};let Z=z.path??b9(),G=gk(Z),X=G.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),xH({filePath:Z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(j){u1("keybindings-watcher",j)}},onError:(j)=>u1("keybindings-watcher",j)})}var k9=200;var c5=k(()=>{C9()});class I9{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??Ck,this.log=J.log??iz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var Ck=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var d5=()=>{};import{spawn as kk}from"child_process";function Ek(J,z,Y){return new Promise((Z)=>{let G="",X="",q=!1,H=(B,V)=>{if(q)return;q=!0,Z({status:B,stdout:G,stderr:X,spawnError:V})},j=kk("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});j.stdout?.on("data",(B)=>{G+=String(B)}),j.stderr?.on("data",(B)=>{X+=String(B)}),j.on("error",()=>H(null,!Y.aborted)),j.on("close",(B)=>H(B,!1))})}function Pk(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(o1(J.repo)||o1(J.worktreePath))return!1;return!0}async function hk(J,z){let Y=z.tickMs??JQ,Z=z.rand,G={tickMs:Y,settledMs:Ik,noPrMs:bk,noRemoteMs:Tk,failureBaseMs:Sk,failureCapMs:yk,jitterRatio:xk},X=[];for(let q of J.listTasks()){if(!Pk(q)){z.schedule.delete(q.id);continue}let H=z.schedule.get(q.id);if(H&&z.now<H.nextAllowedAt)continue;let j=H?.failures??0;try{let B=await z.run(q.worktreePath,q.branch);if(B.kind==="error"){iz("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,NX({kind:"error",error:B.error},j,z.now,G,Z));continue}if(B.kind==="empty"){z.schedule.set(q.id,NX({kind:"empty"},j,z.now,G,Z));continue}let V=jK(B.view,z.at),f=J.getTask(q.id);if(!f){z.schedule.delete(q.id);continue}if(!wq(f.prStatus,V??void 0))await J.setPRStatus(q.id,V),X.push(q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(q.id,NX({kind:"pr",settled:K},j,z.now,G,Z))}catch(B){u1("pr-status-poller",B),z.schedule.set(q.id,NX({kind:"error",error:"network"},j,z.now,G,Z))}}return X}function n5(J,z=JQ,Y,Z=wk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,hk(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:z}).catch((j)=>u1("pr-status-poller",j)).finally(()=>{X=!1})},z);return H.unref?.(),()=>clearInterval(H)}var JQ=30000,bk=300000,Ik=600000,Sk,yk=900000,Tk=1800000,xk=0.2,uk=1e4,wk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},uk);try{let X=await Ek(["pr","view",z,"--json",HK],J,Y.signal);if(X.status===0&&!Z)try{let q=JSON.parse(X.stdout);return typeof q.number==="number"?{kind:"pr",view:q}:{kind:"empty"}}catch{return Jf({parseError:!0})}return Jf({spawnError:X.spawnError,timedOut:Z,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(G)}};var i5=k(()=>{zf();C1();Sk=JQ});function dk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function nk(J,z,Y,Z){let G=await tZ(z,J),X=await Y.latestCompletion(J);return{mtimeMs:G,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function ik(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(o1(Y.repo)||o1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??s1)}return z}class l5{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=ik(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){u1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:LX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=LX(z);let Z=this.options.cadence??{timeoutMs:vk,slowRetryMs:mk,minIntervalMs:ck},G=this.options.run??nk,X=Y;ZG(X,Z,(q)=>G(J,X.vendor,X.detector,q),(q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&dk(X.value,q))return;X.value=q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function $5(J,z,Y=S9,Z){if(Y<=0)return()=>{};let G=new l5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var S9=1500,vk=4000,mk=60000,ck=1500;var a5=k(()=>{Mq();GG();Fq();C1();zz()});import{readFileSync as lk}from"fs";import{homedir as $k}from"os";import{basename as ak,join as _k}from"path";function T9(J=process.env.KOBE_HOME_DIR??$k()){return _k(J,".config","kobe","state.json")}function _5(J){let z={};try{let B=JSON.parse(lk(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&rk.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",q=z["tasksPane.keysCollapsed"]===!0,H=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,j=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:G,locale:j,sortMode:X,keysCollapsed:q,projectFilter:H}}function ok(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 p5(J,z={}){let Y=z.debounceMs??y9;if(Y<=0)return()=>{};let Z=z.pollMs??pk,G=z.statePath??T9(),X=ak(G),q=_5(G);return J.publish("ui-prefs",q),xH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let j=_5(G);if(ok(q,j))return;q=j,J.publish("ui-prefs",j)}catch(j){u1("ui-prefs-watcher",j)}},onError:(j)=>u1("ui-prefs-watcher",j)})}var y9=200,pk=250,rk;var r5=k(()=>{C9();rk=["primary","success","info"]});function IG(J){return IZ.includes(J)?J:"auto"}var IZ,o5,fY="editor.kind",dY="editor.customCommand",uH="auto";var EH=k(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],o5=["nvim","vim","emacs","nano"]});function yZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var WY="settings.surface",SZ="chattab";function s5(J){return J>="0"&&J<="7"}function e5(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let q of sk.encode(Z))Y.push(q);Z=""}},X=z+1;while(X<J.length){let q=J[X];if(q==='"'){X++;break}if(q==="\\"){let H=J[X+1];if(H===void 0){Z+="\\",X++;continue}switch(H){case"a":G(),Y.push(7),X+=2;break;case"b":G(),Y.push(8),X+=2;break;case"t":G(),Y.push(9),X+=2;break;case"n":G(),Y.push(10),X+=2;break;case"v":G(),Y.push(11),X+=2;break;case"f":G(),Y.push(12),X+=2;break;case"r":G(),Y.push(13),X+=2;break;case'"':Z+='"',X+=2;break;case"\\":Z+="\\",X+=2;break;default:if(s5(H)){let j="",B=X+1;while(B<J.length&&j.length<3&&s5(J[B]))j+=J[B],B++;G(),Y.push(Number.parseInt(j,8)&255),X=B}else Z+=H,X+=2;break}}else Z+=q,X++}return G(),{value:tk.decode(new Uint8Array(Y)),end:X}}function TZ(J){if(J.length===0||J[0]!=='"')return J;return e5(J,0).value}function J6(J,z){if(J[0]==='"'){let Z=e5(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:TZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:TZ(J.slice(Y+z.length))}}function ek(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),G=J.indexOf(" => ",z);if(Z>z&&G>=0&&G<Z){let X=J.slice(0,z),q=J.slice(z+1,G),H=J.slice(G+4,Z),j=J.slice(Z+1);return{path:X+H+j,origPath:X+q+j}}}let Y=J6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:TZ(J)}}function wH(J){let z=[];for(let Y of J.split(`
|
|
66
|
+
`)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let G=Z[0],X=Z[1];if(Z[2]!==" ")continue;let q=Z.slice(3);if(G==="R"||G==="C"||X==="R"||X==="C"){let H=J6(q," -> ");if(H){z.push({x:G,y:X,path:H.neu,origPath:H.orig});continue}}z.push({x:G,y:X,path:TZ(q)})}return z}function t5(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function z6(J){let z=[];for(let Y of J.split(`
|
|
67
|
+
`)){let Z=Y.replace(/\r$/,"");if(Z.length===0)continue;let G=Z.indexOf("\t");if(G<0)continue;let X=Z.indexOf("\t",G+1);if(X<0)continue;let q=Z.slice(X+1);if(q.length===0)continue;let H=ek(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:t5(Z.slice(0,G)),deleted:t5(Z.slice(G+1,X))})}return z}var sk,tk;var PH=k(()=>{sk=new TextEncoder,tk=new TextDecoder});function lJ(J=process.env){return{...J,...x9}}var x9;var nY=k(()=>{x9={GIT_OPTIONAL_LOCKS:"0"}});async function SG(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??HY)(J),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,H=G&&Y.signal?AbortSignal.any([G.signal,Y.signal]):G?.signal??Y.signal,j;try{j=await Z.run(["git",...z],{cwd:J,env:x9,signal:H})}catch(B){if(q)clearTimeout(q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(q)clearTimeout(q);if(X&&j.exitCode===-1&&!j.stderr)return{stdout:j.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:j.stdout,stderr:j.stderr,status:j.exitCode}}function Jb(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((Z)=>Z===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function hH(J,z,Y={}){let Z=Jb(J,z);if(!Z)return null;let G=(Y.execForPath??HY)(J);try{return await G.readFile(Z)}catch{return null}}var vH=k(()=>{Oz();nY()});import{statSync as zb}from"fs";async function zQ(J,z){let Y=await SG(J,z,{timeoutMs:Yb}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function Gb(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 Y6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=TZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function Z6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let G=null,X=Z.match(/^\+\+\+ (.*)$/m);if(X)G=Y6(X[1]);if(G===null){let q=Z.match(/^--- (.*)$/m);if(q)G=Y6(q[1])}if(G===null){let q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(q)G=TZ(q[1])}if(G===null)continue;z.set(G,Z.endsWith(`
|
|
68
68
|
`)?Z:`${Z}
|
|
69
|
-
`)}return z}async function
|
|
69
|
+
`)}return z}async function Xb(J,z,Y){let Z=Array(J.length),G=Math.max(1,Math.min(z,J.length)),X=0;async function q(){while(X<J.length){let H=X++;Z[H]=await Y(J[H],H)}}return await Promise.all(Array.from({length:G},()=>q())),Z}async function Qb(J,z){let Y=await zQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
|
|
70
70
|
`)?Y.stdout:`${Y.stdout}
|
|
71
|
-
`;return""}async function
|
|
72
|
-
`),O={files:K,raw:A};return Response.json(O)}var $k=15000,ak=8;var H6=C(()=>{Oz();PH();hH()});import{isAbsolute as ok}from"path";function j6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function tk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function ek(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!ok(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!j6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=i1(Y).history,[G,X]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:G,latestMtime:X})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Jb(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!j6(z))return Response.json({error:"invalid vendor"},{status:400});if(!tk(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await i1(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function B6(J,z){if(z.pathname!==f6&&z.pathname!==sk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===f6?ek(z):Jb(z)}var f6="/api/history/sessions",sk="/api/history/messages";var W6=C(()=>{QY()});import{mkdir as zb,readFile as Yb,writeFile as Zb}from"fs/promises";import{join as V6}from"path";function K6(){return V6(XJ(),"notes")}function U6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function D6(J){return V6(K6(),`${J}.md`)}async function Xb(J){let z=J.searchParams.get("taskId");if(!U6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Yb(D6(z),"utf8")}catch(Z){if(Z.code!=="ENOENT")throw Z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Qb(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!U6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await zb(K6(),{recursive:!0}),await Zb(D6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function L6(J,z){if(z.pathname!==Gb)return null;if(J.method==="GET")return Xb(z);if(J.method==="PUT")return Qb(J);return Response.json({error:"method not allowed"},{status:405})}var Gb="/api/notes";var F6=C(()=>{p1()});function u9(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return u9(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return u9(J,Z,[...Y,z])}function x9(J){return Math.max(0,Math.min(255,Math.round(J)))}function ZQ(J,z,Y){let Z=Number.parseInt(J.slice(1),16),G=Number.parseInt(z.slice(1),16),X=(H,f)=>H>>f&255;return`#${(x9(X(Z,16)+(X(G,16)-X(Z,16))*Y)<<16|x9(X(Z,8)+(X(G,8)-X(Z,8))*Y)<<8|x9(X(Z,0)+(X(G,0)-X(Z,0))*Y)).toString(16).padStart(6,"0")}`}function Hb(J){let z=(H)=>u9(J,J.theme[H]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let G=z("textMuted")??ZQ(Z,Y,0.35),X=z("primary")??Z,Q=z("border")??ZQ(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??ZQ(Q,Z,0.3),fg:Z,muted:G,subtle:ZQ(G,Y,0.35),primary:X,"primary-hover":ZQ(X,Z,0.35),"kobe-orange":X,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??X}}function M6(J,z){if(z.pathname!==jb)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:fb})}var qb,fb,jb="/api/themes";var O6=C(()=>{oq();sq();tq();eq();JH();zH();YH();qb={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":FG,tokyonight:MG};fb=Object.fromEntries(Object.entries(qb).map(([J,z])=>[J,Hb(z)]).filter((J)=>J[1]!==null))});import{createHash as Bb,randomUUID as Wb}from"crypto";import{mkdir as Vb}from"fs/promises";import{join as E9,resolve as Kb}from"path";function Lb(J){return Bb("sha1").update(J).digest("hex").slice(0,16)}async function Ob(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>A6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>A6)return Response.json({error:"asset too large"},{status:413});let X=Ub[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let Q=Lb(Z),H=E9(_f(),Q);await Vb(H,{recursive:!0});let j=`${Wb()}.${X}`;return await Bun.write(E9(H,j),G),Response.json({url:`${vH}/${Q}/${j}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ab(J){let z=J.slice(vH.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),G=z.slice(Y+1);if(!Fb.test(Z)||!Mb.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=_f(),Q=Kb(X,Z,G);if(Q!==E9(X,Z,G)||!Q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let H=G.slice(G.lastIndexOf(".")+1).toLowerCase(),f=Db[H];if(!f)return Response.json({error:"invalid asset path"},{status:400});let j=Bun.file(Q);if(!await j.exists())return Response.json({error:"not found"},{status:404});return new Response(j,{headers:{"content-type":f,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function R6(J,z){if(z.pathname===vH){if(J.method==="POST")return Ob(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${vH}/`)){if(J.method==="GET")return Ab(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var vH="/api/issue-assets",A6=10485760,Ub,Db,Fb,Mb;var g6=C(()=>{p1();Ub={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Db={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Fb=/^[a-f0-9]{16}$/,Mb=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function N6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function C6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function Rb(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return N6(Z,C6(Z))}}async function gb(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(G){return N6(G,C6(G))}}async function k6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Rb(Y,z);if(J.method==="POST")return gb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function b6(J){return Nb.has(String(J??"").trim().toLowerCase())}function S6(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function Cb(J){let z=S6(J);return z!==null&&b6(z)}function I6(J,z={}){if(!J)return!0;if(Cb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=S6(J);return Z!==null&&Z===Y}function y6(J){let z=String(J??"").trim();return z&&!b6(z)?z:void 0}var Nb;var T6=C(()=>{Nb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var kb,x6;var u6=C(()=>{kb=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],x6=new Set(kb)});var cH={};q1(cH,{resolveRepoInit:()=>P6,resolveEngineLaunchInit:()=>IG});import{existsSync as w6,readFileSync as bb}from"fs";import{join as mH}from"path";function Ib(J){return w6(mH(J,E6))?`sh ${E6}`:void 0}function yb(J){let z=mH(J,Sb);if(!w6(z))return;try{let Y=bb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function P6(J,z){let Y=J?Xj(J):{},Z=Ib(z)??Y.initScript,G=yb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Tb(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function IG(J,z,Y={kind:"repo-init"}){let Z=P6(J,z);return{initScript:Z.initScript,firstMessage:Tb(Y,Z)}}var E6,Sb;var yG=C(()=>{C1();E6=mH(".kobe","init.sh"),Sb=mH(".kobe","init-prompt.md")});async function xb(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function w9(J,z){let Y=await xb(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function h6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=I1(z);if(!await K1(G)){let X=IG(Y.repo??"",Z,{kind:"repo-init"});if(!await pX({name:G,cwd:Z,command:cJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:G,worktreePath:Z}}function ub(J){return Qq(J,{bareSafe:!0})}async function v6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,Q=[...dq(cq(cJ(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],H=IG(Y.repo??"",Z,{kind:"none"}),f=ub(Q),j=H.initScript?.trim()?`${H.initScript}
|
|
73
|
-
${
|
|
74
|
-
data: ${JSON.stringify(
|
|
71
|
+
`;return""}async function G6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let Z;try{Z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!uY(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!HY(Z).isRemote)try{if(!zb(Z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let X=await zQ(Z,["rev-parse","--is-inside-work-tree"]);if(!X.ok||X.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${X.stderr.trim()||Z}`},{status:500});let[q,H,j]=await Promise.all([zQ(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),zQ(Z,["diff","--no-color"]),zQ(Z,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=Z6(H.stdout),V=Z6(j.stdout),f=q.stdout.split("\x00"),K=[],L=[];for(let C=0;C<f.length;C++){let E=f[C];if(!E)continue;let y=E[0]??" ",N=E[1]??" ",g=E.slice(3);if(!g)continue;if(y==="R"||y==="C"||N==="R"||N==="C")C++;let F=y==="?"&&N==="?",w=y!==" "&&y!=="?"?y:N,l=y!==" "&&y!=="?",d="";if(F)L.push({fileIndex:K.length,path:g});else if(d=V.get(g)??B.get(g)??"",V.has(g)&&B.has(g))d=`${V.get(g)}${B.get(g)}`;K.push({path:g,status:F?"untracked":Gb(w),staged:l,patch:d})}if(L.length>0){let C=await Xb(L,Zb,(E)=>Qb(Z,E.path));for(let E=0;E<L.length;E++)K[L[E].fileIndex].patch=C[E]}K.sort((C,E)=>C.path.localeCompare(E.path));let O=[j.stdout,H.stdout].filter(Boolean).join(`
|
|
72
|
+
`),A={files:K,raw:O};return Response.json(A)}var Yb=15000,Zb=8;var X6=k(()=>{Oz();PH();vH()});import{isAbsolute as qb}from"path";function q6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function jb(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Bb(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!qb(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!q6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=l1(Y).history,[G,X]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:G,latestMtime:X})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function fb(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!q6(z))return Response.json({error:"invalid vendor"},{status:400});if(!jb(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await l1(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function H6(J,z){if(z.pathname!==Q6&&z.pathname!==Hb)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===Q6?Bb(z):fb(z)}var Q6="/api/history/sessions",Hb="/api/history/messages";var j6=k(()=>{QY()});import{mkdir as Wb,readFile as Vb,writeFile as Kb}from"fs/promises";import{join as B6}from"path";function f6(){return B6(WJ(),"notes")}function W6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function V6(J){return B6(f6(),`${J}.md`)}async function Db(J){let z=J.searchParams.get("taskId");if(!W6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Vb(V6(z),"utf8")}catch(Z){if(Z.code!=="ENOENT")throw Z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Lb(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!W6(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 Wb(f6(),{recursive:!0}),await Kb(V6(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 K6(J,z){if(z.pathname!==Ub)return null;if(J.method==="GET")return Db(z);if(J.method==="PUT")return Lb(J);return Response.json({error:"method not allowed"},{status:405})}var Ub="/api/notes";var U6=k(()=>{r1()});function E9(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return E9(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return E9(J,Z,[...Y,z])}function u9(J){return Math.max(0,Math.min(255,Math.round(J)))}function YQ(J,z,Y){let Z=Number.parseInt(J.slice(1),16),G=Number.parseInt(z.slice(1),16),X=(H,j)=>H>>j&255;return`#${(u9(X(Z,16)+(X(G,16)-X(Z,16))*Y)<<16|u9(X(Z,8)+(X(G,8)-X(Z,8))*Y)<<8|u9(X(Z,0)+(X(G,0)-X(Z,0))*Y)).toString(16).padStart(6,"0")}`}function Fb(J){let z=(H)=>E9(J,J.theme[H]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let G=z("textMuted")??YQ(Z,Y,0.35),X=z("primary")??Z,q=z("border")??YQ(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:q,"line-subtle":z("borderSubtle")??q,"line-active":z("borderActive")??YQ(q,Z,0.3),fg:Z,muted:G,subtle:YQ(G,Y,0.35),primary:X,"primary-hover":YQ(X,Z,0.35),"kobe-orange":X,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??X}}function D6(J,z){if(z.pathname!==Ab)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Ob})}var Mb,Ob,Ab="/api/themes";var L6=k(()=>{oq();sq();tq();eq();JH();zH();YH();Mb={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":MG,tokyonight:FG};Ob=Object.fromEntries(Object.entries(Mb).map(([J,z])=>[J,Fb(z)]).filter((J)=>J[1]!==null))});import{createHash as Rb,randomUUID as gb}from"crypto";import{mkdir as Nb}from"fs/promises";import{join as w9,resolve as Cb}from"path";function Ib(J){return Rb("sha1").update(J).digest("hex").slice(0,16)}async function Tb(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>M6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>M6)return Response.json({error:"asset too large"},{status:413});let X=kb[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=Ib(Z),H=w9(oj(),q);await Nb(H,{recursive:!0});let B=`${gb()}.${X}`;return await Bun.write(w9(H,B),G),Response.json({url:`${mH}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function xb(J){let z=J.slice(mH.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),G=z.slice(Y+1);if(!Sb.test(Z)||!yb.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=oj(),q=Cb(X,Z,G);if(q!==w9(X,Z,G)||!q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let H=G.slice(G.lastIndexOf(".")+1).toLowerCase(),j=bb[H];if(!j)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":j,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function F6(J,z){if(z.pathname===mH){if(J.method==="POST")return Tb(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${mH}/`)){if(J.method==="GET")return xb(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var mH="/api/issue-assets",M6=10485760,kb,bb,Sb,yb;var O6=k(()=>{r1();kb={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},bb={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Sb=/^[a-f0-9]{16}$/,yb=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function A6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function R6(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 ub(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return A6(Z,R6(Z))}}async function Eb(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(G){return A6(G,R6(G))}}async function g6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return ub(Y,z);if(J.method==="POST")return Eb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function N6(J){return wb.has(String(J??"").trim().toLowerCase())}function C6(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 Pb(J){let z=C6(J);return z!==null&&N6(z)}function k6(J,z={}){if(!J)return!0;if(Pb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=C6(J);return Z!==null&&Z===Y}function b6(J){let z=String(J??"").trim();return z&&!N6(z)?z:void 0}var wb;var I6=k(()=>{wb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var hb,S6;var y6=k(()=>{hb=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],S6=new Set(hb)});var dH={};q1(dH,{resolveRepoInit:()=>u6,resolveEngineLaunchInit:()=>yG});import{existsSync as x6,readFileSync as vb}from"fs";import{join as cH}from"path";function cb(J){return x6(cH(J,T6))?`sh ${T6}`:void 0}function db(J){let z=cH(J,mb);if(!x6(z))return;try{let Y=vb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function u6(J,z){let Y=J?HB(J):{},Z=cb(z)??Y.initScript,G=db(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function nb(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 yG(J,z,Y={kind:"repo-init"}){let Z=u6(J,z);return{initScript:Z.initScript,firstMessage:nb(Y,Z)}}var T6,mb;var TG=k(()=>{C1();T6=cH(".kobe","init.sh"),mb=cH(".kobe","init-prompt.md")});async function ib(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function P9(J,z){let Y=await ib(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function E6(J,z){let{task:Y,worktreePath:Z}=await P9(J,z),G=y1(z);if(!await K1(G)){let X=yG(Y.repo??"",Z,{kind:"repo-init"});if(!await pX({name:G,cwd:Z,command:dJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:G,worktreePath:Z}}function lb(J){return nZ(J,{bareSafe:!0})}async function w6(J,z){let{task:Y,worktreePath:Z}=await P9(J,z),G=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,q=[...dq(cq(dJ(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],H=yG(Y.repo??"",Z,{kind:"none"}),j=lb(q),B=H.initScript?.trim()?`${H.initScript}
|
|
73
|
+
${j}`:j,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",B]}}async function P6(J,z){let{worktreePath:Y}=await P9(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function h6(J){let z=y1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}var v6=k(()=>{Yz();dQ();TG();P1();GJ()});import{existsSync as $b}from"fs";import{join as m6,normalize as n6}from"path";function ab(J){let z=null,Y=null,Z=new TextEncoder,G=new ReadableStream({start(X){z=J((H,j)=>{try{X.enqueue(Z.encode(`event: ${H}
|
|
74
|
+
data: ${JSON.stringify(j)}
|
|
75
75
|
|
|
76
76
|
`))}catch{}}),Y=setInterval(()=>{try{X.enqueue(Z.encode(`: ping
|
|
77
77
|
|
|
78
|
-
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function
|
|
79
|
-
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function
|
|
80
|
-
`,"utf8");async function q0(){if(
|
|
81
|
-
`);while(
|
|
82
|
-
`)}}return
|
|
83
|
-
`,Q=await SS(this.tmpPath,"w",420);try{await Q.writeFile(X,"utf8"),await Q.sync()}finally{await Q.close()}await IS(this.tmpPath,this.path);for(let f of J)this.dirtyIds.delete(f);for(let f of z)this.removedIds.delete(f);let H=new Set(this.cache.tasks.map((f)=>f.id));for(let f of Z)if(!H.has(f.id))this.cache.tasks.push(f)}finally{await L4(this.lockPath)}}async readDiskTasks(){let J;try{J=await N4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return b4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((Q)=>[Q.id,Q])),G=[],X=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))G.push(Q);else{let H=Z.get(Q.id);if(H===void 0)continue;G.push(H)}X.add(Q.id)}for(let Q of J){if(X.has(Q.id)||Y.has(Q.id))continue;G.push(Q),X.add(Q.id)}return G}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??o1,...J,id:FX(R4()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((f)=>f.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:G,createdAt:X,...Q}=z,H={...Z,...Q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let Q=G[X+z];if(!Q)return Z;let H=this.cache.tasks.findIndex((L)=>L.id===J),f=this.cache.tasks.findIndex((L)=>L.id===Q);if(H<0||f<0||H===f)return Z;let[j]=this.cache.tasks.splice(H,1);if(!j)return Z;let V=H<f?f-1:f,B=z>0?V+1:V,K={...j,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(B,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let Q=this.cache.tasks.findIndex((f)=>f.id===X.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:Q,position:X.position}}),Y=!1,Z=new Map,G=[];for(let{idx:X,position:Q}of z){let H=this.cache.tasks[X];if(!H||H.position===Q)continue;if(!Z.has(X))Z.set(X,H);if(this.cache.tasks[X]={...H,position:Q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),G.push(H.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[Q,H]of Z)this.cache.tasks[Q]=H;for(let Q of G)this.dirtyIds.delete(Q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await C4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await C4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:VY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:VY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function b4(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:VY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:VY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let Q of G){let H=PS(Q);if(H)X.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:VY,tasks:X}}function PS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!dS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",G=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:FX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:G,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:RY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:hS(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function hS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!vS(z.provider)||!mS(z.lifecycle)||!cS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function vS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function mS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function cS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function dS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var xS=(J)=>new Promise((z)=>setTimeout(z,J)),uS=25,ES=5000,VY=3;var qQ=C(()=>{zz();_1();F4();g4()});var _H;var S4=C(()=>{_H=class _H extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var T4={};q1(T4,{GitWorktreeManager:()=>pH});import y4 from"fs";import Iz from"path";class pH{execDeps;constructor(J=nS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),G={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new _H(z,Y.cwd,G);return G}async create(J,z,Y,Z){let G=this.ctxFor(J);if(iY("repo",G.dir),iY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let f=await this.tryDescribe(G,Y);if(f){if(f.branch!==z)throw Error(`worktree at ${Y} is on branch '${f.branch}', refusing to hijack to '${z}'`);return f}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(Iz.dirname(Y));let Q=await this.branchExists(G,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(G.exec,Q,{cwd:G.dir});let H=await this.tryDescribe(G,Y);if(!H)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?kK(z,J.slug):RK(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){iY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let G=await this.findRepoFor(Y,J);if(!G)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=[];for(let X of Z){if(!X.path)continue;let Q=z.remote?I4(z.dir,X.path):BB(J,X.path);if(!Q)continue;if(!X.branch||X.detached)continue;let H=HQ(Q),f=HQ(X.path),j=Iz.relative(H,f),V=Iz.join(Q,j),B=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:B})}return G}async listAll(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=z.remote?z.dir:HQ(z.dir),X=[];for(let Q of Z){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:HQ(Q.path))===G)continue;let H=await this.isDirty(Q.path);X.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:H,kobeManaged:z.remote?I4(z.dir,Q.path)!==null:NK(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return X.sort((Q,H)=>H.lastActivityMs-Q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return y4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){iY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){iY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(iY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),G=await this.findRepoFor(Z,J);if(!G)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:G})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=n9(Y.stdout),G=(H)=>J.remote?H:HQ(H),X=G(z),Q=Z.find((H)=>H.path&&G(H.path)===X);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let G=Iz.isAbsolute(Z)?Z:Iz.resolve(z,Z);return Iz.basename(G)===".git"?Iz.dirname(G):G}catch(Y){if(Y instanceof _H)return null;throw Y}}}function n9(J){let z=[],Y=null;for(let Z of J.split(`
|
|
84
|
-
`)){let G=Z.replace(/\r$/,"");if(G===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function
|
|
78
|
+
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function _b(J,z,Y){try{let{name:Z,payload:G}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!S6.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let X=await z.request(Z,G),q=G?.taskId;if(typeof q==="string"){let H=Z==="task.archive"&&G.archived!==!1;if(Z==="task.delete"||H)Y(q)}return Response.json({result:X})}catch(Z){let G=Z instanceof Error&&Z.name!=="Error"?Z.name:void 0;return Response.json({error:Z instanceof Error?Z.message:String(Z),...G?{name:G}:{}},{status:500})}}async function pb(){try{let z=(await GY()).map((Y)=>({id:Y,label:DZ(Y),effortLevels:l1(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 rb(){return Response.json({api:LZ()})}function ob(){return Response.json({projects:SJ()})}function iY(J,z=""){return typeof J==="string"?J:z}function sb(J,z){return typeof J==="boolean"?J:z}function _6(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&a6.test(Y)&&!fJ(Y))}function tb(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function eb(J,z){return iY(J[Rz(z)]).trim()||DZ(z)}function JI(J,z){return iY(J[Az(z)]).trim()||SX(z).join(" ")}function p6(){let J=MJ(),z=_6(J),Y=[...eY,...z],Z=iY(J.lastSelectedVendor,"claude"),G=iY(J.focusAccent,"primary");return Response.json({activeTheme:iY(J.activeTheme,"claude"),transparentBackground:sb(J.transparentBackground,!1),focusAccent:$6.includes(G)?G:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:yZ(J[WY]??SZ),editorKind:IG(J[fY]??uH),editorCustomCommand:iY(J[dY]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[KZ]===!0,dispatcher:J[UZ]===!0,defaultEngine:Z,engines:Y.map((X)=>({id:X,label:eb(J,X),command:JI(J,X),isBuiltin:fJ(X),isCustom:!fJ(X),isDefault:X===Z}))})}function ZQ(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function xZ(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function zI(J){try{let z=await J.json(),Y={};if(ZQ(Y,"activeTheme",z.activeTheme),xZ(Y,"transparentBackground",z.transparentBackground),$6.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(xZ(Y,"notifications.toast.enabled",z.notificationsToast),xZ(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[WY]=z.settingsSurface;if(IZ.includes(z.editorKind))Y[fY]=z.editorKind;ZQ(Y,dY,z.editorCustomCommand),xZ(Y,"experimental.remoteProjects",z.remoteProjects),xZ(Y,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),xZ(Y,KZ,z.autoStatus),xZ(Y,UZ,z.dispatcher),ZQ(Y,"lastSelectedVendor",z.defaultEngine);let Z=MJ(),G=_6(Z),X=new Set([...eY,...G]),q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of q){if(!H||typeof H!=="object")continue;let j=H;if(typeof j.id!=="string"||!X.has(j.id))continue;ZQ(Y,Az(j.id),j.command),ZQ(Y,Rz(j.id),j.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,j=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!a6.test(j)||fJ(j)||X.has(j))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,j],Y[Az(j)]=iY(H.command).trim();let B=iY(H.label).trim();Y[Rz(j)]=B&&B!==j?B:tb(j)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!fJ(H)){if(Y.customEngineIds=G.filter((j)=>j!==H),Y[Az(H)]=void 0,Y[Rz(H)]=void 0,Z.lastSelectedVendor===H)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)NY(Y);return p6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function YI(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await E6(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function c6(J,z,Y){try{let Z=J.searchParams.get("taskId");if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}function r6(){return Response.json({review:S1(nH.review)??null,pr:S1(nH.pr)??null})}async function ZI(J){try{let z=await J.json();if(typeof z.review==="string")zJ(nH.review,z.review);if(typeof z.pr==="string")zJ(nH.pr,z.pr);return r6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function GI(J,z){let Z=n6(m6(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let G=Bun.file($b(Z)?Z:m6(z,"index.html"));if(!await G.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(G)}function XI(J){let{link:z,sseSends:Y,staticDir:Z}=J,G=J.tearDownSession??((X)=>void h6(X));return async function(q){let H=new URL(q.url);if(H.pathname===l6)return new Response(i6);if(!k6(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return ab((O)=>{let A=J.onSseOpen?.()??(()=>{});return O("snapshot",z.snapshot()),Y.add(O),()=>{Y.delete(O),A()}});if(H.pathname==="/api/rpc"&&q.method==="POST")return _b(q,z,G);if(H.pathname==="/api/session"&&q.method==="POST")return YI(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return c6(H,z,w6);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return c6(H,z,P6);if(H.pathname==="/api/engines"&&q.method==="GET")return pb();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return rb();if(H.pathname==="/api/projects"&&q.method==="GET")return ob();if(H.pathname==="/api/settings"&&q.method==="GET")return p6();if(H.pathname==="/api/settings"&&q.method==="PATCH")return zI(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return r6();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return ZI(q);let j=await K6(q,H);if(j)return j;let B=await G6(q,H);if(B)return B;let V=await H6(q,H);if(V)return V;let f=await g6(q,H,z);if(f)return f;let K=await F6(q,H);if(K)return K;let L=D6(q,H);if(L)return L;if(Z)return GI(H.pathname,Z);return new Response("not found",{status:404})}}function uZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function h9(J){return J.length>1?J.replace(/\/+$/,""):J}function QI(J,z){let Y=h9(z),Z=new Set([z]);for(let G of J){let X=h9(G.repo),q=h9(G.worktreePath);if(X===Y||q===Y){if(G.repo)Z.add(G.repo);if(G.worktreePath)Z.add(G.worktreePath)}}return[...Z]}function o6(J){let z=sX();return{async request(Y,Z){return await oX(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(Vz),Z={},G=uZ(J.bus,"issue.snapshot");if(G)for(let H of QI(Y,G.repoRoot))Z[H]={...G,repoRoot:H};let X=uZ(J.bus,"task.jobs"),q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:uZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:uZ(J.bus,"update")?.info??null,jobs:q,worktreeChanges:uZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:uZ(J.bus,"session.deliver"),uiPrefs:uZ(J.bus,"ui-prefs"),connected:!0}}}}async function d6(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
|
|
79
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function qI(J,z=l6){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==i6)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await d6(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await d6(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function s6(J){if(J.takeover!==!1)await qI(J.port);let z=new Set,Y=J.onEvent((H)=>{for(let j of z)j("channel",H)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=b6(Z),X=XI({link:J.link,sseSends:z,staticDir:J.staticDir?n6(J.staticDir):void 0,allowedHost:G,onSseOpen:J.onSseOpen}),q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:X});return{port:q.port??J.port,hostname:Z,close(){Y(),q.stop(!0)}}}var i6="kobe-web",l6="/__kobe_web",$6,a6,nH;var t6=k(()=>{GZ();Yz();QY();IX();mq();C1();sz();EH();p1();X6();j6();U6();L6();RH();zZ();O6();I6();y6();v6();$6=["primary","success","info"],a6=/^[a-z][a-z0-9_-]{0,47}$/;nH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var e6={};q1(e6,{sameWorktreeChanges:()=>$z,readWorktreeChanges:()=>jI,pickPushedChanges:()=>lH,parsePorcelain:()=>xG});import{spawnSync as HI}from"child_process";function $z(J,z){return J.added===z.added&&J.deleted===z.deleted}function lH(J,z){if(!J)return null;return J.get(z)??iH}function jI(J){if(!J)return iH;try{let z=HI("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:lJ()});if(z.status!==0||!z.stdout)return iH;return xG(z.stdout)}catch{return iH}}function xG(J){let z=0,Y=0;for(let{x:Z,y:G}of wH(J))if(Z==="D"||G==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var iH;var uG=k(()=>{nY();PH();iH={added:0,deleted:0}});async function VI(J,z){let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:lJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return xG(Y.stdout)}function KI(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(o1(Y.repo)||o1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class J4{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=KI(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){u1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:BI,slowRetryMs:fI,minIntervalMs:WI},Z=this.options.run??VI;ZG(z,Y,(G)=>Z(J,G),(G)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&$z(z.value,G))return;z.value=G,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function z4(J,z,Y=v9,Z){if(Y<=0)return()=>{};let G=new J4(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var v9=2000,BI=4000,fI=60000,WI=1500;var Y4=k(()=>{nY();GG();C1();uG()});import{mkdir as Z4,readFile as UI,unlink as m9,writeFile as DI}from"fs/promises";import{createServer as LI}from"net";import{dirname as G4}from"path";import{StringDecoder as MI}from"string_decoder";function OI(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return X4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:X4}async function q4(J,z={}){let Y=z.socketPath??Ez(z.homeDir),Z=z.pidPath??YY(z.homeDir),G=z.startedAt??new Date,X=new Set,q=new Set,H=1,j=new I9({clients:function*(){yield*X,yield*q},idleGraceMs:OI(),onIdleStop:()=>void q0().catch((h)=>u1("daemon-idle-shutdown",h))}),B=new Y9;B.onPublish((h)=>{Q4(X,{type:"event",name:h.channel,payload:h.payload})});let f=new aB(B,void 0,void 0,async(h)=>{let R=J.getTask(h);if(!R?.worktreePath)return;return tZ(R.vendor??s1,R.worktreePath)}),K=new CH(NH(z.homeDir));await Z4(G4(Y),{recursive:!0}),await Z4(G4(Z),{recursive:!0}),await m9(Y).catch(()=>{});let L=LI((h)=>{let R={id:H++,connectedAt:new Date,socket:h,writer:new z9(h),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(R);let t=new MI("utf8");h.on("data",(u)=>{R.buffer+=t.write(u),a(R)}),h.on("error",()=>{}),h.on("close",()=>{if(X.delete(R),R.subscribed)iz("conn",`client #${R.id} (${R.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${j.guiCount()} gui left`);j.clientDisconnected(R.holdsLifetime)})}),O=J.subscribeTasks((h)=>{B.publish("task.snapshot",{tasks:h.map(Vz)})}),A=z.checkUpdate??QX,C=z.updatePollMs??FI,E=()=>{A().then((h)=>B.publish("update",{info:h})).catch((h)=>u1("update-poller",h))},y=null;if(C>0)E(),y=setInterval(E,C),y.unref?.();let N=z.autoTitlePollMs??J9,g=tU(J,N,()=>j.hasSubscribers()),F=p5(B,{statePath:T9(z.homeDir),debounceMs:z.uiPrefsDebounceMs??y9}),w=m5(B,{path:b9(z.homeDir),debounceMs:z.keybindingsDebounceMs??k9}),l=z4(J,B,z.worktreeChangesTickMs??v9,()=>j.hasSubscribers()),d=$5(J,B,z.transcriptActivityTickMs??S9,()=>j.hasSubscribers()),s=n5(J,z.prStatusPollMs??JQ,()=>j.hasSubscribers()),P=null,J0={socketPath:Y,pidPath:Z,startedAt:G,get webPort(){return P?.port},clients:X,async close(){if(j.markStopping(),O(),P?.close(),P=null,y)clearInterval(y);g(),s(),F(),w(),l(),d(),f.close(),Q4(X,{type:"event",name:"daemon.stopping",payload:{}});for(let h of Array.from(X))h.socket.destroy();await new Promise((h)=>L.close(()=>h())),await m9(Y).catch(()=>{}),await m9(Z).catch(()=>{})}};await new Promise((h,R)=>{let t=L;t.once("error",R),L.listen(Y,()=>{t.removeListener("error",R),h()})}),await DI(Z,`${process.pid}
|
|
80
|
+
`,"utf8");async function q0(){if(j.isStopping())return;j.markStopping(),await z.onStop?.(),setTimeout(()=>{J0.close().catch((h)=>u1("daemon-shutdown",h))},0).unref()}let D0=sX();function K0(h){return{orch:J,bus:B,activity:f,issues:K,daemon:{startedAt:G,socketPath:Y,webPort:P?.port,pid:process.pid,guiCount:()=>j.guiCount(),stopSoon:q0},clientId:h}}if(z.webPort!==void 0){let h=o6({orch:J,bus:B,activity:f,ctx:K0});P=await s6({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:h,onEvent:(R)=>B.onPublish(R),onSseOpen:()=>{let R={subscribed:!0,holdsLifetime:!0};return q.add(R),j.guiAttached(),iz("conn",`web client subscribed \u2014 ${X.size+q.size} client(s), ${j.guiCount()} gui`),()=>{q.delete(R),iz("conn",`web client disconnected \u2014 ${X.size+q.size} client(s), ${j.guiCount()} gui left`),j.clientDisconnected(!0)}}}),iz("web",`daemon web transport listening on http://${P.hostname}:${P.port}`)}async function T0(h,R){if(h.name==="subscribe"){let t=q9(h.payload),u=R.subscribed;R.subscribed=!0;let n=t.role==="gui"?"gui":"pane";R.holdsLifetime=n==="gui",R.channels=AV(t.channels);let X0=!u;if(R.holdsLifetime)j.guiAttached();iz("conn",`client #${R.id} subscribed as ${n}${R.channels?` [${[...R.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${j.guiCount()} gui${X0?" (collectors resume)":""}`);for(let Q0 of B.snapshot()){if(R.channels&&!R.channels.has(Q0.channel))continue;GQ(R,{type:"event",name:Q0.channel,payload:Q0.payload})}if(!R.channels||R.channels.has("engine-state"))for(let Q0 of f.currentNonIdle())GQ(R,{type:"event",name:"engine-state",payload:Q0});return{}}return oX(D0,h.name,h.payload,K0(R.id))}async function S(h,R){try{let t=await T0(h,R);GQ(R,{type:"response",id:h.id,name:h.name,payload:t})}catch(t){GQ(R,{type:"response",id:h.id,name:h.name,error:Q9(t)})}}function a(h){let R=h.buffer.indexOf(`
|
|
81
|
+
`);while(R!==-1){let t=h.buffer.slice(0,R);if(h.buffer=h.buffer.slice(R+1),t.trim().length>0)try{let u=JSON.parse(t);if(u.type!=="request")throw Error("daemon only accepts request frames from clients");S(u,h)}catch(u){GQ(h,{type:"response",id:"parse-error",error:{message:u instanceof Error?u.message:String(u)}})}R=h.buffer.indexOf(`
|
|
82
|
+
`)}}return J0}async function EG(J){try{let z=await UI(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function H4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function GQ(J,z){J.writer.write(qX(z),H4(z))}function Q4(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=H4(z),G=null;for(let X of J){if(!X.subscribed&&z.type==="event")continue;if(Y&&X.channels&&!X.channels.has(Y))continue;G??=qX(z),X.writer.write(G,Z)}}var FI=21600000,X4=3000;var $H=k(()=>{Fq();zz();NJ();c7();eU();RH();K9();c5();d5();$Z();i5();zZ();a5();r5();t6();Y4();RH();K9()});import{unlink as j4}from"fs/promises";function AI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function wG(J,z){let Y=await EG(z),Z=Y!==null&&Y!==process.pid?Y:null,G=Z!==null&&AI(Z),X=G?"graceful":"absent",q=new tJ(J),H=q.request("daemon.stop").catch(()=>{return}),j=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([H,j]),q.close(),G&&Z!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(Z,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(Z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((f)=>setTimeout(f,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),X="sigkill",await new Promise((f)=>setTimeout(f,100))}catch{}}return await j4(J).catch(()=>{}),await j4(z).catch(()=>{}),{pid:Y,method:X}}var aH=k(()=>{HX();$H()});var MH={};q1(MH,{testDaemonResponds:()=>_H,ensureDaemonReachable:()=>PG,connectOrStartDaemon:()=>Iz,connectIfRunning:()=>Qz});import{spawn as RI}from"child_process";import{closeSync as gI,existsSync as NI,mkdirSync as CI,openSync as kI}from"fs";import{dirname as B4,resolve as c9}from"path";import{fileURLToPath as bI}from"url";function yI(J,z,Y,Z){let G="ignore",X;try{CI(B4(Z),{recursive:!0}),X=kI(Z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(RI(J,[...z],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{gI(X)}catch{}}async function PG(){let J=Ez();if(await _H(J))return J;await wG(J,YY()).catch(()=>{});let[z,...Y]=TI(II);yI(z,Y,process.env,oQ());let Z=Date.now()+5000;while(Date.now()<Z){if(await _H(J))return J;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Iz(){let J=await PG(),z=new tJ(J);return await z.connect(),z}async function Qz(){let J=Ez();if(!await _H(J))return null;let z=new tJ(J);return await z.connect(),z}async function _H(J,z=SI){let Y=new tJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:sJ}).then(()=>!0).catch(()=>!0),G,X=new Promise((H)=>{G=setTimeout(()=>H(!1),z)}),q=await Promise.race([Z,X]);if(G)clearTimeout(G);return Y.close(),q}function TI(J){let z=bI(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=B4(z),Z=[c9(Y,"../cli/index.ts"),c9(Y,"../../../kobe/src/cli/index.ts"),c9(Y,"../cli/index.js")],G=Z.find((X)=>NI(X));if(G)return[process.execPath,G,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var II,SI=3000;var CJ=k(()=>{aH();$Z();zZ();HX();II=["daemon","start"]});import{mkdir as xI,readFile as f4,unlink as V4,writeFile as W4}from"fs/promises";import{dirname as uI}from"path";function EI(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 d9(J,z={}){await xI(uI(J),{recursive:!0});try{await W4(J,String(process.pid),{flag:"wx"});return}catch(G){if(G.code!=="EEXIST")throw G}let Y=-1;try{let G=(await f4(J,"utf8")).trim();if(Y=Number.parseInt(G,10),!Number.isFinite(Y))Y=-1}catch{return d9(J,z)}let Z=Y>0&&EI(Y);if(Z&&!z.forceTakeover)throw new XQ(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await V4(J)}catch(G){if(G.code!=="ENOENT")throw G}try{await W4(J,String(process.pid),{flag:"wx"})}catch(G){if(G.code==="EEXIST"){let X=-1;try{X=Number.parseInt((await f4(J,"utf8")).trim(),10)}catch{X=-1}throw new XQ(`task index lockfile contended during takeover (winner pid ${X})`,X)}throw G}}async function K4(J){try{await V4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var XQ;var U4=k(()=>{XQ=class XQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function wI(J,z){let Y="",Z=J;for(let G=z-1;G>=0;G--){let X=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,Z=(Z-X)/32}return Y}function M4(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let Z=0;Z<J;Z++)Y[Z]=(z[Z]??0)&31;return Y}function PI(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 hI(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function F4(J=Date.now()){let z;if(J===D4){let Y=L4.slice();if(!PI(Y))z=M4(16);else z=Y}else z=M4(16);return D4=J,L4=z,wI(J,10)+hI(z)}var D4=-1,L4;var O4=k(()=>{L4=Array(16).fill(0)});var n9={};q1(n9,{TaskIndexStore:()=>hG});import{mkdir as vI,open as mI,readFile as A4,rename as cI,unlink as R4}from"fs/promises";import{homedir as dI}from"os";import{dirname as nI,join as g4}from"path";async function aI(J){let z=Date.now()+$I;for(;;)try{await d9(J);return}catch(Y){if(!(Y instanceof XQ)||Date.now()>=z)throw Y;await iI(lI)}}class hG{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:VY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??dI(),this.kobeDir=g4(this.homeDir,".kobe"),this.path=g4(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await A4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=N4(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 vI(nI(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await aI(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),X=`${JSON.stringify({version:VY,tasks:Z},null,2)}
|
|
83
|
+
`,q=await mI(this.tmpPath,"w",420);try{await q.writeFile(X,"utf8"),await q.sync()}finally{await q.close()}await cI(this.tmpPath,this.path);for(let j of J)this.dirtyIds.delete(j);for(let j of z)this.removedIds.delete(j);let H=new Set(this.cache.tasks.map((j)=>j.id));for(let j of Z)if(!H.has(j.id))this.cache.tasks.push(j)}finally{await K4(this.lockPath)}}async readDiskTasks(){let J;try{J=await A4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return N4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((q)=>[q.id,q])),G=[],X=new Set;for(let q of this.cache.tasks){if(z.has(q.id))G.push(q);else{let H=Z.get(q.id);if(H===void 0)continue;G.push(H)}X.add(q.id)}for(let q of J){if(X.has(q.id)||Y.has(q.id))continue;G.push(q),X.add(q.id)}return G}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??s1,...J,id:MX(F4()),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((j)=>j.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:G,createdAt:X,...q}=z,H={...Z,...q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let q=G[X+z];if(!q)return Z;let H=this.cache.tasks.findIndex((L)=>L.id===J),j=this.cache.tasks.findIndex((L)=>L.id===q);if(H<0||j<0||H===j)return Z;let[B]=this.cache.tasks.splice(H,1);if(!B)return Z;let V=H<j?j-1:j,f=z>0?V+1:V,K={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(f,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let q=this.cache.tasks.findIndex((j)=>j.id===X.id);if(!(q>=0?this.cache.tasks[q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:q,position:X.position}}),Y=!1,Z=new Map,G=[];for(let{idx:X,position:q}of z){let H=this.cache.tasks[X];if(!H||H.position===q)continue;if(!Z.has(X))Z.set(X,H);if(this.cache.tasks[X]={...H,position:q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),G.push(H.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[q,H]of Z)this.cache.tasks[q]=H;for(let q of G)this.dirtyIds.delete(q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await R4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await R4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:VY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:VY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function N4(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:VY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:VY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let q of G){let H=_I(q);if(H)X.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:VY,tasks:X}}function _I(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(!tI(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",G=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:MX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:G,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:RY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:pI(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 pI(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!rI(z.provider)||!oI(z.lifecycle)||!sI(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 rI(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function oI(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function sI(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function tI(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var iI=(J)=>new Promise((z)=>setTimeout(z,J)),lI=25,$I=5000,VY=3;var QQ=k(()=>{zz();p1();U4();O4()});var pH;var C4=k(()=>{pH=class pH 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 I4={};q1(I4,{GitWorktreeManager:()=>rH});import b4 from"fs";import Sz from"path";class rH{execDeps;constructor(J=eI){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),G={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new pH(z,Y.cwd,G);return G}async create(J,z,Y,Z){let G=this.ctxFor(J);if(lY("repo",G.dir),lY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let j=await this.tryDescribe(G,Y);if(j){if(j.branch!==z)throw Error(`worktree at ${Y} is on branch '${j.branch}', refusing to hijack to '${z}'`);return j}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(Sz.dirname(Y));let q=await this.branchExists(G,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(G.exec,q,{cwd:G.dir});let H=await this.tryDescribe(G,Y);if(!H)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?NK(z,J.slug):OK(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){lY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let q=await this.findRepoFor(Y,J);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,J);if(!G)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(J){let z=this.ctxFor(J);lY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=i9(Y.stdout),G=[];for(let X of Z){if(!X.path)continue;let q=z.remote?k4(z.dir,X.path):ff(J,X.path);if(!q)continue;if(!X.branch||X.detached)continue;let H=qQ(q),j=qQ(X.path),B=Sz.relative(H,j),V=Sz.join(q,B),f=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:f})}return G}async listAll(J){let z=this.ctxFor(J);lY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=i9(Y.stdout),G=z.remote?z.dir:qQ(z.dir),X=[];for(let q of Z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((z.remote?q.path:qQ(q.path))===G)continue;let H=await this.isDirty(q.path);X.push({path:q.path,branch:q.branch,head:q.head??"",dirty:H,kobeManaged:z.remote?k4(z.dir,q.path)!==null:RK(J,q.path),lastActivityMs:await this.lastActivityMs(z.exec,q.path)})}return X.sort((q,H)=>H.lastActivityMs-q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return b4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){lY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){lY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(lY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),G=await this.findRepoFor(Z,J);if(!G)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:G})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=i9(Y.stdout),G=(H)=>J.remote?H:qQ(H),X=G(z),q=Z.find((H)=>H.path&&G(H.path)===X);if(!q||!q.path||!q.branch||q.detached)return null;return{path:z,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let G=Sz.isAbsolute(Z)?Z:Sz.resolve(z,Z);return Sz.basename(G)===".git"?Sz.dirname(G):G}catch(Y){if(Y instanceof pH)return null;throw Y}}}function i9(J){let z=[],Y=null;for(let Z of J.split(`
|
|
84
|
+
`)){let G=Z.replace(/\r$/,"");if(G===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function k4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function lY(J,z){if(!z||!Sz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function qQ(J){try{return b4.realpathSync(J)}catch{return Sz.resolve(J)}}var eI;var l9=k(()=>{Oz();C1();C4();Wf();eI={execForRepo:XG,execForPath:HY,remoteBasePath(J){return JY(J)?.basePath??null}}});var oH;var S4=k(()=>{oH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var T4={};q1(T4,{runCompletionsSubcommand:()=>ZS});function JS(){return`# kobe bash completions
|
|
85
85
|
# Source: kobe completions bash
|
|
86
86
|
|
|
87
87
|
_kobe() {
|
|
@@ -89,7 +89,7 @@ _kobe() {
|
|
|
89
89
|
COMPREPLY=()
|
|
90
90
|
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
91
91
|
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
92
|
-
opts="${
|
|
92
|
+
opts="${oH.join(" ")}"
|
|
93
93
|
|
|
94
94
|
if [[ \${cur} == * ]] ; then
|
|
95
95
|
COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
|
|
@@ -97,47 +97,47 @@ _kobe() {
|
|
|
97
97
|
fi
|
|
98
98
|
}
|
|
99
99
|
complete -F _kobe kobe
|
|
100
|
-
`}function
|
|
100
|
+
`}function zS(){return`#compdef kobe
|
|
101
101
|
# kobe zsh completions
|
|
102
102
|
# Source: kobe completions zsh
|
|
103
103
|
|
|
104
104
|
_kobe() {
|
|
105
105
|
local -a subcommands
|
|
106
|
-
subcommands=(${
|
|
106
|
+
subcommands=(${oH.map((z)=>`"${z}"`).join(" ")})
|
|
107
107
|
|
|
108
108
|
_arguments "1:subcommand:(\${subcommands})"
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
_kobe "$@"
|
|
112
|
-
`}function
|
|
112
|
+
`}function YS(){return`# kobe fish completions
|
|
113
113
|
# Source: kobe completions fish
|
|
114
114
|
|
|
115
|
-
${
|
|
115
|
+
${oH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
|
|
116
116
|
`)}
|
|
117
|
-
`}async function
|
|
117
|
+
`}async function ZS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(y4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
|
|
118
118
|
|
|
119
|
-
${
|
|
119
|
+
${y4}`),process.exit(2);let Y;if(z==="bash")Y=JS();else if(z==="zsh")Y=zS();else Y=YS();process.stdout.write(Y)}var y4=`Usage: kobe completions <bash|zsh|fish>
|
|
120
120
|
|
|
121
121
|
Generate a shell completion script for kobe and print it to stdout.
|
|
122
122
|
Redirect the output to the appropriate file for your shell.
|
|
123
|
-
`;var
|
|
124
|
-
|
|
125
|
-
${
|
|
126
|
-
`),process.exit(2)}function
|
|
127
|
-
`)}function
|
|
128
|
-
`)}function
|
|
129
|
-
`);return}let z=
|
|
130
|
-
`);return}process.stdout.write(`${
|
|
131
|
-
`)}var
|
|
132
|
-
`),
|
|
133
|
-
|
|
134
|
-
${
|
|
135
|
-
`),process.exit(2)}function
|
|
136
|
-
`);return}let{getRepoInitOverride:Z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),{existsSync:
|
|
137
|
-
`)});import{spawnSync as
|
|
123
|
+
`;var x4=k(()=>{S4()});var P4={};q1(P4,{runExportSubcommand:()=>fS,renderExport:()=>w4,displayWidth:()=>sH});function GS(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??s1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function $9(J){process.stderr.write(`kobe export: ${J}
|
|
124
|
+
|
|
125
|
+
${E4}
|
|
126
|
+
`),process.exit(2)}function XS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let G=J[++Y];if(G===void 0)$9("--format requires a value (json, csv, or table)");z=u4(G)}else if(Z.startsWith("--format="))z=u4(Z.slice(9));else $9(`unexpected argument "${Z}"`)}return z}function u4(J){if(J==="json"||J==="csv"||J==="table")return J;$9(`unknown format "${J}" (expected json, csv, or table)`)}function QS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function qS(J){let z=[HQ.join(",")];for(let Y of J)z.push(HQ.map((Z)=>QS(Y[Z])).join(","));return z.join(`
|
|
127
|
+
`)}function sH(J){let z=0;for(let Y of J)z+=HS(Y.codePointAt(0));return z}function HS(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-sH(J)))}function BS(J){let z={};for(let G of HQ)z[G]=Math.max(sH(G),...J.map((X)=>sH(X[G])));let Y=(G)=>HQ.map((X)=>jS(G[X],z[X])).join(" ").trimEnd(),Z={};for(let G of HQ)Z[G]=G;return[Y(Z),...J.map(Y)].join(`
|
|
128
|
+
`)}function w4(J,z){let Y=J.map(GS);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return qS(Y);return BS(Y)}async function fS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${E4}
|
|
129
|
+
`);return}let z=XS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (QQ(),n9)),Z=new Y;await Z.load();let G=Z.list();if(G.length===0&&z==="table"){process.stdout.write(`no tasks
|
|
130
|
+
`);return}process.stdout.write(`${w4(G,z)}
|
|
131
|
+
`)}var E4,HQ;var h4=k(()=>{zz();E4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
|
|
132
|
+
`),HQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var c4={};q1(c4,{runRepoSubcommand:()=>US});import{readFileSync as WS}from"fs";import{resolve as tH}from"path";function $Y(J){process.stderr.write(`kobe repo: ${J}
|
|
133
|
+
|
|
134
|
+
${m4}
|
|
135
|
+
`),process.exit(2)}function v4(J){try{return WS(tH(process.cwd(),J),"utf8")}catch(z){$Y(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function VS(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=()=>{let X=J[++Y];if(X===void 0)$Y(`${Z} requires a value`);return X};if(Z==="--init-script")z.initScript=G();else if(Z==="--init-script-file")z.initScript=v4(G());else if(Z==="--init-prompt")z.initPrompt=G();else if(Z==="--init-prompt-file")z.initPrompt=v4(G());else if(Z.startsWith("-"))$Y(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else $Y(`unexpected argument "${Z}"`)}return z}function KS(J){let z,Y=!1,Z=!1;for(let G of J)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")Z=!0;else if(G.startsWith("-"))$Y(`unknown flag "${G}"`);else if(z===void 0)z=G;else $Y(`unexpected argument "${G}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function US(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${m4}
|
|
136
|
+
`);return}let{getRepoInitOverride:Z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Y.filter((L)=>!L.startsWith("-")),B=X(tH(process.cwd(),j??".")),V=Z(B),f=q(H(B,".kobe","init.sh")),K=q(H(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${f?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?vG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?vG(V.initPrompt):"(unset)"}`);return}if(z==="set"){let j=VS(Y);if(j.initScript===void 0&&j.initPrompt===void 0)$Y("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=X(tH(process.cwd(),j.path??".")),V=G(B,{...j.initScript!==void 0?{initScript:j.initScript}:{},...j.initPrompt!==void 0?{initPrompt:j.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?vG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?vG(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:j,clearScript:B,clearPrompt:V}=KS(Y),f=X(tH(process.cwd(),j??".")),K=G(f,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${f}`),console.log(` initScript: ${K.initScript?vG(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?vG(K.initPrompt):"(unset)"}`);return}$Y(`unknown verb "${z}"`)}function vG(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var m4;var d4=k(()=>{m4=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
|
|
137
|
+
`)});import{spawnSync as DS}from"child_process";function FS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function n4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function i4(J,z){let Y=z?.map((Z)=>typeof Z.message==="string"?Z.message:null).filter((Z)=>!!Z);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function l4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[j,B]of Object.entries(z))Z.push("-f",`${j}=${B}`);let G=Y.spawn("gh",Z,{encoding:"utf8"});if(G.error)throw Error(`failed to run gh: ${G.error.message}`);let X=typeof G.stdout==="string"?G.stdout:String(G.stdout??""),q=typeof G.stderr==="string"?G.stderr:String(G.stderr??""),H;try{H=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${i4(q,void 0)}`)}if((G.status??0)!==0||H.errors?.length)throw Error(i4(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function OS(J){return`${J}
|
|
138
138
|
|
|
139
139
|
---
|
|
140
|
-
Submitted from kobe ${J1}.`}function
|
|
140
|
+
Submitted from kobe ${J1}.`}function mG(J,z={}){let Y=n4(J.title,"feedback title"),Z=OS(n4(J.body,"feedback body")),G=(z.repoSlug??JZ)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:q}=FS(G),H=J.categorySlug?.trim()||a9,j={spawn:z.spawn??DS},V=l4(LS,{owner:X,name:q},j).repository,f=V?.id;if(!f)throw Error(`GitHub repository not found: ${G}`);let K=V.discussionCategories?.nodes?.find((A)=>A.slug===H);if(!K)throw Error(`GitHub Discussion category not found: ${H}`);let O=l4(MS,{repositoryId:f,categoryId:K.id,title:Y,body:Z},j).createDiscussion?.discussion;if(!O?.url||typeof O.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:O.number,url:O.url}}var a9="feedback",LS=`
|
|
141
141
|
query($owner: String!, $name: String!) {
|
|
142
142
|
repository(owner: $owner, name: $name) {
|
|
143
143
|
id
|
|
@@ -150,7 +150,7 @@ query($owner: String!, $name: String!) {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
`,
|
|
153
|
+
`,MS=`
|
|
154
154
|
mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
|
|
155
155
|
createDiscussion(input: {
|
|
156
156
|
repositoryId: $repositoryId,
|
|
@@ -164,74 +164,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
`;var
|
|
168
|
-
`)}function
|
|
169
|
-
`)}function
|
|
167
|
+
`;var eH=k(()=>{NJ()});async function $4(J={}){let z=J.mode==="require-running"?await Qz():await Iz();if(!z)return null;return{client:z,close:()=>z.close()}}var a4=k(()=>{CJ()});var ZD={};q1(ZD,{verbSchema:()=>s9,verbHelp:()=>JD,validateAgainstSpec:()=>r9,schemaIndex:()=>t4,runApiSubcommand:()=>$S,parseFlags:()=>p9,parseAgentsSpec:()=>o4,invokeVerb:()=>lS,fullSchema:()=>e4,findVerb:()=>jQ,deliverPrompt:()=>zD,defaultApiRuntime:()=>t9,apiUsage:()=>Jj,VerbArgs:()=>o9,VERB_GROUPS:()=>dG,VERBS:()=>nG,FANOUT_CAP:()=>cG,ApiError:()=>N1,API_VERBS:()=>gS,API_SCHEMA_VERSION:()=>_9});import{resolve as _4}from"path";function r4(J){for(let[z,Y]of Object.entries(dG))if(Y.includes(J))return z;return"other"}async function RS(J){let z=J.args.str("verb");if(z){let Z=jQ(z);if(!Z)throw new N1(`unknown verb: ${z}`,"BAD_VERB");return s9(Z)}let Y=J.args.str("group");if(Y)return CS(Y);if(J.args.bool("all"))return e4();return t4()}function jQ(J){let z=zj[J]??J;return nG.find((Y)=>Y.name===z)}function p9(J,z=new Set){let Y=new Map,Z=!1,G=!1;for(let X=0;X<J.length;X++){let q=J[X];if(!q.startsWith("--")&&q!=="-h")throw new N1(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){G=!0;continue}let H=q.indexOf("=");if(H!==-1){let V=q.slice(2,H),f=q.slice(H+1);if(V==="pretty")Z=f!=="false"&&f!=="0";else if(V==="help")G=f!=="false"&&f!=="0";else Y.set(V,f);continue}let j=q.slice(2);if(j==="pretty"){Z=!0;continue}if(j==="help"){G=!0;continue}if(z.has(j)){Y.set(j,"true");continue}let B=J[X+1];if(B===void 0||B.startsWith("--"))throw new N1(`flag --${j} requires a value`,"BAD_FLAG");Y.set(j,B),X+=1}return{flags:Y,pretty:Z,help:G}}function r9(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new N1(`unknown flag --${Z} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Z of J.flags){if(Z.required&&!z.get(Z.name))throw new N1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let G=z.get(Z.name);if(G!==void 0&&!Z.values.includes(G))throw new N1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let G=z.get(Z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new N1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class o9{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new N1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new N1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new N1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new N1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:_4(process.cwd(),z)}requirePath(J){return _4(process.cwd(),this.require(J))}}function o4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let G=Z.indexOf(":");if(G===-1)throw new N1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let X=Z.slice(0,G);if(!_1.includes(X))throw new N1(`--agents vendor "${X}" must be one of ${_1.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(Z.slice(G+1),10);if(!Number.isInteger(q)||q<=0)throw new N1(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(z.length+q>cG)throw new N1(`--agents requests ${z.length+q} agents, exceeds the cap of ${cG}`,"BAD_FLAG");for(let H=0;H<q;H++)z.push(X)}if(z.length===0)throw new N1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function NS(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function s9(J){return{name:J.name,group:r4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(NS)}}function t4(){return{apiVersion:_9,kobeVersion:J1,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:dG,verbs:nG.map((J)=>({name:J.name,group:r4(J.name),summary:J.summary})),globalFlags:s4,aliases:zj}}function CS(J){let z=dG[J];if(!z)throw new N1(`unknown group: ${J}. Groups: ${Object.keys(dG).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=jQ(Y);return{name:Y,summary:Z?.summary??""}})}}function e4(){return{apiVersion:_9,kobeVersion:J1,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:s4,aliases:zj,groups:dG,verbs:nG.map(s9)}}function kS(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Z=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?Z:`[${Z}]`}).join(" ")}function JD(J){let z=[`kobe api ${J.name} ${kS(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(zj).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let G=Z.required?" (required)":"",X=Z.default!==void 0?` [default: ${Z.default}]`:"",q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${q}${G}${X} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
|
|
168
|
+
`)}function Jj(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...nG.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
|
|
169
|
+
`)}function bS(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
|
|
170
170
|
`)}function KY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
|
|
171
|
-
`),process.exit(Y)}async function
|
|
171
|
+
`),process.exit(Y)}async function zD(J,z,Y,Z=IS){let G=z.worktreePath;if(!G)G=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!G)throw new N1(`task ${z.id} has no worktree`,"NO_WORKTREE");let X=y1(z.id),q=await Z.sessionExists(X);if(!q){let B=await Z.resolveEngineLaunchInit(z.repo??"",G,{kind:"none"});if(!await Z.ensureSession({name:X,cwd:G,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new N1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:j}=await Z.waitForEnginePane(X,!q);if(!H)throw new N1(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(H,Y),{session:X,pane:H,started:!q,engineReady:j}}async function SS(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function $J(J){if(!J.client)throw new N1("daemon required","BAD_DAEMON");return J.client}async function yz(J,z,Y){return $J(J).request(z,Y)}async function yS(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new N1("issue-update requires --title and/or --body","MISSING_FLAG");return yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function TS(J){let z=$J(J),{args:Y,runtime:Z}=J,X={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},q=Y.str("title");if(q)X.title=q;let H=Y.str("branch");if(H)X.branch=H;let j=Y.str("base-branch");if(j)X.baseRef=j;let B=Y.vendor()??await Z.defaultVendor();if(B)X.vendor=B;let V=await z.request("task.create",X),f=V.taskId;await z.request("task.setActive",{taskId:f});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:f,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:f,pinned:L});let O=V.task;if(K||L!==void 0)O=(await z.request("task.get",{taskId:f})).task;let A=Y.str("prompt");if(!A)return{taskId:f,task:O,started:!1};let C=await J.runtime.deliverPrompt(z,{id:f,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},A);return O=(await z.request("task.get",{taskId:f})).task,{taskId:f,task:O,started:C.started,engineReady:C.engineReady,session:C.session}}async function xS(J){let z=$J(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let q=await SS(z);if(!q)throw new N1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=q}let G=await z.request("task.get",{taskId:Z}),X=await J.runtime.deliverPrompt(z,{id:Z,worktreePath:G.task.worktreePath,vendor:G.task.vendor,repo:G.task.repo},Y);return{ok:!0,taskId:Z,session:X.session,started:X.started,engineReady:X.engineReady}}async function uS(J){let z=$J(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function ES(J){let z=$J(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function wS(J){let z=$J(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),G=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:G}}async function PS(J){return $J(J).request("task.list")}async function hS(J){let z=$J(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function vS(J){let z=$J(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,G=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return G}async function mS(J){let z=$J(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,G=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),G}async function cS(J){let z=$J(J),{args:Y}=J,Z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},G=Y.str("branch");if(G)Z.branch=G;let X=Y.vendor();if(X)Z.vendor=X;let q=Y.str("title");if(q)Z.title=q;return z.request("worktree.adopt",Z)}async function dS(J){let z=$J(J),{args:Y,runtime:Z}=J,G=await Z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),q=Y.str("title"),H=Y.str("base-branch"),j=Y.str("agents"),B=await Z.defaultVendor(),V=j?o4(j):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>cG)throw new N1(`fan-out of ${V.length} exceeds the cap of ${cG} \u2014 spawn in batches`,"BAD_FLAG");let f=[];for(let K of V){let L={repo:G,vendor:K};if(q)L.title=q;if(H)L.baseRef=H;let O=await z.request("task.create",L),A=await J.runtime.deliverPrompt(z,{id:O.taskId,worktreePath:O.task.worktreePath,vendor:K,repo:O.task.repo},X);f.push({taskId:O.taskId,vendor:K,started:A.started,engineReady:A.engineReady,session:A.session})}return{count:f.length,tasks:f}}async function nS(J){let z=$J(J),{args:Y,runtime:Z}=J,G=Y.str("task-ids"),X=Y.path("repo"),q;if(G)q=G.split(",").map((j)=>j.trim()).filter(Boolean);else if(X){let j=await Z.resolveRepoRoot(X),{tasks:B}=await z.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await Z.resolveRepoRoot(V.repo)===j)q.push(V.id)}}else throw new N1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let j of q){let{task:B}=await z.request("task.get",{taskId:j}),V=await Z.isTaskRunning(j),f=B.worktreePath?await Z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};H.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:f})}return{tasks:H}}async function iS(J){return{ok:!0,discussion:mG({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function YD(J,z,Y,Z){return{args:new o9(J,z),client:Y,runtime:Z}}async function lS(J,z,Y){let Z=jQ(J);if(!Z)throw new N1(`unknown verb: ${J}`,"BAD_VERB");let G=new Set(Z.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),X=p9(z,G);return r9(Z,X.flags),Z.handler(YD(Z,X.flags,Y.client,Y.runtime??t9))}async function $S(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)KY(Jj(),"MISSING_VERB",2);process.stdout.write(`${Jj()}
|
|
172
172
|
`);return}let Z=jQ(z);if(!Z)KY(`unknown verb: ${z}
|
|
173
|
-
${
|
|
174
|
-
`);return}try{p9(Z,X.flags)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let Q=null;if(!Z.offline)try{Q=await p4()}catch(H){KY(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Z.handler(XD(Z,X.flags,Q?.client??null,s9));DI(H,X.pretty)}catch(H){if(H instanceof N1)KY(H.message,H.code,1);KY(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{Q?.close()}}var a9=2,mG=10,s4,jI,N1,L1,Jf,cG,dG,WI,JD,LI,s9;var qD=C(()=>{Yz();tH();c1();rq();_1();NJ();r4();s4=["backlog","in_progress","in_review","done","canceled","error"],jI=["open","doing","hold","done"];N1=class N1 extends Error{code;constructor(J,z){super(J);this.code=z}};L1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:a1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},Jf={"spawn-task":"add"},cG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};dG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:BI},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:CI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[L1.taskId()],handler:NI},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[L1.repo(),L1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},L1.vendor(),{name:"status",type:"enum",values:s4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},L1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:OI},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mG}.`,flags:[L1.repo(),L1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},L1.vendor(),L1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:yI},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[L1.taskId(!1),L1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:AI},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[L1.taskId(!0),L1.prompt(!0,"Text delivered into the task's engine session.")],handler:RI},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[L1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:gI},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:$9,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:xI},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[L1.repo()],handler:(J)=>yz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[L1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:jI,description:"New issue status."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:MI},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},L1.repo(!1)],handler:TI},{name:"rename",summary:"Set a task's title.",flags:[L1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>yz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[L1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>yz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[L1.taskId(),{...L1.vendor(),required:!0}],handler:(J)=>yz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[L1.taskId(),{name:"status",type:"enum",required:!0,values:s4,description:"New status."}],handler:(J)=>yz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[L1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:bI},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[L1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>yz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[L1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:kI},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[L1.taskId()],handler:(J)=>yz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[L1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:SI},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[L1.repo()],handler:(J)=>yz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[L1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},L1.vendor(),L1.title()],handler:II}],WI=dG.map((J)=>J.name);JD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];LI={sessionExists:K1,ensureSession:async(J)=>(await Promise.resolve().then(() => (zJ(),EJ))).ensureSession(J),waitForEnginePane:TX,pasteAndSubmit:xX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (yG(),cH))).resolveEngineLaunchInit(J,z,Y),engineCommand:cJ};s9={isTaskRunning:(J)=>K1(I1(J)),deliverPrompt:(J,z,Y)=>GD(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (C1(),zY))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (C1(),zY)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xG(),Y4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=I1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}}});var BD={};q1(BD,{updatePlan:()=>HD,runUpdateSubcommand:()=>PI,parseUpdateArgs:()=>fD});import{spawnSync as wI}from"child_process";function HD(){return{command:"sh",args:["-c",oz],display:oz}}function fD(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
|
|
173
|
+
${Jj()}`,"BAD_VERB",2);let G=new Set(Z.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),X;try{X=p9(Y,G)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${JD(Z)}
|
|
174
|
+
`);return}try{r9(Z,X.flags)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Z.offline)try{q=await $4()}catch(H){KY(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Z.handler(YD(Z,X.flags,q?.client??null,t9));bS(H,X.pretty)}catch(H){if(H instanceof N1)KY(H.message,H.code,1);KY(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var _9=2,cG=10,p4,AS,N1,L1,zj,dG,nG,gS,s4,IS,t9;var GD=k(()=>{Yz();eH();P1();rq();p1();NJ();a4();p4=["backlog","in_progress","in_review","done","canceled","error"],AS=["open","doing","hold","done"];N1=class N1 extends Error{code;constructor(J,z){super(J);this.code=z}};L1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:_1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},zj={"spawn-task":"add"},dG={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"]};nG=[{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:RS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:PS},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[L1.taskId()],handler:wS},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[L1.repo(),L1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},L1.vendor(),{name:"status",type:"enum",values:p4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},L1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:TS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${cG}.`,flags:[L1.repo(),L1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},L1.vendor(),L1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:dS},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[L1.taskId(!1),L1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:xS},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[L1.taskId(!0),L1.prompt(!0,"Text delivered into the task's engine session.")],handler:uS},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[L1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:ES},{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:a9,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:iS},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[L1.repo()],handler:(J)=>yz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[L1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:AS,description:"New issue status."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:yS},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},L1.repo(!1)],handler:nS},{name:"rename",summary:"Set a task's title.",flags:[L1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>yz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[L1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>yz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[L1.taskId(),{...L1.vendor(),required:!0}],handler:(J)=>yz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[L1.taskId(),{name:"status",type:"enum",required:!0,values:p4,description:"New status."}],handler:(J)=>yz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[L1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:vS},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[L1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>yz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[L1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:hS},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[L1.taskId()],handler:(J)=>yz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[L1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:mS},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[L1.repo()],handler:(J)=>yz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[L1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},L1.vendor(),L1.title()],handler:cS}],gS=nG.map((J)=>J.name);s4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];IS={sessionExists:K1,ensureSession:async(J)=>(await Promise.resolve().then(() => (GJ(),wJ))).ensureSession(J),waitForEnginePane:TX,pasteAndSubmit:xX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (TG(),dH))).resolveEngineLaunchInit(J,z,Y),engineCommand:dJ};t9={isTaskRunning:(J)=>K1(y1(J)),deliverPrompt:(J,z,Y)=>zD(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (C1(),zY))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (C1(),zY)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (uG(),e6))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=y1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}}});var HD={};q1(HD,{updatePlan:()=>XD,runUpdateSubcommand:()=>_S,parseUpdateArgs:()=>QD});import{spawnSync as aS}from"child_process";function XD(){return{command:"sh",args:["-c",oz],display:oz}}function QD(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
|
|
175
175
|
|
|
176
|
-
`),
|
|
177
|
-
`))}async function
|
|
176
|
+
`),qD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function qD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${oz}`,"","Script URL:",` ${mQ}`,"","Manual fallback:",` ${ej()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
|
|
177
|
+
`))}async function _S(J,z){let Y={spawn:z?.spawn??aS,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Z=QD(J);if(Z.help){qD(Y.stdout);return}let G=XD();if(Y.stdout.write(`kobe ${J1} -> latest
|
|
178
178
|
`),Y.stdout.write(`running: ${G.display}
|
|
179
179
|
`),Z.dryRun)return;let X=Y.spawn(G.command,G.args,{stdio:"inherit"});if(X.error)Y.stderr.write(`kobe update: failed to run ${G.command}: ${X.error.message}
|
|
180
|
-
`),Y.exit(1);Y.exit(X.status??1)}var
|
|
181
|
-
`),process.exit(1)}function
|
|
180
|
+
`),Y.exit(1);Y.exit(X.status??1)}var jD=k(()=>{NJ()});var VD={};q1(VD,{runThemeSubcommand:()=>Xy});import{existsSync as fD,mkdirSync as pS,readFileSync as rS,readdirSync as oS,unlinkSync as sS,writeFileSync as tS}from"fs";import{basename as BD,join as J8,resolve as eS}from"path";function UY(J){process.stderr.write(`kobe theme: ${J}
|
|
181
|
+
`),process.exit(1)}function aY(J){process.stderr.write(`kobe theme: ${J}
|
|
182
182
|
|
|
183
|
-
`),
|
|
183
|
+
`),WD(),process.exit(2)}function Jy(){let J=[];J.push("bundled:");for(let Z of[...e9].sort())J.push(` ${Z} [built-in]`);let z=OG(),Y=[];try{Y=oS(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let G=Z.slice(0,-5),X=J8(z,Z),q=e9.includes(G)?" (overrides built-in)":"";J.push(` ${G}${q} ${X}`)}process.stdout.write(`${J.join(`
|
|
184
184
|
`)}
|
|
185
|
-
`)}async function
|
|
186
|
-
`,"utf8"),process.stdout.write(`installed theme "${H}" -> ${
|
|
187
|
-
`)}function
|
|
188
|
-
`)}function
|
|
189
|
-
`))}async function
|
|
190
|
-
|
|
191
|
-
${
|
|
192
|
-
`),process.exit(2)}function
|
|
193
|
-
`);return}if(!z.title)
|
|
194
|
-
`)});import{homedir as
|
|
195
|
-
`))}function
|
|
196
|
-
|
|
197
|
-
`),
|
|
185
|
+
`)}async function zy(J){if(/^https?:\/\//i.test(J)){let X;try{X=await fetch(J)}catch(V){UY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)UY(`failed to fetch ${J}: HTTP ${X.status} ${X.statusText}`);let q=await X.text(),H=J.split(/[?#]/)[0]??J,j=BD(H)||"theme.json",B=j.endsWith(".json")?j.slice(0,-5):j;return{text:q,defaultName:B}}let z=eS(process.cwd(),J),Y;try{Y=rS(z,"utf8")}catch(X){UY(`failed to read ${z}: ${X instanceof Error?X.message:String(X)}`)}let Z=BD(z),G=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:G}}function Yy(J){let z=null,Y,Z=!1;for(let G=0;G<J.length;G+=1){let X=J[G];if(X==="--force"||X==="-f"){Z=!0;continue}if(X==="--name"||X==="-n"){let q=J[G+1];if(q===void 0)aY("--name requires a value");Y=q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))aY(`unknown flag: ${X}`);if(z===null){z=X;continue}aY(`unexpected positional argument: ${X}`)}if(z===null)aY("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function Zy(J){let{source:z,opts:Y}=Yy(J),{text:Z,defaultName:G}=await zy(z),X;try{X=JSON.parse(Z)}catch(V){UY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=GH(X);if(!q.ok)UY(`source is not a valid kobe theme: ${q.reason}`);let H=Y.name??G;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))UY(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let j=OG();pS(j,{recursive:!0});let B=J8(j,`${H}.json`);if(fD(B)&&!Y.force)UY(`${B} already exists (pass --force to overwrite)`);tS(B,`${JSON.stringify(q.theme,null,2)}
|
|
186
|
+
`,"utf8"),process.stdout.write(`installed theme "${H}" -> ${B}
|
|
187
|
+
`)}function Gy(J){let z=J[0];if(!z)aY("missing <name>");if(J.length>1)aY(`unexpected extra arguments after "${z}"`);if(e9.includes(z))UY(`"${z}" is a built-in theme and cannot be removed`);let Y=J8(OG(),`${z}.json`);if(!fD(Y))UY(`no user theme named "${z}" (looked for ${Y})`);sS(Y),process.stdout.write(`removed theme "${z}" (${Y})
|
|
188
|
+
`)}function WD(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${OG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
|
|
189
|
+
`))}async function Xy(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(WD(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)aY(`"${z}" takes no arguments`);Jy();return}if(z==="add"){await Zy(Y);return}if(z==="remove"||z==="rm"){Gy(Y);return}aY(`unknown action "${z}" (try "list", "add", or "remove")`)}var e9;var KD=k(()=>{XH();Rf();e9=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var MD={};q1(MD,{runFeedbackSubcommand:()=>qy,parseFeedbackArgs:()=>LD});import{readFileSync as UD}from"fs";function _Y(J){process.stderr.write(`kobe feedback: ${J}
|
|
190
|
+
|
|
191
|
+
${DD}
|
|
192
|
+
`),process.exit(2)}function Qy(J){if(J==="-")return UD(0,"utf8");return UD(J,"utf8")}function LD(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)_Y("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)_Y("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)_Y("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)_Y("--category requires a value");continue}_Y(`unexpected argument "${Z}"`)}return z}async function qy(J){let z=LD(J);if(z.help){process.stdout.write(`${DD}
|
|
193
|
+
`);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?Qy(z.bodyFile):z.body;if(!Y)_Y("--body or --body-file is required");let Z=mG({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var DD;var FD=k(()=>{eH();DD=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
|
|
194
|
+
`)});import{homedir as Hy}from"os";async function OD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??Hy(),Y=new hG({homeDir:z});await Y.load();let Z=new rH,G=new hq({store:Y,worktrees:Z});return{homeDir:z,orchestrator:G,store:Y,worktrees:Z,async close(){G.dispose()}}}var AD=k(()=>{kX();QQ();l9()});var gD={};q1(gD,{runDaemonSubcommand:()=>By});function RD(J){J.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
|
|
195
|
+
`))}function jy(){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 By(J){let[z="status"]=J,Y=Ez(),Z=YY();if(z==="--help"||z==="-h"||z==="help"){RD(process.stdout);return}if(z==="status"){let H=new tJ(Y);try{let j=await H.request("daemon.status");console.log(JSON.stringify(j,null,2))}catch{let j=await EG(Z);if(j)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${j})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new tJ(Y);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{H.close()}return}if(z==="restart"){await wG(Y,Z),(await Iz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
|
|
196
|
+
|
|
197
|
+
`),RD(process.stderr),process.exit(2);sU();let G=await OD(),X=await q4(G.orchestrator,{socketPath:Y,pidPath:Z,homeDir:G.homeDir,webPort:jy(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await G.close()}});if(console.log(`kobe daemon: listening on ${X.socketPath}`),X.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${X.webPort}`);let q=async()=>{await X.close(),await G.close(),process.exit(0)};process.once("SIGINT",()=>void q()),process.once("SIGTERM",()=>void q())}var ND=k(()=>{HX();CJ();aH();$Z();$H();AD()});import{existsSync as fy,readFileSync as Wy}from"fs";import{homedir as Vy}from"os";import{join as CD}from"path";function Z8(J={}){return["skills","add",Ky,"--skill","kobe","--agent",J.agent??Yj]}function Zj(J={}){return`npx ${Z8(J).join(" ")}`}function G8(J={}){let z=J.home??Vy(),Y=J.cwd??process.cwd();return[CD(z,kD),CD(Y,kD)]}function Uy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function fQ(J){let z=G8(J).find((G)=>fy(G));if(!z)return{installed:!1,installedVersion:null,currentVersion:z8,stale:!1};let Y=null;try{Y=Uy(Wy(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<z8;return{installed:!0,installedVersion:Y,currentVersion:z8,stale:Z}}function bD(){let J=fQ();if(!J.installed){if(S1(Y8)==="1")return;zJ(Y8,"1"),process.stderr.write(`
|
|
198
198
|
kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
|
|
199
199
|
${BQ}
|
|
200
|
-
(wraps \`${
|
|
200
|
+
(wraps \`${Zj()}\`; check anytime with \`kobe doctor\`)
|
|
201
201
|
|
|
202
|
-
`);return}if(J.stale){let z=`${
|
|
202
|
+
`);return}if(J.stale){let z=`${Y8}:v${J.currentVersion}`;if(S1(z)==="1")return;zJ(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
|
|
203
203
|
kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
|
|
204
204
|
${BQ}
|
|
205
205
|
|
|
206
|
-
`)}}var
|
|
206
|
+
`)}}var z8=2,kD=".claude/skills/kobe/SKILL.md",BQ="kobe skill install",Ky="Sma1lboy/kobe",Yj="claude-code",Y8="skillHintSeen";var Gj=k(()=>{C1()});var Xj={};q1(Xj,{runResetSubcommand:()=>Iy,runReloadSubcommand:()=>Sy,runDoctorSubcommand:()=>ky});import{existsSync as Dy,readFileSync as yD,statSync as Ly}from"fs";import{unlink as My}from"fs/promises";import{join as TD}from"path";import{createInterface as Fy}from"readline";function Oy(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function Ay(J){let z=new tJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function Ry(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 gy(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function X8(J){try{let z=Ly(J);return`present (${gy(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function xD(J){try{let z=JSON.parse(yD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function Ny(J,z){try{return yD(J,"utf8").split(`
|
|
207
207
|
`).filter((Z)=>Z.trim().length>0).slice(-z).join(`
|
|
208
|
-
`)}catch{return""}}async function
|
|
209
|
-
`).filter((Y)=>Y.trim().length>0).length}async function
|
|
210
|
-
`));return}let z=J.find((
|
|
211
|
-
`)),process.exit(2);let Y=Ez(),Z=YY(),G=
|
|
212
|
-
`))H.push(` \u2502 ${L}`)}}if(H.push(""),await dz())H.push(`tmux: ${await
|
|
213
|
-
`))}async function
|
|
214
|
-
`))}async function
|
|
215
|
-
|
|
216
|
-
`),
|
|
217
|
-
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await
|
|
208
|
+
`)}catch{return""}}async function Q8(J){let z=Bun.spawn(kZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function Cy(){if(!await dz())return 0;let{code:J,stdout:z}=await Q8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
|
|
209
|
+
`).filter((Y)=>Y.trim().length>0).length}async function ky(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
|
|
210
|
+
`));return}let z=J.find((f)=>f.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
|
|
211
|
+
`)),process.exit(2);let Y=Ez(),Z=YY(),G=oQ(),X=TD(WJ(),"tasks.json"),q=oJ(),H=["kobe doctor",` home: ${rJ()}`,` socket: ${Y}`,""],j=await Ay(Y);if(j){let f=typeof j.daemonPid==="number"?j.daemonPid:"?",K=typeof j.uptimeMs==="number"?Ry(j.uptimeMs):"?",L=typeof j.taskCount==="number"?j.taskCount:"?",O=typeof j.attachedClients==="number"?j.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${f}, up ${K}, ${L} task(s), ${O} client(s))`);let A=typeof j.kobeVersion==="string"?j.kobeVersion:void 0;if(A&&A!==J1)H.push(` \u26A0 stale build: daemon is v${A}, you launched v${J1}`),H.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(A)H.push(` build: v${A}`)}else{let f=await EG(Z);if(f&&Oy(f))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${f}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(f)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${f} is gone)`),H.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else H.push("daemon: \u2717 not running (no pidfile)");if(Dy(Y))H.push(` orphan socket file present: ${Y}`);let K=Ny(G,8);if(K){H.push(" last lines of daemon.log:");for(let L of K.split(`
|
|
212
|
+
`))H.push(` \u2502 ${L}`)}}if(H.push(""),await dz())H.push(`tmux: ${await Cy()} kobe session(s) on \`${kz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let B=fQ();if(!B.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${BQ}`);else if(B.stale){let f=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${f}; this kobe wants v${B.currentVersion})`),H.push(` \u2192 ${BQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);H.push("");let V=xD(X);H.push(`tasks.json: ${X8(X)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${X8(q)}`),H.push(`daemon.log: ${X8(G)}`),console.log(H.join(`
|
|
213
|
+
`))}async function by(J){let z=Fy({input:process.stdin,output:process.stdout});try{let Y=await new Promise((Z)=>z.question(J,Z));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function ID(J,z){try{await My(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 SD(J){J.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
|
|
214
|
+
`))}async function Iy(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){SD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((f)=>!z.has(f));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
|
|
215
|
+
|
|
216
|
+
`),SD(process.stderr),process.exit(2);let Z=J.includes("--hard"),G=J.includes("--yes")||J.includes("-y"),X=Ez(),q=YY(),H=TD(WJ(),"tasks.json"),j=oJ();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${X})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${kz}\` socket`),Z){let f=xD(H);console.log(` \u2022 DELETE the task index${f===null?"":` (${f} task(s))`} \u2014 ${H}`),console.log(` \u2022 DELETE the UI state \u2014 ${j}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!Z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!G){if(!process.stdin.isTTY){console.log(`
|
|
217
|
+
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await by(Z?`
|
|
218
218
|
Stop daemon, kill sessions AND wipe task index? [y/N] `:`
|
|
219
|
-
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:
|
|
220
|
-
kobe: reset complete. Relaunch kobe to start fresh.`)}async function
|
|
219
|
+
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await wG(X,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await dz()){let{code:f}=await Q8(["kill-server"]);console.log(f===0?` tmux: killed all sessions on \`${kz}\``:` tmux: no sessions on \`${kz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await ID(H,"task index"),await ID(j,"UI state");console.log(`
|
|
220
|
+
kobe: reset complete. Relaunch kobe to start fresh.`)}async function Sy(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
|
|
221
221
|
`));return}let z=J.find((H)=>H.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
|
|
222
222
|
|
|
223
223
|
Usage: kobe reload (takes no options)
|
|
224
|
-
`),process.exit(2);if(!await dz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await
|
|
225
|
-
`).map((H)=>H.trim()).filter((H)=>H.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (
|
|
226
|
-
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function
|
|
227
|
-
`),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),G=!J.includes("--no-takeover"),X=Z?void 0:
|
|
228
|
-
`),process.stdout.write(` home: ${
|
|
229
|
-
`);else if(
|
|
230
|
-
`),process.stdout.write(` home: ${
|
|
231
|
-
`),!
|
|
232
|
-
`);process.on("SIGINT",()=>{
|
|
233
|
-
`),
|
|
234
|
-
`),process.exit(1)}}var
|
|
224
|
+
`),process.exit(2);if(!await dz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await Q8(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let G=Z.split(`
|
|
225
|
+
`).map((H)=>H.trim()).filter((H)=>H.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (GJ(),wJ)),q=0;for(let H of G)try{await X(H),q++}catch(j){console.error(` failed to reload session "${H}": ${j instanceof Error?j.message:String(j)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${G.length} session(s) \u2014 engine panes untouched`)}var Qj=k(()=>{HX();aH();$Z();$H();r1();Gj();P1();NJ()});var mD={};q1(mD,{runWebSubcommand:()=>hy});import{existsSync as wD}from"fs";import{homedir as yy}from"os";import{resolve as qj}from"path";import{fileURLToPath as PD}from"url";function uD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${yy()}/.kobe (production)`}function xy(){let J=PD(import.meta.url),z=[qj(J,"../../../../kobe-web/dist"),qj(J,"../../web-ui")];for(let Y of z)if(wD(`${Y}/index.html`))return Y;return}function uy(){let J=PD(import.meta.url),z=[qj(J,"../../../../kobe-web/pty-server.mjs"),qj(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(wD(Y))return Y;return}async function ED(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
|
|
226
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function Ey(J){let z;try{z=(await(await fetch(`http://localhost:${J}${vD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==hD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await ED(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await ED(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function wy(J){let z=uy();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await Ey(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 Py(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await PG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${vD}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Z){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Z instanceof Error?Z.message:String(Z)})`)}if(Y!==hD)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 hy(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(Ty);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
|
|
227
|
+
`),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),G=!J.includes("--no-takeover"),X=Z?void 0:xy();if(!Z&&!X)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await Py(z,X);let q=null,H=!1,j=()=>{if(H)return;H=!0,q?.kill(),q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
|
|
228
|
+
`),process.stdout.write(` home: ${uD()}
|
|
229
|
+
`);else if(q=await wy({webPort:z,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
|
|
230
|
+
`),process.stdout.write(` home: ${uD()}
|
|
231
|
+
`),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
|
|
232
|
+
`);process.on("SIGINT",()=>{j(),process.exit(0)}),process.on("SIGTERM",()=>{j(),process.exit(0)}),q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
|
|
233
|
+
`),j(),process.exit(1)}),await new Promise(()=>{})}catch(Z){process.stderr.write(`kobe web: ${Z instanceof Error?Z.message:String(Z)}
|
|
234
|
+
`),process.exit(1)}}var hD="kobe-web",vD="/__kobe_web",Ty=`Usage: kobe web [options]
|
|
235
235
|
|
|
236
236
|
Launch the kobe web UI through daemon web transport on http://localhost:<port>.
|
|
237
237
|
|
|
@@ -240,45 +240,51 @@ Options:
|
|
|
240
240
|
--routes-only Routes only; Vite serves the SPA separately.
|
|
241
241
|
--no-takeover Reserved for compatibility; daemon owns the web port.
|
|
242
242
|
-h, --help Show this help.
|
|
243
|
-
`;var
|
|
244
|
-
`)}function
|
|
243
|
+
`;var cD=k(()=>{CJ()});var nD={};q1(nD,{runSkillSubcommand:()=>my});function q8(){return["usage: kobe skill <verb>","","verbs:"," install [--agent NAME] Install the kobe agent skill (wraps `npx skills add`)"," status Show whether the skill is installed"," command [--agent NAME] Print the underlying npx command without running it","",`The skill teaches a coding agent how to drive \`kobe api\`. Default agent: ${Yj}.`].join(`
|
|
244
|
+
`)}function dD(J){let z=Yj;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let G=J[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
|
|
245
245
|
`),process.exit(2);z=G,Y++}else if(Z.startsWith("--agent="))z=Z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Z}"
|
|
246
246
|
|
|
247
|
-
${
|
|
248
|
-
`),process.exit(2)}return z}async function
|
|
249
|
-
`),!z)process.exitCode=2;return}if(!
|
|
250
|
-
|
|
251
|
-
${
|
|
252
|
-
`),process.exit(2);if(z==="status"){let H=
|
|
253
|
-
`));return}if(z==="command"){process.stdout.write(`${
|
|
254
|
-
`);return}let Z=
|
|
255
|
-
`);let
|
|
256
|
-
kobe skill install failed (npx exited ${
|
|
257
|
-
You can run it yourself: ${
|
|
258
|
-
`),process.exit(
|
|
259
|
-
`)}var
|
|
260
|
-
`))}var yy=500,xy="worktree-created",_D="externalWorktreeSync";var f8=C(()=>{CJ();ij();Aq();C1();_1()});function GL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=cy.get(J))!==null&&z!==void 0?z:J}var j8,cy,ZL;var XL=C(()=>{cy=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),ZL=(j8=String.fromCodePoint)!==null&&j8!==void 0?j8:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function QL(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let Q=z.charCodeAt(G),H=z.charCodeAt(G+1);Z[X++]=Q|H<<8}return Z}var qL;var HL=C(()=>{qL=QL("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var OJ;var fL=C(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(OJ||(OJ={}))});function B8(J){return J>=d1.ZERO&&J<=d1.NINE}function dy(J){return J>=d1.UPPER_A&&J<=d1.UPPER_F||J>=d1.LOWER_A&&J<=d1.LOWER_F}function ny(J){return J>=d1.UPPER_A&&J<=d1.UPPER_Z||J>=d1.LOWER_A&&J<=d1.LOWER_Z||B8(J)}function iy(J){return J===d1.EQUALS||ny(J)}class W8{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=qJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=qJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case qJ.EntityStart:{if(J.charCodeAt(z)===d1.NUM)return this.state=qJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=qJ.NamedEntity,this.stateNamedEntity(J,z)}case qJ.NumericStart:return this.stateNumericStart(J,z);case qJ.NumericDecimal:return this.stateNumericDecimal(J,z);case qJ.NumericHex:return this.stateNumericHex(J,z);case qJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|jL)===d1.LOWER_X)return this.state=qJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=qJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y)||dy(Y)){let Z=Y<=d1.NINE?Y-d1.ZERO:(Y|jL)-d1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y))this.result=this.result*10+(Y-d1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===d1.SEMI)this.consumed+=1;else if(this.decodeMode===DY.Strict)return 0;if(this.emitCodePoint(GL(this.result),this.consumed),this.errors){if(J!==d1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14;while(z<J.length){if(G===0&&(Z&OJ.FLAG13)!==0){let Q=(Z&OJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Z&OJ.JUMP_TABLE;if(J.charCodeAt(z)!==H)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let H=this.runConsumed-1,f=Y[this.treeIndex+1+(H>>1)],j=H%2===0?f&255:f>>8&255;if(J.charCodeAt(z)!==j)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===d1.SEMI&&G!==0&&(Z&OJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=$y(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===DY.Attribute&&(G===0||iy(X))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14,G!==0){if(X===d1.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==DY.Strict&&(Z&OJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&OJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(OJ.VALUE_LENGTH|OJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case qJ.NamedEntity:return this.result!==0&&(this.decodeMode!==DY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case qJ.NumericDecimal:return this.emitNumericEntity(0,2);case qJ.NumericHex:return this.emitNumericEntity(0,3);case qJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case qJ.EntityStart:return 0}}}function ly(J){let z="",Y=new W8(J,(Z)=>z+=ZL(Z));return function(G,X){let Q=0,H=0;while((H=G.indexOf("&",H))>=0){z+=G.slice(Q,H),Y.startEntity(X);let j=Y.write(G,H+1);if(j<0){Q=H+Y.end();break}Q=H+j,H=j===0?Q+1:Q}let f=z+G.slice(Q);return z="",f}}function $y(J,z,Y,Z){let G=(z&OJ.BRANCH_LENGTH)>>7,X=z&OJ.JUMP_TABLE;if(G===0)return X!==0&&Z===X?Y:-1;if(X){let j=Z-X;return j<0||j>=G?-1:J[Y+j]-1}let Q=G+1>>1,H=0,f=G-1;while(H<=f){let j=H+f>>>1,V=j>>1,K=J[Y+V]>>(j&1)*8&255;if(K<Z)H=j+1;else if(K>Z)f=j-1;else return J[Y+Q+j]}return-1}function wZ(J,z=DY.Legacy){return ay(J,z)}var d1,jL=32,qJ,DY,ay;var BL=C(()=>{XL();HL();fL();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(d1||(d1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(qJ||(qJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(DY||(DY={}));ay=ly(qL)});var WL,VL;var UL=C(()=>{BL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(WL||(WL={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(VL||(VL={}))});import{CliRenderer as py,createCliRenderer as ry,engine as oy}from"@opentui/core";import{createTestRenderer as Ma}from"@opentui/core/testing";import{ASCIIFontRenderable as sy,BoxRenderable as ty,CodeRenderable as ey,DiffRenderable as JT,InputRenderable as zT,LineNumberRenderable as YT,MarkdownRenderable as ZT,ScrollBoxRenderable as GT,SelectRenderable as XT,TabSelectRenderable as QT,TextareaRenderable as qT,TextAttributes as V8,TextNodeRenderable as HT,TextRenderable as fT}from"@opentui/core";import{engine as Ra,Timeline as ga}from"@opentui/core";import{BaseRenderable as AL,createTextAttributes as BT,InputRenderable as K8,InputRenderableEvents as VQ,isTextNodeRenderable as L8,parseColor as DL,Renderable as WT,RootTextNodeRenderable as VT,ScrollBoxRenderable as KT,SelectRenderable as LL,SelectRenderableEvents as U8,TabSelectRenderable as FL,TabSelectRenderableEvents as D8,TextNodeRenderable as UT,TextRenderable as RL}from"@opentui/core";import{BaseRenderable as NT,isTextNodeRenderable as CT,TextNodeRenderable as kT,TextRenderable as bT,Yoga as OL}from"@opentui/core";import{BoxRenderable as ua,RootRenderable as Ea}from"@opentui/core";import{TimeToFirstDrawRenderable as TT}from"@opentui/core";import{createSlotRegistry as ha}from"@opentui/core";function LT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:G,insertNode:X,removeNode:Q,setProperty:H,getParentNode:f,getFirstChild:j,getNextSibling:V}){function B(S,g,M,T){if(M!==void 0&&!T)T=[];if(typeof g!=="function")return K(S,g,T,M);wz((d)=>K(S,g(),d,M),T)}function K(S,g,M,T,d){while(typeof M==="function")M=M();if(g===M)return M;let i=typeof g,J0=T!==void 0;if(i==="string"||i==="number"){if(i==="number")g=g.toString();if(J0){let E=M[0];if(E&&Z(E))G(E,g);else E=z(g);M=O(S,M,T,E)}else if(M!==""&&typeof M==="string")G(j(S),M=g);else O(S,M,T,z(g)),M=g}else if(g==null||i==="boolean")M=O(S,M,T);else if(i==="function")return wz(()=>{let E=g();while(typeof E==="function")E=E();M=K(S,E,M,T)}),()=>M;else if(Array.isArray(g)){let E=[];if(L(E,g,d))return wz(()=>M=K(S,E,M,T,!0)),()=>M;if(E.length===0){let z0=O(S,M,T);if(J0)return M=z0}else if(Array.isArray(M))if(M.length===0)R(S,E,T);else A(S,M,E);else if(M==null||M==="")R(S,E);else A(S,J0&&M||[j(S)],E);M=E}else{if(Array.isArray(M)){if(J0)return M=O(S,M,T,g);O(S,M,null,g)}else if(M==null||M===""||!j(S))X(S,g);else u(S,g,j(S));M=g}return M}function L(S,g,M){let T=!1;for(let d=0,i=g.length;d<i;d++){let J0=g[d],E;if(J0==null||J0===!0||J0===!1);else if(Array.isArray(J0))T=L(S,J0)||T;else if((E=typeof J0)==="string"||E==="number")S.push(z(J0));else if(E==="function")if(M){while(typeof J0==="function")J0=J0();T=L(S,Array.isArray(J0)?J0:[J0])||T}else S.push(J0),T=!0;else S.push(J0)}return T}function A(S,g,M){let T=M.length,d=g.length,i=T,J0=0,E=0,z0=V(g[d-1]),q0=null;while(J0<d||E<i){if(g[J0]===M[E]){J0++,E++;continue}while(g[d-1]===M[i-1])d--,i--;if(d===J0){let o=i<T?E?V(M[E-1]):M[i-E]:z0;while(E<i)X(S,M[E++],o)}else if(i===E)while(J0<d){if(!q0||!q0.has(g[J0]))Q(S,g[J0]);J0++}else if(g[J0]===M[i-1]&&M[E]===g[d-1]){let o=V(g[--d]);X(S,M[E++],V(g[J0++])),X(S,M[--i],o),g[d]=M[i]}else{if(!q0){q0=new Map;let B0=E;while(B0<i)q0.set(M[B0],B0++)}let o=q0.get(g[J0]);if(o!=null)if(E<o&&o<i){let B0=J0,g0=1,m;while(++B0<d&&B0<i){if((m=q0.get(g[B0]))==null||m!==o+g0)break;g0++}if(g0>o-E){let r=g[J0];while(E<o)X(S,M[E++],r)}else u(S,M[E++],g[J0++])}else J0++;else Q(S,g[J0++])}}}function O(S,g,M,T){if(M===void 0){let i;while(i=j(S))Q(S,i);return T&&X(S,T),T??""}let d=T||Y();if(g.length){let i=!1;for(let J0=g.length-1;J0>=0;J0--){let E=g[J0];if(d!==E){let z0=f(E)===S;if(!i&&!J0)z0?u(S,d,E):X(S,d,M);else z0&&Q(S,E)}else i=!0}}else X(S,d,M);return[d]}function R(S,g,M){for(let T=0,d=g.length;T<d;T++)X(S,g[T],M)}function u(S,g,M){X(S,g,M),Q(S,M)}function P(S,g,M={},T){if(g||(g={}),!T)wz(()=>M.children=K(S,g.children,M.children));return wz(()=>g.ref&&g.ref(S)),wz(()=>{for(let d in g){if(d==="children"||d==="ref")continue;let i=g[d];if(i===M[d])continue;H(S,d,i,M[d]),M[d]=i}}),M}return{render(S,g){let M;return BZ((T)=>{M=T,B(g,S())}),M},insert:B,spread(S,g,M){if(typeof g==="function")wz((T)=>P(S,g(),T,M));else P(S,g,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,g,M,T){return H(S,g,M,T),M},mergeProps:uq,effect:wz,memo:DT,createComponent:XK,use(S,g,M){return t1(()=>S(g,M))}}}function FT(J){let z=LT(J);return z.mergeProps=uq,z}function R8(J){if(!qf.has(J))qf.set(J,0);let z=qf.get(J)+1;return qf.set(J,z),`${J}-${z}`}function MT(J,z,Y){if(HJ("Inserting node:",YJ(z),"into parent:",YJ(J),"with anchor:",YJ(Y),z instanceof nG),z instanceof KQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof KQ)Y=Y.getSlotChild(J);if(L8(z)){if(!(J instanceof RL)&&!L8(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof AL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=F8(J),G=Z.findIndex((X)=>X.id===Y.id);if(G===-1)HJ("[INSERT]","Could not find anchor",YJ(J),YJ(Y),"[children]",...Z.map((X)=>X.id));J.add(z,G)}function OT(J,z){if(HJ("Removing node:",YJ(z),"from parent:",YJ(J)),z instanceof KQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof AL&&!z.parent){z.destroyRecursively();return}})}function AT(J){HJ("Creating text node:",J);let z=R8("text-node");if(typeof J==="number")J=J.toString();return nG.fromString(wZ(J),{id:z})}function RT(){let J=R8("slot-node");return HJ("Creating slot node",J),new KQ(J)}function ML(J){HJ("Getting parent of node:",YJ(J));let z=J.parent??void 0;if(z instanceof VT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof KT&&Y.content===z)z=Y;return z}function IT(J){Object.assign(IL,J)}function yT(){return IL}var A8,WJ=()=>{let J=mJ(A8);if(!J)throw Error("No renderer found");return J},jT=(J)=>{let z=WJ();QJ(()=>{z.on("resize",J)}),T1(()=>{z.off("resize",J)})},az=()=>{let J=WJ(),[z,Y]=p({width:J.width,height:J.height});return jT((G,X)=>{Y({width:G,height:X})}),z},DT=(J)=>U0(()=>J()),qf,HJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nG,YJ=(J)=>{if(!J)return;return J.id},F8=(J)=>{let z;if(J instanceof RL)z=J.getTextChildren();else z=J.getChildren();return z},gT,y,N0,b,W,T0,D,U,ya,q,gL,qz,g8,NL,CL,KQ,UQ,Hf,M8,O8,kL,bL,SL,ST,IL,xT=(J,z)=>{let Y,Z=!1,G=!1,X=!0,Q=!1,H=J.destroy.bind(J),f=()=>{if(G)return;if(!Y){Z=!0;return}G=!0,Y()};J.once("destroy",f),J.destroy=()=>{if(X){Q=!0;return}H()};try{Y=gT(()=>b(A8.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{X=!1,J.destroy=H}if(Z)f();if(Q)H()},yL=async(J,z={})=>{let Y=z instanceof py?z:await ry({...z,onDestroy:()=>{z.onDestroy?.()}});oy.attach(Y),xT(Y,J)};var w=C(()=>{W1();UL();W1();W1();W1();A8=Pz();qf=new Map;nG=class nG extends UT{static fromString(J,z={}){let Y=new nG(z);return Y.add(J),Y}};({render:gT,effect:y,memo:N0,createComponent:b,createElement:W,createTextNode:T0,insertNode:D,insert:U,spread:ya,setProp:q,mergeProps:gL,use:qz}=FT({createElement(J){HJ("Creating element:",J);let z=R8(J),Y=mJ(A8);if(!Y)throw Error("No renderer found");let Z=yT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let G=new Z[J](Y,{id:z});return HJ("Element created with id:",z),G},createTextNode:AT,createSlotNode:RT,replaceText(J,z){if(HJ("Replacing text:",z,"in node:",YJ(J)),!(J instanceof nG))return;J.replace(wZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let G=z.slice(3);if(Y)J.on(G,Y);if(Z)J.off(G,Z);return}if(L8(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=BT(Y),J.fg=Y.fg?DL(Y.fg):J.fg,J.bg=Y.bg?DL(Y.bg):J.bg;return}return}switch(z){case"id":HJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof WT))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof LL)G=U8.SELECTION_CHANGED;else if(J instanceof FL)G=D8.SELECTION_CHANGED;else if(J instanceof K8)G=VQ.CHANGE;if(!G)break;if(Y)J.on(G,Y);if(Z)J.off(G,Z);break;case"onInput":if(J instanceof K8){if(Y)J.on(VQ.INPUT,Y);if(Z)J.off(VQ.INPUT,Z)}break;case"onSubmit":if(J instanceof K8){if(Y)J.on(VQ.ENTER,Y);if(Z)J.off(VQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof LL){if(Y)J.on(U8.ITEM_SELECTED,Y);if(Z)J.off(U8.ITEM_SELECTED,Z)}else if(J instanceof FL){if(Y)J.on(D8.ITEM_SELECTED,Y);if(Z)J.off(D8.ITEM_SELECTED,Z)}break;case"style":for(let X in Y){let Q=Y[X];if(Z!==void 0&&Q===Z[X])continue;J[X]=Q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=wZ(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof nG},insertNode:MT,removeNode:OT,getParentNode:ML,getFirstChild(J){HJ("Getting first child of node:",YJ(J));let z=F8(J)[0];if(!z){HJ("No first child found for node:",YJ(J));return}return HJ("First child found:",YJ(z),"for node:",YJ(J)),z},getNextSibling(J){HJ("Getting next sibling of node:",YJ(J));let z=ML(J);if(!z){HJ("No parent found for node:",YJ(J));return}let Y=F8(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){HJ("No next sibling found for node:",YJ(J));return}let G=Y[Z+1];if(!G){HJ("Next sibling is null for node:",YJ(J));return}return HJ("Next sibling found:",YJ(G),"for node:",YJ(J)),G}}));g8=class g8 extends NT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};NL=class NL extends kT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};CL=class CL extends g8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=OL.default.Node.create(),this.yogaNode.setDisplay(OL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};KQ=class KQ extends g8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(CT(J)||J instanceof bT){if(!this.textNode)this.textNode=new NL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new CL(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};UQ=class UQ extends HT{_ctx;constructor(J,z){super(z);this._ctx=J}};Hf=class Hf extends UQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|V8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|V8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|V8.UNDERLINE}};M8=class M8 extends Hf{constructor(J){super(J,"b")}};O8=class O8 extends Hf{constructor(J){super(J,"i")}};kL=class kL extends Hf{constructor(J){super(J,"u")}};bL=class bL extends UQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
261
|
-
`)}};SL=class SL extends UQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};ST={box:ty,text:fT,input:zT,select:XT,textarea:qT,ascii_font:sy,tab_select:QT,scrollbox:GT,code:ey,diff:JT,line_number:YT,markdown:ZT,span:UQ,strong:M8,b:M8,em:O8,i:O8,u:kL,br:bL,a:SL},IL={...ST};IT({time_to_first_draw:TT})});function LY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function uT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(Z,{added:X.added,deleted:X.deleted})}return Y}function ET(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function wT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||!$z(Z,G))return!1}return!0}function PT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(Z,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function hT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||G.mtimeMs!==Z.mtimeMs||G.completionId!==Z.completionId||G.completionAt!==Z.completionAt)return!1}return!0}class AJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=p([]),[G,X]=p(null),[Q,H]=p(null),[f,j]=p(null),[V,B]=p(new Map),[K,L]=p(new Map),[A,O]=p(null),[R,u]=p(null),[P,S]=p(null),[g,M]=p(null),[T,d]=p("online");this.tasksAcc=Y,this.setTasks=(i)=>Z(()=>i),this.activeTaskAcc=G,this.setActiveTaskSig=(i)=>X(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>H(()=>i),this.daemonVersionAcc=f,this.setDaemonVersionSig=(i)=>j(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>B(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(i)=>u(()=>i),this.uiPrefsAcc=P,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=T,this.setConnectionState=(i)=>d(()=>i),this.ensureReachable=z.ensureReachable??wG,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")ZY("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),ZY("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)JJ("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:sJ,minProtocolVersion:NY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:sJ,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${sJ} (min v${NY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(DQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),ZY("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>RV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return BZ((Y)=>{return _0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return DQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return DQ(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return DQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(DQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else JJ("orch",`dropped task.snapshot event: tasks is not an array (got ${LY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){JJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${LY(Y?.taskId)}, state=${LY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){JJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${LY(Y?.taskId)}, kind=${LY(Y?.kind)})`);return}let Z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(Z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&Z.has(Y.taskId)){let G=new Map(Z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(J==="worktree.changes"){let Y=uT(z);if(!Y){JJ("orch",`dropped worktree.changes event: malformed changes payload (${LY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&wT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=PT(z);if(!Y){JJ("orch",`dropped transcript.activity event: malformed activity payload (${LY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&hT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=ET(z);if(!Y){let Z=z?.theme;JJ("orch",`dropped ui-prefs event: theme must be a string (got ${LY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){JJ("orch",`dropped keybindings event: rev must be a number (got ${LY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setTaskJobsSig(Z)}}function DQ(J){return{id:FX(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var _Y=C(()=>{GZ();CJ();YZ();W1();xG();zz();NJ()});function uL(J){let z=J[Fz];if(!z){if(Object.defineProperty(J,Fz,{value:z=new Proxy(J,cT)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),G=Object.getPrototypeOf(J),X=G!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&G!==Object.prototype;if(X){let Q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(Q)),Object.assign(Z,Q)}for(let Q=0,H=Y.length;Q<H;Q++){let f=Y[Q];if(X&&f==="constructor")continue;if(Z[f].get)Object.defineProperty(J,f,{configurable:!0,enumerable:Z[f].enumerable,get:Z[f].get.bind(z)})}}}return z}function ff(J){let z;return J!=null&&typeof J==="object"&&(J[Fz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function FQ(J,z=new Set){let Y,Z,G,X;if(Y=J!=null&&J[N8])return Y;if(!ff(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,H=J.length;Q<H;Q++)if(G=J[Q],(Z=FQ(G,z))!==G)J[Q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let f=0,j=Q.length;f<j;f++){if(X=Q[f],H[X].get)continue;if(G=J[X],(Z=FQ(G,z))!==G)J[X]=Z}}return J}function jf(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function MQ(J,z,Y){if(J[z])return J[z];let[Z,G]=p(Y,{equals:!1,internal:!0});return Z.$=G,J[z]=Z}function vT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Fz||z===iG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Fz][z],Y}function EL(J){xq()&&MQ(jf(J,iG),xL)()}function mT(J){return EL(J),Reflect.ownKeys(J)}function Bf(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let G=J[z],X=J.length;if(TL.onStoreNodeUpdate&&TL.onStoreNodeUpdate(J,z,Y,G),Y===void 0){if(delete J[z],J[FY]&&J[FY][z]&&G!==void 0)J[FY][z].$()}else if(J[z]=Y,J[FY]&&J[FY][z]&&G===void 0)J[FY][z].$();let Q=jf(J,iG),H;if(H=MQ(Q,z,G))H.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let f=J.length;f<X;f++)(H=Q[f])&&H.$();(H=MQ(Q,"length",X))&&H.$(J.length)}(H=Q[xL])&&H.$()}function wL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(PL(G))continue;Bf(J,G,z[G])}}function PL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function dT(J,z){if(typeof z==="function")z=z(J);if(z=FQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let G=z[Y];if(J[Y]!==G)Bf(J,Y,G)}Bf(J,"length",Z)}else wL(J,z)}function LQ(J,z,Y=[]){let Z,G=J;if(z.length>1){Z=z.shift();let Q=typeof Z,H=Array.isArray(J);if(Q==="string"&&(Z==="__proto__"||z.length>1&&PL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let f=0;f<Z.length;f++)LQ(J,[Z[f]].concat(z),Y);return}else if(H&&Q==="function"){for(let f=0;f<J.length;f++)if(Z(J[f],f))LQ(J,[f].concat(z),Y);return}else if(H&&Q==="object"){let{from:f=0,to:j=J.length-1,by:V=1}=Z;for(let B=f;B<=j;B+=V)LQ(J,[B].concat(z),Y);return}else if(z.length>1){LQ(J[Z],z,[Z].concat(Y));return}G=J[Z],Y=[Z].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(Z===void 0&&X==null)return;if(X=FQ(X),Z===void 0||ff(G)&&ff(X)&&!Array.isArray(X))wL(G,X);else Bf(J,Z,X)}function _z(...[J,z]){let Y=FQ(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=uL(Y);qK.registerGraph({value:Y,name:z&&z.name});function X(...Q){Tq(()=>{Z&&Q.length===1?dT(Y,Q[0]):LQ(Y,Q)})}return[G,X]}var N8,iG,FY,xL,TL,cT,pa;var lG=C(()=>{W1();N8=Symbol("store-raw"),iG=Symbol("store-node"),FY=Symbol("store-has"),xL=Symbol("store-self"),TL={onStoreNodeUpdate:null};cT={get(J,z,Y){if(z===N8)return J;if(z===Fz)return Y;if(z===Iq)return EL(J),Y;let Z=jf(J,iG),G=Z[z],X=G?G():J[z];if(z===iG||z===FY||z==="__proto__")return X;if(!G){let Q=Object.getOwnPropertyDescriptor(J,z);if(xq()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))X=MQ(Z,z,X)()}return ff(X)?uL(X):X},has(J,z){if(z===N8||z===Fz||z===Iq||z===iG||z===FY||z==="__proto__")return!0;return xq()&&MQ(jf(J,FY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:mT,getOwnPropertyDescriptor:vT};pa=Symbol("store-root")});function Wf(J){let z=Pz();return{provider:(Y)=>{let Z=J.init(Y);return b(Y0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return b(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=mJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var C8=C(()=>{w();w();W1()});import{RGBA as PZ}from"@opentui/core";function iT(){return Object.keys(VJ.themes)}function OQ(J){return Boolean(VJ.themes[J])}function b8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return hZ("themes",{...VJ.themes,[J]:z}),!0}function k8(J,z="dark"){let Y=J.defs??{};function Z(f,j=[]){if(typeof f==="string"){if(f==="transparent"||f==="none")return PZ.fromInts(0,0,0,0);if(f.startsWith("#"))return PZ.fromHex(f);if(j.includes(f))return PZ.fromInts(0,0,0);let V=Y[f]??J.theme[f];if(V===void 0)return PZ.fromInts(0,0,0);return Z(V,[...j,f])}return Z(f[z],j)}let G={};for(let[f,j]of Object.entries(J.theme))G[f]=Z(j);let X=G.text??PZ.fromHex("#ffffff"),Q=G.background??PZ.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:Q,backgroundPanel:G.backgroundPanel??Q,backgroundElement:G.backgroundElement??Q,backgroundMenu:G.backgroundMenu??G.backgroundElement??Q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??Q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??Q,diffRemovedBg:G.diffRemovedBg??Q,selectedListItemText:G.selectedListItemText??Q},...G}}var nT,vZ,VJ,hZ,w0,hL;var h1=C(()=>{w();W1();lG();C8();oq();sq();tq();eq();JH();zH();YH();nT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG},vZ=["primary","success","info"],[VJ,hZ]=_z({themes:{...nT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:hL}=Wf({name:"Theme",init:(J)=>{if(J.mode)hZ("mode",J.mode);if(J.theme&&OQ(J.theme))hZ("active",J.theme);let z=WJ(),Y=U0(()=>{let G=VJ.themes[VJ.active];if(G)return k8(G,VJ.mode);let X=VJ.themes.claude??VJ.themes.opencode??Object.values(VJ.themes)[0];if(!X)return k8({theme:{background:"#000000",text:"#ffffff"}},VJ.mode);return k8(X,VJ.mode)}),Z=U0(()=>{let G=Y(),X=G[VJ.focusAccent]??G.primary,Q={...G,focusAccent:X};if(!VJ.transparentBackground)return Q;let H=PZ.fromInts(0,0,0,0);return{...Q,background:H,backgroundPanel:H}});return _0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(G,X){let Q=Z();return Q[X]??Q.text}}),get selected(){return VJ.active},get transparentBackground(){return VJ.transparentBackground},get focusAccent(){return VJ.focusAccent},mode(){return VJ.mode},set(G){if(!OQ(G))return!1;return hZ("active",G),!0},setMode(G){hZ("mode",G)},setTransparentBackground(G){hZ("transparentBackground",G)},setFocusAccent(G){hZ("focusAccent",G)},all(){return iT()},has(G){return OQ(G)}}}}))});var vL,mL;var cL=C(()=>{vL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},mL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var dL,nL;var iL=C(()=>{dL={tabs:{all:"All",changes:"Changes"},actions:{zen:"Zen",createPR:"Create PR"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository",pathMissing:"worktree path is missing",permissionDenied:"permission denied",gitNotInstalled:"git is not installed",gitFailed:"git command failed"},footer:{openHint:"\u21B5 open"}},nL={tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u521B\u5EFA PR"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93",pathMissing:"worktree \u8DEF\u5F84\u4E0D\u5B58\u5728",permissionDenied:"\u6743\u9650\u4E0D\u8DB3",gitNotInstalled:"\u672A\u5B89\u88C5 git",gitFailed:"git \u547D\u4EE4\u5931\u8D25"},footer:{openHint:"\u21B5 \u6253\u5F00"}}});var lL,$L;var aL=C(()=>{lL={title:"kobe \u2014 keybindings",esc:"esc"},$L={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var _L,pL;var rL=C(()=>{_L={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",hint:"[ ] session \xB7 j/k scroll \xB7 \u23CE expand",hintExpanded:"[ ] session \xB7 j/k scroll \xB7 \u23CE collapse",role:{user:"USER",assistant:"ASSISTANT",system:"SYSTEM"},thinking:"thinking"},pL={empty:"\u6B64\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u5386\u53F2\u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",sessionLabel:"\u4F1A\u8BDD",archivedTag:"\u5DF2\u5F52\u6863",hint:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u5C55\u5F00",hintExpanded:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u6536\u8D77",role:{user:"\u7528\u6237",assistant:"\u52A9\u624B",system:"\u7CFB\u7EDF"},thinking:"\u601D\u8003"}});var oL,sL;var tL=C(()=>{oL={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},sL={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var eL,JF;var zF=C(()=>{eL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},JF={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var YF,ZF;var GF=C(()=>{YF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},ZF={badge:{newActivity:"\u25CF \u65B0\u52A8\u6001"},preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",file:"\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026"}}});var XF,QF;var qF=C(()=>{XF={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},QF={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var HF,fF;var jF=C(()=>{HF={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created (default `~/.kobe/worktrees`). Each repo keeps its own `<repo>-<hash>` subfolder underneath. Applies to new tasks only \u2014 existing worktrees stay where they are. Remote projects are unaffected. enter to edit; leave blank for the default.",worktreeBase:"worktree base: {path}",worktreeBaseDefault:"(default \u2014 enter to change)",worktreeBaseTitle:"Worktree location (blank = default ~/.kobe/worktrees)",worktreeBaseField:"path"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},fF={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\uFF08\u9ED8\u8BA4 `~/.kobe/worktrees`\uFF09\u3002\u6BCF\u4E2A\u4ED3\u5E93\u5728\u5176\u4E0B\u4FDD\u7559\u81EA\u5DF1\u7684 `<\u4ED3\u5E93\u540D>-<\u54C8\u5E0C>` \u5B50\u76EE\u5F55\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u2014\u2014\u5DF2\u6709\u5DE5\u4F5C\u6811\u4FDD\u6301\u539F\u4F4D\u3002\u8FDC\u7A0B\u9879\u76EE\u4E0D\u53D7\u5F71\u54CD\u3002enter \u7F16\u8F91\uFF1B\u7559\u7A7A\u5219\u7528\u9ED8\u8BA4\u503C\u3002",worktreeBase:"\u5DE5\u4F5C\u6811\u6839\u76EE\u5F55: {path}",worktreeBaseDefault:"(\u9ED8\u8BA4 \u2014 enter \u4FEE\u6539)",worktreeBaseTitle:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4 ~/.kobe/worktrees\uFF09",worktreeBaseField:"\u8DEF\u5F84"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var BF,WF;var VF=C(()=>{BF={view:{workspace:"Workspace",archives:"Archives"},header:{projects:"PROJECTS",tasks:"TASKS"},search:{placeholder:"fuzzy filter"},sort:"sort",project:{taskSingular:"task",taskPlural:"tasks"},moveChip:" move",empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noArchivedProject:"No archived tasks for this project.",noActive:"No active tasks \u2014 press n or [+] to create one.",noArchived:"No archived tasks."},archiveHint:"a to unarchive",status:{done:"done",inReview:"in review",working:"working",backlog:"\u2014",canceled:"canceled",error:"error"},activity:{rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error"},subtitle:{noTracking:"no activity tracking",materializing:"materializing"},hints:{headerFolded:"\u2500\u2500 keys ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 keys ?\u25BE \u2500\u2500",fullHelp:"full help",newTask:"new task",settings:"settings",open:"open",focusEngine:"focus engine",openWorktree:"open wt",delete:"delete",views:"views",project:"project",movePanes:"move panes",detach:"tasks\u2192detach",splits:"splits",panes:"panes",reorder:"reorder",done:"done"},toast:{noDaemonWorktree:"No daemon running \u2014 can't create the worktree",noDaemonOpen:"No daemon running \u2014 can't open this task",noEditor:"No editor found \u2014 set KOBE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",sessionStartFailed:"Couldn't start this task's session",moveTaskFailed:"Couldn't move task: {message}",alreadyLatest:"Already on the latest version (v{version})",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}"}},WF={view:{workspace:"\u5DE5\u4F5C\u533A",archives:"\u5F52\u6863"},header:{projects:"\u9879\u76EE",tasks:"\u4EFB\u52A1"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:"\u6392\u5E8F",project:{taskSingular:"\u4E2A\u4EFB\u52A1",taskPlural:"\u4E2A\u4EFB\u52A1"},moveChip:" \u79FB\u52A8",empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noArchivedProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u6309 n \u6216 [+] \u65B0\u5EFA\u3002",noArchived:"\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002"},archiveHint:"a \u53D6\u6D88\u5F52\u6863",status:{done:"\u5DF2\u5B8C\u6210",inReview:"\u5BA1\u6838\u4E2D",working:"\u8FDB\u884C\u4E2D",backlog:"\u2014",canceled:"\u5DF2\u53D6\u6D88",error:"\u9519\u8BEF"},activity:{rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree"},hints:{headerFolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25BE \u2500\u2500",fullHelp:"\u5B8C\u6574\u5E2E\u52A9",newTask:"\u65B0\u5EFA\u4EFB\u52A1",settings:"\u8BBE\u7F6E",open:"\u6253\u5F00",focusEngine:"\u805A\u7126\u5F15\u64CE",openWorktree:"\u6253\u5F00 worktree",delete:"\u5220\u9664",views:"\u89C6\u56FE",project:"\u9879\u76EE",movePanes:"\u79FB\u52A8\u9762\u677F",detach:"\u4EFB\u52A1\u2192\u5206\u79BB",splits:"\u5206\u5272",panes:"\u9762\u677F",reorder:"\u91CD\u65B0\u6392\u5E8F",done:"\u5B8C\u6210"},toast:{noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree",noDaemonOpen:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u6253\u5F00\u6B64\u4EFB\u52A1",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E KOBE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",sessionStartFailed:"\u65E0\u6CD5\u542F\u52A8\u6B64\u4EFB\u52A1\u7684\u4F1A\u8BDD",moveTaskFailed:"\u65E0\u6CD5\u79FB\u52A8\u4EFB\u52A1\uFF1A{message}",alreadyLatest:"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v{version}\uFF09",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}"}}});var KF,UF;var DF=C(()=>{KF={pageTitle:"KOBE UPDATE",current:"current",latest:"latest",releaseUrlUnavailable:"release URL unavailable",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL.",statusRunningUpdater:"Leaving the TUI page and running the updater in this tmux window...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"kobe update complete. Relaunch kobe to use the new version.",updateFailed:"kobe update failed with exit code {code}.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the previous tmux window"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `kobe daemon restart` then `kobe reload`"}},UF={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function AQ(J){return typeof J==="string"&&mZ.some((z)=>z.id===J)}var lT,$T,mZ,$G,aG="en";var _G=C(()=>{cL();iL();aL();rL();tL();zF();GF();qF();jF();VF();DF();lT={settings:HF,tasks:BF,files:dL,newTask:eL,ops:YF,update:KF,quickTask:XF,help:lL,history:_L,common:vL,keys:oL},$T={settings:fF,tasks:WF,files:nL,newTask:JF,ops:ZF,update:UF,quickTask:QF,help:$L,history:pL,common:mL,keys:sL},mZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$G={en:lT,zh:$T}});function RQ(J){if($G[J])aT("lang",J)}function I8(){return S8.lang}function LF(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function _T(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function F(J,z){let Y=S8.lang,Z=LF($G[Y],J)??LF($G.en,J)??J;return _T(Z,z)}function y8(J,z){let Y=S8.lang,Z=(G)=>{return G.keys[J]?.[z]};return Z($G[Y])??Z($G.en)??z}var S8,aT;var ZJ=C(()=>{lG();_G();_G();[S8,aT]=_z({lang:aG})});function pT(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let G=`${Z.join("+")}+`;return z.map((X)=>G+X)}function x8(J,z){if(z.defaultPrevented)return!1;if(T8)return!1;let Y=J.slice(),Z=pT(z);T8=!0;try{for(let G=Y.length-1;G>=0;G--){let X=Y[G];if(!X)continue;let Q=X.config();if(Q.enabled===!1)continue;let H=Q.bindings.find((f)=>Z.includes(f.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{T8=!1}}var T8=!1;function oT(){if(u8)return;let J=WJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");u8=J.keyInput,FF=(z)=>{x8(Vf,z)},u8.on("keypress",FF)}function U1(J){oT();let z=rT++,Y={config:J,id:z};_0(()=>{J()}),Vf.push(Y),T1(()=>{let Z=Vf.findIndex((G)=>G.id===z);if(Z>=0)Vf.splice(Z,1)})}var rT=1,Vf,u8=null,FF=null;var kJ=C(()=>{w();W1();Vf=[]});function Kf(){let J=new Set;function z(Z,G){let X=setTimeout(()=>{J.delete(X),Z()},G);return J.add(X),X}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return T1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var E8=C(()=>{W1()});import{RGBA as MF}from"@opentui/core";function eT(J){let z=az(),Y=w0(),{theme:Z}=Y,G=WJ(),X=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,f=()=>Math.max(8,z().height-H*2);return(()=>{var j=W("box"),V=W("box");return D(j,V),q(j,"onMouseDown",()=>{X=!!G?.getSelection()}),q(j,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),q(j,"alignItems","center"),q(j,"justifyContent","center"),q(j,"position","absolute"),q(j,"zIndex",3000),q(j,"left",0),q(j,"top",0),q(V,"onMouseUp",(B)=>{X=!1,B.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((B)=>{var K=z().width,L=z().height,A=Y.transparentBackground?tT:sT,O=Q(),R=z().width-2,u=f(),P=Z.backgroundDialog;return K!==B.e&&(B.e=q(j,"width",K,B.e)),L!==B.t&&(B.t=q(j,"height",L,B.t)),A!==B.a&&(B.a=q(j,"backgroundColor",A,B.a)),O!==B.o&&(B.o=q(V,"width",O,B.o)),R!==B.i&&(B.i=q(V,"maxWidth",R,B.i)),u!==B.n&&(B.n=q(V,"maxHeight",u,B.n)),P!==B.s&&(B.s=q(V,"backgroundColor",P,B.s)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),j})()}function Jx(){let[J,z]=_z({stack:[],size:"medium"}),Y=WJ(),Z=null,G=Kf();function X(){G.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function Q(f){for(let j of f.getChildren()){if(j===Z)return!0;if(Q(j))return!0}return!1}let H=Y?.root;if(!H)return;if(!Q(H))return;Z.focus()},1)}return U1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Tq(()=>{z("size","medium"),z("stack",[])}),X()},replace(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let f of J.stack)f.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:H}])},push(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:Q,onClose:H}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function AF(J){let z=Jx();return b(OF.Provider,{value:z,get children(){return[N0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(Y0,{get when(){return z.stack.length},get children(){return b(eT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function n1(){let J=mJ(OF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var sT,tT,OF;var $J=C(()=>{w();w();w();w();w();w();w();w();W1();lG();h1();kJ();E8();sT=MF.fromInts(0,0,0,128),tT=MF.fromInts(0,0,0,64);OF=Pz()});import{spawnSync as w8}from"child_process";import*as gF from"fs";function RF(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function NF(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=gF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(w8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return RF(z)}catch{return RF(z)}return null}function gQ(J){if(!J)return null;try{let z=w8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function CF(J){if(!J)return[];try{let z=w8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
|
|
262
|
-
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let G=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,X=G(Y),Q=G(Z);if(X!==Q)return X-Q;return Y.localeCompare(Z)})}catch{return[]}}var Tz="main";var Uf=()=>{};import*as kF from"fs";import*as Df from"os";function RJ(J){if(J==="~")return Df.homedir();if(J.startsWith("~/"))return Df.homedir()+J.slice(1);return J}function P8(J){if(!J)return{base:"",filter:""};let Y=RJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function h8(J){if(!J)return[];try{let z=kF.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,G)=>Z.localeCompare(G))}catch{return[]}}function v8(J,z){let Y=z.toLowerCase(),G=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function NQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let G=Df.homedir();if(Z===G)return"~";if(Z.startsWith(`${G}/`))return`~${Z.slice(G.length)}`}return Z}var Lf=()=>{};import{spawn as zx}from"child_process";import*as cZ from"fs";import*as CQ from"path";function bF(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),G=Math.max(Y,Z);return(G>=0?z.slice(G+1):z).replace(/\.git$/i,"")}function SF(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),G=z.includes("/");if(!Y&&!Z&&!G)return F("newTask.error.gitUrlInvalid",{url:z});return null}function IF(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let G=RJ(Z),X;try{X=cZ.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let Q=CQ.join(G,Y);if(cZ.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function yF(J,z){return CQ.join(RJ(J.trim()),z.trim())}function TF(J,z){let Y=z.trim();if(!Y)return z;let Z=RJ(J.trim());if(!Z)return z;try{if(!cZ.statSync(Z).isDirectory())return z}catch{return z}if(!cZ.existsSync(CQ.join(Z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!cZ.existsSync(CQ.join(Z,X)))return X}return Y}function xF(J,z,Y){return new Promise((Z)=>{let G="";try{let X=zx("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(Q)=>{if(G+=Q,Y){let H=Q.split(/[\r\n]+/).filter((j)=>j.trim().length>0),f=H[H.length-1];if(f)Y(f)}}),X.on("error",(Q)=>{Z({ok:!1,error:Q.message})}),X.on("close",(Q)=>{if(Q===0){Z({ok:!0,path:z});return}let H=G.split(/[\r\n]+/).filter((f)=>f.trim().length>0).pop()??`git clone exited with ${Q}`;Z({ok:!1,error:H})})}catch(X){Z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var uF=C(()=>{ZJ();Lf()});function m8(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function c8(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function EF(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function gJ(J){return J.replace(/[\r\n]+/g,"")}function kQ(J){return!/\S/u.test(J)}function d8(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return n8(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function n8(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function wF(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>hQ(Y,Z.path))}function PF(J,z){let Y=new Set,Z=[];for(let G of[J,...z]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),Z.push(X)}return Z}function hF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function vF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function bQ(J,z,Y=Yx){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let G=Math.floor(Y/2),X=Math.max(0,z-G);if(X+Y>Z)X=Z-Y;return{items:J.slice(X,X+Y),start:X,total:Z}}function pz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function mF(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||Tz}var Yx=8;var i8=C(()=>{$f();Uf()});import{TextAttributes as Hz}from"@opentui/core";function cF(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("existing"),X=()=>{let I=J.availableVendors;return I&&I.length>0?I:a1},Q=(()=>{let I=X(),O0=J.defaultVendor??"claude";return I.includes(O0)?O0:I[0]??"claude"})(),[H,f]=p(Q),[j,V]=p("tabs"),[B,K]=p(J.defaultRepo),[L,A]=p(gQ(RJ(J.defaultRepo.trim()))??Tz),[O,R]=p(!1),[u,P]=p(""),[S,g]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,T]=p(""),[d,i]=p(!1),[J0,E]=p(Tz),[z0,q0]=p(!1),[o,B0]=p(""),g0=U0(()=>PF(J.defaultRepo,J.savedRepos)),m=U0(()=>EF(B(),g0())),r=U0(()=>P8(B())),c=U0(()=>h8(r().base)),N=U0(()=>v8(c(),r().filter)),t=U0(()=>hF(g0(),B())),x=U0(()=>m()==="browse"?N():t()),[n,Q0]=p(0),H0=U0(()=>bQ(x(),n())),[F0,M0]=p(!1),o0=U0(()=>CF(RJ(B().trim()))),S0=U0(()=>vF(o0(),L())),[p0,h]=p(0),L0=U0(()=>bQ(S0(),p0())),Z0=U0(()=>P8(S())),D0=U0(()=>h8(Z0().base)),P0=U0(()=>v8(D0(),Z0().filter)),[G1,c0]=p(0),u0=U0(()=>bQ(P0(),G1())),[k1,s]=p(!1),[j0,C0]=p(""),[t0,z1]=p(0),[E0,V1]=p(new Set),[D1]=WZ(()=>Z()==="adopt"?RJ(B().trim()):null,async(I)=>J.discoverAdoptable?await J.discoverAdoptable(I):[]),f1=U0(()=>wF(D1()??[],j0())),G0=U0(()=>bQ(f1().map((I)=>I.path),t0())),X0=U0(()=>{let I=G0();return f1().slice(I.start,I.start+I.items.length)});_0(()=>{f1(),z1((I)=>pz(I,f1().length))});function W0(I){V1((O0)=>{let e=new Set(O0);if(e.has(I))e.delete(I);else e.add(I);return e})}function R0(){let I=f1()[t0()];if(I)W0(I.path)}_0(()=>{S0(),h(0)}),_0(()=>{let I=RJ(B().trim());if(!I)return;if(O())return;let O0=gQ(I);if(O0)A(O0)}),_0(()=>{x(),Q0(0)}),_0(()=>{P0(),c0(0)}),_0(()=>{let I=u(),O0=S();if(d())return;let e=bF(I);T(TF(O0,e))});let[V0,h0]=p(null);_0(()=>{B(),u(),S(),M(),j0(),h0(null)});function k0(){let I=RJ(B().trim());if(!I)return;let O0=NF(I);if(O0){h0(O0),V("repo");return}let e=L().trim()||Tz;J.onSubmit({repo:I,baseRef:e,vendor:H()}),z.clear()}async function s0(){if(z0())return;let I=SF(u());if(I){h0(I),V("cloneUrl");return}let O0=IF(S(),M());if(O0){h0(O0),V(M().trim()?"cloneParent":"cloneFolder");return}let e=yF(S(),M());q0(!0),B0(F("newTask.clone.progressInto",{target:e}));let I0=await xF(u().trim(),e,(GJ)=>{B0(GJ)});if(q0(!1),!I0.ok){h0(F("newTask.error.cloneFailed",{error:I0.error})),V("cloneUrl");return}let M1=J0().trim()||Tz,UJ=RJ(S().trim());J.onSubmit({repo:I0.path,baseRef:M1,vendor:H(),cloned:{parentDir:UJ}}),z.clear()}function b0(){let I=f1();if(I.length===0){h0(F("newTask.error.noAdoptable"));return}let O0=E0(),e=O0.size>0?I.filter((I0)=>O0.has(I0.path)):I.slice(t0(),t0()+1);if(e.length===0)return;J.onSubmit({mode:"adopt",repo:RJ(B().trim()),vendor:H(),adopt:e.map((I0)=>({worktreePath:I0.path,branch:I0.branch}))}),z.clear()}function x0(){if(Z()==="clone"){s0();return}if(Z()==="adopt"){b0();return}k0()}function k(I){if(z0())return;if(I===Z())return;G(I),V(n8(I)),h0(null)}function X1(I){if(z0())return;let O0=I===1?m8(Z()):c8(Z());if(O0===Z())return;G(O0),h0(null),V("tabs")}function e0(I){f((O0)=>I===1?AY(X(),O0):af(X(),O0))}function n0(){if(!B().trim()&&m()==="saved"){let O0=x()[0];if(O0){K(O0),V("baseRef");return}}if(m()==="browse"){let e=N()[n()],I0=r();if(e){K(NQ(B(),I0.base,e)),Q0(0),M0(!0),V("baseRef");return}V("baseRef");return}let I=x()[n()];if(I){K(I),V("baseRef");return}V("baseRef")}function v0(I){let e=x()[I];if(!e)return;if(m()==="browse"){let I0=r();K(NQ(B(),I0.base,e)),Q0(I),M0(!0),V("baseRef");return}K(e),Q0(I),V("baseRef")}function K0(){let O0=P0()[G1()],e=Z0();if(O0){g(NQ(S(),e.base,O0)),c0(0),s(!0),V("cloneFolder");return}V("cloneFolder")}function y0(I){let e=P0()[I];if(!e)return;let I0=Z0();g(NQ(S(),I0.base,e)),c0(I),s(!0),V("cloneFolder")}let b1=()=>{let I=f1();if(I.length===0)return;let O0=I.every((e)=>E0().has(e.path));V1(O0?new Set:new Set(I.map((e)=>e.path)))};U1(()=>({bindings:[{key:"tab",cmd:()=>V((I)=>d8(I,Z()))},{key:"ctrl+]",cmd:()=>k(m8(Z()))},{key:"ctrl+[",cmd:()=>k(c8(Z()))},{key:"ctrl+e",cmd:()=>f((I)=>AY(X(),I))},{key:"up",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()-1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()-1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()-1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()-1,I.length))}}},{key:"down",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()+1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()+1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()+1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()+1,I.length))}}},...j()==="tabs"||j()==="engine"?[{key:"left",cmd:()=>j()==="tabs"?X1(-1):e0(-1)},{key:"right",cmd:()=>j()==="tabs"?X1(1):e0(1)},{key:"return",cmd:()=>V((I)=>d8(I,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:b1}]:[]]})),U1(()=>({enabled:j()==="confirm"&&!z0(),bindings:[{key:"return",cmd:()=>x0()}]}));let F1=(I)=>j()===I?Y.primary:Y.textMuted,A1=(I)=>j()===I?Hz.BOLD|Hz.UNDERLINE:void 0,l=(I,O0)=>I?O0?Hz.BOLD|Hz.UNDERLINE:Hz.BOLD:void 0;return(()=>{var I=W("box"),O0=W("box"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("text"),GJ=W("box"),j1=W("box"),_J=W("text"),fJ=W("box"),pJ=W("text"),bJ=W("text");return D(I,O0),D(I,I0),D(I,fJ),q(I,"paddingLeft",2),q(I,"paddingRight",2),q(I,"gap",0),D(O0,e),q(O0,"flexDirection","row"),U(e,()=>F("newTask.title")),D(I0,M1),q(I0,"gap",1),q(I0,"paddingTop",1),q(I0,"paddingBottom",1),U(I0,()=>{let $=()=>j()==="tabs",a=(_)=>_?Y.primary:Y.textMuted;return(()=>{var _=W("box"),v=W("text"),i0=W("text"),m0=W("text");return D(_,v),D(_,i0),D(_,m0),q(_,"flexDirection","row"),q(_,"gap",2),q(v,"onMouseUp",()=>k("existing")),U(v,(()=>{var A0=N0(()=>Z()==="existing");return()=>A0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(i0,"onMouseUp",()=>k("clone")),U(i0,(()=>{var A0=N0(()=>Z()==="clone");return()=>A0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(m0,"onMouseUp",()=>k("adopt")),U(m0,(()=>{var A0=N0(()=>Z()==="adopt");return()=>A0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((A0)=>{var l0=a(Z()==="existing"),B1=l(Z()==="existing",$()),R1=a(Z()==="clone"),DJ=l(Z()==="clone",$()),jz=a(Z()==="adopt"),OY=l(Z()==="adopt",$());return l0!==A0.e&&(A0.e=q(v,"fg",l0,A0.e)),B1!==A0.t&&(A0.t=q(v,"attributes",B1,A0.t)),R1!==A0.a&&(A0.a=q(i0,"fg",R1,A0.a)),DJ!==A0.o&&(A0.o=q(i0,"attributes",DJ,A0.o)),jz!==A0.i&&(A0.i=q(m0,"fg",jz,A0.i)),OY!==A0.n&&(A0.n=q(m0,"attributes",OY,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),_})()},M1),D(M1,UJ),D(M1,GJ),q(M1,"gap",0),U(UJ,()=>F("newTask.field.engine")),D(GJ,j1),D(GJ,_J),q(GJ,"flexDirection","row"),q(GJ,"gap",2),U(GJ,b(Z1,{get each(){return X()},children:($)=>{let a=()=>H()===$;return(()=>{var _=W("text");return q(_,"onMouseUp",()=>f($)),U(_,()=>a()?"\u25B8 ":" ",null),U(_,$,null),y((v)=>{var i0=a()?Y.primary:Y.textMuted,m0=a()?Hz.BOLD:void 0;return i0!==v.e&&(v.e=q(_,"fg",i0,v.e)),m0!==v.t&&(v.t=q(_,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),_})()}}),j1),q(j1,"flexGrow",1),U(_J,()=>F("newTask.hint.engineCycle")),U(I0,b(Y0,{get when(){return Z()==="existing"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.repo")),q(_,"onInput",(v)=>{M0(!1),K(gJ(v))}),q(_,"onSubmit",()=>{if(!B().trim())return;n0()}),y((v)=>{var i0=F1("repo"),m0=A1("repo"),A0=B(),l0=J.defaultRepo,B1=j()==="repo";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="repo"&&x().length>0)()&&!F0()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return H0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:H0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return H0().items},children:(a,_)=>{let v=()=>H0().start+_(),i0=()=>v()===n(),m0=()=>m()==="saved"&&a===J.defaultRepo,A0=()=>m()==="saved"&&B().trim()===a,l0=()=>m()==="browse"?"/":"",B1=()=>m0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var R1=W("text");return q(R1,"wrapMode","none"),q(R1,"onMouseUp",()=>v0(v())),U(R1,()=>i0()?"\u25B8 ":" ",null),U(R1,a,null),U(R1,l0,null),U(R1,B1,null),y((DJ)=>{var jz=i0()?Y.primary:A0()?Y.accent:Y.textMuted,OY=i0()?Hz.BOLD:void 0;return jz!==DJ.e&&(DJ.e=q(R1,"fg",jz,DJ.e)),OY!==DJ.t&&(DJ.t=q(R1,"attributes",OY,DJ.t)),DJ},{e:void 0,t:void 0}),R1})()}}),null),U($,b(Y0,{get when(){return H0().start+H0().items.length<H0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.fromBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>{R(!0),A(gJ(v))}),q(_,"onSubmit",()=>{A(mF(L(),S0(),p0())),R(!0),k0()}),y((v)=>{var i0=F1("baseRef"),m0=A1("baseRef"),A0=L(),l0=j()==="baseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="baseRef"&&S0().length===0)()&&V0()==null},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>o0().length===0);return()=>_()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="baseRef")()&&S0().length>0},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),U($,b(Y0,{get when(){return L0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:L0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return L0().items},children:(a,_)=>{let v=()=>L0().start+_(),i0=()=>v()===p0(),m0=()=>L().trim()===a;return(()=>{var A0=W("text");return q(A0,"wrapMode","none"),q(A0,"onMouseUp",()=>{A(a),R(!0),h(v()),V("confirm")}),U(A0,()=>i0()?"\u25B8 ":" ",null),U(A0,a,null),y((l0)=>{var B1=i0()?Y.primary:m0()?Y.accent:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(A0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(A0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),A0})()}}),null),U($,b(Y0,{get when(){return L0().start+L0().items.length<L0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:L0().total-L0().start-L0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="clone"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.gitUrl")),q(_,"placeholder","https://github.com/user/repo.git"),q(_,"onInput",(v)=>P(gJ(v))),q(_,"onSubmit",()=>{if(!u().trim())return;V("cloneParent")}),y((v)=>{var i0=F1("cloneUrl"),m0=A1("cloneUrl"),A0=u(),l0=j()==="cloneUrl";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.parentDir")),q(_,"placeholder","~/"),q(_,"onInput",(v)=>{s(!1),g(gJ(v))}),q(_,"onSubmit",()=>K0()),y((v)=>{var i0=F1("cloneParent"),m0=A1("cloneParent"),A0=S(),l0=j()==="cloneParent";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return j()==="cloneParent"},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.remembered")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="cloneParent"&&P0().length>0)()&&!k1()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return u0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:u0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return u0().items},children:(a,_)=>{let v=()=>u0().start+_(),i0=()=>v()===G1();return(()=>{var m0=W("text"),A0=T0("/");return D(m0,A0),q(m0,"wrapMode","none"),q(m0,"onMouseUp",()=>y0(v())),U(m0,()=>i0()?"\u25B8 ":" ",A0),U(m0,a,A0),y((l0)=>{var B1=i0()?Y.primary:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(m0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(m0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),m0})()}}),null),U($,b(Y0,{get when(){return u0().start+u0().items.length<u0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:u0().total-u0().start-u0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.folderName")),q(_,"onInput",(v)=>{i(!0),T(gJ(v))}),q(_,"onSubmit",()=>V("cloneBaseRef")),y((v)=>{var i0=F1("cloneFolder"),m0=A1("cloneFolder"),A0=M(),l0=F("newTask.placeholder.folderName"),B1=j()==="cloneFolder";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.baseBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>E(gJ(v))),q(_,"onSubmit",()=>void s0()),y((v)=>{var i0=F1("cloneBaseRef"),m0=A1("cloneBaseRef"),A0=J0(),l0=j()==="cloneBaseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return z0()},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>o()||F("newTask.clone.progressFallback")),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.adoptFilter")),q(_,"onInput",(v)=>C0(gJ(v))),q(_,"onSubmit",()=>R0()),y((v)=>{var i0=F1("adoptFilter"),m0=A1("adoptFilter"),A0=j0(),l0=F("newTask.placeholder.adoptFilter"),B1=j()==="adoptFilter";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.adopt.repoLine",{path:RJ(B().trim())||F("newTask.adopt.repoNone")})),y((_)=>q(a,"fg",Y.textMuted,_)),$})(),b(Y0,{get when(){return D1.loading},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.scanningWorktrees")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>!D1.loading)()&&f1().length===0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>(D1()??[]).length===0);return()=>_()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return f1().length>0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return G0().start>0},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreAbove",{count:G0().start})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),U($,b(Z1,{get each(){return X0()},children:(_,v)=>{let i0=()=>G0().start+v(),m0=()=>i0()===t0(),A0=()=>E0().has(_.path),l0=()=>[_.dirty?"dirty":"",_.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return q(B1,"wrapMode","none"),q(B1,"onMouseUp",()=>{z1(i0()),W0(_.path)}),U(B1,()=>m0()?"\u25B8 ":" ",null),U(B1,()=>A0()?"[x] ":"[ ] ",null),U(B1,()=>_.branch,null),U(B1,(()=>{var R1=N0(()=>!!l0());return()=>R1()?` (${l0()})`:""})(),null),y((R1)=>{var DJ=m0()?Y.primary:A0()?Y.accent:Y.textMuted,jz=m0()?Hz.BOLD:void 0;return DJ!==R1.e&&(R1.e=q(B1,"fg",DJ,R1.e)),jz!==R1.t&&(R1.t=q(B1,"attributes",jz,R1.t)),R1},{e:void 0,t:void 0}),B1})()}}),a),U($,b(Y0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>E0().size>0);return()=>_()?F("newTask.adopt.hintSelected",{count:E0().size}):F("newTask.adopt.hintDefault")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return V0()},get children(){var $=W("text"),a=T0("\u203B ");return D($,a),q($,"wrapMode","word"),U($,V0,null),y((_)=>q($,"fg",Y.error,_)),$}}),null),D(fJ,pJ),D(fJ,bJ),q(fJ,"flexDirection","row"),q(fJ,"justifyContent","space-between"),q(fJ,"alignItems","center"),q(fJ,"paddingTop",1),q(fJ,"paddingBottom",1),U(pJ,()=>F("newTask.hint.legend")),q(bJ,"onMouseUp",()=>x0()),U(bJ,(()=>{var $=N0(()=>!!z0());return()=>$()?F("newTask.button.cloning"):N0(()=>j()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y(($)=>{var a=Hz.BOLD,_=Y.text,v=F1("engine"),i0=A1("engine"),m0=Y.textMuted,A0=Y.textMuted,l0=j()==="confirm"?Y.primary:Y.text,B1=j()==="confirm"?Hz.BOLD:void 0;return a!==$.e&&($.e=q(e,"attributes",a,$.e)),_!==$.t&&($.t=q(e,"fg",_,$.t)),v!==$.a&&($.a=q(UJ,"fg",v,$.a)),i0!==$.o&&($.o=q(UJ,"attributes",i0,$.o)),m0!==$.i&&($.i=q(_J,"fg",m0,$.i)),A0!==$.n&&($.n=q(pJ,"fg",A0,$.n)),l0!==$.s&&($.s=q(bJ,"fg",l0,$.s)),B1!==$.h&&($.h=q(bJ,"attributes",B1,$.h)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),I})()}var dF=C(()=>{w();w();w();w();w();w();w();w();ZJ();_1();W1();h1();Uf();kJ();Lf();$J();uF();i8()});function Zx(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>b(cF,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),J.setSize("medium")})}var Ff;var pG=C(()=>{w();dF();i8();Ff={show:Zx}});function nF(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as iF}from"@opentui/core";function Gx(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("prompt"),[X,Q]=p(""),[H,f]=p(J.defaultVendor),[j,V]=p(J.defaultBaseRef);function B(O){let R=Mf.indexOf(Z());G(Mf[(R+O+Mf.length)%Mf.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){f((P)=>AY(R,P));return}let u=Math.max(0,R.indexOf(H()));f(R[(u-1+R.length)%R.length]??H())}function L(){if(kQ(X())){G("prompt");return}J.onSubmit({prompt:X().trim(),vendor:H(),baseRef:j().trim()||J.defaultBaseRef}),z.clear()}U1(()=>({enabled:!0,bindings:nF(Z(),{cycleField:B,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),u=W("text"),P=W("text"),S=W("box"),g=W("text"),M=W("input"),T=W("box"),d=W("text"),i=W("box"),J0=W("text"),E=W("input"),z0=W("box"),q0=W("text");return D(O,R),D(O,S),D(O,T),D(O,i),D(O,z0),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(R,u),D(R,P),q(R,"flexDirection","row"),q(R,"justifyContent","space-between"),U(u,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(P,"onMouseUp",()=>J.onCancel()),U(P,()=>F("quickTask.esc")),D(S,g),D(S,M),q(S,"gap",0),U(g,()=>F("quickTask.promptLabel")),q(M,"onInput",(o)=>Q(gJ(o))),q(M,"onSubmit",()=>L()),D(T,d),q(T,"flexDirection","row"),q(T,"gap",2),U(d,()=>F("quickTask.engineLabel")),U(T,b(Z1,{get each(){return J.engines},children:(o)=>(()=>{var B0=W("text");return q(B0,"onMouseUp",()=>{f(o),G("engine")}),U(B0,()=>J.engineLabel(o)),y((g0)=>{var m=H()===o?Y.primary:Y.textMuted,r=H()===o?iF.BOLD:void 0;return m!==g0.e&&(g0.e=q(B0,"fg",m,g0.e)),r!==g0.t&&(g0.t=q(B0,"attributes",r,g0.t)),g0},{e:void 0,t:void 0}),B0})()}),null),D(i,J0),D(i,E),q(i,"gap",0),U(J0,()=>F("quickTask.branchLabel")),q(E,"onInput",(o)=>V(gJ(o))),q(E,"onSubmit",()=>L()),D(z0,q0),q(z0,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),y((o)=>{var B0=iF.BOLD,g0=Y.text,m=Y.textMuted,r=A("prompt"),c=X(),N=F("quickTask.promptPlaceholder"),t=Z()==="prompt",x=A("engine"),n=A("branch"),Q0=j(),H0=J.defaultBaseRef,F0=Z()==="branch",M0=Y.textMuted;return B0!==o.e&&(o.e=q(u,"attributes",B0,o.e)),g0!==o.t&&(o.t=q(u,"fg",g0,o.t)),m!==o.a&&(o.a=q(P,"fg",m,o.a)),r!==o.o&&(o.o=q(g,"fg",r,o.o)),c!==o.i&&(o.i=q(M,"value",c,o.i)),N!==o.n&&(o.n=q(M,"placeholder",N,o.n)),t!==o.s&&(o.s=q(M,"focused",t,o.s)),x!==o.h&&(o.h=q(d,"fg",x,o.h)),n!==o.r&&(o.r=q(J0,"fg",n,o.r)),Q0!==o.d&&(o.d=q(E,"value",Q0,o.d)),H0!==o.l&&(o.l=q(E,"placeholder",H0,o.l)),F0!==o.u&&(o.u=q(E,"focused",F0,o.u)),M0!==o.c&&(o.c=q(q0,"fg",M0,o.c)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function Xx(J,z){return new Promise((Y)=>{J.replace(()=>b(Gx,gL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Mf,lF;var $F=C(()=>{w();w();w();w();w();w();w();W1();_1();h1();ZJ();kJ();$J();pG();Mf=["prompt","engine","branch"];lF={show:Xx}});async function Of(J={}){let z=J.logTag??"orch-connect",Y=J.connect??Qz,Z=null;try{let G=await Y();if(!G)return ZY(z,"no daemon running \u2014 caller degrades"),null;return Z=new AJ(G,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(G){return JJ(z,G),Z?.dispose(),null}}var l8=C(()=>{GZ();CJ();_Y()});function aF(J){let[z,Y]=p(J.initial??"sidebar"),[Z,G]=p(0),X=WJ();function Q(B){if(G((L)=>L+1),z()===B)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(B)}function H(B){let L=(Af.indexOf(z())+B+Af.length)%Af.length;Q(Af[L])}let f=new Map;function j(B){let K=f.get(B);if(!K)K=()=>z()===B,f.set(B,K);return K}let V={focused:z,is:j,setFocused:Q,cycle:H,refocusTick:Z};return b(Qx.Provider,{value:V,get children(){return J.children}})}var Af,Qx;var _F=C(()=>{w();w();W1();Af=["sidebar","workspace","files","terminal"],Qx=Pz(null)});function pF(){for(let J of pY){let z=qx.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function rF(){Hx((J)=>J+1)}function a8(J){return fx.get(J)}function jx(J){return a8(J)?.keys??[]}function rY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=jx(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,Q)=>z.push({key:X,cmd:Z,slot:Q}))}return z}var pY,qx,$8,Hx,fx;var rG=C(()=>{W1();pY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],qx=new Map(pY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[$8,Hx]=p(0);fx=new Map(pY.map((J)=>[J.id,J]))});function Rf(){if(oY)return oY;let J=iq();if(!J.exists)return oY={path:J.path,exists:!1,applied:[],warnings:[]},oY;let z=[...J.warnings],Y=$q(J.doc,process.platform,{chordOptsFor:OB});z.push(...Y.warnings);let Z=Y.entries.filter((H)=>H.id.startsWith("tmux.")),G=Y.entries.filter((H)=>!H.id.startsWith("tmux.")),X=vK(pY,G);z.push(...X.warnings);let Q=[...X.applied];if(Z.length>0){let H=MB(Z);z.push(...H.warnings);for(let f of H.overridden){if(f===vz){Q.push({id:f,keys:H.focus.map((B)=>B?.chord??"").filter((B)=>B!==""),defaultKeys:uY});continue}let j=H.binds[f];Q.push({id:f,keys:j?[j.chord]:[],defaultKeys:[AZ[f]]});let V=pY.find((B)=>B.id===f);if(V?.hint)V.hint.keys=j?`${jG(f)?"prefix ":""}${j.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return oY={path:J.path,exists:!0,applied:Q,warnings:z},oY}function oF(){return oY??Rf()}function sF(){oY=null,hK(),nK(),pF();let J=Rf();return rF(),J}var oY=null;var _8=C(()=>{LB();pq();aq();rG()});var Bx=250,oG,tF;var SQ=C(()=>{lG();sz();C8();({use:oG,provider:tF}=Wf({name:"KV",init:()=>{let[J,z]=_z(LJ()),Y=new Set,Z=null;function G(H){if(Y.size===0)return!0;try{let f={};for(let j of Y)f[j]=J[j];return gY(f),Y.clear(),!0}catch(f){return console.error(`[kobe] kv ${H} failed:`,f),!1}}function X(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,G("write")},Bx)}let Q={get ready(){return!0},get store(){return J},signal(H,f){if(J[H]===void 0)z(H,f);return[()=>Q.get(H),(j)=>Q.set(H,j)]},get(H,f){return J[H]??f},set(H,f){z(H,f),Y.add(H),X()},flush(){if(Z)clearTimeout(Z),Z=null;return G("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{VV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return Q}}))});var gf="../pulse-n3cq1btw.wav";var eF=()=>{};import{existsSync as Vx,mkdirSync as Kx}from"fs";import{tmpdir as Ux}from"os";import{basename as Dx,isAbsolute as Lx,join as p8,resolve as Fx}from"path";function Ox(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function Ax(){if(Nf!==void 0)return Nf;let z=(process.env.PATH??"").split(":").filter(Boolean);return Nf=Mx.find((Y)=>z.some((Z)=>Vx(p8(Z,Y))))??null,Nf}async function Rx(){return YM??=(async()=>{Kx(zM,{recursive:!0});let J=p8(zM,Dx(JM)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(JM)),J})(),YM}function ZM(J=0.4){let z=Ax();if(!z)return;Rx().then((Y)=>{try{Bun.spawn(Ox(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var JM,zM,Mx,Nf,YM;var GM=C(()=>{eF();JM=Lx(gf)?gf:Fx(import.meta.dir,gf),zM=p8(Ux(),"kobe-sfx"),Mx=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function XM(J,z){return`${J}:${z}`}function qM(J){let z=oG(),[Y,Z]=p([]),[G,X]=p(new Map),Q=Kf(),H=0;function f(K){if(X((L)=>{let A=new Map(L),O=XM(K.taskId,K.tabId),R=L.get(O);if(R==="needs_input"||R==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}ZM()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++H,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),Q.set(()=>j(L),gx)}}function j(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=XM(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let B={toasts:Y,unread:G,notify:f,dismiss:j,markRead:V};return b(QM.Provider,{value:B,get children(){return J.children}})}function Cf(){let J=mJ(QM);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var gx=4500,QM;var kf=C(()=>{w();W1();E8();GM();SQ();QM=Pz()});function r8(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=Cx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function Cx(J){if(J===null)return"primary";return Nx.includes(J)?J:null}var Nx;var HM=C(()=>{Nx=["primary","success","info"]});import{readFileSync as kx}from"fs";function fM(J){try{let z=JSON.parse(kx(oJ(),"utf8")),Y=typeof z.activeTheme==="string"&&OQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vZ.includes(z.focusAccent)?z.focusAccent:null,X=AQ(z[bf])?z[bf]:aG;return{theme:Y,transparent:Z,focusAccent:G,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aG}}}var bf="locale";var o8=C(()=>{p1();h1();_G()});function Sx(J){if(J)oQ(J);TV(),Rf();for(let{name:z,theme:Y}of EX())b8(z,Y)}function Ix(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function yx(J){let z=()=>J.children,Y=()=>J.notifications?b(qM,{get children(){return z()}}):z(),Z=()=>b(AF,{get children(){return Y()}}),G=()=>J.focus?b(aF,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?b(tF,{get children(){return G()}}):G();return b(hL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function Tx(J){let{theme:z}=w0();return QJ(()=>JJ("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),G=W("text");return D(Y,Z),D(Y,G),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(G,()=>F("common.paneCrash.hint")),y((X)=>{var{background:Q,error:H,textMuted:f}=z;return Q!==X.e&&(X.e=q(Y,"backgroundColor",Q,X.e)),H!==X.t&&(X.t=q(Z,"fg",H,X.t)),f!==X.a&&(X.a=q(G,"fg",f,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function xx(J){let z=w0(),Y={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:f}of EX())b8(H,f)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};r8(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),RQ(J.boot.locale);let[Z,G]=p(null),X=!1;QJ(()=>{(async()=>{let H=await Of({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(X){H.dispose();return}G(H)})()}),_0(()=>{let H=Z()?.uiPrefsSignal()();if(!H)return;if(r8(Y,H),AQ(H.locale))RQ(H.locale)});let Q=null;return _0(()=>{let H=Z()?.keybindingsRevSignal()();if(H==null)return;if(Q===null||H===Q){Q=H;return}Q=H,sF()}),T1(()=>{X=!0,Z()?.dispose()}),null}async function KJ(J){Sx(J.logContext);let z=fM(bx),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await yL(()=>b(yx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[b(xx,{boot:z}),b(QK,{fallback:(Q)=>b(Tx,{error:Q}),get children(){return Y.root()}})]}}),Ix(Y.onDestroy))}var bx="claude";var MY=C(()=>{w();w();w();w();w();w();w();GZ();W1();l8();_F();_8();SQ();kf();h1();XH();ZJ();$J();HM();o8()});import{homedir as ux}from"os";async function s8(J,z,Y,Z,G={}){let X=I1(z.id);if(await K1(X))return!0;let{archivedHistoryPreviewEnabled:Q}=await Promise.resolve().then(() => (nq(),TK));if(z.archived&&Q()){let{ensureSession:K}=await Promise.resolve().then(() => (zJ(),EJ)),L=z.worktreePath??"",A=L&&xY(L)?L:Y&&xY(Y)?Y:ux();if(!await K({name:X,cwd:A,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,archived:!0,archivedWorktree:L||A,title:z.title}))throw new sY("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!xY(H)){if(!J)throw new sY("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(K){throw new sY("worktree",`ensureWorktree failed for ${z.id}`,K)}await G.reload?.()}if(!H||!xY(H))throw new sY("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (zJ(),EJ)),{resolveEngineLaunchInit:j}=await Promise.resolve().then(() => (yG(),cH)),V=Y?j(Y,H,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:X,cwd:H,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:V}))throw new sY("session",`failed to start tmux session for ${z.id}`);return!1}async function t8(J,z,Y,Z,G={}){let X=I1(z.id),Q=await Promise.resolve().then(() => (zJ(),EJ));if(G.captureFrom){let j=await Q.currentSessionName();if(j&&j!==X)await Q.captureGlobalLayout(j)}if(await s8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt,reload:G.reload})&&G.heal)try{let j=await kZ(X,"@kobe_worktree")||z.worktreePath||"";if(j&&xY(j)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (yG(),cH)),B=Y?V(Y,j,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:X,cwd:j,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B})}}catch(j){console.error("[kobe handover] heal failed (continuing to switch):",j)}let{syncSessionZen:f}=await Promise.resolve().then(() => (PY(),hB));if(await f(X),G.isCurrent&&!G.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(X)}async function Sf(J,z,Y,Z,G={}){await t8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt})}var sY;var If=C(()=>{Yz();Oz();c1();sY=class sY extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var jM={};q1(jM,{startNewTaskHost:()=>Ex,NewTaskPage:()=>yf});function yf(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=SJ(),X=J.defaultRepo||G[0]||process.cwd(),Q=PJ(S1("lastSelectedVendor"),hJ()),H=await GY(),f=J.orchestrator,j=await Ff.show(Y,X,G,{defaultVendor:Q,availableVendors:H,discoverAdoptable:f?(B)=>f.discoverAdoptableWorktrees(B):void 0});if(!j)process.exit(0);if(e1("lastSelectedVendor",j.vendor),ez(j.repo),!f)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(j.mode==="adopt")for(let B of j.adopt)V=await f.adoptWorktree({repo:j.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:j.vendor});else V=await f.createTask({repo:j.repo,baseRef:j.baseRef,vendor:j.vendor})}catch(B){console.error("[kobe new-task] task.create/adopt failed:",B),process.exit(1)}if(V)try{await Sf(f,V,j.repo,j.vendor,{includeInitPrompt:j.mode!=="adopt"})}catch(B){console.error("[kobe new-task] auto-enter failed:",B)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Ex(J){await KJ({setup:async()=>{let z=null;try{let Y=await Sz(),Z=new AJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(yf,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var e8=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();C1();_1();pG();h1();MY();If();$J()});function Tf(J,z,Y,Z,G={}){if(J.length===0)return z;let X=new Map;for(let f of J)X.set(Y(f),f);let Q=J.length===z.length,H=Array(z.length);for(let f=0;f<z.length;f++){let j=z[f],V=X.get(Y(j));if(V&&Z(V,j)&&(!G.samePosition||J[f]===V)){if(H[f]=V,Q&&J[f]!==V)Q=!1}else H[f]=j,Q=!1}return Q?J:H}function BM(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.toLowerCase(),G=0;for(let X=0;X<Z.length&&G<Y.length;X++)if(Z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function wx(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function JW(J,z,Y,Z="default",G){let X=wx(J,z),Q=Y?.trim()??"",H=G?fz(G):null,f=Q?X.filter((O)=>BM(Q,`${O.title} ${xz(O.repo)}`)):X,j=[],V=[],B=[],K=new Set;for(let O of f){if(O.kind==="main"){let R=fz(O.repo);if(K.has(R))continue;K.add(R),j.push(O);continue}if(H&&fz(O.repo)!==H)continue;if(O.pinned===!0)V.push(O);else B.push(O)}if(j.sort((O,R)=>xz(O.repo).localeCompare(xz(R.repo))),Z==="recent")V.sort(WM),B.sort(WM);let L=[],A=0;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function WM(J,z){let Y=VM(z)-VM(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function VM(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function xz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function fz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Px(J,z){let Y=xz(J);if(!z.some((G)=>G!==J&&xz(G)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function KM(J,z){let Y=z==="archived",Z=new Map;for(let X of J){let Q=fz(X.repo),H=Z.get(Q)??{repo:X.repo,count:0};if(X.kind==="main")H.repo=X.repo;else if(X.archived===Y)H.count+=1;Z.set(Q,H)}let G=[...Z.values()].map((X)=>X.repo);return[...Z.values()].map((X)=>({repo:X.repo,label:Px(X.repo,G),count:X.count})).sort((X,Q)=>X.label.localeCompare(Q.label))}function UM(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=fz(z),Z=J.find((X)=>X.task.kind!=="main"&&fz(X.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((X)=>X.task.kind==="main"&&fz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function zW(J){return J.map((z)=>z.task.id)}function DM(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let G=z.indexOf(J);if(G>=0)return G;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function LM(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function hx(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function FM(J,z){return Tf(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&hx(Y.task,Z.task),{samePosition:!0})}var xf=()=>{};var MM={};q1(MM,{startQuickTaskHost:()=>dx});async function vx(J,z){let Y,Z;if(z){let B=await uJ(z,["@kobe_task","@kobe_worktree"]);Y=B["@kobe_task"]||void 0,Z=B["@kobe_worktree"]||void 0}let G=(Y?J?.getTask(Y)?.repo:void 0)??SJ()[0],X=G??Z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let Q=await GY(),H=PJ(S1("lastSelectedVendor"),hJ()),f=Q.length===0||Q.includes(H)?H:Q[0]??H,j=gQ(RJ(G))??Tz,V=Q.length>0?Q:[f];return{ctx:{repo:G,vendor:f,baseRef:j,engines:V},fallbackRepo:X}}async function mx(J,z,Y,Z,G){let X=await s8(J,z,Y,Z),Q=I1(z.id),{pane:H}=await TX(Q,!X);if(H)await xX(H,G)}function cx(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=J.ctx,X=await lF.show(Y,{repoLabel:xz(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:LZ});if(X===void 0)process.exit(0);e1("lastSelectedVendor",X.vendor),ez(G.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let H=await Q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await mx(Q,H,G.repo,X.vendor,X.prompt),await Sf(Q,H,G.repo,X.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function dx(J){await KJ({setup:async()=>{let z=null;try{let G=await Sz(),X=new AJ(G);await X.init(),z=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:Z}=await vx(z,J.session);return{root:()=>Y?b(cx,{ctx:Y,orchestrator:z}):b(yf,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var OM=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();Yz();C1();c1();rq();_1();$F();h1();Uf();MY();Lf();If();e8();xf();$J()});function Ef(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${Z}${G.length===1?G.toUpperCase():G}`}function uf(J,z){if(J.includes("/"))return J.split("/").map((G)=>uf(G,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=ix[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function sG(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let H=Z[1]??"";return`${z} ${H.includes("+")?sG(H,z):uf(H,!0)}`}let G=Y.split("+");if(G.length===1)return uf(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((H)=>nx[H.toLowerCase().trim()]??H).join("")} ${uf(X,!0)}`}var nx,ix;var YW=C(()=>{nx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},ix={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});import{TextAttributes as AM}from"@opentui/core";function lx(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function tG(J={}){let z=n1(),{theme:Y}=w0(),Z=()=>lx(pY),G=()=>J.onClose?J.onClose():z.clear(),[X,Q]=p("\u2303B");return QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:H,stdout:f})=>{if(H!==0)return;let j=Ef(f);if(j)Q(j)})}),U1(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var H=W("box"),f=W("box"),j=W("text"),V=W("text"),B=W("scrollbox"),K=W("box");return D(H,f),D(H,B),q(H,"paddingLeft",2),q(H,"paddingRight",2),q(H,"gap",1),q(H,"flexShrink",1),D(f,j),D(f,V),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),q(f,"flexShrink",0),U(j,()=>F("help.title")),q(V,"onMouseUp",G),U(V,()=>F("help.esc")),D(B,K),q(B,"flexShrink",1),q(B,"flexGrow",1),q(B,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(Z1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>y8("category",L.category)),U(A,b(Z1,{get each(){return L.rows},children:(R)=>{let u=R.hint?.keys??R.keys[0]??"\u2014",P=()=>u==="\u2014"?"\u2014":sG(u,X()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>sG(g,X()));return(()=>{var g=W("box"),M=W("box"),T=W("text"),d=W("box"),i=W("text");return D(g,M),D(g,d),q(g,"flexDirection","row"),q(g,"gap",2),q(g,"paddingLeft",1),D(M,T),q(M,"width",14),U(T,P),D(d,i),q(d,"flexGrow",1),U(i,()=>y8("desc",R.id)),U(g,(()=>{var J0=N0(()=>S().length>0);return()=>J0()?(()=>{var E=W("box"),z0=W("text");return D(E,z0),U(z0,()=>`(${S().join(", ")})`),y((q0)=>q(z0,"fg",Y.textMuted,q0)),E})():null})(),null),y((J0)=>{var{primary:E,text:z0}=Y;return E!==J0.e&&(J0.e=q(T,"fg",E,J0.e)),z0!==J0.t&&(J0.t=q(i,"fg",z0,J0.t)),J0},{e:void 0,t:void 0}),g})()}}),null),y((R)=>{var u=Y.accent,P=AM.BOLD;return u!==R.e&&(R.e=q(O,"fg",u,R.e)),P!==R.t&&(R.t=q(O,"attributes",P,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=AM.BOLD,O=Y.text,R=Y.textMuted,u={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(j,"attributes",A,L.e)),O!==L.t&&(L.t=q(j,"fg",O,L.t)),R!==L.a&&(L.a=q(V,"fg",R,L.a)),u!==L.o&&(L.o=q(B,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var ZW=C(()=>{w();w();w();w();w();w();w();W1();c1();rG();h1();ZJ();YW();kJ();$J();tG.show=(J)=>{J.replace(()=>b(tG,{}))}});import{TextAttributes as $x}from"@opentui/core";function RM(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p(J.currentTitle);function X(){let Q=Z().trim();if(kQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),H=W("box"),f=W("text"),j=W("text"),V=W("box"),B=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,H),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),U(f,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(j,T0("esc")),q(j,"onMouseUp",()=>J.onCancel()),D(V,B),D(V,K),q(V,"gap",0),U(B,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>G(gJ(O))),q(K,"onSubmit",()=>X()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=$x.BOLD,u=Y.text,P=Y.textMuted,S=Y.accent,g=Z(),M=J.placeholder??J.currentTitle,T=Y.textMuted;return R!==O.e&&(O.e=q(f,"attributes",R,O.e)),u!==O.t&&(O.t=q(f,"fg",u,O.t)),P!==O.a&&(O.a=q(j,"fg",P,O.a)),S!==O.o&&(O.o=q(B,"fg",S,O.o)),g!==O.i&&(O.i=q(K,"value",g,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),T!==O.s&&(O.s=q(A,"fg",T,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var gM=C(()=>{w();w();w();w();w();w();w();ZJ();W1();h1();$J();pG()});function ax(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(RM,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>Z(G),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var rz;var GW=C(()=>{w();gM();rz={show:ax}});import{TextAttributes as _x}from"@opentui/core";function px(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function uz(J){let z=n1(),{theme:Y}=w0(),[Z,G]=_z({active:J.initialActive??"confirm"});return U1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,j),D(X,V),q(X,"paddingLeft",2),q(X,"paddingRight",2),q(X,"paddingBottom",1),q(X,"gap",0),D(Q,H),D(Q,f),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(H,()=>J.title),D(f,T0("esc")),q(f,"onMouseUp",()=>z.clear()),U(j,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(Z1,{each:["cancel","confirm"],children:(B)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(B==="confirm")J.onConfirm?.();if(B==="cancel")J.onCancel?.();z.clear()}),U(L,()=>px(B==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=B===Z.active?Y.primary:void 0,R=B===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((B)=>{var K=_x.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==B.e&&(B.e=q(H,"attributes",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var wf=C(()=>{w();w();w();w();w();w();w();ZJ();W1();lG();h1();kJ();$J();uz.show=(J,z,Y,Z,G,X)=>{return new Promise((Q)=>{J.replace(()=>b(uz,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:Z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as rx}from"fs";import{join as ox}from"path";function NM(J){return J instanceof AJ}function CM(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function XW(J,z,Y){if(await uz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{rx(ox(rJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}CM(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
263
|
-
`)
|
|
264
|
-
`),process.exit(0)}var kM=C(()=>{_Y();p1();wf()});function sx(J){return`theme:${J}`}function qW(J){return`language:${J}`}function HW(J){return`accent:${J}`}function tx(J){return`engine:${J}`}function IQ(J){return`surface:${J}`}function fW(J){return[...J.themeNames.map((z)=>({id:sx(z),kind:"theme",name:z})),...mZ.map((z)=>({id:qW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:HW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:IQ("chattab"),kind:"surface",surface:"chattab"},{id:IQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"},{id:"worktree-base",kind:"worktreeBase"}]}function ex(J){return[...J.map((z)=>({id:tx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Ju(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function eG(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"},{id:"archived-history",kind:"devArchivedHistory"}]}function bM(J,z){switch(J){case"general":return fW(z);case"engines":return ex(z.engineList);case"accounts":case"keys":return[];case"feedback":return Ju();case"dev":return eG(z.hasDaemon)}}function JX(J,z){return J.findIndex((Y)=>Y.id===z)}function Pf(J,z){return J[z]}var dZ;var jW=C(()=>{_G();dZ=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as r0}from"@opentui/core";function SM(J){let{theme:z}=w0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(Z1,{each:dZ,children:(Z,G)=>{let X=()=>G()===J.cursor(),Q=()=>X()&&J.level()==="sidebar";return(()=>{var H=W("box"),f=W("text");return D(H,f),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>J.switchSection(Z.id)),q(f,"wrapMode","none"),U(f,()=>F(`settings.sections.${Z.id}`)),y((j)=>{var V=Q()?z.primary:void 0,B=Q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?r0.BOLD:void 0;return V!==j.e&&(j.e=q(H,"backgroundColor",V,j.e)),B!==j.t&&(j.t=q(f,"fg",B,j.t)),K!==j.a&&(j.a=q(f,"attributes",K,j.a)),j},{e:void 0,t:void 0,a:void 0}),H})()}})),Y})()}function IM(J){let z=w0(),{theme:Y}=z,Z=()=>fW({themeNames:J.themeNames(),focusAccentSlots:vZ}),G=(d)=>JX(Z(),d),X=()=>G("transparent"),Q=()=>G("toast"),H=()=>G("sound"),f=()=>G("zen-keep-tasks"),j=()=>G(IQ("chattab")),V=()=>G(IQ("taskpanel")),B=()=>G("editor-kind"),K=()=>G("editor-custom"),L=()=>G("worktree-base"),A=()=>J.bodyRow()===X(),O=()=>J.bodyRow()===Q(),R=()=>J.bodyRow()===H(),u=()=>J.bodyRow()===f(),P=()=>J.bodyRow()===j(),S=()=>J.bodyRow()===V(),g=()=>J.bodyRow()===B(),M=()=>J.bodyRow()===K(),T=()=>J.bodyRow()===L();return(()=>{var d=W("box"),i=W("text"),J0=W("text"),E=W("box"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text"),m=W("text"),r=W("box"),c=W("text"),N=W("box"),t=W("text"),x=W("text"),n=W("box"),Q0=W("text"),H0=W("text"),F0=W("box"),M0=W("text"),o0=T0(" "),S0=W("box"),p0=W("text"),h=T0(" "),L0=W("box"),Z0=W("text"),D0=W("text"),P0=W("box"),G1=W("text"),c0=T0(" "),u0=W("box"),k1=W("text"),s=W("text"),j0=W("box"),C0=W("text"),t0=T0(" "),z1=W("box"),E0=W("text"),V1=T0(" "),D1=W("box"),f1=W("text"),G0=W("text"),X0=W("box"),W0=W("text"),R0=W("box"),V0=W("text"),h0=W("box"),k0=W("text"),s0=W("text"),b0=W("box"),x0=W("text");return D(d,i),D(d,J0),D(d,E),D(d,z0),D(d,B0),D(d,N),D(d,n),D(d,L0),D(d,u0),D(d,D1),D(d,h0),q(d,"flexDirection","column"),q(d,"gap",1),U(i,()=>F("settings.general.theme")),U(J0,()=>F("settings.general.themeHint")),q(E,"flexDirection","column"),q(E,"gap",0),U(E,b(Z1,{get each(){return J.themeNames()},children:(k,X1)=>{let e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>k===z.selected;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.setThemeCursor(X1()),J.selectTheme(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,k,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}})),D(z0,q0),D(z0,o),q(z0,"flexDirection","column"),q(z0,"gap",0),q(z0,"paddingTop",1),U(q0,()=>F("settings.general.language")),q(o,"wrapMode","word"),U(o,()=>F("settings.general.languageHint")),U(z0,b(Z1,{each:mZ,children:(k)=>{let X1=()=>G(qW(k.id)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>J.currentLocale()===k.id;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectLanguage(k.id)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>k.label,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(B0,g0),D(B0,m),D(B0,r),q(B0,"flexDirection","column"),q(B0,"gap",0),q(B0,"paddingTop",1),U(g0,()=>F("settings.general.transparent")),q(m,"wrapMode","word"),U(m,()=>F("settings.general.transparentHint")),D(r,c),q(r,"flexDirection","row"),q(r,"paddingLeft",1),q(r,"paddingRight",1),q(r,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),q(c,"wrapMode","none"),U(c,(()=>{var k=N0(()=>!!z.transparentBackground);return()=>k()?F("settings.general.on"):F("settings.general.off")})()),D(N,t),D(N,x),q(N,"flexDirection","column"),q(N,"gap",0),q(N,"paddingTop",1),U(t,()=>F("settings.general.focusAccent")),q(x,"wrapMode","word"),U(x,()=>F("settings.general.focusAccentHint")),U(N,b(Z1,{each:vZ,children:(k)=>{let X1=()=>G(HW(k)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>z.focusAccent===k;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectFocusAccent(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>F(`settings.general.accent${k.charAt(0).toUpperCase()}${k.slice(1)}`),null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.focusAccent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(n,Q0),D(n,H0),D(n,F0),D(n,S0),q(n,"flexDirection","column"),q(n,"gap",0),q(n,"paddingTop",1),U(Q0,()=>F("settings.general.notifications")),q(H0,"wrapMode","word"),U(H0,()=>F("settings.general.notificationsHint")),D(F0,M0),q(F0,"flexDirection","row"),q(F0,"gap",1),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),q(F0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(M0,o0),q(M0,"wrapMode","none"),U(M0,()=>J.toastEnabled()?"[x]":"[ ]",o0),U(M0,()=>F("settings.general.toast"),null),D(S0,p0),q(S0,"flexDirection","row"),q(S0,"gap",1),q(S0,"paddingLeft",1),q(S0,"paddingRight",1),q(S0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(p0,h),q(p0,"wrapMode","none"),U(p0,()=>J.soundEnabled()?"[x]":"[ ]",h),U(p0,()=>F("settings.general.sound"),null),D(L0,Z0),D(L0,D0),D(L0,P0),q(L0,"flexDirection","column"),q(L0,"gap",0),q(L0,"paddingTop",1),U(Z0,()=>F("settings.general.zen")),q(D0,"wrapMode","word"),U(D0,()=>F("settings.general.zenHint")),D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleZenKeepsTasks()}),D(G1,c0),q(G1,"wrapMode","none"),U(G1,()=>J.zenKeepsTasks()?"[x]":"[ ]",c0),U(G1,()=>F("settings.general.zenKeepTasks"),null),D(u0,k1),D(u0,s),D(u0,j0),D(u0,z1),q(u0,"flexDirection","column"),q(u0,"gap",0),q(u0,"paddingTop",1),U(k1,()=>F("settings.general.surface")),q(s,"wrapMode","word"),U(s,()=>F("settings.general.surfaceHint")),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.selectSurface("chattab")}),D(C0,t0),q(C0,"wrapMode","none"),U(C0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",t0),U(C0,()=>F("settings.general.surfaceChattab"),null),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"gap",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(E0,V1),q(E0,"wrapMode","none"),U(E0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",V1),U(E0,()=>F("settings.general.surfaceTaskpanel"),null),D(D1,f1),D(D1,G0),D(D1,X0),D(D1,R0),q(D1,"flexDirection","column"),q(D1,"gap",0),q(D1,"paddingTop",1),U(f1,()=>F("settings.general.editor")),q(G0,"wrapMode","word"),U(G0,()=>F("settings.general.editorHint")),D(X0,W0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.cycleEditorKind()}),q(W0,"wrapMode","none"),U(W0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(R0,V0),q(R0,"flexDirection","row"),q(R0,"gap",1),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(V0,"wrapMode","none"),U(V0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(h0,k0),D(h0,s0),D(h0,b0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"paddingTop",1),U(k0,()=>F("settings.general.worktree")),q(s0,"wrapMode","word"),U(s0,()=>F("settings.general.worktreeHint")),D(b0,x0),q(b0,"flexDirection","row"),q(b0,"gap",1),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),q(b0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.editWorktreeBase()}),q(x0,"wrapMode","none"),U(x0,()=>F("settings.general.worktreeBase",{path:J.worktreeBasePath().trim()||F("settings.general.worktreeBaseDefault")})),y((k)=>{var X1=Y.text,e0=r0.BOLD,n0=Y.textMuted,v0=Y.text,K0=r0.BOLD,y0=Y.textMuted,b1=Y.text,F1=r0.BOLD,A1=Y.textMuted,l=A()?Y.primary:void 0,I=A()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,O0=r0.BOLD,e=Y.text,I0=r0.BOLD,M1=Y.textMuted,UJ=Y.text,GJ=r0.BOLD,j1=Y.textMuted,_J=O()?Y.primary:void 0,fJ=O()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,pJ=r0.BOLD,bJ=R()?Y.primary:void 0,$=R()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,a=r0.BOLD,_=Y.text,v=r0.BOLD,i0=Y.textMuted,m0=u()?Y.primary:void 0,A0=u()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,l0=r0.BOLD,B1=Y.text,R1=r0.BOLD,DJ=Y.textMuted,jz=P()?Y.primary:void 0,OY=P()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,xW=r0.BOLD,uW=S()?Y.primary:void 0,EW=S()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,wW=r0.BOLD,PW=Y.text,hW=r0.BOLD,vW=Y.textMuted,mW=g()?Y.primary:void 0,cW=g()?Y.selectedListItemText:Y.accent,dW=r0.BOLD,nW=M()?Y.primary:void 0,iW=M()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted,lW=Y.text,$W=r0.BOLD,aW=Y.textMuted,_W=T()?Y.primary:void 0,pW=T()?Y.selectedListItemText:Y.accent,rW=r0.BOLD;return X1!==k.e&&(k.e=q(i,"fg",X1,k.e)),e0!==k.t&&(k.t=q(i,"attributes",e0,k.t)),n0!==k.a&&(k.a=q(J0,"fg",n0,k.a)),v0!==k.o&&(k.o=q(q0,"fg",v0,k.o)),K0!==k.i&&(k.i=q(q0,"attributes",K0,k.i)),y0!==k.n&&(k.n=q(o,"fg",y0,k.n)),b1!==k.s&&(k.s=q(g0,"fg",b1,k.s)),F1!==k.h&&(k.h=q(g0,"attributes",F1,k.h)),A1!==k.r&&(k.r=q(m,"fg",A1,k.r)),l!==k.d&&(k.d=q(r,"backgroundColor",l,k.d)),I!==k.l&&(k.l=q(c,"fg",I,k.l)),O0!==k.u&&(k.u=q(c,"attributes",O0,k.u)),e!==k.c&&(k.c=q(t,"fg",e,k.c)),I0!==k.w&&(k.w=q(t,"attributes",I0,k.w)),M1!==k.m&&(k.m=q(x,"fg",M1,k.m)),UJ!==k.f&&(k.f=q(Q0,"fg",UJ,k.f)),GJ!==k.y&&(k.y=q(Q0,"attributes",GJ,k.y)),j1!==k.g&&(k.g=q(H0,"fg",j1,k.g)),_J!==k.p&&(k.p=q(F0,"backgroundColor",_J,k.p)),fJ!==k.b&&(k.b=q(M0,"fg",fJ,k.b)),pJ!==k.T&&(k.T=q(M0,"attributes",pJ,k.T)),bJ!==k.A&&(k.A=q(S0,"backgroundColor",bJ,k.A)),$!==k.O&&(k.O=q(p0,"fg",$,k.O)),a!==k.I&&(k.I=q(p0,"attributes",a,k.I)),_!==k.S&&(k.S=q(Z0,"fg",_,k.S)),v!==k.W&&(k.W=q(Z0,"attributes",v,k.W)),i0!==k.C&&(k.C=q(D0,"fg",i0,k.C)),m0!==k.B&&(k.B=q(P0,"backgroundColor",m0,k.B)),A0!==k.v&&(k.v=q(G1,"fg",A0,k.v)),l0!==k.k&&(k.k=q(G1,"attributes",l0,k.k)),B1!==k.x&&(k.x=q(k1,"fg",B1,k.x)),R1!==k.j&&(k.j=q(k1,"attributes",R1,k.j)),DJ!==k.q&&(k.q=q(s,"fg",DJ,k.q)),jz!==k.z&&(k.z=q(j0,"backgroundColor",jz,k.z)),OY!==k.P&&(k.P=q(C0,"fg",OY,k.P)),xW!==k.H&&(k.H=q(C0,"attributes",xW,k.H)),uW!==k.F&&(k.F=q(z1,"backgroundColor",uW,k.F)),EW!==k.M&&(k.M=q(E0,"fg",EW,k.M)),wW!==k.D&&(k.D=q(E0,"attributes",wW,k.D)),PW!==k.R&&(k.R=q(f1,"fg",PW,k.R)),hW!==k.E&&(k.E=q(f1,"attributes",hW,k.E)),vW!==k.L&&(k.L=q(G0,"fg",vW,k.L)),mW!==k.N&&(k.N=q(X0,"backgroundColor",mW,k.N)),cW!==k.G&&(k.G=q(W0,"fg",cW,k.G)),dW!==k.U&&(k.U=q(W0,"attributes",dW,k.U)),nW!==k.K&&(k.K=q(R0,"backgroundColor",nW,k.K)),iW!==k.V&&(k.V=q(V0,"fg",iW,k.V)),lW!==k.Y&&(k.Y=q(k0,"fg",lW,k.Y)),$W!==k.J&&(k.J=q(k0,"attributes",$W,k.J)),aW!==k.Q&&(k.Q=q(s0,"fg",aW,k.Q)),_W!==k.Z&&(k.Z=q(b0,"backgroundColor",_W,k.Z)),pW!==k.X&&(k.X=q(x0,"fg",pW,k.X)),rW!==k._&&(k._=q(x0,"attributes",rW,k._)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0,Y:void 0,J:void 0,Q:void 0,Z:void 0,X:void 0,_:void 0}),d})()}function yM(J){let{theme:z}=w0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,Q),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.engines.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.engines.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return J.vendors},children:(j,V)=>{let B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(j)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(j)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(j)),q(O,"wrapMode","none"),U(O,()=>J.commandText(j),null),U(O,(()=>{var R=N0(()=>!!J.isDefault(j));return()=>R()?F("settings.engines.defaultTag"):N0(()=>!!J.isCustom(j))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var u=B()?z.primary:void 0,P=B()?z.selectedListItemText:z.accent,S=r0.BOLD,g=B()?z.selectedListItemText:z.text,M=r0.BOLD,T=B()?z.selectedListItemText:J.isDefault(j)?z.textMuted:z.accent;return u!==R.e&&(R.e=q(K,"backgroundColor",u,R.e)),P!==R.t&&(R.t=q(L,"fg",P,R.t)),S!==R.a&&(R.a=q(L,"attributes",S,R.a)),g!==R.o&&(R.o=q(A,"fg",g,R.o)),M!==R.i&&(R.i=q(A,"attributes",M,R.i)),T!==R.n&&(R.n=q(O,"fg",T,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),H),D(H,f),q(H,"flexDirection","row"),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(f,"wrapMode","none"),U(f,()=>F("settings.engines.addEngine")),y((j)=>{var V=z.text,B=r0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(G,"attributes",B,j.t)),K!==j.a&&(j.a=q(X,"fg",K,j.a)),L!==j.o&&(j.o=q(H,"backgroundColor",L,j.o)),A!==j.i&&(j.i=q(f,"fg",A,j.i)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function TM(J){let{theme:z}=w0(),Y=(Z)=>Z.binary.found?`Binary: ${Z.binary.path}`:`Binary: ${Z.binary.error}`;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("text"),f=W("box"),j=W("text"),V=W("box"),B=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,f),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.accounts.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.accounts.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),D(H,T0("claude-code")),U(Q,b(Y0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(Y0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return q(u,"wrapMode","word"),U(u,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(u,R?` (${R})`:"",null),y((P)=>q(u,"fg",z.success,P)),u})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(f,j),q(f,"flexDirection","column"),q(f,"gap",0),D(j,T0("codex")),U(f,b(Y0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(f,b(Y0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var u=N0(()=>!!O.plan);return()=>u()?` (${O.plan})`:""})(),null),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,B),q(V,"flexDirection","column"),q(V,"gap",0),D(B,T0("copilot")),U(V,b(Y0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Y0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=r0.BOLD,O=z.textMuted,R=z.text,u=r0.BOLD,P=z.text,S=r0.BOLD,g=z.text,M=r0.BOLD;return L!==K.e&&(K.e=q(G,"fg",L,K.e)),A!==K.t&&(K.t=q(G,"attributes",A,K.t)),O!==K.a&&(K.a=q(X,"fg",O,K.a)),R!==K.o&&(K.o=q(H,"fg",R,K.o)),u!==K.i&&(K.i=q(H,"attributes",u,K.i)),P!==K.n&&(K.n=q(j,"fg",P,K.n)),S!==K.s&&(K.s=q(j,"attributes",S,K.s)),g!==K.h&&(K.h=q(B,"fg",g,K.h)),M!==K.r&&(K.r=q(B,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function xM(J){let{theme:z}=w0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,G=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,Q=(j)=>j?z.primary:z.textMuted,H=(j)=>j?r0.BOLD|r0.UNDERLINE:void 0,f;return _0(()=>{if(J.body()===""&&f&&f.plainText!=="")f.setText("")}),(()=>{var j=W("box"),V=W("text"),B=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),u=W("text"),P=W("textarea"),S=W("box"),g=W("text");return D(j,V),D(j,B),D(j,K),q(j,"flexDirection","column"),q(j,"gap",1),U(V,()=>F("settings.feedback.title")),q(B,"wrapMode","word"),U(B,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(gJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,u),D(R,P),q(R,"gap",0),U(u,()=>F("settings.feedback.descriptionLabel")),qz((M)=>{f=M},P),q(P,"height",4),q(P,"wrapMode","word"),q(P,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(P,"onContentChange",()=>J.setBody(f?.plainText??"")),D(S,g),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(g,()=>F("settings.feedback.send")),U(j,b(Y0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((T)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,T)),M}}),null),y((M)=>{var T=z.text,d=r0.BOLD,i=z.textMuted,J0=Q(Z()),E=H(Z()),z0=J.title(),q0=F("settings.feedback.titlePlaceholder"),o=Z(),B0=Q(G()),g0=H(G()),m=J.body(),r=F("settings.feedback.descriptionPlaceholder"),c=G(),N=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,x=r0.BOLD;return T!==M.e&&(M.e=q(V,"fg",T,M.e)),d!==M.t&&(M.t=q(V,"attributes",d,M.t)),i!==M.a&&(M.a=q(B,"fg",i,M.a)),J0!==M.o&&(M.o=q(A,"fg",J0,M.o)),E!==M.i&&(M.i=q(A,"attributes",E,M.i)),z0!==M.n&&(M.n=q(O,"value",z0,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),o!==M.h&&(M.h=q(O,"focused",o,M.h)),B0!==M.r&&(M.r=q(u,"fg",B0,M.r)),g0!==M.d&&(M.d=q(u,"attributes",g0,M.d)),m!==M.l&&(M.l=q(P,"initialValue",m,M.l)),r!==M.u&&(M.u=q(P,"placeholder",r,M.u)),c!==M.c&&(M.c=q(P,"focused",c,M.c)),N!==M.w&&(M.w=q(S,"backgroundColor",N,M.w)),t!==M.m&&(M.m=q(g,"fg",t,M.m)),x!==M.f&&(M.f=q(g,"attributes",x,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),j})()}function uM(J){let{theme:z}=w0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,G=()=>JX(eG(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===G(),Q=()=>JX(eG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===Q(),f=()=>JX(eG(J.hasDaemon),"dispatcher"),j=()=>J.level()==="body"&&J.bodyRow()===f(),V=()=>JX(eG(J.hasDaemon),"archived-history"),B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("box"),R=W("text"),u=W("text"),P=W("box"),S=W("text"),g=W("text"),M=W("box"),T=W("text"),d=W("text"),i=W("box"),J0=W("text"),E=W("text"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text");return D(K,L),D(K,A),D(K,O),D(K,u),D(K,P),q(K,"flexDirection","column"),q(K,"gap",1),U(L,()=>F("settings.dev.reset")),q(A,"wrapMode","word"),U(A,()=>F("settings.dev.resetHint")),D(O,R),q(O,"flexDirection","row"),q(O,"paddingLeft",1),q(O,"paddingRight",1),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(R,()=>F("settings.dev.resetButton")),U(K,b(Y0,{get when(){return J.hasDaemon},get children(){var m=W("box"),r=W("text"),c=W("text"),N=W("box"),t=W("text");return D(m,r),D(m,c),D(m,N),q(m,"flexDirection","column"),q(m,"gap",0),q(m,"paddingTop",1),U(r,()=>F("settings.dev.restart")),q(c,"wrapMode","word"),U(c,()=>F("settings.dev.restartHint")),D(N,t),q(N,"flexDirection","row"),q(N,"paddingLeft",1),q(N,"paddingRight",1),q(N,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(t,()=>F("settings.dev.restartButton")),y((x)=>{var n=z.text,Q0=r0.BOLD,H0=z.textMuted,F0=Z()?z.primary:z.backgroundElement,M0=Z()?z.selectedListItemText:z.accent,o0=r0.BOLD;return n!==x.e&&(x.e=q(r,"fg",n,x.e)),Q0!==x.t&&(x.t=q(r,"attributes",Q0,x.t)),H0!==x.a&&(x.a=q(c,"fg",H0,x.a)),F0!==x.o&&(x.o=q(N,"backgroundColor",F0,x.o)),M0!==x.i&&(x.i=q(t,"fg",M0,x.i)),o0!==x.n&&(x.n=q(t,"attributes",o0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),m}}),u),q(u,"wrapMode","word"),U(u,()=>F("settings.dev.doctorHint")),D(P,S),D(P,g),D(P,M),D(P,d),D(P,i),D(P,E),D(P,z0),D(P,o),D(P,B0),q(P,"flexDirection","column"),q(P,"gap",0),q(P,"paddingTop",1),U(S,()=>F("settings.dev.experimental")),q(g,"wrapMode","word"),U(g,()=>F("settings.dev.remoteHint")),D(M,T),q(M,"flexDirection","row"),q(M,"paddingLeft",1),q(M,"paddingRight",1),q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(T,(()=>{var m=N0(()=>!!J.remoteProjectsEnabled());return()=>m()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(d,"wrapMode","word"),U(d,()=>F("settings.dev.autoStatusHint")),D(i,J0),q(i,"flexDirection","row"),q(i,"paddingLeft",1),q(i,"paddingRight",1),q(i,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(J0,(()=>{var m=N0(()=>!!J.autoStatusEnabled());return()=>m()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(E,"wrapMode","word"),U(E,()=>F("settings.dev.dispatcherHint")),D(z0,q0),q(z0,"flexDirection","row"),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleDispatcher()}),U(q0,(()=>{var m=N0(()=>!!J.dispatcherEnabled());return()=>m()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),q(o,"wrapMode","word"),U(o,()=>F("settings.dev.archivedHistoryHint")),D(B0,g0),q(B0,"flexDirection","row"),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(g0,(()=>{var m=N0(()=>!!J.archivedHistoryEnabled());return()=>m()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),y((m)=>{var r=z.text,c=r0.BOLD,N=z.textMuted,t=Y()?z.primary:z.backgroundElement,x=Y()?z.selectedListItemText:z.warning,n=r0.BOLD,Q0=z.textMuted,H0=z.text,F0=r0.BOLD,M0=z.textMuted,o0=X()?z.primary:z.backgroundElement,S0=X()?z.selectedListItemText:z.text,p0=J.remoteProjectsEnabled()?r0.BOLD:void 0,h=z.textMuted,L0=H()?z.primary:z.backgroundElement,Z0=H()?z.selectedListItemText:z.text,D0=J.autoStatusEnabled()?r0.BOLD:void 0,P0=z.textMuted,G1=j()?z.primary:z.backgroundElement,c0=j()?z.selectedListItemText:z.text,u0=J.dispatcherEnabled()?r0.BOLD:void 0,k1=z.textMuted,s=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,C0=J.archivedHistoryEnabled()?r0.BOLD:void 0;return r!==m.e&&(m.e=q(L,"fg",r,m.e)),c!==m.t&&(m.t=q(L,"attributes",c,m.t)),N!==m.a&&(m.a=q(A,"fg",N,m.a)),t!==m.o&&(m.o=q(O,"backgroundColor",t,m.o)),x!==m.i&&(m.i=q(R,"fg",x,m.i)),n!==m.n&&(m.n=q(R,"attributes",n,m.n)),Q0!==m.s&&(m.s=q(u,"fg",Q0,m.s)),H0!==m.h&&(m.h=q(S,"fg",H0,m.h)),F0!==m.r&&(m.r=q(S,"attributes",F0,m.r)),M0!==m.d&&(m.d=q(g,"fg",M0,m.d)),o0!==m.l&&(m.l=q(M,"backgroundColor",o0,m.l)),S0!==m.u&&(m.u=q(T,"fg",S0,m.u)),p0!==m.c&&(m.c=q(T,"attributes",p0,m.c)),h!==m.w&&(m.w=q(d,"fg",h,m.w)),L0!==m.m&&(m.m=q(i,"backgroundColor",L0,m.m)),Z0!==m.f&&(m.f=q(J0,"fg",Z0,m.f)),D0!==m.y&&(m.y=q(J0,"attributes",D0,m.y)),P0!==m.g&&(m.g=q(E,"fg",P0,m.g)),G1!==m.p&&(m.p=q(z0,"backgroundColor",G1,m.p)),c0!==m.b&&(m.b=q(q0,"fg",c0,m.b)),u0!==m.T&&(m.T=q(q0,"attributes",u0,m.T)),k1!==m.A&&(m.A=q(o,"fg",k1,m.A)),s!==m.O&&(m.O=q(B0,"backgroundColor",s,m.O)),j0!==m.I&&(m.I=q(g0,"fg",j0,m.I)),C0!==m.S&&(m.S=q(g0,"attributes",C0,m.S)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0}),K})()}function EM(){let{theme:J}=w0(),z=oF(),Y=Object.keys(FB).sort();return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,j),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.keybindings.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.keybindings.hint")),D(Q,H),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(H,()=>F("settings.keybindings.configFile")),q(f,"wrapMode","word"),U(f,()=>z.path,null),U(f,(()=>{var B=N0(()=>!!z.exists);return()=>B()?"":F("settings.keybindings.notCreated")})(),null),U(Z,b(Y0,{get when(){return!z.exists},get children(){var B=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),u=W("text"),P=W("text"),S=W("text"),g=W("text"),M=W("text");return D(B,K),D(B,L),D(B,A),D(B,O),D(B,R),D(B,u),D(B,P),D(B,S),D(B,g),D(B,M),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,T0("bindings:")),D(A,T0(" chat.fork.new: ctrl+g # string = one chord")),D(O,T0(" sidebar.select: [enter] # list = several chords")),D(R,T0(" files.createPR: null # null = unbind")),D(u,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(P,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,T0("darwin: # platform overlay (also: linux)")),D(g,T0(" bindings:")),D(M,T0(" palette.open: [cmd+p, ctrl+p]")),y((T)=>{var d=J.text,i=r0.BOLD,J0=J.textMuted,E=J.textMuted,z0=J.textMuted,q0=J.textMuted,o=J.textMuted,B0=J.textMuted,g0=J.textMuted,m=J.textMuted,r=J.textMuted;return d!==T.e&&(T.e=q(K,"fg",d,T.e)),i!==T.t&&(T.t=q(K,"attributes",i,T.t)),J0!==T.a&&(T.a=q(L,"fg",J0,T.a)),E!==T.o&&(T.o=q(A,"fg",E,T.o)),z0!==T.i&&(T.i=q(O,"fg",z0,T.i)),q0!==T.n&&(T.n=q(R,"fg",q0,T.n)),o!==T.s&&(T.s=q(u,"fg",o,T.s)),B0!==T.h&&(T.h=q(P,"fg",B0,T.h)),g0!==T.r&&(T.r=q(S,"fg",g0,T.r)),m!==T.d&&(T.d=q(g,"fg",m,T.d)),r!==T.l&&(T.l=q(M,"fg",r,T.l)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.exists},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(B,b(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(B,b(Z1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.warnings.length>0},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(B,b(Z1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),D(j,T0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(j,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((B)=>{var K=J.text,L=r0.BOLD,A=J.textMuted,O=J.text,R=r0.BOLD,u=J.textMuted,P=J.textMuted,S=J.textMuted;return K!==B.e&&(B.e=q(G,"fg",K,B.e)),L!==B.t&&(B.t=q(G,"attributes",L,B.t)),A!==B.a&&(B.a=q(X,"fg",A,B.a)),O!==B.o&&(B.o=q(H,"fg",O,B.o)),R!==B.i&&(B.i=q(H,"attributes",R,B.i)),u!==B.n&&(B.n=q(f,"fg",u,B.n)),P!==B.s&&(B.s=q(j,"fg",P,B.s)),S!==B.h&&(B.h=q(V,"fg",S,B.h)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Z})()}var wM=C(()=>{w();w();w();w();w();w();w();w();w();W1();_8();h1();ZJ();_G();aq();pG();jW()});import{accessSync as zu,constants as Yu,mkdirSync as Zu}from"fs";import{TextAttributes as Gu}from"@opentui/core";function Xu(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function nZ(J){let z=n1(),Y=w0(),Z=WJ(),{theme:G}=Y,[X,Q]=p("sidebar"),[H,f]=p("general"),[j,V]=p(0),[B,K]=p(0),[L,A]=p(""),[O,R]=p(""),[u,P]=p(""),S=U0(()=>Y.all().slice().sort()),[,g]=p(Math.max(0,S().findIndex((l)=>l===Y.selected))),M=NM(J.orchestrator),[T,d]=p(null),[i,J0]=p(null),[E,z0]=p(null),q0=!1;_0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Yq().then(d),Zq().then(J0),Gq().then(z0)});function o(){return bM(H(),{themeNames:S(),focusAccentSlots:vZ,engineList:k1(),hasDaemon:M})}function B0(){return o().length}function g0(){return TZ(J.kv.get(WY,yZ))}function m(l){if(Y.selected===l)return;if(!Y.set(l))return;J.kv.set("activeTheme",l),J.onVisualPrefsChange?.()}function r(){return I8()}function c(l){if(I8()===l)return;RQ(l),J.kv.set(bf,l),J.onVisualPrefsChange?.()}function N(l){if(Y.transparentBackground===l)return;Y.setTransparentBackground(l),J.kv.set("transparentBackground",l),J.onVisualPrefsChange?.()}function t(){N(!Y.transparentBackground)}function x(l){if(Y.focusAccent===l)return;Y.setFocusAccent(l),J.kv.set("focusAccent",l),J.onVisualPrefsChange?.()}function n(l){J.kv.set(WY,l)}function Q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function F0(){J.kv.set("notifications.toast.enabled",!Q0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function o0(){return J.kv.get(qH,!0)!==!1}function S0(){J.kv.set(qH,!o0())}function p0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function h(){J.kv.set("experimental.remoteProjects",!p0())}function L0(){return J.kv.get(UZ,!1)===!0}function Z0(){J.kv.set(UZ,!L0())}function D0(){return J.kv.get(DZ,!1)===!0}function P0(){J.kv.set(DZ,!D0())}function G1(){return J.kv.get(yX,!1)===!0}function c0(){J.kv.set(yX,!G1())}function u0(){let l=J.kv.get("customEngineIds",[]);return Array.isArray(l)?l.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function k1(){return[...a1,...u0()]}function s(l){let I=J.kv.get(Az(l),"");return typeof I==="string"?I.trim():""}function j0(l){return s(l)||IX(l).join(" ")}function C0(l){return jJ(l)&&s(l).length===0&&!z1(l)}function t0(l){let I=J.kv.get(Rz(l),"");return typeof I==="string"?I.trim():""}function z1(l){return t0(l).length>0}function E0(l){return t0(l)||UB[l]||l}let[V1,D1]=p(PJ(S1("lastSelectedVendor"),u0()));function f1(l){return V1()===l}function G0(l){e1("lastSelectedVendor",l),J.kv.set("lastSelectedVendor",l),D1(l)}async function X0(l){let I=await rz.show(z,j0(l),{dialogTitle:`${E0(l)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Az(l),I.trim())}async function W0(l){let I=await rz.show(z,E0(l),{dialogTitle:`${E0(l)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Rz(l),I.trim())}function R0(l){if(J.kv.set(Az(l),""),J.kv.set(Rz(l),""),!jJ(l))J.kv.set("customEngineIds",u0().filter((I)=>I!==l)),K((I)=>Math.max(0,Math.min(I,k1().length)))}async function V0(){let l=await rz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(l===void 0)return;let I=l.trim().toLowerCase();if(!I||jJ(I)||u0().includes(I))return;let O0=await rz.show(z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(O0===void 0)return;let e=await rz.show(z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...u0(),I]),O0.trim())J.kv.set(Az(I),O0.trim());let I0=e?.trim()??"";J.kv.set(Rz(I),I0&&I0!==I?I0:Xu(I))}function h0(){if(H()!=="engines"||X()!=="body")return null;let l=Pf(o(),B());return l?.kind==="engine"?l.vendor:null}function k0(){return bG(J.kv.get(BY,uH))}function s0(){let l=IZ.indexOf(k0()),I=IZ[(l+1)%IZ.length];if(I)J.kv.set(BY,I)}function b0(){let l=J.kv.get(cY,"");return typeof l==="string"?l:""}async function x0(){let l=await rz.show(z,b0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(J.kv.set(cY,I),I)J.kv.set(BY,"custom")}function k(){let l=J.kv.get(Pq,"");return typeof l==="string"?l:""}async function X1(){let l=await rz.show(z,k(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:"~/.kobe/worktrees",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(I){let O0=fB(I)??I;try{Zu(O0,{recursive:!0}),zu(O0,Yu.W_OK)}catch(e){await uz.show(z,"Can't use that worktree location",`${O0} isn't usable (${e instanceof Error?e.message:String(e)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}J.kv.set(Pq,I)}async function e0(){P("submitting...");try{let l=vG({title:L(),body:O()});P(`sent: ${l.url}`),A(""),R(""),K(0)}catch(l){P(`error: ${l instanceof Error?l.message:String(l)}`)}}let n0=()=>H()==="feedback"&&X()==="body";function v0(l){let I=B()+l;if(I<0||I>2){Q("sidebar");return}K(I)}function K0(){if(X()!=="sidebar"||B0()===0)return;if(Q("body"),K(0),H()==="general")g(0)}function y0(l){if(X()==="sidebar"){let e=(j()+l+dZ.length)%dZ.length;V(e);let I0=dZ[e];if(I0)f(I0.id),K(0);return}let I=B0();if(I===0)return;let O0=(B()+l+I)%I;if(K(O0),Pf(o(),O0)?.kind==="theme")g(O0)}function b1(l){f(l),V(dZ.findIndex((I)=>I.id===l)),K(0),Q("sidebar")}let F1={theme:(l)=>m(l.name),language:(l)=>c(l.locale),transparent:()=>t(),focusAccent:(l)=>x(l.slot),toast:()=>F0(),sound:()=>M0(),zenKeepTasks:()=>S0(),surface:(l)=>n(l.surface),editorKind:()=>s0(),editorCustom:()=>void x0(),worktreeBase:()=>void X1(),engine:(l)=>void X0(l.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void e0(),devReset:()=>void XW(z,J.kv,Z),devRestartDaemon:()=>void QW(z,J.orchestrator,Z),devRemoteProjects:()=>h(),devAutoStatus:()=>Z0(),devDispatcher:()=>P0(),devArchivedHistory:()=>c0()};function A1(){let l=Pf(o(),B());if(!l)return;F1[l.kind](l)}return U1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!n0(),bindings:[{key:"down",cmd:()=>y0(1)},{key:"up",cmd:()=>y0(-1)},{key:"j",cmd:()=>y0(1)},{key:"k",cmd:()=>y0(-1)},{key:"tab",cmd:()=>y0(1)},{key:"right",cmd:K0},{key:"l",cmd:K0},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){K0();return}A1()}},{key:"t",cmd:t},{key:"r",cmd:()=>{let l=h0();if(l)W0(l)}},{key:"x",cmd:()=>{let l=h0();if(l)R0(l)}},{key:"d",cmd:()=>{let l=h0();if(l)G0(l)}}]})),U1(()=>({enabled:n0(),bindings:[{key:"tab",cmd:()=>v0(1)},{key:"shift+tab",cmd:()=>v0(-1)}]})),U1(()=>({enabled:n0()&&B()===2,bindings:[{key:"return",cmd:()=>void e0()}]})),(()=>{var l=W("box"),I=W("box"),O0=W("text"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("box"),GJ=W("text");return D(l,I),D(l,I0),D(l,UJ),q(l,"paddingLeft",2),q(l,"paddingRight",2),q(l,"paddingBottom",1),q(l,"gap",1),D(I,O0),D(I,e),q(I,"flexDirection","row"),q(I,"justifyContent","space-between"),U(O0,()=>F("settings.title")),q(e,"onMouseUp",()=>J.onClose()),U(e,()=>F("settings.esc")),D(I0,M1),q(I0,"flexDirection","row"),q(I0,"gap",2),U(I0,b(SM,{level:X,cursor:j,switchSection:b1}),M1),q(M1,"flexGrow",1),q(M1,"flexShrink",1),q(M1,"flexDirection","column"),q(M1,"gap",1),U(M1,b(Y0,{get when(){return H()==="general"},get children(){return b(IM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:g,selectTheme:m,currentLocale:r,selectLanguage:c,toggleTransparent:t,selectFocusAccent:x,toastEnabled:Q0,soundEnabled:H0,toggleToast:F0,toggleSound:M0,zenKeepsTasks:o0,toggleZenKeepsTasks:S0,settingsSurface:g0,selectSurface:n,editorKind:k0,cycleEditorKind:s0,editorCustomCommand:b0,editEditorCustom:()=>void x0(),worktreeBasePath:k,editWorktreeBase:()=>void X1()})}}),null),U(M1,b(Y0,{get when(){return H()==="engines"},get children(){return b(yM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,get vendors(){return k1()},isCustom:(j1)=>!jJ(j1),displayName:E0,commandText:j0,isDefault:C0,isDefaultEngine:f1,editEngine:(j1)=>void X0(j1),renameEngine:(j1)=>void W0(j1),resetEngine:R0,onAddEngine:()=>void V0()})}}),null),U(M1,b(Y0,{get when(){return H()==="accounts"},get children(){return b(TM,{claudeStatus:T,codexStatus:i,copilotStatus:E})}}),null),U(M1,b(Y0,{get when(){return H()==="keys"},get children(){return b(EM,{})}}),null),U(M1,b(Y0,{get when(){return H()==="feedback"},get children(){return b(xM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,title:L,setTitle:(j1)=>{A(j1),P("")},body:O,setBody:(j1)=>{R(j1),P("")},status:u,onTitleSubmit:()=>K(1),submit:()=>void e0()})}}),null),U(M1,b(Y0,{get when(){return H()==="dev"},get children(){return b(uM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void XW(z,J.kv,Z),confirmRestartDaemon:()=>void QW(z,J.orchestrator,Z),remoteProjectsEnabled:p0,toggleRemoteProjects:h,autoStatusEnabled:L0,toggleAutoStatus:Z0,dispatcherEnabled:D0,toggleDispatcher:P0,archivedHistoryEnabled:G1,toggleArchivedHistory:c0})}}),null),D(UJ,GJ),q(UJ,"paddingTop",0),U(GJ,(()=>{var j1=N0(()=>!!n0());return()=>j1()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((j1)=>{var _J=Gu.BOLD,fJ=G.text,pJ=G.textMuted,bJ=G.textMuted;return _J!==j1.e&&(j1.e=q(O0,"attributes",_J,j1.e)),fJ!==j1.t&&(j1.t=q(O0,"fg",fJ,j1.t)),pJ!==j1.a&&(j1.a=q(e,"fg",pJ,j1.a)),bJ!==j1.o&&(j1.o=q(GJ,"fg",bJ,j1.o)),j1},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}var BW=C(()=>{w();w();w();w();w();w();w();w();W1();XZ();Yz();tH();nq();SX();mq();C1();jB();NB();_1();h1();ZJ();EH();kJ();o8();$J();wf();GW();kM();jW();wM();nZ.show=(J,z,Y)=>{let Z=!1;return new Promise((G)=>{J.replace(()=>b(nZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>G({visualPrefsChanged:Z})}),()=>G({visualPrefsChanged:Z}))})}});import{TextAttributes as Qu}from"@opentui/core";function hM(){let{theme:J}=w0(),z=az(),Y=Cf(),Z=()=>Y.toasts().slice(-PM),G=()=>Math.max(0,z().width-qu-Hu),X=()=>Math.max(0,z().height-fu-PM-1);return b(Y0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return Z()},children:(H)=>{let f=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,j=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var B=W("box"),K=W("text"),L=W("text");return D(B,K),D(B,L),q(B,"flexDirection","row"),q(B,"gap",1),q(B,"paddingLeft",1),q(B,"paddingRight",1),q(B,"onMouseUp",()=>Y.dismiss(H.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>H.title),y((A)=>{var O=f(),R=j(),u=Qu.BOLD,P=j();return O!==A.e&&(A.e=q(B,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(K,"fg",R,A.t)),u!==A.a&&(A.a=q(K,"attributes",u,A.a)),P!==A.o&&(A.o=q(L,"fg",P,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),B})()}})),y((H)=>{var f=G(),j=X();return f!==H.e&&(H.e=q(Q,"left",f,H.e)),j!==H.t&&(H.t=q(Q,"top",j,H.t)),H},{e:void 0,t:void 0}),Q}})}var PM=4,qu=40,Hu=2,fu=2;var vM=C(()=>{w();w();w();w();w();w();w();W1();kf();h1()});import{TextAttributes as ju}from"@opentui/core";function Bu(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function mM(J){let{theme:z}=w0(),Y=()=>Math.max(4,J.width()-2);return b(Y0,{get when(){return J.stale()},get children(){var Z=W("box"),G=W("text"),X=W("box"),Q=W("text"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,H),q(Z,"flexDirection","column"),q(Z,"flexShrink",0),q(Z,"paddingLeft",1),q(Z,"paddingRight",1),q(Z,"paddingBottom",1),q(G,"wrapMode","none"),U(G,()=>"\u2594".repeat(Y())),D(X,Q),q(X,"flexDirection","row"),q(X,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(H,f),q(H,"flexDirection","row"),q(H,"gap",1),q(f,"wrapMode","word"),U(f,()=>Bu(J.daemonVersion(),J.clientVersion)),y((j)=>{var{warning:V,warning:B}=z,K=ju.BOLD,L=z.text;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(Q,"fg",B,j.t)),K!==j.a&&(j.a=q(Q,"attributes",K,j.a)),L!==j.o&&(j.o=q(f,"fg",L,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var cM=C(()=>{w();w();w();w();w();w();W1();h1();ZJ()});function dM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Wu(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let Z=I1(J.taskId),G=dM(J.tasks,J.taskId);if(await nz(Z,G?I1(G.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask)await J.orch.setActiveTask(G?.id??null).catch(()=>{});return await Gz(Z).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function Vu(J){let z=dM(J.tasks,J.taskId),Y=I1(J.taskId);if(J.switchBeforeKill)await nz(Y,z?I1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await Gz(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function nM(J,z){if(!J.orch)return;let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Wu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function iM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(H){J.logger.error(`${J.logPrefix} forget project failed:`,H),J.notifyError?.(`Couldn't remove: ${H instanceof Error?H.message:String(H)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await J.orch.deleteTask(z),G=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(XB)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),G=!0}catch(j){J.logger.error(`${J.logPrefix} force delete failed:`,j),J.notifyError?.(`Couldn't delete: ${j instanceof Error?j.message:String(j)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!G)return;let{nextTask:X}=await Vu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function lM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.rename failed:`,G),J.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function $M(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.setBranch failed:`,G),J.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function aM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let Z=await GY(),G=AY(Z,Y.vendor??o1);try{await J.orch.setVendor(z,G)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${LZ(G)} (applies on reopen)`),await J.reload?.()}async function _M(J){let z=SJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??o1,G=await GY();if(G.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:G,discoverAdoptable:X?(f)=>X.discoverAdoptableWorktrees(f):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),ez(Q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(Q.mode==="adopt"){let f=Q.adopt.length,j=0,V;for(let B of Q.adopt)try{H=(await X.adoptWorktree({repo:Q.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:Q.vendor})).id,j++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${B.worktreePath}:`,K)}if(j===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(j<f)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:j,total:f}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:j}))}else try{H=(await X.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(f){J.logger.error(`${J.logPrefix} task.create failed:`,f),J.notifyError?.(`Couldn't create task: ${f instanceof Error?f.message:String(f)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var pM=C(()=>{XZ();Yz();HB();C1();ZJ();zz();_1();zJ()});function zX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function hf(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as Ku}from"child_process";import{existsSync as Uu}from"fs";import{basename as Du,delimiter as Lu,isAbsolute as Fu,join as Mu}from"path";function WW(J,z,Y){if(Fu(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split(Lu)){if(!G)continue;if(Y(Mu(G,J)))return!0}return!1}function Ru(J){let z=Du(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function rM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??Uu,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Ru(G),command:G,args:[]};for(let X of Ou)if(WW(X.command,z,Z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&WW("open",z,Z)){for(let X of Au)if(X.paths.some((Q)=>Z(Q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&WW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function gu(J,z){return[z.command,[...z.args,J]]}function oM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??Ku,[G,X]=gu(J,z);try{let Q=Z(G,X,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Ou,Au;var sM=C(()=>{Ou=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],Au=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function vf(J){let z=new Map;function Y(Z){let G=z.get(Z);if(!G){let[X,Q]=p(J.initial,J.equals?{equals:J.equals}:void 0);G={read:X,write:(H)=>Q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Z,G)}return G}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let G=Y(Z);ZG(G,J,(X)=>J.run(Z,X),(X)=>G.write(X))},reset(){z.clear()}}}var yQ=C(()=>{W1();GG();GG()});import{stat as Nu}from"fs/promises";import{join as Cu}from"path";async function Iu(J){try{let z=await Nu(Cu(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function yu(J,z,Y=qY){let Z=await Iu(J);if(Z!==null){let H=tM.get(J);if(H&&H.fingerprint===Z)return H.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:iJ(),signal:z}),Q=X.status===0?X.stdout.trim():"";if(Q&&Q!=="HEAD")G=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:iJ(),signal:z})).status===0)G="(detached)";if(Z!==null)tM.set(J,{fingerprint:Z,value:G});return G}function J3(J){return eM.read(J)}function z3(J){eM.poll(J)}var ku=2000,bu=30000,Su=1500,tM,eM;var Y3=C(()=>{dY();yQ();tM=new Map;eM=vf({initial:"",timeoutMs:ku,slowRetryMs:bu,minIntervalMs:Su,run:(J,z)=>yu(J,z)})});function VW(J){let z=J.scheduleTimeout??((f,j)=>{let V=setTimeout(f,j);return()=>clearTimeout(V)}),Y=!1,Z=null,G=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},X=()=>{Y=!1,Z?.(),Z=null},Q=(f)=>{let j=J.getFlatIds();if(j.length===0)return;let V=J.getCursor(),B=V<0?0:V,K=Math.min(j.length-1,Math.max(0,B+f));J.setCursor(K)},H=(f)=>{let j=J.getFlatIds();if(j.length===0)return;J.setCursor(Math.min(j.length-1,Math.max(0,f)))};return{moveDown(){X(),Q(1)},moveUp(){X(),Q(-1)},selectCurrent(){X();let f=J.getFlatIds(),j=J.getCursor();if(j<0||j>=f.length)return;let V=f[j];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),H(0);else G()},pressShiftG(){X(),H(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function Z3(J){let z=VW({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=X.length)return;return X[Q]},Z=()=>J.searchMode?.()??!1,G=()=>J.moveMode?.()??!1;U1(()=>({enabled:J.focused()&&!Z(),bindings:rY({"sidebar.nav":(X,Q)=>{let H=(Q??0)%2===0;if(G()){let f=Y();if(f===void 0)return;J.onMoveRequest?.(f,H?1:-1);return}if(H)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(G()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(G())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;J.onProjectFilterToggle?.()}})})),U1(()=>({enabled:J.focused()&&G(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),U1(()=>({enabled:J.focused(),bindings:rY({"sidebar.view":(X,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),U1(()=>({enabled:J.focused()&&Z(),bindings:rY({"sidebar.search.nav":(X,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var G3=C(()=>{rG();kJ()});function KW(J,z){return zX(J,z)}function UW(J,z){return` ${KW(J,Math.max(0,z))}`}var X3=()=>{};function xu(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function uu(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function H3(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Eu(){return F("tasks.subtitle.noTracking")}function wu(){return F("tasks.subtitle.materializing")}function Pu(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!jJ(J.vendor)}function DW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,G=Tu[z.status],X=J.activity?.state,Q=X!==void 0,H=hu(X),f=uu(X),j=Pu(z)&&!Q,V=J.job!==void 0,B=V||!j&&(X==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=YX[J.spinnerFrame]??YX[0],L=V?"primary":j?"textMuted":f?.tone??(B?"primary":H?.tone??G.tone),A=j?Eu():xu(z.status),O=V?J.truncateBranch(wu(),J.subtitleBudget):f?J.truncateBranch(f.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=j?Q3:H?.glyph??G.glyph,u=j?Q3:H?.glyph??"\u2605";return{isMain:Y,titleText:Y?xz(z.repo):z.title,subtitleText:O,loading:B,stateGlyph:B?K:R,projectGlyph:B?K:u,tone:L}}function LW(J,z){if(!J.loading)return J;let Y=YX[z()%YX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function hu(J){switch(J){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Tu,YX,q3=100,Q3="\xB7";var f3=C(()=>{ZJ();_1();xf();Tu={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};YX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function FW(J){return j3.read(J)}function MW(J){j3.poll(J)}var vu=4000,mu=60000,cu=1500,du,j3;var B3=C(()=>{dY();yQ();xG();yQ();du={added:0,deleted:0},j3=vf({initial:du,equals:$z,timeoutMs:vu,slowRetryMs:mu,minIntervalMs:cu,run:async(J,z)=>{let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:iJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}})});import{TextAttributes as v1}from"@opentui/core";function nu(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function V3(J,z=lu){return zX(J,z)}function $u(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function K3(J){let{theme:z}=w0(),Y=()=>J.focused?J.focused():!0,[Z,G]=p("active"),[X,Q]=p(!1),[H,f]=p(""),[j,V]=p(null),B=()=>J.projectFilter?.()??j(),K=(s)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(s);else V(s)};function L(){f(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(s){Q(!1),f(""),J.onSearchActiveChange?.(!1)}_0(()=>{if(!X())return;let s=WJ();if(!s)return;let j0=(C0)=>{if(C0.defaultPrevented)return;if(!Y())return;if(C0.ctrl||C0.meta||C0.option)return;if(C0.name==="backspace"){f((E0)=>E0.slice(0,-1));return}let t0=C0.sequence;if(!t0||t0.length!==1)return;let z1=t0.charCodeAt(0);if(z1<32||z1===127)return;f((E0)=>E0+t0)};s.keyInput.on("keypress",j0),T1(()=>s.keyInput.off("keypress",j0))});let[O,R]=p(0),u=setInterval(()=>R((s)=>s+1),iu);T1(()=>clearInterval(u));let[P,S]=p(0),g=setInterval(()=>S((s)=>(s+1)%YX.length),q3);T1(()=>clearInterval(g));let M=()=>J.sortMode?.()??"default",T=U0(()=>KM(J.tasks(),Z())),d=U0(()=>{let s=B();if(!s)return null;let j0=fz(s);return T().find((C0)=>fz(C0.repo)===j0)??null}),i=U0(()=>d()?.repo??null),J0=U0(()=>d()?.label??"all"),E=U0(()=>{let s=d();return s?s.count:T().reduce((j0,C0)=>j0+C0.count,0)}),z0=U0(()=>{let s=E();return`${s} ${s===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=U0((s)=>FM(s,JW(J.tasks(),Z(),X()?H():"",M(),i())),[]),o=U0(()=>zW(q0())),B0=U0(()=>LM(q0())),g0=U0(()=>B0().projectRows),m=U0(()=>B0().taskRows),r=U0(()=>{let s=new Map;for(let j0 of q0())s.set(j0.flatIndex,j0);return s}),c=U0(()=>zW(JW(J.tasks(),Z(),"",M(),i())).length),N=U0(()=>m().length>0);_0(()=>{let s=B(),j0=T();if(s!==null&&j0.length>0&&(j0.length<=1||d()===null))K(null)});function t(){let s=T();if(s.length<=1){K(null);return}let j0=i(),C0=j0?fz(j0):null,t0=C0===null?-1:s.findIndex((E0)=>fz(E0.repo)===C0),z1=s[t0+1];K(z1?.repo??null)}let x=()=>J.width?J.width():W3,n=U0(()=>Math.max(6,x()-9)),Q0=U0(()=>Math.max(6,x()-16)),H0=az(),F0=U0(()=>{let s=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),j0=Math.max(2,g0().length*2);return Math.min(s,j0)}),[M0,o0]=p(null),[S0,p0]=p(-1),h,L0,Z0,D0=new Map;_0(()=>{let s=J.width?J.width():W3,j0=Z0;if(!j0)return;j0.width=s,j0.flexShrink=1,j0.minHeight=0}),_0(BJ([S0,q0],([s])=>{let j0=r().get(s);if(!j0)return;let C0=j0.task.kind==="main"?h:L0;if(!C0)return;if(C0.viewport.height<=0)return;let t0=D0.get(s);if(!t0)return;C0.scrollChildIntoView(t0.id)})),_0(BJ(()=>[J.selectedId(),o()],([s,j0])=>{let C0=t1(S0),t0=DM(s,j0,C0);if(t0!==C0)p0(t0)})),_0(BJ(Z,()=>{let s=o();p0(s.length>0?0:-1)},{defer:!0})),_0(BJ(i,(s)=>p0(UM(q0(),s)),{defer:!0})),_0(BJ([X,H],()=>{if(!X())return;let s=o();p0(s.length>0?0:-1)}));function P0(s){let j0=Z(),C0=TQ.findIndex((E0)=>E0.view===j0);if(C0<0)return;let t0=(C0+s+TQ.length)%TQ.length,z1=TQ[t0];if(z1)G(z1.view)}let G1=(s)=>{if(J.onActivate?.(s),!J.pinnedSelection)return;let j0=J.selectedId();if(!j0||s===j0)return;let C0=o().indexOf(j0);if(C0>=0)p0(C0)};Z3({focused:Y,cursorIndex:S0,setCursorIndex:p0,flatTaskIds:o,onSelect:(s)=>{J.onSelect(s),G1(s)},onDeleteRequest:(s)=>J.onDeleteRequest?.(s),onArchiveRequest:(s)=>J.onArchiveRequest?.(s),onLocalMergeRequest:(s)=>J.onLocalMergeRequest?.(s),moveMode:J.moveMode,onMoveRequest:(s,j0)=>J.onMoveRequest?.(s,j0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(s)=>J.onRenameRequest?.(s),onPinRequest:(s)=>J.onPinRequest?.(s),onViewSwitch:(s)=>P0(s),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>t(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(s)=>A(s)});let c0=(s)=>(()=>{var j0=W("box"),C0=W("box"),t0=W("text"),z1=W("text");return D(j0,C0),q(j0,"flexDirection","column"),q(j0,"flexShrink",0),U(j0,b(Y0,{get when(){return s.topPad},get children(){var E0=W("box"),V1=W("text");return D(E0,V1),q(E0,"flexShrink",0),D(V1,T0(" ")),q(V1,"wrapMode","none"),E0}}),C0),D(C0,t0),D(C0,z1),q(C0,"flexDirection","row"),q(C0,"flexShrink",0),q(C0,"gap",1),q(C0,"paddingLeft",1),q(C0,"paddingRight",1),q(t0,"wrapMode","none"),U(t0,()=>s.label),q(z1,"wrapMode","none"),U(z1,()=>"\u2500".repeat(Math.max(2,x()-10-s.label.length-(s.suffix?.length??0)))),U(C0,b(Y0,{get when(){return s.suffix},get children(){var E0=W("text");return q(E0,"wrapMode","none"),U(E0,()=>s.suffix),y((V1)=>{var D1=z.info,f1=v1.BOLD;return D1!==V1.e&&(V1.e=q(E0,"fg",D1,V1.e)),f1!==V1.t&&(V1.t=q(E0,"attributes",f1,V1.t)),V1},{e:void 0,t:void 0}),E0}}),null),y((E0)=>{var V1=z.textMuted,D1=v1.BOLD,f1=z.border;return V1!==E0.e&&(E0.e=q(t0,"fg",V1,E0.e)),D1!==E0.t&&(E0.t=q(t0,"attributes",D1,E0.t)),f1!==E0.a&&(E0.a=q(z1,"fg",f1,E0.a)),E0},{e:void 0,t:void 0,a:void 0}),j0})(),u0=(s)=>{switch(s){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},k1=(s)=>{let j0=s.row.task,C0=s.row.flatIndex,t0=()=>C0===S0(),z1=()=>j0.id===J.selectedId(),E0=U0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let h0=`${j0.id}:`;for(let[k0,s0]of V0)if(s0==="running"&&k0.startsWith(h0))return!0;return!1}),V1=U0(()=>{let V0=iH(J.worktreeChanges?.(),j0.worktreePath);if(V0)return V0;if(O(),!j0.archived)MW(j0.worktreePath);return FW(j0.worktreePath)},void 0,{equals:$z}),D1=U0(()=>{return O(),z3(j0.repo),J3(j0.repo)}),f1=U0(()=>DW({task:j0,activity:J.engineState?.().get(j0.id),job:J.taskJobs?.().get(j0.id),live:E0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:D1()})),G0=U0(()=>LW(f1(),P)),X0=()=>!G0().loading?z.primary:u0(G0().tone),W0=()=>t0()?z.focusAccent:z1()?z.primary:void 0,R0=()=>t0()||z1()?"\u258C":" ";return(()=>{var V0=W("box"),h0=W("box"),k0=W("box"),s0=W("text"),b0=W("box"),x0=W("text"),k=W("text"),X1=W("box"),e0=W("text"),n0=W("box"),v0=W("text");return D(V0,h0),q(V0,"flexDirection","column"),q(V0,"gap",0),q(V0,"paddingBottom",0),D(h0,k0),D(h0,X1),qz((K0)=>{D0.set(C0,K0),T1(()=>{if(D0.get(C0)===K0)D0.delete(C0)})},h0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"onMouseUp",()=>{if(p0(C0),J.onSelect(j0.id),J.activateOnClick)G1(j0.id)}),q(h0,"onMouseOver",(K0)=>o0({task:j0,x:K0.x,y:K0.y})),q(h0,"onMouseOut",()=>o0((K0)=>K0?.task.id===j0.id?null:K0)),D(k0,s0),D(k0,b0),q(k0,"flexDirection","row"),q(k0,"gap",0),q(s0,"wrapMode","none"),U(s0,R0),D(b0,x0),D(b0,k),q(b0,"flexDirection","row"),q(b0,"flexGrow",1),q(b0,"paddingRight",1),q(b0,"gap",0),q(x0,"wrapMode","none"),U(x0,()=>G0().projectGlyph),q(k,"wrapMode","none"),q(k,"flexGrow",1),U(k,()=>UW(G0().titleText,n())),D(X1,e0),D(X1,n0),q(X1,"flexDirection","row"),q(X1,"gap",0),q(e0,"wrapMode","none"),U(e0,R0),D(n0,v0),q(n0,"flexDirection","row"),q(n0,"flexGrow",1),q(n0,"paddingLeft",2),q(n0,"paddingRight",1),q(n0,"gap",1),q(v0,"wrapMode","none"),q(v0,"flexGrow",1),U(v0,()=>G0().subtitleText),U(n0,b(Y0,{get when(){return V1().added>0},get children(){var K0=W("text"),y0=T0("+");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().added,null),y((b1)=>q(K0,"fg",z.success,b1)),K0}}),null),U(n0,b(Y0,{get when(){return V1().deleted>0},get children(){var K0=W("text"),y0=T0("\u2212");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().deleted,null),y((b1)=>q(K0,"fg",z.error,b1)),K0}}),null),y((K0)=>{var y0=t0()?z.backgroundElement:void 0,b1=W0(),F1=X0(),A1=v1.BOLD,l=z.text,I=v1.BOLD,O0=W0(),e=z.textMuted,I0=v1.DIM;return y0!==K0.e&&(K0.e=q(h0,"backgroundColor",y0,K0.e)),b1!==K0.t&&(K0.t=q(s0,"fg",b1,K0.t)),F1!==K0.a&&(K0.a=q(x0,"fg",F1,K0.a)),A1!==K0.o&&(K0.o=q(x0,"attributes",A1,K0.o)),l!==K0.i&&(K0.i=q(k,"fg",l,K0.i)),I!==K0.n&&(K0.n=q(k,"attributes",I,K0.n)),O0!==K0.s&&(K0.s=q(e0,"fg",O0,K0.s)),e!==K0.h&&(K0.h=q(v0,"fg",e,K0.h)),I0!==K0.r&&(K0.r=q(v0,"attributes",I0,K0.r)),K0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V0})()};return(()=>{var s=W("box"),j0=W("box"),C0=W("box"),t0=W("text"),z1=W("box"),E0=W("box"),V1=W("text"),D1=W("scrollbox"),f1=W("box");return D(s,j0),D(s,z1),D(s,D1),qz((G0)=>{Z0=G0},s),q(s,"flexGrow",1),q(s,"minHeight",0),q(s,"flexDirection","column"),q(s,"paddingTop",1),q(s,"paddingBottom",1),q(s,"paddingLeft",0),q(s,"paddingRight",0),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"justifyContent","space-between"),q(j0,"gap",1),q(j0,"paddingBottom",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),D(C0,t0),q(C0,"flexDirection","row"),q(C0,"gap",1),D(t0,T0("KOBE")),q(t0,"wrapMode","none"),U(C0,b(Y0,{get when(){return J.headerStatus?.()},children:(G0)=>(()=>{var X0=W("text");return q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(X0,()=>G0().label),y((W0)=>{var R0=G0().emphasize?z.warning:z.textMuted,V0=G0().emphasize?v1.BOLD:v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),X0})()}),null),U(j0,b(Y0,{get when(){return J.onAddTask},get children(){var G0=W("text");return D(G0,T0("[+]")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onAddTask?.()),y((X0)=>{var W0=z.primary,R0=v1.BOLD;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return X()},get children(){var G0=W("box"),X0=W("text"),W0=W("text"),R0=W("text");return D(G0,X0),D(G0,W0),D(G0,R0),q(G0,"flexDirection","row"),q(G0,"gap",0),q(G0,"paddingBottom",1),q(G0,"paddingLeft",1),D(X0,T0("/")),q(X0,"wrapMode","none"),q(W0,"wrapMode","none"),U(W0,H),D(R0,T0("\u2588")),q(R0,"wrapMode","none"),U(G0,b(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),h0=T0(" ");return D(V0,h0),q(V0,"wrapMode","none"),U(V0,()=>F("tasks.search.placeholder"),null),y((k0)=>q(V0,"fg",z.textMuted,k0)),V0}}),null),U(G0,b(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),h0=T0(" "),k0=T0("/");return D(V0,h0),D(V0,k0),q(V0,"wrapMode","none"),U(V0,()=>o().length,k0),U(V0,c,null),y((s0)=>q(V0,"fg",z.textMuted,s0)),V0}}),null),y((V0)=>{var{info:h0,text:k0,info:s0}=z,b0=v1.BLINK;return h0!==V0.e&&(V0.e=q(X0,"fg",h0,V0.e)),k0!==V0.t&&(V0.t=q(W0,"fg",k0,V0.t)),s0!==V0.a&&(V0.a=q(R0,"fg",s0,V0.a)),b0!==V0.o&&(V0.o=q(R0,"attributes",b0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),z1),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"justifyContent","space-between"),q(z1,"gap",1),q(z1,"paddingBottom",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),D(E0,V1),q(E0,"flexDirection","row"),q(E0,"gap",2),U(E0,b(Z1,{each:TQ,children:(G0)=>{let X0=()=>Z()===G0.view;return(()=>{var W0=W("text");return q(W0,"wrapMode","none"),q(W0,"onMouseUp",()=>G(G0.view)),U(W0,()=>nu(G0.view)),y((R0)=>{var V0=X0()?z.primary:z.textMuted,h0=X0()?v1.BOLD:void 0;return V0!==R0.e&&(R0.e=q(W0,"fg",V0,R0.e)),h0!==R0.t&&(R0.t=q(W0,"attributes",h0,R0.t)),R0},{e:void 0,t:void 0}),W0})()}}),V1),D(V1,T0("[/]")),q(V1,"wrapMode","none"),U(z1,b(Y0,{get when(){return J.sortMode},get children(){var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onSortModeToggle?.()),U(G0,()=>F("tasks.sort")),y((X0)=>{var W0=z.textMuted,R0=v1.DIM;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return g0().length>0},get children(){var G0=W("box"),X0=W("box"),W0=W("text"),R0=W("text"),V0=W("scrollbox"),h0=W("box");return D(G0,X0),D(G0,V0),q(G0,"flexDirection","column"),q(G0,"flexShrink",0),D(X0,W0),D(X0,R0),q(X0,"flexDirection","row"),q(X0,"flexShrink",0),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>t()),q(W0,"wrapMode","none"),U(W0,()=>F("tasks.header.projects")),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,J0),y((s0)=>{var b0=i()?z.primary:z.textMuted,x0=i()?v1.BOLD:void 0;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),R0),q(R0,"wrapMode","none"),U(R0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(T().length>1?J0().length+1:0)-(T().length>1?z0().length+1:0)))),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,z0),y((s0)=>{var b0=z.textMuted,x0=v1.DIM;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),null),D(V0,h0),qz((k0)=>{h=k0},V0),q(V0,"flexShrink",0),q(V0,"flexGrow",0),q(V0,"minHeight",0),q(V0,"stickyScroll",!1),q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(h0,"flexShrink",0),q(h0,"gap",0),q(h0,"paddingRight",1),U(h0,b(Z1,{get each(){return g0()},children:(k0)=>b(k1,{row:k0})})),y((k0)=>{var s0=z.textMuted,b0=v1.BOLD,x0=z.border,k=F0();return s0!==k0.e&&(k0.e=q(W0,"fg",s0,k0.e)),b0!==k0.t&&(k0.t=q(W0,"attributes",b0,k0.t)),x0!==k0.a&&(k0.a=q(R0,"fg",x0,k0.a)),k!==k0.o&&(k0.o=q(V0,"maxHeight",k,k0.o)),k0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),D1),U(s,b(c0,{get label(){return F("tasks.header.tasks")},get suffix(){return N0(()=>M()==="default")()?void 0:M()},get topPad(){return g0().length>0}}),D1),D(D1,f1),qz((G0)=>{L0=G0},D1),q(D1,"flexGrow",1),q(D1,"minHeight",0),q(D1,"stickyScroll",!1),q(D1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(f1,"flexShrink",0),q(f1,"gap",0),q(f1,"paddingRight",1),U(f1,b(Z1,{get each(){return m()},children:(G0)=>{let{task:X0,flatIndex:W0}=G0,R0=()=>W0===S0(),V0=()=>X0.id===J.selectedId(),h0=U0(()=>{let e0=J.chatRunState?.();if(!e0)return!1;let n0=`${X0.id}:`;for(let[v0,K0]of e0)if(K0==="running"&&v0.startsWith(n0))return!0;return!1}),k0=U0(()=>{let e0=iH(J.worktreeChanges?.(),X0.worktreePath);if(e0)return e0;if(O(),!X0.archived)MW(X0.worktreePath);return FW(X0.worktreePath)},void 0,{equals:$z}),s0=U0(()=>DW({task:X0,activity:J.engineState?.().get(X0.id),job:J.taskJobs?.().get(X0.id),live:h0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:""})),b0=U0(()=>LW(s0(),P)),x0=()=>u0(b0().tone),k=()=>R0()?z.focusAccent:V0()?z.primary:void 0,X1=()=>R0()||V0()?"\u258C":" ";return(()=>{var e0=W("box"),n0=W("box"),v0=W("box"),K0=W("text"),y0=W("box"),b1=W("text"),F1=W("text"),A1=W("box"),l=W("text"),I=W("box"),O0=W("text");return D(e0,n0),q(e0,"flexDirection","column"),q(e0,"gap",0),q(e0,"paddingBottom",1),D(n0,v0),D(n0,A1),qz((e)=>{D0.set(W0,e),T1(()=>{if(D0.get(W0)===e)D0.delete(W0)})},n0),q(n0,"flexDirection","column"),q(n0,"gap",0),q(n0,"onMouseUp",()=>{if(p0(W0),J.onSelect(X0.id),J.activateOnClick)G1(X0.id)}),q(n0,"onMouseOver",(e)=>o0({task:X0,x:e.x,y:e.y})),q(n0,"onMouseOut",()=>o0((e)=>e?.task.id===X0.id?null:e)),D(v0,K0),D(v0,y0),q(v0,"flexDirection","row"),q(v0,"gap",0),q(K0,"wrapMode","none"),U(K0,X1),D(y0,b1),D(y0,F1),q(y0,"flexDirection","row"),q(y0,"flexGrow",1),q(y0,"paddingRight",1),q(y0,"gap",0),q(b1,"wrapMode","none"),U(b1,()=>b0().stateGlyph),q(F1,"wrapMode","none"),q(F1,"flexGrow",1),U(F1,()=>UW(b0().titleText,n())),U(y0,b(Y0,{get when(){return N0(()=>!!J.moveMode?.())()&&R0()},get children(){var e=W("text");return q(e,"wrapMode","none"),U(e,()=>F("tasks.moveChip")),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),D(A1,l),D(A1,I),q(A1,"flexDirection","row"),q(A1,"gap",0),q(l,"wrapMode","none"),U(l,X1),D(I,O0),q(I,"flexDirection","row"),q(I,"flexGrow",1),q(I,"paddingLeft",2),q(I,"paddingRight",1),q(I,"gap",1),q(O0,"wrapMode","none"),q(O0,"flexGrow",1),U(O0,()=>b0().subtitleText),U(I,b(Y0,{get when(){return X0.pinned===!0},get children(){var e=W("text");return D(e,T0("\u25B4")),q(e,"wrapMode","none"),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),U(I,b(Y0,{get when(){return H3(X0)},children:(e)=>(()=>{var I0=W("text");return q(I0,"wrapMode","none"),U(I0,()=>e().glyph),y((M1)=>q(I0,"fg",u0(e().tone),M1)),I0})()}),null),U(I,b(Y0,{get when(){return k0().added>0},get children(){var e=W("text"),I0=T0("+");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().added,null),y((M1)=>q(e,"fg",z.success,M1)),e}}),null),U(I,b(Y0,{get when(){return k0().deleted>0},get children(){var e=W("text"),I0=T0("\u2212");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().deleted,null),y((M1)=>q(e,"fg",z.error,M1)),e}}),null),y((e)=>{var I0=R0()?z.backgroundElement:void 0,M1=k(),UJ=x0(),GJ=v1.BOLD,j1=z.text,_J=V0()||R0()?v1.BOLD:void 0,fJ=k(),pJ=z.textMuted,bJ=v1.DIM;return I0!==e.e&&(e.e=q(n0,"backgroundColor",I0,e.e)),M1!==e.t&&(e.t=q(K0,"fg",M1,e.t)),UJ!==e.a&&(e.a=q(b1,"fg",UJ,e.a)),GJ!==e.o&&(e.o=q(b1,"attributes",GJ,e.o)),j1!==e.i&&(e.i=q(F1,"fg",j1,e.i)),_J!==e.n&&(e.n=q(F1,"attributes",_J,e.n)),fJ!==e.s&&(e.s=q(l,"fg",fJ,e.s)),pJ!==e.h&&(e.h=q(O0,"fg",pJ,e.h)),bJ!==e.r&&(e.r=q(O0,"attributes",bJ,e.r)),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),e0})()}}),null),U(f1,b(Y0,{get when(){return o().length===0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),U(X0,(()=>{var W0=N0(()=>!!(X()&&H().trim().length>0));return()=>W0()?F("tasks.empty.noMatchSearch"):N0(()=>!!i())()?N0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):N0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((W0)=>q(X0,"fg",z.textMuted,W0)),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>!!(i()&&o().length>0&&!N()))()&&!(X()&&H().trim().length>0)},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,(()=>{var W0=N0(()=>Z()==="active");return()=>W0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>Z()==="archived")()&&o().length>0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,()=>F("tasks.archiveHint")),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return J.zenActive?.()},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"flexShrink",0),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"paddingTop",1),D(X0,T0("\u262F ZEN")),q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onZenClick?.()),y((W0)=>{var R0=z.accent,V0=v1.BOLD;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return M0()},children:(G0)=>{let X0=U0(()=>{let b0=G0().task,x0=[];if(x0.push({text:b0.kind==="main"?xz(b0.repo):b0.title,bold:!0}),b0.branch.length>0)x0.push({text:`\u2387 ${b0.branch}`});if(b0.worktreePath.length>0)x0.push({text:b0.worktreePath,dim:!0});return x0}),W0=72,R0=U0(()=>Math.min(68,Math.max(...X0().map((b0)=>$u(b0.text))))),V0=U0(()=>R0()+4),h0=U0(()=>X0().length+2),k0=U0(()=>Math.max(0,Math.min(G0().x+2,H0().width-V0()-1))),s0=U0(()=>Math.max(0,Math.min(G0().y+1,H0().height-h0()-1)));return(()=>{var b0=W("box");return q(b0,"position","absolute"),q(b0,"zIndex",2600),q(b0,"flexDirection","column"),q(b0,"border",!0),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),U(b0,b(Z1,{get each(){return X0()},children:(x0)=>(()=>{var k=W("text");return q(k,"wrapMode","none"),U(k,(()=>{var X1=N0(()=>!!x0.dim);return()=>X1()?au(x0.text,R0()):KW(x0.text,R0())})()),y((X1)=>{var e0=x0.dim?z.textMuted:z.text,n0=x0.bold?v1.BOLD:x0.dim?v1.DIM:void 0;return e0!==X1.e&&(X1.e=q(k,"fg",e0,X1.e)),n0!==X1.t&&(X1.t=q(k,"attributes",n0,X1.t)),X1},{e:void 0,t:void 0}),k})()})),y((x0)=>{var k=k0(),X1=s0(),e0=V0(),n0=z.focusAccent,v0=z.backgroundElement;return k!==x0.e&&(x0.e=q(b0,"left",k,x0.e)),X1!==x0.t&&(x0.t=q(b0,"top",X1,x0.t)),e0!==x0.a&&(x0.a=q(b0,"width",e0,x0.a)),n0!==x0.o&&(x0.o=q(b0,"borderColor",n0,x0.o)),v0!==x0.i&&(x0.i=q(b0,"backgroundColor",v0,x0.i)),x0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b0})()}}),null),y((G0)=>{var X0=Y()?z.focusAccent:z.textMuted,W0=v1.BOLD,R0=z.textMuted,V0=v1.DIM;return X0!==G0.e&&(G0.e=q(t0,"fg",X0,G0.e)),W0!==G0.t&&(G0.t=q(t0,"attributes",W0,G0.t)),R0!==G0.a&&(G0.a=q(V1,"fg",R0,G0.a)),V0!==G0.o&&(G0.o=q(V1,"attributes",V0,G0.o)),G0},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}var W3=32,TQ,iu=2000,lu=16,au;var U3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();h1();Y3();xf();G3();X3();f3();xG();B3();TQ=[{view:"active"},{view:"archived"}];au=hf});var O3={};q1(O3,{startTasksPane:()=>su,legendRowCap:()=>M3,legendCap:()=>F3});import{existsSync as D3}from"fs";import{stat as _u}from"fs/promises";import{TextAttributes as mf}from"@opentui/core";function L3(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function ru(J){let{theme:z}=w0(),Y=n1(),Z=oG(),G=Cf(),[X,Q]=p(J.tasks().some((h)=>h.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),H=0;function f(h){G.notify({kind:"error",taskId:X()??"",tabId:"",title:h})}function j(h){G.notify({kind:"done",taskId:X()??"",tabId:"",title:h})}let[V,B]=p(!1),[K,L]=p(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=p(typeof A==="string"&&A.length>0?A:null),u=(h)=>{R(h),Z.set("tasksPane.projectFilter",h)},[P,S]=p(null),[g,M]=p(!1);{let h=process.env.TMUX_PANE;if(h){let L0=()=>{a0(["show-options","-wqv","-t",h,SY]).then(({code:D0,stdout:P0})=>{M(D0===0&&P0.trim().length>0)})};L0();let Z0=setInterval(L0,1000);T1(()=>clearInterval(Z0))}}let T=az();_0(()=>{if(J.initialTaskId)return;let h=J.orch?.activeTaskSignal()();if(!h)return;Q(h)}),_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.sortMode!==t1(K))L(h.sortMode);if(h&&h.projectFilter!==t1(O))R(h.projectFilter)})),_0(()=>{let h=J.orch?.updateSignal()();if(h)S(h)});let d={orch:J.orch,tasks:()=>J.tasks(),confirm:async(h)=>await uz.show(Y,h.title,h.body,h.cancelLabel,h.confirmLabel)===!0,promptText:(h,L0)=>rz.show(Y,h,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:j,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(h,L0)=>{if(X()!==h)return;let Z0=J.tasks();Q(L0?.id??(Z0.find((D0)=>!D0.archived)??Z0[0])?.id??null)},promptNewTask:(h,L0,Z0)=>Ff.show(Y,h,L0,Z0),cursorRepo:()=>{let h=J.tasks();return(h.find((L0)=>L0.id===X())??h[0])?.repo},lastVendor:()=>PJ(S1("lastSelectedVendor"),hJ()),rememberVendor:(h)=>e1("lastSelectedVendor",h),openCreateSurface:async(h)=>{if(TZ(Z.get(WY,yZ))!=="chattab")return!1;let Z0=await wJ();if(!Z0)return!1;return await $X(Z0,h),!0},selectTask:(h)=>Q(h),enterTask:(h)=>F0(h)};async function i(){await _M(d)}async function J0(){if(TZ(Z.get(WY,yZ))==="chattab"){let Z0=await wJ();if(Z0){await iX(Z0);return}}if(!(await nZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let Z0=await wJ();if(Z0)await RG(Z0)}catch(Z0){console.error("[kobe tasks] failed to refresh workspace panes:",Z0)}}async function E(){let h=await wJ();if(h){await lX(h);return}tG.show(Y)}async function z0(){if(!P()?.hasUpdate){j(F("tasks.toast.alreadyLatest",{version:J1}));return}let L0=await wJ();if(!L0)return;await aX(L0)}async function q0(h){await nM(d,h)}async function o(h){await iM(d,h)}async function B0(h){await lM(d,h)}async function g0(h){await $M(d,h)}async function m(h){await aM(d,h)}async function r(h){let Z0=J.tasks().find((P0)=>P0.id===h)?.worktreePath;if(!Z0||!D3(Z0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Z0=await J.orch.ensureWorktree(h)}catch(P0){console.error("[kobe tasks] task.ensureWorktree failed:",P0),f(L3(P0));return}await J.reload()}if(!Z0||!D3(Z0))return;let D0=rM();if(!D0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!oM(Z0,D0))console.error(`[kobe tasks] failed to open worktree with ${D0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:D0.label}))}async function c(){if(!process.env.TMUX_PANE)return;let h=await wJ();if(!h)return;let L0=await BG(h);if(!L0)return;await d0(["select-pane","-t",L0])}async function N(h,L0){let Z0=J.tasks().find((D0)=>D0.id===h);if(!Z0||Z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(h,L0)}catch(D0){console.error("[kobe tasks] task.move failed:",D0),f(F("tasks.toast.moveTaskFailed",{message:D0 instanceof Error?D0.message:String(D0)}));return}Q(h),await J.reload()}let[t,x]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),n=(h)=>{x(h),Z.set("tasksPane.keysCollapsed",h)};_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.keysCollapsed!==t1(t))x(h.keysCollapsed)}));let[Q0,H0]=p(!1);U1(()=>({enabled:Y.stack.length===0&&!Q0(),bindings:rY({"help.open":()=>void E(),"task.new":()=>void i(),"settings.open.sidebar":()=>void J0(),"tasks.update":()=>void z0(),"tasks.openWorktree":()=>{let h=X();if(h)r(h)},"tasks.renameBranch":()=>{let h=X();if(h)g0(h)},"tasks.cycleEngine":()=>{let h=X();if(h)m(h)},"tasks.toggleKeys":()=>n(!t()),"tasks.focusEngine":()=>void c().catch((h)=>console.error("[kobe tasks] focus engine pane failed:",h))})}));async function F0(h){let L0=J.tasks().find((D0)=>D0.id===h);if(!L0)return;let Z0=++H;try{await t8(J.orch,L0,L0.repo,L0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>H===Z0})}catch(D0){if(D0 instanceof sY)if(D0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(D0.phase==="worktree")f(L3(D0.cause??D0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",D0)}}let M0=U0(()=>{let h=P();if(h?.hasUpdate)return{label:`v${h.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),o0=()=>J.orch?.daemonStaleSignal()()??!1,S0=()=>J.orch?.daemonVersionSignal()()??null,p0=U0(()=>J.tasks().find((h)=>h.id===X())?.kind==="main");return(()=>{var h=W("box"),L0=W("box");return D(h,L0),q(h,"flexDirection","column"),q(h,"flexGrow",1),U(h,b(mM,{stale:o0,daemonVersion:S0,clientVersion:J1,width:()=>T().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(K3,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(Z0)=>void F0(Z0),activateOnClick:!0,headerStatus:M0,onHeaderStatusClick:()=>void z0(),onAddTask:()=>void i(),zenActive:g,onZenClick:()=>{(async()=>{let Z0=await wJ();if(Z0)await CZ(Z0,"zen-toggle")})()},width:()=>T().width,get engineState(){return N0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return N0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Z0=J.orch;if(!Z0||Z0.connectionStateSignal()()!=="online")return null;return Z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Z0)=>void B0(Z0),onDeleteRequest:(Z0)=>void o(Z0),onArchiveRequest:(Z0)=>void q0(Z0),onLocalMergeRequest:(Z0)=>{let D0=J.tasks().find((P0)=>P0.id===Z0);if(!D0||D0.kind==="main")return;Q(Z0),B((P0)=>!P0)},moveMode:V,onMoveRequest:(Z0,D0)=>void N(Z0,D0),onMoveModeExit:()=>B(!1),sortMode:K,projectFilter:O,onProjectFilterChange:u,onSortModeToggle:()=>{let Z0=K()==="default"?"recent":"default";L(Z0),Z.set("activeSortMode",Z0)},focused:()=>Y.stack.length===0,onSearchActiveChange:H0})),U(h,b(ou,{moveMode:V,selectedIsMain:p0,collapsed:t,onToggleCollapsed:()=>n(!t())}),null),y((Z0)=>q(h,"backgroundColor",z.background,Z0)),h})()}function F3(J){let z=a8(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function M3(J){let z=J.map(F3).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function ou(J){let{theme:z}=w0(),[Y,Z]=p("Prefix");QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=Ef(L);if(A)Z(A)})});let G=()=>{$8();let K=_q(),L=K.binds,A=[],O=K.focus.filter((u)=>u!==null).map((u)=>u.chord);if(O.length===4&&O.every((u,P)=>u===uY[P]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(u,P)=>{let S=P.map((g)=>L[g]?.chord).filter((g)=>!!g);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:u})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),A},X=()=>{$8();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=M3(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...G()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?Q():X(),f=18,j=()=>Math.min(f,Math.max(...H().map((K)=>K.label.length))),V=(K)=>zX(K,j()),B=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=N0(()=>!!B());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(Y0,{get when(){return!B()},get children(){return b(Z1,{get each(){return H()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),u=W("box"),P=W("text"),S=T0("["),g=T0("]"),M=W("box"),T=W("text");return D(R,u),D(R,M),q(R,"flexDirection","row"),q(R,"gap",1),q(R,"justifyContent","space-between"),D(u,P),q(u,"width",10),q(u,"flexShrink",0),D(P,S),D(P,g),q(P,"wrapMode","none"),U(P,()=>sG(A.k,Y()),g),D(M,T),q(M,"flexShrink",0),q(T,"wrapMode","none"),U(T,()=>V(A.label)),y((d)=>{var i=O()?z.textMuted:z.accent,J0=O()?mf.DIM:mf.BOLD,E=j(),z0=z.textMuted,q0=O()?mf.DIM:void 0;return i!==d.e&&(d.e=q(P,"fg",i,d.e)),J0!==d.t&&(d.t=q(P,"attributes",J0,d.t)),E!==d.a&&(d.a=q(M,"width",E,d.a)),z0!==d.o&&(d.o=q(T,"fg",z0,d.o)),q0!==d.i&&(d.i=q(T,"attributes",q0,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=mf.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),R!==A.t&&(A.t=q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function su(J={}){await KJ({logContext:"tasks",providers:{notifications:!0},setup:()=>tu(J)})}async function tu(J){let z=new PG({homeDir:rJ()});await z.load();let[Y,Z]=p(z.list()),G=null;try{let j=await Qz();if(j){let V=new AJ(j);await V.init(),G=V}else ZY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(j){JJ("tasks-boot",j),ZY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),Q=async()=>{await z.load(),Z(z.list())},H="",f=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let j="missing";try{let V=await _u(z.filePath);j=`${V.mtimeMs}:${V.size}`}catch{}if(j===H)return;H=j,await Q()})().catch(()=>{})},pu);return{root:()=>[b(ru,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:Q}),b(hM,{})],onDestroy:()=>{if(f)clearInterval(f);G?.dispose()}}}var pu=1500;var A3=C(()=>{w();w();w();w();w();w();w();w();c1();Lz();ZJ();w();GZ();CJ();W1();_Y();p1();qQ();C1();pq();_1();NJ();ZW();pG();GW();BW();vM();cM();rG();SQ();kf();h1();YW();MY();kJ();pM();If();sM();U3();PY();zJ();$J();wf()});var R3={};q1(R3,{startSettingsHost:()=>JE});function eu(J){let z=oG(),Y=n1(),{theme:Z}=w0(),G=!1,X=!1;async function Q(){if(X)return;X=!0;try{if(z.flush()&&G){let f=await wJ();if(f)await RG(f)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return U1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var H=W("scrollbox");return q(H,"flexGrow",1),q(H,"paddingTop",1),q(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(H,b(nZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:Q})),y((f)=>q(H,"backgroundColor",Z.background,f)),H})()}async function JE(){await KJ({setup:async()=>{let J=null;try{let z=await Qz();if(z){let Y=new AJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(eu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var g3=C(()=>{w();w();w();w();w();w();CJ();_Y();BW();SQ();h1();MY();kJ();zJ();$J()});var N3={};q1(N3,{startHelpHost:()=>YE});function zE(){let J=n1(),{theme:z}=w0();function Y(){process.exit(0)}return U1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return q(Z,"flexGrow",1),q(Z,"paddingTop",1),U(Z,b(tG,{onClose:Y})),y((G)=>q(Z,"backgroundColor",z.background,G)),Z})()}async function YE(){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(zE,{})})})}var C3=C(()=>{w();w();w();w();w();ZW();h1();MY();kJ();$J()});var k3={};q1(k3,{startUpdateHost:()=>fE});import{spawn as ZE,spawnSync as GE}from"child_process";import{TextAttributes as ZX}from"@opentui/core";function XE(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return ZE(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function QE(J){return J.replace(/\r\n/g,`
|
|
247
|
+
${q8()}
|
|
248
|
+
`),process.exit(2)}return z}async function my(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${q8()}
|
|
249
|
+
`),!z)process.exitCode=2;return}if(!vy.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
|
|
250
|
+
|
|
251
|
+
${q8()}
|
|
252
|
+
`),process.exit(2);if(z==="status"){let H=fQ(),[j,B]=G8(),V=!H.installed?"\u2717 not installed":H.stale?`\u26A0 out of date (installed ${H.installedVersion===null?"unstamped":`v${H.installedVersion}`}, this kobe wants v${H.currentVersion})`:`\u2713 installed (v${H.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${j}`,` ${B}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
|
|
253
|
+
`));return}if(z==="command"){process.stdout.write(`${Zj({agent:dD(Y)})}
|
|
254
|
+
`);return}let Z=dD(Y),G=Z8({agent:Z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
|
|
255
|
+
`);let q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
|
|
256
|
+
kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
|
|
257
|
+
You can run it yourself: ${Zj({agent:Z})}
|
|
258
|
+
`),process.exit(q||1);process.stdout.write(`kobe skill: installed.
|
|
259
|
+
`)}var vy;var iD=k(()=>{Gj();vy=["install","status","command"]});var j8={};q1(j8,{runHookSubcommand:()=>ay,readTextWithTimeout:()=>aD,parseWorktreeRemovePath:()=>oD,parseWorktreeAddPath:()=>rD,ensureGlobalKobeHooks:()=>ry});import{homedir as cy}from"os";import{join as $D,resolve as H8}from"path";async function aD(J,z=dy){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function _D(){try{let J=await aD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function ny(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 ly(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function pD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function rD(J){let z=pD(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let G=Z+2;while(G<z.length){let X=z[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}function oD(J){let z=pD(J);for(let Y=0;Y+1<z.length;Y++){if(z[Y]!=="worktree"||z[Y+1]!=="remove")continue;let Z=Y+2;while(Z<z.length){let G=z[Z];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){Z+=1;continue}return G}}return}async function $y(){let J=await _D(),z=ly(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let Z=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),G=rD(Y),X=G?void 0:oD(Y);if(!G&&!X)return;let q=await Qz();if(!q)return;try{if(G)await q.request("worktree.reconcile",{cwd:Z,worktreePath:H8(Z,G)});else if(X)await q.request("worktree.archiveRemoved",{worktreePath:H8(Z,X)})}finally{q.close()}}async function ay(J){let[z,...Y]=J;if(z==="setup"){await oy(Y);return}if(z===iy){try{await $y()}catch{}return}try{if(!z||!Oq(z))return;let Z=await _D(),G=ny(Y,"--task-id"),X=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),q;for(let j of sD())if(q=j.activityDetailFromPayload(z,Z),q)break;let H=await Qz();if(!H)return;try{await H.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function _y(){return _1.map((J)=>nB(J)).filter((J)=>J.supportsWorktreeSync())}function sD(){return _1.map((J)=>nB(J)).filter((J)=>J.supportsHooks())}function tD(){return $D(cy(),".claude","settings.json")}function py(J){if(!J||J==="off")return;if(J==="global")return tD();if(J.startsWith("repo:"))return $D(H8(J.slice(5)),".claude","settings.json");return J}async function ry(){try{for(let J of sD()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await eD()}catch{}}async function eD(){let J=_y();if(J.length===0)return;let z=S1(lD),Y=new Set([tD()]),Z=py(z);if(Z)Y.add(Z);for(let G of J)for(let X of Y)await G.removeWorktreeSyncHook(X);if(z!=="off")zJ(lD,"off")}async function oy(J){await eD(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
|
|
260
|
+
`))}var dy=500,iy="worktree-created",lD="externalWorktreeSync";var B8=k(()=>{CJ();iB();Aq();C1();p1()});function zL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=sy.get(J))!==null&&z!==void 0?z:J}var f8,sy,JL;var YL=k(()=>{sy=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]]),JL=(f8=String.fromCodePoint)!==null&&f8!==void 0?f8:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function ZL(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let q=z.charCodeAt(G),H=z.charCodeAt(G+1);Z[X++]=q|H<<8}return Z}var GL;var XL=k(()=>{GL=ZL("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 AJ;var QL=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"})(AJ||(AJ={}))});function W8(J){return J>=d1.ZERO&&J<=d1.NINE}function ty(J){return J>=d1.UPPER_A&&J<=d1.UPPER_F||J>=d1.LOWER_A&&J<=d1.LOWER_F}function ey(J){return J>=d1.UPPER_A&&J<=d1.UPPER_Z||J>=d1.LOWER_A&&J<=d1.LOWER_Z||W8(J)}function JT(J){return J===d1.EQUALS||ey(J)}class V8{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=qJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=qJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case qJ.EntityStart:{if(J.charCodeAt(z)===d1.NUM)return this.state=qJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=qJ.NamedEntity,this.stateNamedEntity(J,z)}case qJ.NumericStart:return this.stateNumericStart(J,z);case qJ.NumericDecimal:return this.stateNumericDecimal(J,z);case qJ.NumericHex:return this.stateNumericHex(J,z);case qJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|qL)===d1.LOWER_X)return this.state=qJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=qJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(W8(Y)||ty(Y)){let Z=Y<=d1.NINE?Y-d1.ZERO:(Y|qL)-d1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(W8(Y))this.result=this.result*10+(Y-d1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===d1.SEMI)this.consumed+=1;else if(this.decodeMode===DY.Strict)return 0;if(this.emitCodePoint(zL(this.result),this.consumed),this.errors){if(J!==d1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],G=(Z&AJ.VALUE_LENGTH)>>14;while(z<J.length){if(G===0&&(Z&AJ.FLAG13)!==0){let q=(Z&AJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Z&AJ.JUMP_TABLE;if(J.charCodeAt(z)!==H)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(z>=J.length)return-1;let H=this.runConsumed-1,j=Y[this.treeIndex+1+(H>>1)],B=H%2===0?j&255:j>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),Z=Y[this.treeIndex],G=(Z&AJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===d1.SEMI&&G!==0&&(Z&AJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=YT(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===DY.Attribute&&(G===0||JT(X))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],G=(Z&AJ.VALUE_LENGTH)>>14,G!==0){if(X===d1.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==DY.Strict&&(Z&AJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&AJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(AJ.VALUE_LENGTH|AJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case qJ.NamedEntity:return this.result!==0&&(this.decodeMode!==DY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case qJ.NumericDecimal:return this.emitNumericEntity(0,2);case qJ.NumericHex:return this.emitNumericEntity(0,3);case qJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case qJ.EntityStart:return 0}}}function zT(J){let z="",Y=new V8(J,(Z)=>z+=JL(Z));return function(G,X){let q=0,H=0;while((H=G.indexOf("&",H))>=0){z+=G.slice(q,H),Y.startEntity(X);let B=Y.write(G,H+1);if(B<0){q=H+Y.end();break}q=H+B,H=B===0?q+1:q}let j=z+G.slice(q);return z="",j}}function YT(J,z,Y,Z){let G=(z&AJ.BRANCH_LENGTH)>>7,X=z&AJ.JUMP_TABLE;if(G===0)return X!==0&&Z===X?Y:-1;if(X){let B=Z-X;return B<0||B>=G?-1:J[Y+B]-1}let q=G+1>>1,H=0,j=G-1;while(H<=j){let B=H+j>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<Z)H=B+1;else if(K>Z)j=B-1;else return J[Y+q+B]}return-1}function EZ(J,z=DY.Legacy){return ZT(J,z)}var d1,qL=32,qJ,DY,ZT;var HL=k(()=>{YL();XL();QL();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(d1||(d1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(qJ||(qJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(DY||(DY={}));ZT=zT(GL)});var jL,BL;var WL=k(()=>{HL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(jL||(jL={}));(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"})(BL||(BL={}))});import{CliRenderer as XT,createCliRenderer as QT,engine as qT}from"@opentui/core";import{createTestRenderer as ca}from"@opentui/core/testing";import{ASCIIFontRenderable as HT,BoxRenderable as jT,CodeRenderable as BT,DiffRenderable as fT,InputRenderable as WT,LineNumberRenderable as VT,MarkdownRenderable as KT,ScrollBoxRenderable as UT,SelectRenderable as DT,TabSelectRenderable as LT,TextareaRenderable as MT,TextAttributes as K8,TextNodeRenderable as FT,TextRenderable as OT}from"@opentui/core";import{engine as ia,Timeline as la}from"@opentui/core";import{BaseRenderable as FL,createTextAttributes as RT,InputRenderable as U8,InputRenderableEvents as WQ,isTextNodeRenderable as M8,parseColor as VL,Renderable as gT,RootTextNodeRenderable as NT,ScrollBoxRenderable as CT,SelectRenderable as KL,SelectRenderableEvents as D8,TabSelectRenderable as UL,TabSelectRenderableEvents as L8,TextNodeRenderable as kT,TextRenderable as OL}from"@opentui/core";import{BaseRenderable as wT,isTextNodeRenderable as PT,TextNodeRenderable as hT,TextRenderable as vT,Yoga as LL}from"@opentui/core";import{BoxRenderable as J_,RootRenderable as z_}from"@opentui/core";import{TimeToFirstDrawRenderable as nT}from"@opentui/core";import{createSlotRegistry as G_}from"@opentui/core";function IT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:G,insertNode:X,removeNode:q,setProperty:H,getParentNode:j,getFirstChild:B,getNextSibling:V}){function f(N,g,F,w){if(F!==void 0&&!w)w=[];if(typeof g!=="function")return K(N,g,w,F);wz((l)=>K(N,g(),l,F),w)}function K(N,g,F,w,l){while(typeof F==="function")F=F();if(g===F)return F;let d=typeof g,s=w!==void 0;if(d==="string"||d==="number"){if(d==="number")g=g.toString();if(s){let P=F[0];if(P&&Z(P))G(P,g);else P=z(g);F=A(N,F,w,P)}else if(F!==""&&typeof F==="string")G(B(N),F=g);else A(N,F,w,z(g)),F=g}else if(g==null||d==="boolean")F=A(N,F,w);else if(d==="function")return wz(()=>{let P=g();while(typeof P==="function")P=P();F=K(N,P,F,w)}),()=>F;else if(Array.isArray(g)){let P=[];if(L(P,g,l))return wz(()=>F=K(N,P,F,w,!0)),()=>F;if(P.length===0){let J0=A(N,F,w);if(s)return F=J0}else if(Array.isArray(F))if(F.length===0)C(N,P,w);else O(N,F,P);else if(F==null||F==="")C(N,P);else O(N,s&&F||[B(N)],P);F=P}else{if(Array.isArray(F)){if(s)return F=A(N,F,w,g);A(N,F,null,g)}else if(F==null||F===""||!B(N))X(N,g);else E(N,g,B(N));F=g}return F}function L(N,g,F){let w=!1;for(let l=0,d=g.length;l<d;l++){let s=g[l],P;if(s==null||s===!0||s===!1);else if(Array.isArray(s))w=L(N,s)||w;else if((P=typeof s)==="string"||P==="number")N.push(z(s));else if(P==="function")if(F){while(typeof s==="function")s=s();w=L(N,Array.isArray(s)?s:[s])||w}else N.push(s),w=!0;else N.push(s)}return w}function O(N,g,F){let w=F.length,l=g.length,d=w,s=0,P=0,J0=V(g[l-1]),q0=null;while(s<l||P<d){if(g[s]===F[P]){s++,P++;continue}while(g[l-1]===F[d-1])l--,d--;if(l===s){let D0=d<w?P?V(F[P-1]):F[d-P]:J0;while(P<d)X(N,F[P++],D0)}else if(d===P)while(s<l){if(!q0||!q0.has(g[s]))q(N,g[s]);s++}else if(g[s]===F[d-1]&&F[P]===g[l-1]){let D0=V(g[--l]);X(N,F[P++],V(g[s++])),X(N,F[--d],D0),g[l]=F[d]}else{if(!q0){q0=new Map;let K0=P;while(K0<d)q0.set(F[K0],K0++)}let D0=q0.get(g[s]);if(D0!=null)if(P<D0&&D0<d){let K0=s,T0=1,S;while(++K0<l&&K0<d){if((S=q0.get(g[K0]))==null||S!==D0+T0)break;T0++}if(T0>D0-P){let a=g[s];while(P<D0)X(N,F[P++],a)}else E(N,F[P++],g[s++])}else s++;else q(N,g[s++])}}}function A(N,g,F,w){if(F===void 0){let d;while(d=B(N))q(N,d);return w&&X(N,w),w??""}let l=w||Y();if(g.length){let d=!1;for(let s=g.length-1;s>=0;s--){let P=g[s];if(l!==P){let J0=j(P)===N;if(!d&&!s)J0?E(N,l,P):X(N,l,F);else J0&&q(N,P)}else d=!0}}else X(N,l,F);return[l]}function C(N,g,F){for(let w=0,l=g.length;w<l;w++)X(N,g[w],F)}function E(N,g,F){X(N,g,F),q(N,F)}function y(N,g,F={},w){if(g||(g={}),!w)wz(()=>F.children=K(N,g.children,F.children));return wz(()=>g.ref&&g.ref(N)),wz(()=>{for(let l in g){if(l==="children"||l==="ref")continue;let d=g[l];if(d===F[l])continue;H(N,l,d,F[l]),F[l]=d}}),F}return{render(N,g){let F;return BZ((w)=>{F=w,f(g,N())}),F},insert:f,spread(N,g,F){if(typeof g==="function")wz((w)=>y(N,g(),w,F));else y(N,g,void 0,F)},createElement:J,createTextNode:z,insertNode:X,setProp(N,g,F,w){return H(N,g,F,w),F},mergeProps:uq,effect:wz,memo:bT,createComponent:ZK,use(N,g,F){return e1(()=>N(g,F))}}}function ST(J){let z=IT(J);return z.mergeProps=uq,z}function g8(J){if(!Hj.has(J))Hj.set(J,0);let z=Hj.get(J)+1;return Hj.set(J,z),`${J}-${z}`}function yT(J,z,Y){if(HJ("Inserting node:",XJ(z),"into parent:",XJ(J),"with anchor:",XJ(Y),z instanceof iG),z instanceof VQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof VQ)Y=Y.getSlotChild(J);if(M8(z)){if(!(J instanceof OL)&&!M8(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof FL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=F8(J),G=Z.findIndex((X)=>X.id===Y.id);if(G===-1)HJ("[INSERT]","Could not find anchor",XJ(J),XJ(Y),"[children]",...Z.map((X)=>X.id));J.add(z,G)}function TT(J,z){if(HJ("Removing node:",XJ(z),"from parent:",XJ(J)),z instanceof VQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof FL&&!z.parent){z.destroyRecursively();return}})}function xT(J){HJ("Creating text node:",J);let z=g8("text-node");if(typeof J==="number")J=J.toString();return iG.fromString(EZ(J),{id:z})}function uT(){let J=g8("slot-node");return HJ("Creating slot node",J),new VQ(J)}function DL(J){HJ("Getting parent of node:",XJ(J));let z=J.parent??void 0;if(z instanceof NT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof CT&&Y.content===z)z=Y;return z}function cT(J){Object.assign(bL,J)}function dT(){return bL}var R8,jJ=()=>{let J=cJ(R8);if(!J)throw Error("No renderer found");return J},AT=(J)=>{let z=jJ();ZJ(()=>{z.on("resize",J)}),b1(()=>{z.off("resize",J)})},az=()=>{let J=jJ(),[z,Y]=p({width:J.width,height:J.height});return AT((G,X)=>{Y({width:G,height:X})}),z},ML=(J)=>{let Y=jJ().keyInput;ZJ(()=>{Y.on("paste",J)}),b1(()=>{Y.off("paste",J)})},bT=(J)=>U0(()=>J()),Hj,HJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},iG,XJ=(J)=>{if(!J)return;return J.id},F8=(J)=>{let z;if(J instanceof OL)z=J.getTextChildren();else z=J.getChildren();return z},ET,x,N0,I,W,u0,D,U,sa,Q,AL,qz,N8,RL,gL,VQ,KQ,jj,O8,A8,NL,CL,kL,mT,bL,iT=(J,z)=>{let Y,Z=!1,G=!1,X=!0,q=!1,H=J.destroy.bind(J),j=()=>{if(G)return;if(!Y){Z=!0;return}G=!0,Y()};J.once("destroy",j),J.destroy=()=>{if(X){q=!0;return}H()};try{Y=ET(()=>I(R8.Provider,{get value(){return J},get children(){return I(z,{})}}),J.root)}finally{X=!1,J.destroy=H}if(Z)j();if(q)H()},IL=async(J,z={})=>{let Y=z instanceof XT?z:await QT({...z,onDestroy:()=>{z.onDestroy?.()}});qT.attach(Y),iT(Y,J)};var v=k(()=>{V1();WL();V1();V1();V1();R8=Pz();Hj=new Map;iG=class iG extends kT{static fromString(J,z={}){let Y=new iG(z);return Y.add(J),Y}};({render:ET,effect:x,memo:N0,createComponent:I,createElement:W,createTextNode:u0,insertNode:D,insert:U,spread:sa,setProp:Q,mergeProps:AL,use:qz}=ST({createElement(J){HJ("Creating element:",J);let z=g8(J),Y=cJ(R8);if(!Y)throw Error("No renderer found");let Z=dT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let G=new Z[J](Y,{id:z});return HJ("Element created with id:",z),G},createTextNode:xT,createSlotNode:uT,replaceText(J,z){if(HJ("Replacing text:",z,"in node:",XJ(J)),!(J instanceof iG))return;J.replace(EZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let G=z.slice(3);if(Y)J.on(G,Y);if(Z)J.off(G,Z);return}if(M8(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=RT(Y),J.fg=Y.fg?VL(Y.fg):J.fg,J.bg=Y.bg?VL(Y.bg):J.bg;return}return}switch(z){case"id":HJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof gT))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof KL)G=D8.SELECTION_CHANGED;else if(J instanceof UL)G=L8.SELECTION_CHANGED;else if(J instanceof U8)G=WQ.CHANGE;if(!G)break;if(Y)J.on(G,Y);if(Z)J.off(G,Z);break;case"onInput":if(J instanceof U8){if(Y)J.on(WQ.INPUT,Y);if(Z)J.off(WQ.INPUT,Z)}break;case"onSubmit":if(J instanceof U8){if(Y)J.on(WQ.ENTER,Y);if(Z)J.off(WQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof KL){if(Y)J.on(D8.ITEM_SELECTED,Y);if(Z)J.off(D8.ITEM_SELECTED,Z)}else if(J instanceof UL){if(Y)J.on(L8.ITEM_SELECTED,Y);if(Z)J.off(L8.ITEM_SELECTED,Z)}break;case"style":for(let X in Y){let q=Y[X];if(Z!==void 0&&q===Z[X])continue;J[X]=q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=EZ(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof iG},insertNode:yT,removeNode:TT,getParentNode:DL,getFirstChild(J){HJ("Getting first child of node:",XJ(J));let z=F8(J)[0];if(!z){HJ("No first child found for node:",XJ(J));return}return HJ("First child found:",XJ(z),"for node:",XJ(J)),z},getNextSibling(J){HJ("Getting next sibling of node:",XJ(J));let z=DL(J);if(!z){HJ("No parent found for node:",XJ(J));return}let Y=F8(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){HJ("No next sibling found for node:",XJ(J));return}let G=Y[Z+1];if(!G){HJ("Next sibling is null for node:",XJ(J));return}return HJ("Next sibling found:",XJ(G),"for node:",XJ(J)),G}}));N8=class N8 extends wT{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}};RL=class RL extends hT{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()}};gL=class gL extends N8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=LL.default.Node.create(),this.yogaNode.setDisplay(LL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};VQ=class VQ extends N8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(PT(J)||J instanceof vT){if(!this.textNode)this.textNode=new RL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new gL(`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()}};KQ=class KQ extends FT{_ctx;constructor(J,z){super(z);this._ctx=J}};jj=class jj extends KQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|K8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|K8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|K8.UNDERLINE}};O8=class O8 extends jj{constructor(J){super(J,"b")}};A8=class A8 extends jj{constructor(J){super(J,"i")}};NL=class NL extends jj{constructor(J){super(J,"u")}};CL=class CL extends KQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
261
|
+
`)}};kL=class kL extends KQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};mT={box:jT,text:OT,input:WT,select:DT,textarea:MT,ascii_font:HT,tab_select:LT,scrollbox:UT,code:BT,diff:fT,line_number:VT,markdown:KT,span:KQ,strong:O8,b:O8,em:A8,i:A8,u:NL,br:CL,a:kL},bL={...mT};cT({time_to_first_draw:nT})});function LY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function lT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(Z,{added:X.added,deleted:X.deleted})}return Y}function $T(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function aT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||!$z(Z,G))return!1}return!0}function _T(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(Z,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function pT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||G.mtimeMs!==Z.mtimeMs||G.completionId!==Z.completionId||G.completionAt!==Z.completionAt)return!1}return!0}class RJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=p([]),[G,X]=p(null),[q,H]=p(null),[j,B]=p(null),[V,f]=p(new Map),[K,L]=p(new Map),[O,A]=p(null),[C,E]=p(null),[y,N]=p(null),[g,F]=p(null),[w,l]=p("online");this.tasksAcc=Y,this.setTasks=(d)=>Z(()=>d),this.activeTaskAcc=G,this.setActiveTaskSig=(d)=>X(()=>d),this.updateAcc=q,this.setUpdateSig=(d)=>H(()=>d),this.daemonVersionAcc=j,this.setDaemonVersionSig=(d)=>B(()=>d),this.engineStateAcc=V,this.setEngineStateSig=(d)=>f(()=>d),this.taskJobsAcc=K,this.setTaskJobsSig=(d)=>L(()=>d),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(d)=>A(()=>d),this.transcriptActivityAcc=C,this.setTranscriptActivitySig=(d)=>E(()=>d),this.uiPrefsAcc=y,this.setUiPrefsSig=(d)=>N(()=>d),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(d)=>F(()=>d),this.connectionStateAcc=w,this.setConnectionState=(d)=>l(()=>d),this.ensureReachable=z.ensureReachable??PG,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(d)=>this.handleEvent(d.name,d.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")ZY("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),ZY("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)YJ("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:sJ,minProtocolVersion:CY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:sJ,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!pQ({localVersion:sJ,localMin:CY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${sJ} (min v${CY}). 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(UQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),ZY("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>OV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return BZ((Y)=>{return d0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return UQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return UQ(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 UQ(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(UQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else YJ("orch",`dropped task.snapshot event: tasks is not an array (got ${LY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){YJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${LY(Y?.taskId)}, state=${LY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){YJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${LY(Y?.taskId)}, kind=${LY(Y?.kind)})`);return}let Z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(Z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&Z.has(Y.taskId)){let G=new Map(Z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(J==="worktree.changes"){let Y=lT(z);if(!Y){YJ("orch",`dropped worktree.changes event: malformed changes payload (${LY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&aT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=_T(z);if(!Y){YJ("orch",`dropped transcript.activity event: malformed activity payload (${LY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&pT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=$T(z);if(!Y){let Z=z?.theme;YJ("orch",`dropped ui-prefs event: theme must be a string (got ${LY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){YJ("orch",`dropped keybindings event: rev must be a number (got ${LY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setTaskJobsSig(Z)}}function UQ(J){return{id:MX(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 pY=k(()=>{ZZ();CJ();zZ();V1();uG();zz();NJ()});function TL(J){let z=J[Mz];if(!z){if(Object.defineProperty(J,Mz,{value:z=new Proxy(J,sT)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),G=Object.getPrototypeOf(J),X=G!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&G!==Object.prototype;if(X){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(Z,q)}for(let q=0,H=Y.length;q<H;q++){let j=Y[q];if(X&&j==="constructor")continue;if(Z[j].get)Object.defineProperty(J,j,{configurable:!0,enumerable:Z[j].enumerable,get:Z[j].get.bind(z)})}}}return z}function Bj(J){let z;return J!=null&&typeof J==="object"&&(J[Mz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function LQ(J,z=new Set){let Y,Z,G,X;if(Y=J!=null&&J[C8])return Y;if(!Bj(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let q=0,H=J.length;q<H;q++)if(G=J[q],(Z=LQ(G,z))!==G)J[q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let j=0,B=q.length;j<B;j++){if(X=q[j],H[X].get)continue;if(G=J[X],(Z=LQ(G,z))!==G)J[X]=Z}}return J}function fj(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function MQ(J,z,Y){if(J[z])return J[z];let[Z,G]=p(Y,{equals:!1,internal:!0});return Z.$=G,J[z]=Z}function rT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Mz||z===lG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Mz][z],Y}function xL(J){xq()&&MQ(fj(J,lG),yL)()}function oT(J){return xL(J),Reflect.ownKeys(J)}function Wj(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let G=J[z],X=J.length;if(SL.onStoreNodeUpdate&&SL.onStoreNodeUpdate(J,z,Y,G),Y===void 0){if(delete J[z],J[MY]&&J[MY][z]&&G!==void 0)J[MY][z].$()}else if(J[z]=Y,J[MY]&&J[MY][z]&&G===void 0)J[MY][z].$();let q=fj(J,lG),H;if(H=MQ(q,z,G))H.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let j=J.length;j<X;j++)(H=q[j])&&H.$();(H=MQ(q,"length",X))&&H.$(J.length)}(H=q[yL])&&H.$()}function uL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(EL(G))continue;Wj(J,G,z[G])}}function EL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function tT(J,z){if(typeof z==="function")z=z(J);if(z=LQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let G=z[Y];if(J[Y]!==G)Wj(J,Y,G)}Wj(J,"length",Z)}else uL(J,z)}function DQ(J,z,Y=[]){let Z,G=J;if(z.length>1){Z=z.shift();let q=typeof Z,H=Array.isArray(J);if(q==="string"&&(Z==="__proto__"||z.length>1&&EL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let j=0;j<Z.length;j++)DQ(J,[Z[j]].concat(z),Y);return}else if(H&&q==="function"){for(let j=0;j<J.length;j++)if(Z(J[j],j))DQ(J,[j].concat(z),Y);return}else if(H&&q==="object"){let{from:j=0,to:B=J.length-1,by:V=1}=Z;for(let f=j;f<=B;f+=V)DQ(J,[f].concat(z),Y);return}else if(z.length>1){DQ(J[Z],z,[Z].concat(Y));return}G=J[Z],Y=[Z].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(Z===void 0&&X==null)return;if(X=LQ(X),Z===void 0||Bj(G)&&Bj(X)&&!Array.isArray(X))uL(G,X);else Wj(J,Z,X)}function _z(...[J,z]){let Y=LQ(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=TL(Y);XK.registerGraph({value:Y,name:z&&z.name});function X(...q){Tq(()=>{Z&&q.length===1?tT(Y,q[0]):DQ(Y,q)})}return[G,X]}var C8,lG,MY,yL,SL,sT,U_;var $G=k(()=>{V1();C8=Symbol("store-raw"),lG=Symbol("store-node"),MY=Symbol("store-has"),yL=Symbol("store-self"),SL={onStoreNodeUpdate:null};sT={get(J,z,Y){if(z===C8)return J;if(z===Mz)return Y;if(z===Sq)return xL(J),Y;let Z=fj(J,lG),G=Z[z],X=G?G():J[z];if(z===lG||z===MY||z==="__proto__")return X;if(!G){let q=Object.getOwnPropertyDescriptor(J,z);if(xq()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))X=MQ(Z,z,X)()}return Bj(X)?TL(X):X},has(J,z){if(z===C8||z===Mz||z===Sq||z===lG||z===MY||z==="__proto__")return!0;return xq()&&MQ(fj(J,MY),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:oT,getOwnPropertyDescriptor:rT};U_=Symbol("store-root")});function Vj(J){let z=Pz();return{provider:(Y)=>{let Z=J.init(Y);return I(z0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return I(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=cJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var k8=k(()=>{v();v();V1()});import{RGBA as wZ}from"@opentui/core";function Jx(){return Object.keys(VJ.themes)}function FQ(J){return Boolean(VJ.themes[J])}function I8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return PZ("themes",{...VJ.themes,[J]:z}),!0}function b8(J,z="dark"){let Y=J.defs??{};function Z(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return wZ.fromInts(0,0,0,0);if(j.startsWith("#"))return wZ.fromHex(j);if(B.includes(j))return wZ.fromInts(0,0,0);let V=Y[j]??J.theme[j];if(V===void 0)return wZ.fromInts(0,0,0);return Z(V,[...B,j])}return Z(j[z],B)}let G={};for(let[j,B]of Object.entries(J.theme))G[j]=Z(B);let X=G.text??wZ.fromHex("#ffffff"),q=G.background??wZ.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:q,backgroundPanel:G.backgroundPanel??q,backgroundElement:G.backgroundElement??q,backgroundMenu:G.backgroundMenu??G.backgroundElement??q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??q,diffRemovedBg:G.diffRemovedBg??q,selectedListItemText:G.selectedListItemText??q},...G}}var eT,hZ,VJ,PZ,h0,wL;var v1=k(()=>{v();V1();$G();k8();oq();sq();tq();eq();JH();zH();YH();eT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:FG,"osaka-jade":MG},hZ=["primary","success","info"],[VJ,PZ]=_z({themes:{...eT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:h0,provider:wL}=Vj({name:"Theme",init:(J)=>{if(J.mode)PZ("mode",J.mode);if(J.theme&&FQ(J.theme))PZ("active",J.theme);let z=jJ(),Y=U0(()=>{let G=VJ.themes[VJ.active];if(G)return b8(G,VJ.mode);let X=VJ.themes.claude??VJ.themes.opencode??Object.values(VJ.themes)[0];if(!X)return b8({theme:{background:"#000000",text:"#ffffff"}},VJ.mode);return b8(X,VJ.mode)}),Z=U0(()=>{let G=Y(),X=G[VJ.focusAccent]??G.primary,q={...G,focusAccent:X};if(!VJ.transparentBackground)return q;let H=wZ.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return d0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(G,X){let q=Z();return q[X]??q.text}}),get selected(){return VJ.active},get transparentBackground(){return VJ.transparentBackground},get focusAccent(){return VJ.focusAccent},mode(){return VJ.mode},set(G){if(!FQ(G))return!1;return PZ("active",G),!0},setMode(G){PZ("mode",G)},setTransparentBackground(G){PZ("transparentBackground",G)},setFocusAccent(G){PZ("focusAccent",G)},all(){return Jx()},has(G){return FQ(G)}}}}))});var PL,hL;var vL=k(()=>{PL={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"}},hL={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 mL,cL;var dL=k(()=>{mL={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"}},cL={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 nL,iL;var lL=k(()=>{nL={title:"kobe \u2014 keybindings",esc:"esc"},iL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var $L,aL;var _L=k(()=>{$L={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",hint:"[ ] session \xB7 j/k scroll \xB7 \u23CE expand",hintExpanded:"[ ] session \xB7 j/k scroll \xB7 \u23CE collapse",role:{user:"USER",assistant:"ASSISTANT",system:"SYSTEM"},thinking:"thinking"},aL={empty:"\u6B64\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u5386\u53F2\u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",sessionLabel:"\u4F1A\u8BDD",archivedTag:"\u5DF2\u5F52\u6863",hint:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u5C55\u5F00",hintExpanded:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u6536\u8D77",role:{user:"\u7528\u6237",assistant:"\u52A9\u624B",system:"\u7CFB\u7EDF"},thinking:"\u601D\u8003"}});var pL,rL;var oL=k(()=>{pL={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Reorder task (Shift+M, then j/k)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.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)"}},rL={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u91CD\u65B0\u6392\u5E8F\u4EFB\u52A1\uFF08Shift+M\uFF0C\u7136\u540E\u6309 j/k\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.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 sL,tL;var eL=k(()=>{sL={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"}},tL={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 JM,zM;var YM=k(()=>{JM={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},zM={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 ZM,GM;var XM=k(()=>{ZM={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 ctrl+v attach \xB7 ctrl+x unattach \xB7 esc cancel"},GM={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 ctrl+v \u9644\u52A0\u526A\u8D34\u677F \xB7 ctrl+x \u79FB\u9664\u9644\u4EF6 \xB7 esc \u53D6\u6D88"}});var QM,qM;var HM=k(()=>{QM={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created (default `~/.kobe/worktrees`). Each repo keeps its own `<repo>-<hash>` subfolder underneath. Applies to new tasks only \u2014 existing worktrees stay where they are. Remote projects are unaffected. enter to edit; leave blank for the default.",worktreeBase:"worktree base: {path}",worktreeBaseDefault:"(default \u2014 enter to change)",worktreeBaseTitle:"Worktree location (blank = default ~/.kobe/worktrees)",worktreeBaseField:"path"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},qM={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\uFF08\u9ED8\u8BA4 `~/.kobe/worktrees`\uFF09\u3002\u6BCF\u4E2A\u4ED3\u5E93\u5728\u5176\u4E0B\u4FDD\u7559\u81EA\u5DF1\u7684 `<\u4ED3\u5E93\u540D>-<\u54C8\u5E0C>` \u5B50\u76EE\u5F55\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u2014\u2014\u5DF2\u6709\u5DE5\u4F5C\u6811\u4FDD\u6301\u539F\u4F4D\u3002\u8FDC\u7A0B\u9879\u76EE\u4E0D\u53D7\u5F71\u54CD\u3002enter \u7F16\u8F91\uFF1B\u7559\u7A7A\u5219\u7528\u9ED8\u8BA4\u503C\u3002",worktreeBase:"\u5DE5\u4F5C\u6811\u6839\u76EE\u5F55: {path}",worktreeBaseDefault:"(\u9ED8\u8BA4 \u2014 enter \u4FEE\u6539)",worktreeBaseTitle:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4 ~/.kobe/worktrees\uFF09",worktreeBaseField:"\u8DEF\u5F84"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var jM,BM;var fM=k(()=>{jM={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}"}},BM={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 WM,VM;var KM=k(()=>{WM={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`"}},VM={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 OQ(J){return typeof J==="string"&&aG.some((z)=>z.id===J)}var zx,Yx,aG,_G,pG="en";var rG=k(()=>{vL();dL();lL();_L();oL();eL();YM();XM();HM();fM();KM();zx={settings:QM,tasks:jM,files:mL,newTask:sL,ops:JM,update:WM,quickTask:ZM,help:nL,history:$L,common:PL,keys:pL},Yx={settings:qM,tasks:BM,files:cL,newTask:tL,ops:zM,update:VM,quickTask:GM,help:iL,history:aL,common:hL,keys:rL},aG=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],_G={en:zx,zh:Yx}});function AQ(J){if(_G[J])Zx("lang",J)}function y8(){return S8.lang}function UM(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function Gx(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function M(J,z){let Y=S8.lang,Z=UM(_G[Y],J)??UM(_G.en,J)??J;return Gx(Z,z)}function T8(J,z){let Y=S8.lang,Z=(G)=>{return G.keys[J]?.[z]};return Z(_G[Y])??Z(_G.en)??z}var S8,Zx;var QJ=k(()=>{$G();rG();rG();[S8,Zx]=_z({lang:pG})});import{randomBytes as MM}from"crypto";import{existsSync as x8,mkdirSync as Xx,writeFileSync as Qx}from"fs";import{isAbsolute as qx,join as Hx}from"path";function fx(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function Wx(J){let Y=`__DOUBLE_BACKSLASH_${MM(8).toString("hex")}__`;return J.replace(/\\\\/g,Y).replace(/\\(.)/g,"$1").replaceAll(Y,"\\")}function FM(J,z=x8){let Y=Wx(fx(J.trim()));if(!jx.test(Y))return null;if(!qx(Y))return null;return z(Y)?Y:null}function OM(J,z=x8){let Y=J.split(`
|
|
262
|
+
`).map((G)=>G.trim()).filter((G)=>G.length>0);if(Y.length===0)return null;let Z=[];for(let G of Y){let X=FM(G,z);if(!X)return null;Z.push(X)}return Z}function u8(J,z){return Bx.test(J)?`pdf[${z}]`:`images[${z}]`}function AM(J,z){if(z.length===0)return J;let Y=z.map((Z,G)=>`${u8(Z,G)}: ${Z}`).join(`
|
|
263
|
+
`);return`${J}
|
|
264
|
+
|
|
265
|
+
${Y}`}async function DM(J){try{let z=Bun.spawn(J,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Y=await new Response(z.stdout).text();return await z.exited===0?Y:null}catch{return null}}async function RM(){if(process.platform==="darwin"){let J=await DM(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),z=J?FM(J):null;if(z)return z;let Y=LM();return await DM(["osascript","-e","set png_data to (the clipboard as \xABclass PNGf\xBB)","-e",`set fp to open for access POSIX file "${Y}" with write permission`,"-e","write png_data to fp","-e","close access fp"])!==null&&x8(Y)?Y:null}if(process.platform==="linux"){for(let J of[["wl-paste","--type","image/png"],["xclip","-selection","clipboard","-t","image/png","-o"]])try{let z=Bun.spawn(J,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Y=new Uint8Array(await new Response(z.stdout).arrayBuffer());if(await z.exited===0&&Y.length>0){let Z=LM();return Qx(Z,Y),Z}}catch{}return null}return null}function LM(){let J=JV();Xx(J,{recursive:!0});let z=new Date().toISOString().slice(0,10).replaceAll("-","");return Hx(J,`paste-${z}-${MM(4).toString("hex")}.png`)}var jx,Bx;var E8=k(()=>{r1();jx=/\.(png|jpe?g|gif|webp|pdf)$/i,Bx=/\.pdf$/i});function Vx(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let G=`${Z.join("+")}+`;return z.map((X)=>G+X)}function P8(J,z){if(z.defaultPrevented)return!1;if(w8)return!1;let Y=J.slice(),Z=Vx(z);w8=!0;try{for(let G=Y.length-1;G>=0;G--){let X=Y[G];if(!X)continue;let q=X.config();if(q.enabled===!1)continue;let H=q.bindings.find((j)=>Z.includes(j.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{w8=!1}}var w8=!1;function Ux(){if(h8)return;let J=jJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");h8=J.keyInput,gM=(z)=>{P8(Kj,z)},h8.on("keypress",gM)}function U1(J){Ux();let z=Kx++,Y={config:J,id:z};d0(()=>{J()}),Kj.push(Y),b1(()=>{let Z=Kj.findIndex((G)=>G.id===z);if(Z>=0)Kj.splice(Z,1)})}var Kx=1,Kj,h8=null,gM=null;var kJ=k(()=>{v();V1();Kj=[]});function Uj(){let J=new Set;function z(Z,G){let X=setTimeout(()=>{J.delete(X),Z()},G);return J.add(X),X}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return b1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var v8=k(()=>{V1()});import{RGBA as NM}from"@opentui/core";function Mx(J){let z=az(),Y=h0(),{theme:Z}=Y,G=jJ(),X=!1,q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,j=()=>Math.max(8,z().height-H*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),Q(B,"onMouseDown",()=>{X=!!G?.getSelection()}),Q(B,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),Q(B,"alignItems","center"),Q(B,"justifyContent","center"),Q(B,"position","absolute"),Q(B,"zIndex",3000),Q(B,"left",0),Q(B,"top",0),Q(V,"onMouseUp",(f)=>{X=!1,f.stopPropagation()}),Q(V,"flexShrink",1),Q(V,"flexGrow",0),Q(V,"paddingTop",1),U(V,()=>J.children),x((f)=>{var K=z().width,L=z().height,O=Y.transparentBackground?Lx:Dx,A=q(),C=z().width-2,E=j(),y=Z.backgroundDialog;return K!==f.e&&(f.e=Q(B,"width",K,f.e)),L!==f.t&&(f.t=Q(B,"height",L,f.t)),O!==f.a&&(f.a=Q(B,"backgroundColor",O,f.a)),A!==f.o&&(f.o=Q(V,"width",A,f.o)),C!==f.i&&(f.i=Q(V,"maxWidth",C,f.i)),E!==f.n&&(f.n=Q(V,"maxHeight",E,f.n)),y!==f.s&&(f.s=Q(V,"backgroundColor",y,f.s)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function Fx(){let[J,z]=_z({stack:[],size:"medium"}),Y=jJ(),Z=null,G=Uj();function X(){G.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function H(B){for(let V of B.getChildren()){if(V===Z)return!0;if(H(V))return!0}return!1}let j=Y?.root;if(!j)return;if(!H(j))return;Z.focus()},1)}let q=()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()};return U1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:q},{key:"ctrl+c",cmd:q}]})),{clear(){for(let H of J.stack)H.onClose?.();Tq(()=>{z("size","medium"),z("stack",[])}),X()},replace(H,j){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let B of J.stack)B.onClose?.();z("size","medium"),z("stack",[{element:H,onClose:j}])},push(H,j){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:H,onClose:j}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(H){z("size",H)}}}function kM(J){let z=Fx();return I(CM.Provider,{value:z,get children(){return[N0(()=>J.children),(()=>{var Y=W("box");return Q(Y,"position","absolute"),Q(Y,"zIndex",3000),U(Y,I(z0,{get when(){return z.stack.length},get children(){return I(Mx,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function i1(){let J=cJ(CM);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var Dx,Lx,CM;var aJ=k(()=>{v();v();v();v();v();v();v();v();V1();$G();v1();kJ();v8();Dx=NM.fromInts(0,0,0,128),Lx=NM.fromInts(0,0,0,64);CM=Pz()});import{spawnSync as m8}from"child_process";import*as IM from"fs";function bM(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 SM(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=IM.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(m8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return bM(z)}catch{return bM(z)}return null}function RQ(J){if(!J)return null;try{let z=m8("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 yM(J){if(!J)return[];try{let z=m8("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(`
|
|
266
|
+
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let G=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,X=G(Y),q=G(Z);if(X!==q)return X-q;return Y.localeCompare(Z)})}catch{return[]}}var Tz="main";var Dj=()=>{};import*as TM from"fs";import*as Lj from"os";function KJ(J){if(J==="~")return Lj.homedir();if(J.startsWith("~/"))return Lj.homedir()+J.slice(1);return J}function c8(J){if(!J)return{base:"",filter:""};let Y=KJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function d8(J){if(!J)return[];try{let z=TM.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,G)=>Z.localeCompare(G))}catch{return[]}}function n8(J,z){let Y=z.toLowerCase(),G=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function gQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let G=Lj.homedir();if(Z===G)return"~";if(Z.startsWith(`${G}/`))return`~${Z.slice(G.length)}`}return Z}var Mj=()=>{};import{spawn as Ox}from"child_process";import*as vZ from"fs";import*as NQ from"path";function xM(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),G=Math.max(Y,Z);return(G>=0?z.slice(G+1):z).replace(/\.git$/i,"")}function uM(J){let z=J.trim();if(!z)return M("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),G=z.includes("/");if(!Y&&!Z&&!G)return M("newTask.error.gitUrlInvalid",{url:z});return null}function i8(J,z){let Y=z.trim();if(!Y)return M("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return M("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return M("newTask.error.parentRequired");let G=KJ(Z),X;try{X=vZ.statSync(G)}catch{return M("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return M("newTask.error.parentNotDir",{path:G});let q=NQ.join(G,Y);if(vZ.existsSync(q))return M("newTask.error.targetExists",{path:q});return null}function EM(J,z){return NQ.join(KJ(J.trim()),z.trim())}function wM(J,z){let Y=z.trim();if(!Y)return z;let Z=KJ(J.trim());if(!Z)return z;try{if(!vZ.statSync(Z).isDirectory())return z}catch{return z}if(!vZ.existsSync(NQ.join(Z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!vZ.existsSync(NQ.join(Z,X)))return X}return Y}function PM(J,z,Y){return new Promise((Z)=>{let G="";try{let X=Ox("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ASKPASS:""}});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(q)=>{if(G+=q,Y){let H=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),j=H[H.length-1];if(j)Y(j)}}),X.on("error",(q)=>{Z({ok:!1,error:q.message})}),X.on("close",(q)=>{if(q===0){Z({ok:!0,path:z});return}let H=G.split(/[\r\n]+/).filter((j)=>j.trim().length>0).pop()??`git clone exited with ${q}`;Z({ok:!1,error:H})})}catch(X){Z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var hM=k(()=>{QJ();Mj()});function l8(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function $8(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function vM(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function gJ(J){return J.replace(/[\r\n]+/g,"")}function CQ(J){return!/\S/u.test(J)}function a8(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return _8(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 _8(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function mM(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>wQ(Y,Z.path))}function cM(J,z){let Y=new Set,Z=[];for(let G of[J,...z]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),Z.push(X)}return Z}function dM(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function nM(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function kQ(J,z,Y=Ax){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let G=Math.floor(Y/2),X=Math.max(0,z-G);if(X+Y>Z)X=Z-Y;return{items:J.slice(X,X+Y),start:X,total:Z}}function pz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function iM(J,z,Y){let Z=J.trim(),G=Z.toLowerCase(),X=Z?z.find((H)=>H.toLowerCase()===G):void 0;if(X)return X;let q=z[Y];if(q)return q;return Z||Tz}var Ax=8;var p8=k(()=>{pj();Dj()});import{TextAttributes as Hz}from"@opentui/core";function lM(J){let z=i1(),{theme:Y}=h0(),[Z,G]=p("existing"),X=()=>{let T=J.availableVendors;return T&&T.length>0?T:_1},q=(()=>{let T=X(),O0=J.defaultVendor??"claude";return T.includes(O0)?O0:T[0]??"claude"})(),[H,j]=p(q),[B,V]=p("tabs"),[f,K]=p(J.defaultRepo),[L,O]=p(RQ(KJ(J.defaultRepo.trim()))??Tz),[A,C]=p(!1),[E,y]=p(""),[N,g]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[F,w]=p(""),[l,d]=p(!1),[s,P]=p(Tz),[J0,q0]=p(!1),[D0,K0]=p(""),T0=U0(()=>cM(J.defaultRepo,J.savedRepos)),S=U0(()=>vM(f(),T0())),a=U0(()=>c8(f())),h=U0(()=>d8(a().base)),R=U0(()=>n8(h(),a().filter)),t=U0(()=>dM(T0(),f())),u=U0(()=>S()==="browse"?R():t()),[n,X0]=p(0),Q0=U0(()=>kQ(u(),n())),[L0,M0]=p(!1),r0=U0(()=>yM(KJ(f().trim()))),g0=U0(()=>nM(r0(),L())),[i0,k1]=p(0),C0=U0(()=>kQ(g0(),i0())),w0=U0(()=>c8(N())),I0=U0(()=>d8(w0().base)),m=U0(()=>n8(I0(),w0().filter)),[F0,Z0]=p(0),V0=U0(()=>kQ(m(),F0())),[X1,o]=p(!1),[H0,k0]=p(""),[t0,z1]=p(0),[P0,B1]=p(new Set),[D1]=fZ(()=>Z()==="adopt"?KJ(f().trim()):null,async(T)=>J.discoverAdoptable?await J.discoverAdoptable(T):[]),f1=U0(()=>mM(D1()??[],H0())),Y0=U0(()=>kQ(f1().map((T)=>T.path),t0())),G0=U0(()=>{let T=Y0();return f1().slice(T.start,T.start+T.items.length)});d0(()=>{f1(),z1((T)=>pz(T,f1().length))}),d0((T)=>{let O0=KJ(f().trim());if(T!==void 0&&O0!==T)B1(new Set),z1(0);return O0});function B0(T){B1((O0)=>{let e=new Set(O0);if(e.has(T))e.delete(T);else e.add(T);return e})}function R0(){let T=f1()[t0()];if(T)B0(T.path)}d0(()=>{g0(),k1(0)}),d0(()=>{let T=KJ(f().trim());if(!T)return;if(A())return;let O0=RQ(T);if(O0)O(O0)}),d0(()=>{u(),X0(0)}),d0(()=>{m(),Z0(0)}),d0(()=>{let T=E(),O0=N();if(l())return;let e=xM(T);w(wM(O0,e))});let[f0,v0]=p(null);d0(()=>{f(),E(),N(),F(),H0(),v0(null)});function b0(){let T=KJ(f().trim());if(!T)return;let O0=SM(T);if(O0){v0(O0),V("repo");return}let e=L().trim()||Tz;J.onSubmit({repo:T,baseRef:e,vendor:H()}),z.clear()}async function s0(){if(J0())return;let T=uM(E());if(T){v0(T),V("cloneUrl");return}let O0=i8(N(),F());if(O0){v0(O0);let n1=F().trim(),bJ=!(!n1||n1.includes("/")||n1.includes("\\"))&&i8(N(),"__kobe_probe__")!=null;V(bJ?"cloneParent":"cloneFolder");return}let e=EM(N(),F());q0(!0),K0(M("newTask.clone.progressInto",{target:e}));let y0=await PM(E().trim(),e,(n1)=>{K0(n1)});if(q0(!1),!y0.ok){v0(M("newTask.error.cloneFailed",{error:y0.error})),V("cloneUrl");return}let F1=s().trim()||Tz,DJ=KJ(N().trim());J.onSubmit({repo:y0.path,baseRef:F1,vendor:H(),cloned:{parentDir:DJ}}),z.clear()}function S0(){let T=f1();if(T.length===0){v0(M("newTask.error.noAdoptable"));return}let O0=P0(),e=O0.size>0?T.filter((y0)=>O0.has(y0.path)):T.slice(t0(),t0()+1);if(e.length===0)return;J.onSubmit({mode:"adopt",repo:KJ(f().trim()),vendor:H(),adopt:e.map((y0)=>({worktreePath:y0.path,branch:y0.branch}))}),z.clear()}function E0(){if(Z()==="clone"){s0();return}if(Z()==="adopt"){S0();return}b0()}function b(T){if(J0())return;if(T===Z())return;G(T),V(_8(T)),v0(null)}function Q1(T){if(J0())return;let O0=T===1?l8(Z()):$8(Z());if(O0===Z())return;G(O0),v0(null),V("tabs")}function e0(T){j((O0)=>T===1?AY(X(),O0):rj(X(),O0))}function l0(){if(!f().trim()&&S()==="saved"){let O0=u()[0];if(O0){K(O0),V("baseRef");return}}if(S()==="browse"){let e=R()[n()],y0=a();if(e){K(gQ(f(),y0.base,e)),X0(0),M0(!0),V("baseRef");return}V("baseRef");return}let T=u()[n()];if(T){K(T),V("baseRef");return}V("baseRef")}function m0(T){let e=u()[T];if(!e)return;if(S()==="browse"){let y0=a();K(gQ(f(),y0.base,e)),X0(T),M0(!0),V("baseRef");return}K(e),X0(T),V("baseRef")}function W0(){let O0=m()[F0()],e=w0();if(O0){g(gQ(N(),e.base,O0)),Z0(0),o(!0),V("cloneFolder");return}V("cloneFolder")}function x0(T){let e=m()[T];if(!e)return;let y0=w0();g(gQ(N(),y0.base,e)),Z0(T),o(!0),V("cloneFolder")}let I1=()=>{let T=f1();if(T.length===0)return;let O0=T.every((e)=>P0().has(e.path));B1(O0?new Set:new Set(T.map((e)=>e.path)))};U1(()=>({bindings:[{key:"tab",cmd:()=>V((T)=>a8(T,Z()))},{key:"ctrl+]",cmd:()=>b(l8(Z()))},{key:"ctrl+[",cmd:()=>b($8(Z()))},{key:"ctrl+e",cmd:()=>j((T)=>AY(X(),T))},{key:"up",cmd:()=>{if(J0())return;if(Z()==="existing"&&B()==="repo"){let T=u();if(T.length===0)return;X0(pz(n()-1,T.length));return}if(Z()==="existing"&&B()==="baseRef"){let T=g0();if(T.length===0)return;k1(pz(i0()-1,T.length));return}if(Z()==="clone"&&B()==="cloneParent"){let T=m();if(T.length===0)return;Z0(pz(F0()-1,T.length));return}if(Z()==="adopt"){let T=f1();if(T.length===0)return;z1(pz(t0()-1,T.length))}}},{key:"down",cmd:()=>{if(J0())return;if(Z()==="existing"&&B()==="repo"){let T=u();if(T.length===0)return;X0(pz(n()+1,T.length));return}if(Z()==="existing"&&B()==="baseRef"){let T=g0();if(T.length===0)return;k1(pz(i0()+1,T.length));return}if(Z()==="clone"&&B()==="cloneParent"){let T=m();if(T.length===0)return;Z0(pz(F0()+1,T.length));return}if(Z()==="adopt"){let T=f1();if(T.length===0)return;z1(pz(t0()+1,T.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Q1(-1):e0(-1)},{key:"right",cmd:()=>B()==="tabs"?Q1(1):e0(1)},{key:"return",cmd:()=>V((T)=>a8(T,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:I1}]:[]]})),U1(()=>({enabled:B()==="confirm"&&!J0(),bindings:[{key:"return",cmd:()=>E0()}]}));let M1=(T)=>B()===T?Y.primary:Y.textMuted,A1=(T)=>B()===T?Hz.BOLD|Hz.UNDERLINE:void 0,i=(T,O0)=>T?O0?Hz.BOLD|Hz.UNDERLINE:Hz.BOLD:void 0;return(()=>{var T=W("box"),O0=W("box"),e=W("text"),y0=W("box"),F1=W("box"),DJ=W("text"),n1=W("box"),j1=W("box"),bJ=W("text"),BJ=W("box"),pJ=W("text"),IJ=W("text");return D(T,O0),D(T,y0),D(T,BJ),Q(T,"paddingLeft",2),Q(T,"paddingRight",2),Q(T,"gap",0),D(O0,e),Q(O0,"flexDirection","row"),U(e,()=>M("newTask.title")),D(y0,F1),Q(y0,"gap",1),Q(y0,"paddingTop",1),Q(y0,"paddingBottom",1),U(y0,()=>{let $=()=>B()==="tabs",_=(r)=>r?Y.primary:Y.textMuted;return(()=>{var r=W("box"),c=W("text"),$0=W("text"),c0=W("text");return D(r,c),D(r,$0),D(r,c0),Q(r,"flexDirection","row"),Q(r,"gap",2),Q(c,"onMouseUp",()=>b("existing")),U(c,(()=>{var A0=N0(()=>Z()==="existing");return()=>A0()?`\u25B8 ${M("newTask.tabs.existing")}`:` ${M("newTask.tabs.existing")}`})()),Q($0,"onMouseUp",()=>b("clone")),U($0,(()=>{var A0=N0(()=>Z()==="clone");return()=>A0()?`\u25B8 ${M("newTask.tabs.clone")}`:` ${M("newTask.tabs.clone")}`})()),Q(c0,"onMouseUp",()=>b("adopt")),U(c0,(()=>{var A0=N0(()=>Z()==="adopt");return()=>A0()?`\u25B8 ${M("newTask.tabs.adopt")}`:` ${M("newTask.tabs.adopt")}`})()),x((A0)=>{var a0=_(Z()==="existing"),W1=i(Z()==="existing",$()),R1=_(Z()==="clone"),LJ=i(Z()==="clone",$()),Bz=_(Z()==="adopt"),OY=i(Z()==="adopt",$());return a0!==A0.e&&(A0.e=Q(c,"fg",a0,A0.e)),W1!==A0.t&&(A0.t=Q(c,"attributes",W1,A0.t)),R1!==A0.a&&(A0.a=Q($0,"fg",R1,A0.a)),LJ!==A0.o&&(A0.o=Q($0,"attributes",LJ,A0.o)),Bz!==A0.i&&(A0.i=Q(c0,"fg",Bz,A0.i)),OY!==A0.n&&(A0.n=Q(c0,"attributes",OY,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()},F1),D(F1,DJ),D(F1,n1),Q(F1,"gap",0),U(DJ,()=>M("newTask.field.engine")),D(n1,j1),D(n1,bJ),Q(n1,"flexDirection","row"),Q(n1,"gap",2),U(n1,I(Z1,{get each(){return X()},children:($)=>{let _=()=>H()===$;return(()=>{var r=W("text");return Q(r,"onMouseUp",()=>j($)),U(r,()=>_()?"\u25B8 ":" ",null),U(r,$,null),x((c)=>{var $0=_()?Y.primary:Y.textMuted,c0=_()?Hz.BOLD:void 0;return $0!==c.e&&(c.e=Q(r,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(r,"attributes",c0,c.t)),c},{e:void 0,t:void 0}),r})()}}),j1),Q(j1,"flexGrow",1),U(bJ,()=>M("newTask.hint.engineCycle")),U(y0,I(z0,{get when(){return Z()==="existing"},get children(){return[(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.repo")),Q(r,"onInput",(c)=>{M0(!1),K(gJ(c))}),Q(r,"onSubmit",()=>l0()),x((c)=>{var $0=M1("repo"),c0=A1("repo"),A0=f(),a0=J.defaultRepo,W1=B()==="repo";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"placeholder",a0,c.o)),W1!==c.i&&(c.i=Q(r,"focused",W1,c.i)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),I(z0,{get when(){return N0(()=>B()==="repo"&&u().length>0)()&&!L0()},get children(){var $=W("box");return Q($,"gap",0),Q($,"paddingLeft",2),U($,I(z0,{get when(){return Q0().start>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreAbove",{count:Q0().start})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),U($,I(Z1,{get each(){return Q0().items},children:(_,r)=>{let c=()=>Q0().start+r(),$0=()=>c()===n(),c0=()=>S()==="saved"&&_===J.defaultRepo,A0=()=>S()==="saved"&&f().trim()===_,a0=()=>S()==="browse"?"/":"",W1=()=>c0()?` ${M("newTask.hint.currentDir")}`:"";return(()=>{var R1=W("text");return Q(R1,"wrapMode","none"),Q(R1,"onMouseUp",()=>m0(c())),U(R1,()=>$0()?"\u25B8 ":" ",null),U(R1,_,null),U(R1,a0,null),U(R1,W1,null),x((LJ)=>{var Bz=$0()?Y.primary:A0()?Y.accent:Y.textMuted,OY=$0()?Hz.BOLD:void 0;return Bz!==LJ.e&&(LJ.e=Q(R1,"fg",Bz,LJ.e)),OY!==LJ.t&&(LJ.t=Q(R1,"attributes",OY,LJ.t)),LJ},{e:void 0,t:void 0}),R1})()}}),null),U($,I(z0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),$}}),(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.fromBranch")),Q(r,"placeholder",Tz),Q(r,"onInput",(c)=>{C(!0),O(gJ(c))}),Q(r,"onSubmit",()=>{O(iM(L(),g0(),i0())),C(!0),b0()}),x((c)=>{var $0=M1("baseRef"),c0=A1("baseRef"),A0=L(),a0=B()==="baseRef";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"focused",a0,c.o)),c},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),I(z0,{get when(){return N0(()=>B()==="baseRef"&&g0().length===0)()&&f0()==null},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"gap",0),Q($,"paddingLeft",2),Q($,"paddingBottom",1),Q(_,"wrapMode","none"),U(_,(()=>{var r=N0(()=>r0().length===0);return()=>r()?M("newTask.hint.noBranchesFound"):M("newTask.hint.noMatchBranch")})()),x((r)=>Q(_,"fg",Y.textMuted,r)),$}}),I(z0,{get when(){return N0(()=>B()==="baseRef")()&&g0().length>0},get children(){var $=W("box");return Q($,"gap",0),Q($,"paddingLeft",2),Q($,"paddingBottom",1),U($,I(z0,{get when(){return C0().start>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreAbove",{count:C0().start})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),U($,I(Z1,{get each(){return C0().items},children:(_,r)=>{let c=()=>C0().start+r(),$0=()=>c()===i0(),c0=()=>L().trim()===_;return(()=>{var A0=W("text");return Q(A0,"wrapMode","none"),Q(A0,"onMouseUp",()=>{O(_),C(!0),k1(c()),V("confirm")}),U(A0,()=>$0()?"\u25B8 ":" ",null),U(A0,_,null),x((a0)=>{var W1=$0()?Y.primary:c0()?Y.accent:Y.textMuted,R1=$0()?Hz.BOLD:void 0;return W1!==a0.e&&(a0.e=Q(A0,"fg",W1,a0.e)),R1!==a0.t&&(a0.t=Q(A0,"attributes",R1,a0.t)),a0},{e:void 0,t:void 0}),A0})()}}),null),U($,I(z0,{get when(){return C0().start+C0().items.length<C0().total},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreBelow",{count:C0().total-C0().start-C0().items.length})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),$}})]}}),null),U(y0,I(z0,{get when(){return Z()==="clone"},get children(){return[(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.gitUrl")),Q(r,"placeholder","https://github.com/user/repo.git"),Q(r,"onInput",(c)=>y(gJ(c))),Q(r,"onSubmit",()=>{if(!E().trim())return;V("cloneParent")}),x((c)=>{var $0=M1("cloneUrl"),c0=A1("cloneUrl"),A0=E(),a0=B()==="cloneUrl";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"focused",a0,c.o)),c},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.parentDir")),Q(r,"placeholder","~/"),Q(r,"onInput",(c)=>{o(!1),g(gJ(c))}),Q(r,"onSubmit",()=>W0()),x((c)=>{var $0=M1("cloneParent"),c0=A1("cloneParent"),A0=N(),a0=B()==="cloneParent";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"focused",a0,c.o)),c},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),I(z0,{get when(){return B()==="cloneParent"},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"paddingLeft",2),Q(_,"wrapMode","none"),U(_,()=>M("newTask.hint.remembered")),x((r)=>Q(_,"fg",Y.textMuted,r)),$}}),I(z0,{get when(){return N0(()=>B()==="cloneParent"&&m().length>0)()&&!X1()},get children(){var $=W("box");return Q($,"gap",0),Q($,"paddingLeft",2),U($,I(z0,{get when(){return V0().start>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreAbove",{count:V0().start})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),U($,I(Z1,{get each(){return V0().items},children:(_,r)=>{let c=()=>V0().start+r(),$0=()=>c()===F0();return(()=>{var c0=W("text"),A0=u0("/");return D(c0,A0),Q(c0,"wrapMode","none"),Q(c0,"onMouseUp",()=>x0(c())),U(c0,()=>$0()?"\u25B8 ":" ",A0),U(c0,_,A0),x((a0)=>{var W1=$0()?Y.primary:Y.textMuted,R1=$0()?Hz.BOLD:void 0;return W1!==a0.e&&(a0.e=Q(c0,"fg",W1,a0.e)),R1!==a0.t&&(a0.t=Q(c0,"attributes",R1,a0.t)),a0},{e:void 0,t:void 0}),c0})()}}),null),U($,I(z0,{get when(){return V0().start+V0().items.length<V0().total},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>M("newTask.picker.moreBelow",{count:V0().total-V0().start-V0().items.length})),x((r)=>Q(_,"fg",Y.textMuted,r)),_}}),null),$}}),(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.folderName")),Q(r,"onInput",(c)=>{d(!0),w(gJ(c))}),Q(r,"onSubmit",()=>V("cloneBaseRef")),x((c)=>{var $0=M1("cloneFolder"),c0=A1("cloneFolder"),A0=F(),a0=M("newTask.placeholder.folderName"),W1=B()==="cloneFolder";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"placeholder",a0,c.o)),W1!==c.i&&(c.i=Q(r,"focused",W1,c.i)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.baseBranch")),Q(r,"placeholder",Tz),Q(r,"onInput",(c)=>P(gJ(c))),Q(r,"onSubmit",()=>void s0()),x((c)=>{var $0=M1("cloneBaseRef"),c0=A1("cloneBaseRef"),A0=s(),a0=B()==="cloneBaseRef";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"focused",a0,c.o)),c},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),I(z0,{get when(){return J0()},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"gap",0),Q($,"paddingLeft",2),Q(_,"wrapMode","none"),U(_,()=>D0()||M("newTask.clone.progressFallback")),x((r)=>Q(_,"fg",Y.textMuted,r)),$}})]}}),null),U(y0,I(z0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var $=W("box"),_=W("text"),r=W("input");return D($,_),D($,r),Q($,"gap",0),U(_,()=>M("newTask.field.adoptFilter")),Q(r,"onInput",(c)=>k0(gJ(c))),Q(r,"onSubmit",()=>R0()),x((c)=>{var $0=M1("adoptFilter"),c0=A1("adoptFilter"),A0=H0(),a0=M("newTask.placeholder.adoptFilter"),W1=B()==="adoptFilter";return $0!==c.e&&(c.e=Q(_,"fg",$0,c.e)),c0!==c.t&&(c.t=Q(_,"attributes",c0,c.t)),A0!==c.a&&(c.a=Q(r,"value",A0,c.a)),a0!==c.o&&(c.o=Q(r,"placeholder",a0,c.o)),W1!==c.i&&(c.i=Q(r,"focused",W1,c.i)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),_=W("text");return D($,_),Q($,"paddingLeft",2),Q(_,"wrapMode","none"),U(_,()=>M("newTask.adopt.repoLine",{path:KJ(f().trim())||M("newTask.adopt.repoNone")})),x((r)=>Q(_,"fg",Y.textMuted,r)),$})(),I(z0,{get when(){return D1.loading},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"paddingLeft",2),Q(_,"wrapMode","none"),U(_,()=>M("newTask.hint.scanningWorktrees")),x((r)=>Q(_,"fg",Y.textMuted,r)),$}}),I(z0,{get when(){return N0(()=>!D1.loading)()&&f1().length===0},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"paddingLeft",2),Q(_,"wrapMode","none"),U(_,(()=>{var r=N0(()=>(D1()??[]).length===0);return()=>r()?M("newTask.adopt.noUnlinked"):M("newTask.adopt.noMatch")})()),x((r)=>Q(_,"fg",Y.textMuted,r)),$}}),I(z0,{get when(){return f1().length>0},get children(){var $=W("box"),_=W("text");return D($,_),Q($,"gap",0),Q($,"paddingLeft",2),U($,I(z0,{get when(){return Y0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),U(r,()=>M("newTask.picker.moreAbove",{count:Y0().start})),x((c)=>Q(r,"fg",Y.textMuted,c)),r}}),_),U($,I(Z1,{get each(){return G0()},children:(r,c)=>{let $0=()=>Y0().start+c(),c0=()=>$0()===t0(),A0=()=>P0().has(r.path),a0=()=>[r.dirty?"dirty":"",r.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var W1=W("text");return Q(W1,"wrapMode","none"),Q(W1,"onMouseUp",()=>{z1($0()),B0(r.path)}),U(W1,()=>c0()?"\u25B8 ":" ",null),U(W1,()=>A0()?"[x] ":"[ ] ",null),U(W1,()=>r.branch,null),U(W1,(()=>{var R1=N0(()=>!!a0());return()=>R1()?` (${a0()})`:""})(),null),x((R1)=>{var LJ=c0()?Y.primary:A0()?Y.accent:Y.textMuted,Bz=c0()?Hz.BOLD:void 0;return LJ!==R1.e&&(R1.e=Q(W1,"fg",LJ,R1.e)),Bz!==R1.t&&(R1.t=Q(W1,"attributes",Bz,R1.t)),R1},{e:void 0,t:void 0}),W1})()}}),_),U($,I(z0,{get when(){return Y0().start+Y0().items.length<Y0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),U(r,()=>M("newTask.picker.moreBelow",{count:Y0().total-Y0().start-Y0().items.length})),x((c)=>Q(r,"fg",Y.textMuted,c)),r}}),_),Q(_,"wrapMode","none"),U(_,(()=>{var r=N0(()=>P0().size>0);return()=>r()?M("newTask.adopt.hintSelected",{count:P0().size}):M("newTask.adopt.hintDefault")})()),x((r)=>Q(_,"fg",Y.textMuted,r)),$}})]}}),null),U(y0,I(z0,{get when(){return f0()},get children(){var $=W("text"),_=u0("\u203B ");return D($,_),Q($,"wrapMode","word"),U($,f0,null),x((r)=>Q($,"fg",Y.error,r)),$}}),null),D(BJ,pJ),D(BJ,IJ),Q(BJ,"flexDirection","row"),Q(BJ,"justifyContent","space-between"),Q(BJ,"alignItems","center"),Q(BJ,"paddingTop",1),Q(BJ,"paddingBottom",1),U(pJ,()=>M("newTask.hint.legend")),Q(IJ,"onMouseUp",()=>E0()),U(IJ,(()=>{var $=N0(()=>!!J0());return()=>$()?M("newTask.button.cloning"):N0(()=>B()==="confirm")()?M("newTask.button.createFocused"):M("newTask.button.create")})()),x(($)=>{var _=Hz.BOLD,r=Y.text,c=M1("engine"),$0=A1("engine"),c0=Y.textMuted,A0=Y.textMuted,a0=B()==="confirm"?Y.primary:Y.text,W1=B()==="confirm"?Hz.BOLD:void 0;return _!==$.e&&($.e=Q(e,"attributes",_,$.e)),r!==$.t&&($.t=Q(e,"fg",r,$.t)),c!==$.a&&($.a=Q(DJ,"fg",c,$.a)),$0!==$.o&&($.o=Q(DJ,"attributes",$0,$.o)),c0!==$.i&&($.i=Q(bJ,"fg",c0,$.i)),A0!==$.n&&($.n=Q(pJ,"fg",A0,$.n)),a0!==$.s&&($.s=Q(IJ,"fg",a0,$.s)),W1!==$.h&&($.h=Q(IJ,"attributes",W1,$.h)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),T})()}var $M=k(()=>{v();v();v();v();v();v();v();v();QJ();p1();V1();v1();Dj();kJ();Mj();aJ();hM();p8()});function Rx(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>I(lM,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),J.setSize("medium")})}var Fj;var oG=k(()=>{v();$M();p8();Fj={show:Rx}});function aM(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},{key:"ctrl+v",cmd:()=>z.pasteAttachment()},{key:"ctrl+x",cmd:()=>z.removeLastAttachment()},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as _M}from"@opentui/core";function gx(J){let z=i1(),{theme:Y}=h0(),[Z,G]=p("prompt"),[X,q]=p(""),[H,j]=p(J.defaultVendor),[B,V]=p(J.defaultBaseRef),[f,K]=p([]);ML((y)=>{let N=OM(new TextDecoder().decode(y.bytes));if(!N)return;y.preventDefault(),K((g)=>[...g,...N.filter((F)=>!g.includes(F))])});function L(){RM().then((y)=>{if(y)K((N)=>N.includes(y)?N:[...N,y])})}function O(y){let N=Oj.indexOf(Z());G(Oj[(N+y+Oj.length)%Oj.length]??"prompt")}function A(y){let N=J.engines;if(N.length===0)return;if(y>0){j((F)=>AY(N,F));return}let g=Math.max(0,N.indexOf(H()));j(N[(g-1+N.length)%N.length]??H())}function C(){if(CQ(X())){G("prompt");return}J.onSubmit({prompt:X().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:f()}),z.clear()}U1(()=>({enabled:!0,bindings:aM(Z(),{cycleField:O,stepEngine:A,commit:C,pasteAttachment:L,removeLastAttachment:()=>K((y)=>y.slice(0,-1))})}));let E=(y)=>Z()===y?Y.accent:Y.textMuted;return(()=>{var y=W("box"),N=W("box"),g=W("text"),F=W("text"),w=W("box"),l=W("text"),d=W("input"),s=W("box"),P=W("text"),J0=W("box"),q0=W("text"),D0=W("input"),K0=W("box"),T0=W("text");return D(y,N),D(y,w),D(y,s),D(y,J0),D(y,K0),Q(y,"paddingLeft",2),Q(y,"paddingRight",2),Q(y,"gap",1),D(N,g),D(N,F),Q(N,"flexDirection","row"),Q(N,"justifyContent","space-between"),U(g,()=>M("quickTask.title",{repoLabel:J.repoLabel})),Q(F,"onMouseUp",()=>J.onCancel()),U(F,()=>M("quickTask.esc")),D(w,l),D(w,d),Q(w,"gap",0),U(l,()=>M("quickTask.promptLabel")),Q(d,"onInput",(S)=>q(gJ(S))),Q(d,"onSubmit",()=>C()),U(y,I(z0,{get when(){return f().length>0},get children(){var S=W("box");return Q(S,"flexDirection","row"),Q(S,"gap",2),Q(S,"flexWrap","wrap"),U(S,I(Z1,{get each(){return f()},children:(a,h)=>(()=>{var R=W("text");return Q(R,"onMouseUp",()=>K((t)=>t.filter((u)=>u!==a))),U(R,()=>u8(a,h())),x((t)=>Q(R,"fg",Y.primary,t)),R})()})),S}}),s),D(s,P),Q(s,"flexDirection","row"),Q(s,"gap",2),U(P,()=>M("quickTask.engineLabel")),U(s,I(Z1,{get each(){return J.engines},children:(S)=>(()=>{var a=W("text");return Q(a,"onMouseUp",()=>{j(S),G("engine")}),U(a,()=>J.engineLabel(S)),x((h)=>{var R=H()===S?Y.primary:Y.textMuted,t=H()===S?_M.BOLD:void 0;return R!==h.e&&(h.e=Q(a,"fg",R,h.e)),t!==h.t&&(h.t=Q(a,"attributes",t,h.t)),h},{e:void 0,t:void 0}),a})()}),null),D(J0,q0),D(J0,D0),Q(J0,"gap",0),U(q0,()=>M("quickTask.branchLabel")),Q(D0,"onInput",(S)=>V(gJ(S))),Q(D0,"onSubmit",()=>C()),D(K0,T0),Q(K0,"paddingBottom",1),U(T0,()=>M("quickTask.legend")),x((S)=>{var a=_M.BOLD,h=Y.text,R=Y.textMuted,t=E("prompt"),u=X(),n=M("quickTask.promptPlaceholder"),X0=Z()==="prompt",Q0=E("engine"),L0=E("branch"),M0=B(),r0=J.defaultBaseRef,g0=Z()==="branch",i0=Y.textMuted;return a!==S.e&&(S.e=Q(g,"attributes",a,S.e)),h!==S.t&&(S.t=Q(g,"fg",h,S.t)),R!==S.a&&(S.a=Q(F,"fg",R,S.a)),t!==S.o&&(S.o=Q(l,"fg",t,S.o)),u!==S.i&&(S.i=Q(d,"value",u,S.i)),n!==S.n&&(S.n=Q(d,"placeholder",n,S.n)),X0!==S.s&&(S.s=Q(d,"focused",X0,S.s)),Q0!==S.h&&(S.h=Q(P,"fg",Q0,S.h)),L0!==S.r&&(S.r=Q(q0,"fg",L0,S.r)),M0!==S.d&&(S.d=Q(D0,"value",M0,S.d)),r0!==S.l&&(S.l=Q(D0,"placeholder",r0,S.l)),g0!==S.u&&(S.u=Q(D0,"focused",g0,S.u)),i0!==S.c&&(S.c=Q(T0,"fg",i0,S.c)),S},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),y})()}function Nx(J,z){return new Promise((Y)=>{J.replace(()=>I(gx,AL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Oj,pM;var rM=k(()=>{v();v();v();v();v();v();v();v();V1();p1();v1();QJ();E8();kJ();aJ();oG();Oj=["prompt","engine","branch"];pM={show:Nx}});async function Aj(J={}){let z=J.logTag??"orch-connect",Y=J.connect??Qz,Z=null;try{let G=await Y();if(!G)return ZY(z,"no daemon running \u2014 caller degrades"),null;return Z=new RJ(G,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(G){return YJ(z,G),Z?.dispose(),null}}var r8=k(()=>{ZZ();CJ();pY()});function oM(J){let[z,Y]=p(J.initial??"sidebar"),[Z,G]=p(0),X=jJ();function q(f){if(G((L)=>L+1),z()===f)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(f)}function H(f){let L=(Rj.indexOf(z())+f+Rj.length)%Rj.length;q(Rj[L])}let j=new Map;function B(f){let K=j.get(f);if(!K)K=()=>z()===f,j.set(f,K);return K}let V={focused:z,is:B,setFocused:q,cycle:H,refocusTick:Z};return I(Cx.Provider,{value:V,get children(){return J.children}})}var Rj,Cx;var sM=k(()=>{v();v();V1();Rj=["sidebar","workspace","files","terminal"],Cx=Pz(null)});function tM(){for(let J of rY){let z=kx.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function eM(){bx((J)=>J+1)}function s8(J){return Ix.get(J)}function Sx(J){return s8(J)?.keys??[]}function oY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=Sx(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,q)=>z.push({key:X,cmd:Z,slot:q}))}return z}var rY,kx,o8,bx,Ix;var sG=k(()=>{V1();rY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Reorder task (Shift+M, then j/k)",hint:{keys:"M",label:"reorder",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.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"}}],kx=new Map(rY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[o8,bx]=p(0);Ix=new Map(rY.map((J)=>[J.id,J]))});function gj(){if(sY)return sY;let J=iq();if(!J.exists)return sY={path:J.path,exists:!1,applied:[],warnings:[]},sY;let z=[...J.warnings],Y=$q(J.doc,process.platform,{chordOptsFor:Of});z.push(...Y.warnings);let Z=Y.entries.filter((H)=>H.id.startsWith("tmux.")),G=Y.entries.filter((H)=>!H.id.startsWith("tmux.")),X=PK(rY,G);z.push(...X.warnings);let q=[...X.applied];if(Z.length>0){let H=Ff(Z);z.push(...H.warnings);for(let j of H.overridden){if(j===vz){q.push({id:j,keys:H.focus.map((f)=>f?.chord??"").filter((f)=>f!==""),defaultKeys:EY});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[OZ[j]]});let V=rY.find((f)=>f.id===j);if(V?.hint)V.hint.keys=B?`${BG(j)?"prefix ":""}${B.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return sY={path:J.path,exists:!0,applied:q,warnings:z},sY}function J3(){return sY??gj()}function z3(){sY=null,wK(),cK(),tM();let J=gj();return eM(),J}var sY=null;var t8=k(()=>{Lf();pq();aq();sG()});var yx=250,tG,Y3;var bQ=k(()=>{$G();sz();k8();({use:tG,provider:Y3}=Vj({name:"KV",init:()=>{let[J,z]=_z(MJ()),Y=new Set,Z=null;function G(H){if(Y.size===0)return!0;try{let j={};for(let B of Y)j[B]=J[B];return NY(j),Y.clear(),!0}catch(j){return console.error(`[kobe] kv ${H} failed:`,j),!1}}function X(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,G("write")},yx)}let q={get ready(){return!0},get store(){return J},signal(H,j){if(J[H]===void 0)z(H,j);return[()=>q.get(H),(B)=>q.set(H,B)]},get(H,j){return J[H]??j},set(H,j){z(H,j),Y.add(H),X()},flush(){if(Z)clearTimeout(Z),Z=null;return G("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{fV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var Nj="../pulse-n3cq1btw.wav";var Z3=()=>{};import{existsSync as xx,mkdirSync as ux}from"fs";import{tmpdir as Ex}from"os";import{basename as wx,isAbsolute as Px,join as e8,resolve as hx}from"path";function mx(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 cx(){if(Cj!==void 0)return Cj;let z=(process.env.PATH??"").split(":").filter(Boolean);return Cj=vx.find((Y)=>z.some((Z)=>xx(e8(Z,Y))))??null,Cj}async function dx(){return Q3??=(async()=>{ux(X3,{recursive:!0});let J=e8(X3,wx(G3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(G3)),J})(),Q3}function q3(J=0.4){let z=cx();if(!z)return;dx().then((Y)=>{try{Bun.spawn(mx(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var G3,X3,vx,Cj,Q3;var H3=k(()=>{Z3();G3=Px(Nj)?Nj:hx(import.meta.dir,Nj),X3=e8(Ex(),"kobe-sfx"),vx=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function j3(J,z){return`${J}:${z}`}function f3(J){let z=tG(),[Y,Z]=p([]),[G,X]=p(new Map),q=Uj(),H=0;function j(K){if(X((O)=>{let A=new Map(O),C=j3(K.taskId,K.tabId),E=O.get(C);if(E==="needs_input"||E==="error")return O;return A.set(C,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}q3()}let L=z.get("notifications.toast.enabled",!0)!==!1;if(K.kind==="error"||L){let O=++H,A={id:O,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((C)=>[...C,A]),q.set(()=>B(O),nx)}}function B(K){Z((L)=>L.filter((O)=>O.id!==K))}function V(K,L){X((O)=>{let A=j3(K,L);if(!O.has(A))return O;let C=new Map(O);return C.delete(A),C})}let f={toasts:Y,unread:G,notify:j,dismiss:B,markRead:V};return I(B3.Provider,{value:f,get children(){return J.children}})}function kj(){let J=cJ(B3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var nx=4500,B3;var bj=k(()=>{v();V1();v8();H3();bQ();B3=Pz()});function JW(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=lx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function lx(J){if(J===null)return"primary";return ix.includes(J)?J:null}var ix;var W3=k(()=>{ix=["primary","success","info"]});import{readFileSync as $x}from"fs";function V3(J){try{let z=JSON.parse($x(oJ(),"utf8")),Y=typeof z.activeTheme==="string"&&FQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&hZ.includes(z.focusAccent)?z.focusAccent:null,X=OQ(z[Ij])?z[Ij]:pG;return{theme:Y,transparent:Z,focusAccent:G,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:pG}}}var Ij="locale";var zW=k(()=>{r1();v1();rG()});function _x(J){if(J)sQ(J);SV(),gj();for(let{name:z,theme:Y}of EX())I8(z,Y)}function px(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function rx(J){let z=()=>J.children,Y=()=>J.notifications?I(f3,{get children(){return z()}}):z(),Z=()=>I(kM,{get children(){return Y()}}),G=()=>J.focus?I(oM,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?I(Y3,{get children(){return G()}}):G();return I(wL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function ox(J){let{theme:z}=h0();return ZJ(()=>YJ("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),G=W("text");return D(Y,Z),D(Y,G),Q(Y,"flexDirection","column"),Q(Y,"flexGrow",1),Q(Y,"paddingLeft",1),Q(Y,"paddingTop",1),Q(Y,"gap",1),U(Z,()=>M("common.paneCrash.title")),U(G,()=>M("common.paneCrash.hint")),x((X)=>{var{background:q,error:H,textMuted:j}=z;return q!==X.e&&(X.e=Q(Y,"backgroundColor",q,X.e)),H!==X.t&&(X.t=Q(Z,"fg",H,X.t)),j!==X.a&&(X.a=Q(G,"fg",j,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function sx(J){let z=h0(),Y={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:j}of EX())I8(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};JW(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),AQ(J.boot.locale);let[Z,G]=p(null),X=!1;ZJ(()=>{(async()=>{let H=await Aj({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(X){H.dispose();return}G(H)})()}),d0(()=>{let H=Z()?.uiPrefsSignal()();if(!H)return;if(JW(Y,H),OQ(H.locale))AQ(H.locale)});let q=null;return d0(()=>{let H=Z()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,z3()}),b1(()=>{X=!0,Z()?.dispose()}),null}async function UJ(J){_x(J.logContext);let z=V3(ax),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await IL(()=>I(rx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[I(sx,{boot:z}),I(GK,{fallback:(q)=>I(ox,{error:q}),get children(){return Y.root()}})]}}),px(Y.onDestroy))}var ax="claude";var FY=k(()=>{v();v();v();v();v();v();v();ZZ();V1();r8();sM();t8();bQ();bj();v1();XH();QJ();aJ();W3();zW()});import{homedir as tx}from"os";async function YW(J,z,Y,Z,G={}){let X=y1(z.id);if(await K1(X))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (nq(),SK));if(z.archived&&q()){let{ensureSession:K}=await Promise.resolve().then(() => (GJ(),wJ)),L=z.worktreePath??"",O=L&&uY(L)?L:Y&&uY(Y)?Y:tx();if(!await K({name:X,cwd:O,command:dJ(Z),taskId:z.id,vendor:Z,repo:Y,archived:!0,archivedWorktree:L||O,title:z.title}))throw new tY("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!uY(H)){if(!J)throw new tY("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(K){throw new tY("worktree",`ensureWorktree failed for ${z.id}`,K)}await G.reload?.()}if(!H||!uY(H))throw new tY("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (GJ(),wJ)),{resolveEngineLaunchInit:B}=await Promise.resolve().then(() => (TG(),dH)),V=Y?B(Y,H,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:X,cwd:H,command:dJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:V}))throw new tY("session",`failed to start tmux session for ${z.id}`);return!1}async function ZW(J,z,Y,Z,G={}){let X=y1(z.id),q=await Promise.resolve().then(() => (GJ(),wJ));if(G.captureFrom){let B=await q.currentSessionName();if(B&&B!==X)await q.captureGlobalLayout(B)}if(await YW(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt,reload:G.reload})&&G.heal)try{let B=await CZ(X,"@kobe_worktree")||z.worktreePath||"";if(B&&uY(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (TG(),dH)),f=Y?V(Y,B,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:X,cwd:B,command:dJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:f})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:j}=await Promise.resolve().then(() => (hY(),hf));if(await j(X),G.isCurrent&&!G.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(X)}async function Sj(J,z,Y,Z,G={}){await ZW(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt})}var tY;var yj=k(()=>{Yz();Oz();P1();tY=class tY extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var K3={};q1(K3,{startNewTaskHost:()=>ex,NewTaskPage:()=>Tj});function Tj(J){let{theme:z}=h0(),Y=i1();ZJ(()=>{Z()});async function Z(){let G=SJ(),X=J.defaultRepo||G[0]||process.cwd(),q=hJ(S1("lastSelectedVendor"),vJ()),H=await GY(),j=J.orchestrator,B=await Fj.show(Y,X,G,{defaultVendor:q,availableVendors:H,discoverAdoptable:j?(f)=>j.discoverAdoptableWorktrees(f):void 0});if(!B)process.exit(0);if(zJ("lastSelectedVendor",B.vendor),ez(B.repo),!j)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let f of B.adopt)V=await j.adoptWorktree({repo:B.repo,worktreePath:f.worktreePath,branch:f.branch,vendor:B.vendor});else V=await j.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(f){console.error("[kobe new-task] task.create/adopt failed:",f),process.exit(1)}if(V)try{await Sj(j,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(f){console.error("[kobe new-task] auto-enter failed:",f)}process.exit(0)}return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"flexGrow",1),x((X)=>Q(G,"backgroundColor",z.background,X)),G})()}async function ex(J){await UJ({setup:async()=>{let z=null;try{let Y=await Iz(),Z=new RJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>I(Tj,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var GW=k(()=>{v();v();v();v();CJ();V1();pY();GZ();C1();p1();oG();v1();FY();yj();aJ()});function xj(J,z,Y,Z,G={}){if(J.length===0)return z;let X=new Map;for(let j of J)X.set(Y(j),j);let q=J.length===z.length,H=Array(z.length);for(let j=0;j<z.length;j++){let B=z[j],V=X.get(Y(B));if(V&&Z(V,B)&&(!G.samePosition||J[j]===V)){if(H[j]=V,q&&J[j]!==V)q=!1}else H[j]=B,q=!1}return q?J:H}function U3(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.toLowerCase(),G=0;for(let X=0;X<Z.length&&G<Y.length;X++)if(Z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function Ju(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function XW(J,z,Y,Z="default",G){let X=Ju(J,z),q=Y?.trim()??"",H=G?jz(G):null,j=q?X.filter((A)=>U3(q,`${A.title} ${xz(A.repo)}`)):X,B=[],V=[],f=[],K=new Set;for(let A of j){if(A.kind==="main"){let C=jz(A.repo);if(K.has(C))continue;K.add(C),B.push(A);continue}if(H&&jz(A.repo)!==H)continue;if(A.pinned===!0)V.push(A);else f.push(A)}if(B.sort((A,C)=>xz(A.repo).localeCompare(xz(C.repo))),Z==="recent")V.sort(D3),f.sort(D3);let L=[],O=0;for(let A of B)L.push({kind:"task",task:A,flatIndex:O}),O++;for(let A of V)L.push({kind:"task",task:A,flatIndex:O}),O++;for(let A of f)L.push({kind:"task",task:A,flatIndex:O}),O++;return L}function D3(J,z){let 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 xz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function jz(J){return J.trim().replace(/[\\/]+$/,"")||J}function zu(J,z){let Y=xz(J);if(!z.some((G)=>G!==J&&xz(G)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function M3(J,z){let Y=z==="archived",Z=new Map;for(let X of J){let q=jz(X.repo),H=Z.get(q)??{repo:X.repo,count:0};if(X.kind==="main")H.repo=X.repo;else if(X.archived===Y)H.count+=1;Z.set(q,H)}let G=[...Z.values()].map((X)=>X.repo);return[...Z.values()].map((X)=>({repo:X.repo,label:zu(X.repo,G),count:X.count})).sort((X,q)=>X.label.localeCompare(q.label))}function F3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=jz(z),Z=J.find((X)=>X.task.kind!=="main"&&jz(X.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((X)=>X.task.kind==="main"&&jz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function QW(J){return J.map((z)=>z.task.id)}function O3(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let G=z.indexOf(J);if(G>=0)return G;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function A3(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function Yu(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 R3(J,z){return xj(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&Yu(Y.task,Z.task),{samePosition:!0})}var uj=()=>{};var g3={};q1(g3,{startQuickTaskHost:()=>Qu});async function Zu(J,z){let Y,Z;if(z){let f=await EJ(z,["@kobe_task","@kobe_worktree"]);Y=f["@kobe_task"]||void 0,Z=f["@kobe_worktree"]||void 0}let G=(Y?J?.getTask(Y)?.repo:void 0)??SJ()[0],X=G??Z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let q=await GY(),H=hJ(S1("lastSelectedVendor"),vJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=RQ(KJ(G))??Tz,V=q.length>0?q:[j];return{ctx:{repo:G,vendor:j,baseRef:B,engines:V},fallbackRepo:X}}async function Gu(J,z,Y,Z,G){let X=await YW(J,z,Y,Z),q=y1(z.id),{pane:H}=await TX(q,!X);if(H)await xX(H,G)}function Xu(J){let{theme:z}=h0(),Y=i1();ZJ(()=>{Z()});async function Z(){let G=J.ctx,X=await pM.show(Y,{repoLabel:xz(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:DZ});if(X===void 0)process.exit(0);zJ("lastSelectedVendor",X.vendor),ez(G.repo);let q=J.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let H=await q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await Gu(q,H,G.repo,X.vendor,AM(X.prompt,X.attachments)),await Sj(q,H,G.repo,X.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"flexGrow",1),x((X)=>Q(G,"backgroundColor",z.background,X)),G})()}async function Qu(J){await UJ({setup:async()=>{let z=null;try{let G=await Iz(),X=new RJ(G);await X.init(),z=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:Z}=await Zu(z,J.session);return{root:()=>Y?I(Xu,{ctx:Y,orchestrator:z}):I(Tj,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var N3=k(()=>{v();v();v();v();CJ();V1();pY();GZ();Yz();C1();P1();rq();p1();rM();v1();E8();Dj();FY();Mj();yj();GW();uj();aJ()});function wj(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${Z}${G.length===1?G.toUpperCase():G}`}function Ej(J,z){if(J.includes("/"))return J.split("/").map((G)=>Ej(G,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=Hu[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function eG(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let H=Z[1]??"";return`${z} ${H.includes("+")?eG(H,z):Ej(H,!0)}`}let G=Y.split("+");if(G.length===1)return Ej(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((H)=>qu[H.toLowerCase().trim()]??H).join("")} ${Ej(X,!0)}`}var qu,Hu;var qW=k(()=>{qu={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Hu={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 ju(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function JX(J={}){let z=i1(),{theme:Y}=h0(),Z=()=>ju(rY),G=()=>J.onClose?J.onClose():z.clear(),[X,q]=p("\u2303B");return ZJ(()=>{p0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=wj(j);if(B)q(B)})}),U1(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var H=W("box"),j=W("box"),B=W("text"),V=W("text"),f=W("scrollbox"),K=W("box");return D(H,j),D(H,f),Q(H,"paddingLeft",2),Q(H,"paddingRight",2),Q(H,"gap",1),Q(H,"flexShrink",1),D(j,B),D(j,V),Q(j,"flexDirection","row"),Q(j,"justifyContent","space-between"),Q(j,"flexShrink",0),U(B,()=>M("help.title")),Q(V,"onMouseUp",G),U(V,()=>M("help.esc")),D(f,K),Q(f,"flexShrink",1),Q(f,"flexGrow",1),Q(f,"stickyScroll",!1),Q(K,"paddingBottom",1),Q(K,"gap",1),Q(K,"paddingRight",1),U(K,I(Z1,{get each(){return Z()},children:(L)=>(()=>{var O=W("box"),A=W("text");return D(O,A),Q(O,"gap",0),U(A,()=>T8("category",L.category)),U(O,I(Z1,{get each(){return L.rows},children:(C)=>{let E=C.hint?.keys??C.keys[0]??"\u2014",y=()=>E==="\u2014"?"\u2014":eG(E,X()),N=()=>(C.hint?C.keys:C.keys.slice(1)).map((g)=>eG(g,X()));return(()=>{var g=W("box"),F=W("box"),w=W("text"),l=W("box"),d=W("text");return D(g,F),D(g,l),Q(g,"flexDirection","row"),Q(g,"gap",2),Q(g,"paddingLeft",1),D(F,w),Q(F,"width",14),U(w,y),D(l,d),Q(l,"flexGrow",1),U(d,()=>T8("desc",C.id)),U(g,(()=>{var s=N0(()=>N().length>0);return()=>s()?(()=>{var P=W("box"),J0=W("text");return D(P,J0),U(J0,()=>`(${N().join(", ")})`),x((q0)=>Q(J0,"fg",Y.textMuted,q0)),P})():null})(),null),x((s)=>{var{primary:P,text:J0}=Y;return P!==s.e&&(s.e=Q(w,"fg",P,s.e)),J0!==s.t&&(s.t=Q(d,"fg",J0,s.t)),s},{e:void 0,t:void 0}),g})()}}),null),x((C)=>{var E=Y.accent,y=C3.BOLD;return E!==C.e&&(C.e=Q(A,"fg",E,C.e)),y!==C.t&&(C.t=Q(A,"attributes",y,C.t)),C},{e:void 0,t:void 0}),O})()})),x((L)=>{var O=C3.BOLD,A=Y.text,C=Y.textMuted,E={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return O!==L.e&&(L.e=Q(B,"attributes",O,L.e)),A!==L.t&&(L.t=Q(B,"fg",A,L.t)),C!==L.a&&(L.a=Q(V,"fg",C,L.a)),E!==L.o&&(L.o=Q(f,"verticalScrollbarOptions",E,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var HW=k(()=>{v();v();v();v();v();v();v();V1();P1();sG();v1();QJ();qW();kJ();aJ();JX.show=(J)=>{J.replace(()=>I(JX,{}))}});import{TextAttributes as Bu}from"@opentui/core";function k3(J){let z=i1(),{theme:Y}=h0(),[Z,G]=p(J.currentTitle);function X(){let q=Z().trim();if(CQ(q)&&!J.allowEmpty)return;J.onSubmit(q),z.clear()}return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text"),V=W("box"),f=W("text"),K=W("input"),L=W("box"),O=W("text");return D(q,H),D(q,V),D(q,L),Q(q,"paddingLeft",2),Q(q,"paddingRight",2),Q(q,"gap",1),D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"justifyContent","space-between"),U(j,()=>J.dialogTitle??M("common.rename.defaultTitle")),D(B,u0("esc")),Q(B,"onMouseUp",()=>J.onCancel()),D(V,f),D(V,K),Q(V,"gap",0),U(f,()=>J.fieldLabel??M("common.rename.defaultFieldLabel")),Q(K,"focused",!0),Q(K,"onInput",(A)=>G(gJ(A))),Q(K,"onSubmit",()=>X()),D(L,O),Q(L,"paddingBottom",1),U(O,()=>M("common.rename.footerHint",{submitLabel:J.submitLabel??M("common.rename.defaultSubmitLabel")})),x((A)=>{var C=Bu.BOLD,E=Y.text,y=Y.textMuted,N=Y.accent,g=Z(),F=J.placeholder??J.currentTitle,w=Y.textMuted;return C!==A.e&&(A.e=Q(j,"attributes",C,A.e)),E!==A.t&&(A.t=Q(j,"fg",E,A.t)),y!==A.a&&(A.a=Q(B,"fg",y,A.a)),N!==A.o&&(A.o=Q(f,"fg",N,A.o)),g!==A.i&&(A.i=Q(K,"value",g,A.i)),F!==A.n&&(A.n=Q(K,"placeholder",F,A.n)),w!==A.s&&(A.s=Q(O,"fg",w,A.s)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var b3=k(()=>{v();v();v();v();v();v();v();QJ();V1();v1();aJ();oG()});function fu(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>I(k3,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>Z(G),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var rz;var jW=k(()=>{v();b3();rz={show:fu}});import{TextAttributes as Wu}from"@opentui/core";function Vu(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function uz(J){let z=i1(),{theme:Y}=h0(),[Z,G]=_z({active:J.initialActive??"confirm"});return U1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,B),D(X,V),Q(X,"paddingLeft",2),Q(X,"paddingRight",2),Q(X,"paddingBottom",1),Q(X,"gap",0),D(q,H),D(q,j),Q(q,"flexDirection","row"),Q(q,"justifyContent","space-between"),U(H,()=>J.title),D(j,u0("esc")),Q(j,"onMouseUp",()=>z.clear()),U(B,()=>J.message),Q(V,"flexDirection","row"),Q(V,"justifyContent","flex-end"),Q(V,"paddingTop",1),U(V,I(Z1,{each:["cancel","confirm"],children:(f)=>(()=>{var K=W("box"),L=W("text");return D(K,L),Q(K,"paddingLeft",1),Q(K,"paddingRight",1),Q(K,"onMouseUp",()=>{if(f==="confirm")J.onConfirm?.();if(f==="cancel")J.onCancel?.();z.clear()}),U(L,()=>Vu(f==="cancel"?J.label??M("common.cancel"):J.confirmLabel??M("common.confirm"))),x((O)=>{var A=f===Z.active?Y.primary:void 0,C=f===Z.active?Y.selectedListItemText:Y.textMuted;return A!==O.e&&(O.e=Q(K,"backgroundColor",A,O.e)),C!==O.t&&(O.t=Q(L,"fg",C,O.t)),O},{e:void 0,t:void 0}),K})()})),x((f)=>{var K=Wu.BOLD,L=Y.text,O=Y.textMuted,A=Y.textMuted;return K!==f.e&&(f.e=Q(H,"attributes",K,f.e)),L!==f.t&&(f.t=Q(H,"fg",L,f.t)),O!==f.a&&(f.a=Q(j,"fg",O,f.a)),A!==f.o&&(f.o=Q(B,"fg",A,f.o)),f},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var Pj=k(()=>{v();v();v();v();v();v();v();QJ();V1();$G();v1();kJ();aJ();uz.show=(J,z,Y,Z,G,X)=>{return new Promise((q)=>{J.replace(()=>I(uz,{title:z,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as Ku}from"fs";import{join as Uu}from"path";function I3(J){return J instanceof RJ}function S3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function BW(J,z,Y){if(await uz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{Ku(Uu(rJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}S3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
267
|
+
`),process.exit(0)}async function fW(J,z,Y){if(!(z instanceof RJ))return;if(await uz.show(J,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;S3(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
|
|
268
|
+
`),process.exit(0)}var y3=k(()=>{pY();r1();Pj()});function Du(J){return`theme:${J}`}function WW(J){return`language:${J}`}function VW(J){return`accent:${J}`}function Lu(J){return`engine:${J}`}function IQ(J){return`surface:${J}`}function KW(J){return[...J.themeNames.map((z)=>({id:Du(z),kind:"theme",name:z})),...aG.map((z)=>({id:WW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:VW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:IQ("chattab"),kind:"surface",surface:"chattab"},{id:IQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"},{id:"worktree-base",kind:"worktreeBase"}]}function Mu(J){return[...J.map((z)=>({id:Lu(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Fu(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function zX(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"},{id:"archived-history",kind:"devArchivedHistory"}]}function T3(J,z){switch(J){case"general":return KW(z);case"engines":return Mu(z.engineList);case"accounts":case"keys":return[];case"feedback":return Fu();case"dev":return zX(z.hasDaemon)}}function YX(J,z){return J.findIndex((Y)=>Y.id===z)}function hj(J,z){return J[z]}var mZ;var UW=k(()=>{rG();mZ=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as o0}from"@opentui/core";function x3(J){let{theme:z}=h0();return(()=>{var Y=W("box");return Q(Y,"flexDirection","column"),Q(Y,"flexShrink",0),Q(Y,"width",14),Q(Y,"gap",1),U(Y,I(Z1,{each:mZ,children:(Z,G)=>{let X=()=>G()===J.cursor(),q=()=>X()&&J.level()==="sidebar";return(()=>{var H=W("box"),j=W("text");return D(H,j),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>J.switchSection(Z.id)),Q(j,"wrapMode","none"),U(j,()=>M(`settings.sections.${Z.id}`)),x((B)=>{var V=q()?z.primary:void 0,f=q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?o0.BOLD:void 0;return V!==B.e&&(B.e=Q(H,"backgroundColor",V,B.e)),f!==B.t&&(B.t=Q(j,"fg",f,B.t)),K!==B.a&&(B.a=Q(j,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),H})()}})),Y})()}function u3(J){let z=h0(),{theme:Y}=z,Z=()=>KW({themeNames:J.themeNames(),focusAccentSlots:hZ}),G=(l)=>YX(Z(),l),X=()=>G("transparent"),q=()=>G("toast"),H=()=>G("sound"),j=()=>G("zen-keep-tasks"),B=()=>G(IQ("chattab")),V=()=>G(IQ("taskpanel")),f=()=>G("editor-kind"),K=()=>G("editor-custom"),L=()=>G("worktree-base"),O=()=>J.bodyRow()===X(),A=()=>J.bodyRow()===q(),C=()=>J.bodyRow()===H(),E=()=>J.bodyRow()===j(),y=()=>J.bodyRow()===B(),N=()=>J.bodyRow()===V(),g=()=>J.bodyRow()===f(),F=()=>J.bodyRow()===K(),w=()=>J.bodyRow()===L();return(()=>{var l=W("box"),d=W("text"),s=W("text"),P=W("box"),J0=W("box"),q0=W("text"),D0=W("text"),K0=W("box"),T0=W("text"),S=W("text"),a=W("box"),h=W("text"),R=W("box"),t=W("text"),u=W("text"),n=W("box"),X0=W("text"),Q0=W("text"),L0=W("box"),M0=W("text"),r0=u0(" "),g0=W("box"),i0=W("text"),k1=u0(" "),C0=W("box"),w0=W("text"),I0=W("text"),m=W("box"),F0=W("text"),Z0=u0(" "),V0=W("box"),X1=W("text"),o=W("text"),H0=W("box"),k0=W("text"),t0=u0(" "),z1=W("box"),P0=W("text"),B1=u0(" "),D1=W("box"),f1=W("text"),Y0=W("text"),G0=W("box"),B0=W("text"),R0=W("box"),f0=W("text"),v0=W("box"),b0=W("text"),s0=W("text"),S0=W("box"),E0=W("text");return D(l,d),D(l,s),D(l,P),D(l,J0),D(l,K0),D(l,R),D(l,n),D(l,C0),D(l,V0),D(l,D1),D(l,v0),Q(l,"flexDirection","column"),Q(l,"gap",1),U(d,()=>M("settings.general.theme")),U(s,()=>M("settings.general.themeHint")),Q(P,"flexDirection","column"),Q(P,"gap",0),U(P,I(Z1,{get each(){return J.themeNames()},children:(b,Q1)=>{let e0=()=>J.level()==="body"&&J.bodyRow()===Q1(),l0=()=>b===z.selected;return(()=>{var m0=W("box"),W0=W("text");return D(m0,W0),Q(m0,"flexDirection","row"),Q(m0,"gap",1),Q(m0,"paddingLeft",1),Q(m0,"paddingRight",1),Q(m0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q1()),J.setThemeCursor(Q1()),J.selectTheme(b)}),Q(W0,"wrapMode","none"),U(W0,()=>l0()?"\u25CF ":" ",null),U(W0,b,null),x((x0)=>{var I1=e0()?Y.primary:void 0,M1=e0()?Y.selectedListItemText:l0()?Y.accent:Y.text,A1=e0()||l0()?o0.BOLD:void 0;return I1!==x0.e&&(x0.e=Q(m0,"backgroundColor",I1,x0.e)),M1!==x0.t&&(x0.t=Q(W0,"fg",M1,x0.t)),A1!==x0.a&&(x0.a=Q(W0,"attributes",A1,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),m0})()}})),D(J0,q0),D(J0,D0),Q(J0,"flexDirection","column"),Q(J0,"gap",0),Q(J0,"paddingTop",1),U(q0,()=>M("settings.general.language")),Q(D0,"wrapMode","word"),U(D0,()=>M("settings.general.languageHint")),U(J0,I(Z1,{each:aG,children:(b)=>{let Q1=()=>G(WW(b.id)),e0=()=>J.level()==="body"&&J.bodyRow()===Q1(),l0=()=>J.currentLocale()===b.id;return(()=>{var m0=W("box"),W0=W("text");return D(m0,W0),Q(m0,"flexDirection","row"),Q(m0,"gap",1),Q(m0,"paddingLeft",1),Q(m0,"paddingRight",1),Q(m0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q1()),J.selectLanguage(b.id)}),Q(W0,"wrapMode","none"),U(W0,()=>l0()?"\u25CF ":" ",null),U(W0,()=>b.label,null),x((x0)=>{var I1=e0()?Y.primary:void 0,M1=e0()?Y.selectedListItemText:l0()?Y.accent:Y.text,A1=e0()||l0()?o0.BOLD:void 0;return I1!==x0.e&&(x0.e=Q(m0,"backgroundColor",I1,x0.e)),M1!==x0.t&&(x0.t=Q(W0,"fg",M1,x0.t)),A1!==x0.a&&(x0.a=Q(W0,"attributes",A1,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),m0})()}}),null),D(K0,T0),D(K0,S),D(K0,a),Q(K0,"flexDirection","column"),Q(K0,"gap",0),Q(K0,"paddingTop",1),U(T0,()=>M("settings.general.transparent")),Q(S,"wrapMode","word"),U(S,()=>M("settings.general.transparentHint")),D(a,h),Q(a,"flexDirection","row"),Q(a,"paddingLeft",1),Q(a,"paddingRight",1),Q(a,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),Q(h,"wrapMode","none"),U(h,(()=>{var b=N0(()=>!!z.transparentBackground);return()=>b()?M("settings.general.on"):M("settings.general.off")})()),D(R,t),D(R,u),Q(R,"flexDirection","column"),Q(R,"gap",0),Q(R,"paddingTop",1),U(t,()=>M("settings.general.focusAccent")),Q(u,"wrapMode","word"),U(u,()=>M("settings.general.focusAccentHint")),U(R,I(Z1,{each:hZ,children:(b)=>{let Q1=()=>G(VW(b)),e0=()=>J.level()==="body"&&J.bodyRow()===Q1(),l0=()=>z.focusAccent===b;return(()=>{var m0=W("box"),W0=W("text");return D(m0,W0),Q(m0,"flexDirection","row"),Q(m0,"gap",1),Q(m0,"paddingLeft",1),Q(m0,"paddingRight",1),Q(m0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q1()),J.selectFocusAccent(b)}),Q(W0,"wrapMode","none"),U(W0,()=>l0()?"\u25CF ":" ",null),U(W0,()=>M(`settings.general.accent${b.charAt(0).toUpperCase()}${b.slice(1)}`),null),x((x0)=>{var I1=e0()?Y.primary:void 0,M1=e0()?Y.selectedListItemText:l0()?Y.focusAccent:Y.text,A1=e0()||l0()?o0.BOLD:void 0;return I1!==x0.e&&(x0.e=Q(m0,"backgroundColor",I1,x0.e)),M1!==x0.t&&(x0.t=Q(W0,"fg",M1,x0.t)),A1!==x0.a&&(x0.a=Q(W0,"attributes",A1,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),m0})()}}),null),D(n,X0),D(n,Q0),D(n,L0),D(n,g0),Q(n,"flexDirection","column"),Q(n,"gap",0),Q(n,"paddingTop",1),U(X0,()=>M("settings.general.notifications")),Q(Q0,"wrapMode","word"),U(Q0,()=>M("settings.general.notificationsHint")),D(L0,M0),Q(L0,"flexDirection","row"),Q(L0,"gap",1),Q(L0,"paddingLeft",1),Q(L0,"paddingRight",1),Q(L0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(M0,r0),Q(M0,"wrapMode","none"),U(M0,()=>J.toastEnabled()?"[x]":"[ ]",r0),U(M0,()=>M("settings.general.toast"),null),D(g0,i0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(i0,k1),Q(i0,"wrapMode","none"),U(i0,()=>J.soundEnabled()?"[x]":"[ ]",k1),U(i0,()=>M("settings.general.sound"),null),D(C0,w0),D(C0,I0),D(C0,m),Q(C0,"flexDirection","column"),Q(C0,"gap",0),Q(C0,"paddingTop",1),U(w0,()=>M("settings.general.zen")),Q(I0,"wrapMode","word"),U(I0,()=>M("settings.general.zenHint")),D(m,F0),Q(m,"flexDirection","row"),Q(m,"gap",1),Q(m,"paddingLeft",1),Q(m,"paddingRight",1),Q(m,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(F0,Z0),Q(F0,"wrapMode","none"),U(F0,()=>J.zenKeepsTasks()?"[x]":"[ ]",Z0),U(F0,()=>M("settings.general.zenKeepTasks"),null),D(V0,X1),D(V0,o),D(V0,H0),D(V0,z1),Q(V0,"flexDirection","column"),Q(V0,"gap",0),Q(V0,"paddingTop",1),U(X1,()=>M("settings.general.surface")),Q(o,"wrapMode","word"),U(o,()=>M("settings.general.surfaceHint")),D(H0,k0),Q(H0,"flexDirection","row"),Q(H0,"gap",1),Q(H0,"paddingLeft",1),Q(H0,"paddingRight",1),Q(H0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(k0,t0),Q(k0,"wrapMode","none"),U(k0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",t0),U(k0,()=>M("settings.general.surfaceChattab"),null),D(z1,P0),Q(z1,"flexDirection","row"),Q(z1,"gap",1),Q(z1,"paddingLeft",1),Q(z1,"paddingRight",1),Q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(P0,B1),Q(P0,"wrapMode","none"),U(P0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",B1),U(P0,()=>M("settings.general.surfaceTaskpanel"),null),D(D1,f1),D(D1,Y0),D(D1,G0),D(D1,R0),Q(D1,"flexDirection","column"),Q(D1,"gap",0),Q(D1,"paddingTop",1),U(f1,()=>M("settings.general.editor")),Q(Y0,"wrapMode","word"),U(Y0,()=>M("settings.general.editorHint")),D(G0,B0),Q(G0,"flexDirection","row"),Q(G0,"gap",1),Q(G0,"paddingLeft",1),Q(G0,"paddingRight",1),Q(G0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.cycleEditorKind()}),Q(B0,"wrapMode","none"),U(B0,()=>M("settings.general.editorRow",{kind:J.editorKind()})),D(R0,f0),Q(R0,"flexDirection","row"),Q(R0,"gap",1),Q(R0,"paddingLeft",1),Q(R0,"paddingRight",1),Q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),Q(f0,"wrapMode","none"),U(f0,()=>M("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||M("settings.general.editorCustomUnset")})),D(v0,b0),D(v0,s0),D(v0,S0),Q(v0,"flexDirection","column"),Q(v0,"gap",0),Q(v0,"paddingTop",1),U(b0,()=>M("settings.general.worktree")),Q(s0,"wrapMode","word"),U(s0,()=>M("settings.general.worktreeHint")),D(S0,E0),Q(S0,"flexDirection","row"),Q(S0,"gap",1),Q(S0,"paddingLeft",1),Q(S0,"paddingRight",1),Q(S0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.editWorktreeBase()}),Q(E0,"wrapMode","none"),U(E0,()=>M("settings.general.worktreeBase",{path:J.worktreeBasePath().trim()||M("settings.general.worktreeBaseDefault")})),x((b)=>{var Q1=Y.text,e0=o0.BOLD,l0=Y.textMuted,m0=Y.text,W0=o0.BOLD,x0=Y.textMuted,I1=Y.text,M1=o0.BOLD,A1=Y.textMuted,i=O()?Y.primary:void 0,T=O()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,O0=o0.BOLD,e=Y.text,y0=o0.BOLD,F1=Y.textMuted,DJ=Y.text,n1=o0.BOLD,j1=Y.textMuted,bJ=A()?Y.primary:void 0,BJ=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,pJ=o0.BOLD,IJ=C()?Y.primary:void 0,$=C()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,_=o0.BOLD,r=Y.text,c=o0.BOLD,$0=Y.textMuted,c0=E()?Y.primary:void 0,A0=E()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,a0=o0.BOLD,W1=Y.text,R1=o0.BOLD,LJ=Y.textMuted,Bz=y()?Y.primary:void 0,OY=y()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,TW=o0.BOLD,xW=N()?Y.primary:void 0,uW=N()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,EW=o0.BOLD,wW=Y.text,PW=o0.BOLD,hW=Y.textMuted,vW=g()?Y.primary:void 0,mW=g()?Y.selectedListItemText:Y.accent,cW=o0.BOLD,dW=F()?Y.primary:void 0,nW=F()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted,iW=Y.text,lW=o0.BOLD,$W=Y.textMuted,aW=w()?Y.primary:void 0,_W=w()?Y.selectedListItemText:Y.accent,pW=o0.BOLD;return Q1!==b.e&&(b.e=Q(d,"fg",Q1,b.e)),e0!==b.t&&(b.t=Q(d,"attributes",e0,b.t)),l0!==b.a&&(b.a=Q(s,"fg",l0,b.a)),m0!==b.o&&(b.o=Q(q0,"fg",m0,b.o)),W0!==b.i&&(b.i=Q(q0,"attributes",W0,b.i)),x0!==b.n&&(b.n=Q(D0,"fg",x0,b.n)),I1!==b.s&&(b.s=Q(T0,"fg",I1,b.s)),M1!==b.h&&(b.h=Q(T0,"attributes",M1,b.h)),A1!==b.r&&(b.r=Q(S,"fg",A1,b.r)),i!==b.d&&(b.d=Q(a,"backgroundColor",i,b.d)),T!==b.l&&(b.l=Q(h,"fg",T,b.l)),O0!==b.u&&(b.u=Q(h,"attributes",O0,b.u)),e!==b.c&&(b.c=Q(t,"fg",e,b.c)),y0!==b.w&&(b.w=Q(t,"attributes",y0,b.w)),F1!==b.m&&(b.m=Q(u,"fg",F1,b.m)),DJ!==b.f&&(b.f=Q(X0,"fg",DJ,b.f)),n1!==b.y&&(b.y=Q(X0,"attributes",n1,b.y)),j1!==b.g&&(b.g=Q(Q0,"fg",j1,b.g)),bJ!==b.p&&(b.p=Q(L0,"backgroundColor",bJ,b.p)),BJ!==b.b&&(b.b=Q(M0,"fg",BJ,b.b)),pJ!==b.T&&(b.T=Q(M0,"attributes",pJ,b.T)),IJ!==b.A&&(b.A=Q(g0,"backgroundColor",IJ,b.A)),$!==b.O&&(b.O=Q(i0,"fg",$,b.O)),_!==b.I&&(b.I=Q(i0,"attributes",_,b.I)),r!==b.S&&(b.S=Q(w0,"fg",r,b.S)),c!==b.W&&(b.W=Q(w0,"attributes",c,b.W)),$0!==b.C&&(b.C=Q(I0,"fg",$0,b.C)),c0!==b.B&&(b.B=Q(m,"backgroundColor",c0,b.B)),A0!==b.v&&(b.v=Q(F0,"fg",A0,b.v)),a0!==b.k&&(b.k=Q(F0,"attributes",a0,b.k)),W1!==b.x&&(b.x=Q(X1,"fg",W1,b.x)),R1!==b.j&&(b.j=Q(X1,"attributes",R1,b.j)),LJ!==b.q&&(b.q=Q(o,"fg",LJ,b.q)),Bz!==b.z&&(b.z=Q(H0,"backgroundColor",Bz,b.z)),OY!==b.P&&(b.P=Q(k0,"fg",OY,b.P)),TW!==b.H&&(b.H=Q(k0,"attributes",TW,b.H)),xW!==b.F&&(b.F=Q(z1,"backgroundColor",xW,b.F)),uW!==b.M&&(b.M=Q(P0,"fg",uW,b.M)),EW!==b.D&&(b.D=Q(P0,"attributes",EW,b.D)),wW!==b.R&&(b.R=Q(f1,"fg",wW,b.R)),PW!==b.E&&(b.E=Q(f1,"attributes",PW,b.E)),hW!==b.L&&(b.L=Q(Y0,"fg",hW,b.L)),vW!==b.N&&(b.N=Q(G0,"backgroundColor",vW,b.N)),mW!==b.G&&(b.G=Q(B0,"fg",mW,b.G)),cW!==b.U&&(b.U=Q(B0,"attributes",cW,b.U)),dW!==b.K&&(b.K=Q(R0,"backgroundColor",dW,b.K)),nW!==b.V&&(b.V=Q(f0,"fg",nW,b.V)),iW!==b.Y&&(b.Y=Q(b0,"fg",iW,b.Y)),lW!==b.J&&(b.J=Q(b0,"attributes",lW,b.J)),$W!==b.Q&&(b.Q=Q(s0,"fg",$W,b.Q)),aW!==b.Z&&(b.Z=Q(S0,"backgroundColor",aW,b.Z)),_W!==b.X&&(b.X=Q(E0,"fg",_W,b.X)),pW!==b._&&(b._=Q(E0,"attributes",pW,b._)),b},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0,Y:void 0,J:void 0,Q:void 0,Z:void 0,X:void 0,_:void 0}),l})()}function E3(J){let{theme:z}=h0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),q=W("box"),H=W("box"),j=W("text");return D(Z,G),D(Z,X),D(Z,q),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>M("settings.engines.title")),Q(X,"wrapMode","word"),U(X,()=>M("settings.engines.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),U(q,I(Z1,{get each(){return J.vendors},children:(B,V)=>{let f=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),O=W("text"),A=W("text");return D(K,L),D(K,O),D(K,A),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(O,"wrapMode","none"),U(O,()=>J.displayName(B)),Q(A,"wrapMode","none"),U(A,()=>J.commandText(B),null),U(A,(()=>{var C=N0(()=>!!J.isDefault(B));return()=>C()?M("settings.engines.defaultTag"):N0(()=>!!J.isCustom(B))()?M("settings.engines.customTag"):""})(),null),x((C)=>{var E=f()?z.primary:void 0,y=f()?z.selectedListItemText:z.accent,N=o0.BOLD,g=f()?z.selectedListItemText:z.text,F=o0.BOLD,w=f()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return E!==C.e&&(C.e=Q(K,"backgroundColor",E,C.e)),y!==C.t&&(C.t=Q(L,"fg",y,C.t)),N!==C.a&&(C.a=Q(L,"attributes",N,C.a)),g!==C.o&&(C.o=Q(O,"fg",g,C.o)),F!==C.i&&(C.i=Q(O,"attributes",F,C.i)),w!==C.n&&(C.n=Q(A,"fg",w,C.n)),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),H),D(H,j),Q(H,"flexDirection","row"),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),Q(j,"wrapMode","none"),U(j,()=>M("settings.engines.addEngine")),x((B)=>{var V=z.text,f=o0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,O=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=Q(G,"fg",V,B.e)),f!==B.t&&(B.t=Q(G,"attributes",f,B.t)),K!==B.a&&(B.a=Q(X,"fg",K,B.a)),L!==B.o&&(B.o=Q(H,"backgroundColor",L,B.o)),O!==B.i&&(B.i=Q(j,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function w3(J){let{theme:z}=h0(),Y=(Z)=>Z.binary.found?`Binary: ${Z.binary.path}`:`Binary: ${Z.binary.error}`;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),q=W("box"),H=W("text"),j=W("box"),B=W("text"),V=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,q),D(Z,j),D(Z,V),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>M("settings.accounts.title")),Q(X,"wrapMode","word"),U(X,()=>M("settings.accounts.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),D(H,u0("claude-code")),U(q,I(z0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>M("settings.accounts.checking")),x((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(q,I(z0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),U(O,()=>Y(K())),U(L,()=>{let A=K().account;if(A.kind==="oauth"){let C=[A.organization,A.billingType].filter((E)=>!!E).join(" \xB7 ");return(()=>{var E=W("text");return Q(E,"wrapMode","word"),U(E,()=>M("settings.accounts.loggedIn",{email:A.email}),null),U(E,C?` (${C})`:"",null),x((y)=>Q(E,"fg",z.success,y)),E})()}return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.notLoggedIn")),x((E)=>Q(C,"fg",z.textMuted,E)),C})()},null),U(L,I(z0,{get when(){return K().accountError},children:(A)=>(()=>{var C=W("text");return Q(C,"wrapMode","word"),U(C,()=>`! ${A()}`),x((E)=>Q(C,"fg",z.warning,E)),C})()}),null),x((A)=>Q(O,"fg",K().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(j,B),Q(j,"flexDirection","column"),Q(j,"gap",0),D(B,u0("codex")),U(j,I(z0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>M("settings.accounts.checking")),x((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(j,I(z0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),U(O,()=>Y(K())),U(L,()=>{let A=K().account;if(A.kind==="chatgpt")return(()=>{var C=W("text");return Q(C,"wrapMode","word"),U(C,()=>M("settings.accounts.chatgptLogin",{email:A.email}),null),U(C,(()=>{var E=N0(()=>!!A.plan);return()=>E()?` (${A.plan})`:""})(),null),x((E)=>Q(C,"fg",z.success,E)),C})();if(A.kind==="apikey")return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.apiKeyConfigured")),x((E)=>Q(C,"fg",z.success,E)),C})();return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.notLoggedIn")),x((E)=>Q(C,"fg",z.textMuted,E)),C})()},null),U(L,I(z0,{get when(){return K().accountError},children:(A)=>(()=>{var C=W("text");return Q(C,"wrapMode","word"),U(C,()=>`! ${A()}`),x((E)=>Q(C,"fg",z.warning,E)),C})()}),null),x((A)=>Q(O,"fg",K().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(V,f),Q(V,"flexDirection","column"),Q(V,"gap",0),D(f,u0("copilot")),U(V,I(z0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>M("settings.accounts.checking")),x((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(V,I(z0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),U(O,()=>Y(K())),U(L,()=>{let A=K().account;if(A.kind==="token")return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.tokenConfigured",{source:A.source})),x((E)=>Q(C,"fg",z.success,E)),C})();if(A.kind==="oauth")return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.copilotDetected")),x((E)=>Q(C,"fg",z.success,E)),C})();return(()=>{var C=W("text");return U(C,()=>M("settings.accounts.notLoggedIn")),x((E)=>Q(C,"fg",z.textMuted,E)),C})()},null),U(L,I(z0,{get when(){return K().accountError},children:(A)=>(()=>{var C=W("text");return Q(C,"wrapMode","word"),U(C,()=>`! ${A()}`),x((E)=>Q(C,"fg",z.warning,E)),C})()}),null),x((A)=>Q(O,"fg",K().binary.found?z.textMuted:z.warning,A)),L})()}),null),x((K)=>{var L=z.text,O=o0.BOLD,A=z.textMuted,C=z.text,E=o0.BOLD,y=z.text,N=o0.BOLD,g=z.text,F=o0.BOLD;return L!==K.e&&(K.e=Q(G,"fg",L,K.e)),O!==K.t&&(K.t=Q(G,"attributes",O,K.t)),A!==K.a&&(K.a=Q(X,"fg",A,K.a)),C!==K.o&&(K.o=Q(H,"fg",C,K.o)),E!==K.i&&(K.i=Q(H,"attributes",E,K.i)),y!==K.n&&(K.n=Q(B,"fg",y,K.n)),N!==K.s&&(K.s=Q(B,"attributes",N,K.s)),g!==K.h&&(K.h=Q(f,"fg",g,K.h)),F!==K.r&&(K.r=Q(f,"attributes",F,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function P3(J){let{theme:z}=h0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,G=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,q=(B)=>B?z.primary:z.textMuted,H=(B)=>B?o0.BOLD|o0.UNDERLINE:void 0,j;return d0(()=>{if(J.body()===""&&j&&j.plainText!=="")j.setText("")}),(()=>{var B=W("box"),V=W("text"),f=W("text"),K=W("box"),L=W("box"),O=W("text"),A=W("input"),C=W("box"),E=W("text"),y=W("textarea"),N=W("box"),g=W("text");return D(B,V),D(B,f),D(B,K),Q(B,"flexDirection","column"),Q(B,"gap",1),U(V,()=>M("settings.feedback.title")),Q(f,"wrapMode","word"),U(f,()=>M("settings.feedback.hint")),D(K,L),D(K,C),D(K,N),Q(K,"flexDirection","column"),Q(K,"gap",1),D(L,O),D(L,A),Q(L,"gap",0),U(O,()=>M("settings.feedback.titleLabel")),Q(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),Q(A,"onInput",(F)=>J.setTitle(gJ(F))),Q(A,"onSubmit",()=>J.onTitleSubmit()),D(C,E),D(C,y),Q(C,"gap",0),U(E,()=>M("settings.feedback.descriptionLabel")),qz((F)=>{j=F},y),Q(y,"height",4),Q(y,"wrapMode","word"),Q(y,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),Q(y,"onContentChange",()=>J.setBody(j?.plainText??"")),D(N,g),Q(N,"flexDirection","row"),Q(N,"paddingLeft",1),Q(N,"paddingRight",1),Q(N,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(g,()=>M("settings.feedback.send")),U(B,I(z0,{get when(){return J.status()},get children(){var F=W("text");return Q(F,"wrapMode","word"),U(F,()=>J.status()),x((w)=>Q(F,"fg",J.status().startsWith("error:")?z.warning:z.success,w)),F}}),null),x((F)=>{var w=z.text,l=o0.BOLD,d=z.textMuted,s=q(Z()),P=H(Z()),J0=J.title(),q0=M("settings.feedback.titlePlaceholder"),D0=Z(),K0=q(G()),T0=H(G()),S=J.body(),a=M("settings.feedback.descriptionPlaceholder"),h=G(),R=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,u=o0.BOLD;return w!==F.e&&(F.e=Q(V,"fg",w,F.e)),l!==F.t&&(F.t=Q(V,"attributes",l,F.t)),d!==F.a&&(F.a=Q(f,"fg",d,F.a)),s!==F.o&&(F.o=Q(O,"fg",s,F.o)),P!==F.i&&(F.i=Q(O,"attributes",P,F.i)),J0!==F.n&&(F.n=Q(A,"value",J0,F.n)),q0!==F.s&&(F.s=Q(A,"placeholder",q0,F.s)),D0!==F.h&&(F.h=Q(A,"focused",D0,F.h)),K0!==F.r&&(F.r=Q(E,"fg",K0,F.r)),T0!==F.d&&(F.d=Q(E,"attributes",T0,F.d)),S!==F.l&&(F.l=Q(y,"initialValue",S,F.l)),a!==F.u&&(F.u=Q(y,"placeholder",a,F.u)),h!==F.c&&(F.c=Q(y,"focused",h,F.c)),R!==F.w&&(F.w=Q(N,"backgroundColor",R,F.w)),t!==F.m&&(F.m=Q(g,"fg",t,F.m)),u!==F.f&&(F.f=Q(g,"attributes",u,F.f)),F},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function h3(J){let{theme:z}=h0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,G=()=>YX(zX(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===G(),q=()=>YX(zX(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>YX(zX(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),V=()=>YX(zX(J.hasDaemon),"archived-history"),f=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),O=W("text"),A=W("box"),C=W("text"),E=W("text"),y=W("box"),N=W("text"),g=W("text"),F=W("box"),w=W("text"),l=W("text"),d=W("box"),s=W("text"),P=W("text"),J0=W("box"),q0=W("text"),D0=W("text"),K0=W("box"),T0=W("text");return D(K,L),D(K,O),D(K,A),D(K,E),D(K,y),Q(K,"flexDirection","column"),Q(K,"gap",1),U(L,()=>M("settings.dev.reset")),Q(O,"wrapMode","word"),U(O,()=>M("settings.dev.resetHint")),D(A,C),Q(A,"flexDirection","row"),Q(A,"paddingLeft",1),Q(A,"paddingRight",1),Q(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(C,()=>M("settings.dev.resetButton")),U(K,I(z0,{get when(){return J.hasDaemon},get children(){var S=W("box"),a=W("text"),h=W("text"),R=W("box"),t=W("text");return D(S,a),D(S,h),D(S,R),Q(S,"flexDirection","column"),Q(S,"gap",0),Q(S,"paddingTop",1),U(a,()=>M("settings.dev.restart")),Q(h,"wrapMode","word"),U(h,()=>M("settings.dev.restartHint")),D(R,t),Q(R,"flexDirection","row"),Q(R,"paddingLeft",1),Q(R,"paddingRight",1),Q(R,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(t,()=>M("settings.dev.restartButton")),x((u)=>{var n=z.text,X0=o0.BOLD,Q0=z.textMuted,L0=Z()?z.primary:z.backgroundElement,M0=Z()?z.selectedListItemText:z.accent,r0=o0.BOLD;return n!==u.e&&(u.e=Q(a,"fg",n,u.e)),X0!==u.t&&(u.t=Q(a,"attributes",X0,u.t)),Q0!==u.a&&(u.a=Q(h,"fg",Q0,u.a)),L0!==u.o&&(u.o=Q(R,"backgroundColor",L0,u.o)),M0!==u.i&&(u.i=Q(t,"fg",M0,u.i)),r0!==u.n&&(u.n=Q(t,"attributes",r0,u.n)),u},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),S}}),E),Q(E,"wrapMode","word"),U(E,()=>M("settings.dev.doctorHint")),D(y,N),D(y,g),D(y,F),D(y,l),D(y,d),D(y,P),D(y,J0),D(y,D0),D(y,K0),Q(y,"flexDirection","column"),Q(y,"gap",0),Q(y,"paddingTop",1),U(N,()=>M("settings.dev.experimental")),Q(g,"wrapMode","word"),U(g,()=>M("settings.dev.remoteHint")),D(F,w),Q(F,"flexDirection","row"),Q(F,"paddingLeft",1),Q(F,"paddingRight",1),Q(F,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(w,(()=>{var S=N0(()=>!!J.remoteProjectsEnabled());return()=>S()?M("settings.dev.remoteOn"):M("settings.dev.remoteOff")})()),Q(l,"wrapMode","word"),U(l,()=>M("settings.dev.autoStatusHint")),D(d,s),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleAutoStatus()}),U(s,(()=>{var S=N0(()=>!!J.autoStatusEnabled());return()=>S()?M("settings.dev.autoStatusOn"):M("settings.dev.autoStatusOff")})()),Q(P,"wrapMode","word"),U(P,()=>M("settings.dev.dispatcherHint")),D(J0,q0),Q(J0,"flexDirection","row"),Q(J0,"paddingLeft",1),Q(J0,"paddingRight",1),Q(J0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleDispatcher()}),U(q0,(()=>{var S=N0(()=>!!J.dispatcherEnabled());return()=>S()?M("settings.dev.dispatcherOn"):M("settings.dev.dispatcherOff")})()),Q(D0,"wrapMode","word"),U(D0,()=>M("settings.dev.archivedHistoryHint")),D(K0,T0),Q(K0,"flexDirection","row"),Q(K0,"paddingLeft",1),Q(K0,"paddingRight",1),Q(K0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(T0,(()=>{var S=N0(()=>!!J.archivedHistoryEnabled());return()=>S()?M("settings.dev.archivedHistoryOn"):M("settings.dev.archivedHistoryOff")})()),x((S)=>{var a=z.text,h=o0.BOLD,R=z.textMuted,t=Y()?z.primary:z.backgroundElement,u=Y()?z.selectedListItemText:z.warning,n=o0.BOLD,X0=z.textMuted,Q0=z.text,L0=o0.BOLD,M0=z.textMuted,r0=X()?z.primary:z.backgroundElement,g0=X()?z.selectedListItemText:z.text,i0=J.remoteProjectsEnabled()?o0.BOLD:void 0,k1=z.textMuted,C0=H()?z.primary:z.backgroundElement,w0=H()?z.selectedListItemText:z.text,I0=J.autoStatusEnabled()?o0.BOLD:void 0,m=z.textMuted,F0=B()?z.primary:z.backgroundElement,Z0=B()?z.selectedListItemText:z.text,V0=J.dispatcherEnabled()?o0.BOLD:void 0,X1=z.textMuted,o=f()?z.primary:z.backgroundElement,H0=f()?z.selectedListItemText:z.text,k0=J.archivedHistoryEnabled()?o0.BOLD:void 0;return a!==S.e&&(S.e=Q(L,"fg",a,S.e)),h!==S.t&&(S.t=Q(L,"attributes",h,S.t)),R!==S.a&&(S.a=Q(O,"fg",R,S.a)),t!==S.o&&(S.o=Q(A,"backgroundColor",t,S.o)),u!==S.i&&(S.i=Q(C,"fg",u,S.i)),n!==S.n&&(S.n=Q(C,"attributes",n,S.n)),X0!==S.s&&(S.s=Q(E,"fg",X0,S.s)),Q0!==S.h&&(S.h=Q(N,"fg",Q0,S.h)),L0!==S.r&&(S.r=Q(N,"attributes",L0,S.r)),M0!==S.d&&(S.d=Q(g,"fg",M0,S.d)),r0!==S.l&&(S.l=Q(F,"backgroundColor",r0,S.l)),g0!==S.u&&(S.u=Q(w,"fg",g0,S.u)),i0!==S.c&&(S.c=Q(w,"attributes",i0,S.c)),k1!==S.w&&(S.w=Q(l,"fg",k1,S.w)),C0!==S.m&&(S.m=Q(d,"backgroundColor",C0,S.m)),w0!==S.f&&(S.f=Q(s,"fg",w0,S.f)),I0!==S.y&&(S.y=Q(s,"attributes",I0,S.y)),m!==S.g&&(S.g=Q(P,"fg",m,S.g)),F0!==S.p&&(S.p=Q(J0,"backgroundColor",F0,S.p)),Z0!==S.b&&(S.b=Q(q0,"fg",Z0,S.b)),V0!==S.T&&(S.T=Q(q0,"attributes",V0,S.T)),X1!==S.A&&(S.A=Q(D0,"fg",X1,S.A)),o!==S.O&&(S.O=Q(K0,"backgroundColor",o,S.O)),H0!==S.I&&(S.I=Q(T0,"fg",H0,S.I)),k0!==S.S&&(S.S=Q(T0,"attributes",k0,S.S)),S},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0}),K})()}function v3(){let{theme:J}=h0(),z=J3(),Y=Object.keys(Mf).sort();return(()=>{var Z=W("box"),G=W("text"),X=W("text"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),V=W("text");return D(Z,G),D(Z,X),D(Z,q),D(Z,B),D(Z,V),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>M("settings.keybindings.title")),Q(X,"wrapMode","word"),U(X,()=>M("settings.keybindings.hint")),D(q,H),D(q,j),Q(q,"flexDirection","column"),Q(q,"gap",0),U(H,()=>M("settings.keybindings.configFile")),Q(j,"wrapMode","word"),U(j,()=>z.path,null),U(j,(()=>{var f=N0(()=>!!z.exists);return()=>f()?"":M("settings.keybindings.notCreated")})(),null),U(Z,I(z0,{get when(){return!z.exists},get children(){var f=W("box"),K=W("text"),L=W("text"),O=W("text"),A=W("text"),C=W("text"),E=W("text"),y=W("text"),N=W("text"),g=W("text"),F=W("text");return D(f,K),D(f,L),D(f,O),D(f,A),D(f,C),D(f,E),D(f,y),D(f,N),D(f,g),D(f,F),Q(f,"flexDirection","column"),Q(f,"gap",0),U(K,()=>M("settings.keybindings.example")),D(L,u0("bindings:")),D(O,u0(" chat.fork.new: ctrl+g # string = one chord")),D(A,u0(" sidebar.select: [enter] # list = several chords")),D(C,u0(" files.createPR: null # null = unbind")),D(E,u0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(y,u0(" tmux.layout.workspaceSplit: g # prefix g")),D(N,u0("darwin: # platform overlay (also: linux)")),D(g,u0(" bindings:")),D(F,u0(" palette.open: [cmd+p, ctrl+p]")),x((w)=>{var l=J.text,d=o0.BOLD,s=J.textMuted,P=J.textMuted,J0=J.textMuted,q0=J.textMuted,D0=J.textMuted,K0=J.textMuted,T0=J.textMuted,S=J.textMuted,a=J.textMuted;return l!==w.e&&(w.e=Q(K,"fg",l,w.e)),d!==w.t&&(w.t=Q(K,"attributes",d,w.t)),s!==w.a&&(w.a=Q(L,"fg",s,w.a)),P!==w.o&&(w.o=Q(O,"fg",P,w.o)),J0!==w.i&&(w.i=Q(A,"fg",J0,w.i)),q0!==w.n&&(w.n=Q(C,"fg",q0,w.n)),D0!==w.s&&(w.s=Q(E,"fg",D0,w.s)),K0!==w.h&&(w.h=Q(y,"fg",K0,w.h)),T0!==w.r&&(w.r=Q(N,"fg",T0,w.r)),S!==w.d&&(w.d=Q(g,"fg",S,w.d)),a!==w.l&&(w.l=Q(F,"fg",a,w.l)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),f}}),B),U(Z,I(z0,{get when(){return z.exists},get children(){var f=W("box"),K=W("text");return D(f,K),Q(f,"flexDirection","column"),Q(f,"gap",0),U(K,()=>M("settings.keybindings.overridesApplied")),U(f,I(z0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>M("settings.keybindings.none")),x((O)=>Q(L,"fg",J.textMuted,O)),L}}),null),U(f,I(Z1,{get each(){return z.applied},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),U(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),x((A)=>Q(O,"fg",J.text,A)),O})()}),null),x((L)=>{var O=J.text,A=o0.BOLD;return O!==L.e&&(L.e=Q(K,"fg",O,L.e)),A!==L.t&&(L.t=Q(K,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),U(Z,I(z0,{get when(){return z.warnings.length>0},get children(){var f=W("box"),K=W("text");return D(f,K),Q(f,"flexDirection","column"),Q(f,"gap",0),U(K,()=>M("settings.keybindings.warnings")),U(f,I(Z1,{get each(){return z.warnings},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),U(O,`! ${L}`),x((A)=>Q(O,"fg",J.warning,A)),O})()}),null),x((L)=>{var O=J.warning,A=o0.BOLD;return O!==L.e&&(L.e=Q(K,"fg",O,L.e)),A!==L.t&&(L.t=Q(K,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),D(B,u0("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((f)=>{var K=J.text,L=o0.BOLD,O=J.textMuted,A=J.text,C=o0.BOLD,E=J.textMuted,y=J.textMuted,N=J.textMuted;return K!==f.e&&(f.e=Q(G,"fg",K,f.e)),L!==f.t&&(f.t=Q(G,"attributes",L,f.t)),O!==f.a&&(f.a=Q(X,"fg",O,f.a)),A!==f.o&&(f.o=Q(H,"fg",A,f.o)),C!==f.i&&(f.i=Q(H,"attributes",C,f.i)),E!==f.n&&(f.n=Q(j,"fg",E,f.n)),y!==f.s&&(f.s=Q(B,"fg",y,f.s)),N!==f.h&&(f.h=Q(V,"fg",N,f.h)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Z})()}var m3=k(()=>{v();v();v();v();v();v();v();v();v();V1();t8();v1();QJ();rG();aq();oG();UW()});import{accessSync as Ou,constants as Au,mkdirSync as Ru}from"fs";import{TextAttributes as gu}from"@opentui/core";function Nu(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function cZ(J){let z=i1(),Y=h0(),Z=jJ(),{theme:G}=Y,[X,q]=p("sidebar"),[H,j]=p("general"),[B,V]=p(0),[f,K]=p(0),[L,O]=p(""),[A,C]=p(""),[E,y]=p(""),N=U0(()=>Y.all().slice().sort()),[,g]=p(Math.max(0,N().findIndex((i)=>i===Y.selected))),F=I3(J.orchestrator),[w,l]=p(null),[d,s]=p(null),[P,J0]=p(null),q0=!1;d0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Zq().then(l),Gq().then(s),Xq().then(J0)});function D0(){return T3(H(),{themeNames:N(),focusAccentSlots:hZ,engineList:X1(),hasDaemon:F})}function K0(){return D0().length}function T0(){return yZ(J.kv.get(WY,SZ))}function S(i){if(Y.selected===i)return;if(!Y.set(i))return;J.kv.set("activeTheme",i),J.onVisualPrefsChange?.()}function a(){return y8()}function h(i){if(y8()===i)return;AQ(i),J.kv.set(Ij,i),J.onVisualPrefsChange?.()}function R(i){if(Y.transparentBackground===i)return;Y.setTransparentBackground(i),J.kv.set("transparentBackground",i),J.onVisualPrefsChange?.()}function t(){R(!Y.transparentBackground)}function u(i){if(Y.focusAccent===i)return;Y.setFocusAccent(i),J.kv.set("focusAccent",i),J.onVisualPrefsChange?.()}function n(i){J.kv.set(WY,i)}function X0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function Q0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function L0(){J.kv.set("notifications.toast.enabled",!X0())}function M0(){J.kv.set("notifications.sound.enabled",!Q0())}function r0(){return J.kv.get(qH,!0)!==!1}function g0(){J.kv.set(qH,!r0())}function i0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function k1(){J.kv.set("experimental.remoteProjects",!i0())}function C0(){return J.kv.get(KZ,!1)===!0}function w0(){J.kv.set(KZ,!C0())}function I0(){return J.kv.get(UZ,!1)===!0}function m(){J.kv.set(UZ,!I0())}function F0(){return J.kv.get(yX,!1)===!0}function Z0(){J.kv.set(yX,!F0())}function V0(){let i=J.kv.get("customEngineIds",[]);return Array.isArray(i)?i.filter((T)=>typeof T==="string"&&T.trim().length>0):[]}function X1(){return[..._1,...V0()]}function o(i){let T=J.kv.get(Az(i),"");return typeof T==="string"?T.trim():""}function H0(i){return o(i)||SX(i).join(" ")}function k0(i){return fJ(i)&&o(i).length===0&&!z1(i)}function t0(i){let T=J.kv.get(Rz(i),"");return typeof T==="string"?T.trim():""}function z1(i){return t0(i).length>0}function P0(i){return t0(i)||Uf[i]||i}let[B1,D1]=p(hJ(S1("lastSelectedVendor"),V0()));function f1(i){return B1()===i}function Y0(i){zJ("lastSelectedVendor",i),J.kv.set("lastSelectedVendor",i),D1(i)}async function G0(i){let T=await rz.show(z,H0(i),{dialogTitle:`${P0(i)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(T===void 0)return;J.kv.set(Az(i),T.trim())}async function B0(i){let T=await rz.show(z,P0(i),{dialogTitle:`${P0(i)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(T===void 0)return;J.kv.set(Rz(i),T.trim())}function R0(i){if(J.kv.set(Az(i),""),J.kv.set(Rz(i),""),!fJ(i))J.kv.set("customEngineIds",V0().filter((T)=>T!==i)),K((T)=>Math.max(0,Math.min(T,X1().length)))}async function f0(){let i=await rz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(i===void 0)return;let T=i.trim().toLowerCase();if(!T||fJ(T)||V0().includes(T))return;let O0=await rz.show(z,"",{dialogTitle:`Add engine \xB7 ${T}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(O0===void 0)return;let e=await rz.show(z,T,{dialogTitle:`Add engine \xB7 ${T}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...V0(),T]),O0.trim())J.kv.set(Az(T),O0.trim());let y0=e?.trim()??"";J.kv.set(Rz(T),y0&&y0!==T?y0:Nu(T))}function v0(){if(H()!=="engines"||X()!=="body")return null;let i=hj(D0(),f());return i?.kind==="engine"?i.vendor:null}function b0(){return IG(J.kv.get(fY,uH))}function s0(){let i=IZ.indexOf(b0()),T=IZ[(i+1)%IZ.length];if(T)J.kv.set(fY,T)}function S0(){let i=J.kv.get(dY,"");return typeof i==="string"?i:""}async function E0(){let i=await rz.show(z,S0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(i===void 0)return;let T=i.trim();if(J.kv.set(dY,T),T)J.kv.set(fY,"custom")}function b(){let i=J.kv.get(Pq,"");return typeof i==="string"?i:""}async function Q1(){let i=await rz.show(z,b(),{dialogTitle:M("settings.general.worktreeBaseTitle"),fieldLabel:M("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:"~/.kobe/worktrees",allowEmpty:!0});if(i===void 0)return;let T=i.trim();if(T){let O0=jf(T)??T;try{Ru(O0,{recursive:!0}),Ou(O0,Au.W_OK)}catch(e){await uz.show(z,"Can't use that worktree location",`${O0} isn't usable (${e instanceof Error?e.message:String(e)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}J.kv.set(Pq,T)}async function e0(){y("submitting...");try{let i=mG({title:L(),body:A()});y(`sent: ${i.url}`),O(""),C(""),K(0)}catch(i){y(`error: ${i instanceof Error?i.message:String(i)}`)}}let l0=()=>H()==="feedback"&&X()==="body";function m0(i){let T=f()+i;if(T<0||T>2){q("sidebar");return}K(T)}function W0(){if(X()!=="sidebar"||K0()===0)return;if(q("body"),K(0),H()==="general")g(0)}function x0(i){if(X()==="sidebar"){let e=(B()+i+mZ.length)%mZ.length;V(e);let y0=mZ[e];if(y0)j(y0.id),K(0);return}let T=K0();if(T===0)return;let O0=(f()+i+T)%T;if(K(O0),hj(D0(),O0)?.kind==="theme")g(O0)}function I1(i){j(i),V(mZ.findIndex((T)=>T.id===i)),K(0),q("sidebar")}let M1={theme:(i)=>S(i.name),language:(i)=>h(i.locale),transparent:()=>t(),focusAccent:(i)=>u(i.slot),toast:()=>L0(),sound:()=>M0(),zenKeepTasks:()=>g0(),surface:(i)=>n(i.surface),editorKind:()=>s0(),editorCustom:()=>void E0(),worktreeBase:()=>void Q1(),engine:(i)=>void G0(i.vendor),engineAdd:()=>void f0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void e0(),devReset:()=>void BW(z,J.kv,Z),devRestartDaemon:()=>void fW(z,J.orchestrator,Z),devRemoteProjects:()=>k1(),devAutoStatus:()=>w0(),devDispatcher:()=>m(),devArchivedHistory:()=>Z0()};function A1(){let i=hj(D0(),f());if(!i)return;M1[i.kind](i)}return U1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!l0(),bindings:[{key:"down",cmd:()=>x0(1)},{key:"up",cmd:()=>x0(-1)},{key:"j",cmd:()=>x0(1)},{key:"k",cmd:()=>x0(-1)},{key:"tab",cmd:()=>x0(1)},{key:"right",cmd:W0},{key:"l",cmd:W0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){W0();return}A1()}},{key:"t",cmd:t},{key:"r",cmd:()=>{let i=v0();if(i)B0(i)}},{key:"x",cmd:()=>{let i=v0();if(i)R0(i)}},{key:"d",cmd:()=>{let i=v0();if(i)Y0(i)}}]})),U1(()=>({enabled:l0(),bindings:[{key:"tab",cmd:()=>m0(1)},{key:"shift+tab",cmd:()=>m0(-1)}]})),U1(()=>({enabled:l0()&&f()===2,bindings:[{key:"return",cmd:()=>void e0()}]})),(()=>{var i=W("box"),T=W("box"),O0=W("text"),e=W("text"),y0=W("box"),F1=W("box"),DJ=W("box"),n1=W("text");return D(i,T),D(i,y0),D(i,DJ),Q(i,"paddingLeft",2),Q(i,"paddingRight",2),Q(i,"paddingBottom",1),Q(i,"gap",1),D(T,O0),D(T,e),Q(T,"flexDirection","row"),Q(T,"justifyContent","space-between"),U(O0,()=>M("settings.title")),Q(e,"onMouseUp",()=>J.onClose()),U(e,()=>M("settings.esc")),D(y0,F1),Q(y0,"flexDirection","row"),Q(y0,"gap",2),U(y0,I(x3,{level:X,cursor:B,switchSection:I1}),F1),Q(F1,"flexGrow",1),Q(F1,"flexShrink",1),Q(F1,"flexDirection","column"),Q(F1,"gap",1),U(F1,I(z0,{get when(){return H()==="general"},get children(){return I(u3,{level:X,bodyRow:f,setLevel:q,setBodyRow:K,themeNames:N,setThemeCursor:g,selectTheme:S,currentLocale:a,selectLanguage:h,toggleTransparent:t,selectFocusAccent:u,toastEnabled:X0,soundEnabled:Q0,toggleToast:L0,toggleSound:M0,zenKeepsTasks:r0,toggleZenKeepsTasks:g0,settingsSurface:T0,selectSurface:n,editorKind:b0,cycleEditorKind:s0,editorCustomCommand:S0,editEditorCustom:()=>void E0(),worktreeBasePath:b,editWorktreeBase:()=>void Q1()})}}),null),U(F1,I(z0,{get when(){return H()==="engines"},get children(){return I(E3,{level:X,bodyRow:f,setLevel:q,setBodyRow:K,get vendors(){return X1()},isCustom:(j1)=>!fJ(j1),displayName:P0,commandText:H0,isDefault:k0,isDefaultEngine:f1,editEngine:(j1)=>void G0(j1),renameEngine:(j1)=>void B0(j1),resetEngine:R0,onAddEngine:()=>void f0()})}}),null),U(F1,I(z0,{get when(){return H()==="accounts"},get children(){return I(w3,{claudeStatus:w,codexStatus:d,copilotStatus:P})}}),null),U(F1,I(z0,{get when(){return H()==="keys"},get children(){return I(v3,{})}}),null),U(F1,I(z0,{get when(){return H()==="feedback"},get children(){return I(P3,{level:X,bodyRow:f,setLevel:q,setBodyRow:K,title:L,setTitle:(j1)=>{O(j1),y("")},body:A,setBody:(j1)=>{C(j1),y("")},status:E,onTitleSubmit:()=>K(1),submit:()=>void e0()})}}),null),U(F1,I(z0,{get when(){return H()==="dev"},get children(){return I(h3,{level:X,bodyRow:f,setLevel:q,setBodyRow:K,hasDaemon:F,confirmReset:()=>void BW(z,J.kv,Z),confirmRestartDaemon:()=>void fW(z,J.orchestrator,Z),remoteProjectsEnabled:i0,toggleRemoteProjects:k1,autoStatusEnabled:C0,toggleAutoStatus:w0,dispatcherEnabled:I0,toggleDispatcher:m,archivedHistoryEnabled:F0,toggleArchivedHistory:Z0})}}),null),D(DJ,n1),Q(DJ,"paddingTop",0),U(n1,(()=>{var j1=N0(()=>!!l0());return()=>j1()?M("settings.nav.feedback"):M("settings.nav.default")})()),x((j1)=>{var bJ=gu.BOLD,BJ=G.text,pJ=G.textMuted,IJ=G.textMuted;return bJ!==j1.e&&(j1.e=Q(O0,"attributes",bJ,j1.e)),BJ!==j1.t&&(j1.t=Q(O0,"fg",BJ,j1.t)),pJ!==j1.a&&(j1.a=Q(e,"fg",pJ,j1.a)),IJ!==j1.o&&(j1.o=Q(n1,"fg",IJ,j1.o)),j1},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}var DW=k(()=>{v();v();v();v();v();v();v();v();V1();GZ();Yz();eH();nq();IX();mq();C1();Bf();Nf();p1();v1();QJ();EH();kJ();zW();aJ();Pj();jW();y3();UW();m3();cZ.show=(J,z,Y)=>{let Z=!1;return new Promise((G)=>{J.replace(()=>I(cZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>G({visualPrefsChanged:Z})}),()=>G({visualPrefsChanged:Z}))})}});import{TextAttributes as Cu}from"@opentui/core";function d3(){let{theme:J}=h0(),z=az(),Y=kj(),Z=()=>Y.toasts().slice(-c3),G=()=>Math.max(0,z().width-ku-bu),X=()=>Math.max(0,z().height-Iu-c3-1);return I(z0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return Q(q,"position","absolute"),Q(q,"zIndex",2500),Q(q,"width",40),Q(q,"flexDirection","column"),Q(q,"gap",0),U(q,I(Z1,{get each(){return Z()},children:(H)=>{let j=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var f=W("box"),K=W("text"),L=W("text");return D(f,K),D(f,L),Q(f,"flexDirection","row"),Q(f,"gap",1),Q(f,"paddingLeft",1),Q(f,"paddingRight",1),Q(f,"onMouseUp",()=>Y.dismiss(H.id)),Q(K,"wrapMode","none"),U(K,V),Q(L,"wrapMode","none"),U(L,()=>H.title),x((O)=>{var A=j(),C=B(),E=Cu.BOLD,y=B();return A!==O.e&&(O.e=Q(f,"backgroundColor",A,O.e)),C!==O.t&&(O.t=Q(K,"fg",C,O.t)),E!==O.a&&(O.a=Q(K,"attributes",E,O.a)),y!==O.o&&(O.o=Q(L,"fg",y,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}})),x((H)=>{var j=G(),B=X();return j!==H.e&&(H.e=Q(q,"left",j,H.e)),B!==H.t&&(H.t=Q(q,"top",B,H.t)),H},{e:void 0,t:void 0}),q}})}var c3=4,ku=40,bu=2,Iu=2;var n3=k(()=>{v();v();v();v();v();v();v();V1();bj();v1()});import{TextAttributes as Su}from"@opentui/core";function yu(J,z){let Y=J?`v${J}`:M("update.skew.olderBuild");return M("update.skew.hint",{daemon:Y,clientVersion:z})}function i3(J){let{theme:z}=h0(),Y=()=>Math.max(4,J.width()-2);return I(z0,{get when(){return J.stale()},get children(){var Z=W("box"),G=W("text"),X=W("box"),q=W("text"),H=W("box"),j=W("text");return D(Z,G),D(Z,X),D(Z,H),Q(Z,"flexDirection","column"),Q(Z,"flexShrink",0),Q(Z,"paddingLeft",1),Q(Z,"paddingRight",1),Q(Z,"paddingBottom",1),Q(G,"wrapMode","none"),U(G,()=>"\u2594".repeat(Y())),D(X,q),Q(X,"flexDirection","row"),Q(X,"gap",1),Q(q,"wrapMode","none"),U(q,()=>M("update.skew.title")),D(H,j),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(j,"wrapMode","word"),U(j,()=>yu(J.daemonVersion(),J.clientVersion)),x((B)=>{var{warning:V,warning:f}=z,K=Su.BOLD,L=z.text;return V!==B.e&&(B.e=Q(G,"fg",V,B.e)),f!==B.t&&(B.t=Q(q,"fg",f,B.t)),K!==B.a&&(B.a=Q(q,"attributes",K,B.a)),L!==B.o&&(B.o=Q(j,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var l3=k(()=>{v();v();v();v();v();v();V1();v1();QJ()});function $3(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}function a3(J,z){let Y=J.activeTaskSignal;if(typeof Y!=="function")return!0;return Y.call(J)()===z}async function Tu(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let Z=y1(J.taskId),G=$3(J.tasks,J.taskId);if(await nz(Z,G?y1(G.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask&&a3(J.orch,J.taskId))await J.orch.setActiveTask(G?.id??null).catch(()=>{});return await Gz(Z).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function xu(J){let z=$3(J.tasks,J.taskId),Y=y1(J.taskId);if(J.switchBeforeKill)await nz(Y,z?y1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask&&J.orch&&a3(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await Gz(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function _3(J,z){if(!J.orch)return;let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Tu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function p3(J,z){if(!J.orch)return;let Y=J.tasks().find((q)=>q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(H){J.logger.error(`${J.logPrefix} forget project failed:`,H),J.notifyError?.(`Couldn't remove: ${H instanceof Error?H.message:String(H)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await J.orch.deleteTask(z),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(Xf)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),G=!0}catch(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(!G)return;let{nextTask:X}=await xu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function r3(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.rename failed:`,G),J.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function o3(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.setBranch failed:`,G),J.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function s3(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let Z=await GY(),G=AY(Z,Y.vendor??s1);try{await J.orch.setVendor(z,G)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${DZ(G)} (applies on reopen)`),await J.reload?.()}async function t3(J){let z=SJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??s1,G=await GY();if(G.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:G,discoverAdoptable:X?(j)=>X.discoverAdoptableWorktrees(j):void 0});if(!q)return;if(J.rememberVendor(q.vendor),ez(q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(q.mode==="adopt"){let j=q.adopt.length,B=0,V;for(let f of q.adopt)try{H=(await X.adoptWorktree({repo:q.repo,worktreePath:f.worktreePath,branch:f.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 ${f.worktreePath}:`,K)}if(B===0){J.notifyError?.(M("newTask.adopt.summaryNone",{error:V??""}));return}if(B<j)J.notifyInfo?.(M("newTask.adopt.summaryPartial",{done:B,total:j}));else J.notifyInfo?.(M("newTask.adopt.summaryAll",{count:B}))}else try{H=(await X.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(j){J.logger.error(`${J.logPrefix} task.create failed:`,j),J.notifyError?.(`Couldn't create task: ${j instanceof Error?j.message:String(j)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var e3=k(()=>{GZ();Yz();Hf();C1();QJ();zz();p1();GJ()});import{spawn as uu}from"child_process";import{existsSync as Eu}from"fs";import{basename as wu,delimiter as Pu,isAbsolute as hu,join as vu}from"path";function LW(J,z,Y){if(hu(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split(Pu)){if(!G)continue;if(Y(vu(G,J)))return!0}return!1}function du(J){let z=wu(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 JF(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??Eu,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:du(G),command:G,args:[]};for(let X of mu)if(LW(X.command,z,Z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&LW("open",z,Z)){for(let X of cu)if(X.paths.some((q)=>Z(q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&LW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function nu(J,z){return[z.command,[...z.args,J]]}function zF(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??uu,[G,X]=nu(J,z);try{let q=Z(G,X,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var mu,cu;var YF=k(()=>{mu=[{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"}],cu=[{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 vj(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function mj(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}function cj(J){let z=new Map;function Y(Z){let G=z.get(Z);if(!G){let[X,q]=p(J.initial,J.equals?{equals:J.equals}:void 0);G={read:X,write:(H)=>q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Z,G)}return G}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let G=Y(Z);ZG(G,J,(X)=>J.run(Z,X),(X)=>G.write(X))},reset(){z.clear()}}}var SQ=k(()=>{V1();GG();GG()});import{stat as iu}from"fs/promises";import{join as lu}from"path";async function pu(J){try{let z=await iu(lu(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function ru(J,z,Y=qY){let Z=await pu(J);if(Z!==null){let j=ZF.get(J);if(j&&j.fingerprint===Z)return j.value}let G="",X=!1,q=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:lJ(),signal:z}),H=q.status===0?q.stdout.trim():"";if(H&&H!=="HEAD")G=H,X=!0;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:lJ(),signal:z})).status===0)G="(detached)",X=!0;if(X&&Z!==null)ZF.set(J,{fingerprint:Z,value:G});return G}function XF(J){return GF.read(J)}function QF(J){GF.poll(J)}var $u=2000,au=30000,_u=1500,ZF,GF;var qF=k(()=>{nY();SQ();ZF=new Map;GF=cj({initial:"",timeoutMs:$u,slowRetryMs:au,minIntervalMs:_u,run:(J,z)=>ru(J,z)})});function MW(J){let z=J.scheduleTimeout??((j,B)=>{let V=setTimeout(j,B);return()=>clearTimeout(V)}),Y=!1,Z=null,G=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},X=()=>{Y=!1,Z?.(),Z=null},q=(j)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),f=V<0?0:V,K=Math.min(B.length-1,Math.max(0,f+j));J.setCursor(K)},H=(j)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,j)))};return{moveDown(){X(),q(1)},moveUp(){X(),q(-1)},selectCurrent(){X();let j=J.getFlatIds(),B=J.getCursor();if(B<0||B>=j.length)return;let V=j[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),H(0);else G()},pressShiftG(){X(),H(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function HF(J){let z=MW({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),q=J.cursorIndex();if(q<0||q>=X.length)return;return X[q]},Z=()=>J.searchMode?.()??!1,G=()=>J.moveMode?.()??!1;U1(()=>({enabled:J.focused()&&!Z(),bindings:oY({"sidebar.nav":(X,q)=>{let H=(q??0)%2===0;if(G()){let j=Y();if(j===void 0)return;J.onMoveRequest?.(j,H?1:-1);return}if(H)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(G()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let q=Y();if(q!==void 0)J.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let q=Y();if(q!==void 0)J.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;J.onProjectFilterToggle?.()}})})),U1(()=>({enabled:J.focused()&&G(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),U1(()=>({enabled:J.focused(),bindings:oY({"sidebar.view":(X,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),U1(()=>({enabled:J.focused()&&Z(),bindings:oY({"sidebar.search.nav":(X,q)=>{if((q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var jF=k(()=>{sG();kJ()});function FW(J,z){return vj(J,z)}function OW(J,z){return` ${FW(J,Math.max(0,z))}`}var BF=()=>{};function su(J){switch(J){case"done":return M("tasks.status.done");case"in_review":return M("tasks.status.inReview");case"in_progress":return M("tasks.status.working");case"backlog":return M("tasks.status.backlog");case"canceled":return M("tasks.status.canceled");case"error":return M("tasks.status.error")}}function tu(J){switch(J){case"rate_limited":return{text:M("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:M("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:M("tasks.activity.error"),tone:"error"};default:return null}}function VF(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function eu(){return M("tasks.subtitle.noTracking")}function JE(){return M("tasks.subtitle.materializing")}function zE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!fJ(J.vendor)}function AW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,G=ou[z.status],X=J.activity?.state,q=X!==void 0,H=YE(X),j=tu(X),B=zE(z)&&!q,V=J.job!==void 0,f=V||!B&&(X==="running"||J.live||!q&&!Y&&z.status==="in_progress"),K=ZX[J.spinnerFrame]??ZX[0],L=V?"primary":B?"textMuted":j?.tone??(f?"primary":H?.tone??G.tone),O=B?eu():su(z.status),A=V?J.truncateBranch(JE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(O,J.subtitleBudget),C=B?fF:H?.glyph??G.glyph,E=B?fF:H?.glyph??"\u2605";return{isMain:Y,titleText:Y?xz(z.repo):z.title,subtitleText:A,loading:f,stateGlyph:f?K:C,projectGlyph:f?K:E,tone:L}}function RW(J,z){if(!J.loading)return J;let Y=ZX[z()%ZX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function YE(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 ou,ZX,WF=100,fF="\xB7";var KF=k(()=>{QJ();p1();uj();ou={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"}};ZX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function gW(J){return UF.read(J)}function NW(J){UF.poll(J)}var ZE=4000,GE=60000,XE=1500,QE,UF;var DF=k(()=>{nY();SQ();uG();SQ();QE={added:0,deleted:0},UF=cj({initial:QE,equals:$z,timeoutMs:ZE,slowRetryMs:GE,minIntervalMs:XE,run:async(J,z)=>{let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:lJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return xG(Y.stdout)}})});import{TextAttributes as m1}from"@opentui/core";function qE(J){switch(J){case"active":return M("tasks.view.workspace");case"archived":return M("tasks.view.archives")}}function MF(J,z=jE){return vj(J,z)}function dj(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function FF(J){let{theme:z}=h0(),Y=()=>J.focused?J.focused():!0,[Z,G]=p("active"),[X,q]=p(!1),[H,j]=p(""),[B,V]=p(null),f=()=>J.projectFilter?.()??B(),K=(o)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(o);else V(o)};function L(){j(""),q(!0),J.onSearchActiveChange?.(!0)}function O(o){q(!1),j(""),J.onSearchActiveChange?.(!1)}d0(()=>{if(!X())return;let o=jJ();if(!o)return;let H0=(k0)=>{if(k0.defaultPrevented)return;if(!Y())return;if(k0.ctrl||k0.meta||k0.option)return;if(k0.name==="backspace"){j((P0)=>P0.slice(0,-1));return}let t0=k0.sequence;if(!t0||t0.length!==1)return;let z1=t0.charCodeAt(0);if(z1<32||z1===127)return;j((P0)=>P0+t0)};o.keyInput.on("keypress",H0),b1(()=>o.keyInput.off("keypress",H0))});let[A,C]=p(0),E=setInterval(()=>C((o)=>o+1),HE);b1(()=>clearInterval(E));let[y,N]=p(0),g=setInterval(()=>N((o)=>(o+1)%ZX.length),WF);b1(()=>clearInterval(g));let F=()=>J.sortMode?.()??"default",w=U0(()=>M3(J.tasks(),Z())),l=U0(()=>{let o=f();if(!o)return null;let H0=jz(o);return w().find((k0)=>jz(k0.repo)===H0)??null}),d=U0(()=>l()?.repo??null),s=U0(()=>l()?.label??"all"),P=U0(()=>{let o=l();return o?o.count:w().reduce((H0,k0)=>H0+k0.count,0)}),J0=U0(()=>{let o=P();return`${o} ${o===1?M("tasks.project.taskSingular"):M("tasks.project.taskPlural")}`}),q0=U0((o)=>R3(o,XW(J.tasks(),Z(),X()?H():"",F(),d())),[]),D0=U0(()=>QW(q0())),K0=U0(()=>A3(q0())),T0=U0(()=>K0().projectRows),S=U0(()=>K0().taskRows),a=U0(()=>{let o=new Map;for(let H0 of q0())o.set(H0.flatIndex,H0);return o}),h=U0(()=>QW(XW(J.tasks(),Z(),"",F(),d())).length),R=U0(()=>S().length>0);d0(()=>{let o=f(),H0=w();if(o!==null&&H0.length>0&&(H0.length<=1||l()===null))K(null)});function t(){let o=w();if(o.length<=1){K(null);return}let H0=d(),k0=H0?jz(H0):null,t0=k0===null?-1:o.findIndex((P0)=>jz(P0.repo)===k0),z1=o[t0+1];K(z1?.repo??null)}let u=()=>J.width?J.width():LF,n=U0(()=>Math.max(6,u()-9)),X0=U0(()=>Math.max(6,u()-16)),Q0=az(),L0=U0(()=>{let o=Math.max(2,Math.min(10,Math.floor(Q0().height*0.25))),H0=Math.max(2,T0().length*2);return Math.min(o,H0)}),[M0,r0]=p(null),[g0,i0]=p(-1),k1,C0,w0,I0=new Map;d0(()=>{let o=J.width?J.width():LF,H0=w0;if(!H0)return;H0.width=o,H0.flexShrink=1,H0.minHeight=0}),d0(JJ([g0,q0],([o])=>{let H0=a().get(o);if(!H0)return;let k0=H0.task.kind==="main"?k1:C0;if(!k0)return;if(k0.viewport.height<=0)return;let t0=I0.get(o);if(!t0)return;k0.scrollChildIntoView(t0.id)})),d0(JJ(()=>[J.selectedId(),D0()],([o,H0])=>{let k0=e1(g0),t0=O3(o,H0,k0);if(t0!==k0)i0(t0)})),d0(JJ(Z,()=>{let o=D0();i0(o.length>0?0:-1)},{defer:!0})),d0(JJ(d,(o)=>i0(F3(q0(),o)),{defer:!0})),d0(JJ([X,H],()=>{if(!X())return;let o=D0();i0(o.length>0?0:-1)}));function m(o){let H0=Z(),k0=yQ.findIndex((P0)=>P0.view===H0);if(k0<0)return;let t0=(k0+o+yQ.length)%yQ.length,z1=yQ[t0];if(z1)G(z1.view)}let F0=(o)=>{if(J.onActivate?.(o),!J.pinnedSelection)return;let H0=J.selectedId();if(!H0||o===H0)return;let k0=D0().indexOf(H0);if(k0>=0)i0(k0)};d0(JJ([g0,D0],([o,H0])=>{J.onCursorChange?.(o>=0&&o<H0.length?H0[o]:null)})),HF({focused:Y,cursorIndex:g0,setCursorIndex:i0,flatTaskIds:D0,onSelect:(o)=>{J.onSelect(o),F0(o)},onDeleteRequest:(o)=>J.onDeleteRequest?.(o),onArchiveRequest:(o)=>J.onArchiveRequest?.(o),onLocalMergeRequest:(o)=>J.onLocalMergeRequest?.(o),moveMode:J.moveMode,onMoveRequest:(o,H0)=>J.onMoveRequest?.(o,H0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(o)=>J.onRenameRequest?.(o),onPinRequest:(o)=>J.onPinRequest?.(o),onViewSwitch:(o)=>m(o),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>t(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(o)=>O(o)});let Z0=(o)=>(()=>{var H0=W("box"),k0=W("box"),t0=W("text"),z1=W("text");return D(H0,k0),Q(H0,"flexDirection","column"),Q(H0,"flexShrink",0),U(H0,I(z0,{get when(){return o.topPad},get children(){var P0=W("box"),B1=W("text");return D(P0,B1),Q(P0,"flexShrink",0),D(B1,u0(" ")),Q(B1,"wrapMode","none"),P0}}),k0),D(k0,t0),D(k0,z1),Q(k0,"flexDirection","row"),Q(k0,"flexShrink",0),Q(k0,"gap",1),Q(k0,"paddingLeft",1),Q(k0,"paddingRight",1),Q(t0,"wrapMode","none"),U(t0,()=>o.label),Q(z1,"wrapMode","none"),U(z1,()=>"\u2500".repeat(Math.max(2,u()-10-o.label.length-(o.suffix?.length??0)))),U(k0,I(z0,{get when(){return o.suffix},get children(){var P0=W("text");return Q(P0,"wrapMode","none"),U(P0,()=>o.suffix),x((B1)=>{var D1=z.info,f1=m1.BOLD;return D1!==B1.e&&(B1.e=Q(P0,"fg",D1,B1.e)),f1!==B1.t&&(B1.t=Q(P0,"attributes",f1,B1.t)),B1},{e:void 0,t:void 0}),P0}}),null),x((P0)=>{var B1=z.textMuted,D1=m1.BOLD,f1=z.border;return B1!==P0.e&&(P0.e=Q(t0,"fg",B1,P0.e)),D1!==P0.t&&(P0.t=Q(t0,"attributes",D1,P0.t)),f1!==P0.a&&(P0.a=Q(z1,"fg",f1,P0.a)),P0},{e:void 0,t:void 0,a:void 0}),H0})(),V0=(o)=>{switch(o){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},X1=(o)=>{let H0=o.row.task,k0=o.row.flatIndex,t0=()=>k0===g0(),z1=()=>H0.id===J.selectedId(),P0=U0(()=>{let f0=J.chatRunState?.();if(!f0)return!1;let v0=`${H0.id}:`;for(let[b0,s0]of f0)if(s0==="running"&&b0.startsWith(v0))return!0;return!1}),B1=U0(()=>{let f0=lH(J.worktreeChanges?.(),H0.worktreePath);if(f0)return f0;if(A(),!H0.archived)NW(H0.worktreePath);return gW(H0.worktreePath)},void 0,{equals:$z}),D1=U0(()=>{return A(),QF(H0.repo),XF(H0.repo)}),f1=U0(()=>AW({task:H0,activity:J.engineState?.().get(H0.id),job:J.taskJobs?.().get(H0.id),live:P0(),spinnerFrame:0,subtitleBudget:X0(),truncateBranch:MF,mainBranch:D1()})),Y0=U0(()=>RW(f1(),y)),G0=()=>!Y0().loading?z.primary:V0(Y0().tone),B0=()=>t0()?z.focusAccent:z1()?z.primary:void 0,R0=()=>t0()||z1()?"\u258C":" ";return(()=>{var f0=W("box"),v0=W("box"),b0=W("box"),s0=W("text"),S0=W("box"),E0=W("text"),b=W("text"),Q1=W("box"),e0=W("text"),l0=W("box"),m0=W("text");return D(f0,v0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingBottom",0),D(v0,b0),D(v0,Q1),qz((W0)=>{I0.set(k0,W0),b1(()=>{if(I0.get(k0)===W0)I0.delete(k0)})},v0),Q(v0,"flexDirection","column"),Q(v0,"gap",0),Q(v0,"onMouseUp",()=>{if(i0(k0),J.onSelect(H0.id),J.activateOnClick)F0(H0.id)}),Q(v0,"onMouseOver",(W0)=>r0({task:H0,x:W0.x,y:W0.y})),Q(v0,"onMouseOut",()=>r0((W0)=>W0?.task.id===H0.id?null:W0)),D(b0,s0),D(b0,S0),Q(b0,"flexDirection","row"),Q(b0,"gap",0),Q(s0,"wrapMode","none"),U(s0,R0),D(S0,E0),D(S0,b),Q(S0,"flexDirection","row"),Q(S0,"flexGrow",1),Q(S0,"paddingRight",1),Q(S0,"gap",0),Q(E0,"wrapMode","none"),U(E0,()=>Y0().projectGlyph),Q(b,"wrapMode","none"),Q(b,"flexGrow",1),U(b,()=>OW(Y0().titleText,n())),D(Q1,e0),D(Q1,l0),Q(Q1,"flexDirection","row"),Q(Q1,"gap",0),Q(e0,"wrapMode","none"),U(e0,R0),D(l0,m0),Q(l0,"flexDirection","row"),Q(l0,"flexGrow",1),Q(l0,"paddingLeft",2),Q(l0,"paddingRight",1),Q(l0,"gap",1),Q(m0,"wrapMode","none"),Q(m0,"flexGrow",1),U(m0,()=>Y0().subtitleText),U(l0,I(z0,{get when(){return B1().added>0},get children(){var W0=W("text"),x0=u0("+");return D(W0,x0),Q(W0,"wrapMode","none"),U(W0,()=>B1().added,null),x((I1)=>Q(W0,"fg",z.success,I1)),W0}}),null),U(l0,I(z0,{get when(){return B1().deleted>0},get children(){var W0=W("text"),x0=u0("\u2212");return D(W0,x0),Q(W0,"wrapMode","none"),U(W0,()=>B1().deleted,null),x((I1)=>Q(W0,"fg",z.error,I1)),W0}}),null),x((W0)=>{var x0=t0()?z.backgroundElement:void 0,I1=B0(),M1=G0(),A1=m1.BOLD,i=z.text,T=m1.BOLD,O0=B0(),e=z.textMuted,y0=m1.DIM;return x0!==W0.e&&(W0.e=Q(v0,"backgroundColor",x0,W0.e)),I1!==W0.t&&(W0.t=Q(s0,"fg",I1,W0.t)),M1!==W0.a&&(W0.a=Q(E0,"fg",M1,W0.a)),A1!==W0.o&&(W0.o=Q(E0,"attributes",A1,W0.o)),i!==W0.i&&(W0.i=Q(b,"fg",i,W0.i)),T!==W0.n&&(W0.n=Q(b,"attributes",T,W0.n)),O0!==W0.s&&(W0.s=Q(e0,"fg",O0,W0.s)),e!==W0.h&&(W0.h=Q(m0,"fg",e,W0.h)),y0!==W0.r&&(W0.r=Q(m0,"attributes",y0,W0.r)),W0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),f0})()};return(()=>{var o=W("box"),H0=W("box"),k0=W("box"),t0=W("text"),z1=W("box"),P0=W("box"),B1=W("text"),D1=W("scrollbox"),f1=W("box");return D(o,H0),D(o,z1),D(o,D1),qz((Y0)=>{w0=Y0},o),Q(o,"flexGrow",1),Q(o,"minHeight",0),Q(o,"flexDirection","column"),Q(o,"paddingTop",1),Q(o,"paddingBottom",1),Q(o,"paddingLeft",0),Q(o,"paddingRight",0),D(H0,k0),Q(H0,"flexDirection","row"),Q(H0,"justifyContent","space-between"),Q(H0,"gap",1),Q(H0,"paddingBottom",1),Q(H0,"paddingLeft",1),Q(H0,"paddingRight",1),D(k0,t0),Q(k0,"flexDirection","row"),Q(k0,"gap",1),D(t0,u0("KOBE")),Q(t0,"wrapMode","none"),U(k0,I(z0,{get when(){return J.headerStatus?.()},children:(Y0)=>(()=>{var G0=W("text");return Q(G0,"wrapMode","none"),Q(G0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(G0,()=>Y0().label),x((B0)=>{var R0=Y0().emphasize?z.warning:z.textMuted,f0=Y0().emphasize?m1.BOLD:m1.DIM;return R0!==B0.e&&(B0.e=Q(G0,"fg",R0,B0.e)),f0!==B0.t&&(B0.t=Q(G0,"attributes",f0,B0.t)),B0},{e:void 0,t:void 0}),G0})()}),null),U(H0,I(z0,{get when(){return J.onAddTask},get children(){var Y0=W("text");return D(Y0,u0("[+]")),Q(Y0,"wrapMode","none"),Q(Y0,"onMouseUp",()=>J.onAddTask?.()),x((G0)=>{var B0=z.primary,R0=m1.BOLD;return B0!==G0.e&&(G0.e=Q(Y0,"fg",B0,G0.e)),R0!==G0.t&&(G0.t=Q(Y0,"attributes",R0,G0.t)),G0},{e:void 0,t:void 0}),Y0}}),null),U(o,I(z0,{get when(){return X()},get children(){var Y0=W("box"),G0=W("text"),B0=W("text"),R0=W("text");return D(Y0,G0),D(Y0,B0),D(Y0,R0),Q(Y0,"flexDirection","row"),Q(Y0,"gap",0),Q(Y0,"paddingBottom",1),Q(Y0,"paddingLeft",1),D(G0,u0("/")),Q(G0,"wrapMode","none"),Q(B0,"wrapMode","none"),U(B0,H),D(R0,u0("\u2588")),Q(R0,"wrapMode","none"),U(Y0,I(z0,{get when(){return H().length===0},get children(){var f0=W("text"),v0=u0(" ");return D(f0,v0),Q(f0,"wrapMode","none"),U(f0,()=>M("tasks.search.placeholder"),null),x((b0)=>Q(f0,"fg",z.textMuted,b0)),f0}}),null),U(Y0,I(z0,{get when(){return H().length>0},get children(){var f0=W("text"),v0=u0(" "),b0=u0("/");return D(f0,v0),D(f0,b0),Q(f0,"wrapMode","none"),U(f0,()=>D0().length,b0),U(f0,h,null),x((s0)=>Q(f0,"fg",z.textMuted,s0)),f0}}),null),x((f0)=>{var{info:v0,text:b0,info:s0}=z,S0=m1.BLINK;return v0!==f0.e&&(f0.e=Q(G0,"fg",v0,f0.e)),b0!==f0.t&&(f0.t=Q(B0,"fg",b0,f0.t)),s0!==f0.a&&(f0.a=Q(R0,"fg",s0,f0.a)),S0!==f0.o&&(f0.o=Q(R0,"attributes",S0,f0.o)),f0},{e:void 0,t:void 0,a:void 0,o:void 0}),Y0}}),z1),D(z1,P0),Q(z1,"flexDirection","row"),Q(z1,"justifyContent","space-between"),Q(z1,"gap",1),Q(z1,"paddingBottom",1),Q(z1,"paddingLeft",1),Q(z1,"paddingRight",1),D(P0,B1),Q(P0,"flexDirection","row"),Q(P0,"gap",2),U(P0,I(Z1,{each:yQ,children:(Y0)=>{let G0=()=>Z()===Y0.view;return(()=>{var B0=W("text");return Q(B0,"wrapMode","none"),Q(B0,"onMouseUp",()=>G(Y0.view)),U(B0,()=>qE(Y0.view)),x((R0)=>{var f0=G0()?z.primary:z.textMuted,v0=G0()?m1.BOLD:void 0;return f0!==R0.e&&(R0.e=Q(B0,"fg",f0,R0.e)),v0!==R0.t&&(R0.t=Q(B0,"attributes",v0,R0.t)),R0},{e:void 0,t:void 0}),B0})()}}),B1),D(B1,u0("[/]")),Q(B1,"wrapMode","none"),U(z1,I(z0,{get when(){return J.sortMode},get children(){var Y0=W("text");return Q(Y0,"wrapMode","none"),Q(Y0,"onMouseUp",()=>J.onSortModeToggle?.()),U(Y0,()=>M("tasks.sort")),x((G0)=>{var B0=z.textMuted,R0=m1.DIM;return B0!==G0.e&&(G0.e=Q(Y0,"fg",B0,G0.e)),R0!==G0.t&&(G0.t=Q(Y0,"attributes",R0,G0.t)),G0},{e:void 0,t:void 0}),Y0}}),null),U(o,I(z0,{get when(){return T0().length>0},get children(){var Y0=W("box"),G0=W("box"),B0=W("text"),R0=W("text"),f0=W("scrollbox"),v0=W("box");return D(Y0,G0),D(Y0,f0),Q(Y0,"flexDirection","column"),Q(Y0,"flexShrink",0),D(G0,B0),D(G0,R0),Q(G0,"flexDirection","row"),Q(G0,"flexShrink",0),Q(G0,"gap",1),Q(G0,"paddingLeft",1),Q(G0,"paddingRight",1),Q(G0,"onMouseUp",()=>t()),Q(B0,"wrapMode","none"),U(B0,()=>M("tasks.header.projects")),U(G0,I(z0,{get when(){return w().length>1},get children(){var b0=W("text");return Q(b0,"wrapMode","none"),U(b0,s),x((s0)=>{var S0=d()?z.primary:z.textMuted,E0=d()?m1.BOLD:void 0;return S0!==s0.e&&(s0.e=Q(b0,"fg",S0,s0.e)),E0!==s0.t&&(s0.t=Q(b0,"attributes",E0,s0.t)),s0},{e:void 0,t:void 0}),b0}}),R0),Q(R0,"wrapMode","none"),U(R0,()=>"\u2500".repeat(Math.max(2,u()-10-M("tasks.header.projects").length-(w().length>1?s().length+1:0)-(w().length>1?J0().length+1:0)))),U(G0,I(z0,{get when(){return w().length>1},get children(){var b0=W("text");return Q(b0,"wrapMode","none"),U(b0,J0),x((s0)=>{var S0=z.textMuted,E0=m1.DIM;return S0!==s0.e&&(s0.e=Q(b0,"fg",S0,s0.e)),E0!==s0.t&&(s0.t=Q(b0,"attributes",E0,s0.t)),s0},{e:void 0,t:void 0}),b0}}),null),D(f0,v0),qz((b0)=>{k1=b0},f0),Q(f0,"flexShrink",0),Q(f0,"flexGrow",0),Q(f0,"minHeight",0),Q(f0,"stickyScroll",!1),Q(f0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(v0,"flexShrink",0),Q(v0,"gap",0),Q(v0,"paddingRight",1),U(v0,I(Z1,{get each(){return T0()},children:(b0)=>I(X1,{row:b0})})),x((b0)=>{var s0=z.textMuted,S0=m1.BOLD,E0=z.border,b=L0();return s0!==b0.e&&(b0.e=Q(B0,"fg",s0,b0.e)),S0!==b0.t&&(b0.t=Q(B0,"attributes",S0,b0.t)),E0!==b0.a&&(b0.a=Q(R0,"fg",E0,b0.a)),b!==b0.o&&(b0.o=Q(f0,"maxHeight",b,b0.o)),b0},{e:void 0,t:void 0,a:void 0,o:void 0}),Y0}}),D1),U(o,I(Z0,{get label(){return M("tasks.header.tasks")},get suffix(){return N0(()=>F()==="default")()?void 0:F()},get topPad(){return T0().length>0}}),D1),D(D1,f1),qz((Y0)=>{C0=Y0},D1),Q(D1,"flexGrow",1),Q(D1,"minHeight",0),Q(D1,"stickyScroll",!1),Q(D1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(f1,"flexShrink",0),Q(f1,"gap",0),Q(f1,"paddingRight",1),U(f1,I(Z1,{get each(){return S()},children:(Y0)=>{let{task:G0,flatIndex:B0}=Y0,R0=()=>B0===g0(),f0=()=>G0.id===J.selectedId(),v0=U0(()=>{let e0=J.chatRunState?.();if(!e0)return!1;let l0=`${G0.id}:`;for(let[m0,W0]of e0)if(W0==="running"&&m0.startsWith(l0))return!0;return!1}),b0=U0(()=>{let e0=lH(J.worktreeChanges?.(),G0.worktreePath);if(e0)return e0;if(A(),!G0.archived)NW(G0.worktreePath);return gW(G0.worktreePath)},void 0,{equals:$z}),s0=U0(()=>AW({task:G0,activity:J.engineState?.().get(G0.id),job:J.taskJobs?.().get(G0.id),live:v0(),spinnerFrame:0,subtitleBudget:X0(),truncateBranch:MF,mainBranch:""})),S0=U0(()=>RW(s0(),y)),E0=()=>V0(S0().tone),b=()=>R0()?z.focusAccent:f0()?z.primary:void 0,Q1=()=>R0()||f0()?"\u258C":" ";return(()=>{var e0=W("box"),l0=W("box"),m0=W("box"),W0=W("text"),x0=W("box"),I1=W("text"),M1=W("text"),A1=W("box"),i=W("text"),T=W("box"),O0=W("text");return D(e0,l0),Q(e0,"flexDirection","column"),Q(e0,"gap",0),Q(e0,"paddingBottom",1),D(l0,m0),D(l0,A1),qz((e)=>{I0.set(B0,e),b1(()=>{if(I0.get(B0)===e)I0.delete(B0)})},l0),Q(l0,"flexDirection","column"),Q(l0,"gap",0),Q(l0,"onMouseUp",()=>{if(i0(B0),J.onSelect(G0.id),J.activateOnClick)F0(G0.id)}),Q(l0,"onMouseOver",(e)=>r0({task:G0,x:e.x,y:e.y})),Q(l0,"onMouseOut",()=>r0((e)=>e?.task.id===G0.id?null:e)),D(m0,W0),D(m0,x0),Q(m0,"flexDirection","row"),Q(m0,"gap",0),Q(W0,"wrapMode","none"),U(W0,Q1),D(x0,I1),D(x0,M1),Q(x0,"flexDirection","row"),Q(x0,"flexGrow",1),Q(x0,"paddingRight",1),Q(x0,"gap",0),Q(I1,"wrapMode","none"),U(I1,()=>S0().stateGlyph),Q(M1,"wrapMode","none"),Q(M1,"flexGrow",1),U(M1,()=>OW(S0().titleText,n())),U(x0,I(z0,{get when(){return N0(()=>!!J.moveMode?.())()&&R0()},get children(){var e=W("text");return Q(e,"wrapMode","none"),U(e,()=>M("tasks.moveChip")),x((y0)=>Q(e,"fg",z.warning,y0)),e}}),null),D(A1,i),D(A1,T),Q(A1,"flexDirection","row"),Q(A1,"gap",0),Q(i,"wrapMode","none"),U(i,Q1),D(T,O0),Q(T,"flexDirection","row"),Q(T,"flexGrow",1),Q(T,"paddingLeft",2),Q(T,"paddingRight",1),Q(T,"gap",1),Q(O0,"wrapMode","none"),Q(O0,"flexGrow",1),U(O0,()=>S0().subtitleText),U(T,I(z0,{get when(){return G0.pinned===!0},get children(){var e=W("text");return D(e,u0("\u25B4")),Q(e,"wrapMode","none"),x((y0)=>Q(e,"fg",z.warning,y0)),e}}),null),U(T,I(z0,{get when(){return VF(G0)},children:(e)=>(()=>{var y0=W("text");return Q(y0,"wrapMode","none"),U(y0,()=>e().glyph),x((F1)=>Q(y0,"fg",V0(e().tone),F1)),y0})()}),null),U(T,I(z0,{get when(){return b0().added>0},get children(){var e=W("text"),y0=u0("+");return D(e,y0),Q(e,"wrapMode","none"),U(e,()=>b0().added,null),x((F1)=>Q(e,"fg",z.success,F1)),e}}),null),U(T,I(z0,{get when(){return b0().deleted>0},get children(){var e=W("text"),y0=u0("\u2212");return D(e,y0),Q(e,"wrapMode","none"),U(e,()=>b0().deleted,null),x((F1)=>Q(e,"fg",z.error,F1)),e}}),null),x((e)=>{var y0=R0()?z.backgroundElement:void 0,F1=b(),DJ=E0(),n1=m1.BOLD,j1=z.text,bJ=f0()||R0()?m1.BOLD:void 0,BJ=b(),pJ=z.textMuted,IJ=m1.DIM;return y0!==e.e&&(e.e=Q(l0,"backgroundColor",y0,e.e)),F1!==e.t&&(e.t=Q(W0,"fg",F1,e.t)),DJ!==e.a&&(e.a=Q(I1,"fg",DJ,e.a)),n1!==e.o&&(e.o=Q(I1,"attributes",n1,e.o)),j1!==e.i&&(e.i=Q(M1,"fg",j1,e.i)),bJ!==e.n&&(e.n=Q(M1,"attributes",bJ,e.n)),BJ!==e.s&&(e.s=Q(i,"fg",BJ,e.s)),pJ!==e.h&&(e.h=Q(O0,"fg",pJ,e.h)),IJ!==e.r&&(e.r=Q(O0,"attributes",IJ,e.r)),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),e0})()}}),null),U(f1,I(z0,{get when(){return D0().length===0},get children(){var Y0=W("box"),G0=W("text");return D(Y0,G0),Q(Y0,"paddingTop",1),Q(Y0,"paddingLeft",1),U(G0,(()=>{var B0=N0(()=>!!(X()&&H().trim().length>0));return()=>B0()?M("tasks.empty.noMatchSearch"):N0(()=>!!d())()?N0(()=>Z()==="active")()?M("tasks.empty.noActiveProject"):M("tasks.empty.noArchivedProject"):N0(()=>Z()==="active")()?M("tasks.empty.noActive"):M("tasks.empty.noArchived")})()),x((B0)=>Q(G0,"fg",z.textMuted,B0)),Y0}}),null),U(f1,I(z0,{get when(){return N0(()=>!!(d()&&D0().length>0&&!R()))()&&!(X()&&H().trim().length>0)},get children(){var Y0=W("box"),G0=W("text");return D(Y0,G0),Q(Y0,"paddingTop",1),Q(Y0,"paddingLeft",1),Q(G0,"wrapMode","none"),U(G0,(()=>{var B0=N0(()=>Z()==="active");return()=>B0()?M("tasks.empty.noActiveProject"):M("tasks.empty.noArchivedProject")})()),x((B0)=>{var R0=z.textMuted,f0=m1.DIM;return R0!==B0.e&&(B0.e=Q(G0,"fg",R0,B0.e)),f0!==B0.t&&(B0.t=Q(G0,"attributes",f0,B0.t)),B0},{e:void 0,t:void 0}),Y0}}),null),U(f1,I(z0,{get when(){return N0(()=>Z()==="archived")()&&D0().length>0},get children(){var Y0=W("box"),G0=W("text");return D(Y0,G0),Q(Y0,"paddingTop",1),Q(Y0,"paddingLeft",1),Q(G0,"wrapMode","none"),U(G0,()=>M("tasks.archiveHint")),x((B0)=>{var R0=z.textMuted,f0=m1.DIM;return R0!==B0.e&&(B0.e=Q(G0,"fg",R0,B0.e)),f0!==B0.t&&(B0.t=Q(G0,"attributes",f0,B0.t)),B0},{e:void 0,t:void 0}),Y0}}),null),U(o,I(z0,{get when(){return J.zenActive?.()},get children(){var Y0=W("box"),G0=W("text");return D(Y0,G0),Q(Y0,"flexShrink",0),Q(Y0,"paddingLeft",1),Q(Y0,"paddingRight",1),Q(Y0,"paddingTop",1),D(G0,u0("\u262F ZEN")),Q(G0,"wrapMode","none"),Q(G0,"onMouseUp",()=>J.onZenClick?.()),x((B0)=>{var R0=z.accent,f0=m1.BOLD;return R0!==B0.e&&(B0.e=Q(G0,"fg",R0,B0.e)),f0!==B0.t&&(B0.t=Q(G0,"attributes",f0,B0.t)),B0},{e:void 0,t:void 0}),Y0}}),null),U(o,I(z0,{get when(){return M0()},children:(Y0)=>{let G0=U0(()=>{let S0=Y0().task,E0=[];if(E0.push({text:S0.kind==="main"?xz(S0.repo):S0.title,bold:!0}),S0.branch.length>0)E0.push({text:`\u2387 ${S0.branch}`});if(S0.worktreePath.length>0)E0.push({text:S0.worktreePath,dim:!0});return E0}),B0=72,R0=U0(()=>Math.min(68,Math.max(...G0().map((S0)=>dj(S0.text))))),f0=U0(()=>R0()+4),v0=U0(()=>G0().length+2),b0=U0(()=>Math.max(0,Math.min(Y0().x+2,Q0().width-f0()-1))),s0=U0(()=>Math.max(0,Math.min(Y0().y+1,Q0().height-v0()-1)));return(()=>{var S0=W("box");return Q(S0,"position","absolute"),Q(S0,"zIndex",2600),Q(S0,"flexDirection","column"),Q(S0,"border",!0),Q(S0,"paddingLeft",1),Q(S0,"paddingRight",1),U(S0,I(Z1,{get each(){return G0()},children:(E0)=>(()=>{var b=W("text");return Q(b,"wrapMode","none"),U(b,(()=>{var Q1=N0(()=>!!E0.dim);return()=>Q1()?BE(E0.text,R0()):FW(E0.text,R0())})()),x((Q1)=>{var e0=E0.dim?z.textMuted:z.text,l0=E0.bold?m1.BOLD:E0.dim?m1.DIM:void 0;return e0!==Q1.e&&(Q1.e=Q(b,"fg",e0,Q1.e)),l0!==Q1.t&&(Q1.t=Q(b,"attributes",l0,Q1.t)),Q1},{e:void 0,t:void 0}),b})()})),x((E0)=>{var b=b0(),Q1=s0(),e0=f0(),l0=z.focusAccent,m0=z.backgroundElement;return b!==E0.e&&(E0.e=Q(S0,"left",b,E0.e)),Q1!==E0.t&&(E0.t=Q(S0,"top",Q1,E0.t)),e0!==E0.a&&(E0.a=Q(S0,"width",e0,E0.a)),l0!==E0.o&&(E0.o=Q(S0,"borderColor",l0,E0.o)),m0!==E0.i&&(E0.i=Q(S0,"backgroundColor",m0,E0.i)),E0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),S0})()}}),null),x((Y0)=>{var G0=Y()?z.focusAccent:z.textMuted,B0=m1.BOLD,R0=z.textMuted,f0=m1.DIM;return G0!==Y0.e&&(Y0.e=Q(t0,"fg",G0,Y0.e)),B0!==Y0.t&&(Y0.t=Q(t0,"attributes",B0,Y0.t)),R0!==Y0.a&&(Y0.a=Q(B1,"fg",R0,Y0.a)),f0!==Y0.o&&(Y0.o=Q(B1,"attributes",f0,Y0.o)),Y0},{e:void 0,t:void 0,a:void 0,o:void 0}),o})()}var LF=32,yQ,HE=2000,jE=16,BE;var OF=k(()=>{v();v();v();v();v();v();v();v();v();QJ();v();V1();v1();v1();qF();uj();jF();BF();KF();uG();DF();yQ=[{view:"active"},{view:"archived"}];BE=mj});var CF={};q1(CF,{startTasksPane:()=>UE,legendRowCap:()=>NF,legendCap:()=>gF});import{existsSync as AF}from"fs";import{stat as fE}from"fs/promises";import{TextAttributes as nj}from"@opentui/core";function RF(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return M("tasks.toast.worktreeErrorNotGit");return M("tasks.toast.worktreeErrorGeneric",{message:z})}function VE(J){let{theme:z}=h0(),Y=i1(),Z=tG(),G=kj(),[X,q]=p(J.tasks().some((m)=>m.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),[H,j]=p(null),B=()=>H()??X(),V=0;function f(m){G.notify({kind:"error",taskId:X()??"",tabId:"",title:m})}function K(m){G.notify({kind:"done",taskId:X()??"",tabId:"",title:m})}let[L,O]=p(!1),[A,C]=p(Z.get("activeSortMode")==="recent"?"recent":"default"),E=Z.get("tasksPane.projectFilter"),[y,N]=p(typeof E==="string"&&E.length>0?E:null),g=(m)=>{N(m),Z.set("tasksPane.projectFilter",m)},[F,w]=p(null),[l,d]=p(!1);{let m=process.env.TMUX_PANE;if(m){let F0=()=>{p0(["show-options","-wqv","-t",m,SY]).then(({code:V0,stdout:X1})=>{d(V0===0&&X1.trim().length>0)})};F0();let Z0=setInterval(F0,1000);b1(()=>clearInterval(Z0))}}let s=az();d0(()=>{if(J.initialTaskId)return;let m=J.orch?.activeTaskSignal()();if(!m)return;q(m)}),d0(JJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==e1(A))C(m.sortMode);if(m&&m.projectFilter!==e1(y))N(m.projectFilter)})),d0(()=>{let m=J.orch?.updateSignal()();if(m)w(m)});let P={orch:J.orch,tasks:()=>J.tasks(),confirm:async(m)=>await uz.show(Y,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,F0)=>rz.show(Y,m,F0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:K,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,F0)=>{if(X()!==m)return;let Z0=J.tasks();q(F0?.id??(Z0.find((V0)=>!V0.archived)??Z0[0])?.id??null)},promptNewTask:(m,F0,Z0)=>Fj.show(Y,m,F0,Z0),cursorRepo:()=>{let m=J.tasks();return(m.find((F0)=>F0.id===X())??m[0])?.repo},lastVendor:()=>hJ(S1("lastSelectedVendor"),vJ()),rememberVendor:(m)=>zJ("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(yZ(Z.get(WY,SZ))!=="chattab")return!1;let Z0=await PJ();if(!Z0)return!1;return await $X(Z0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>i0(m)};async function J0(){await t3(P)}async function q0(){if(yZ(Z.get(WY,SZ))==="chattab"){let Z0=await PJ();if(Z0){await iX(Z0);return}}if(!(await cZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let Z0=await PJ();if(Z0)await RG(Z0)}catch(Z0){console.error("[kobe tasks] failed to refresh workspace panes:",Z0)}}async function D0(){let m=await PJ();if(m){await lX(m);return}JX.show(Y)}async function K0(){if(!F()?.hasUpdate){K(M("tasks.toast.alreadyLatest",{version:J1}));return}let F0=await PJ();if(!F0)return;await aX(F0)}async function T0(m){await _3(P,m)}async function S(m){await p3(P,m)}async function a(m){await r3(P,m)}async function h(m){await o3(P,m)}async function R(m){await s3(P,m)}async function t(m){let Z0=J.tasks().find((X1)=>X1.id===m)?.worktreePath;if(!Z0||!AF(Z0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(M("tasks.toast.noDaemonWorktree"));return}try{Z0=await J.orch.ensureWorktree(m)}catch(X1){console.error("[kobe tasks] task.ensureWorktree failed:",X1),f(RF(X1));return}await J.reload()}if(!Z0||!AF(Z0))return;let V0=JF();if(!V0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(M("tasks.toast.noEditor"));return}if(!zF(Z0,V0))console.error(`[kobe tasks] failed to open worktree with ${V0.label}`),f(M("tasks.toast.openWorktreeFailed",{label:V0.label}))}async function u(){if(!process.env.TMUX_PANE)return;let m=await PJ();if(!m)return;let F0=await fG(m);if(!F0)return;await n0(["select-pane","-t",F0])}async function n(m,F0){let Z0=J.tasks().find((V0)=>V0.id===m);if(!Z0||Z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,F0)}catch(V0){console.error("[kobe tasks] task.move failed:",V0),f(M("tasks.toast.moveTaskFailed",{message:V0 instanceof Error?V0.message:String(V0)}));return}q(m),await J.reload()}async function X0(m){if(!J.orch)return;try{await J.orch.setPinned(m)}catch(F0){console.error("[kobe tasks] task.pin failed:",F0);return}await J.reload()}let[Q0,L0]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),M0=(m)=>{L0(m),Z.set("tasksPane.keysCollapsed",m)};d0(JJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==e1(Q0))L0(m.keysCollapsed)}));let[r0,g0]=p(!1);U1(()=>({enabled:Y.stack.length===0&&!r0(),bindings:oY({"help.open":()=>void D0(),"task.new":()=>void J0(),"settings.open.sidebar":()=>void q0(),"tasks.update":()=>void K0(),"tasks.openWorktree":()=>{let m=B();if(m)t(m)},"tasks.renameBranch":()=>{let m=B();if(m)h(m)},"tasks.cycleEngine":()=>{let m=B();if(m)R(m)},"tasks.toggleKeys":()=>M0(!Q0()),"tasks.focusEngine":()=>void u().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function i0(m){let F0=J.tasks().find((V0)=>V0.id===m);if(!F0)return;let Z0=++V;try{await ZW(J.orch,F0,F0.repo,F0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>V===Z0})}catch(V0){if(V0 instanceof tY)if(V0.phase==="no-daemon")f(M("tasks.toast.noDaemonOpen"));else if(V0.phase==="worktree")f(RF(V0.cause??V0));else f(M("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",V0)}}let k1=U0(()=>{let m=F();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),C0=()=>J.orch?.daemonStaleSignal()()??!1,w0=()=>J.orch?.daemonVersionSignal()()??null,I0=U0(()=>J.tasks().find((m)=>m.id===X())?.kind==="main");return(()=>{var m=W("box"),F0=W("box");return D(m,F0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),U(m,I(i3,{stale:C0,daemonVersion:w0,clientVersion:J1,width:()=>s().width}),F0),Q(F0,"flexGrow",1),Q(F0,"flexShrink",1),U(F0,I(FF,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(Z0)=>void i0(Z0),activateOnClick:!0,headerStatus:k1,onHeaderStatusClick:()=>void K0(),onAddTask:()=>void J0(),zenActive:l,onZenClick:()=>{(async()=>{let Z0=await PJ();if(Z0)await NZ(Z0,"zen-toggle")})()},width:()=>s().width,get engineState(){return N0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return N0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Z0=J.orch;if(!Z0||Z0.connectionStateSignal()()!=="online")return null;return Z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Z0)=>void a(Z0),onDeleteRequest:(Z0)=>void S(Z0),onArchiveRequest:(Z0)=>void T0(Z0),onPinRequest:(Z0)=>void X0(Z0),onLocalMergeRequest:(Z0)=>{let V0=J.tasks().find((X1)=>X1.id===Z0);if(!V0||V0.kind==="main")return;q(Z0),O((X1)=>!X1)},moveMode:L,onMoveRequest:(Z0,V0)=>void n(Z0,V0),onMoveModeExit:()=>O(!1),sortMode:A,projectFilter:y,onProjectFilterChange:g,onSortModeToggle:()=>{let Z0=A()==="default"?"recent":"default";C(Z0),Z.set("activeSortMode",Z0)},focused:()=>Y.stack.length===0,onSearchActiveChange:g0,onCursorChange:j})),U(m,I(KE,{moveMode:L,selectedIsMain:I0,collapsed:Q0,onToggleCollapsed:()=>M0(!Q0())}),null),x((Z0)=>Q(m,"backgroundColor",z.background,Z0)),m})()}function gF(J){let z=s8(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function NF(J){let z=J.map(gF).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function KE(J){let{theme:z}=h0(),[Y,Z]=p("Prefix");ZJ(()=>{p0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let O=wj(L);if(O)Z(O)})});let G=()=>{o8();let K=_q(),L=K.binds,O=[],A=K.focus.filter((E)=>E!==null).map((E)=>E.chord);if(A.length===4&&A.every((E,y)=>E===EY[y]))O.push({k:"ctrl+hjkl",label:M("tasks.hints.movePanes")});else if(A.length>0)O.push({k:A[0],label:M("tasks.hints.movePanes")});let C=(E,y)=>{let N=y.map((g)=>L[g]?.chord).filter((g)=>!!g);if(N.length>0)O.push({k:`prefix ${N.join("/")}`,label:E})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:M("tasks.hints.detach")});return C(M("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),C(M("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},X=()=>{o8();let K=[{ids:["help.open"],label:M("tasks.hints.fullHelp")},{ids:["task.new"],label:M("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:M("tasks.hints.settings")},{ids:["sidebar.select"],label:M("tasks.hints.open")},{ids:["tasks.focusEngine"],label:M("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:M("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:M("tasks.hints.delete")},{ids:["sidebar.view"],label:M("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:M("tasks.hints.project")}],L=[];for(let O of K){let A=NF(O.ids);if(A===null)continue;L.push({k:A,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:M("tasks.hints.reorder")},{k:"enter/esc",label:M("tasks.hints.done")}],H=()=>J.moveMode?.()?q():X(),j=18,B=()=>Math.min(j,Math.max(...H().map((K)=>dj(K.label)))),V=(K)=>{let L=B();if(dj(K)<=L)return K;let O=[...K],A=0,C=0;for(let E of O){let y=(E.codePointAt(0)??0)>=4352?2:1;if(A+y>L-1)break;A+=y,C++}return`${O.slice(0,C).join("")}\u2026`},f=()=>(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 O=N0(()=>!!f());return()=>O()?M("tasks.hints.headerFolded"):M("tasks.hints.headerUnfolded")})()),U(K,I(z0,{get when(){return!f()},get children(){return I(Z1,{get each(){return H()},children:(O)=>{let A=()=>O.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var C=W("box"),E=W("box"),y=W("text"),N=u0("["),g=u0("]"),F=W("box"),w=W("text");return D(C,E),D(C,F),Q(C,"flexDirection","row"),Q(C,"gap",1),Q(C,"justifyContent","space-between"),D(E,y),Q(E,"width",10),Q(E,"flexShrink",0),D(y,N),D(y,g),Q(y,"wrapMode","none"),U(y,()=>eG(O.k,Y()),g),D(F,w),Q(F,"flexShrink",0),Q(w,"wrapMode","none"),U(w,()=>V(O.label)),x((l)=>{var d=A()?z.textMuted:z.accent,s=A()?nj.DIM:nj.BOLD,P=B(),J0=z.textMuted,q0=A()?nj.DIM:void 0;return d!==l.e&&(l.e=Q(y,"fg",d,l.e)),s!==l.t&&(l.t=Q(y,"attributes",s,l.t)),P!==l.a&&(l.a=Q(F,"width",P,l.a)),J0!==l.o&&(l.o=Q(w,"fg",J0,l.o)),q0!==l.i&&(l.i=Q(w,"attributes",q0,l.i)),l},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),C})()}})}}),null),x((O)=>{var A=z.textMuted,C=nj.DIM;return A!==O.e&&(O.e=Q(L,"fg",A,O.e)),C!==O.t&&(O.t=Q(L,"attributes",C,O.t)),O},{e:void 0,t:void 0}),K})()}async function UE(J={}){await UJ({logContext:"tasks",providers:{notifications:!0},setup:()=>DE(J)})}async function DE(J){let z=new hG({homeDir:rJ()});await z.load();let[Y,Z]=p(z.list()),G=null;try{let B=await Qz();if(B){let V=new RJ(B);await V.init(),G=V}else ZY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){YJ("tasks-boot",B),ZY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await z.load(),Z(z.list())},H="",j=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await fE(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},WE);return{root:()=>[I(VE,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:q}),I(d3,{})],onDestroy:()=>{if(j)clearInterval(j);G?.dispose()}}}var WE=1500;var kF=k(()=>{v();v();v();v();v();v();v();v();P1();Lz();QJ();v();ZZ();CJ();V1();pY();r1();QQ();C1();pq();p1();NJ();HW();oG();jW();DW();n3();l3();sG();bQ();bj();v1();qW();FY();kJ();e3();yj();YF();OF();hY();GJ();aJ();Pj()});var bF={};q1(bF,{startSettingsHost:()=>ME});function LE(J){let z=tG(),Y=i1(),{theme:Z}=h0(),G=!1,X=!1;async function q(){if(X)return;X=!0;try{if(z.flush()&&G){let j=await PJ();if(j)await RG(j)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return U1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var H=W("scrollbox");return Q(H,"flexGrow",1),Q(H,"paddingTop",1),Q(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(H,I(cZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),x((j)=>Q(H,"backgroundColor",Z.background,j)),H})()}async function ME(){await UJ({setup:async()=>{let J=null;try{let z=await Qz();if(z){let Y=new RJ(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:()=>I(LE,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var IF=k(()=>{v();v();v();v();v();v();CJ();pY();DW();bQ();v1();FY();kJ();GJ();aJ()});var SF={};q1(SF,{startHelpHost:()=>OE});function FE(){let J=i1(),{theme:z}=h0();function Y(){process.exit(0)}return U1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return Q(Z,"flexGrow",1),Q(Z,"paddingTop",1),U(Z,I(JX,{onClose:Y})),x((G)=>Q(Z,"backgroundColor",z.background,G)),Z})()}async function OE(){await UJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>I(FE,{})})})}var yF=k(()=>{v();v();v();v();v();HW();v1();FY();kJ();aJ()});var TF={};q1(TF,{startUpdateHost:()=>bE});import{spawn as AE,spawnSync as RE}from"child_process";import{TextAttributes as GX}from"@opentui/core";function gE(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return AE(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function NE(J){return J.replace(/\r\n/g,`
|
|
265
269
|
`).split(`
|
|
266
|
-
`).map((z)=>z.trim()).filter(Boolean)}function
|
|
267
|
-
kobe ${J1} ->
|
|
270
|
+
`).map((z)=>z.trim()).filter(Boolean)}function CE(){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 kE(){let{theme:J}=h0(),z=jJ(),[Y,Z]=p(null),[G,X]=p([]),[q,H]=p(!0),[j,B]=p("update"),[V,f]=p(null),K=U0(()=>Y()?.latest??J1),L=U0(()=>G()[0]?.url??zB(K())),O=U0(()=>[{id:"update",key:"U",label:M("update.actions.updateNow"),detail:oz},{id:"release",key:"R",label:M("update.actions.openRelease"),detail:L()??M("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:M("update.actions.close"),detail:M("update.actions.closeDetail")}]);ZJ(()=>{A()});async function A(){let N=await QX({force:!0});Z(N);let g=N?.latest??J1,F=await JB({current:J1,latest:g});X(F),H(!1)}function C(N){let g=O().map((l)=>l.id),w=(g.indexOf(j())+N+g.length)%g.length;B(g[w]??"update")}function E(N=j()){if(N==="close")process.exit(0);if(N==="release"){f(gE(L())?M("update.statusReleaseOpened"):M("update.statusReleaseError"));return}y()}async function y(){f(M("update.statusRunningUpdater")),await new Promise((F)=>setTimeout(F,30)),z?.destroy(),process.stdout.write(`
|
|
271
|
+
kobe ${J1} -> ${K()}
|
|
268
272
|
`),process.stdout.write(`running: ${oz}
|
|
269
273
|
|
|
270
|
-
`);let
|
|
271
|
-
kobe update: failed to start updater: ${
|
|
274
|
+
`);let N=RE("sh",["-c",oz],{stdio:"inherit"}),g=N.status??(N.error?1:0);if(N.error)process.stderr.write(`
|
|
275
|
+
kobe update: failed to start updater: ${N.error.message}
|
|
272
276
|
`);process.stdout.write(g===0?`
|
|
273
|
-
${
|
|
277
|
+
${M("update.updateComplete")}
|
|
274
278
|
`:`
|
|
275
|
-
${
|
|
276
|
-
`),process.stdout.write(
|
|
277
|
-
`),Z=(G)=>{if(J.error)return z.error;if(G.startsWith("+")&&!G.startsWith("+++"))return z.success;if(G.startsWith("-")&&!G.startsWith("---"))return z.error;return z.textMuted};return(()=>{var G=W("box");return
|
|
278
|
-
`):""),X=()=>Y()?J.msg.blocks.filter((
|
|
279
|
-
`)}function
|
|
280
|
-
`).map((X)=>X.replace(/\r$/,"")),G=new Set;for(let X of Z)if(X.length>0)G.add(X);return Array.from(G).sort()}async function AW(J,z){let Y=await nf(["status","--porcelain","--untracked-files=all"],J,z),Z=m3(Y),G=new Map;try{let X=await nf(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let X=await nf(["diff","--no-color","--numstat","--cached"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{G=new Map}}return Z.map((X)=>{let Q=G.get(X.path);if(Q)return{...X,added:Q.added,deleted:Q.deleted};return X})}function P3(J){return Z6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function h3(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((X)=>X.length>0);if(Z.length===0)continue;let G=z;for(let X=0;X<Z.length;X++){let Q=Z[X],f=X!==Z.length-1,j=G.children.find((V)=>V.name===Q&&V.isDir===f);if(!j)j={name:Q,path:Z.slice(0,X+1).join("/"),isDir:f,children:[]},G.children.push(j);G=j}}return v3(z),z}function v3(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)v3(z)}function m3(J){let z=[];for(let Y of wH(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U")Z=X;else continue}let G=Y.path;if(G.length===0)continue;if(G.endsWith("/"))continue;z.push({path:G,status:Z})}return z}var RW=C(()=>{PH();hH()});function gW(J){U1(()=>({enabled:J.focused(),bindings:rY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),G=xQ.indexOf(Z);if(G<0)return;let X=(Y??0)%2===0?-1:1,Q=xQ[(G+X+xQ.length)%xQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var xQ;var NW=C(()=>{rG();kJ();xQ=["all","changes"]});import{spawn as c3}from"child_process";import{existsSync as bE}from"fs";import{platform as SE}from"os";function d3(J){if(!J)return;let z=SE();if(z==="linux"){if(bE("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){uQ("wslview",[J],()=>{let Y=c3("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(G)=>{Z+=G.toString()}),Y.on("close",(G)=>{if(G===0)uQ("explorer.exe",[Z.trim()])})});return}uQ("xdg-open",[J]);return}if(z==="darwin"){uQ("open",[J]);return}if(z==="win32"){uQ("cmd.exe",["/c","start","",J]);return}}function uQ(J,z,Y){try{let Z=c3(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var n3=()=>{};function CW(J,z,Y,Z){for(let G of J.children)if(G.isDir){let X=z.has(G.path);if(Z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)CW(G,z,Y+1,Z)}else Z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function i3(J,z){return hf(J,z)}function l3(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function IE(J){return`${J.kind}\x00${J.path}`}function yE(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function $3(J,z){return Tf(J,z,IE,yE)}function a3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function _3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=z[Y];if(Z.path!==G.path||Z.status!==G.status||Z.added!==G.added||Z.deleted!==G.deleted)return!1}return!0}var p3=()=>{};import{watch as TE}from"fs";import{TextAttributes as EQ}from"@opentui/core";function xE(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function EE(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function wE(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function kW(J){let{theme:z}=w0(),Y=az(),Z=()=>J.focused?J.focused():!0,[G,X]=p("all"),[Q,H]=p(0),[f,j]=p(0),[V,B]=p(null,{equals:a3}),[K,L]=p(null,{equals:_3}),[A,O]=p(null),[R,u]=p(new Set),P=0;async function S(r,c,N){let t=++P;if(c==null){B(null),L(null),O(null);return}O(null);try{if(r==="all"){let x=await OW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;B(x)}else if(r==="changes"){let x=await AW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;L(x)}}catch(x){if(N?.aborted)return;let n=x instanceof Error?x.message:String(x);if(t===P&&J.worktreePath()===c)O(n)}}_0(BJ(J.worktreePath,async(r)=>{B(null),L(null),O(null),H(0),u(new Set);let c=new AbortController;T1(()=>c.abort()),await S(G(),r,c.signal)})),_0(BJ(J.worktreePath,(r)=>{if(r==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let c=null,N=null;try{N=TE(r,{recursive:!0},(t,x)=>{if(x==null)return;let n=x.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(c!=null)clearTimeout(c);c=setTimeout(()=>{c=null,j((Q0)=>Q0+1)},500)}),N.on("error",()=>{})}catch{}T1(()=>{if(c!=null)clearTimeout(c);if(N!=null)N.close()})})),_0(BJ([G,f],async([r,c])=>{let N=J.worktreePath();if(N==null)return;H(0);let t=new AbortController;T1(()=>t.abort());let n=f()>0;if(r==="all"){if(V()==null||n)await S("all",N,t.signal)}else if(r==="changes"){if(K()==null||n)await S("changes",N,t.signal)}}));let g=U0(()=>{let r=V();if(r==null)return null;return h3(r)}),M=U0((r)=>{let c=[];if(G()==="all"){let N=g();if(N!=null)CW(N,R(),0,c)}else if(G()==="changes"){let N=K();if(N!=null)c.push(...l3(N))}return $3(r??[],c)},[]),T=U0(()=>{let r=0,c=0;for(let N of M()){if(N.kind!=="status")continue;if(N.added!=null)r=Math.max(r,String(N.added).length+1);if(N.deleted!=null)c=Math.max(c,String(N.deleted).length+1)}return{added:r,deleted:c}}),d=U0(()=>{let r=T(),c=(r.added>0?r.added+1:0)+(r.deleted>0?r.deleted+1:0);return Math.max(8,Y().width-6-c)});function i(){let r=M();if(r.length===0)return;H(Math.min(Q()+1,r.length-1))}function J0(){if(M().length===0)return;H(Math.max(Q()-1,0))}function E(){let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind!=="dir")return;if(!N.expanded&&N.hasChildren)u((t)=>{let x=new Set(t);return x.add(N.path),x});else if(N.expanded){if(c+1<r.length)H(c+1)}}function z0(){if(G()!=="all")return;let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind==="dir"&&N.expanded){u((x)=>{let n=new Set(x);return n.delete(N.path),n});return}if(N.kind!=="dir"&&N.kind!=="file")return;let t=N.depth-1;if(t<0)return;for(let x=c-1;x>=0;x--){let n=r[x];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(x);return}}}function q0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N)return;if(N.kind==="dir"){u((t)=>{let x=new Set(t);if(x.has(N.path))x.delete(N.path);else x.add(N.path);return x});return}J.onOpenFile(N.path)}function o(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;J.onMention?.(N.path)}function B0(){j((r)=>r+1),J.onRefresh?.()}function g0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;let t=J.worktreePath();if(!t)return;let x=`${t}/${N.path}`;d3(x)}gW({focused:Z,moveDown:i,moveUp:J0,setTab:(r)=>X(r),currentTab:G,openCurrent:q0,mentionCurrent:o,createPR:J.onCreatePR,openExternal:g0,refresh:B0,expandOrDescend:E,collapseOrParent:z0});let m;return _0(BJ([Q,M],([r,c])=>{if(!m)return;if(c.length===0)return;let N=m.scrollTop,t=m.viewport.height;if(t<=0)return;if(r<N)m.scrollTo({x:0,y:r});else if(r>=N+t)m.scrollTo({x:0,y:r-t+1})})),(()=>{var r=W("box"),c=W("box"),N=W("box"),t=W("scrollbox");return D(r,c),D(r,t),q(r,"flexDirection","column"),q(r,"flexGrow",1),q(r,"paddingTop",1),q(r,"paddingBottom",1),q(r,"paddingLeft",0),q(r,"paddingRight",0),U(r,b(Y0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"justifyContent","flex-end"),q(x,"gap",2),q(x,"paddingBottom",1),q(x,"flexShrink",0),U(x,b(Y0,{get when(){return J.onZenToggle},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onZenToggle?.()),D(Q0,T0("[~]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.zen")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(x,b(Y0,{get when(){return J.onCreatePR},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onCreatePR?.()),D(Q0,T0("[P]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.createPR")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),x}}),c),D(c,N),q(c,"flexDirection","row"),q(c,"justifyContent","space-between"),q(c,"paddingBottom",0),q(c,"flexShrink",0),q(N,"flexDirection","row"),q(N,"gap",2),U(N,b(Z1,{each:uE,children:(x)=>{let n=()=>G()===x;return(()=>{var Q0=W("text");return q(Q0,"wrapMode","none"),q(Q0,"onMouseUp",()=>X(x)),U(Q0,()=>wE(x)),y((H0)=>{var F0=n()?z.primary:z.textMuted,M0=n()?EQ.BOLD:void 0;return F0!==H0.e&&(H0.e=q(Q0,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),Q0})()}})),U(c,b(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var n=W("text");return q(n,"wrapMode","none"),U(n,()=>x().text),y((Q0)=>{var H0=x().active?z.accent:z.textMuted,F0=x().active?EQ.BOLD:void 0;return H0!==Q0.e&&(Q0.e=q(n,"fg",H0,Q0.e)),F0!==Q0.t&&(Q0.t=q(n,"attributes",F0,Q0.t)),Q0},{e:void 0,t:void 0}),n})()}),null),U(r,b(Y0,{get when(){return G()==="changes"},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","column"),q(x,"paddingBottom",1),q(x,"flexShrink",0),q(x,"gap",0),q(n,"wrapMode","none"),U(n,()=>F("files.legend.changes")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),t),U(r,b(Y0,{get when(){return G()!=="changes"},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"paddingBottom",1),q(x,"flexShrink",0),x}}),t),qz((x)=>{m=x},t),q(t,"flexGrow",1),q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,b(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,()=>F("files.empty.noTask")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var x=W("box"),n=W("text"),Q0=W("text");return D(x,n),D(x,Q0),q(x,"paddingTop",1),q(x,"paddingLeft",1),q(x,"flexDirection","column"),q(x,"gap",0),q(n,"wrapMode","word"),U(n,()=>EE(A()??"")),q(Q0,"wrapMode","word"),U(Q0,()=>F("files.error.retryHint")),y((H0)=>{var{error:F0,textMuted:M0}=z;return F0!==H0.e&&(H0.e=q(n,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,(()=>{var Q0=N0(()=>G()==="all");return()=>Q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var x=W("box");return q(x,"flexShrink",0),q(x,"gap",0),q(x,"paddingRight",1),U(x,b(Z1,{get each(){return M()},children:(n,Q0)=>{let H0=()=>Q0()===Q(),F0=(()=>{var Z0=W("text");return q(Z0,"wrapMode","none"),U(Z0,()=>H0()?"\u258C":" "),y((D0)=>q(Z0,"fg",H0()?z.focusAccent:void 0,D0)),Z0})(),M0=()=>H0()?z.backgroundElement:void 0;if(n.kind==="dir"){let Z0=" ".repeat(n.depth),D0=n.expanded?"\u25BE":"\u25B8";return(()=>{var P0=W("box"),G1=W("box"),c0=W("text");return D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",0),q(P0,"onMouseUp",()=>{H(Q0()),u((u0)=>{let k1=new Set(u0);if(k1.has(n.path))k1.delete(n.path);else k1.add(n.path);return k1})}),U(P0,F0,G1),D(G1,c0),q(G1,"flexGrow",1),q(G1,"paddingRight",1),q(c0,"wrapMode","none"),U(c0,()=>`${Z0}${D0} ${n.name}/`),y((u0)=>{var k1=M0(),s=z.textMuted,j0=EQ.BOLD;return k1!==u0.e&&(u0.e=q(P0,"backgroundColor",k1,u0.e)),s!==u0.t&&(u0.t=q(c0,"fg",s,u0.t)),j0!==u0.a&&(u0.a=q(c0,"attributes",j0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),P0})()}if(n.kind==="file"){let Z0=" ".repeat(n.depth);return(()=>{var D0=W("box"),P0=W("box"),G1=W("text");return D(D0,P0),q(D0,"flexDirection","row"),q(D0,"gap",0),q(D0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(D0,F0,P0),D(P0,G1),q(P0,"flexGrow",1),q(P0,"paddingRight",1),q(G1,"wrapMode","none"),U(G1,()=>`${Z0} ${n.name}`),y((c0)=>{var u0=M0(),k1=z.text;return u0!==c0.e&&(c0.e=q(D0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(G1,"fg",k1,c0.t)),c0},{e:void 0,t:void 0}),D0})()}let o0=xE(n.status),S0=()=>{switch(o0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},p0=T(),h=n.added==null?" ".repeat(p0.added):`+${n.added}`.padStart(p0.added),L0=n.deleted==null?" ".repeat(p0.deleted):`-${n.deleted}`.padStart(p0.deleted);return(()=>{var Z0=W("box"),D0=W("box"),P0=W("text"),G1=W("text");return D(Z0,D0),q(Z0,"flexDirection","row"),q(Z0,"gap",0),q(Z0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(Z0,F0,D0),D(D0,P0),D(D0,G1),q(D0,"flexDirection","row"),q(D0,"flexGrow",1),q(D0,"gap",1),q(D0,"paddingRight",1),q(P0,"wrapMode","none"),U(P0,()=>n.status),q(G1,"wrapMode","none"),q(G1,"flexGrow",1),U(G1,()=>i3(n.path,d())),U(D0,b(Y0,{get when(){return p0.added>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,h),y((u0)=>q(c0,"fg",z.success,u0)),c0}}),null),U(D0,b(Y0,{get when(){return p0.deleted>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,L0),y((u0)=>q(c0,"fg",z.error,u0)),c0}}),null),y((c0)=>{var u0=M0(),k1=S0(),s=z.text;return u0!==c0.e&&(c0.e=q(Z0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(P0,"fg",k1,c0.t)),s!==c0.a&&(c0.a=q(G1,"fg",s,c0.a)),c0},{e:void 0,t:void 0,a:void 0}),Z0})()}})),x}}),null),U(r,b(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","row"),q(x,"paddingTop",1),q(x,"flexShrink",0),q(n,"wrapMode","none"),U(n,()=>F("files.footer.openHint")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),r})()}var uE;var r3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();RW();NW();n3();p3();uE=["all","changes"]});var o3=C(()=>{r3();RW();NW()});function t3(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function e3(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var s3=2500,wQ=1500;import{promises as PE}from"fs";import hE from"path";async function lf(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),vE);try{let G=await qY("git",z,{cwd:J,env:iJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(Z)}}async function mE(J){return await lf(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function cE(J){let z=await lf(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function dE(J){let z=await lf(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function nE(J){let z=await lf(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
281
|
-
`)
|
|
279
|
+
${M("update.updateFailed",{code:String(g)})}
|
|
280
|
+
`),process.stdout.write(M("update.pressAnyKey")),await CE(),process.exit(g)}return U1(()=>({bindings:[{key:"up",cmd:()=>C(-1)},{key:"down",cmd:()=>C(1)},{key:"k",cmd:()=>C(-1)},{key:"j",cmd:()=>C(1)},{key:"return",cmd:()=>E()},{key:"u",cmd:()=>E("update")},{key:"r",cmd:()=>E("release")},{key:"q",cmd:()=>E("close")},{key:"escape",cmd:()=>E("close")},{key:"ctrl+c",cmd:()=>E("close")}]})),(()=>{var N=W("box"),g=W("box"),F=W("text"),w=W("text"),l=W("box"),d=W("text"),s=W("text"),P=u0("v"),J0=W("text"),q0=W("text"),D0=u0("v"),K0=W("box"),T0=W("box"),S=W("text"),a=W("scrollbox"),h=W("box");return D(N,g),D(N,l),D(N,K0),D(N,T0),D(N,a),Q(N,"flexDirection","column"),Q(N,"flexGrow",1),Q(N,"paddingTop",1),Q(N,"paddingLeft",2),Q(N,"paddingRight",2),D(g,F),D(g,w),Q(g,"flexDirection","row"),Q(g,"justifyContent","space-between"),Q(g,"flexShrink",0),Q(F,"wrapMode","none"),U(F,()=>M("update.pageTitle")),D(w,u0("q / esc")),Q(w,"wrapMode","none"),Q(w,"onMouseUp",()=>E("close")),D(l,d),D(l,s),D(l,J0),D(l,q0),Q(l,"flexDirection","row"),Q(l,"gap",2),Q(l,"flexShrink",0),Q(l,"paddingTop",1),Q(d,"wrapMode","none"),U(d,()=>M("update.current")),D(s,P),Q(s,"wrapMode","none"),U(s,J1,null),Q(J0,"wrapMode","none"),U(J0,()=>M("update.latest")),D(q0,D0),Q(q0,"wrapMode","none"),U(q0,K,null),Q(K0,"flexDirection","column"),Q(K0,"flexShrink",0),Q(K0,"paddingTop",1),Q(K0,"gap",0),U(K0,I(Z1,{get each(){return O()},children:(R)=>(()=>{var t=W("box"),u=W("box"),n=W("text"),X0=u0("["),Q0=u0("]"),L0=W("box"),M0=W("text"),r0=W("text");return D(t,u),D(t,L0),D(t,r0),Q(t,"flexDirection","row"),Q(t,"gap",1),Q(t,"paddingLeft",1),Q(t,"paddingRight",1),Q(t,"onMouseUp",()=>E(R.id)),D(u,n),Q(u,"width",4),Q(u,"flexShrink",0),D(n,X0),D(n,Q0),Q(n,"wrapMode","none"),U(n,()=>R.key,Q0),D(L0,M0),Q(L0,"width",14),Q(L0,"flexShrink",0),Q(M0,"wrapMode","none"),U(M0,()=>R.label),Q(r0,"wrapMode","word"),U(r0,()=>R.detail),x((g0)=>{var i0=j()===R.id?J.primary:void 0,k1=j()===R.id?J.selectedListItemText:J.accent,C0=GX.BOLD,w0=j()===R.id?J.selectedListItemText:J.text,I0=j()===R.id?J.selectedListItemText:J.textMuted;return i0!==g0.e&&(g0.e=Q(t,"backgroundColor",i0,g0.e)),k1!==g0.t&&(g0.t=Q(n,"fg",k1,g0.t)),C0!==g0.a&&(g0.a=Q(n,"attributes",C0,g0.a)),w0!==g0.o&&(g0.o=Q(M0,"fg",w0,g0.o)),I0!==g0.i&&(g0.i=Q(r0,"fg",I0,g0.i)),g0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})()})),U(N,I(z0,{get when(){return V()},get children(){var R=W("text");return Q(R,"wrapMode","word"),U(R,V),x((t)=>Q(R,"fg",J.info,t)),R}}),T0),D(T0,S),Q(T0,"flexShrink",0),Q(T0,"paddingTop",1),Q(S,"wrapMode","none"),U(S,()=>M("update.changesSectionHeader",{from:J1,to:K()})),D(a,h),Q(a,"flexGrow",1),Q(a,"flexShrink",1),Q(a,"stickyScroll",!1),Q(h,"flexDirection","column"),Q(h,"paddingRight",1),Q(h,"paddingBottom",1),Q(h,"gap",0),U(h,I(z0,{get when(){return q()},get children(){var R=W("text");return U(R,()=>M("update.loadingNotes")),x((t)=>Q(R,"fg",J.textMuted,t)),R}}),null),U(h,I(z0,{get when(){return N0(()=>!q())()&&G().length===0},get children(){var R=W("text");return Q(R,"wrapMode","word"),U(R,()=>M("update.notesUnavailable")),x((t)=>Q(R,"fg",J.textMuted,t)),R}}),null),U(h,I(Z1,{get each(){return G()},children:(R)=>(()=>{var t=W("box"),u=W("text"),n=u0("v");return D(t,u),Q(t,"flexDirection","column"),Q(t,"paddingBottom",1),Q(t,"gap",0),D(u,n),Q(u,"wrapMode","none"),U(u,()=>R.version,null),U(t,I(Z1,{get each(){return NE(R.body)},children:(X0)=>(()=>{var Q0=W("text");return Q(Q0,"wrapMode","word"),U(Q0,X0),x((L0)=>Q(Q0,"fg",J.textMuted,L0)),Q0})()}),null),x((X0)=>{var Q0=J.text,L0=GX.BOLD;return Q0!==X0.e&&(X0.e=Q(u,"fg",Q0,X0.e)),L0!==X0.t&&(X0.t=Q(u,"attributes",L0,X0.t)),X0},{e:void 0,t:void 0}),t})()}),null),x((R)=>{var{background:t,text:u}=J,n=GX.BOLD,X0=J.textMuted,Q0=J.textMuted,L0=J.text,M0=GX.BOLD,r0=J.textMuted,g0=Y()?.hasUpdate?J.warning:J.success,i0=GX.BOLD,k1=J.textMuted,C0=GX.DIM,w0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return t!==R.e&&(R.e=Q(N,"backgroundColor",t,R.e)),u!==R.t&&(R.t=Q(F,"fg",u,R.t)),n!==R.a&&(R.a=Q(F,"attributes",n,R.a)),X0!==R.o&&(R.o=Q(w,"fg",X0,R.o)),Q0!==R.i&&(R.i=Q(d,"fg",Q0,R.i)),L0!==R.n&&(R.n=Q(s,"fg",L0,R.n)),M0!==R.s&&(R.s=Q(s,"attributes",M0,R.s)),r0!==R.h&&(R.h=Q(J0,"fg",r0,R.h)),g0!==R.r&&(R.r=Q(q0,"fg",g0,R.r)),i0!==R.d&&(R.d=Q(q0,"attributes",i0,R.d)),k1!==R.l&&(R.l=Q(S,"fg",k1,R.l)),C0!==R.u&&(R.u=Q(S,"attributes",C0,R.u)),w0!==R.c&&(R.c=Q(a,"verticalScrollbarOptions",w0,R.c)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),N})()}async function bE(){await UJ({setup:()=>({root:()=>I(kE,{})})})}var xF=k(()=>{v();v();v();v();v();v();v();v();v();V1();NJ();v1();QJ();FY();kJ()});var EF={};q1(EF,{startHistoryHost:()=>hE});import{TextAttributes as XX}from"@opentui/core";function IE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function SE(J){let z=Date.parse(J);if(Number.isNaN(z))return"";let Y=Math.max(0,Math.floor((Date.now()-z)/1000));if(Y<60)return`${Y}s`;let Z=Math.floor(Y/60);if(Z<60)return`${Z}m`;let G=Math.floor(Z/60);if(G<24)return`${G}h`;return`${Math.floor(G/24)}d`}function yE(J){if(J&&typeof J==="object"&&!Array.isArray(J)){let z=J,Y=(G)=>typeof z[G]==="string"?z[G]:null,Z=Y("command")??Y("file_path")??Y("pattern")??Y("url")??Y("description")??Y("prompt")??Y("query");if(Z)return Z.length>lj?`${Z.slice(0,lj-1)}\u2026`:Z}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>lj?`${z.slice(0,lj-1)}\u2026`:z}catch{return""}}function TE(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function xE(J){let z=new Map;for(let Y of J)for(let Z of Y.blocks)if(Z.type==="tool_result")z.set(Z.callId,Z);return z}function uF(J){let{theme:z}=h0(),Y=()=>J.text.replace(/\s+$/,"").split(`
|
|
281
|
+
`),Z=(G)=>{if(J.error)return z.error;if(G.startsWith("+")&&!G.startsWith("+++"))return z.success;if(G.startsWith("-")&&!G.startsWith("---"))return z.error;return z.textMuted};return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"paddingLeft",2),Q(G,"marginLeft",2),U(G,I(Z1,{get each(){return Y()},children:(X)=>(()=>{var q=W("text");return Q(q,"wrapMode","word"),U(q,X||" "),x((H)=>Q(q,"fg",Z(X),H)),q})()})),x((X)=>Q(G,"backgroundColor",z.backgroundElement,X)),G})()}function uE(J){let{theme:z}=h0(),Y=J.block;switch(Y.type){case"text":return(()=>{var Z=W("text");return Q(Z,"wrapMode","word"),U(Z,()=>Y.text),x((G)=>Q(Z,"fg",z.text,G)),Z})();case"thinking":return(()=>{var Z=W("box"),G=W("text");return D(Z,G),Q(Z,"flexDirection","column"),Q(G,"wrapMode","none"),U(G,()=>`\u2731 ${M("history.thinking")}${J.expanded?"":"\u2026"}`),U(Z,I(z0,{get when(){return N0(()=>!!J.expanded)()&&Y.text.trim()},get children(){return I(uF,{get text(){return Y.text}})}}),null),x((X)=>{var q=z.textMuted,H=XX.ITALIC;return q!==X.e&&(X.e=Q(G,"fg",q,X.e)),H!==X.t&&(X.t=Q(G,"attributes",H,X.t)),X},{e:void 0,t:void 0}),Z})();case"tool_call":{let Z=!J.result?.isError,G=J.result?TE(J.result.output):"",X=yE(Y.input);return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text");return D(q,H),Q(q,"flexDirection","column"),D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),D(j,u0("\u23FA")),Q(j,"wrapMode","none"),Q(B,"wrapMode","none"),U(B,()=>Y.name),U(H,I(z0,{when:X,get children(){var V=W("text");return Q(V,"wrapMode","none"),U(V,X),x((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),U(q,I(z0,{get when(){return N0(()=>!!J.expanded)()&&G.trim()},get children(){return I(uF,{text:G,get error(){return J.result?.isError}})}}),null),x((V)=>{var f=Z?z.success:z.error,K=z.text,L=XX.BOLD;return f!==V.e&&(V.e=Q(j,"fg",f,V.e)),K!==V.t&&(V.t=Q(B,"fg",K,V.t)),L!==V.a&&(V.a=Q(B,"attributes",L,V.a)),V},{e:void 0,t:void 0,a:void 0}),q})()}case"tool_result":return null}}function EE(J){return J==="assistant"?M("history.role.assistant"):J==="system"?M("history.role.system"):M("history.role.user")}function wE(J){let{theme:z}=h0(),Y=()=>J.msg.role==="user",Z=()=>SE(J.msg.timestamp),G=U0(()=>Y()?J.msg.blocks.filter((q)=>q.type==="text"&&q.text.trim().length>0).map((q)=>q.text).join(`
|
|
282
|
+
`):""),X=()=>Y()?J.msg.blocks.filter((q)=>q.type!=="text"):J.msg.blocks;return(()=>{var q=W("box");return Q(q,"flexDirection","column"),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),Q(q,"paddingBottom",1),Q(q,"gap",0),U(q,I(z0,{get when(){return N0(()=>!!Y())()&&G()},get children(){var H=W("box"),j=W("text"),B=W("text");return D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),D(j,u0("\u276F")),Q(j,"wrapMode","none"),Q(B,"wrapMode","word"),Q(B,"flexGrow",1),U(B,G),U(H,I(z0,{get when(){return Z()},get children(){var V=W("text");return Q(V,"wrapMode","none"),U(V,Z),x((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),x((V)=>{var{backgroundElement:f,primary:K}=z,L=XX.BOLD,O=z.text;return f!==V.e&&(V.e=Q(H,"backgroundColor",f,V.e)),K!==V.t&&(V.t=Q(j,"fg",K,V.t)),L!==V.a&&(V.a=Q(j,"attributes",L,V.a)),O!==V.o&&(V.o=Q(B,"fg",O,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),U(q,I(z0,{get when(){return!Y()},get children(){var H=W("text");return Q(H,"wrapMode","none"),U(H,()=>EE(J.msg.role)),x((j)=>{var B=z.textMuted,V=XX.BOLD;return B!==j.e&&(j.e=Q(H,"fg",B,j.e)),V!==j.t&&(j.t=Q(H,"attributes",V,j.t)),j},{e:void 0,t:void 0}),H}}),null),U(q,I(Z1,{get each(){return X()},children:(H)=>I(uE,{block:H,get result(){return N0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function PE(J){let{theme:z}=h0(),[Y]=fZ(()=>J.worktree,async(y)=>{try{return await l1(J.vendor).history.listSessionIdsForWorktree(y)}catch{return[]}}),Z=()=>Y()??[],[G,X]=p(0);d0(JJ(Y,(y)=>{let N=(y??[]).length;X(N>0?N-1:0)}));let q=()=>Z()[G()],[H]=fZ(()=>q(),async(y)=>{if(!y)return[];try{return await l1(J.vendor).history.readHistory(y)}catch{return[]}}),j=()=>H()??[],B=U0(()=>xE(j())),V=U0(()=>j().reduce((y,N)=>y+(N.usage?.output_tokens??0),0)),[f,K]=p(!1),L,O=(y)=>{if(!L)return;L.scrollTo({x:0,y:Math.max(0,L.scrollTop+y)})};d0(JJ(q,()=>L?.scrollTo({x:0,y:0})));let A=(y)=>{let N=Z().length;if(N===0)return;X((g)=>Math.min(Math.max(g+y,0),N-1))};U1(()=>({bindings:[{key:"j",cmd:()=>O(ij)},{key:"k",cmd:()=>O(-ij)},{key:"down",cmd:()=>O(ij)},{key:"up",cmd:()=>O(-ij)},{key:"[",cmd:()=>A(-1)},{key:"]",cmd:()=>A(1)},{key:"return",cmd:()=>K((y)=>!y)}]}));let C=()=>J.title?.trim()||IE(J.worktree),E=()=>{let y=Z().length;return y>0?`${M("history.sessionLabel")} ${G()+1}/${y}`:""};return(()=>{var y=W("box"),N=W("box"),g=W("text"),F=W("text"),w=W("box"),l=W("scrollbox"),d=W("box"),s=W("text");return D(y,N),D(y,l),D(y,d),Q(y,"flexDirection","column"),Q(y,"flexGrow",1),D(N,g),D(N,F),D(N,w),Q(N,"flexDirection","row"),Q(N,"gap",1),Q(N,"paddingLeft",1),Q(N,"paddingRight",1),Q(N,"flexShrink",0),Q(g,"wrapMode","none"),U(g,()=>M("history.archivedTag")),Q(F,"wrapMode","none"),U(F,C),U(N,I(z0,{get when(){return E()},get children(){var P=W("text");return Q(P,"wrapMode","none"),U(P,()=>`\xB7 ${E()}`),x((J0)=>Q(P,"fg",z.textMuted,J0)),P}}),w),Q(w,"flexGrow",1),U(N,I(z0,{get when(){return V()>0},get children(){var P=W("text");return Q(P,"wrapMode","none"),U(P,()=>`${V()} tok`),x((J0)=>Q(P,"fg",z.textMuted,J0)),P}}),null),qz((P)=>{L=P},l),Q(l,"flexGrow",1),Q(l,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(l,I(z0,{get when(){return N0(()=>!Y.loading)()&&!H.loading},get fallback(){return(()=>{var P=W("box"),J0=W("text");return D(P,J0),Q(P,"paddingTop",1),Q(P,"paddingLeft",1),U(J0,()=>M("history.loading")),x((q0)=>Q(J0,"fg",z.textMuted,q0)),P})()},get children(){return I(z0,{get when(){return j().length>0},get fallback(){return(()=>{var P=W("box"),J0=W("text");return D(P,J0),Q(P,"paddingTop",1),Q(P,"paddingLeft",1),U(J0,()=>M("history.empty")),x((q0)=>Q(J0,"fg",z.textMuted,q0)),P})()},get children(){return I(Z1,{get each(){return j()},children:(P)=>I(wE,{msg:P,get results(){return B()},get expanded(){return f()}})})}})}})),D(d,s),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"flexShrink",0),Q(s,"wrapMode","none"),U(s,(()=>{var P=N0(()=>!!f());return()=>P()?M("history.hintExpanded"):M("history.hint")})()),x((P)=>{var{background:J0,backgroundElement:q0,warning:D0}=z,K0=XX.BOLD,T0=z.accent,S=XX.BOLD,a=z.backgroundElement,h=z.textMuted;return J0!==P.e&&(P.e=Q(y,"backgroundColor",J0,P.e)),q0!==P.t&&(P.t=Q(N,"backgroundColor",q0,P.t)),D0!==P.a&&(P.a=Q(g,"fg",D0,P.a)),K0!==P.o&&(P.o=Q(g,"attributes",K0,P.o)),T0!==P.i&&(P.i=Q(F,"fg",T0,P.i)),S!==P.n&&(P.n=Q(F,"attributes",S,P.n)),a!==P.s&&(P.s=Q(d,"backgroundColor",a,P.s)),h!==P.h&&(P.h=Q(s,"fg",h,P.h)),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}),y})()}async function hE(J){await UJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>I(PE,J)})})}var ij=3,lj=120;var wF=k(()=>{v();v();v();v();v();v();v();v();v();QY();V1();v1();QJ();FY();kJ()});function vE(J){return J.trim().split(/\s+/)[0]??""}function hF(J,z,Y,Z){let G=Y1(Y);if(J==="vim")return{bin:"vim",command:`vim ${G}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(J==="nano")return{bin:"nano",command:`nano ${G}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(z.trim()||(Z??"").trim()).trim();if(!X)return null;let q=vE(X);if(!q)return null;let H=X.includes(PF)?X.split(PF).join(G):`${X} ${G}`;return{bin:q,command:H}}function mE(J,z,Y){let Z=Y1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Y1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
|
|
283
|
+
`)}function cE(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function dE(J){let z=IG(S1(fY)),Y=S1(dY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return hF(z,Y,J,Z);if(Z)return hF("custom","",J,Z);let G=Y1(J);for(let X of o5)if(await vF(X))return{bin:X,command:`${X} ${G}`};return null}async function vF(J){try{return await Bun.spawn(["sh","-c",`command -v ${Y1(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function nE(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:lJ()}).exited===1}catch{return!1}}async function mF(J,z,Y){let Z=await dE(Y);if(!Z)return!1;if(!await vF(Z.bin))return!1;let G=await iE(Z,z,Y);return await Cz(J,{cwd:z,command:G,name:lE(Y)}),!0}async function iE(J,z,Y){let{bin:Z,command:G}=J;if(Z!=="nvim"&&Z!=="vim")return G;if(G!==`${Z} ${Y1(Y)}`)return G;let X=cE(z,Y);if(!X)return G;if(!await nE(z,X))return G;return mE(Z,Y,X)}function lE(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var PF="{file}";var cF=k(()=>{nY();C1();EH();P1();Lz()});async function $j(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await SG(z,J,{signal:Y}),G=Z.status??-1;if(G!==0){let X=(Z.stderr??"").trim(),q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${G}: ${X||q||"(no output)"}`)}return Z.stdout??""}async function nF(J,z){let Z=(await $j(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
|
|
284
|
+
`).map((X)=>X.replace(/\r$/,"")),G=new Set;for(let X of Z)if(X.length>0)G.add(X);return Array.from(G).sort()}async function iF(J,z){let Y=await $j(["status","--porcelain","--untracked-files=all"],J,z),Z=aE(Y),G=new Map;try{let H=await $j(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(dF(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{try{let H=await $j(["diff","--no-color","--numstat","--cached"],J,z);G=new Map(dF(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{G=new Map}}let X=Z.map((H)=>{let j=G.get(H.path);if(j)return{...H,added:j.added,deleted:j.deleted};return H}),q=X.filter((H)=>H.status==="?"&&H.added==null);if(q.length>0)await Promise.all(q.map(async(H)=>{let j=await $E(J,H.path,z);if(j!=null)H.added=j,H.deleted=0}));return X}async function $E(J,z,Y){if(Y?.aborted)return null;let Z=await hH(J,z);if(Z==null)return null;if(Z.includes("\x00"))return null;if(Z.length===0)return 0;let G=0;for(let X=0;X<Z.length;X++)if(Z[X]===`
|
|
285
|
+
`)G++;if(!Z.endsWith(`
|
|
286
|
+
`))G++;return G}function dF(J){return z6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function lF(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((X)=>X.length>0);if(Z.length===0)continue;let G=z;for(let X=0;X<Z.length;X++){let q=Z[X],j=X!==Z.length-1,B=G.children.find((V)=>V.name===q&&V.isDir===j);if(!B)B={name:q,path:Z.slice(0,X+1).join("/"),isDir:j,children:[]},G.children.push(B);G=B}}return $F(z),z}function $F(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)$F(z)}function aE(J){let z=[];for(let Y of wH(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U"||X==="T")Z=X;else continue}let G=Y.path;if(G.length===0)continue;if(G.endsWith("/"))continue;z.push({path:G,status:Z})}return z}var aF=k(()=>{PH();vH()});function _F(J){U1(()=>({enabled:J.focused(),bindings:oY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),G=aj.indexOf(Z);if(G<0)return;let X=(Y??0)%2===0?-1:1,q=aj[(G+X+aj.length)%aj.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 aj;var pF=k(()=>{sG();kJ();aj=["all","changes"]});import{spawn as rF}from"child_process";import{existsSync as _E}from"fs";import{platform as pE}from"os";function oF(J){if(!J)return;let z=pE();if(z==="linux"){if(_E("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){TQ("wslview",[J],()=>{let Y=rF("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(G)=>{Z+=G.toString()}),Y.on("close",(G)=>{if(G===0)TQ("explorer.exe",[Z.trim()])})});return}TQ("xdg-open",[J]);return}if(z==="darwin"){TQ("open",[J]);return}if(z==="win32"){TQ("cmd.exe",["/c","start","",J]);return}}function TQ(J,z,Y){try{let Z=rF(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var sF=()=>{};function CW(J,z,Y,Z){for(let G of J.children)if(G.isDir){let X=z.has(G.path);if(Z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)CW(G,z,Y+1,Z)}else Z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function tF(J,z){return mj(J,z)}function eF(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function rE(J){return`${J.kind}\x00${J.path}`}function oE(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 JO(J,z){return xj(J,z,rE,oE)}function zO(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 YO(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=z[Y];if(Z.path!==G.path||Z.status!==G.status||Z.added!==G.added||Z.deleted!==G.deleted)return!1}return!0}var ZO=()=>{};import{watch as sE}from"fs";import{TextAttributes as xQ}from"@opentui/core";function tE(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function Jw(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return M("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return M("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return M("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return M("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||M("files.error.gitFailed");return J.trim()||M("files.error.gitFailed")}function zw(J){switch(J){case"all":return M("files.tabs.all");case"changes":return M("files.tabs.changes")}}function GO(J){let{theme:z}=h0(),Y=az(),Z=()=>J.focused?J.focused():!0,[G,X]=p("all"),[q,H]=p(0),[j,B]=p(0),[V,f]=p(null,{equals:zO}),[K,L]=p(null,{equals:YO}),[O,A]=p(null),[C,E]=p(new Set),y=0;async function N(a,h,R){let t=++y;if(h==null){f(null),L(null),A(null);return}A(null);try{if(a==="all"){let u=await nF(h,R);if(R?.aborted||t!==y||J.worktreePath()!==h)return;f(u)}else if(a==="changes"){let u=await iF(h,R);if(R?.aborted||t!==y||J.worktreePath()!==h)return;L(u)}}catch(u){if(R?.aborted)return;let n=u instanceof Error?u.message:String(u);if(t===y&&J.worktreePath()===h)A(n)}}d0(JJ(J.worktreePath,async(a)=>{f(null),L(null),A(null),H(0),E(new Set);let h=new AbortController;b1(()=>h.abort()),await N(G(),a,h.signal)})),d0(JJ(J.worktreePath,(a)=>{if(a==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let h=null,R=null;try{R=sE(a,{recursive:!0},(t,u)=>{if(u==null)return;let n=u.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(h!=null)clearTimeout(h);h=setTimeout(()=>{h=null,B((X0)=>X0+1)},500)}),R.on("error",()=>{})}catch{}b1(()=>{if(h!=null)clearTimeout(h);if(R!=null)R.close()})})),d0(JJ(G,async(a)=>{let h=J.worktreePath();if(H(0),h==null)return;let R=new AbortController;if(b1(()=>R.abort()),a==="all"){if(V()==null)await N("all",h,R.signal)}else if(a==="changes"){if(K()==null)await N("changes",h,R.signal)}})),d0(JJ(j,async()=>{let a=G(),h=J.worktreePath();if(h==null)return;let R=new AbortController;b1(()=>R.abort()),await N(a,h,R.signal)},{defer:!0}));let g=U0(()=>{let a=V();if(a==null)return null;return lF(a)}),F=U0((a)=>{let h=[];if(G()==="all"){let R=g();if(R!=null)CW(R,C(),0,h)}else if(G()==="changes"){let R=K();if(R!=null)h.push(...eF(R))}return JO(a??[],h)},[]);d0(JJ(F,(a)=>{if(a.length===0)return;if(q()>a.length-1)H(a.length-1)}));let w=U0(()=>{let a=0,h=0;for(let R of F()){if(R.kind!=="status")continue;if(R.added!=null)a=Math.max(a,String(R.added).length+1);if(R.deleted!=null)h=Math.max(h,String(R.deleted).length+1)}return{added:a,deleted:h}}),l=U0(()=>{let a=w(),h=(a.added>0?a.added+1:0)+(a.deleted>0?a.deleted+1:0);return Math.max(8,Y().width-6-h)});function d(){let a=F();if(a.length===0)return;H(Math.min(q()+1,a.length-1))}function s(){if(F().length===0)return;H(Math.max(q()-1,0))}function P(){let a=F(),h=q(),R=a[h];if(!R)return;if(R.kind!=="dir")return;if(!R.expanded&&R.hasChildren)E((t)=>{let u=new Set(t);return u.add(R.path),u});else if(R.expanded){if(h+1<a.length)H(h+1)}}function J0(){if(G()!=="all")return;let a=F(),h=q(),R=a[h];if(!R)return;if(R.kind==="dir"&&R.expanded){E((u)=>{let n=new Set(u);return n.delete(R.path),n});return}if(R.kind!=="dir"&&R.kind!=="file")return;let t=R.depth-1;if(t<0)return;for(let u=h-1;u>=0;u--){let n=a[u];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(u);return}}}function q0(){let a=F(),h=q();if(h<0||h>=a.length)return;let R=a[h];if(!R)return;if(R.kind==="dir"){E((t)=>{let u=new Set(t);if(u.has(R.path))u.delete(R.path);else u.add(R.path);return u});return}J.onOpenFile(R.path)}function D0(){let a=F(),h=q();if(h<0||h>=a.length)return;let R=a[h];if(!R||R.kind==="dir")return;J.onMention?.(R.path)}function K0(){B((a)=>a+1),J.onRefresh?.()}function T0(){let a=F(),h=q();if(h<0||h>=a.length)return;let R=a[h];if(!R||R.kind==="dir")return;let t=J.worktreePath();if(!t)return;let u=`${t}/${R.path}`;oF(u)}_F({focused:Z,moveDown:d,moveUp:s,setTab:(a)=>X(a),currentTab:G,openCurrent:q0,mentionCurrent:D0,createPR:J.onCreatePR,openExternal:T0,refresh:K0,expandOrDescend:P,collapseOrParent:J0});let S;return d0(JJ([q,F],([a,h])=>{if(!S)return;if(h.length===0)return;let R=S.scrollTop,t=S.viewport.height;if(t<=0)return;if(a<R)S.scrollTo({x:0,y:a});else if(a>=R+t)S.scrollTo({x:0,y:a-t+1})})),(()=>{var a=W("box"),h=W("box"),R=W("box"),t=W("scrollbox");return D(a,h),D(a,t),Q(a,"flexDirection","column"),Q(a,"flexGrow",1),Q(a,"paddingTop",1),Q(a,"paddingBottom",1),Q(a,"paddingLeft",0),Q(a,"paddingRight",0),U(a,I(z0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var u=W("box");return Q(u,"flexDirection","row"),Q(u,"justifyContent","flex-end"),Q(u,"gap",2),Q(u,"paddingBottom",1),Q(u,"flexShrink",0),U(u,I(z0,{get when(){return J.onZenToggle},get children(){var n=W("box"),X0=W("text"),Q0=W("text");return D(n,X0),D(n,Q0),Q(n,"flexDirection","row"),Q(n,"gap",1),Q(n,"onMouseUp",()=>J.onZenToggle?.()),D(X0,u0("[~]")),Q(X0,"wrapMode","none"),Q(Q0,"wrapMode","none"),U(Q0,()=>M("files.actions.zen")),x((L0)=>{var M0=z.accent,r0=xQ.BOLD,g0=z.text;return M0!==L0.e&&(L0.e=Q(X0,"fg",M0,L0.e)),r0!==L0.t&&(L0.t=Q(X0,"attributes",r0,L0.t)),g0!==L0.a&&(L0.a=Q(Q0,"fg",g0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(u,I(z0,{get when(){return J.onCreatePR},get children(){var n=W("box"),X0=W("text"),Q0=W("text");return D(n,X0),D(n,Q0),Q(n,"flexDirection","row"),Q(n,"gap",1),Q(n,"onMouseUp",()=>J.onCreatePR?.()),D(X0,u0("[P]")),Q(X0,"wrapMode","none"),Q(Q0,"wrapMode","none"),U(Q0,()=>M("files.actions.createPR")),x((L0)=>{var M0=z.accent,r0=xQ.BOLD,g0=z.text;return M0!==L0.e&&(L0.e=Q(X0,"fg",M0,L0.e)),r0!==L0.t&&(L0.t=Q(X0,"attributes",r0,L0.t)),g0!==L0.a&&(L0.a=Q(Q0,"fg",g0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),n}}),null),u}}),h),D(h,R),Q(h,"flexDirection","row"),Q(h,"justifyContent","space-between"),Q(h,"paddingBottom",0),Q(h,"flexShrink",0),Q(R,"flexDirection","row"),Q(R,"gap",2),U(R,I(Z1,{each:eE,children:(u)=>{let n=()=>G()===u;return(()=>{var X0=W("text");return Q(X0,"wrapMode","none"),Q(X0,"onMouseUp",()=>X(u)),U(X0,()=>zw(u)),x((Q0)=>{var L0=n()?z.primary:z.textMuted,M0=n()?xQ.BOLD:void 0;return L0!==Q0.e&&(Q0.e=Q(X0,"fg",L0,Q0.e)),M0!==Q0.t&&(Q0.t=Q(X0,"attributes",M0,Q0.t)),Q0},{e:void 0,t:void 0}),X0})()}})),U(h,I(z0,{get when(){return J.cornerBadge?.()},children:(u)=>(()=>{var n=W("text");return Q(n,"wrapMode","none"),U(n,()=>u().text),x((X0)=>{var Q0=u().active?z.accent:z.textMuted,L0=u().active?xQ.BOLD:void 0;return Q0!==X0.e&&(X0.e=Q(n,"fg",Q0,X0.e)),L0!==X0.t&&(X0.t=Q(n,"attributes",L0,X0.t)),X0},{e:void 0,t:void 0}),n})()}),null),U(a,I(z0,{get when(){return G()==="changes"},get children(){var u=W("box"),n=W("text");return D(u,n),Q(u,"flexDirection","column"),Q(u,"paddingBottom",1),Q(u,"flexShrink",0),Q(u,"gap",0),Q(n,"wrapMode","none"),U(n,()=>M("files.legend.changes")),x((X0)=>Q(n,"fg",z.textMuted,X0)),u}}),t),U(a,I(z0,{get when(){return G()!=="changes"},get children(){var u=W("box");return Q(u,"flexDirection","row"),Q(u,"paddingBottom",1),Q(u,"flexShrink",0),u}}),t),qz((u)=>{S=u},t),Q(t,"flexGrow",1),Q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,I(z0,{get when(){return J.worktreePath()==null},get children(){var u=W("box"),n=W("text");return D(u,n),Q(u,"paddingTop",1),Q(u,"paddingLeft",1),U(n,()=>M("files.empty.noTask")),x((X0)=>Q(n,"fg",z.textMuted,X0)),u}}),null),U(t,I(z0,{get when(){return N0(()=>J.worktreePath()!=null)()&&O()!=null},get children(){var u=W("box"),n=W("text"),X0=W("text");return D(u,n),D(u,X0),Q(u,"paddingTop",1),Q(u,"paddingLeft",1),Q(u,"flexDirection","column"),Q(u,"gap",0),Q(n,"wrapMode","word"),U(n,()=>Jw(O()??"")),Q(X0,"wrapMode","word"),U(X0,()=>M("files.error.retryHint")),x((Q0)=>{var{error:L0,textMuted:M0}=z;return L0!==Q0.e&&(Q0.e=Q(n,"fg",L0,Q0.e)),M0!==Q0.t&&(Q0.t=Q(X0,"fg",M0,Q0.t)),Q0},{e:void 0,t:void 0}),u}}),null),U(t,I(z0,{get when(){return N0(()=>J.worktreePath()!=null&&O()==null&&F().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var u=W("box"),n=W("text");return D(u,n),Q(u,"paddingTop",1),Q(u,"paddingLeft",1),U(n,(()=>{var X0=N0(()=>G()==="all");return()=>X0()?M("files.empty.noFiles"):M("files.empty.noChanges")})()),x((X0)=>Q(n,"fg",z.textMuted,X0)),u}}),null),U(t,I(z0,{get when(){return N0(()=>J.worktreePath()!=null&&O()==null)()&&F().length>0},get children(){var u=W("box");return Q(u,"flexShrink",0),Q(u,"gap",0),Q(u,"paddingRight",1),U(u,I(Z1,{get each(){return F()},children:(n,X0)=>{let Q0=()=>X0()===q(),L0=(()=>{var w0=W("text");return Q(w0,"wrapMode","none"),U(w0,()=>Q0()?"\u258C":" "),x((I0)=>Q(w0,"fg",Q0()?z.focusAccent:void 0,I0)),w0})(),M0=()=>Q0()?z.backgroundElement:void 0;if(n.kind==="dir"){let w0=" ".repeat(n.depth),I0=n.expanded?"\u25BE":"\u25B8";return(()=>{var m=W("box"),F0=W("box"),Z0=W("text");return D(m,F0),Q(m,"flexDirection","row"),Q(m,"gap",0),Q(m,"onMouseUp",()=>{H(X0()),E((V0)=>{let X1=new Set(V0);if(X1.has(n.path))X1.delete(n.path);else X1.add(n.path);return X1})}),U(m,L0,F0),D(F0,Z0),Q(F0,"flexGrow",1),Q(F0,"paddingRight",1),Q(Z0,"wrapMode","none"),U(Z0,()=>`${w0}${I0} ${n.name}/`),x((V0)=>{var X1=M0(),o=z.textMuted,H0=xQ.BOLD;return X1!==V0.e&&(V0.e=Q(m,"backgroundColor",X1,V0.e)),o!==V0.t&&(V0.t=Q(Z0,"fg",o,V0.t)),H0!==V0.a&&(V0.a=Q(Z0,"attributes",H0,V0.a)),V0},{e:void 0,t:void 0,a:void 0}),m})()}if(n.kind==="file"){let w0=" ".repeat(n.depth);return(()=>{var I0=W("box"),m=W("box"),F0=W("text");return D(I0,m),Q(I0,"flexDirection","row"),Q(I0,"gap",0),Q(I0,"onMouseUp",()=>{H(X0()),J.onOpenFile(n.path)}),U(I0,L0,m),D(m,F0),Q(m,"flexGrow",1),Q(m,"paddingRight",1),Q(F0,"wrapMode","none"),U(F0,()=>`${w0} ${n.name}`),x((Z0)=>{var V0=M0(),X1=z.text;return V0!==Z0.e&&(Z0.e=Q(I0,"backgroundColor",V0,Z0.e)),X1!==Z0.t&&(Z0.t=Q(F0,"fg",X1,Z0.t)),Z0},{e:void 0,t:void 0}),I0})()}let r0=tE(n.status),g0=()=>{switch(r0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},i0=w(),k1=n.added==null?" ".repeat(i0.added):`+${n.added}`.padStart(i0.added),C0=n.deleted==null?" ".repeat(i0.deleted):`-${n.deleted}`.padStart(i0.deleted);return(()=>{var w0=W("box"),I0=W("box"),m=W("text"),F0=W("text");return D(w0,I0),Q(w0,"flexDirection","row"),Q(w0,"gap",0),Q(w0,"onMouseUp",()=>{H(X0()),J.onOpenFile(n.path)}),U(w0,L0,I0),D(I0,m),D(I0,F0),Q(I0,"flexDirection","row"),Q(I0,"flexGrow",1),Q(I0,"gap",1),Q(I0,"paddingRight",1),Q(m,"wrapMode","none"),U(m,()=>n.status),Q(F0,"wrapMode","none"),Q(F0,"flexGrow",1),U(F0,()=>tF(n.path,l())),U(I0,I(z0,{get when(){return i0.added>0},get children(){var Z0=W("text");return Q(Z0,"wrapMode","none"),U(Z0,k1),x((V0)=>Q(Z0,"fg",z.success,V0)),Z0}}),null),U(I0,I(z0,{get when(){return i0.deleted>0},get children(){var Z0=W("text");return Q(Z0,"wrapMode","none"),U(Z0,C0),x((V0)=>Q(Z0,"fg",z.error,V0)),Z0}}),null),x((Z0)=>{var V0=M0(),X1=g0(),o=z.text;return V0!==Z0.e&&(Z0.e=Q(w0,"backgroundColor",V0,Z0.e)),X1!==Z0.t&&(Z0.t=Q(m,"fg",X1,Z0.t)),o!==Z0.a&&(Z0.a=Q(F0,"fg",o,Z0.a)),Z0},{e:void 0,t:void 0,a:void 0}),w0})()}})),u}}),null),U(a,I(z0,{get when(){return J.worktreePath()!=null},get children(){var u=W("box"),n=W("text");return D(u,n),Q(u,"flexDirection","row"),Q(u,"paddingTop",1),Q(u,"flexShrink",0),Q(n,"wrapMode","none"),U(n,()=>M("files.footer.openHint")),x((X0)=>Q(n,"fg",z.textMuted,X0)),u}}),null),a})()}var eE;var XO=k(()=>{v();v();v();v();v();v();v();v();v();QJ();v();V1();v1();aF();pF();sF();ZO();eE=["all","changes"]});function qO(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function HO(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var QO=2500,uQ=1500;import{promises as Yw}from"fs";import Zw from"path";async function _j(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),Gw);try{let G=await qY("git",z,{cwd:J,env:lJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(Z)}}async function Xw(J){return await _j(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function Qw(J){let z=await _j(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function qw(J){let z=await _j(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function Hw(J){let z=await _j(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
287
|
+
`).filter((Y)=>Y.length>0).length}async function jw(J){let[z,Y,Z,G]=await Promise.all([Xw(J),Qw(J),qw(J),Hw(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:G}}function Bw(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 fw(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function Ww(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:Bw(z.dirtyCount),upstreamSentence:fw(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,G)=>Object.hasOwn(Y,G)?Y[G]:Z)}async function Vw(J){let z=Zw.join(J,".kobe","pr-instructions.md");try{let Y=await Yw.readFile(z,"utf8");return Y.length>0?Y:jO}catch{return jO}}async function BO(J){let[z,Y]=await Promise.all([Vw(J),jw(J)]);return Ww(z,Y)}var Gw=5000,jO=`The user likes the current state of the code.
|
|
282
288
|
|
|
283
289
|
{{dirtyCountSentence}}
|
|
284
290
|
The current branch is {{branch}}.
|
|
@@ -295,16 +301,16 @@ Follow these steps to create a PR:
|
|
|
295
301
|
- Push to origin.
|
|
296
302
|
- Use \`gh pr create --base {{targetBranch}}\` to create a PR onto the target branch. Keep the title under 80 characters. Keep the description under five sentences. Describe not just changes made in this session but ALL changes since the branch diverged from the target.
|
|
297
303
|
|
|
298
|
-
If any of these steps fail, ask the user for help.`;var YO=C(()=>{dY();yQ()});var bW={};q1(bW,{startOpsPreview:()=>Qw,startOpsHost:()=>Jw});import{createHash as pE}from"crypto";import{SyntaxStyle as rE}from"@opentui/core";function tE(J){let{theme:z}=w0(),[Y,Z]=p(null),G=!1;QJ(()=>{(async()=>{let g=await Of({logTag:"ops-activity",channels:["transcript.activity"]});if(!g)return;if(G){g.dispose();return}Z(g)})()}),T1(()=>{G=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>X()?.get(J.worktree)??null,[H,f]=p(0),[j,V]=p(0),B=!1;_0(()=>{let g=X();if(!g)return;let M=g.get(J.worktree)?.mtimeMs??0;if(!B&&M>0)B=!0,f(M);V(M)}),_0(()=>{if(X()!==null)return;let g=!1,M,T=s3,d=0,i=0;async function J0(){try{let E=await tZ(J.vendor,J.worktree);if(g)return;if(!B)B=!0,f(E),i=E;if(E>i)i=E,d=0;else d++;V(E)}catch{d++}finally{if(!g)T=t3(T,d),M=setTimeout(()=>void J0(),T)}}J0(),T1(()=>{if(g=!0,M)clearTimeout(M)})});let K=()=>B&&j()>H(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){f(j())}QJ(()=>{if(!J.targetPane)return;let g=LX(J.vendor),M=!1,T=null,d=!1,i="",J0=!1,E=0,z0=null,q0=wQ,o=0,B0,g0=()=>X()!==null;async function m(t){if(t===z0)return;z0=t,await hY(J.targetPane,sE,t)}async function r(){if(g0())return Q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function c(){try{i=ZO(await WG(J.targetPane,80)),T=await r(),d=!0,await m(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function N(){let t=g0();try{let x=ZO(await WG(J.targetPane,80));if(M)return;if(t&&!d)T=Q()?.completionId??null,d=!0;let n=t?Q()?.mtimeMs??0:0,Q0=n>o;if(n>o)o=n;if(x!==i)i=x,J0=!0,E=0,await m(g.supportsCompletionMarkers()?"running":"unknown");else if(J0)E++;if(g.supportsCompletionMarkers()&&J0&&E>=oE){let H0=await r();if(!M&&H0!==null&&H0!==T)T=H0,J0=!1,E=0,await m("done")}q0=t?e3(q0,Q0,z0):wQ}catch{q0=wQ}finally{if(!M)B0=setTimeout(()=>void N(),q0)}}c(),B0=setTimeout(()=>void N(),wQ),T1(()=>{if(M=!0,B0)clearTimeout(B0)})});function O(g){if(!J.taskId)return;Cz(I1(J.taskId),{cwd:J.worktree,command:X7({worktree:J.worktree,relPath:g,cliInvocation:y1()}),name:eE(g)})}function R(g){if(!J.taskId){O(g);return}let M=`${J.worktree}/${g}`;E3(I1(J.taskId),J.worktree,M).then((T)=>{if(!T)O(g)})}function u(g){if(!J.targetPane)return;OH(J.targetPane,`@${g} `)}async function P(){if(!J.targetPane)return;let g=await zO(J.worktree);await OH(J.targetPane,g),await uX(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let g=I1(J.taskId),M=y1(),T=`${l1()}${yJ(M)} layout --session ${Q1(g)} --action zen-toggle`;d0(["run-shell","-b",T])}return(()=>{var g=W("box");return q(g,"flexDirection","column"),q(g,"flexGrow",1),U(g,b(kW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:u,onCreatePR:()=>void P(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(g,"backgroundColor",z.background,M)),g})()}function eE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function ZO(J){return pE("sha1").update(J).digest("hex")}async function Jw(J){await KJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(tE,J)})})}function zw(J){switch(J.slice(J.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function Yw(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function Zw(J,z){return await G6(J,z)??""}function Gw(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},G={fg:J.warning},X={fg:J.accent},Q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},f={fg:J.text};return rE.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:f,"variable.member":f,"variable.parameter":f,"variable.builtin":X,property:f,attribute:G,label:f,module:f})}function Xw(J){let{theme:z}=w0(),Y=Gw(z),Z=zw(J.relPath),[G]=WZ(()=>J.relPath,async(X)=>{let Q=await Yw(J.worktree,X);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await Zw(J.worktree,X)}});return U1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,V),q(X,"flexDirection","column"),q(X,"flexGrow",1),D(Q,H),D(Q,f),D(Q,j),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(H,()=>J.relPath),U(f,(()=>{var B=N0(()=>G()?.kind==="diff");return()=>B()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(j,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(Y0,{get when(){return G()},get fallback(){return(()=>{var B=W("text");return U(B,()=>F("ops.preview.loading")),y((K)=>q(B,"fg",z.textMuted,K)),B})()},children:(B)=>b(Y0,{get when(){return B().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",B().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",Z),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",B().text,L)),K}})})),y((B)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==B.e&&(B.e=q(X,"backgroundColor",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function Qw(J){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Xw,J)})})}var oE=2,sE="@kobe_tab_state";var SW=C(()=>{w();w();w();w();w();w();w();XY();Fq();Mq();c1();w3();Lz();hH();W1();l8();h1();ZJ();MY();kJ();o3();KZ();YO()});var qO={};q1(qO,{startDirectTmux:()=>Hw,chooseInitialTask:()=>QO});import{resolve as GO}from"path";function QO(J,z={}){let Y=(Q)=>Q?J.find((H)=>H.id===Q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let G=Y(z.persistedTaskId);if(G)return G;if(z.cwdRepo){let Q=J.find((H)=>H.kind==="main"&&H.repo===z.cwdRepo);if(Q)return Q}let X=J.filter((Q)=>!Q.archived);return X.find((Q)=>Q.pinned)??X[0]??J[0]}async function XO(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function qw(J){Gj();let z=[...SJ()];if(z.length===0)z=[ez(GO(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??GO(process.cwd())}async function Hw(){if(oQ("gui"),Promise.resolve().then(() => (f8(),H8)).then((Y)=>Y.ensureGlobalKobeHooks()),!await dz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new AJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await qw(z),Z=QO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:S1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let B=await AH();if(await gZ(),await VH(B),await MH(B),await XO(NG(B))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=Z.worktreePath||await z.ensureWorktree(Z.id),X=I1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),e1("lastSelectedTaskId",Z.id);let Q=Z.vendor;if(Z.kind==="main"){let K=await $B(X)??PJ(S1("lastSelectedVendor"),hJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),Q=K}let H=IG(Z.repo,G,{kind:"repo-init"});if(!await pX({name:X,cwd:G,command:cJ(Q),taskId:Z.id,vendor:Q,repo:Z.repo,launchInit:H})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gZ(),await VH(X),await MH(X);let j=await XO(NG(X));if(j===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(j!==0&&!await K1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${j})`),process.exitCode=j;return}let V=z.getTask(Z.id);if(V&&V.title===hz&&V.worktreePath)try{let B=await eZ(V.worktreePath,V.vendor);if(B)await z.setTitle(V.id,B)}catch(B){console.error("[kobe] auto-title failed:",B)}}finally{z.dispose()}}var HO=C(()=>{GZ();CJ();_Y();Yz();gq();kX();yG();C1();c1();_1();QH();PY();zJ()});var fO={};q1(fO,{startTui:()=>fw});async function fw(){yD();let{startDirectTmux:J}=await Promise.resolve().then(() => (HO(),qO));await J()}var jO=C(()=>{Zf()});$f();_1();import{resolve as yW}from"path";NJ();function GV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
|
|
299
|
-
`)}var
|
|
304
|
+
If any of these steps fail, ask the user for help.`;var fO=k(()=>{nY();SQ()});var kW={};q1(kW,{startOpsPreview:()=>kw,startOpsHost:()=>Ow});import{createHash as Kw}from"crypto";import{SyntaxStyle as Uw}from"@opentui/core";function Mw(J){let{theme:z}=h0(),[Y,Z]=p(null),G=!1;ZJ(()=>{(async()=>{let g=await Aj({logTag:"ops-activity",channels:["transcript.activity"]});if(!g)return;if(G){g.dispose();return}Z(g)})()}),b1(()=>{G=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,q=()=>X()?.get(J.worktree)??null,[H,j]=p(0),[B,V]=p(0),f=!1;d0(()=>{let g=X();if(!g)return;let F=g.get(J.worktree)?.mtimeMs??0;if(!f&&F>0)f=!0,j(F);V(F)}),d0(()=>{if(X()!==null)return;let g=!1,F,w=QO,l=0,d=0;async function s(){try{let P=await tZ(J.vendor,J.worktree);if(g)return;if(!f)f=!0,j(P),d=P;if(P>d)d=P,l=0;else l++;V(P)}catch{l++}finally{if(!g)w=qO(w,l),F=setTimeout(()=>void s(),w)}}s(),b1(()=>{if(g=!0,F)clearTimeout(F)})});let K=()=>f&&B()>H(),L=()=>K()?{text:M("ops.badge.newActivity"),active:!0}:null;function O(){j(B())}ZJ(()=>{if(!J.targetPane)return;let g=LX(J.vendor),F=!1,w=null,l=!1,d="",s=!1,P=0,J0=null,q0=uQ,D0=0,K0,T0=()=>X()!==null;async function S(t){if(t===J0)return;J0=t,await vY(J.targetPane,Lw,t)}async function a(){if(T0())return q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function h(){try{d=WO(await WG(J.targetPane,80)),w=await a(),l=!0,await S(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function R(){let t=T0();try{let u=WO(await WG(J.targetPane,80));if(F)return;if(t&&!l)w=q()?.completionId??null,l=!0;let n=t?q()?.mtimeMs??0:0,X0=n>D0;if(n>D0)D0=n;if(u!==d)d=u,s=!0,P=0,await S(g.supportsCompletionMarkers()?"running":"unknown");else if(s)P++;if(g.supportsCompletionMarkers()&&s&&P>=Dw){let Q0=await a();if(!F&&Q0!==null&&Q0!==w)w=Q0,s=!1,P=0,await S("done")}q0=t?HO(q0,X0,J0):uQ}catch{q0=uQ}finally{if(!F)K0=setTimeout(()=>void R(),q0)}}h(),K0=setTimeout(()=>void R(),uQ),b1(()=>{if(F=!0,K0)clearTimeout(K0)})});function A(g){if(!J.taskId)return;Cz(y1(J.taskId),{cwd:J.worktree,command:Z7({worktree:J.worktree,relPath:g,cliInvocation:T1()}),name:Fw(g)})}function C(g){if(!J.taskId){A(g);return}let F=`${J.worktree}/${g}`;mF(y1(J.taskId),J.worktree,F).then((w)=>{if(!w)A(g)})}function E(g){if(!J.targetPane)return;OH(J.targetPane,`@${g} `)}async function y(){if(!J.targetPane)return;let g=await BO(J.worktree);await OH(J.targetPane,g),await uX(J.targetPane,"Enter")}function N(){if(!J.taskId)return;let g=y1(J.taskId),F=T1(),w=`${$1()}${TJ(F)} layout --session ${Y1(g)} --action zen-toggle`;n0(["run-shell","-b",w])}return(()=>{var g=W("box");return Q(g,"flexDirection","column"),Q(g,"flexGrow",1),U(g,I(GO,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:C,onMention:E,onCreatePR:()=>void y(),get onZenToggle(){return J.taskId?N:void 0},cornerBadge:L,onRefresh:O})),x((F)=>Q(g,"backgroundColor",z.background,F)),g})()}function Fw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function WO(J){return Kw("sha1").update(J).digest("hex")}async function Ow(J){await UJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>I(Mw,J)})})}function Aw(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 Rw(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function gw(J,z){return await hH(J,z)??""}function Nw(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},G={fg:J.warning},X={fg:J.accent},q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},j={fg:J.text};return Uw.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:q,"comment.documentation":q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:j,"variable.member":j,"variable.parameter":j,"variable.builtin":X,property:j,attribute:G,label:j,module:j})}function Cw(J){let{theme:z}=h0(),Y=Nw(z),Z=Aw(J.relPath),[G]=fZ(()=>J.relPath,async(X)=>{let q=await Rw(J.worktree,X);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await gw(J.worktree,X)}});return U1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,V),Q(X,"flexDirection","column"),Q(X,"flexGrow",1),D(q,H),D(q,j),D(q,B),Q(q,"flexDirection","row"),Q(q,"gap",1),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),U(H,()=>J.relPath),U(j,(()=>{var f=N0(()=>G()?.kind==="diff");return()=>f()?M("ops.preview.diffVsHead"):M("ops.preview.file")})()),U(B,()=>M("ops.preview.closeHint")),Q(V,"flexGrow",1),U(V,I(z0,{get when(){return G()},get fallback(){return(()=>{var f=W("text");return U(f,()=>M("ops.preview.loading")),x((K)=>Q(f,"fg",z.textMuted,K)),f})()},children:(f)=>I(z0,{get when(){return f().kind==="diff"},get fallback(){return(()=>{var K=W("code");return Q(K,"filetype",Z),Q(K,"syntaxStyle",Y),x((L)=>Q(K,"content",f().text,L)),K})()},get children(){var K=W("diff");return Q(K,"view","unified"),Q(K,"filetype",Z),Q(K,"syntaxStyle",Y),Q(K,"showLineNumbers",!0),x((L)=>Q(K,"diff",f().text,L)),K}})})),x((f)=>{var{background:K,accent:L,textMuted:O,textMuted:A}=z;return K!==f.e&&(f.e=Q(X,"backgroundColor",K,f.e)),L!==f.t&&(f.t=Q(H,"fg",L,f.t)),O!==f.a&&(f.a=Q(j,"fg",O,f.a)),A!==f.o&&(f.o=Q(B,"fg",A,f.o)),f},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function kw(J){await UJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>I(Cw,J)})})}var Dw=2,Lw="@kobe_tab_state";var bW=k(()=>{v();v();v();v();v();v();v();XY();Mq();Fq();P1();cF();Lz();vH();V1();r8();v1();QJ();FY();kJ();XO();VZ();fO()});var DO={};q1(DO,{startDirectTmux:()=>Iw,chooseInitialTask:()=>UO});import{resolve as VO}from"path";function UO(J,z={}){let Y=(q)=>q?J.find((H)=>H.id===q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let G=Y(z.persistedTaskId);if(G)return G;if(z.cwdRepo){let q=J.find((H)=>H.kind==="main"&&H.repo===z.cwdRepo);if(q)return q}let X=J.filter((q)=>!q.archived);return X.find((q)=>q.pinned)??X[0]??J[0]}async function KO(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 bw(J){qB();let z=[...SJ()];if(z.length===0)z=[ez(VO(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??VO(process.cwd())}async function Iw(){if(sQ("gui"),Promise.resolve().then(() => (B8(),j8)).then((Y)=>Y.ensureGlobalKobeHooks()),!await dz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Iz(),z=new RJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await bw(z),Z=UO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:S1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let f=await AH();if(await RZ(),await VH(f),await FH(f),await KO(NG(f))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=Z.worktreePath||await z.ensureWorktree(Z.id),X=y1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),zJ("lastSelectedTaskId",Z.id);let q=Z.vendor;if(Z.kind==="main"){let K=await af(X)??hJ(S1("lastSelectedVendor"),vJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),q=K}let H=yG(Z.repo,G,{kind:"repo-init"});if(!await pX({name:X,cwd:G,command:dJ(q),taskId:Z.id,vendor:q,repo:Z.repo,launchInit:H})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await RZ(),await VH(X),await FH(X);let B=await KO(NG(X));if(B===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(B!==0&&!await K1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(Z.id);if(V&&V.title===hz&&V.worktreePath)try{let f=await eZ(V.worktreePath,V.vendor);if(f)await z.setTitle(V.id,f)}catch(f){console.error("[kobe] auto-title failed:",f)}}finally{z.dispose()}}var LO=k(()=>{ZZ();CJ();pY();Yz();gq();kX();TG();C1();P1();p1();QH();hY();GJ()});var MO={};q1(MO,{startTui:()=>Sw});async function Sw(){bD();let{startDirectTmux:J}=await Promise.resolve().then(() => (LO(),DO));await J()}var FO=k(()=>{Gj()});pj();p1();import{resolve as SW}from"path";NJ();function GV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
|
|
305
|
+
`)}var OO=`Usage: kobe add [path]
|
|
300
306
|
kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
|
|
301
307
|
|
|
302
308
|
Save a repo for the new-task picker. With --remote, register an SSH-backed
|
|
303
309
|
project whose worktrees + engine run on <host> under <basePath>.
|
|
304
|
-
`;async function
|
|
310
|
+
`;async function yw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(OO);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (FV(),MV));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
|
|
305
311
|
|
|
306
|
-
${
|
|
307
|
-
`),process.exit(1);let X=Z(Y);if(X.added)console.log(`added ${X.path} (${X.total} saved repo${X.total===1?"":"s"} total)`);else console.log(`already saved: ${X.path}`);await
|
|
312
|
+
${OO}`),process.exit(2);let Y=SW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:G}=await Promise.resolve().then(() => (C1(),zY));if(!G(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
|
|
313
|
+
`),process.exit(1);let X=Z(Y);if(X.added)console.log(`added ${X.path} (${X.total} saved repo${X.total===1?"":"s"} total)`);else console.log(`already saved: ${X.path}`);await xw(X.path)}var AO=`Usage: kobe remove [path]
|
|
308
314
|
|
|
309
315
|
Forget a saved project (drop it from the new-task picker). Non-destructive:
|
|
310
316
|
the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
@@ -313,19 +319,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
|
313
319
|
path defaults to the current directory. Pass an exact saved entry (e.g. a
|
|
314
320
|
remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
|
|
315
321
|
print the current saved projects.
|
|
316
|
-
`;async function
|
|
322
|
+
`;async function Tw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(AO);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
|
|
317
323
|
|
|
318
|
-
${
|
|
324
|
+
${AO}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (C1(),zY)),G=Y();if(G.length===0){console.log("no saved projects to remove.");return}let X=z&&z.length>0?z:".",q=G.includes(X)?X:(()=>{let V=SW(process.cwd(),X),f=Z(V);if(G.includes(f))return f;if(G.includes(V))return V;return null})();if(q===null){process.stderr.write(`kobe remove: "${X}" is not a saved project.
|
|
319
325
|
|
|
320
326
|
Saved projects:
|
|
321
327
|
`);for(let V of G)process.stderr.write(` ${V}
|
|
322
|
-
`);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (CJ(),
|
|
328
|
+
`);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (CJ(),MH)),j=await H();try{if(j)await j.request("project.forget",{repo:q});else await(await yW()).forgetProject(q)}finally{j?.close()}let B=Y().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function xw(J){let z=await yW(),Y;try{Y=await z.discoverAdoptableWorktrees(J)}catch(Z){console.error(`(skipped worktree scan: ${Z instanceof Error?Z.message:String(Z)})`);return}if(Y.length===0)return;console.log(`scanning ${J}: ${Y.length} unlinked worktree(s) \u2192 importing`),await gO(z,J,Y,RY(void 0))}async function yW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (QQ(),n9)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (l9(),I4)),{Orchestrator:Y}=await Promise.resolve().then(() => (kX(),IK)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function gO(J,z,Y,Z){let{connectIfRunning:G}=await Promise.resolve().then(() => (CJ(),MH)),X=await G();try{for(let q of Y){let H=X?(await X.request("worktree.adopt",{repo:z,worktreePath:q.path,branch:q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:q.path,branch:q.branch,vendor:Z});console.log(` adopted ${q.branch} \u2192 task ${H.id} (${H.title})`)}}finally{X?.close()}}var NO=["Usage: kobe adopt [glob] [--repo <path>] [--vendor <v>] [--yes]","","Import existing git worktrees in a repo as kobe tasks.","No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
|
|
323
329
|
`);function IW(J){process.stderr.write(`kobe adopt: ${J}
|
|
324
330
|
|
|
325
|
-
${
|
|
326
|
-
`),process.exit(2)}async function
|
|
327
|
-
`);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)IW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)IW("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else IW(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),
|
|
328
|
-
pass a path glob to adopt, e.g. kobe adopt '${
|
|
331
|
+
${NO}
|
|
332
|
+
`),process.exit(2)}async function uw(J){let z,Y,Z,G=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${NO}
|
|
333
|
+
`);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)IW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)IW("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else IW(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),q=X(SW(process.cwd(),Y&&Y.length>0?Y:".")),H=RY(Z),j=await yW(),B=await j.discoverAdoptableWorktrees(q);if(B.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(K)=>!z||wQ(z,K.path);console.log(`adoptable worktrees in ${q}:`);for(let K of B){let L=z?V(K)?"*":" ":"-",O=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${O?` (${O})`:""}`)}if(!z){console.log(`
|
|
334
|
+
pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let f=B.filter(V);if(f.length===0){console.log(`
|
|
329
335
|
no worktrees match glob ${JSON.stringify(z)}`);return}if(!G){console.log(`
|
|
330
|
-
${
|
|
331
|
-
`)}function
|
|
336
|
+
${f.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await gO(j,q,f,H),console.log(`done \u2014 adopted ${f.length} worktree(s)`)}function RO(J){J.write(`${GV()}
|
|
337
|
+
`)}function _J(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=J[Y+1];if(G===void 0)continue;if(Z==="--task-id")z.taskId=G,Y++;else if(Z==="--worktree")z.worktree=G,Y++;else if(Z==="--target-pane")z.targetPane=G,Y++;else if(Z==="--vendor")z.vendor=G,Y++;else if(Z==="--preview")z.preview=G,Y++;else if(Z==="--session")z.session=G,Y++;else if(Z==="--repo")z.repo=G,Y++;else if(Z==="--initial-task-id")z.initialTaskId=G,Y++;else if(Z==="--action")z.action=G,Y++;else if(Z==="--window")z.windowId=G,Y++;else if(Z==="--cols")z.cols=G,Y++;else if(Z==="--rows")z.rows=G,Y++;else if(Z==="--status")z.status=G,Y++;else if(Z==="--client")z.client=G,Y++;else if(Z==="--title")z.title=G,Y++}return z}async function Ew(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (NJ(),ZV));console.log(`kobe ${G}`);return}if(z==="--help"||z==="-h"||z==="help"){RO(process.stdout);return}if(z==="add"){await yw(Y);return}if(z==="remove"){await Tw(Y);return}if(z==="completions"){let{runCompletionsSubcommand:G}=await Promise.resolve().then(() => (x4(),T4));await G(Y);return}if(z==="adopt"){await uw(Y);return}if(z==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (h4(),P4));await G(Y);return}if(z==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (d4(),c4));await G(Y);return}if(z==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (GD(),ZD));await G(Y);return}if(z==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (jD(),HD));await G(Y);return}if(z==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (KD(),VD));await G(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (FD(),MD));await G(Y);return}if(z==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (ND(),gD));await G(Y);return}if(z==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (Qj(),Xj));await G(Y);return}if(z==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (cD(),mD));await G(Y);return}if(z==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (Qj(),Xj));await G(Y);return}if(z==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (Qj(),Xj));await G(Y);return}if(z==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (iD(),nD));await G(Y);return}if(z==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (B8(),j8));await G(Y);return}if(z==="new-chattab"){let G=_J(Y),X=G.session;if(!X)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (P1(),kG));if(await q(X))return;let H;if(G.vendor!==void 0){let B=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (C1(),zY)),{isBuiltinVendor:f}=await Promise.resolve().then(() => (p1(),rW));if(!(f(B)||V().includes(B))){let O=[..._1,...V()].join(", "),A=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:C}=await Promise.resolve().then(() => (P1(),kG));await C(["display-message","-t",X,A]),console.error(A),process.exit(2)}H=B;let{setPersistedString:L}=await Promise.resolve().then(() => (C1(),zY));L("lastSelectedVendor",H)}let{newChatTab:j}=await Promise.resolve().then(() => (GJ(),wJ));await j(X,H);return}if(z==="engine-tab-exit"){let X=_J(Y).session;if(!X)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:q}=await Promise.resolve().then(() => (hY(),hf));await q(X);return}if(z==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (P1(),kG)),q=await G(["kill-server"]);console.log(q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`);return}if(z==="quick-create"){let X=_J(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (GJ(),wJ));await q(X);return}if(z==="focus-tasks"){let G=_J(Y),X=G.session;if(!X)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (P1(),kG));if(G.windowId&&await q(G.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (GJ(),wJ));await H(X,{windowId:G.windowId});return}if(z==="heal-layout"){let X=_J(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (GJ(),wJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (AG(),jH));await H(X,"heal",()=>q(X));return}if(z==="resync-window"){let G=_J(Y),X=G.session;if(!X)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(G.cols??"",10),H=Number.parseInt(G.rows??"",10),j=Number.isInteger(q)&&q>0&&Number.isInteger(H)&&H>0?{columns:q,rows:H}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (GJ(),wJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (AG(),jH));await V(X,"resync",()=>B(X,{size:j,status:G.status,clientName:G.client}));return}if(z==="capture-layout"){let X=_J(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (GJ(),wJ)),{coalesceLayoutWork:H,genAgeMs:j,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (AG(),jH));await H(X,"capture",async()=>{if(j(X,"resize")<B)return;await q(X)});return}if(z==="layout"){let G=_J(Y),X=G.session;if(!X)console.error("kobe layout: --session <name> is required"),process.exit(2);let q=G.action;if(!q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);if(q==="tasks-restore"&&G.windowId){let{windowIsSurface:B}=await Promise.resolve().then(() => (P1(),kG));if(await B(G.windowId))return}let{runLayoutAction:j}=await Promise.resolve().then(() => (GJ(),wJ));await j(X,q,{windowId:G.windowId});return}if(z==="quick-task"){let G=_J(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (N3(),g3));await X({session:G.session});return}if(z==="tasks"){let G=_J(Y),{startTasksPane:X}=await Promise.resolve().then(() => (kF(),CF));await X({initialTaskId:G.initialTaskId});return}if(z==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (IF(),bF));await G();return}if(z==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (yF(),SF));await G();return}if(z==="new-task"){let G=_J(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (GW(),K3));await X({defaultRepo:G.repo});return}if(z==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (xF(),TF));await G();return}if(z==="history"){let G=_J(Y);if(!G.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:X}=await Promise.resolve().then(() => (wF(),EF));await X({worktree:G.worktree,vendor:RY(G.vendor),title:G.title});return}if(z==="ops"){let G=_J(Y);if(!G.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(G.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (bW(),kW));await q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (bW(),kW));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:RY(G.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),RO(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (FO(),MO));await Z()}Ew().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
|