craig-cli 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +80 -62
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,61 +1,61 @@
1
1
  #!/usr/bin/env node
2
- var ma=Object.create;var Br=Object.defineProperty;var _a=Object.getOwnPropertyDescriptor;var wa=Object.getOwnPropertyNames;var ba=Object.getPrototypeOf,ka=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var ya=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),va=(e,t)=>{for(var r in t)Br(e,r,{get:t[r],enumerable:!0})},Sa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of wa(t))!ka.call(e,o)&&o!==r&&Br(e,o,{get:()=>t[o],enumerable:!(s=_a(t,o))||s.enumerable});return e};var Ta=(e,t,r)=>(r=e!=null?ma(ba(e)):{},Sa(t||!e||!e.__esModule?Br(r,"default",{value:e,enumerable:!0}):r,e));function ke(e){return Ra[e]}function $r(e,t={}){let r=ke(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function pt(e={}){return le.filter(t=>e.runners?.[t]?.enabled!==!1)}function st(e={}){let t=pt(e);if(t.length===0)throw new Error("No runners are enabled. Enable at least one runner in .craig/config.json.");return t.includes("codex")?"codex":t[0]}function qt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function gt(e){return le.includes(e)}function Zs(e){if(!e||e.length===0)return"codex";if(!gt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${le.join(", ")}.`);return e}function ve(e){return ke(e).displayName}function me(e,t,r={}){let s=[$r(e,r).executable];return t&&t.length>0&&s.push(t),s}var le,Ra,Ee=$e(()=>{"use strict";le=["codex","cursor","claude"],Ra={codex:{id:"codex",displayName:"Codex",executable:"codex",defaultAgentTitle:"Codex"},cursor:{id:"cursor",displayName:"Cursor",executable:"cursor-agent",defaultAgentTitle:"Cursor"},claude:{id:"claude",displayName:"Claude",executable:"claude",defaultAgentTitle:"Claude"}}});import{randomUUID as Da}from"node:crypto";import{open as La,readFile as ff,rename as Ma,rm as Oa}from"node:fs/promises";import Fr from"node:path";async function de(e,t){let r=Fr.dirname(e),s=Fr.join(r,`.${Fr.basename(e)}.${process.pid}.${Date.now()}.${Da()}.tmp`),o=await La(s,"w");try{let p=`${JSON.stringify(t,null,2)}
3
- `;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await Ma(s,e)}catch(p){throw await o.close().catch(()=>{}),await Oa(s,{force:!0}).catch(()=>{}),p}}var We=$e(()=>{"use strict"});import{readFile as Ha}from"node:fs/promises";async function Se(e){let t=await Ha(e.indexFile,"utf8"),r=JSON.parse(t);return Wr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await de(e.indexFile,r)}function Wr(e,t,r){if(!Ua(e))throw new Error(`Craig index at ${r} is invalid. Remove or repair the file before rerunning Craig.`);if(e.workspaceRoot!==t)throw new Error(`Craig index at ${r} belongs to ${e.workspaceRoot}, not ${t}. Remove or repair the file before rerunning Craig.`);return e}function Ua(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=$e(()=>{"use strict";We()});import{readFile as qa}from"node:fs/promises";async function ue(e,t){let r=await qa(jr(e,t),"utf8"),s=JSON.parse(r);return Ka(s,jr(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await de(jr(e,t.id),r)}async function Hr(e,t){let r=await Se(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function jr(e,t){return`${e.tasksDir}/${t}.json`}function Ka(e,t){let r=za(e);if(!Ga(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function za(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Ur(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:Ja(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:Xa(t.repoTargets),runnerSession:t.runnerSession??Va(t),checks:nc(t),lastCommit:t.lastCommit??null,prs:ic(t),artifacts:ac(t),cleanup:cc(t)}}function Va(e){if(typeof e.title!="string")return null;let t=Ur(e.runner);return{command:me(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function Ga(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.id=="string"&&typeof t.title=="string"&&typeof t.slug=="string"&&(t.type==="repo"||t.type==="project")&&typeof t.status=="string"&&gt(t.runner??"")&&typeof t.repoId=="string"&&typeof t.workspaceId=="string"&&(typeof t.sessionId=="string"||t.sessionId===null)&&(typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null)&&Array.isArray(t.linkedRepoIds)&&t.linkedRepoIds.every(r=>typeof r=="string")&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&typeof t.branch=="string"&&nn(t.ptyTabs)&&(t.bundlePath===void 0||t.bundlePath===null||typeof t.bundlePath=="string")&&(t.selectedRepoTargetId===void 0||t.selectedRepoTargetId===null||typeof t.selectedRepoTargetId=="string")&&(t.repoTargets===void 0||Ya(t.repoTargets))&&Za(t.runnerSession)&&ec(t.prompt)&&on(t.checks)&&an(t.lastCommit)&&rc(t.prs)&&sc(t.artifacts)&&ln(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Xa(e){if(Array.isArray(e))return e.filter(sn)}function Ya(e){return Array.isArray(e)&&e.every(sn)}function sn(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.repoId=="string"&&typeof t.branch=="string"&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&(t.status==="ready"||t.status==="unavailable"||t.status==="merged"||t.status==="closed")&&(typeof t.failureReason=="string"||t.failureReason===null)&&on(t.checks)&&an(t.lastCommit)&&cn(t.pullRequest)&&ln(t.cleanup)}function Ja(e){if(nn(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return Qa(e.id,e.title,t,Ur(e.runner))}function Qa(e,t,r,s){let o=ke(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Ur(e){return e&&gt(e)?e:"codex"}function nn(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&(t.kind==="agent"||t.kind==="terminal")&&typeof t.title=="string"&&Array.isArray(t.command)&&t.command.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string")}function Za(e){return typeof e=="object"&&e!==null&&Array.isArray(e.command)&&e.command.every(t=>typeof t=="string")&&(typeof e.pid=="number"||e.pid===null)&&(typeof e.startedAt=="string"||e.startedAt===null)&&(e.lastKnownState==="starting"||e.lastKnownState==="running"||e.lastKnownState==="exited"||e.lastKnownState==="failed")&&(typeof e.exitCode=="number"||e.exitCode===null)&&(typeof e.exitedAt=="string"||e.exitedAt===null)}function ec(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function on(e){return typeof e=="object"&&e!==null&&typeof e.source=="object"&&e.source!==null&&e.source.type==="repo_config"&&typeof e.source.path=="string"&&(typeof e.lastRunAt=="string"||e.lastRunAt===null)&&(e.status==="not_run"||e.status==="running"||e.status==="passed"||e.status==="failed")&&Array.isArray(e.commands)&&e.commands.every(t=>typeof t=="string")&&Array.isArray(e.results)&&e.results.every(t=>typeof t=="object"&&t!==null&&typeof t.command=="string"&&typeof t.startedAt=="string"&&typeof t.finishedAt=="string"&&typeof t.exitCode=="number")}function an(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function cn(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&tc(e.requiredChecks)}function tc(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))}function rc(e){return Array.isArray(e)&&e.every(cn)}function sc(e){return typeof e=="object"&&e!==null&&(typeof e.logPath=="string"||e.logPath===null)&&(typeof e.checkSummaryPath=="string"||e.checkSummaryPath===null)&&(typeof e.prDraftPath=="string"||e.prDraftPath===null)&&(typeof e.prStatusPath=="string"||e.prStatusPath===null)}function ln(e){return typeof e=="object"&&e!==null&&(typeof e.paneClosedAt=="string"||e.paneClosedAt===null)&&(typeof e.worktreeRemovedAt=="string"||e.worktreeRemovedAt===null)&&typeof e.preservedWorktree=="boolean"&&(typeof e.warning=="string"||e.warning===null)}function nc(e){return e.checks?{...e.checks,results:e.checks.results??[]}:{source:{type:"repo_config",path:".craig/config.json"},lastRunAt:null,status:"not_run",commands:[],results:[]}}function ic(e){if(Array.isArray(e.prs))return e.prs.map(oc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:dn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:un(t.requiredChecks),createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function oc(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:dn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:un(t.requiredChecks),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function dn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function un(e){return Array.isArray(e)?e.map(t=>({...t,status:t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown"?t.status:"unknown",conclusion:t.conclusion??null})):[]}function ac(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function cc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Te=$e(()=>{"use strict";We();ot();Ee()});import{readFile as lc}from"node:fs/promises";async function Ae(e){try{let t=await lc(e.uiStateFile,"utf8"),r=JSON.parse(t);return dc(r,e.uiStateFile)}catch(t){if(hc(t))return null;throw t}}async function Re(e,t){await de(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function je(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function dc(e,t){if(typeof e!="object"||e===null||e.version!==1||!(e.selectedRepoId===null||typeof e.selectedRepoId=="string")||!(e.selectedWorkspaceId===null||typeof e.selectedWorkspaceId=="string")||!(e.selectedTaskId===null||typeof e.selectedTaskId=="string")||!(e.selectedPtyTabId===void 0||e.selectedPtyTabId===null||typeof e.selectedPtyTabId=="string")||!_t(e,"inputMode")||!_t(e,"focusedRegion")||!_t(e,"activeTab")||!_t(e,"inspectorSection")||!_t(e,"inspectionMode")||!Kt(e,"openInspectionKind")||!Kt(e,"selectedFileTreePath")||!Kt(e,"selectedFilePath")||!Kt(e,"selectedDiffPath")||!uc(e,"collapsedFileTreePaths")||!_t(e,"selectedActionId")||typeof e.updatedAt!="string")throw new Error(`Craig UI state at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}function _t(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function Kt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function uc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function hc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=$e(()=>{"use strict";We()});import{execFile as fc}from"node:child_process";import{promisify as pc}from"node:util";async function te(e,t,r={}){try{let s=await hn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(fn(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await hn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(fn(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function fn(e){return e instanceof Error}var hn,Ce=$e(()=>{"use strict";hn=pc(fc)});import{readFile as Ac,readdir as Dc,rm as Lc}from"node:fs/promises";import Sn from"node:path";async function De(e,t){let r=await Ac(Gt(e,t),"utf8"),s=JSON.parse(r);return Mc(s,Gt(e,t))}async function Xt(e,t){await de(Gt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await Dc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>De(e,Sn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function Tn(e,t){await Lc(Gt(e,t),{force:!0})}function Gt(e,t){return Sn.join(e.reposDir,`${t}.json`)}function Mc(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=$e(()=>{"use strict";We()});import{readFile as Oc,readdir as Bc,rm as $c}from"node:fs/promises";import Rn from"node:path";async function Rt(e,t){let r=await Oc(Yt(e,t),"utf8"),s=JSON.parse(r);return Fc(s,Yt(e,t))}async function bt(e,t){await de(Yt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Le(e){let t=await Bc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Rt(e,Rn.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function Cn(e,t){await $c(Yt(e,t),{force:!0})}function Yt(e,t){return Rn.join(e.workspacesDir,`${t}.json`)}function Fc(e,t){let r=Nc(e);if(typeof r!="object"||r===null||typeof r.id!="string"||r.kind!=="repo"&&r.kind!=="project"||typeof r.name!="string"||typeof r.rootPath!="string"||typeof r.primaryRepoId!="string"||typeof r.branch!="string"||r.status!=="active"&&r.status!=="archived"||!Array.isArray(r.linkedRepoIds)||!(r.linkedRepoIds??[]).every(s=>typeof s=="string")||!(r.repoId===void 0||typeof r.repoId=="string")||!Array.isArray(r.discoveredRepoIds)||!(r.discoveredRepoIds??[]).every(s=>typeof s=="string")||!(r.archivedAt===null||typeof r.archivedAt=="string")||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig workspace record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Nc(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=$e(()=>{"use strict";We()});async function He(e,t){let r=await Se(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await ue(e,i))}catch(c){if(Vc(c)){o.push(i);return}throw c}}));let v=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return v.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:v,missingTaskIds:o,repoId:t?.repoId??null}}function Vc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var xt=$e(()=>{"use strict";ot();Te()});var fi={};va(fi,{addWorkspace:()=>Dt,archiveWorkspace:()=>Lt,listWorkspaces:()=>ds,removeWorkspace:()=>Mt,removeWorkspaceRecord:()=>or,restoreWorkspace:()=>us});import{readdir as Cl,realpath as ii,stat as Pl}from"node:fs/promises";import Je from"node:path";async function Dt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await Pl(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await di(r)?Il(e,r):xl(e,r)}async function ds(e,t){return{kind:"listWorkspaces",workspaces:(await Le(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Lt(e,t){let s={...await Rt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await hi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function us(e,t){let s={...await Rt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await Ae({uiStateFile:e.uiStateFile})??null;return await Re({uiStateFile:e.uiStateFile},{...o??je(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Mt(e,t){let r=await Rt(e,t),s=await He(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await or(e,t),await hi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Il(e,t){let r=await ui(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?ai(o,r):oi(s,t,r),v=`workspace_${p.id}`,c=(await Le(e)).find(a=>a.id===v)??null,d=new Date().toISOString(),w=c??{id:v,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Xt(e,p),c||await bt(e,w),await ci(e,{repoIds:[p.id],workspaceIds:[w.id]}),await li(e,w,p.id),{kind:"createWorkspace",workspace:w,repos:[p],created:!c}}async function xl(e,t){let r=await El(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Le(e),o=Dl(s,Je.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,v=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:v,updatedAt:v};return await Promise.all(r.map(d=>Xt(e,d))),await bt(e,c),await ci(e,{repoIds:i,workspaceIds:[c.id]}),await li(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function El(e,t){let r=await Cl(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let v=Je.join(t,p.name);if(!await di(v))continue;let i=s.find(d=>d.rootPath===v)??o.find(d=>d.rootPath===v),c=await ui(v);o.push(i?ai(i,c):oi([...s,...o],v,c))}return o.sort((p,v)=>p.name.localeCompare(v.name)||p.id.localeCompare(v.id))}function oi(e,t,r){let s=new Date().toISOString();return{id:Al(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function ai(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Al(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function Dl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function ci(e,t){let r=await Se(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function li(e,t,r){await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function di(e){try{let r=(await te("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([ii(r).catch(()=>Je.resolve(r)),ii(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function ui(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await te("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function or(e,t){await Cn(e,t);let r=await Se(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function hi(e,t){let r=await Ae({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Re({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Ot=$e(()=>{"use strict";ot();dt();Ct();wt();Ce();xt()});var wo=ya(_o=>{(()=>{"use strict";var e={5639:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new w.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new w.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new w.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let _=0;_<Math.min(l,this.length);_++)m[_]=this._array[this._getCyclicIndex(_)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,..._){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+_.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<_.length;n++)this._array[this._getCyclicIndex(l+n)]=_[n];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let n=this._length+_.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=_.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,_){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let g=m-1;g>=0;g--)this.set(l+g+_,this.get(l+g));let n=l+m+_-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+_,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,w=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let k in d)a[k]=w<=1?d[k]:d[k]&&c(d[k],w-1);return a}},5777:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),w=c(6025),a=c(7276),k=c(9640),l=c(56),m=c(4071),_=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),S=c(802),P=c(7150),x=!1;class W extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new w.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(k.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,k.MINIMUM_COLS),A=Math.max(A,k.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=W},2486:function(v,i,c){var d=this&&this.__decorate||function(q,b,C,T){var R,O=arguments.length,F=O<3?b:T===null?T=Object.getOwnPropertyDescriptor(b,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")F=Reflect.decorate(q,b,C,T);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(F=(O<3?R(F):O>3?R(b,C,F):R(b,C))||F);return O>3&&F&&Object.defineProperty(b,C,F),F},w=this&&this.__param||function(q,b){return function(C,T){b(C,T,q)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=z;let a=c(3534),k=c(6760),l=c(6717),m=c(7150),_=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),S=c(1346),P=c(9823),x=c(8693),W=c(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(q,b){if(q>24)return b.setWinLines||!1;switch(q){case 1:return!!b.restoreWin;case 2:return!!b.minimizeWin;case 3:return!!b.setWinPosition;case 4:return!!b.setWinSizePixels;case 5:return!!b.raiseWin;case 6:return!!b.lowerWin;case 7:return!!b.refreshWin;case 8:return!!b.setWinSizeChars;case 9:return!!b.maximizeWin;case 10:return!!b.fullscreenWin;case 11:return!!b.getWinState;case 13:return!!b.getWinPosition;case 14:return!!b.getWinSizePixels;case 15:return!!b.getScreenSizePixels;case 16:return!!b.getCellSizePixels;case 18:return!!b.getWinSizeChars;case 19:return!!b.getScreenSizeChars;case 20:return!!b.getIconTitle;case 21:return!!b.getWinTitle;case 22:return!!b.pushTitle;case 23:return!!b.popTitle;case 24:return!!b.setWinLines}return!1}var E;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let H=0;class G extends m.Disposable{getAttrData(){return this._curAttrData}constructor(b,C,T,R,O,F,U,V,J=new l.EscapeSequenceParser){super(),this._bufferService=b,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=O,this._oscLinkService=F,this._coreMouseService=U,this._unicodeService=V,this._parser=J,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new W.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new W.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new W.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new W.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new W.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new W.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new W.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new W.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new W.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new W.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new W.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new W.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new W.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new N(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:Q.toArray()})})),this._parser.setEscHandlerFallback((I=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(I)})})),this._parser.setExecuteHandlerFallback((I=>{this._logService.debug("Unknown EXECUTE code: ",{code:I})})),this._parser.setOscHandlerFallback(((I,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((I,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:Q,payload:Y})})),this._parser.setPrintHandler(((I,Q,Y)=>this.print(I,Q,Y))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new S.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new S.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new S.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new S.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new S.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new S.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new S.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new S.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new S.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new S.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in k.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,Q)=>this.requestStatusString(I,Q))))}_preserveStack(b,C,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=b,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(b){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([b,new Promise(((C,T)=>setTimeout((()=>T("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(b,C){let T,R=this._activeBuffer.x,O=this._activeBuffer.y,F=0,U=this._parseStack.paused;if(U){if(T=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(T),T;R=this._parseStack.cursorStartX,O=this._parseStack.cursorStartY,this._parseStack.paused=!1,b.length>D&&(F=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof b=="string"?` "${b}"`:` "${Array.prototype.map.call(b,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof b=="string"?b.split("").map((I=>I.charCodeAt(0))):b),this._parseBuffer.length<b.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(b.length,D))),U||this._dirtyRowTracker.clearRange(),b.length>D)for(let I=F;I<b.length;I+=D){let Q=I+D<b.length?I+D:b.length,Y=typeof b=="string"?this._stringDecoder.decode(b.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(b.subarray(I,Q),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,O,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof b=="string"?this._stringDecoder.decode(b,this._parseBuffer):this._utf8Decoder.decode(b,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,O,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===O||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),J=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);J<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(J,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(b,C,T){let R,O,F=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,J=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,Q=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&T-C>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let ee=this._parser.precedingJoinState;for(let we=C;we<T;++we){if(R=b[we],R<127&&F){let Ke=F[String.fromCharCode(R)];Ke&&(R=Ke.charCodeAt(0))}let be=this._unicodeService.charProperties(R,ee);O=y.UnicodeService.extractWidth(be);let Xe=y.UnicodeService.extractShouldJoin(be),Ie=Xe?y.UnicodeService.extractWidth(ee):0;if(ee=be,U&&this._onA11yChar.fire((0,_.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+O-Ie>V){if(J){let Ke=Y,rt=this._activeBuffer.x-Ie;for(this._activeBuffer.x=Ie,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Ie>0&&Y instanceof n.BufferLine&&Y.copyCellsFrom(Ke,rt,0,Ie,!1);rt<V;)Ke.setCellFromCodepoint(rt++,0,1,Q)}else if(this._activeBuffer.x=V-1,O===2)continue}if(Xe&&this._activeBuffer.x){let Ke=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ke,R,O);for(let rt=O-Ie;--rt>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(Y.insertCells(this._activeBuffer.x,O-Ie,this._activeBuffer.getNullCell(Q)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,O,Q),O>0)for(;--O;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=ee,this._activeBuffer.x<V&&T-C>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(b,C){return b.final!=="t"||b.prefix||b.intermediates?this._parser.registerCsiHandler(b,C):this._parser.registerCsiHandler(b,(T=>!A(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}registerDcsHandler(b,C){return this._parser.registerDcsHandler(b,new P.DcsHandler(C))}registerEscHandler(b,C){return this._parser.registerEscHandler(b,C)}registerOscHandler(b,C){return this._parser.registerOscHandler(b,new S.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let b=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);b.hasWidth(this._activeBuffer.x)&&!b.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let b=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-b),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(b=this._bufferService.cols-1){this._activeBuffer.x=Math.min(b,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(b,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=b,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=b,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(b,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+b,this._activeBuffer.y+C)}cursorUp(b){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,b.params[0]||1)):this._moveCursor(0,-(b.params[0]||1)),!0}cursorDown(b){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,b.params[0]||1)):this._moveCursor(0,b.params[0]||1),!0}cursorForward(b){return this._moveCursor(b.params[0]||1,0),!0}cursorBackward(b){return this._moveCursor(-(b.params[0]||1),0),!0}cursorNextLine(b){return this.cursorDown(b),this._activeBuffer.x=0,!0}cursorPrecedingLine(b){return this.cursorUp(b),this._activeBuffer.x=0,!0}cursorCharAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(b){return this._setCursor(b.length>=2?(b.params[1]||1)-1:0,(b.params[0]||1)-1),!0}charPosAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(b){return this._moveCursor(b.params[0]||1,0),!0}linePosAbsolute(b){return this._setCursor(this._activeBuffer.x,(b.params[0]||1)-1),!0}vPositionRelative(b){return this._moveCursor(0,b.params[0]||1),!0}hVPosition(b){return this.cursorPosition(b),!0}tabClear(b){let C=b.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(b){let C=b.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(b,C,T,R=!1,O=!1){let F=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);F.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),O),R&&(F.isWrapped=!1)}_resetBufferLine(b,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+b),T.isWrapped=!1)}eraseInDisplay(b,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);T<this._bufferService.rows;T++)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(T);break;case 1:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(T+1).isWrapped=!1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(T=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,T-1);T--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+T)?.getTrimmedLength(););for(;T>=0;T--)this._bufferService.scroll(this._eraseAttrData())}else{for(T=this._bufferService.rows,this._dirtyRowTracker.markDirty(T-1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(b,C=!1){switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,O=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(O-1,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(T,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(b.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(b){let C=this._parser.precedingJoinState;if(!C)return!0;let T=b.params[0]||1,R=y.UnicodeService.extractWidth(C),O=this._activeBuffer.x-R,F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(O),U=new Uint32Array(F.length*T),V=0;for(let I=0;I<F.length;){let Q=F.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let J=V;for(let I=1;I<T;++I)U.copyWithin(J,0,V),J+=V;return this.print(U,0,J),!0}sendDeviceAttributesPrimary(b){return b.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(b){return b.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(b.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(b){return(this._optionsService.rawOptions.termName+"").indexOf(b)===0}setMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),this._charsetService.setgCharset(1,k.DEFAULT_CHARSET),this._charsetService.setgCharset(2,k.DEFAULT_CHARSET),this._charsetService.setgCharset(3,k.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),b.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(b,C){let T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:O}=this._coreMouseService,F=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:J,alt:I}=U,Q=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,ee=b.params[0];return we=ee,be=C?ee===2?4:ee===4?Y(F.modes.insertMode):ee===12?3:ee===20?Y(Q.convertEol):0:ee===1?Y(T.applicationCursorKeys):ee===3?Q.windowOptions.setWinLines?V===80?2:V===132?1:0:0:ee===6?Y(T.origin):ee===7?Y(T.wraparound):ee===8?3:ee===9?Y(R==="X10"):ee===12?Y(Q.cursorBlink):ee===25?Y(!F.isCursorHidden):ee===45?Y(T.reverseWraparound):ee===66?Y(T.applicationKeypad):ee===67?4:ee===1e3?Y(R==="VT200"):ee===1002?Y(R==="DRAG"):ee===1003?Y(R==="ANY"):ee===1004?Y(T.sendFocus):ee===1005?4:ee===1006?Y(O==="SGR"):ee===1015?4:ee===1016?Y(O==="SGR_PIXELS"):ee===1048?1:ee===47||ee===1047||ee===1049?Y(J===I):ee===2004?Y(T.bracketedPasteMode):ee===2026?Y(T.synchronizedOutput):0,F.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${we};${be}$y`),!0;var we,be}_updateAttrColor(b,C,T,R,O){return C===2?(b|=50331648,b&=-16777216,b|=u.AttributeData.fromColorRGB([T,R,O])):C===5&&(b&=-50331904,b|=33554432|255&T),b}_extractColor(b,C,T){let R=[0,0,-1,0,0,0],O=0,F=0;do{if(R[F+O]=b.params[C+F],b.hasSubParams(C+F)){let U=b.getSubParams(C+F),V=0;do R[1]===5&&(O=1),R[F+V+1+O]=U[V];while(++V<U.length&&V+F+1+O<R.length);break}if(R[1]===5&&F+O>=2||R[1]===2&&F+O>=5)break;R[1]&&(O=1)}while(++F+C<b.length&&F+O<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:T.fg=this._updateAttrColor(T.fg,R[1],R[3],R[4],R[5]);break;case 48:T.bg=this._updateAttrColor(T.bg,R[1],R[3],R[4],R[5]);break;case 58:T.extended=T.extended.clone(),T.extended.underlineColor=this._updateAttrColor(T.extended.underlineColor,R[1],R[3],R[4],R[5])}return F}_processUnderline(b,C){C.extended=C.extended.clone(),(!~b||b>5)&&(b=1),C.extended.underlineStyle=b,C.fg|=268435456,b===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(b){b.fg=n.DEFAULT_ATTR_DATA.fg,b.bg=n.DEFAULT_ATTR_DATA.bg,b.extended=b.extended.clone(),b.extended.underlineStyle=0,b.extended.underlineColor&=-67108864,b.updateExtended()}charAttributes(b){if(b.length===1&&b.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=b.length,T,R=this._curAttrData;for(let O=0;O<C;O++)T=b.params[O],T>=30&&T<=37?(R.fg&=-50331904,R.fg|=16777216|T-30):T>=40&&T<=47?(R.bg&=-50331904,R.bg|=16777216|T-40):T>=90&&T<=97?(R.fg&=-50331904,R.fg|=16777224|T-90):T>=100&&T<=107?(R.bg&=-50331904,R.bg|=16777224|T-100):T===0?this._processSGR0(R):T===1?R.fg|=134217728:T===3?R.bg|=67108864:T===4?(R.fg|=268435456,this._processUnderline(b.hasSubParams(O)?b.getSubParams(O)[0]:1,R)):T===5?R.fg|=536870912:T===7?R.fg|=67108864:T===8?R.fg|=1073741824:T===9?R.fg|=2147483648:T===2?R.bg|=134217728:T===21?this._processUnderline(2,R):T===22?(R.fg&=-134217729,R.bg&=-134217729):T===23?R.bg&=-67108865:T===24?(R.fg&=-268435457,this._processUnderline(0,R)):T===25?R.fg&=-536870913:T===27?R.fg&=-67108865:T===28?R.fg&=-1073741825:T===29?R.fg&=2147483647:T===39?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?O+=this._extractColor(b,O,R):T===53?R.bg|=1073741824:T===55?R.bg&=-1073741825:T===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):T===100?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);return!0}deviceStatus(b){switch(b.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(b){if(b.params[0]===6){let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${T}R`)}return!0}softReset(b){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(b){let C=b.length===0?1:b.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(b){let C=b.params[0]||1,T;return(b.length<2||(T=b.params[1])>this._bufferService.rows||T===0)&&(T=this._bufferService.rows),T>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=T-1,this._setCursor(0,0)),!0}windowOptions(b){if(!A(b.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=b.length>1?b.params[1]:0;switch(b.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(b){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(b){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(b){return this._windowTitle=b,this._onTitleChange.fire(b),!0}setIconName(b){return this._iconName=b,!0}setOrReportIndexedColor(b){let C=[],T=b.split(";");for(;T.length>1;){let R=T.shift(),O=T.shift();if(/^\d+$/.exec(R)){let F=parseInt(R);if(z(F))if(O==="?")C.push({type:0,index:F});else{let U=(0,x.parseColor)(O);U&&C.push({type:1,index:F,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(b){let C=b.indexOf(";");if(C===-1)return!0;let T=b.slice(0,C).trim(),R=b.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(b,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=b.split(":"),R,O=T.findIndex((F=>F.startsWith("id=")));return O!==-1&&(R=T[O].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(b,C){let T=b.split(";");for(let R=0;R<T.length&&!(C>=this._specialColors.length);++R,++C)if(T[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let O=(0,x.parseColor)(T[R]);O&&this._onColor.fire([{type:1,index:this._specialColors[C],color:O}])}return!0}setOrReportFgColor(b){return this._setOrReportSpecialColor(b,0)}setOrReportBgColor(b){return this._setOrReportSpecialColor(b,1)}setOrReportCursorColor(b){return this._setOrReportSpecialColor(b,2)}restoreIndexedColor(b){if(!b)return this._onColor.fire([{type:2}]),!0;let C=[],T=b.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let O=parseInt(T[R]);z(O)&&C.push({type:2,index:O})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(b){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(b){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(b){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),!0}selectCharset(b){return b.length!==2?(this.selectDefaultCharset(),!0):(b[0]==="/"||this._charsetService.setgCharset($[b[0]],k.CHARSETS[b[1]]||k.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let b=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,b,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(b){return this._charsetService.setgLevel(b),!0}screenAlignmentPattern(){let b=new f.CellData;b.content=4194373,b.fg=this._curAttrData.fg,b.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(b),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(b,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(O=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${O}${a.C0.ESC}\\`),!0))(b==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:b==='"p'?'P1$r61;1"p':b==="r"?`P1$r${T.scrollTop+1};${T.scrollBottom+1}r`:b==="m"?"P1$r0m":b===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(b,C){this._dirtyRowTracker.markRangeDirty(b,C)}}i.InputHandler=G;let N=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,b){q>b&&(H=q,q=b,b=H),q<this.start&&(this.start=q),b>this.end&&(this.end=b)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function z(q){return 0<=q&&q<256}N=d([w(0,h.IBufferService)],N)},701:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let w=c.match(/Version\/(\d+)/);return w===null||w.length<2?0:parseInt(w[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class w{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,_=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),_=Math.max(m,_),g=l.timeRemaining(),1.5*_>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends w{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends w{_requestCallback(k){return requestIdleCallback(k)}_cancelCallback(k){cancelIdleCallback(k)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(k){this._queue.clear(),this._queue.enqueue(k)}flush(){this._queue.flush()}}},5882:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(w){let a=w.buffer.lines.get(w.buffer.ybase+w.buffer.y-1),k=a?.get(w.cols-1),l=w.buffer.lines.get(w.buffer.ybase+w.buffer.y);l&&k&&(l.isWrapped=k[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&k[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,k=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=k}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),w=c(6168),a=c(5451),k=c(6107),l=c(732),m=c(3055),_=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=k.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new w.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new k.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=k.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(k.DEFAULT_ATTR_DATA),y=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let P=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new k.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new k.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let P=0;P<this.lines.length;P++)y+=+this.lines.get(P).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(k.DEFAULT_ATTR_DATA),h);if(y.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new k.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=[],P=0;for(let x=this.lines.length-1;x>=0;x--){let W=this.lines.get(x);if(!W||!W.isWrapped&&W.getTrimmedLength()<=f)continue;let $=[W];for(;W.isWrapped&&x>0;)W=this.lines.get(--x),$.unshift(W);if(!h){let T=this.ybase+this.y;if(T>=x&&T<x+$.length)continue}let D=$[$.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,f),E=A.length-$.length,H;H=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let G=[];for(let T=0;T<E;T++){let R=this.getBlankLine(k.DEFAULT_ATTR_DATA,!0);G.push(R)}G.length>0&&(S.push({start:x+$.length+P,newLines:G}),P+=G.length),$.push(...G);let N=A.length-1,z=A[N];z===0&&(N--,z=A[N]);let q=$.length-E-1,b=D;for(;q>=0;){let T=Math.min(b,z);if($[N]===void 0)break;if($[N].copyCellsFrom($[q],b-T,z-T,T,!0),z-=T,z===0&&(N--,z=A[N]),b-=T,b===0){q--;let R=Math.max(q,0);b=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)A[T]<f&&$[T].setCell(A[T],y);let C=E-H;for(;C-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],W=[];for(let z=0;z<this.lines.length;z++)W.push(this.lines.get(z));let $=this.lines.length,D=$-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let H=0;for(let z=Math.min(this.lines.maxLength-1,$+P-1);z>=0;z--)if(E&&E.start>D+H){for(let q=E.newLines.length-1;q>=0;q--)this.lines.set(z--,E.newLines[q]);z++,x.push({index:D+1,amount:E.newLines.length}),H+=E.newLines.length,E=S[++A]}else this.lines.set(z,W[D--]);let G=0;for(let z=x.length-1;z>=0;z--)x[z].index+=G,this.lines.onInsertEmitter.fire(x[z]),G+=x[z].amount;let N=Math.max(0,$+P-this.lines.maxLength);N>0&&this.lines.onTrimEmitter.fire(N)}}translateBufferLineToString(f,u,h=0,y){let S=this.lines.get(f);return S?S.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),w=c(3055),a=c(8938),k=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||w.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,k.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,k.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,k.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,k.stringFromCodePoint)(2097151&u)+(0,k.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new w.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new w.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let S=parseInt(u[y],10);S>=n&&delete this._combined[S]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let S=parseInt(h[y],10);S>=n&&delete this._extendedAttrs[S]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let P=u-1;P>=0;P--){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}else for(let P=0;P<u;P++){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}let S=Object.keys(n._combined);for(let P=0;P<S.length;P++){let x=parseInt(S[P],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],S=2097151&y,P=2097152&y?this._combined[g]:S?(0,k.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=P,u)for(let x=0;x<P.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(v,i)=>{function c(d,w,a){if(w===d.length-1)return d[w].getTrimmedLength();let k=!d[w].hasContent(a-1)&&d[w].getWidth(a-1)===1,l=d[w+1].getWidth(0)===2;return k&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,w,a,k,l,m){let _=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&k>=n&&k<g){n+=u.length-1;continue}let h=0,y=c(u,h,w),S=1,P=0;for(;S<u.length;){let W=c(u,S,w),$=W-P,D=a-y,A=Math.min($,D);u[h].copyCellsFrom(u[S],P,y,A,!1),y+=A,y===a&&(h++,y=0),P+=A,P===W&&(S++,P=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let W=u.length-1;W>0&&(W>h||u[W].getTrimmedLength()===0);W--)x++;x>0&&(_.push(n+u.length-x),_.push(x)),n+=u.length-1}return _},i.reflowLargerCreateNewLayout=function(d,w){let a=[],k=0,l=w[k],m=0;for(let _=0;_<d.length;_++)if(l===_){let n=w[++k];d.onDeleteEmitter.fire({index:_-m,amount:n}),_+=n-1,m+=n,l=w[++k]}else a.push(_);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,w){let a=[];for(let k=0;k<w.length;k++)a.push(d.get(w[k]));for(let k=0;k<a.length;k++)d.set(k,a[k]);d.length=w.length},i.reflowSmallerGetNewLineLengths=function(d,w,a){let k=[],l=d.map(((g,f)=>c(d,f,w))).reduce(((g,f)=>g+f)),m=0,_=0,n=0;for(;n<l;){if(l-n<a){k.push(l-n);break}m+=a;let g=c(d,_,w);m>g&&(m-=g,_++);let f=d[_].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;k.push(u),n+=u}return k},i.getWrappedLineTrimmedLength=c},4097:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),w=c(1073),a=c(802);class k extends d.Disposable{constructor(m,_){super(),this._optionsService=m,this._bufferService=_,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new w.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new w.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,_){this._normal.resize(m,_),this._alt.resize(m,_),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=k},3055:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),w=c(8938),a=c(5451);class k extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let _=new k;return _.setFromCharData(m),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[w.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(m[w.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(m[w.CHAR_DATA_CHAR_INDEX].length===2){let n=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[w.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[w.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=m[w.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[w.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=k},8938:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),w=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,w.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(v,i)=>{var c,d,w;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
4
- `,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(w||(i.C1_ESCAPED=w={}))},726:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,w=c.length){let a="";for(let k=d;k<w;++k){let l=c[k];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let w=c.length;if(!w)return 0;let a=0,k=0;if(this._interim){let l=c.charCodeAt(k++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=k;l<w;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=w)return this._interim=m,a;let _=c.charCodeAt(l);56320<=_&&_<=57343?d[a++]=1024*(m-55296)+_-56320+65536:(d[a++]=m,d[a++]=_)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let w=c.length;if(!w)return 0;let a,k,l,m,_=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)y<<=6,y|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,W=x-P;for(;g<W;){if(g>=w)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[P++]=S,y<<=6,y|=63&S}h||(x===2?y<128?g--:d[_++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[_++]=y):y<65536||y>1114111||(d[_++]=y)),this.interim.fill(0)}let f=w-4,u=g;for(;u<w;){for(;!(!(u<f)||128&(a=c[u])||128&(k=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[_++]=a,d[_++]=k,d[_++]=l,d[_++]=m,u+=4;if(a=c[u++],a<128)d[_++]=a;else if((224&a)==192){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(n=(31&a)<<6|63&k,n<128){u--;continue}d[_++]=n}else if((240&a)==224){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,_;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&k)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[_++]=n}else if((248&a)==240){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,_;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,this.interim[2]=l,_;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&k)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[_++]=n}}return _}}},7428:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),w=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],k;i.UnicodeV6=class{constructor(){if(this.version="6",!k){k=new Uint8Array(65536),k.fill(1),k[0]=0,k.fill(0,1,32),k.fill(0,127,160),k.fill(2,4352,4448),k[9001]=2,k[9002]=2,k.fill(2,11904,42192),k[12351]=1,k.fill(2,44032,55204),k.fill(2,63744,64256),k.fill(2,65040,65050),k.fill(2,65072,65136),k.fill(2,65280,65377),k.fill(2,65504,65511);for(let l=0;l<w.length;++l)k.fill(0,w[l][0],w[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?k[l]:(function(m,_){let n,g=0,f=_.length-1;if(m<_[0][0]||m>_[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>_[n][1])g=n+1;else{if(!(m<_[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let _=this.wcwidth(l),n=_===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>_&&(_=g)}return d.UnicodeService.createPropertyValue(0,_,n)}}},3562:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new w.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let _;for(this._isSyncWriting=!0;_=this._writeBuffer.shift();){this._action(_);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let _=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(_,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-_>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let k=a.toLowerCase();if(k.indexOf("rgb:")===0){k=k.slice(4);let l=c.exec(k);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(k.indexOf("#")===0&&(k=k.slice(1),d.exec(k)&&[3,6,9,12].includes(k.length))){let l=k.length/3,m=[0,0,0];for(let _=0;_<3;++_){let n=parseInt(k.slice(l*_,l*_+l),16);m[_]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,k=16){let[l,m,_]=a;return`rgb:${w(l,k)}/${w(m,k)}/${w(_,k)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function w(a,k){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(k){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),w=c(7262),a=c(1263),k=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=k,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=k}registerHandler(m,_){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(_),{dispose:()=>{let g=n.indexOf(_);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=k,this._ident=0}hook(m,_){if(this.reset(),this._ident=m,this._active=this._handlers[m]||k,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(m,_,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,_,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,_,n))}unhook(m,_=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=_,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=k,this._ident=0}};let l=new w.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,_,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,_,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let _=!1;if(this._hitLimit)_=!1;else if(m&&(_=this._handler(this._data,this._params),_ instanceof Promise))return _.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),w=c(7262),a=c(1346),k=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((P,x)=>x)),f=(P,x)=>g.slice(P,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class _ extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new w.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new k.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let S=g.intermediates.charCodeAt(y);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,S=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,W=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](this._params),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=P;x<f;++x){switch(y=g[x],S=this._transitions.table[this.currentState<<8|(y<160?y:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let W=this._csiHandlers[this._collect<<8|y],$=W?W.length-1:-1;for(;$>=0&&(h=W[$](this._params),h!==!0);$--)if(h instanceof Promise)return this._preserveStack(3,W,$,S,x),h;$<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=_},1346:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),w=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(k,l){this._handlers[k]===void 0&&(this._handlers[k]=[]);let m=this._handlers[k];return m.push(l),{dispose:()=>{let _=m.indexOf(l);_!==-1&&m.splice(_,1)}}}clearHandler(k){this._handlers[k]&&delete this._handlers[k]}setHandlerFallback(k){this._handlerFb=k}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let k=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;k>=0;--k)this._active[k].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let k=this._active.length-1;k>=0;k--)this._active[k].start();else this._handlerFb(this._id,"START")}_put(k,l,m){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(k,l,m);else this._handlerFb(this._id,"PUT",(0,w.utf32ToString)(k,l,m))}start(){this.reset(),this._state=1}put(k,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let _=k[l++];if(_===59){this._state=2,this._start();break}if(_<48||57<_)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+_-48}this._state===2&&m-l>0&&this._put(k,l,m)}}end(k,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,_=this._active.length-1,n=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;_>=0&&(m=this._active[_].end(k),m!==!0);_--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!1,m;_--}for(;_>=0;_--)if(m=this._active[_].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",k);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(k){this._handler=k,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(k,l,m){this._hitLimit||(this._data+=(0,w.utf32ToString)(k,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(k){let l=!1;if(this._hitLimit)l=!1;else if(k&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let k=new d;if(!a.length)return k;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let _=0;_<m.length;++_)k.addSubParam(m[_]);else k.addParam(m)}return k}constructor(a=32,k=32){if(this.maxLength=a,this.maxSubParamsLength=k,k>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(k),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let k=0;k<this.length;++k){a.push(this.params[k]);let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let k=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-k>0?this._subParams.subarray(k,l):null}getSubParamsAll(){let a={};for(let k=0;k<this.length;++k){let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&(a[k]=this._subParams.slice(l,m))}return a}addDigit(a){let k;if(this._rejectDigits||!(k=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[k-1];l[k-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let w={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(w),d.dispose=()=>this._wrappedAddonDispose(w),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let w=0;w<this._addons.length;w++)if(this._addons[w]===c){d=w;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),w=c(3055);i.BufferApiView=class{constructor(a,k){this._buffer=a,this.type=k}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let k=this._buffer.lines.get(a);if(k)return new d.BufferLineApiView(k)}getNullCell(){return new w.CellData}}},793:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(w){this._line=w}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(w,a){if(!(w<0||w>=this._line.length))return a?(this._line.loadCell(w,a),a):this._line.loadCell(w,new d.CellData)}translateToString(w,a,k){return this._line.translateToString(w,a,k)}}},5101:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),w=c(7150),a=c(802);class k extends w.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=k},6097:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(w=>d(w.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((w,a)=>d(w,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),k=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new k.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;y===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=y-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=_,i.BufferService=_=d([w(0,l.IOptionsService)],_)},5746:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(v,i,c){var d=this&&this.__decorate||function(u,h,y,S){var P,x=arguments.length,W=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,y):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(u,h,y,S);else for(var $=u.length-1;$>=0;$--)(P=u[$])&&(W=(x<3?P(W):x>3?P(h,y,W):P(h,y))||W);return x>3&&W&&Object.defineProperty(h,y,W),W},w=this&&this.__param||function(u,h){return function(y,S){h(y,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),k=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function _(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[_(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.x};${u.y}${h}`}},f=class extends k.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let S=h/y,P=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(u.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([w(0,a.IBufferService),w(1,a.ICoreService),w(2,a.IOptionsService)],f)},4071:function(v,i,c){var d=this&&this.__decorate||function(f,u,h,y){var S,P=arguments.length,x=P<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var W=f.length-1;W>=0;W--)(S=f[W])&&(x=(P<3?S(x):P>3?S(u,h,x):S(u,h))||x);return P>3&&x&&Object.defineProperty(u,h,x),x},w=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),k=c(7150),l=c(6501),m=c(802),_=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends k.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([w(0,l.IBufferService),w(1,l.ILogService),w(2,l.IOptionsService)],g)},6025:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),w=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,_]of l)this.set(m,_)}set(l,m){let _=this._entries.get(l);return this._entries.set(l,m),_}forEach(l){for(let[m,_]of this._entries.entries())l(m,_)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(k,l){this._services.set(k,l)}getService(k){return this._services.get(k)}createInstance(k,...l){let m=(0,w.getServiceDependencies)(k).sort(((g,f)=>g.index-f.index)),_=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${k.name} depends on UNKNOWN service ${g.id._id}.`);_.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${k.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new k(...l,..._)}}},7276:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==k.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),k=c(6501),l={trace:k.LogLevelEnum.TRACE,debug:k.LogLevelEnum.DEBUG,info:k.LogLevelEnum.INFO,warn:k.LogLevelEnum.WARN,error:k.LogLevelEnum.ERROR,off:k.LogLevelEnum.OFF},m,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=k.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=k.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=k.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=k.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=k.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=k.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=_,i.LogService=_=d([w(0,k.IOptionsService)],_)},56:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),w=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:w.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let k=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in _)if(g in n)try{let f=_[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,n){return this.onOptionChange((g=>{g===_&&n(this.rawOptions[_])}))}onMultipleOptionChange(_,n){return this.onOptionChange((g=>{_.indexOf(g)!==-1&&n()}))}_setupOptions(){let _=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:_.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(_,n){switch(_){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[_]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${_}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=k.includes(n)?n:i.DEFAULT_OPTIONS[_];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${_} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${_} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(v,i,c){var d=this&&this.__decorate||function(l,m,_,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,_):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,_,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,_,u):g(m,_))||u);return f>3&&u&&Object.defineProperty(m,_,u),u},w=this&&this.__param||function(l,m){return function(_,n){m(_,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),k=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let _=l,n=this._getEntryIdKey(_),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);_.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(_,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let _=l.lines.indexOf(m);_!==-1&&(l.lines.splice(_,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=k,i.OscLinkService=k=d([w(0,a.IBufferService)],k)},6201:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(w){return w[d]||[]},i.createDecorator=function(w){if(i.serviceRegistry.has(w))return i.serviceRegistry.get(w);let a=function(k,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,n,g){n[c]===n?n[d].push({id:_,index:g}):(n[d]=[{id:_,index:g}],n[c]=n)})(a,k,m)};return a._id=w,i.serviceRegistry.set(w,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var w;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(w||(i.LogLevelEnum=w={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),w=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,_=!1){return(16777215&l)<<3|(3&m)<<1|(_?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new w.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,_=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,_),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(_)),m+=h,_=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),w=c(5777),a=c(802);class k extends w.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,_=!0){this.coreService.triggerDataEvent(m,_)}resize(m,_){m===this.cols&&_===this.rows||super.resize(m,_)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=k},3058:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,S=(P,x)=>P===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let P=0,x=h.length;P<x;P++)if(!S(h[P],y[P]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let S=h.length-1;y<S&&(h[y]=h[S]),h.pop()},i.binarySearch=function(h,y,S){return a(h.length,(P=>S(h[P],y)))},i.binarySearch2=a,i.quickSelect=function h(y,S,P){if((y|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],W=[],$=[],D=[];for(let A of S){let E=P(A,x);E<0?W.push(A):E>0?$.push(A):D.push(A)}return y<W.length?h(y,W,P):y<W.length+D.length?D[0]:h(y-(W.length+D.length),$,P)},i.groupBy=function(h,y){let S=[],P;for(let x of h.slice(0).sort(y))P&&y(P[0],x)===0?P.push(x):(P=[x],S.push(P));return S},i.groupAdjacentBy=function*(h,y){let S,P;for(let x of h)P!==void 0&&y(P,x)?S.push(x):(S&&(yield S),S=[x]),P=x;S&&(yield S)},i.forEachAdjacent=function(h,y){for(let S=0;S<=h.length;S++)y(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,y){for(let S=0;S<h.length;S++)y(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=k,i.delta=function(h,y,S){let P=k(h,y,S),x=[],W=[];for(let $ of P)x.push(...h.slice($.start,$.start+$.deleteCount)),W.push(...$.toInsert);return{removed:x,added:W}},i.top=function(h,y,S){if(S===0)return[];let P=h.slice(0,S).sort(y);return l(h,y,P,S,h.length),P},i.topAsync=function(h,y,S,P,x){return S===0?Promise.resolve([]):new Promise(((W,$)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(y);for(let E=S,H=Math.min(S+P,D);E<D;E=H,H=Math.min(H+P,D)){if(E>S&&await new Promise((G=>setTimeout(G))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,H)}return A})().then(W,$)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let S=0;S<h.length;S++)h[S]&&(h[y]=h[S],y+=1);h.length=y},i.move=function(h,y,S){h.splice(S,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=S=>S){let S=new Set;return h.filter((P=>{let x=y(P);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return S=>{let P=h(S);return!y.has(P)&&(y.add(P),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,S=(P,x)=>P===x){let P=0;for(let x=0,W=Math.min(h.length,y.length);x<W&&S(h[x],y[x]);x++)P++;return P},i.range=function(h,y){let S=typeof y=="number"?h:0;typeof y=="number"?S=h:(S=0,y=h);let P=[];if(S<=y)for(let x=S;x<y;x++)P.push(x);else for(let x=S;x>y;x--)P.push(x);return P},i.index=function(h,y,S){return h.reduce(((P,x)=>(P[y(x)]=S?S(x):x,P)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,S){let P=h.slice(0,y),x=h.slice(y);return P.concat(S,x)},i.shuffle=function(h,y){let S;if(typeof y=="number"){let P=y;S=()=>{let x=179426549*Math.sin(P++);return x-Math.floor(x)}}else S=Math.random;for(let P=h.length-1;P>0;P-=1){let x=Math.floor(S()*(P+1)),W=h[P];h[P]=h[x],h[x]=W}},i.pushToStart=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.unshift(y))},i.pushToEnd=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.push(y))},i.pushMany=function(h,y){for(let S of y)h.push(S)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=_,i.splice=function(h,y,S,P){let x=n(h,y),W=h.splice(x,S);return W===void 0&&(W=[]),_(h,x,P),W},i.compareBy=function(h,y){return(S,P)=>y(h(S),h(P))},i.tieBreakComparators=function(...h){return(y,S)=>{for(let P of h){let x=P(y,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,S)=>-h(y,S)};let d=c(9807),w=c(8297);function a(h,y){let S=0,P=h-1;for(;S<=P;){let x=(S+P)/2|0,W=y(x);if(W<0)S=x+1;else{if(!(W>0))return x;P=x-1}}return-(S+1)}function k(h,y,S){let P=[];function x(D,A,E){if(A===0&&E.length===0)return;let H=P[P.length-1];H&&H.start+H.deleteCount===D?(H.deleteCount+=A,H.toInsert.push(...E)):P.push({start:D,deleteCount:A,toInsert:E})}let W=0,$=0;for(;;){if(W===h.length){x(W,0,y.slice($));break}if($===y.length){x(W,h.length-W,[]);break}let D=h[W],A=y[$],E=S(D,A);E===0?(W+=1,$+=1):E<0?(x(W,1,[]),W+=1):E>0&&(x(W,0,[A]),$+=1)}return P}function l(h,y,S,P,x){for(let W=S.length;P<x;P++){let $=h[P];if(y($,S[W-1])<0){S.pop();let D=(0,w.findFirstIdxMonotonousOrArrLen)(S,(A=>y($,A)<0));S.splice(D,0,$)}}}function m(h,y){let S=h.indexOf(y);if(S>-1)return h.splice(S,1),y}function _(h,y,S){let P=n(h,y),x=h.length,W=S.length;h.length=x+W;for(let $=x-1;$>=P;$--)h[$+W]=h[$];for(let $=0;$<W;$++)h[$+P]=S[$]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let S=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,S}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let S=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((S=>(y(S),!0)))}toArray(){let y=[];return this.iterate((S=>(y.push(S),!0))),y}filter(y){return new f((S=>this.iterate((P=>!y(P)||S(P)))))}map(y){return new f((S=>this.iterate((P=>S(y(P))))))}some(y){let S=!1;return this.iterate((P=>(S=y(P),!S))),S}findFirst(y){let S;return this.iterate((P=>!y(P)||(S=P,!1))),S}findLast(y){let S;return this.iterate((P=>(y(P)&&(S=P),!0))),S}findLastMaxBy(y){let S,P=!0;return this.iterate((x=>((P||g.isGreaterThan(y(x,S)))&&(P=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,S){let P=Array.from(y.keys()).sort(((x,W)=>S(y[x],y[W])));return new u(P)}apply(y){return y.map(((S,P)=>y[this._indexMap[P]]))}inverse(){let y=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)y[this._indexMap[S]]=S;return new u(y)}}i.Permutation=u},8297:(v,i)=>{function c(l,m,_=l.length-1){for(let n=_;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function w(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let _=c(l,m);if(_!==-1)return l[_]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let _=d(l,m);return _===-1?void 0:l[_]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let _=w(l,m);return _===l.length?void 0:l[_]},i.findFirstIdxMonotonousOrArrLen=w,i.findFirstIdxMonotonous=function(l,m,_=0,n=l.length){let g=w(l,m,_,n);return g===l.length?-1:g},i.findFirstMax=k,i.findLastMax=function(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>=0&&(_=g)}return _},i.findFirstMin=function(l,m){return k(l,((_,n)=>-m(_,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let _=0;for(let n=1;n<l.length;n++)m(l[n],l[_])>0&&(_=n);return _},i.mapFindFirst=function(l,m){for(let _ of l){let n=m(_);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let _=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function k(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>0&&(_=g)}return _}i.MonotonousArray=a},9087:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(w,a){let k=Object.create(null);for(let l of w){let m=a(l),_=k[m];_||(_=k[m]=[]),_.push(l)}return k},i.diffSets=function(w,a){let k=[],l=[];for(let m of w)a.has(m)||k.push(m);for(let m of a)w.has(m)||l.push(m);return{removed:k,added:l}},i.diffMaps=function(w,a){let k=[],l=[];for(let[m,_]of w)a.has(m)||k.push(_);for(let[m,_]of a)w.has(m)||l.push(_);return{removed:k,added:l}},i.intersection=function(w,a){let k=new Set;for(let l of a)w.has(l)&&k.add(l);return k};class d{static{c=Symbol.toStringTag}constructor(a,k){this.toKey=k,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let k=this.toKey(a);return this._map.set(k,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,k){this._map.forEach((l=>a.call(k,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){w(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){w(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=w,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
2
+ var Ia=Object.create;var Wr=Object.defineProperty;var xa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Aa=Object.getPrototypeOf,Da=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var La=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ma=(e,t)=>{for(var r in t)Wr(e,r,{get:t[r],enumerable:!0})},Oa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ea(t))!Da.call(e,o)&&o!==r&&Wr(e,o,{get:()=>t[o],enumerable:!(s=xa(t,o))||s.enumerable});return e};var Ba=(e,t,r)=>(r=e!=null?Ia(Aa(e)):{},Oa(t||!e||!e.__esModule?Wr(r,"default",{value:e,enumerable:!0}):r,e));function ye(e){return $a[e]}function jr(e,t={}){let r=ye(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function pt(e={}){return de.filter(t=>e.runners?.[t]?.enabled!==!1)}function st(e={}){let t=pt(e);if(t.length===0)throw new Error("No runners are enabled. Enable at least one runner in .craig/config.json.");return t.includes("codex")?"codex":t[0]}function Kt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function gt(e){return de.includes(e)}function rn(e){if(!e||e.length===0)return"codex";if(!gt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${de.join(", ")}.`);return e}function Se(e){return ye(e).displayName}function we(e,t,r={}){let s=[jr(e,r).executable];return t&&t.length>0&&s.push(t),s}var de,$a,Ae=$e(()=>{"use strict";de=["codex","cursor","claude"],$a={codex:{id:"codex",displayName:"Codex",executable:"codex",defaultAgentTitle:"Codex"},cursor:{id:"cursor",displayName:"Cursor",executable:"cursor-agent",defaultAgentTitle:"Cursor"},claude:{id:"claude",displayName:"Claude",executable:"claude",defaultAgentTitle:"Claude"}}});import{randomUUID as qa}from"node:crypto";import{open as Ka,readFile as Of,rename as za,rm as Va}from"node:fs/promises";import Hr from"node:path";async function ue(e,t){let r=Hr.dirname(e),s=Hr.join(r,`.${Hr.basename(e)}.${process.pid}.${Date.now()}.${qa()}.tmp`),o=await Ka(s,"w");try{let p=`${JSON.stringify(t,null,2)}
3
+ `;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await za(s,e)}catch(p){throw await o.close().catch(()=>{}),await Va(s,{force:!0}).catch(()=>{}),p}}var We=$e(()=>{"use strict"});import{readFile as ec}from"node:fs/promises";async function Te(e){let t=await ec(e.indexFile,"utf8"),r=JSON.parse(t);return qr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await ue(e.indexFile,r)}function qr(e,t,r){if(!tc(e))throw new Error(`Craig index at ${r} is invalid. Remove or repair the file before rerunning Craig.`);if(e.workspaceRoot!==t)throw new Error(`Craig index at ${r} belongs to ${e.workspaceRoot}, not ${t}. Remove or repair the file before rerunning Craig.`);return e}function tc(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=$e(()=>{"use strict";We()});import{readFile as rc}from"node:fs/promises";async function he(e,t){let r=await rc(Kr(e,t),"utf8"),s=JSON.parse(r);return sc(s,Kr(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await ue(Kr(e,t.id),r)}async function zr(e,t){let r=await Te(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function Kr(e,t){return`${e.tasksDir}/${t}.json`}function sc(e,t){let r=nc(e);if(!oc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function nc(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Vr(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:lc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:ac(t.repoTargets),runnerSession:t.runnerSession??ic(t),checks:mc(t),lastCommit:t.lastCommit??null,prs:_c(t),artifacts:yc(t),cleanup:vc(t)}}function ic(e){if(typeof e.title!="string")return null;let t=Vr(e.runner);return{command:we(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function oc(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.id=="string"&&typeof t.title=="string"&&typeof t.slug=="string"&&(t.type==="repo"||t.type==="project")&&typeof t.status=="string"&&gt(t.runner??"")&&typeof t.repoId=="string"&&typeof t.workspaceId=="string"&&(typeof t.sessionId=="string"||t.sessionId===null)&&(typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null)&&Array.isArray(t.linkedRepoIds)&&t.linkedRepoIds.every(r=>typeof r=="string")&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&typeof t.branch=="string"&&cn(t.ptyTabs)&&(t.bundlePath===void 0||t.bundlePath===null||typeof t.bundlePath=="string")&&(t.selectedRepoTargetId===void 0||t.selectedRepoTargetId===null||typeof t.selectedRepoTargetId=="string")&&(t.repoTargets===void 0||cc(t.repoTargets))&&uc(t.runnerSession)&&hc(t.prompt)&&ln(t.checks)&&dn(t.lastCommit)&&pc(t.prs)&&gc(t.artifacts)&&hn(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function ac(e){if(Array.isArray(e))return e.filter(an)}function cc(e){return Array.isArray(e)&&e.every(an)}function an(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.repoId=="string"&&typeof t.branch=="string"&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&(t.status==="ready"||t.status==="unavailable"||t.status==="merged"||t.status==="closed")&&(typeof t.failureReason=="string"||t.failureReason===null)&&ln(t.checks)&&dn(t.lastCommit)&&un(t.pullRequest)&&hn(t.cleanup)}function lc(e){if(cn(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return dc(e.id,e.title,t,Vr(e.runner))}function dc(e,t,r,s){let o=ye(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:we(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Vr(e){return e&&gt(e)?e:"codex"}function cn(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&(t.kind==="agent"||t.kind==="terminal")&&typeof t.title=="string"&&Array.isArray(t.command)&&t.command.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string")}function uc(e){return typeof e=="object"&&e!==null&&Array.isArray(e.command)&&e.command.every(t=>typeof t=="string")&&(typeof e.pid=="number"||e.pid===null)&&(typeof e.startedAt=="string"||e.startedAt===null)&&(e.lastKnownState==="starting"||e.lastKnownState==="running"||e.lastKnownState==="exited"||e.lastKnownState==="failed")&&(typeof e.exitCode=="number"||e.exitCode===null)&&(typeof e.exitedAt=="string"||e.exitedAt===null)}function hc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function ln(e){return typeof e=="object"&&e!==null&&typeof e.source=="object"&&e.source!==null&&e.source.type==="repo_config"&&typeof e.source.path=="string"&&(typeof e.lastRunAt=="string"||e.lastRunAt===null)&&(e.status==="not_run"||e.status==="running"||e.status==="passed"||e.status==="failed")&&Array.isArray(e.commands)&&e.commands.every(t=>typeof t=="string")&&Array.isArray(e.results)&&e.results.every(t=>typeof t=="object"&&t!==null&&typeof t.command=="string"&&typeof t.startedAt=="string"&&typeof t.finishedAt=="string"&&typeof t.exitCode=="number")}function dn(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function un(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&fc(e.requiredChecks)}function fc(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))}function pc(e){return Array.isArray(e)&&e.every(un)}function gc(e){return typeof e=="object"&&e!==null&&(typeof e.logPath=="string"||e.logPath===null)&&(typeof e.checkSummaryPath=="string"||e.checkSummaryPath===null)&&(typeof e.prDraftPath=="string"||e.prDraftPath===null)&&(typeof e.prStatusPath=="string"||e.prStatusPath===null)}function hn(e){return typeof e=="object"&&e!==null&&(typeof e.paneClosedAt=="string"||e.paneClosedAt===null)&&(typeof e.worktreeRemovedAt=="string"||e.worktreeRemovedAt===null)&&typeof e.preservedWorktree=="boolean"&&(typeof e.warning=="string"||e.warning===null)}function mc(e){return e.checks?{...e.checks,results:e.checks.results??[]}:{source:{type:"repo_config",path:".craig/config.json"},lastRunAt:null,status:"not_run",commands:[],results:[]}}function _c(e){if(Array.isArray(e.prs))return e.prs.map(wc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:fn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:null,requiredChecks:pn(t.requiredChecks),comments:[],createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function wc(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:fn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:bc(t.reviewDecision),requiredChecks:pn(t.requiredChecks),comments:kc(t.comments),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function fn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function bc(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function kc(e){return Array.isArray(e)?e.flatMap(t=>{if(typeof t!="object"||t===null)return[];let r=t;return typeof r.body!="string"||!r.body.trim()?[]:[{author:typeof r.author=="string"?r.author:null,body:r.body,createdAt:typeof r.createdAt=="string"?r.createdAt:null,url:typeof r.url=="string"?r.url:null}]}):[]}function pn(e){return Array.isArray(e)?e.map(t=>({...t,status:t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown"?t.status:"unknown",conclusion:t.conclusion??null})):[]}function yc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function vc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Re=$e(()=>{"use strict";We();ot();Ae()});import{readFile as Sc}from"node:fs/promises";async function De(e){try{let t=await Sc(e.uiStateFile,"utf8"),r=JSON.parse(t);return Tc(r,e.uiStateFile)}catch(t){if(Cc(t))return null;throw t}}async function Ce(e,t){await ue(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function je(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function Tc(e,t){if(typeof e!="object"||e===null||e.version!==1||!(e.selectedRepoId===null||typeof e.selectedRepoId=="string")||!(e.selectedWorkspaceId===null||typeof e.selectedWorkspaceId=="string")||!(e.selectedTaskId===null||typeof e.selectedTaskId=="string")||!(e.selectedPtyTabId===void 0||e.selectedPtyTabId===null||typeof e.selectedPtyTabId=="string")||!_t(e,"inputMode")||!_t(e,"focusedRegion")||!_t(e,"activeTab")||!_t(e,"inspectorSection")||!_t(e,"inspectionMode")||!zt(e,"openInspectionKind")||!zt(e,"selectedFileTreePath")||!zt(e,"selectedFilePath")||!zt(e,"selectedDiffPath")||!Rc(e,"collapsedFileTreePaths")||!_t(e,"selectedActionId")||typeof e.updatedAt!="string")throw new Error(`Craig UI state at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}function _t(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function zt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Rc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Cc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=$e(()=>{"use strict";We()});import{execFile as Pc}from"node:child_process";import{promisify as Ic}from"node:util";async function ee(e,t,r={}){try{let s=await gn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(mn(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await gn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(mn(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function mn(e){return e instanceof Error}var gn,Pe=$e(()=>{"use strict";gn=Ic(Pc)});import{readFile as Kc,readdir as zc,rm as Vc}from"node:fs/promises";import Cn from"node:path";async function Le(e,t){let r=await Kc(Xt(e,t),"utf8"),s=JSON.parse(r);return Gc(s,Xt(e,t))}async function Yt(e,t){await ue(Xt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await zc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Le(e,Cn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function Pn(e,t){await Vc(Xt(e,t),{force:!0})}function Xt(e,t){return Cn.join(e.reposDir,`${t}.json`)}function Gc(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=$e(()=>{"use strict";We()});import{readFile as Xc,readdir as Yc,rm as Qc}from"node:fs/promises";import In from"node:path";async function Rt(e,t){let r=await Xc(Qt(e,t),"utf8"),s=JSON.parse(r);return Jc(s,Qt(e,t))}async function bt(e,t){await ue(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Me(e){let t=await Yc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Rt(e,In.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function xn(e,t){await Qc(Qt(e,t),{force:!0})}function Qt(e,t){return In.join(e.workspacesDir,`${t}.json`)}function Jc(e,t){let r=Zc(e);if(typeof r!="object"||r===null||typeof r.id!="string"||r.kind!=="repo"&&r.kind!=="project"||typeof r.name!="string"||typeof r.rootPath!="string"||typeof r.primaryRepoId!="string"||typeof r.branch!="string"||r.status!=="active"&&r.status!=="archived"||!Array.isArray(r.linkedRepoIds)||!(r.linkedRepoIds??[]).every(s=>typeof s=="string")||!(r.repoId===void 0||typeof r.repoId=="string")||!Array.isArray(r.discoveredRepoIds)||!(r.discoveredRepoIds??[]).every(s=>typeof s=="string")||!(r.archivedAt===null||typeof r.archivedAt=="string")||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig workspace record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Zc(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=$e(()=>{"use strict";We()});async function He(e,t){let r=await Te(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await he(e,i))}catch(c){if(al(c)){o.push(i);return}throw c}}));let k=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return k.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:k,missingTaskIds:o,repoId:t?.repoId??null}}function al(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var xt=$e(()=>{"use strict";ot();Re()});var bi={};Ma(bi,{addWorkspace:()=>Dt,archiveWorkspace:()=>Lt,listWorkspaces:()=>ps,removeWorkspace:()=>Mt,removeWorkspaceRecord:()=>cr,restoreWorkspace:()=>gs});import{readdir as Kl,realpath as ui,stat as zl}from"node:fs/promises";import Je from"node:path";async function Dt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await zl(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await mi(r)?Vl(e,r):Gl(e,r)}async function ps(e,t){return{kind:"listWorkspaces",workspaces:(await Me(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Lt(e,t){let s={...await Rt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await wi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function gs(e,t){let s={...await Rt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await De({uiStateFile:e.uiStateFile})??null;return await Ce({uiStateFile:e.uiStateFile},{...o??je(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Mt(e,t){let r=await Rt(e,t),s=await He(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await cr(e,t),await wi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Vl(e,t){let r=await _i(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?fi(o,r):hi(s,t,r),k=`workspace_${p.id}`,c=(await Me(e)).find(a=>a.id===k)??null,d=new Date().toISOString(),_=c??{id:k,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Yt(e,p),c||await bt(e,_),await pi(e,{repoIds:[p.id],workspaceIds:[_.id]}),await gi(e,_,p.id),{kind:"createWorkspace",workspace:_,repos:[p],created:!c}}async function Gl(e,t){let r=await Xl(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Me(e),o=Ql(s,Je.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,k=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:k,updatedAt:k};return await Promise.all(r.map(d=>Yt(e,d))),await bt(e,c),await pi(e,{repoIds:i,workspaceIds:[c.id]}),await gi(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function Xl(e,t){let r=await Kl(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let k=Je.join(t,p.name);if(!await mi(k))continue;let i=s.find(d=>d.rootPath===k)??o.find(d=>d.rootPath===k),c=await _i(k);o.push(i?fi(i,c):hi([...s,...o],k,c))}return o.sort((p,k)=>p.name.localeCompare(k.name)||p.id.localeCompare(k.id))}function hi(e,t,r){let s=new Date().toISOString();return{id:Yl(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function fi(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Yl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function Ql(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function pi(e,t){let r=await Te(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function gi(e,t,r){await Ce({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??je(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function mi(e){try{let r=(await ee("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([ui(r).catch(()=>Je.resolve(r)),ui(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function _i(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await ee("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function cr(e,t){await xn(e,t);let r=await Te(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function wi(e,t){let r=await De({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Ce({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Ot=$e(()=>{"use strict";ot();dt();Ct();wt();Pe();xt()});var Io=La(Po=>{(()=>{"use strict";var e={5639:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new _.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new _.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new _.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let w=0;w<Math.min(l,this.length);w++)m[w]=this._array[this._getCyclicIndex(w)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,...w){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+w.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<w.length;n++)this._array[this._getCyclicIndex(l+n)]=w[n];if(w.length&&this.onInsertEmitter.fire({index:l,amount:w.length}),this._length+w.length>this._maxLength){let n=this._length+w.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=w.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,w){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(let g=m-1;g>=0;g--)this.set(l+g+w,this.get(l+g));let n=l+m+w-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+w,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,_=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let b in d)a[b]=_<=1?d[b]:d[b]&&c(d[b],_-1);return a}},5777:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),_=c(6025),a=c(7276),b=c(9640),l=c(56),m=c(4071),w=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),T=c(802),P=c(7150),x=!1;class N extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new T.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new T.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new T.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new T.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new T.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new T.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new T.Emitter),this._instantiationService=new _.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(b.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(w.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(T.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(T.Event.forward(this._bufferService.onResize,this._onResize)),this._register(T.Event.forward(this.coreService.onData,this._onData)),this._register(T.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(T.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,b.MINIMUM_COLS),A=Math.max(A,b.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=N},2486:function(k,i,c){var d=this&&this.__decorate||function(H,v,C,S){var R,$=arguments.length,W=$<3?v:S===null?S=Object.getOwnPropertyDescriptor(v,C):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(H,v,C,S);else for(var U=H.length-1;U>=0;U--)(R=H[U])&&(W=($<3?R(W):$>3?R(v,C,W):R(v,C))||W);return $>3&&W&&Object.defineProperty(v,C,W),W},_=this&&this.__param||function(H,v){return function(C,S){v(C,S,H)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=F;let a=c(3534),b=c(6760),l=c(6717),m=c(7150),w=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),T=c(1346),P=c(9823),x=c(8693),N=c(802),B={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(H,v){if(H>24)return v.setWinLines||!1;switch(H){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var E;(function(H){H[H.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",H[H.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let q=0;class K extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,C,S,R,$,W,U,z,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=C,this._coreService=S,this._logService=R,this._optionsService=$,this._oscLinkService=W,this._coreMouseService=U,this._unicodeService=z,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new w.StringToUtf32,this._utf8Decoder=new w.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new Y(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:Q.toArray()})})),this._parser.setEscHandlerFallback((I=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(I)})})),this._parser.setExecuteHandlerFallback((I=>{this._logService.debug("Unknown EXECUTE code: ",{code:I})})),this._parser.setOscHandlerFallback(((I,Q,V)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:Q,data:V})})),this._parser.setDcsHandlerFallback(((I,Q,V)=>{Q==="HOOK"&&(V=V.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:Q,payload:V})})),this._parser.setPrintHandler(((I,Q,V)=>this.print(I,Q,V))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new T.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new T.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new T.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new T.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new T.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new T.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new T.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new T.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new T.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new T.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new T.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new T.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in b.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,Q)=>this.requestStatusString(I,Q))))}_preserveStack(v,C,S,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=S,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([v,new Promise(((C,S)=>setTimeout((()=>S("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,C){let S,R=this._activeBuffer.x,$=this._activeBuffer.y,W=0,U=this._parseStack.paused;if(U){if(S=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(S),S;R=this._parseStack.cursorStartX,$=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(W=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((I=>I.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),U||this._dirtyRowTracker.clearRange(),v.length>D)for(let I=W;I<v.length;I+=D){let Q=I+D<v.length?I+D:v.length,V=typeof v=="string"?this._stringDecoder.decode(v.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,Q),this._parseBuffer);if(S=this._parser.parse(this._parseBuffer,V))return this._preserveStack(R,$,V,I),this._logSlowResolvingAsync(S),S}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(S=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,$,I,0),this._logSlowResolvingAsync(S),S}this._activeBuffer.x===R&&this._activeBuffer.y===$||this._onCursorMove.fire();let z=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),te=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);te<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(te,this._bufferService.rows-1),end:Math.min(z,this._bufferService.rows-1)})}print(v,C,S){let R,$,W=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,z=this._bufferService.cols,te=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,Q=this._curAttrData,V=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&S-C>0&&V.getWidth(this._activeBuffer.x-1)===2&&V.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let J=this._parser.precedingJoinState;for(let ge=C;ge<S;++ge){if(R=v[ge],R<127&&W){let Ke=W[String.fromCharCode(R)];Ke&&(R=Ke.charCodeAt(0))}let _e=this._unicodeService.charProperties(R,J);$=y.UnicodeService.extractWidth(_e);let Ye=y.UnicodeService.extractShouldJoin(_e),xe=Ye?y.UnicodeService.extractWidth(J):0;if(J=_e,U&&this._onA11yChar.fire((0,w.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+$-xe>z){if(te){let Ke=V,rt=this._activeBuffer.x-xe;for(this._activeBuffer.x=xe,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),V=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),xe>0&&V instanceof n.BufferLine&&V.copyCellsFrom(Ke,rt,0,xe,!1);rt<z;)Ke.setCellFromCodepoint(rt++,0,1,Q)}else if(this._activeBuffer.x=z-1,$===2)continue}if(Ye&&this._activeBuffer.x){let Ke=V.getWidth(this._activeBuffer.x-1)?1:2;V.addCodepointToCell(this._activeBuffer.x-Ke,R,$);for(let rt=$-xe;--rt>=0;)V.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(V.insertCells(this._activeBuffer.x,$-xe,this._activeBuffer.getNullCell(Q)),V.getWidth(z-1)===2&&V.setCellFromCodepoint(z-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),V.setCellFromCodepoint(this._activeBuffer.x++,R,$,Q),$>0)for(;--$;)V.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=J,this._activeBuffer.x<z&&S-C>0&&V.getWidth(this._activeBuffer.x)===0&&!V.hasContent(this._activeBuffer.x)&&V.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,C){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,C):this._parser.registerCsiHandler(v,(S=>!A(S.params[0],this._optionsService.rawOptions.windowOptions)||C(S)))}registerDcsHandler(v,C){return this._parser.registerDcsHandler(v,new P.DcsHandler(C))}registerEscHandler(v,C){return this._parser.registerEscHandler(v,C)}registerOscHandler(v,C){return this._parser.registerOscHandler(v,new T.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let v=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);v.hasWidth(this._activeBuffer.x)&&!v.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let v=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-v),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(v=this._bufferService.cols-1){this._activeBuffer.x=Math.min(v,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(v,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=v,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+C)}cursorUp(v){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,v.params[0]||1)):this._moveCursor(0,v.params[0]||1),!0}cursorForward(v){return this._moveCursor(v.params[0]||1,0),!0}cursorBackward(v){return this._moveCursor(-(v.params[0]||1),0),!0}cursorNextLine(v){return this.cursorDown(v),this._activeBuffer.x=0,!0}cursorPrecedingLine(v){return this.cursorUp(v),this._activeBuffer.x=0,!0}cursorCharAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(v){return this._setCursor(v.length>=2?(v.params[1]||1)-1:0,(v.params[0]||1)-1),!0}charPosAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(v){return this._moveCursor(v.params[0]||1,0),!0}linePosAbsolute(v){return this._setCursor(this._activeBuffer.x,(v.params[0]||1)-1),!0}vPositionRelative(v){return this._moveCursor(0,v.params[0]||1),!0}hVPosition(v){return this.cursorPosition(v),!0}tabClear(v){let C=v.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let C=v.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,C,S,R=!1,$=!1){let W=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);W.replaceCells(C,S,this._activeBuffer.getNullCell(this._eraseAttrData()),$),R&&(W.isWrapped=!1)}_resetBufferLine(v,C=!1){let S=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);S&&(S.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),S.isWrapped=!1)}eraseInDisplay(v,C=!1){let S;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(S=this._activeBuffer.y,this._dirtyRowTracker.markDirty(S),this._eraseInBufferLine(S++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);S<this._bufferService.rows;S++)this._resetBufferLine(S,C);this._dirtyRowTracker.markDirty(S);break;case 1:for(S=this._activeBuffer.y,this._dirtyRowTracker.markDirty(S),this._eraseInBufferLine(S,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(S+1).isWrapped=!1);S--;)this._resetBufferLine(S,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(S=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,S-1);S--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+S)?.getTrimmedLength(););for(;S>=0;S--)this._bufferService.scroll(this._eraseAttrData())}else{for(S=this._bufferService.rows,this._dirtyRowTracker.markDirty(S-1);S--;)this._resetBufferLine(S,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(v,C=!1){switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let S=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,$=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice($-1,1),this._activeBuffer.lines.splice(S,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let S=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(S,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(v.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(v){let C=this._parser.precedingJoinState;if(!C)return!0;let S=v.params[0]||1,R=y.UnicodeService.extractWidth(C),$=this._activeBuffer.x-R,W=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString($),U=new Uint32Array(W.length*S),z=0;for(let I=0;I<W.length;){let Q=W.codePointAt(I)||0;U[z++]=Q,I+=Q>65535?2:1}let te=z;for(let I=1;I<S;++I)U.copyWithin(te,0,z),te+=z;return this.print(U,0,te),!0}sendDeviceAttributesPrimary(v){return v.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(v){return v.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(v.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(v){return(this._optionsService.rawOptions.termName+"").indexOf(v)===0}setMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),this._charsetService.setgCharset(1,b.DEFAULT_CHARSET),this._charsetService.setgCharset(2,b.DEFAULT_CHARSET),this._charsetService.setgCharset(3,b.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),v.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(v,C){let S=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:$}=this._coreMouseService,W=this._coreService,{buffers:U,cols:z}=this._bufferService,{active:te,alt:I}=U,Q=this._optionsService.rawOptions,V=Ye=>Ye?1:2,J=v.params[0];return ge=J,_e=C?J===2?4:J===4?V(W.modes.insertMode):J===12?3:J===20?V(Q.convertEol):0:J===1?V(S.applicationCursorKeys):J===3?Q.windowOptions.setWinLines?z===80?2:z===132?1:0:0:J===6?V(S.origin):J===7?V(S.wraparound):J===8?3:J===9?V(R==="X10"):J===12?V(Q.cursorBlink):J===25?V(!W.isCursorHidden):J===45?V(S.reverseWraparound):J===66?V(S.applicationKeypad):J===67?4:J===1e3?V(R==="VT200"):J===1002?V(R==="DRAG"):J===1003?V(R==="ANY"):J===1004?V(S.sendFocus):J===1005?4:J===1006?V($==="SGR"):J===1015?4:J===1016?V($==="SGR_PIXELS"):J===1048?1:J===47||J===1047||J===1049?V(te===I):J===2004?V(S.bracketedPasteMode):J===2026?V(S.synchronizedOutput):0,W.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${ge};${_e}$y`),!0;var ge,_e}_updateAttrColor(v,C,S,R,$){return C===2?(v|=50331648,v&=-16777216,v|=u.AttributeData.fromColorRGB([S,R,$])):C===5&&(v&=-50331904,v|=33554432|255&S),v}_extractColor(v,C,S){let R=[0,0,-1,0,0,0],$=0,W=0;do{if(R[W+$]=v.params[C+W],v.hasSubParams(C+W)){let U=v.getSubParams(C+W),z=0;do R[1]===5&&($=1),R[W+z+1+$]=U[z];while(++z<U.length&&z+W+1+$<R.length);break}if(R[1]===5&&W+$>=2||R[1]===2&&W+$>=5)break;R[1]&&($=1)}while(++W+C<v.length&&W+$<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:S.fg=this._updateAttrColor(S.fg,R[1],R[3],R[4],R[5]);break;case 48:S.bg=this._updateAttrColor(S.bg,R[1],R[3],R[4],R[5]);break;case 58:S.extended=S.extended.clone(),S.extended.underlineColor=this._updateAttrColor(S.extended.underlineColor,R[1],R[3],R[4],R[5])}return W}_processUnderline(v,C){C.extended=C.extended.clone(),(!~v||v>5)&&(v=1),C.extended.underlineStyle=v,C.fg|=268435456,v===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(v){v.fg=n.DEFAULT_ATTR_DATA.fg,v.bg=n.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=v.length,S,R=this._curAttrData;for(let $=0;$<C;$++)S=v.params[$],S>=30&&S<=37?(R.fg&=-50331904,R.fg|=16777216|S-30):S>=40&&S<=47?(R.bg&=-50331904,R.bg|=16777216|S-40):S>=90&&S<=97?(R.fg&=-50331904,R.fg|=16777224|S-90):S>=100&&S<=107?(R.bg&=-50331904,R.bg|=16777224|S-100):S===0?this._processSGR0(R):S===1?R.fg|=134217728:S===3?R.bg|=67108864:S===4?(R.fg|=268435456,this._processUnderline(v.hasSubParams($)?v.getSubParams($)[0]:1,R)):S===5?R.fg|=536870912:S===7?R.fg|=67108864:S===8?R.fg|=1073741824:S===9?R.fg|=2147483648:S===2?R.bg|=134217728:S===21?this._processUnderline(2,R):S===22?(R.fg&=-134217729,R.bg&=-134217729):S===23?R.bg&=-67108865:S===24?(R.fg&=-268435457,this._processUnderline(0,R)):S===25?R.fg&=-536870913:S===27?R.fg&=-67108865:S===28?R.fg&=-1073741825:S===29?R.fg&=2147483647:S===39?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):S===49?(R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):S===38||S===48||S===58?$+=this._extractColor(v,$,R):S===53?R.bg|=1073741824:S===55?R.bg&=-1073741825:S===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):S===100?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",S);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,S=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${S}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let C=this._activeBuffer.y+1,S=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${S}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let C=v.length===0?1:v.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let S=C%2==1;this._coreService.decPrivateModes.cursorBlink=S}return!0}setScrollRegion(v){let C=v.params[0]||1,S;return(v.length<2||(S=v.params[1])>this._bufferService.rows||S===0)&&(S=this._bufferService.rows),S>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=S-1,this._setCursor(0,0)),!0}windowOptions(v){if(!A(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(v){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(v){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(v){return this._windowTitle=v,this._onTitleChange.fire(v),!0}setIconName(v){return this._iconName=v,!0}setOrReportIndexedColor(v){let C=[],S=v.split(";");for(;S.length>1;){let R=S.shift(),$=S.shift();if(/^\d+$/.exec(R)){let W=parseInt(R);if(F(W))if($==="?")C.push({type:0,index:W});else{let U=(0,x.parseColor)($);U&&C.push({type:1,index:W,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(v){let C=v.indexOf(";");if(C===-1)return!0;let S=v.slice(0,C).trim(),R=v.slice(C+1);return R?this._createHyperlink(S,R):!S.trim()&&this._finishHyperlink()}_createHyperlink(v,C){this._getCurrentLinkId()&&this._finishHyperlink();let S=v.split(":"),R,$=S.findIndex((W=>W.startsWith("id=")));return $!==-1&&(R=S[$].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,C){let S=v.split(";");for(let R=0;R<S.length&&!(C>=this._specialColors.length);++R,++C)if(S[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let $=(0,x.parseColor)(S[R]);$&&this._onColor.fire([{type:1,index:this._specialColors[C],color:$}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let C=[],S=v.split(";");for(let R=0;R<S.length;++R)if(/^\d+$/.exec(S[R])){let $=parseInt(S[R]);F($)&&C.push({type:2,index:$})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset(B[v[0]],b.CHARSETS[v[1]]||b.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new f.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let S=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(S);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,C){let S=this._bufferService.buffer,R=this._optionsService.rawOptions;return($=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${$}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${S.scrollTop+1};${S.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,C){this._dirtyRowTracker.markRangeDirty(v,C)}}i.InputHandler=K;let Y=class{constructor(H){this._bufferService=H,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(H){H<this.start?this.start=H:H>this.end&&(this.end=H)}markRangeDirty(H,v){H>v&&(q=H,H=v,v=q),H<this.start&&(this.start=H),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function F(H){return 0<=H&&H<256}Y=d([_(0,h.IBufferService)],Y)},701:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let _=c.match(/Version\/(\d+)/);return _===null||_.length<2?0:parseInt(_[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class _{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,w=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),w=Math.max(m,w),g=l.timeRemaining(),1.5*w>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends _{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends _{_requestCallback(b){return requestIdleCallback(b)}_cancelCallback(b){cancelIdleCallback(b)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(b){this._queue.clear(),this._queue.enqueue(b)}flush(){this._queue.flush()}}},5882:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(_){let a=_.buffer.lines.get(_.buffer.ybase+_.buffer.y-1),b=a?.get(_.cols-1),l=_.buffer.lines.get(_.buffer.ybase+_.buffer.y);l&&b&&(l.isWrapped=b[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&b[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,b=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=b}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),_=c(6168),a=c(5451),b=c(6107),l=c(732),m=c(3055),w=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=b.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,w.NULL_CELL_CHAR,w.NULL_CELL_WIDTH,w.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,w.WHITESPACE_CELL_CHAR,w.WHITESPACE_CELL_WIDTH,w.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new _.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new b.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=b.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(b.DEFAULT_ATTR_DATA),y=0,T=this._getCorrectBufferLength(u);if(T>this.lines.maxLength&&(this.lines.maxLength=T),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let P=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new b.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new b.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(T<this.lines.maxLength){let x=this.lines.length-T;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=T}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let P=0;P<this.lines.length;P++)y+=+this.lines.get(P).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(b.DEFAULT_ATTR_DATA),h);if(y.length>0){let T=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,T.layout),this._reflowLargerAdjustViewport(f,u,T.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(b.DEFAULT_ATTR_DATA),T=h;for(;T-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new b.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(b.DEFAULT_ATTR_DATA),T=[],P=0;for(let x=this.lines.length-1;x>=0;x--){let N=this.lines.get(x);if(!N||!N.isWrapped&&N.getTrimmedLength()<=f)continue;let B=[N];for(;N.isWrapped&&x>0;)N=this.lines.get(--x),B.unshift(N);if(!h){let S=this.ybase+this.y;if(S>=x&&S<x+B.length)continue}let D=B[B.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)(B,this._cols,f),E=A.length-B.length,q;q=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let K=[];for(let S=0;S<E;S++){let R=this.getBlankLine(b.DEFAULT_ATTR_DATA,!0);K.push(R)}K.length>0&&(T.push({start:x+B.length+P,newLines:K}),P+=K.length),B.push(...K);let Y=A.length-1,F=A[Y];F===0&&(Y--,F=A[Y]);let H=B.length-E-1,v=D;for(;H>=0;){let S=Math.min(v,F);if(B[Y]===void 0)break;if(B[Y].copyCellsFrom(B[H],v-S,F-S,S,!0),F-=S,F===0&&(Y--,F=A[Y]),v-=S,v===0){H--;let R=Math.max(H,0);v=(0,l.getWrappedLineTrimmedLength)(B,R,this._cols)}}for(let S=0;S<B.length;S++)A[S]<f&&B[S].setCell(A[S],y);let C=E-q;for(;C-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(T.length>0){let x=[],N=[];for(let F=0;F<this.lines.length;F++)N.push(this.lines.get(F));let B=this.lines.length,D=B-1,A=0,E=T[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let q=0;for(let F=Math.min(this.lines.maxLength-1,B+P-1);F>=0;F--)if(E&&E.start>D+q){for(let H=E.newLines.length-1;H>=0;H--)this.lines.set(F--,E.newLines[H]);F++,x.push({index:D+1,amount:E.newLines.length}),q+=E.newLines.length,E=T[++A]}else this.lines.set(F,N[D--]);let K=0;for(let F=x.length-1;F>=0;F--)x[F].index+=K,this.lines.onInsertEmitter.fire(x[F]),K+=x[F].amount;let Y=Math.max(0,B+P-this.lines.maxLength);Y>0&&this.lines.onTrimEmitter.fire(Y)}}translateBufferLineToString(f,u,h=0,y){let T=this.lines.get(f);return T?T.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),_=c(3055),a=c(8938),b=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||_.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,b.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,b.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,b.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,b.stringFromCodePoint)(2097151&u)+(0,b.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new _.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new _.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let T=parseInt(u[y],10);T>=n&&delete this._combined[T]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let T=parseInt(h[y],10);T>=n&&delete this._extendedAttrs[T]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let P=u-1;P>=0;P--){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}else for(let P=0;P<u;P++){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}let T=Object.keys(n._combined);for(let P=0;P<T.length;P++){let x=parseInt(T[P],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],T=2097151&y,P=2097152&y?this._combined[g]:T?(0,b.stringFromCodePoint)(T):a.WHITESPACE_CELL_CHAR;if(h+=P,u)for(let x=0;x<P.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(k,i)=>{function c(d,_,a){if(_===d.length-1)return d[_].getTrimmedLength();let b=!d[_].hasContent(a-1)&&d[_].getWidth(a-1)===1,l=d[_+1].getWidth(0)===2;return b&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,_,a,b,l,m){let w=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&b>=n&&b<g){n+=u.length-1;continue}let h=0,y=c(u,h,_),T=1,P=0;for(;T<u.length;){let N=c(u,T,_),B=N-P,D=a-y,A=Math.min(B,D);u[h].copyCellsFrom(u[T],P,y,A,!1),y+=A,y===a&&(h++,y=0),P+=A,P===N&&(T++,P=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let N=u.length-1;N>0&&(N>h||u[N].getTrimmedLength()===0);N--)x++;x>0&&(w.push(n+u.length-x),w.push(x)),n+=u.length-1}return w},i.reflowLargerCreateNewLayout=function(d,_){let a=[],b=0,l=_[b],m=0;for(let w=0;w<d.length;w++)if(l===w){let n=_[++b];d.onDeleteEmitter.fire({index:w-m,amount:n}),w+=n-1,m+=n,l=_[++b]}else a.push(w);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,_){let a=[];for(let b=0;b<_.length;b++)a.push(d.get(_[b]));for(let b=0;b<a.length;b++)d.set(b,a[b]);d.length=_.length},i.reflowSmallerGetNewLineLengths=function(d,_,a){let b=[],l=d.map(((g,f)=>c(d,f,_))).reduce(((g,f)=>g+f)),m=0,w=0,n=0;for(;n<l;){if(l-n<a){b.push(l-n);break}m+=a;let g=c(d,w,_);m>g&&(m-=g,w++);let f=d[w].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;b.push(u),n+=u}return b},i.getWrappedLineTrimmedLength=c},4097:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),_=c(1073),a=c(802);class b extends d.Disposable{constructor(m,w){super(),this._optionsService=m,this._bufferService=w,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,w){this._normal.resize(m,w),this._alt.resize(m,w),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=b},3055:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),_=c(8938),a=c(5451);class b extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let w=new b;return w.setFromCharData(m),w}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[_.CHAR_DATA_ATTR_INDEX],this.bg=0;let w=!1;if(m[_.CHAR_DATA_CHAR_INDEX].length>2)w=!0;else if(m[_.CHAR_DATA_CHAR_INDEX].length===2){let n=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[_.CHAR_DATA_WIDTH_INDEX]<<22:w=!0}else w=!0}else this.content=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[_.CHAR_DATA_WIDTH_INDEX]<<22;w&&(this.combinedData=m[_.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[_.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=b},8938:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),_=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,_.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(k,i)=>{var c,d,_;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
4
+ `,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(_||(i.C1_ESCAPED=_={}))},726:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,_=c.length){let a="";for(let b=d;b<_;++b){let l=c[b];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let _=c.length;if(!_)return 0;let a=0,b=0;if(this._interim){let l=c.charCodeAt(b++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=b;l<_;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=_)return this._interim=m,a;let w=c.charCodeAt(l);56320<=w&&w<=57343?d[a++]=1024*(m-55296)+w-56320+65536:(d[a++]=m,d[a++]=w)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let _=c.length;if(!_)return 0;let a,b,l,m,w=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let T,P=0;for(;(T=63&this.interim[++P])&&P<4;)y<<=6,y|=T;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=x-P;for(;g<N;){if(g>=_)return 0;if(T=c[g++],(192&T)!=128){g--,h=!0;break}this.interim[P++]=T,y<<=6,y|=63&T}h||(x===2?y<128?g--:d[w++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[w++]=y):y<65536||y>1114111||(d[w++]=y)),this.interim.fill(0)}let f=_-4,u=g;for(;u<_;){for(;!(!(u<f)||128&(a=c[u])||128&(b=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[w++]=a,d[w++]=b,d[w++]=l,d[w++]=m,u+=4;if(a=c[u++],a<128)d[w++]=a;else if((224&a)==192){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(n=(31&a)<<6|63&b,n<128){u--;continue}d[w++]=n}else if((240&a)==224){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&b)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[w++]=n}else if((248&a)==240){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,this.interim[2]=l,w;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&b)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[w++]=n}}return w}}},7428:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],b;i.UnicodeV6=class{constructor(){if(this.version="6",!b){b=new Uint8Array(65536),b.fill(1),b[0]=0,b.fill(0,1,32),b.fill(0,127,160),b.fill(2,4352,4448),b[9001]=2,b[9002]=2,b.fill(2,11904,42192),b[12351]=1,b.fill(2,44032,55204),b.fill(2,63744,64256),b.fill(2,65040,65050),b.fill(2,65072,65136),b.fill(2,65280,65377),b.fill(2,65504,65511);for(let l=0;l<_.length;++l)b.fill(0,_[l][0],_[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?b[l]:(function(m,w){let n,g=0,f=w.length-1;if(m<w[0][0]||m>w[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>w[n][1])g=n+1;else{if(!(m<w[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let w=this.wcwidth(l),n=w===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>w&&(w=g)}return d.UnicodeService.createPropertyValue(0,w,n)}}},3562:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new _.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let w;for(this._isSyncWriting=!0;w=this._writeBuffer.shift();){this._action(w);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let w=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-w>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(w,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let b=a.toLowerCase();if(b.indexOf("rgb:")===0){b=b.slice(4);let l=c.exec(b);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(b.indexOf("#")===0&&(b=b.slice(1),d.exec(b)&&[3,6,9,12].includes(b.length))){let l=b.length/3,m=[0,0,0];for(let w=0;w<3;++w){let n=parseInt(b.slice(l*w,l*w+l),16);m[w]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,b=16){let[l,m,w]=a;return`rgb:${_(l,b)}/${_(m,b)}/${_(w,b)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function _(a,b){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(b){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),_=c(7262),a=c(1263),b=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=b,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=b}registerHandler(m,w){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(w),{dispose:()=>{let g=n.indexOf(w);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=b,this._ident=0}hook(m,w){if(this.reset(),this._ident=m,this._active=this._handlers[m]||b,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(w);else this._handlerFb(this._ident,"HOOK",w)}put(m,w,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,w,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,w,n))}unhook(m,w=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=w,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=b,this._ident=0}};let l=new _.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,w,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,w,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let w=!1;if(this._hitLimit)w=!1;else if(m&&(w=this._handler(this._data,this._params),w instanceof Promise))return w.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,w}}},6717:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),_=c(7262),a=c(1346),b=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((P,x)=>x)),f=(P,x)=>g.slice(P,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),T;for(T in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],T,3,0),n.addMany(f(128,144),T,3,0),n.addMany(f(144,152),T,3,0),n.add(156,T,0,0),n.add(27,T,11,1),n.add(157,T,4,8),n.addMany([152,158,159],T,0,7),n.add(155,T,11,3),n.add(144,T,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class w extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new _.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new b.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let T=g.intermediates.charCodeAt(y);if(32>T||T>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=T}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,T=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](this._params),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=P;x<f;++x){switch(y=g[x],T=this._transitions.table[this.currentState<<8|(y<160?y:m)],T>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|y],B=N?N.length-1:-1;for(;B>=0&&(h=N[B](this._params),h!==!0);B--)if(h instanceof Promise)return this._preserveStack(3,N,B,T,x),h;B<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,T,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,T,x),h;y===27&&(T|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,T,x),h;y===27&&(T|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&T}}}i.EscapeSequenceParser=w},1346:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),_=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(b,l){this._handlers[b]===void 0&&(this._handlers[b]=[]);let m=this._handlers[b];return m.push(l),{dispose:()=>{let w=m.indexOf(l);w!==-1&&m.splice(w,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let b=this._active.length-1;b>=0;b--)this._active[b].start();else this._handlerFb(this._id,"START")}_put(b,l,m){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(b,l,m);else this._handlerFb(this._id,"PUT",(0,_.utf32ToString)(b,l,m))}start(){this.reset(),this._state=1}put(b,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let w=b[l++];if(w===59){this._state=2,this._start();break}if(w<48||57<w)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+w-48}this._state===2&&m-l>0&&this._put(b,l,m)}}end(b,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,w=this._active.length-1,n=!1;if(this._stack.paused&&(w=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;w>=0&&(m=this._active[w].end(b),m!==!0);w--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!1,m;w--}for(;w>=0;w--)if(m=this._active[w].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",b);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(b){this._handler=b,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(b,l,m){this._hitLimit||(this._data+=(0,_.utf32ToString)(b,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(b){let l=!1;if(this._hitLimit)l=!1;else if(b&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let b=new d;if(!a.length)return b;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let w=0;w<m.length;++w)b.addSubParam(m[w]);else b.addParam(m)}return b}constructor(a=32,b=32){if(this.maxLength=a,this.maxSubParamsLength=b,b>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(b),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let b=0;b<this.length;++b){a.push(this.params[b]);let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let b=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-b>0?this._subParams.subarray(b,l):null}getSubParamsAll(){let a={};for(let b=0;b<this.length;++b){let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&(a[b]=this._subParams.slice(l,m))}return a}addDigit(a){let b;if(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[b-1];l[b-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let _={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(_),d.dispose=()=>this._wrappedAddonDispose(_),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let _=0;_<this._addons.length;_++)if(this._addons[_]===c){d=_;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),_=c(3055);i.BufferApiView=class{constructor(a,b){this._buffer=a,this.type=b}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let b=this._buffer.lines.get(a);if(b)return new d.BufferLineApiView(b)}getNullCell(){return new _.CellData}}},793:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(_){this._line=_}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(_,a){if(!(_<0||_>=this._line.length))return a?(this._line.loadCell(_,a),a):this._line.loadCell(_,new d.CellData)}translateToString(_,a,b){return this._line.translateToString(_,a,b)}}},5101:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),_=c(7150),a=c(802);class b extends _.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=b},6097:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(_=>d(_.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((_,a)=>d(_,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,T=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(T=(y<3?h(T):y>3?h(g,f,T):h(g,f))||T);return y>3&&T&&Object.defineProperty(g,f,T),T},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),b=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let w=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new b.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let T=f.lines.isFull;y===f.lines.length-1?T?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),T?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let T=y-h+1;f.lines.shiftElements(h+1,T-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=w,i.BufferService=w=d([_(0,l.IOptionsService)],w)},5746:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(k,i,c){var d=this&&this.__decorate||function(u,h,y,T){var P,x=arguments.length,N=x<3?h:T===null?T=Object.getOwnPropertyDescriptor(h,y):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(u,h,y,T);else for(var B=u.length-1;B>=0;B--)(P=u[B])&&(N=(x<3?P(N):x>3?P(h,y,N):P(h,y))||N);return x>3&&N&&Object.defineProperty(h,y,N),N},_=this&&this.__param||function(u,h){return function(y,T){h(y,T,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),b=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function w(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[w(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.x};${u.y}${h}`}},f=class extends b.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let T of Object.keys(m))this.addProtocol(T,m[T]);for(let T of Object.keys(g))this.addEncoding(T,g[T]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let T=h/y,P=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=T+0,Math.abs(u.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([_(0,a.IBufferService),_(1,a.ICoreService),_(2,a.IOptionsService)],f)},4071:function(k,i,c){var d=this&&this.__decorate||function(f,u,h,y){var T,P=arguments.length,x=P<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var N=f.length-1;N>=0;N--)(T=f[N])&&(x=(P<3?T(x):P>3?T(u,h,x):T(u,h))||x);return P>3&&x&&Object.defineProperty(u,h,x),x},_=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),b=c(7150),l=c(6501),m=c(802),w=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends b.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([_(0,l.IBufferService),_(1,l.ILogService),_(2,l.IOptionsService)],g)},6025:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),_=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,w]of l)this.set(m,w)}set(l,m){let w=this._entries.get(l);return this._entries.set(l,m),w}forEach(l){for(let[m,w]of this._entries.entries())l(m,w)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(b,l){this._services.set(b,l)}getService(b){return this._services.get(b)}createInstance(b,...l){let m=(0,_.getServiceDependencies)(b).sort(((g,f)=>g.index-f.index)),w=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${b.name} depends on UNKNOWN service ${g.id._id}.`);w.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${b.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new b(...l,...w)}}},7276:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,T=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(T=(y<3?h(T):y>3?h(g,f,T):h(g,f))||T);return y>3&&T&&Object.defineProperty(g,f,T),T},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==b.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((T=>JSON.stringify(T))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),b=c(6501),l={trace:b.LogLevelEnum.TRACE,debug:b.LogLevelEnum.DEBUG,info:b.LogLevelEnum.INFO,warn:b.LogLevelEnum.WARN,error:b.LogLevelEnum.ERROR,off:b.LogLevelEnum.OFF},m,w=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=b.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=b.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=b.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=b.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=b.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=b.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=w,i.LogService=w=d([_(0,b.IOptionsService)],w)},56:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),_=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:_.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let b=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(w){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in w)if(g in n)try{let f=w[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(w,n){return this.onOptionChange((g=>{g===w&&n(this.rawOptions[w])}))}onMultipleOptionChange(w,n){return this.onOptionChange((g=>{w.indexOf(g)!==-1&&n()}))}_setupOptions(){let w=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:w.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(w,n){switch(w){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[w]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${w}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[w]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=b.includes(n)?n:i.DEFAULT_OPTIONS[w];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${w} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${w} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${w} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${w} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(k,i,c){var d=this&&this.__decorate||function(l,m,w,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,w):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,w,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,w,u):g(m,w))||u);return f>3&&u&&Object.defineProperty(m,w,u),u},_=this&&this.__param||function(l,m){return function(w,n){m(w,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),b=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let w=l,n=this._getEntryIdKey(w),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(w),data:w,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let w=this._dataByLinkId.get(l);if(w&&w.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);w.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(w,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let w=l.lines.indexOf(m);w!==-1&&(l.lines.splice(w,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=b,i.OscLinkService=b=d([_(0,a.IBufferService)],b)},6201:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(_){return _[d]||[]},i.createDecorator=function(_){if(i.serviceRegistry.has(_))return i.serviceRegistry.get(_);let a=function(b,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(w,n,g){n[c]===n?n[d].push({id:w,index:g}):(n[d]=[{id:w,index:g}],n[c]=n)})(a,b,m)};return a._id=_,i.serviceRegistry.set(_,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var _;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(_||(i.LogLevelEnum=_={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),_=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,w=!1){return(16777215&l)<<3|(3&m)<<1|(w?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new _.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,w=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,w),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(w)),m+=h,w=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),_=c(5777),a=c(802);class b extends _.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,w=!0){this.coreService.triggerDataEvent(m,w)}resize(m,w){m===this.cols&&w===this.rows||super.resize(m,w)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=b},3058:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,T=(P,x)=>P===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let P=0,x=h.length;P<x;P++)if(!T(h[P],y[P]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let T=h.length-1;y<T&&(h[y]=h[T]),h.pop()},i.binarySearch=function(h,y,T){return a(h.length,(P=>T(h[P],y)))},i.binarySearch2=a,i.quickSelect=function h(y,T,P){if((y|=0)>=T.length)throw new TypeError("invalid index");let x=T[Math.floor(T.length*Math.random())],N=[],B=[],D=[];for(let A of T){let E=P(A,x);E<0?N.push(A):E>0?B.push(A):D.push(A)}return y<N.length?h(y,N,P):y<N.length+D.length?D[0]:h(y-(N.length+D.length),B,P)},i.groupBy=function(h,y){let T=[],P;for(let x of h.slice(0).sort(y))P&&y(P[0],x)===0?P.push(x):(P=[x],T.push(P));return T},i.groupAdjacentBy=function*(h,y){let T,P;for(let x of h)P!==void 0&&y(P,x)?T.push(x):(T&&(yield T),T=[x]),P=x;T&&(yield T)},i.forEachAdjacent=function(h,y){for(let T=0;T<=h.length;T++)y(T===0?void 0:h[T-1],T===h.length?void 0:h[T])},i.forEachWithNeighbors=function(h,y){for(let T=0;T<h.length;T++)y(T===0?void 0:h[T-1],h[T],T+1===h.length?void 0:h[T+1])},i.sortedDiff=b,i.delta=function(h,y,T){let P=b(h,y,T),x=[],N=[];for(let B of P)x.push(...h.slice(B.start,B.start+B.deleteCount)),N.push(...B.toInsert);return{removed:x,added:N}},i.top=function(h,y,T){if(T===0)return[];let P=h.slice(0,T).sort(y);return l(h,y,P,T,h.length),P},i.topAsync=function(h,y,T,P,x){return T===0?Promise.resolve([]):new Promise(((N,B)=>{(async()=>{let D=h.length,A=h.slice(0,T).sort(y);for(let E=T,q=Math.min(T+P,D);E<D;E=q,q=Math.min(q+P,D)){if(E>T&&await new Promise((K=>setTimeout(K))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,q)}return A})().then(N,B)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let T=0;T<h.length;T++)h[T]&&(h[y]=h[T],y+=1);h.length=y},i.move=function(h,y,T){h.splice(T,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=T=>T){let T=new Set;return h.filter((P=>{let x=y(P);return!T.has(x)&&(T.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return T=>{let P=h(T);return!y.has(P)&&(y.add(P),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,T=(P,x)=>P===x){let P=0;for(let x=0,N=Math.min(h.length,y.length);x<N&&T(h[x],y[x]);x++)P++;return P},i.range=function(h,y){let T=typeof y=="number"?h:0;typeof y=="number"?T=h:(T=0,y=h);let P=[];if(T<=y)for(let x=T;x<y;x++)P.push(x);else for(let x=T;x>y;x--)P.push(x);return P},i.index=function(h,y,T){return h.reduce(((P,x)=>(P[y(x)]=T?T(x):x,P)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,T){let P=h.slice(0,y),x=h.slice(y);return P.concat(T,x)},i.shuffle=function(h,y){let T;if(typeof y=="number"){let P=y;T=()=>{let x=179426549*Math.sin(P++);return x-Math.floor(x)}}else T=Math.random;for(let P=h.length-1;P>0;P-=1){let x=Math.floor(T()*(P+1)),N=h[P];h[P]=h[x],h[x]=N}},i.pushToStart=function(h,y){let T=h.indexOf(y);T>-1&&(h.splice(T,1),h.unshift(y))},i.pushToEnd=function(h,y){let T=h.indexOf(y);T>-1&&(h.splice(T,1),h.push(y))},i.pushMany=function(h,y){for(let T of y)h.push(T)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=w,i.splice=function(h,y,T,P){let x=n(h,y),N=h.splice(x,T);return N===void 0&&(N=[]),w(h,x,P),N},i.compareBy=function(h,y){return(T,P)=>y(h(T),h(P))},i.tieBreakComparators=function(...h){return(y,T)=>{for(let P of h){let x=P(y,T);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,T)=>-h(y,T)};let d=c(9807),_=c(8297);function a(h,y){let T=0,P=h-1;for(;T<=P;){let x=(T+P)/2|0,N=y(x);if(N<0)T=x+1;else{if(!(N>0))return x;P=x-1}}return-(T+1)}function b(h,y,T){let P=[];function x(D,A,E){if(A===0&&E.length===0)return;let q=P[P.length-1];q&&q.start+q.deleteCount===D?(q.deleteCount+=A,q.toInsert.push(...E)):P.push({start:D,deleteCount:A,toInsert:E})}let N=0,B=0;for(;;){if(N===h.length){x(N,0,y.slice(B));break}if(B===y.length){x(N,h.length-N,[]);break}let D=h[N],A=y[B],E=T(D,A);E===0?(N+=1,B+=1):E<0?(x(N,1,[]),N+=1):E>0&&(x(N,0,[A]),B+=1)}return P}function l(h,y,T,P,x){for(let N=T.length;P<x;P++){let B=h[P];if(y(B,T[N-1])<0){T.pop();let D=(0,_.findFirstIdxMonotonousOrArrLen)(T,(A=>y(B,A)<0));T.splice(D,0,B)}}}function m(h,y){let T=h.indexOf(y);if(T>-1)return h.splice(T,1),y}function w(h,y,T){let P=n(h,y),x=h.length,N=T.length;h.length=x+N;for(let B=x-1;B>=P;B--)h[B+N]=h[B];for(let B=0;B<N;B++)h[B+P]=T[B]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let T=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,T}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let T=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,T}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((T=>(y(T),!0)))}toArray(){let y=[];return this.iterate((T=>(y.push(T),!0))),y}filter(y){return new f((T=>this.iterate((P=>!y(P)||T(P)))))}map(y){return new f((T=>this.iterate((P=>T(y(P))))))}some(y){let T=!1;return this.iterate((P=>(T=y(P),!T))),T}findFirst(y){let T;return this.iterate((P=>!y(P)||(T=P,!1))),T}findLast(y){let T;return this.iterate((P=>(y(P)&&(T=P),!0))),T}findLastMaxBy(y){let T,P=!0;return this.iterate((x=>((P||g.isGreaterThan(y(x,T)))&&(P=!1,T=x),!0))),T}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,T){let P=Array.from(y.keys()).sort(((x,N)=>T(y[x],y[N])));return new u(P)}apply(y){return y.map(((T,P)=>y[this._indexMap[P]]))}inverse(){let y=this._indexMap.slice();for(let T=0;T<this._indexMap.length;T++)y[this._indexMap[T]]=T;return new u(y)}}i.Permutation=u},8297:(k,i)=>{function c(l,m,w=l.length-1){for(let n=w;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function _(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let w=c(l,m);if(w!==-1)return l[w]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let w=d(l,m);return w===-1?void 0:l[w]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let w=_(l,m);return w===l.length?void 0:l[w]},i.findFirstIdxMonotonousOrArrLen=_,i.findFirstIdxMonotonous=function(l,m,w=0,n=l.length){let g=_(l,m,w,n);return g===l.length?-1:g},i.findFirstMax=b,i.findLastMax=function(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>=0&&(w=g)}return w},i.findFirstMin=function(l,m){return b(l,((w,n)=>-m(w,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let w=0;for(let n=1;n<l.length;n++)m(l[n],l[w])>0&&(w=n);return w},i.mapFindFirst=function(l,m){for(let w of l){let n=m(w);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let w=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=w+1,w===-1?void 0:this._array[w]}}function b(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>0&&(w=g)}return w}i.MonotonousArray=a},9087:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(_,a){let b=Object.create(null);for(let l of _){let m=a(l),w=b[m];w||(w=b[m]=[]),w.push(l)}return b},i.diffSets=function(_,a){let b=[],l=[];for(let m of _)a.has(m)||b.push(m);for(let m of a)_.has(m)||l.push(m);return{removed:b,added:l}},i.diffMaps=function(_,a){let b=[],l=[];for(let[m,w]of _)a.has(m)||b.push(w);for(let[m,w]of a)_.has(m)||l.push(w);return{removed:b,added:l}},i.intersection=function(_,a){let b=new Set;for(let l of a)_.has(l)&&b.add(l);return b};class d{static{c=Symbol.toStringTag}constructor(a,b){this.toKey=b,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let b=this.toKey(a);return this._map.set(b,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,b){this._map.forEach((l=>a.call(b,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){_(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){_(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=_,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
5
5
  `)[0]:String(f):"Error"};class c{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(u){setTimeout((()=>{throw u.stack?n.isErrorNoTelemetry(u)?new n(u.message+`
6
6
 
7
7
  `+u.stack):new Error(u.message+`
8
8
 
9
- `+u.stack):u}),0)}}addListener(u){return this.listeners.push(u),()=>{this._removeListener(u)}}emit(u){this.listeners.forEach((h=>{h(u)}))}_removeListener(u){this.listeners.splice(this.listeners.indexOf(u),1)}setUnexpectedErrorHandler(u){this.unexpectedErrorHandler=u}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}i.ErrorHandler=c,i.errorHandler=new c;let d="Canceled";function w(f){return f instanceof a||f instanceof Error&&f.name===d&&f.message===d}class a extends Error{constructor(){super(d),this.name=this.message}}i.CancellationError=a;class k extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=k;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=_;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),w=c(8841),a=c(7150),k=c(6317),l=c(9725);var m;(function(A){function E(T){return(R,O=null,F)=>{let U,V=!1;return U=T((J=>{if(!V)return U?U.dispose():V=!0,R.call(O,J)}),null,F),V&&U.dispose(),U}}function H(T,R,O){return N(((F,U=null,V)=>T((J=>F.call(U,R(J))),null,V)),O)}function G(T,R,O){return N(((F,U=null,V)=>T((J=>R(J)&&F.call(U,J)),null,V)),O)}function N(T,R){let O,F=new P({onWillAddFirstListener(){O=T(F.fire,F)},onDidRemoveLastListener(){O?.dispose()}});return R?.add(F),F.event}function z(T,R,O=100,F=!1,U=!1,V,J){let I,Q,Y,ee,we=0,be=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Xe=>{we++,Q=R(Q,Xe),F&&!Y&&(be.fire(Q),Q=void 0),ee=()=>{let Ie=Q;Q=void 0,Y=void 0,(!F||we>1)&&be.fire(Ie),we=0},typeof O=="number"?(clearTimeout(Y),Y=setTimeout(ee,O)):Y===void 0&&(Y=0,queueMicrotask(ee))}))},onWillRemoveListener(){U&&we>0&&ee?.()},onDidRemoveLastListener(){ee=void 0,I.dispose()}});return J?.add(be),be.event}A.None=()=>a.Disposable.None,A.defer=function(T,R){return z(T,(()=>{}),0,void 0,!0,void 0,R)},A.once=E,A.map=H,A.forEach=function(T,R,O){return N(((F,U=null,V)=>T((J=>{R(J),F.call(U,J)}),null,V)),O)},A.filter=G,A.signal=function(T){return T},A.any=function(...T){return(R,O=null,F)=>{return U=(0,a.combinedDisposable)(...T.map((J=>J((I=>R.call(O,I)))))),(V=F)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},A.reduce=function(T,R,O,F){let U=O;return H(T,(V=>(U=R(U,V),U)),F)},A.debounce=z,A.accumulate=function(T,R=0,O){return A.debounce(T,((F,U)=>F?(F.push(U),F):[U]),R,void 0,!0,void 0,O)},A.latch=function(T,R=(F,U)=>F===U,O){let F,U=!0;return G(T,(V=>{let J=U||!R(V,F);return U=!1,F=V,J}),O)},A.split=function(T,R,O){return[A.filter(T,R,O),A.filter(T,(F=>!R(F)),O)]},A.buffer=function(T,R=!1,O=[],F){let U=O.slice(),V=T((Q=>{U?U.push(Q):I.fire(Q)}));F&&F.add(V);let J=()=>{U?.forEach((Q=>I.fire(Q))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((Q=>I.fire(Q))),F&&F.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(J):J())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return F&&F.add(I),I.event},A.chain=function(T,R){return(O,F,U)=>{let V=R(new b);return T((function(J){let I=V.evaluate(J);I!==q&&O.call(F,I)}),void 0,U)}};let q=Symbol("HaltChainable");class b{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((O=>(R(O),O))),this}filter(R){return this.steps.push((O=>R(O)?O:q)),this}reduce(R,O){let F=O;return this.steps.push((U=>(F=R(F,U),F))),this}latch(R=(O,F)=>O===F){let O,F=!0;return this.steps.push((U=>{let V=F||!R(U,O);return F=!1,O=U,V?U:q})),this}evaluate(R){for(let O of this.steps)if((R=O(R))===q)break;return R}}A.fromNodeEventEmitter=function(T,R,O=F=>F){let F=(...V)=>U.fire(O(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,F),onDidRemoveLastListener:()=>T.removeListener(R,F)});return U.event},A.fromDOMEventEmitter=function(T,R,O=F=>F){let F=(...V)=>U.fire(O(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,F),onDidRemoveLastListener:()=>T.removeEventListener(R,F)});return U.event},A.toPromise=function(T){return new Promise((R=>E(T)(R)))},A.fromPromise=function(T){let R=new P;return T.then((O=>{R.fire(O)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},A.forward=function(T,R){return T((O=>R.fire(O)))},A.runAndSubscribe=function(T,R,O){return R(O),T((F=>R(F)))};class C{constructor(R,O){this._observable=R,this._counter=0,this._hasChanged=!1;let F={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(F),O&&O.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,O){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}A.fromObservable=function(T,R){return new C(T,R).emitter.event},A.fromObservableLight=function(T){return(R,O,F)=>{let U=0,V=!1,J={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(O)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(J),T.reportChanges();let I={dispose(){T.removeObserver(J)}};return F instanceof a.DisposableStore?F.add(I):Array.isArray(F)&&F.push(I),I}}})(m||(i.Event=m={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(E){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${E}_${_._idPool++}`,_.all.add(this)}start(E){this._stopWatch=new l.StopWatch,this.listenerCount=E}stop(){if(this._stopWatch){let E=this._stopWatch.elapsed();this.durations.push(E),this.elapsedOverall+=E,this.invocationCount+=1,this._stopWatch=void 0}}}i.EventProfiling=_;let n=-1;class g{static{this._idPool=1}constructor(E,H,G=(g._idPool++).toString(16).padStart(3,"0")){this._errorHandler=E,this.threshold=H,this.name=G,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(E,H){let G=this.threshold;if(G<=0||H<G)return;this._stacks||(this._stacks=new Map);let N=this._stacks.get(E.value)||0;if(this._stacks.set(E.value,N+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*G;let[z,q]=this.getMostFrequentStack(),b=`[${this.name}] potential listener LEAK detected, having ${H} listeners already. MOST frequent listener (${q}):`;console.warn(b),console.warn(z);let C=new u(b,z);this._errorHandler(C)}return()=>{let z=this._stacks.get(E.value)||0;this._stacks.set(E.value,z-1)}}getMostFrequentStack(){if(!this._stacks)return;let E,H=0;for(let[G,N]of this._stacks)(!E||H<N)&&(E=[G,N],H=N);return E}}class f{static create(){let E=new Error;return new f(E.stack??"")}constructor(E){this.value=E}print(){console.warn(this.value.split(`
9
+ `+u.stack):u}),0)}}addListener(u){return this.listeners.push(u),()=>{this._removeListener(u)}}emit(u){this.listeners.forEach((h=>{h(u)}))}_removeListener(u){this.listeners.splice(this.listeners.indexOf(u),1)}setUnexpectedErrorHandler(u){this.unexpectedErrorHandler=u}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}i.ErrorHandler=c,i.errorHandler=new c;let d="Canceled";function _(f){return f instanceof a||f instanceof Error&&f.name===d&&f.message===d}class a extends Error{constructor(){super(d),this.name=this.message}}i.CancellationError=a;class b extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=b;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class w extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=w;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),_=c(8841),a=c(7150),b=c(6317),l=c(9725);var m;(function(A){function E(S){return(R,$=null,W)=>{let U,z=!1;return U=S((te=>{if(!z)return U?U.dispose():z=!0,R.call($,te)}),null,W),z&&U.dispose(),U}}function q(S,R,$){return Y(((W,U=null,z)=>S((te=>W.call(U,R(te))),null,z)),$)}function K(S,R,$){return Y(((W,U=null,z)=>S((te=>R(te)&&W.call(U,te)),null,z)),$)}function Y(S,R){let $,W=new P({onWillAddFirstListener(){$=S(W.fire,W)},onDidRemoveLastListener(){$?.dispose()}});return R?.add(W),W.event}function F(S,R,$=100,W=!1,U=!1,z,te){let I,Q,V,J,ge=0,_e=new P({leakWarningThreshold:z,onWillAddFirstListener(){I=S((Ye=>{ge++,Q=R(Q,Ye),W&&!V&&(_e.fire(Q),Q=void 0),J=()=>{let xe=Q;Q=void 0,V=void 0,(!W||ge>1)&&_e.fire(xe),ge=0},typeof $=="number"?(clearTimeout(V),V=setTimeout(J,$)):V===void 0&&(V=0,queueMicrotask(J))}))},onWillRemoveListener(){U&&ge>0&&J?.()},onDidRemoveLastListener(){J=void 0,I.dispose()}});return te?.add(_e),_e.event}A.None=()=>a.Disposable.None,A.defer=function(S,R){return F(S,(()=>{}),0,void 0,!0,void 0,R)},A.once=E,A.map=q,A.forEach=function(S,R,$){return Y(((W,U=null,z)=>S((te=>{R(te),W.call(U,te)}),null,z)),$)},A.filter=K,A.signal=function(S){return S},A.any=function(...S){return(R,$=null,W)=>{return U=(0,a.combinedDisposable)(...S.map((te=>te((I=>R.call($,I)))))),(z=W)instanceof Array?z.push(U):z&&z.add(U),U;var U,z}},A.reduce=function(S,R,$,W){let U=$;return q(S,(z=>(U=R(U,z),U)),W)},A.debounce=F,A.accumulate=function(S,R=0,$){return A.debounce(S,((W,U)=>W?(W.push(U),W):[U]),R,void 0,!0,void 0,$)},A.latch=function(S,R=(W,U)=>W===U,$){let W,U=!0;return K(S,(z=>{let te=U||!R(z,W);return U=!1,W=z,te}),$)},A.split=function(S,R,$){return[A.filter(S,R,$),A.filter(S,(W=>!R(W)),$)]},A.buffer=function(S,R=!1,$=[],W){let U=$.slice(),z=S((Q=>{U?U.push(Q):I.fire(Q)}));W&&W.add(z);let te=()=>{U?.forEach((Q=>I.fire(Q))),U=null},I=new P({onWillAddFirstListener(){z||(z=S((Q=>I.fire(Q))),W&&W.add(z))},onDidAddFirstListener(){U&&(R?setTimeout(te):te())},onDidRemoveLastListener(){z&&z.dispose(),z=null}});return W&&W.add(I),I.event},A.chain=function(S,R){return($,W,U)=>{let z=R(new v);return S((function(te){let I=z.evaluate(te);I!==H&&$.call(W,I)}),void 0,U)}};let H=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push(($=>(R($),$))),this}filter(R){return this.steps.push(($=>R($)?$:H)),this}reduce(R,$){let W=$;return this.steps.push((U=>(W=R(W,U),W))),this}latch(R=($,W)=>$===W){let $,W=!0;return this.steps.push((U=>{let z=W||!R(U,$);return W=!1,$=U,z?U:H})),this}evaluate(R){for(let $ of this.steps)if((R=$(R))===H)break;return R}}A.fromNodeEventEmitter=function(S,R,$=W=>W){let W=(...z)=>U.fire($(...z)),U=new P({onWillAddFirstListener:()=>S.on(R,W),onDidRemoveLastListener:()=>S.removeListener(R,W)});return U.event},A.fromDOMEventEmitter=function(S,R,$=W=>W){let W=(...z)=>U.fire($(...z)),U=new P({onWillAddFirstListener:()=>S.addEventListener(R,W),onDidRemoveLastListener:()=>S.removeEventListener(R,W)});return U.event},A.toPromise=function(S){return new Promise((R=>E(S)(R)))},A.fromPromise=function(S){let R=new P;return S.then(($=>{R.fire($)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},A.forward=function(S,R){return S(($=>R.fire($)))},A.runAndSubscribe=function(S,R,$){return R($),S((W=>R(W)))};class C{constructor(R,$){this._observable=R,this._counter=0,this._hasChanged=!1;let W={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(W),$&&$.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,$){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}A.fromObservable=function(S,R){return new C(S,R).emitter.event},A.fromObservableLight=function(S){return(R,$,W)=>{let U=0,z=!1,te={beginUpdate(){U++},endUpdate(){U--,U===0&&(S.reportChanges(),z&&(z=!1,R.call($)))},handlePossibleChange(){},handleChange(){z=!0}};S.addObserver(te),S.reportChanges();let I={dispose(){S.removeObserver(te)}};return W instanceof a.DisposableStore?W.add(I):Array.isArray(W)&&W.push(I),I}}})(m||(i.Event=m={}));class w{static{this.all=new Set}static{this._idPool=0}constructor(E){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${E}_${w._idPool++}`,w.all.add(this)}start(E){this._stopWatch=new l.StopWatch,this.listenerCount=E}stop(){if(this._stopWatch){let E=this._stopWatch.elapsed();this.durations.push(E),this.elapsedOverall+=E,this.invocationCount+=1,this._stopWatch=void 0}}}i.EventProfiling=w;let n=-1;class g{static{this._idPool=1}constructor(E,q,K=(g._idPool++).toString(16).padStart(3,"0")){this._errorHandler=E,this.threshold=q,this.name=K,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(E,q){let K=this.threshold;if(K<=0||q<K)return;this._stacks||(this._stacks=new Map);let Y=this._stacks.get(E.value)||0;if(this._stacks.set(E.value,Y+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*K;let[F,H]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${q} listeners already. MOST frequent listener (${H}):`;console.warn(v),console.warn(F);let C=new u(v,F);this._errorHandler(C)}return()=>{let F=this._stacks.get(E.value)||0;this._stacks.set(E.value,F-1)}}getMostFrequentStack(){if(!this._stacks)return;let E,q=0;for(let[K,Y]of this._stacks)(!E||q<Y)&&(E=[K,Y],q=Y);return E}}class f{static create(){let E=new Error;return new f(E.stack??"")}constructor(E){this.value=E}print(){console.warn(this.value.split(`
10
10
  `).slice(2).join(`
11
- `))}}class u extends Error{constructor(E,H){super(E),this.name="ListenerLeakError",this.stack=H}}i.ListenerLeakError=u;class h extends Error{constructor(E,H){super(E),this.name="ListenerRefusalError",this.stack=H}}i.ListenerRefusalError=h;let y=0;class S{constructor(E){this.value=E,this.id=y++}}class P{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,H,G)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let b=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(b);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new h(`${b}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||d.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;H&&(E=E.bind(H));let N=new S(E),z;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(N.stack=f.create(),z=this._leakageMon.check(N.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,N]):this._listeners.push(N):(this._options?.onWillAddFirstListener?.(this),this._listeners=N,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,a.toDisposable)((()=>{z?.(),this._removeListener(N)}));return G instanceof a.DisposableStore?G.add(q):Array.isArray(G)&&G.push(q),q},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let H=this._listeners,G=H.indexOf(E);if(G===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,H[G]=void 0;let N=this._deliveryQueue.current===this;if(2*this._size<=H.length){let z=0;for(let q=0;q<H.length;q++)H[q]?H[z++]=H[q]:N&&(this._deliveryQueue.end--,z<this._deliveryQueue.i&&this._deliveryQueue.i--);H.length=z}}_deliver(E,H){if(!E)return;let G=this._options?.onListenerError||d.onUnexpectedError;if(G)try{E.value(H)}catch(N){G(N)}else E.value(H)}_deliverQueue(E){let H=E.current._listeners;for(;E.i<E.end;)this._deliver(H[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let H=this._deliveryQueue;H.enqueue(this,E,this._listeners.length),this._deliverQueue(H)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=P,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,H,G){this.i=0,this.end=G,this.current=E,this.value=H}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends P{async fireAsync(A,E,H){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new k.LinkedList),((G,N)=>{if(G instanceof S)N(G);else for(let z=0;z<G.length;z++){let q=G[z];q&&N(q)}})(this._listeners,(G=>this._asyncDeliveryQueue.push([G.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[G,N]=this._asyncDeliveryQueue.shift(),z=[],q={...N,token:E,waitUntil:b=>{if(Object.isFrozen(z))throw new Error("waitUntil can NOT be called asynchronous");H&&(b=H(b,G)),z.push(b)}};try{G(q)}catch(b){(0,d.onUnexpectedError)(b);continue}Object.freeze(z),await Promise.allSettled(z).then((b=>{for(let C of b)C.status==="rejected"&&(0,d.onUnexpectedError)(C.reason)}))}}};class W extends P{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new k.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=W,i.DebounceEmitter=class extends W{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends P{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class ${constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let H={event:E,listener:null};return this.events.push(H),this.hasListeners&&this.hook(H),(0,a.toDisposable)((0,w.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(H);let G=this.events.indexOf(H);this.events.splice(G,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((H=>this.emitter.fire(H)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=$,i.DynamicListEventMultiplexer=class{constructor(A,E,H,G){this._store=new a.DisposableStore;let N=this._store.add(new $),z=this._store.add(new a.DisposableMap);function q(b){z.set(b,N.add(G(b)))}for(let b of A)q(b);this._store.add(E((b=>{q(b)}))),this._store.add(H((b=>{z.deleteAndDispose(b)}))),this.event=N.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,H){return(G,N,z)=>A((q=>{let b=this.data[this.data.length-1];if(!E)return void(b?b.buffers.push((()=>G.call(N,q))):G.call(N,q));let C=b;C?(C.items??=[],C.items.push(q),C.buffers.length===0&&b.buffers.push((()=>{C.reducedResult??=H?C.items.reduce(E,H):C.items.reduce(E),G.call(N,C.reducedResult)}))):G.call(N,E(H,q))}),void 0,z)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let H=A();return this.data.pop(),E.buffers.forEach((G=>G())),H}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let w=this,a,k=!1;return function(){if(k)return a;if(k=!0,d)try{a=c.apply(w,arguments)}finally{d()}else a=c.apply(w,arguments);return a}}},4218:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function w(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=w;let a=Object.freeze([]);function*k(l){yield l}d.empty=function(){return a},d.single=k,d.wrap=function(l){return w(l)?l:k(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let _=0;for(let n of l)if(m(n,_++))return!0;return!1},d.find=function(l,m){for(let _ of l)if(m(_))return _},d.filter=function*(l,m){for(let _ of l)m(_)&&(yield _)},d.map=function*(l,m){let _=0;for(let n of l)yield m(n,_++)},d.flatMap=function*(l,m){let _=0;for(let n of l)yield*m(n,_++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,_){let n=_;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,_=l.length){for(m<0&&(m+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);m<_;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let _=[];if(m===0)return[_,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[_,d.empty()];_.push(f.value)}return[_,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let _ of l)m.push(_);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function($){m=$},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function($){return m?.markAsSingleton($),$},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function($){for(let D of $)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...$){let D=y((()=>h($)));return(function(A,E){if(m)for(let H of A)m.setParent(H,E)})($,D),D},i.toDisposable=y,i.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let d=c(3058),w=c(9087),a=c(2608),k=c(8841),l=c(4218),m=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let H=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,H),H}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let q=new Map,b=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,q).isSingleton));if(b.length===0)return;let C=new Set(b.map((T=>T.value)));if(E=b.filter((T=>!(T.parent&&C.has(T.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function H(q){let b=q.source.split(`
12
- `).map((C=>C.trim().replace("at ",""))).filter((C=>C!==""));return(function(C,T){for(;C.length>0&&T.some((R=>typeof R=="string"?R===C[0]:C[0].match(R)));)C.shift()})(b,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),b.reverse()}let G=new a.SetMap;for(let q of E){let b=H(q);for(let C=0;C<=b.length;C++)G.add(b.slice(0,C).join(`
13
- `),q)}E.sort((0,d.compareBy)((q=>q.idx),d.numberComparator));let N="",z=0;for(let q of E.slice(0,D)){z++;let b=H(q),C=[];for(let T=0;T<b.length;T++){let R=b[T];R=`(shared with ${G.get(b.slice(0,T+1).join(`
14
- `)).size}/${E.length} leaks) at ${R}`;let O=G.get(b.slice(0,T).join(`
15
- `)),F=(0,w.groupBy)([...O].map((U=>H(U)[T])),(U=>U));delete F[b[T]];for(let[U,V]of Object.entries(F))C.unshift(` - stacktraces of ${V.length} other leaks continue with ${U}`);C.unshift(R)}N+=`
11
+ `))}}class u extends Error{constructor(E,q){super(E),this.name="ListenerLeakError",this.stack=q}}i.ListenerLeakError=u;class h extends Error{constructor(E,q){super(E),this.name="ListenerRefusalError",this.stack=q}}i.ListenerRefusalError=h;let y=0;class T{constructor(E){this.value=E,this.id=y++}}class P{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new w(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,q,K)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],S=new h(`${v}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||d.onUnexpectedError)(S),a.Disposable.None}if(this._disposed)return a.Disposable.None;q&&(E=E.bind(q));let Y=new T(E),F;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(Y.stack=f.create(),F=this._leakageMon.check(Y.stack,this._size+1)),this._listeners?this._listeners instanceof T?(this._deliveryQueue??=new x,this._listeners=[this._listeners,Y]):this._listeners.push(Y):(this._options?.onWillAddFirstListener?.(this),this._listeners=Y,this._options?.onDidAddFirstListener?.(this)),this._size++;let H=(0,a.toDisposable)((()=>{F?.(),this._removeListener(Y)}));return K instanceof a.DisposableStore?K.add(H):Array.isArray(K)&&K.push(H),H},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let q=this._listeners,K=q.indexOf(E);if(K===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,q[K]=void 0;let Y=this._deliveryQueue.current===this;if(2*this._size<=q.length){let F=0;for(let H=0;H<q.length;H++)q[H]?q[F++]=q[H]:Y&&(this._deliveryQueue.end--,F<this._deliveryQueue.i&&this._deliveryQueue.i--);q.length=F}}_deliver(E,q){if(!E)return;let K=this._options?.onListenerError||d.onUnexpectedError;if(K)try{E.value(q)}catch(Y){K(Y)}else E.value(q)}_deliverQueue(E){let q=E.current._listeners;for(;E.i<E.end;)this._deliver(q[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof T)this._deliver(this._listeners,E);else{let q=this._deliveryQueue;q.enqueue(this,E,this._listeners.length),this._deliverQueue(q)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=P,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,q,K){this.i=0,this.end=K,this.current=E,this.value=q}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends P{async fireAsync(A,E,q){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new b.LinkedList),((K,Y)=>{if(K instanceof T)Y(K);else for(let F=0;F<K.length;F++){let H=K[F];H&&Y(H)}})(this._listeners,(K=>this._asyncDeliveryQueue.push([K.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[K,Y]=this._asyncDeliveryQueue.shift(),F=[],H={...Y,token:E,waitUntil:v=>{if(Object.isFrozen(F))throw new Error("waitUntil can NOT be called asynchronous");q&&(v=q(v,K)),F.push(v)}};try{K(H)}catch(v){(0,d.onUnexpectedError)(v);continue}Object.freeze(F),await Promise.allSettled(F).then((v=>{for(let C of v)C.status==="rejected"&&(0,d.onUnexpectedError)(C.reason)}))}}};class N extends P{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new b.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=N,i.DebounceEmitter=class extends N{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends P{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class B{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let q={event:E,listener:null};return this.events.push(q),this.hasListeners&&this.hook(q),(0,a.toDisposable)((0,_.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(q);let K=this.events.indexOf(q);this.events.splice(K,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((q=>this.emitter.fire(q)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=B,i.DynamicListEventMultiplexer=class{constructor(A,E,q,K){this._store=new a.DisposableStore;let Y=this._store.add(new B),F=this._store.add(new a.DisposableMap);function H(v){F.set(v,Y.add(K(v)))}for(let v of A)H(v);this._store.add(E((v=>{H(v)}))),this._store.add(q((v=>{F.deleteAndDispose(v)}))),this.event=Y.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,q){return(K,Y,F)=>A((H=>{let v=this.data[this.data.length-1];if(!E)return void(v?v.buffers.push((()=>K.call(Y,H))):K.call(Y,H));let C=v;C?(C.items??=[],C.items.push(H),C.buffers.length===0&&v.buffers.push((()=>{C.reducedResult??=q?C.items.reduce(E,q):C.items.reduce(E),K.call(Y,C.reducedResult)}))):K.call(Y,E(q,H))}),void 0,F)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let q=A();return this.data.pop(),E.buffers.forEach((K=>K())),q}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let _=this,a,b=!1;return function(){if(b)return a;if(b=!0,d)try{a=c.apply(_,arguments)}finally{d()}else a=c.apply(_,arguments);return a}}},4218:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function _(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=_;let a=Object.freeze([]);function*b(l){yield l}d.empty=function(){return a},d.single=b,d.wrap=function(l){return _(l)?l:b(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let w=0;for(let n of l)if(m(n,w++))return!0;return!1},d.find=function(l,m){for(let w of l)if(m(w))return w},d.filter=function*(l,m){for(let w of l)m(w)&&(yield w)},d.map=function*(l,m){let w=0;for(let n of l)yield m(n,w++)},d.flatMap=function*(l,m){let w=0;for(let n of l)yield*m(n,w++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,w){let n=w;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,w=l.length){for(m<0&&(m+=l.length),w<0?w+=l.length:w>l.length&&(w=l.length);m<w;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let w=[];if(m===0)return[w,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[w,d.empty()];w.push(f.value)}return[w,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let w of l)m.push(w);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function(B){m=B},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function(B){return m?.markAsSingleton(B),B},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function(B){for(let D of B)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...B){let D=y((()=>h(B)));return(function(A,E){if(m)for(let q of A)m.setParent(q,E)})(B,D),D},i.toDisposable=y,i.disposeOnReturn=function(B){let D=new T;try{B(D)}finally{D.dispose()}};let d=c(3058),_=c(9087),a=c(2608),b=c(8841),l=c(4218),m=null;class w{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:w.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let q=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,q),q}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let H=new Map,v=[...this.livingDisposables.values()].filter((S=>S.source!==null&&!this.getRootParent(S,H).isSingleton));if(v.length===0)return;let C=new Set(v.map((S=>S.value)));if(E=v.filter((S=>!(S.parent&&C.has(S.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function q(H){let v=H.source.split(`
12
+ `).map((C=>C.trim().replace("at ",""))).filter((C=>C!==""));return(function(C,S){for(;C.length>0&&S.some((R=>typeof R=="string"?R===C[0]:C[0].match(R)));)C.shift()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let K=new a.SetMap;for(let H of E){let v=q(H);for(let C=0;C<=v.length;C++)K.add(v.slice(0,C).join(`
13
+ `),H)}E.sort((0,d.compareBy)((H=>H.idx),d.numberComparator));let Y="",F=0;for(let H of E.slice(0,D)){F++;let v=q(H),C=[];for(let S=0;S<v.length;S++){let R=v[S];R=`(shared with ${K.get(v.slice(0,S+1).join(`
14
+ `)).size}/${E.length} leaks) at ${R}`;let $=K.get(v.slice(0,S).join(`
15
+ `)),W=(0,_.groupBy)([...$].map((U=>q(U)[S])),(U=>U));delete W[v[S]];for(let[U,z]of Object.entries(W))C.unshift(` - stacktraces of ${z.length} other leaks continue with ${U}`);C.unshift(R)}Y+=`
16
16
 
17
17
 
18
- ==================== Leaking disposable ${z}/${E.length}: ${q.value.constructor.name} ====================
18
+ ==================== Leaking disposable ${F}/${E.length}: ${H.value.constructor.name} ====================
19
19
  ${C.join(`
20
20
  `)}
21
21
  ============================================================
22
22
 
23
- `}return E.length>D&&(N+=`
23
+ `}return E.length>D&&(Y+=`
24
24
 
25
25
 
26
26
  ... and ${E.length-D} more leaking disposables
27
27
 
28
- `),{leaks:E,details:N}}}function n($){return m?.trackDisposable($),$}function g($){m?.markAsDisposed($)}function f($,D){m?.setParent($,D)}function u($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function h($){if(l.Iterable.is($)){let D=[];for(let A of $)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray($)?[]:$}if($)return $.dispose(),$}function y($){let D=n({dispose:(0,k.createSingleCallFunction)((()=>{g(D),$()}))});return D}i.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=P;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor($){this._disposable=new x,this._isDisposed=!1,this._disposable.value=$}get value(){return this._disposable.value}set value($){this._isDisposed||$===this._disposable.value||(this._disposable.value=$)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let A=this.references.get($);A||(A={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,A));let{object:E}=A,H=(0,k.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject($,A.object),this.references.delete($))}));return A.counter++,{object:E,dispose:H}}},i.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let A=this.referenceCollection.acquire($,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class W{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=W},6317:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let k=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=k}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,k){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(k){let _=this._last;this._last=l,l.prev=_,_.next=l}else{let _=this._first;this._first=l,l.next=_,_.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let k=a.prev;k.next=a.next,a.next.prev=k}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,w,a){let k=d.get(w);return k===void 0&&(k=a,d.set(w,k)),k},i.mapToString=function(d){let w=[];return d.forEach(((a,k)=>{w.push(`${k} => ${a}`)})),`Map(${d.size}) {${w.join(", ")}}`},i.setToString=function(d){let w=[];return d.forEach((a=>{w.push(a)})),`Set(${d.size}) {${w.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,w){if(d===w)return!0;if(d.size!==w.size)return!1;for(let[a,k]of d)if(!w.has(a)||w.get(a)!==k)return!1;for(let[a]of w)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let w=this.map.get(d)||0;return w!==0&&(w--,w===0?this.map.delete(d):this.map.set(d,w),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[w,a]of d)this.set(w,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,w){this._m1.set(d,w),this._m2.set(w,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let w=this._m1.get(d);return w!==void 0&&(this._m1.delete(d),this._m2.delete(w),!0)}forEach(d,w){this._m1.forEach(((a,k)=>{d.call(w,a,k,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,w){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(w)}delete(d,w){let a=this.map.get(d);a&&(a.delete(w),a.size===0&&this.map.delete(d))}forEach(d,w){let a=this.map.get(d);a&&a.forEach(w)}get(d){return this.map.get(d)||new Set}}},9725:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(v){var i=t[v];if(i!==void 0)return i.exports;var c=t[v]={exports:{}};return e[v].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var v=s;Object.defineProperty(v,"__esModule",{value:!0}),v.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),w=r(5856),a=r(3027),k=r(7150),l=["cols","rows"];class m extends k.Disposable{constructor(n){super(),this._core=this._register(new w.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
29
- `,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}v.Terminal=m})();var o=_o;for(var p in s)o[p]=s[p];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Ee();function en(e){let t=[...e];for(;t[0]==="--";)t.shift();if(t.length===0)return{mode:"interactive"};if(t.length>=3&&t[0]==="repo"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Repo path cannot be empty.
28
+ `),{leaks:E,details:Y}}}function n(B){return m?.trackDisposable(B),B}function g(B){m?.markAsDisposed(B)}function f(B,D){m?.setParent(B,D)}function u(B){return typeof B=="object"&&B!==null&&typeof B.dispose=="function"&&B.dispose.length===0}function h(B){if(l.Iterable.is(B)){let D=[];for(let A of B)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray(B)?[]:B}if(B)return B.dispose(),B}function y(B){let D=n({dispose:(0,b.createSingleCallFunction)((()=>{g(D),B()}))});return D}i.DisposableTracker=w;class T{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?T.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=T;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new T,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=P;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor(B){this._disposable=new x,this._isDisposed=!1,this._disposable.value=B}get value(){return this._disposable.value}set value(B){this._isDisposed||B===this._disposable.value||(this._disposable.value=B)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor(B){this._disposable=B,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set(B){let D=B;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire(B,...D){let A=this.references.get(B);A||(A={counter:0,object:this.createReferencedObject(B,...D)},this.references.set(B,A));let{object:E}=A,q=(0,b.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject(B,A.object),this.references.delete(B))}));return A.counter++,{object:E,dispose:q}}},i.AsyncReferenceCollection=class{constructor(B){this.referenceCollection=B}async acquire(B,...D){let A=this.referenceCollection.acquire(B,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor(B){this.object=B}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=N},6317:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let b=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=b}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,b){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(b){let w=this._last;this._last=l,l.prev=w,w.next=l}else{let w=this._first;this._first=l,l.next=w,w.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let b=a.prev;b.next=a.next,a.next.prev=b}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,_,a){let b=d.get(_);return b===void 0&&(b=a,d.set(_,b)),b},i.mapToString=function(d){let _=[];return d.forEach(((a,b)=>{_.push(`${b} => ${a}`)})),`Map(${d.size}) {${_.join(", ")}}`},i.setToString=function(d){let _=[];return d.forEach((a=>{_.push(a)})),`Set(${d.size}) {${_.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,_){if(d===_)return!0;if(d.size!==_.size)return!1;for(let[a,b]of d)if(!_.has(a)||_.get(a)!==b)return!1;for(let[a]of _)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let _=this.map.get(d)||0;return _!==0&&(_--,_===0?this.map.delete(d):this.map.set(d,_),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[_,a]of d)this.set(_,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,_){this._m1.set(d,_),this._m2.set(_,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let _=this._m1.get(d);return _!==void 0&&(this._m1.delete(d),this._m2.delete(_),!0)}forEach(d,_){this._m1.forEach(((a,b)=>{d.call(_,a,b,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,_){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(_)}delete(d,_){let a=this.map.get(d);a&&(a.delete(_),a.size===0&&this.map.delete(d))}forEach(d,_){let a=this.map.get(d);a&&a.forEach(_)}get(d){return this.map.get(d)||new Set}}},9725:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(k){var i=t[k];if(i!==void 0)return i.exports;var c=t[k]={exports:{}};return e[k].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var k=s;Object.defineProperty(k,"__esModule",{value:!0}),k.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),_=r(5856),a=r(3027),b=r(7150),l=["cols","rows"];class m extends b.Disposable{constructor(n){super(),this._core=this._register(new _.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
29
+ `,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}k.Terminal=m})();var o=Po;for(var p in s)o[p]=s[p];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Ae();function sn(e){let t=[...e];for(;t[0]==="--";)t.shift();if(t.length===0)return{mode:"interactive"};if(t.length>=3&&t[0]==="repo"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Repo path cannot be empty.
30
30
 
31
- `+_e());return{mode:"command",command:{kind:"addRepo",path:r}}}if(t.length>=3&&t[0]==="workspace"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Workspace path cannot be empty.
31
+ `+be());return{mode:"command",command:{kind:"addRepo",path:r}}}if(t.length>=3&&t[0]==="workspace"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Workspace path cannot be empty.
32
32
 
33
- `+_e());return{mode:"command",command:{kind:"addWorkspace",path:r}}}if(t.length===2&&t[0]==="repo"&&t[1]==="list")return{mode:"command",command:{kind:"listRepos"}};if(t.length===3&&t[0]==="repo"&&t[1]==="remove")return{mode:"command",command:{kind:"removeRepo",repoId:t[2].trim()}};if(t.length>=2&&t.length<=3&&t[0]==="workspace"&&t[1]==="list"){let r=t[2]==="--archived";if(t.length===3&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
33
+ `+be());return{mode:"command",command:{kind:"addWorkspace",path:r}}}if(t.length===2&&t[0]==="repo"&&t[1]==="list")return{mode:"command",command:{kind:"listRepos"}};if(t.length===3&&t[0]==="repo"&&t[1]==="remove")return{mode:"command",command:{kind:"removeRepo",repoId:t[2].trim()}};if(t.length>=2&&t.length<=3&&t[0]==="workspace"&&t[1]==="list"){let r=t[2]==="--archived";if(t.length===3&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
34
34
 
35
- ${_e()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t.length===3&&t[0]==="workspace"&&t[1]==="archive")return{mode:"command",command:{kind:"archiveWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="restore")return{mode:"command",command:{kind:"restoreWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="remove")return{mode:"command",command:{kind:"removeWorkspace",workspaceId:t[2].trim()}};if(t.length>=2&&t[0]==="task"&&t[1]==="new"){let r=t.indexOf("--repo"),s=t.indexOf("--workspace"),o=t.indexOf("--runner");if(r===-1&&s===-1)throw new Error(`Task creation now requires '--repo <repo-id>' or '--workspace <workspace-id>'.
35
+ ${be()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t.length===3&&t[0]==="workspace"&&t[1]==="archive")return{mode:"command",command:{kind:"archiveWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="restore")return{mode:"command",command:{kind:"restoreWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="remove")return{mode:"command",command:{kind:"removeWorkspace",workspaceId:t[2].trim()}};if(t.length>=2&&t[0]==="task"&&t[1]==="new"){let r=t.indexOf("--repo"),s=t.indexOf("--workspace"),o=t.indexOf("--runner");if(r===-1&&s===-1)throw new Error(`Task creation now requires '--repo <repo-id>' or '--workspace <workspace-id>'.
36
36
 
37
- `+_e());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
37
+ `+be());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
38
38
 
39
- `+_e());let p=r===-1?void 0:t[r+1]?.trim()??"",v=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:Zs(t[o+1]?.trim()??""),d=t.filter((w,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(p!==void 0&&p.length===0)throw new Error(`Repo id cannot be empty.
39
+ `+be());let p=r===-1?void 0:t[r+1]?.trim()??"",k=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:rn(t[o+1]?.trim()??""),d=t.filter((_,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(p!==void 0&&p.length===0)throw new Error(`Repo id cannot be empty.
40
40
 
41
- `+_e());if(v!==void 0&&v.length===0)throw new Error(`Workspace id cannot be empty.
41
+ `+be());if(k!==void 0&&k.length===0)throw new Error(`Workspace id cannot be empty.
42
42
 
43
- `+_e());if(d.length===0)throw new Error(`Task prompt cannot be empty.
43
+ `+be());if(d.length===0)throw new Error(`Task prompt cannot be empty.
44
44
 
45
- `+_e());return{mode:"command",command:{kind:"createTask",...p?{repoId:p}:{},...v?{workspaceId:v}:{},prompt:d,...i?{runner:i}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
45
+ `+be());return{mode:"command",command:{kind:"createTask",...p?{repoId:p}:{},...k?{workspaceId:k}:{},prompt:d,...i?{runner:i}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
46
46
 
47
- ${_e()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Fe(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Fe(t[2]),repoId:Ca(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:Fe(t[2])}};throw new Error(`Unsupported command: ${t.join(" ")}
47
+ ${be()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Fe(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Fe(t[2]),repoId:Fa(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:Fe(t[2])}};throw new Error(`Unsupported command: ${t.join(" ")}
48
48
 
49
- ${_e()}`)}function _e(){return["Craig commands:"," craig Show the Craig phase 0 placeholder"," craig repo add Register a repo in the current Craig workspace"," craig workspace add <path> Register a repo or parent-directory workspace"," craig repo list List registered repos"," craig repo remove Remove a registered repo"," craig workspace list List active workspaces"," craig workspace list --archived List archived workspaces"," craig workspace archive Archive a workspace"," craig workspace restore Restore an archived workspace"," craig workspace remove Remove an archived workspace"," craig task new --repo <repo-id> [--runner codex|cursor|claude] <prompt> Create a new Craig repo task"," craig task new --workspace <workspace-id> [--runner codex|cursor|claude] <prompt> Create a new Craig workspace task"," craig task list [--repo <repo-id>] List known Craig tasks"," craig task show Show details for a Craig task"," craig task logs Stream Craig-managed logs for a task"," craig task diff Show the current worktree diff for a task"," craig task attach Attach to a live task session"," craig task focus Focus the tmux pane for a task"," craig task open Open the task worktree or print its path"," craig task check Run configured checks for a task"," craig task commit Commit all task worktree changes"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
49
+ ${be()}`)}function be(){return["Craig commands:"," craig Show the Craig phase 0 placeholder"," craig repo add Register a repo in the current Craig workspace"," craig workspace add <path> Register a repo or parent-directory workspace"," craig repo list List registered repos"," craig repo remove Remove a registered repo"," craig workspace list List active workspaces"," craig workspace list --archived List archived workspaces"," craig workspace archive Archive a workspace"," craig workspace restore Restore an archived workspace"," craig workspace remove Remove an archived workspace"," craig task new --repo <repo-id> [--runner codex|cursor|claude] <prompt> Create a new Craig repo task"," craig task new --workspace <workspace-id> [--runner codex|cursor|claude] <prompt> Create a new Craig workspace task"," craig task list [--repo <repo-id>] List known Craig tasks"," craig task show Show details for a Craig task"," craig task logs Stream Craig-managed logs for a task"," craig task diff Show the current worktree diff for a task"," craig task attach Attach to a live task session"," craig task focus Focus the tmux pane for a task"," craig task open Open the task worktree or print its path"," craig task check Run configured checks for a task"," craig task commit Commit all task worktree changes"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
50
50
  `)}function Fe(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
51
51
 
52
- ${_e()}`);return t}function Ca(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
52
+ ${be()}`);return t}function Fa(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
53
53
 
54
- ${_e()}`);return t}import Nn from"node:path";Ee();import{mkdir as Pa,readFile as Ia,writeFile as xa}from"node:fs/promises";import Ea from"node:path";async function Ne(e){try{let t=await Ia(e.configFile,"utf8"),r=JSON.parse(t);return rn(r,e.configFile)}catch(t){if(Aa(t))return{};throw t instanceof SyntaxError?new Error(`Craig config at ${e.configFile} is malformed. Remove or repair the file before rerunning Craig.`):t}}async function tn(e,t){rn(t,e.configFile),await Pa(Ea.dirname(e.configFile),{recursive:!0}),await xa(e.configFile,`${JSON.stringify(t,null,2)}
55
- `,"utf8")}function rn(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!le.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${le.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function Aa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}We();import{readFile as Ba,readdir as _f,rm as wf}from"node:fs/promises";import $a from"node:path";async function mt(e,t){let r=await Ba(Nr(e,t),"utf8"),s=JSON.parse(r);return Fa(s,Nr(e,t))}async function nt(e,t){await de(Nr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Nr(e,t){return $a.join(e.sessionsDir,`${t}.json`)}function Fa(e,t){let r=ja(e);if(typeof r!="object"||r===null||typeof r.id!="string"||typeof r.taskId!="string"||typeof r.repoId!="string"||typeof r.workspaceId!="string"||r.substrate!=="tmux"||typeof r.sessionName!="string"||typeof r.paneId!="string"||!(r.windowTarget===null||typeof r.windowTarget=="string")||typeof r.worktreePath!="string"||!(r.logPath===null||typeof r.logPath=="string")||!Array.isArray(r.command)||!r.command.every(s=>typeof s=="string")||!["starting","running","exited","failed"].includes(r.status)||!(r.startedAt===null||typeof r.startedAt=="string")||!(r.exitedAt===null||typeof r.exitedAt=="string")||!(r.exitCode===null||typeof r.exitCode=="number")||!(r.lastAttachedAt===null||typeof r.lastAttachedAt=="string")||!Wa(r.attach)||!Na(r.snapshot)||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig session record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Na(e){return e===null||typeof e=="object"&&e!==null&&typeof e.paneId=="string"&&(typeof e.windowTarget=="string"||e.windowTarget===null)&&typeof e.alive=="boolean"&&typeof e.capturedAt=="string"}function Wa(e){return typeof e=="object"&&e!==null&&e.detachChord==="ctrl+]"&&(e.lastSize===null||typeof e.lastSize=="object"&&e.lastSize!==null&&typeof e.lastSize.columns=="number"&&typeof e.lastSize.rows=="number")}function ja(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Te();wt();Ce();function zt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as gc,constants as mc}from"node:fs";import{homedir as pn}from"node:os";import Ye from"node:path";var _c=[Ye.join(pn(),".local","bin"),Ye.join(pn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function mn(e=process.env){return bc([...(e.PATH??"").split(Ye.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:_c])}function at(e=process.env){return{...e,PATH:mn(e).join(Ye.delimiter)}}function wc(e,t={}){if(e.includes(Ye.sep)){let r=Ye.isAbsolute(e)?e:Ye.resolve(t.cwd??process.cwd(),e);return gn(r)?r:null}for(let r of mn(t.env)){let s=Ye.join(r,e);if(gn(s))return s}return null}function ct(e,t={}){let r=wc(e,t);if(r)return r;throw new Error(`Command not found: ${e}. Install it or add its directory to PATH. Craig also checks ~/.local/bin, /opt/homebrew/bin, and /usr/local/bin.`)}function gn(e){try{return gc(e,mc.X_OK),!0}catch{return!1}}function bc(e){return[...new Set(e)]}Ee();Ce();import{spawn as kc}from"node:child_process";import{createHash as yc}from"node:crypto";import vc from"node:path";var Sc="craig";async function _n(e,t,r){let s=qr(e,t),o=Rc(),p=await te("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),v=Pc(p.stdout);return await Tc(e,s),v}async function Tc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await te("tmux",s,{cwd:e})}async function wn(e,t,r){await te("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function bn(e,t,r){await te("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function kn(e,t,r){await te("tmux",["pipe-pane","-o","-t",e,`cat >> ${zt(t)}`],{cwd:r})}async function Vt(e,t,r,s){let o=s??yn(e);if(r?await te("tmux",["select-window","-t",r],{cwd:e}):await te("tmux",["select-window","-t",t],{cwd:e}),await te("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await te("tmux",["switch-client","-t",o],{cwd:e});return}await xc(e,["attach-session","-t",o])}function yn(e){let r=vc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=yc("sha1").update(e).digest("hex").slice(0,8);return`${Sc}-${r}-${s}`}function qr(e,t){return`${yn(e)}-${t.toLowerCase()}`}function Rc(){let e=Cc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Cc(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,s="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof s=="number"&&s>0)return{columns:r,rows:s}}return null}function Pc(e){let t=Ic(e);if(t.length<3)throw new Error("tmux did not return the expected session, window, and pane targets for the Craig task session.");return{sessionName:t[0],windowTarget:t[1],paneId:t[2]}}function Ic(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function xc(e,t){await new Promise((r,s)=>{let o=kc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var Kr={async prepare(e,t){let r=e.runnerSession.command[0]??me(e.runner)[0],s=at();await te(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:me(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await bn(t.session.paneId,[s,...r.slice(1)].map(o=>zt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ee();Ce();var Tt={async create(e,t){let r=await _n(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await kn(r.paneId,t.logPath,t.repoRoot);let s=await vn({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),o={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||qr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Tt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Vt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await wn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return Ec(e,t)}};async function Ec(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return vn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function vn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Te();Ct();import{mkdir as Pt,rm as jc,writeFile as Qt}from"node:fs/promises";import ie from"node:path";Ce();async function Pn(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function zr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let v=await Wc(e,o);await te("git",["worktree","add","-b",t,r,v],{cwd:e})}async function Wc(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Jt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function In(e){await te("git",["add","-A"],{cwd:e})}async function xn(e,t){await te("git",["commit","-m",t],{cwd:e})}async function En(e){let t=await te("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
56
- `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}Ee();ot();async function An(e,t){let r=await Se(e),s=Ln(new Date),o=Mn(r.taskIds,s);for(;;){let p=`task_${s}_${String(o).padStart(2,"0")}`,v=`craig/${p}`;if(!await Pn(t,v))return p;o+=1}}async function Dn(e){let t=await Se(e),r=Ln(new Date),s=Mn(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Ln(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}${r}${s}`}function Mn(e,t){let r=e.filter(s=>s.startsWith(`task_${t}_`)).map(s=>Number.parseInt(s.slice(-2),10)).filter(s=>Number.isInteger(s));return r.length===0?1:Math.max(...r)+1}var Bn=["AGENTS","md"].join(".");async function It(e,t,r,s={}){let o=await De(e,t),p=await zc(e,o.id),v=await An(e,o.rootPath),i=s.sessionId??null,c=`craig/${v}`,d=ie.join(e.worktreesDir,o.id,v),w=ie.join(e.logsDir,`${v}.log`),a=ie.join(e.artifactsDir,v);await Pt(ie.dirname(d),{recursive:!0}),await Pt(a,{recursive:!0}),await Qt(w,"","utf8");let k=Hc(e,{taskId:v,repoId:o.id,workspaceId:p.id,sessionId:i,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:d});return await se(e,k),await Hr(e,v),await zr(o.rootPath,c,d,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:i,workspaceId:p.id,task:k}}async function er(e,t,r,s={}){let o=(await Le(e)).find(h=>h.id===t&&h.status==="active");if(!o)throw new Error(`Workspace ${t} does not exist or is archived.`);if(o.kind!=="project"){if(!o.primaryRepoId)throw new Error(`Workspace ${t} is not task-capable.`);let h=await It(e,o.primaryRepoId,r,s);return{...h,bundlePath:h.task.worktreePath,repoTargets:[]}}let p=o.discoveredRepoIds??[];if(p.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let v=await Dn(e),i=new Date().toISOString(),c=s.runner??"codex",d=s.sessionId??null,w=`craig/${v}`,a=ie.join(e.craigDir,"task-bundles",v),k=ie.join(e.logsDir,`${v}.log`),l=ie.join(e.artifactsDir,v);await Pt(a,{recursive:!0}),await Pt(l,{recursive:!0}),await Qt(k,"","utf8");let m=await Promise.all(p.map(h=>De(e,h))),_=qc(m),n=await Promise.all(m.map(h=>Uc(e,h,v,w,ie.join(a,_.get(h.id))))),g=n.find(h=>h.status==="ready")??n[0];if(!n.some(h=>h.status==="ready"))throw await jc(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${n.map(h=>`${h.repoId}: ${h.failureReason??"unknown error"}`).join("; ")}`);await Qt(ie.join(a,"manifest.json"),JSON.stringify({taskId:v,workspaceId:t,prompt:r,repos:n.map(h=>({repoId:h.repoId,repoName:m.find(y=>y.id===h.repoId)?.name??h.repoId,path:ie.relative(a,h.worktreePath),status:h.status,worktreePath:h.worktreePath,failureReason:h.failureReason}))},null,2),"utf8"),await Qt(ie.join(a,Bn),Kc({taskId:v,workspaceId:t,prompt:r,repos:m,repoTargets:n,bundlePath:a}),"utf8");let f=$n(v,r,i,c,s.config??{}),u={id:v,title:r,slug:Fn(r),type:"project",status:"draft",runner:c,repoId:g.repoId,workspaceId:o.id,sessionId:d,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:p.filter(h=>h!==g.repoId),repoRoot:a,worktreePath:a,branch:w,bundlePath:a,selectedRepoTargetId:g.repoId,repoTargets:n,ptyTabs:f,runnerSession:{command:me(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:g.checks,lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,k),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(l,"pr-status.json"))},cleanup:Zt(),lastFailureReason:n.every(h=>h.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:i,updatedAt:i};return await se(e,u),await Hr(e,v),{repoId:g.repoId,repoRoot:a,sessionId:d,workspaceId:o.id,task:u,bundlePath:a,repoTargets:n}}function $n(e,t,r,s="codex",o={}){let p=ke(s);return[{id:`${e}:agent`,kind:"agent",title:p.defaultAgentTitle,command:me(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Hc(e,t){let r=new Date().toISOString(),s=$n(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Fn(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:me(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Vr(ie.relative(e.workspaceRoot,e.configFile))},lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,ie.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:Zt(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Uc(e,t,r,s,o){await Pt(ie.dirname(o),{recursive:!0});try{return await zr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Vr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:On(),cleanup:Zt()}}catch(p){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:p instanceof Error?p.message:"Failed to create worktree.",checks:Vr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:On(),cleanup:Zt()}}}function qc(e){let t=new Set(["manifest.json",Bn]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,p=o,v=2;for(;t.has(p);)p=`${o}-${v}`,v+=1;t.add(p),r.set(s.id,p)}return r}function Kc(e){let t=new Map(e.repos.map(s=>[s.id,s.name])),r=e.repoTargets.map(s=>{let o=t.get(s.repoId)??s.repoId,p=ie.relative(e.bundlePath,s.worktreePath),v=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${p}/\` - ${o} (${s.repoId}, ${v})`}).join(`
54
+ ${be()}`);return t}import Hn from"node:path";Ae();import{mkdir as Na,readFile as Wa,writeFile as ja}from"node:fs/promises";import Ha from"node:path";async function Ne(e){try{let t=await Wa(e.configFile,"utf8"),r=JSON.parse(t);return on(r,e.configFile)}catch(t){if(Ua(t))return{};throw t instanceof SyntaxError?new Error(`Craig config at ${e.configFile} is malformed. Remove or repair the file before rerunning Craig.`):t}}async function nn(e,t){on(t,e.configFile),await Na(Ha.dirname(e.configFile),{recursive:!0}),await ja(e.configFile,`${JSON.stringify(t,null,2)}
55
+ `,"utf8")}function on(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!de.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${de.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function Ua(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}We();import{readFile as Ga,readdir as Nf,rm as Wf}from"node:fs/promises";import Xa from"node:path";async function mt(e,t){let r=await Ga(Ur(e,t),"utf8"),s=JSON.parse(r);return Ya(s,Ur(e,t))}async function nt(e,t){await ue(Ur(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Ur(e,t){return Xa.join(e.sessionsDir,`${t}.json`)}function Ya(e,t){let r=Za(e);if(typeof r!="object"||r===null||typeof r.id!="string"||typeof r.taskId!="string"||typeof r.repoId!="string"||typeof r.workspaceId!="string"||r.substrate!=="tmux"||typeof r.sessionName!="string"||typeof r.paneId!="string"||!(r.windowTarget===null||typeof r.windowTarget=="string")||typeof r.worktreePath!="string"||!(r.logPath===null||typeof r.logPath=="string")||!Array.isArray(r.command)||!r.command.every(s=>typeof s=="string")||!["starting","running","exited","failed"].includes(r.status)||!(r.startedAt===null||typeof r.startedAt=="string")||!(r.exitedAt===null||typeof r.exitedAt=="string")||!(r.exitCode===null||typeof r.exitCode=="number")||!(r.lastAttachedAt===null||typeof r.lastAttachedAt=="string")||!Ja(r.attach)||!Qa(r.snapshot)||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig session record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Qa(e){return e===null||typeof e=="object"&&e!==null&&typeof e.paneId=="string"&&(typeof e.windowTarget=="string"||e.windowTarget===null)&&typeof e.alive=="boolean"&&typeof e.capturedAt=="string"}function Ja(e){return typeof e=="object"&&e!==null&&e.detachChord==="ctrl+]"&&(e.lastSize===null||typeof e.lastSize=="object"&&e.lastSize!==null&&typeof e.lastSize.columns=="number"&&typeof e.lastSize.rows=="number")}function Za(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Re();wt();Pe();function Vt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as xc,constants as Ec}from"node:fs";import{homedir as _n}from"node:os";import Qe from"node:path";var Ac=[Qe.join(_n(),".local","bin"),Qe.join(_n(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function bn(e=process.env){return Lc([...(e.PATH??"").split(Qe.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Ac])}function at(e=process.env){return{...e,PATH:bn(e).join(Qe.delimiter)}}function Dc(e,t={}){if(e.includes(Qe.sep)){let r=Qe.isAbsolute(e)?e:Qe.resolve(t.cwd??process.cwd(),e);return wn(r)?r:null}for(let r of bn(t.env)){let s=Qe.join(r,e);if(wn(s))return s}return null}function ct(e,t={}){let r=Dc(e,t);if(r)return r;throw new Error(`Command not found: ${e}. Install it or add its directory to PATH. Craig also checks ~/.local/bin, /opt/homebrew/bin, and /usr/local/bin.`)}function wn(e){try{return xc(e,Ec.X_OK),!0}catch{return!1}}function Lc(e){return[...new Set(e)]}Ae();Pe();import{spawn as Mc}from"node:child_process";import{createHash as Oc}from"node:crypto";import Bc from"node:path";var $c="craig";async function kn(e,t,r){let s=Gr(e,t),o=Nc(),p=await ee("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),k=jc(p.stdout);return await Fc(e,s),k}async function Fc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await ee("tmux",s,{cwd:e})}async function yn(e,t,r){await ee("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function vn(e,t,r){await ee("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Sn(e,t,r){await ee("tmux",["pipe-pane","-o","-t",e,`cat >> ${Vt(t)}`],{cwd:r})}async function Gt(e,t,r,s){let o=s??Tn(e);if(r?await ee("tmux",["select-window","-t",r],{cwd:e}):await ee("tmux",["select-window","-t",t],{cwd:e}),await ee("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await ee("tmux",["switch-client","-t",o],{cwd:e});return}await Uc(e,["attach-session","-t",o])}function Tn(e){let r=Bc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=Oc("sha1").update(e).digest("hex").slice(0,8);return`${$c}-${r}-${s}`}function Gr(e,t){return`${Tn(e)}-${t.toLowerCase()}`}function Nc(){let e=Wc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Wc(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,s="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof s=="number"&&s>0)return{columns:r,rows:s}}return null}function jc(e){let t=Hc(e);if(t.length<3)throw new Error("tmux did not return the expected session, window, and pane targets for the Craig task session.");return{sessionName:t[0],windowTarget:t[1],paneId:t[2]}}function Hc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Uc(e,t){await new Promise((r,s)=>{let o=Mc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var Xr={async prepare(e,t){let r=e.runnerSession.command[0]??we(e.runner)[0],s=at();await ee(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:we(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await vn(t.session.paneId,[s,...r.slice(1)].map(o=>Vt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ae();Pe();var Tt={async create(e,t){let r=await kn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Sn(r.paneId,t.logPath,t.repoRoot);let s=await Rn({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),o={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||Gr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Tt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Gt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await yn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return qc(e,t)}};async function qc(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return Rn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function Rn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Re();Ct();import{mkdir as Pt,rm as tl,writeFile as Zt}from"node:fs/promises";import ie from"node:path";Pe();async function En(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Yr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let k=await el(e,o);await ee("git",["worktree","add","-b",t,r,k],{cwd:e})}async function el(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Jt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function An(e){await ee("git",["add","-A"],{cwd:e})}async function Dn(e,t){await ee("git",["commit","-m",t],{cwd:e})}async function Ln(e){let t=await ee("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
56
+ `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}Ae();ot();async function Mn(e,t){let r=await Te(e),s=Bn(new Date),o=$n(r.taskIds,s);for(;;){let p=`task_${s}_${String(o).padStart(2,"0")}`,k=`craig/${p}`;if(!await En(t,k))return p;o+=1}}async function On(e){let t=await Te(e),r=Bn(new Date),s=$n(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Bn(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}${r}${s}`}function $n(e,t){let r=e.filter(s=>s.startsWith(`task_${t}_`)).map(s=>Number.parseInt(s.slice(-2),10)).filter(s=>Number.isInteger(s));return r.length===0?1:Math.max(...r)+1}var Nn=["AGENTS","md"].join(".");async function It(e,t,r,s={}){let o=await Le(e,t),p=await ol(e,o.id),k=await Mn(e,o.rootPath),i=s.sessionId??null,c=`craig/${k}`,d=ie.join(e.worktreesDir,o.id,k),_=ie.join(e.logsDir,`${k}.log`),a=ie.join(e.artifactsDir,k);await Pt(ie.dirname(d),{recursive:!0}),await Pt(a,{recursive:!0}),await Zt(_,"","utf8");let b=rl(e,{taskId:k,repoId:o.id,workspaceId:p.id,sessionId:i,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:d});return await se(e,b),await zr(e,k),await Yr(o.rootPath,c,d,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:i,workspaceId:p.id,task:b}}async function tr(e,t,r,s={}){let o=(await Me(e)).find(h=>h.id===t&&h.status==="active");if(!o)throw new Error(`Workspace ${t} does not exist or is archived.`);if(o.kind!=="project"){if(!o.primaryRepoId)throw new Error(`Workspace ${t} is not task-capable.`);let h=await It(e,o.primaryRepoId,r,s);return{...h,bundlePath:h.task.worktreePath,repoTargets:[]}}let p=o.discoveredRepoIds??[];if(p.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let k=await On(e),i=new Date().toISOString(),c=s.runner??"codex",d=s.sessionId??null,_=`craig/${k}`,a=ie.join(e.craigDir,"task-bundles",k),b=ie.join(e.logsDir,`${k}.log`),l=ie.join(e.artifactsDir,k);await Pt(a,{recursive:!0}),await Pt(l,{recursive:!0}),await Zt(b,"","utf8");let m=await Promise.all(p.map(h=>Le(e,h))),w=nl(m),n=await Promise.all(m.map(h=>sl(e,h,k,_,ie.join(a,w.get(h.id))))),g=n.find(h=>h.status==="ready")??n[0];if(!n.some(h=>h.status==="ready"))throw await tl(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${n.map(h=>`${h.repoId}: ${h.failureReason??"unknown error"}`).join("; ")}`);await Zt(ie.join(a,"manifest.json"),JSON.stringify({taskId:k,workspaceId:t,prompt:r,repos:n.map(h=>({repoId:h.repoId,repoName:m.find(y=>y.id===h.repoId)?.name??h.repoId,path:ie.relative(a,h.worktreePath),status:h.status,worktreePath:h.worktreePath,failureReason:h.failureReason}))},null,2),"utf8"),await Zt(ie.join(a,Nn),il({taskId:k,workspaceId:t,prompt:r,repos:m,repoTargets:n,bundlePath:a}),"utf8");let f=Wn(k,r,i,c,s.config??{}),u={id:k,title:r,slug:jn(r),type:"project",status:"draft",runner:c,repoId:g.repoId,workspaceId:o.id,sessionId:d,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:p.filter(h=>h!==g.repoId),repoRoot:a,worktreePath:a,branch:_,bundlePath:a,selectedRepoTargetId:g.repoId,repoTargets:n,ptyTabs:f,runnerSession:{command:we(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:g.checks,lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,b),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(l,"pr-status.json"))},cleanup:er(),lastFailureReason:n.every(h=>h.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:i,updatedAt:i};return await se(e,u),await zr(e,k),{repoId:g.repoId,repoRoot:a,sessionId:d,workspaceId:o.id,task:u,bundlePath:a,repoTargets:n}}function Wn(e,t,r,s="codex",o={}){let p=ye(s);return[{id:`${e}:agent`,kind:"agent",title:p.defaultAgentTitle,command:we(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function rl(e,t){let r=new Date().toISOString(),s=Wn(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:jn(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:we(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Qr(ie.relative(e.workspaceRoot,e.configFile))},lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,ie.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:er(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function sl(e,t,r,s,o){await Pt(ie.dirname(o),{recursive:!0});try{return await Yr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Qr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Fn(),cleanup:er()}}catch(p){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:p instanceof Error?p.message:"Failed to create worktree.",checks:Qr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Fn(),cleanup:er()}}}function nl(e){let t=new Set(["manifest.json",Nn]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,p=o,k=2;for(;t.has(p);)p=`${o}-${k}`,k+=1;t.add(p),r.set(s.id,p)}return r}function il(e){let t=new Map(e.repos.map(s=>[s.id,s.name])),r=e.repoTargets.map(s=>{let o=t.get(s.repoId)??s.repoId,p=ie.relative(e.bundlePath,s.worktreePath),k=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${p}/\` - ${o} (${s.repoId}, ${k})`}).join(`
57
57
  `);return["# Craig Project Task Bundle","","This directory is a Craig project task bundle. Repo work must happen inside the child repo worktrees listed below.","","Run repo Git commands from a repo worktree directory, not from the bundle root. Use `manifest.json` as the machine-readable source of truth for this bundle.","",`Task: \`${e.taskId}\``,`Workspace: \`${e.workspaceId}\``,`Prompt: ${e.prompt}`,"","## Repo Worktrees","",r,""].join(`
58
- `)}function Vr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function On(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function Zt(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function zc(e,t){let s=(await Le(e)).find(o=>o.kind!=="project"&&o.primaryRepoId===t&&o.status==="active");if(!s)throw new Error(`Repo ${t} does not have an active workspace.`);return s}function Fn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Wn(e,t,r,s={}){let o=r.trim(),p=await Ne(e),v=s.runner??st(p);if(qt(v,p),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let i=s.workspaceId?await er(e,s.workspaceId,o,{runner:v,config:p}):await It(e,t,o,{runner:v,config:p}),c=i.task,d=me(v,o,p),w=`session_${c.id}`,a=c.artifacts.logPath?Nn.resolve(e.workspaceRoot,c.artifacts.logPath):Nn.join(e.logsDir,`${c.id}.log`);try{await Kr.prepare(c,{repoRoot:i.repoRoot});let k=await Tt.create(e,{sessionId:w,taskId:c.id,repoId:i.repoId,workspaceId:i.workspaceId,repoRoot:i.repoRoot,worktreePath:c.worktreePath,logPath:a,command:d});await Kr.launch(c,{repoRoot:i.repoRoot,session:k});let l=new Date().toISOString();k={...k,status:"running",startedAt:l,command:d};let m={...c,status:"running",runner:v,sessionId:k.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:k.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await se(e,m),await nt(e,k),await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:k.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(k){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:k instanceof Error?k.message:"Unknown Craig error"};throw await se(e,l),k}}xt();dt();Te();import{access as ul}from"node:fs/promises";import Jn from"node:path";We();Te();import{mkdir as Gc,readFile as jp,writeFile as Hp}from"node:fs/promises";import Xc from"node:path";Ce();import jn from"node:path";function tr(e,t){return t?jn.isAbsolute(t)?t:jn.join(e.repoRoot,t):null}function he(e){return e.prs.length===0?null:[...e.prs].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e.prs[e.prs.length-1]??null}function sr(e){return e.status==="merged"||e.status==="closed"}function Hn(e,t){let r=e.prs.findIndex(o=>o.number!==null&&o.number===t.number),s=r>=0?e.prs.map((o,p)=>p===r?t:o):[...e.prs,t];return{...e,prs:s}}var Un=3,Yc=1e3,Jc=1e4;async function Et(e){let t=await oe("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Yr(e,t){let r=he(t),s=r?.number?String(r.number):t.branch,o=await te("gh",rr(s),{cwd:t.worktreePath}),p=JSON.parse(o.stdout);return Qr(e,t,p,r)}async function Jr(e,t){let r=await oe("gh",rr(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return{discovered:!0,task:await Qr(e,t,s,null)}}async function qn(e){let t=await oe("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:nl(t.stdout.trim())}async function Kn(e,t,r){if(r.length===0)return[];let s=il(r),o=await Qc(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),v=JSON.parse(o.stdout).data?.repository??{};return r.map((i,c)=>{let d=v[`item${c}`],w=ol(d);return{id:i.id,found:w!==null,view:w}})}async function Qc(e,t){let r;for(let s=0;s<=Un;s+=1)try{return await te("gh",t,{cwd:e})}catch(o){if(r=o,s===Un||!Zc(o))throw o;await tl(el(s))}throw r}function Zc(e){let t=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return t.includes("rate limit")||t.includes("secondary rate limit")||t.includes("abuse detection")||t.includes("api rate limit exceeded")||t.includes("you have exceeded")}function el(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||Yc,r=Math.min(t*2**e,Jc),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function tl(e){return new Promise(t=>setTimeout(t,e))}async function At(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let v=await te("gh",rr(s),{cwd:r.worktreePath}),i=Xr(JSON.parse(v.stdout));return r.pullRequest=i,await Gr(e,t,r.repoId,i),"synced"}let o=await oe("gh",rr(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let p=Xr(JSON.parse(o.stdout));return r.pullRequest=p,await Gr(e,t,r.repoId,p),"discovered"}async function zn(e,t,r){return Qr(e,t,r,he(t))}async function Vn(e,t,r,s){return Gr(e,t,r,Xr(s))}async function Gn(e,t){let r=tr(e,t.artifacts.prStatusPath);r&&(await Gc(Xc.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,prs:t.prs}))}function rl(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function sl(e){if(e.length===0)return"checked";let t=[...e].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e[e.length-1];return rl(t)?"merge_ready":t.status==="merged"?"merged":t.status==="open"?"pr_open":"checked"}function rr(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,isDraft,title,createdAt,updatedAt,mergedAt,mergeable,mergeStateStatus,statusCheckRollup"]}function nl(e){let t=e.replace(/\.git$/,""),r=t.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)$/);if(r?.[1]&&r[2])return{owner:r[1],name:r[2]};let s=t.match(/^git@github\.com:([^/]+)\/([^/]+)$/);if(s?.[1]&&s[2])return{owner:s[1],name:s[2]};let o=t.match(/^ssh:\/\/git@github\.com\/([^/]+)\/([^/]+)$/);return o?.[1]&&o[2]?{owner:o[1],name:o[2]}:null}function il(e){return`
58
+ `)}function Qr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Fn(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,requiredChecks:[],comments:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function er(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function ol(e,t){let s=(await Me(e)).find(o=>o.kind!=="project"&&o.primaryRepoId===t&&o.status==="active");if(!s)throw new Error(`Repo ${t} does not have an active workspace.`);return s}function jn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Un(e,t,r,s={}){let o=r.trim(),p=await Ne(e),k=s.runner??st(p);if(Kt(k,p),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let i=s.workspaceId?await tr(e,s.workspaceId,o,{runner:k,config:p}):await It(e,t,o,{runner:k,config:p}),c=i.task,d=we(k,o,p),_=`session_${c.id}`,a=c.artifacts.logPath?Hn.resolve(e.workspaceRoot,c.artifacts.logPath):Hn.join(e.logsDir,`${c.id}.log`);try{await Xr.prepare(c,{repoRoot:i.repoRoot});let b=await Tt.create(e,{sessionId:_,taskId:c.id,repoId:i.repoId,workspaceId:i.workspaceId,repoRoot:i.repoRoot,worktreePath:c.worktreePath,logPath:a,command:d});await Xr.launch(c,{repoRoot:i.repoRoot,session:b});let l=new Date().toISOString();b={...b,status:"running",startedAt:l,command:d};let m={...c,status:"running",runner:k,sessionId:b.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:b.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await se(e,m),await nt(e,b),await Ce({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??je(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:b.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(b){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:b instanceof Error?b.message:"Unknown Craig error"};throw await se(e,l),b}}xt();dt();Re();import{access as El}from"node:fs/promises";import si from"node:path";We();Re();import{mkdir as cl,readFile as lg,writeFile as dg}from"node:fs/promises";import ll from"node:path";Pe();import qn from"node:path";function rr(e,t){return t?qn.isAbsolute(t)?t:qn.join(e.repoRoot,t):null}function pe(e){return e.prs.length===0?null:[...e.prs].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e.prs[e.prs.length-1]??null}function ir(e){return e.status==="merged"||e.status==="closed"}function Kn(e,t){let r=e.prs.findIndex(o=>o.number!==null&&o.number===t.number),s=r>=0?e.prs.map((o,p)=>p===r?t:o):[...e.prs,t];return{...e,prs:s}}var zn=3,dl=1e3,ul=1e4;async function Et(e){let t=await oe("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function es(e,t){let r=pe(t),s=r?.number?String(r.number):t.branch,o=await ee("gh",nr(s),{cwd:t.worktreePath}),p=JSON.parse(o.stdout);return rs(e,t,p,r)}async function ts(e,t){let r=await oe("gh",nr(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return{discovered:!0,task:await rs(e,t,s,null)}}async function Gn(e){let t=await oe("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:bl(t.stdout.trim())}async function Xn(e,t,r){if(r.length===0)return[];let s=kl(r),o=await hl(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),k=JSON.parse(o.stdout).data?.repository??{};return r.map((i,c)=>{let d=k[`item${c}`],_=yl(d);return{id:i.id,found:_!==null,view:_}})}async function hl(e,t){let r;for(let s=0;s<=zn;s+=1)try{return await ee("gh",t,{cwd:e})}catch(o){if(r=o,s===zn||!fl(o))throw o;await gl(pl(s))}throw r}function fl(e){let t=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return t.includes("rate limit")||t.includes("secondary rate limit")||t.includes("abuse detection")||t.includes("api rate limit exceeded")||t.includes("you have exceeded")}function pl(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||dl,r=Math.min(t*2**e,ul),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function gl(e){return new Promise(t=>setTimeout(t,e))}async function At(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let k=await ee("gh",nr(s),{cwd:r.worktreePath}),i=Zr(JSON.parse(k.stdout));return r.pullRequest=i,await Jr(e,t,r.repoId,i),"synced"}let o=await oe("gh",nr(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let p=Zr(JSON.parse(o.stdout));return r.pullRequest=p,await Jr(e,t,r.repoId,p),"discovered"}async function Yn(e,t,r){return rs(e,t,r,pe(t))}async function Qn(e,t,r,s){return Jr(e,t,r,Zr(s))}async function Jn(e,t){let r=rr(e,t.artifacts.prStatusPath);r&&(await cl(ll.dirname(r),{recursive:!0}),await ue(r,{taskId:t.id,prs:t.prs}))}function ml(e){return e.mergeable&&!_l(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function _l(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function wl(e){if(e.length===0)return"checked";let t=[...e].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e[e.length-1];return ml(t)?"merge_ready":t.status==="merged"?"merged":t.status==="open"?"pr_open":"checked"}function nr(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,isDraft,title,createdAt,updatedAt,mergedAt,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,comments"]}function bl(e){let t=e.replace(/\.git$/,""),r=t.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)$/);if(r?.[1]&&r[2])return{owner:r[1],name:r[2]};let s=t.match(/^git@github\.com:([^/]+)\/([^/]+)$/);if(s?.[1]&&s[2])return{owner:s[1],name:s[2]};let o=t.match(/^ssh:\/\/git@github\.com\/([^/]+)\/([^/]+)$/);return o?.[1]&&o[2]?{owner:o[1],name:o[2]}:null}function kl(e){return`
59
59
  query CraigPullRequestBatch($owner: String!, $name: String!) {
60
60
  repository(owner: $owner, name: $name) {
61
61
  ${e.map((r,s)=>{let o=`item${s}`;return r.mode==="number"?`${o}: pullRequest(number: ${Number(r.selector)}) { ...PrFields }`:`${o}: pullRequests(headRefName: ${JSON.stringify(r.selector)}, states: OPEN, first: 1, orderBy: { field: UPDATED_AT, direction: DESC }) { nodes { ...PrFields } }`}).join(`
@@ -77,6 +77,7 @@ fragment PrFields on PullRequest {
77
77
  mergedAt
78
78
  mergeable
79
79
  mergeStateStatus
80
+ reviewDecision
80
81
  statusCheckRollup {
81
82
  contexts(first: 100) {
82
83
  nodes {
@@ -85,10 +86,13 @@ fragment PrFields on PullRequest {
85
86
  name
86
87
  status
87
88
  conclusion
89
+ startedAt
90
+ completedAt
88
91
  }
89
92
  ... on StatusContext {
90
93
  context
91
94
  state
95
+ createdAt
92
96
  }
93
97
  }
94
98
  }
@@ -104,10 +108,13 @@ fragment PrFields on PullRequest {
104
108
  name
105
109
  status
106
110
  conclusion
111
+ startedAt
112
+ completedAt
107
113
  }
108
114
  ... on StatusContext {
109
115
  context
110
116
  state
117
+ createdAt
111
118
  }
112
119
  }
113
120
  }
@@ -115,53 +122,64 @@ fragment PrFields on PullRequest {
115
122
  }
116
123
  }
117
124
  }
125
+ comments(last: 4) {
126
+ nodes {
127
+ author {
128
+ login
129
+ }
130
+ bodyText
131
+ body
132
+ createdAt
133
+ url
134
+ }
135
+ }
118
136
  }
119
- `}function ol(e){if(!e||typeof e!="object")return null;let t="nodes"in e?e.nodes?.[0]??null:e;if(!t||typeof t!="object")return null;let r=t,s=r.statusCheckRollup?.contexts?.nodes??r.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[];return{number:r.number,url:r.url,baseRefName:r.baseRefName,headRefName:r.headRefName,headRefOid:r.headRefOid??null,state:r.state,isDraft:r.isDraft??!1,title:r.title??null,createdAt:r.createdAt??null,updatedAt:r.updatedAt??null,mergedAt:r.mergedAt??null,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,statusCheckRollup:s}}async function Qr(e,t,r,s){let o=al(r,s),p=Hn(t,o),v=sl(p.prs),i={...p,status:v};await Gn(e,i);let c=await ue(e,t.id),d=c.status==="closed"?c.status:v,w=Hn({...c,status:d},o);return await se(e,w),w}async function Gr(e,t,r,s){let o=await ue(e,t.id),p=(o.repoTargets??t.repoTargets??[]).map(i=>i.repoId===r?{...i,pullRequest:s}:i),v={...o,repoTargets:p};return await se(e,v),v}function al(e,t){let r=e.isDraft??!1,s=cl(e.state,r);return{provider:"github",owner:t?.owner??null,repo:t?.repo??null,number:e.number,url:e.url,title:e.title??t?.title??null,status:s,draft:r,baseBranch:e.baseRefName,headBranch:e.headRefName,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Xn(e.statusCheckRollup),createdAt:e.createdAt??t?.createdAt??null,updatedAt:e.updatedAt??t?.updatedAt??null,mergedAt:e.mergedAt??t?.mergedAt??null,lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Xr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:ll(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Xn(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function cl(e,t){return t?"draft":e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function ll(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Xn(e){return e.map(t=>dl(t)).filter(t=>t!==null)}function dl(e){if(typeof e!="object"||e===null)return null;let t=e,r=t.name??t.context,s=t.state??t.status??t.conclusion;return r?{name:r,status:Yn(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function Yn(e,t){let r=e?.toUpperCase()??null,s=t?.toUpperCase()??null;return s==="SKIPPED"||r==="SKIPPED"?"skipped":r==="SUCCESS"||s==="SUCCESS"||s==="NEUTRAL"?"success":r==="PENDING"||r==="EXPECTED"||r==="IN_PROGRESS"||r==="QUEUED"||r==="REQUESTED"||r==="WAITING"?"pending":r==="FAILURE"||r==="FAILED"||r==="ERROR"||r==="TIMED_OUT"||r==="CANCELLED"||r==="ACTION_REQUIRED"||r==="STARTUP_FAILURE"||s==="FAILURE"||s==="FAILED"||s==="ERROR"||s==="TIMED_OUT"||s==="CANCELLED"||s==="ACTION_REQUIRED"||s==="STARTUP_FAILURE"?"failed":r==="COMPLETED"&&s===null?"unknown":r==="COMPLETED"&&s!==null?Yn(s,s):"unknown"}async function ae(e,t){try{return await ue(e,t)}catch(r){throw ml(r)?new Error(`Craig task "${t}" was not found.`):r}}async function Pe(e){if(!await Zr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function es(e,t){return t.artifacts.logPath?Jn.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Jn.join(e.workspaceRoot,t.artifacts.logPath):null}async function Qn(e,t){let r=await Zr(t.worktreePath),s=es(e,t),o=s?await Zr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:hl(t),lastCommitSummary:fl(t),prSummary:pl(t),cleanupSummary:gl(t)}}async function Zr(e){try{return await ul(e),!0}catch{return!1}}function hl(e){let t=e.checks.commands.length,r=t===1?"command":"commands",s=e.checks.lastRunAt?` at ${e.checks.lastRunAt}`:"";return`${e.checks.status} (${t} ${r})${s}`}function fl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function pl(e){if(e.type==="project"&&e.repoTargets?.length){let o=e.repoTargets.filter(c=>c.pullRequest.number);if(o.length===0)return"not linked";let p=o.map(c=>` ${c.repoId} #${c.pullRequest.number} ${c.pullRequest.status??"unknown"}`),v=o.reduce((c,d)=>{let w=d.pullRequest.status??"unknown";return c[w]=(c[w]??0)+1,c},{}),i=Object.entries(v).map(([c,d])=>`${d} ${c}`).join(", ");return`${o.length} PR${o.length!==1?"s":""} (${i})
137
+ `}function yl(e){if(!e||typeof e!="object")return null;let t="nodes"in e?e.nodes?.[0]??null:e;if(!t||typeof t!="object")return null;let r=t,s=r.statusCheckRollup?.contexts?.nodes??r.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[];return{number:r.number,url:r.url,baseRefName:r.baseRefName,headRefName:r.headRefName,headRefOid:r.headRefOid??null,state:r.state,isDraft:r.isDraft??!1,title:r.title??null,createdAt:r.createdAt??null,updatedAt:r.updatedAt??null,mergedAt:r.mergedAt??null,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,reviewDecision:r.reviewDecision??null,statusCheckRollup:s,comments:r.comments?.nodes??[]}}async function rs(e,t,r,s){let o=vl(r,s),p=Kn(t,o),k=wl(p.prs),i={...p,status:k};await Jn(e,i);let c=await he(e,t.id),d=c.status==="closed"?c.status:k,_=Kn({...c,status:d},o);return await se(e,_),_}async function Jr(e,t,r,s){let o=await he(e,t.id),p=(o.repoTargets??t.repoTargets??[]).map(i=>i.repoId===r?{...i,pullRequest:s}:i),k={...o,repoTargets:p};return await se(e,k),k}function vl(e,t){let r=e.isDraft??!1,s=Sl(e.state,r);return{provider:"github",owner:t?.owner??null,repo:t?.repo??null,number:e.number,url:e.url,title:e.title??t?.title??null,status:s,draft:r,baseBranch:e.baseRefName,headBranch:e.headRefName,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ei(e.reviewDecision??null),requiredChecks:Zn(e.statusCheckRollup),comments:ti(e.comments),createdAt:e.createdAt??t?.createdAt??null,updatedAt:e.updatedAt??t?.updatedAt??null,mergedAt:e.mergedAt??t?.mergedAt??null,lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Zr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:Tl(e.state),draft:e.isDraft??!1,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ei(e.reviewDecision??null),requiredChecks:Zn(e.statusCheckRollup),comments:ti(e.comments),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Sl(e,t){return t?"draft":e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Tl(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Zn(e){let t=e.map(s=>Rl(s)).filter(s=>s!==null),r=new Map;for(let s of t){let o=r.get(s.name);(!o||Cl(o,s))&&r.set(s.name,s)}return[...r.values()].map(s=>({name:s.name,status:s.status,conclusion:s.conclusion}))}function Rl(e){if(typeof e!="object"||e===null)return null;let t=e,r=t.name??t.context,s=t.state??t.status??t.conclusion;return r?{name:r,status:ri(s??null,t.conclusion??null),conclusion:t.conclusion??null,sortTime:Pl(t)}:null}function Cl(e,t){return e.sortTime!==null||t.sortTime!==null?(t.sortTime??0)>=(e.sortTime??0):sr(e)&&!sr(t)?!0:!sr(e)&&sr(t)?!1:Vn(t.status)>=Vn(e.status)}function sr(e){return e.conclusion?.toUpperCase()==="CANCELLED"}function Vn(e){switch(e){case"pending":return 5;case"failed":return 4;case"success":return 3;case"skipped":return 2;default:return 1}}function Pl(e){let t=e.completedAt??e.startedAt??e.createdAt??null;if(!t)return null;let r=new Date(t).getTime();return Number.isFinite(r)?r:null}function ei(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function ti(e){let t=Array.isArray(e)?e:e?.nodes;return Array.isArray(t)?t.map(Il).filter(r=>r!==null).slice(-4):[]}function Il(e){if(typeof e!="object"||e===null)return null;let t=e,r=xl(t.bodyText??t.body??"");return r?{author:typeof t.author=="string"?t.author:t.author?.login??null,body:r,createdAt:t.createdAt??null,url:t.url??null}:null}function xl(e){return e.replace(/\s+/g," ").trim()}function ri(e,t){let r=e?.toUpperCase()??null,s=t?.toUpperCase()??null;return s==="SKIPPED"||r==="SKIPPED"?"skipped":r==="SUCCESS"||s==="SUCCESS"||s==="NEUTRAL"?"success":r==="PENDING"||r==="EXPECTED"||r==="IN_PROGRESS"||r==="QUEUED"||r==="REQUESTED"||r==="WAITING"?"pending":r==="FAILURE"||r==="FAILED"||r==="ERROR"||r==="TIMED_OUT"||r==="CANCELLED"||r==="ACTION_REQUIRED"||r==="STARTUP_FAILURE"||s==="FAILURE"||s==="FAILED"||s==="ERROR"||s==="TIMED_OUT"||s==="CANCELLED"||s==="ACTION_REQUIRED"||s==="STARTUP_FAILURE"?"failed":r==="COMPLETED"&&s===null?"unknown":r==="COMPLETED"&&s!==null?ri(s,s):"unknown"}async function ae(e,t){try{return await he(e,t)}catch(r){throw Ol(r)?new Error(`Craig task "${t}" was not found.`):r}}async function Ie(e){if(!await ss(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function ns(e,t){return t.artifacts.logPath?si.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:si.join(e.workspaceRoot,t.artifacts.logPath):null}async function ni(e,t){let r=await ss(t.worktreePath),s=ns(e,t),o=s?await ss(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:Al(t),lastCommitSummary:Dl(t),prSummary:Ll(t),cleanupSummary:Ml(t)}}async function ss(e){try{return await El(e),!0}catch{return!1}}function Al(e){let t=e.checks.commands.length,r=t===1?"command":"commands",s=e.checks.lastRunAt?` at ${e.checks.lastRunAt}`:"";return`${e.checks.status} (${t} ${r})${s}`}function Dl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Ll(e){if(e.type==="project"&&e.repoTargets?.length){let o=e.repoTargets.filter(c=>c.pullRequest.number);if(o.length===0)return"not linked";let p=o.map(c=>` ${c.repoId} #${c.pullRequest.number} ${c.pullRequest.status??"unknown"}`),k=o.reduce((c,d)=>{let _=d.pullRequest.status??"unknown";return c[_]=(c[_]??0)+1,c},{}),i=Object.entries(k).map(([c,d])=>`${d} ${c}`).join(", ");return`${o.length} PR${o.length!==1?"s":""} (${i})
120
138
  ${p.join(`
121
- `)}`}let t=he(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function gl(e){return e.status!=="merged"?"not merged":e.cleanup.warning?`warning: ${e.cleanup.warning}`:e.cleanup.preservedWorktree?"preserved worktree":e.cleanup.worktreeRemovedAt?`worktree removed at ${e.cleanup.worktreeRemovedAt}`:"cleanup pending"}function ml(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Zn(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([De(e,r.repoId),mt(e,r.sessionId)]),p=await Tt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:p.id,disposition:"attached"}}Te();async function ti(e,t){let r=await ae(e,t),s=he(r);return s?.number?(await Et(r.worktreePath),sr(s)?(await Jr(e,r)).task:Yr(e,r)):r}async function ir(e,t){let r=await ae(e,t),s=(r.repoTargets??[]).filter(v=>v.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let v of s){await Et(v.worktreePath);let i=v.pullRequest.number?await At(e,r,v):await At(e,r,v).catch(()=>"not_found");o[i==="not_found"?"notFound":i]++}let p=await ue(e,r.id);return p.status!=="closed"&&(p.status=si(p),await se(e,p)),o}async function ri(e,t){let r=new Map,s=new Map;for(let o of t){let p=ts(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let d of o.repoTargets.filter(w=>w.status==="ready")){let w={id:`${o.id}:${d.repoId}`,task:o,targetRepoId:d.repoId,worktreePath:d.worktreePath,selector:d.pullRequest.number?String(d.pullRequest.number):d.branch,mode:d.pullRequest.number?"number":"head"};await ei(s,w).catch(async()=>{try{let a=d.pullRequest.number?await At(e,o,d):await At(e,o,d).catch(()=>"not_found");nr(p,a,d.pullRequest.number??null,d.pullRequest.url??null)}catch{}})}continue}let v=he(o),i=v?.number&&!sr(v),c={id:o.id,task:o,worktreePath:o.worktreePath,selector:i?String(v.number):o.branch,mode:i?"number":"head"};await ei(s,c).catch(async()=>{try{let{disposition:d,task:w}=await rs(e,o.id),a=he(w);nr(p,d,a?.number??null,a?.url??null)}catch{}})}for(let o of s.values())try{await Et(o.worktreePath);let p=await Kn(o.worktreePath,o.repository,o.items),v=new Map(p.map(i=>[i.id,i]));for(let i of o.items){let c=ts(r,i.task),d=v.get(i.id);if(!d?.found||!d.view){nr(c,"not_found",null,null);continue}i.targetRepoId?await Vn(e,i.task,i.targetRepoId,d.view):await zn(e,i.task,d.view),nr(c,i.mode==="number"?"synced":"discovered",d.view.number,d.view.url)}}catch{}for(let o of t.filter(p=>p.type==="project"&&p.repoTargets?.length)){let p=await ue(e,o.id);p.status!=="closed"&&(p.status=si(p),await se(e,p))}return t.map(o=>ts(r,o))}async function rs(e,t){let r=await ae(e,t);await Pe(r),await Et(r.worktreePath);let s=he(r);if(s?.number&&!sr(s))return{disposition:"synced",task:await Yr(e,r)};let o=await Jr(e,r);return{disposition:o.discovered?"discovered":"not_found",task:o.task}}function si(e){let t=(e.repoTargets??[]).filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?e.status:r.every(s=>s.status==="merged")?"merged":r.length===t.length&&r.every(_l)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function ei(e,t){let r=await qn(t.worktreePath);if(!r)throw new Error("GitHub repository remote could not be parsed.");let s=`${r.owner}/${r.name}`,o=e.get(s);if(o){o.items.push(t);return}e.set(s,{worktreePath:t.worktreePath,repository:r,items:[t]})}function ts(e,t){let r=e.get(t.id);if(r)return r;let s={taskId:t.id,synced:0,discovered:0,notFound:0,hadPr:t.type==="project"?!!t.repoTargets?.some(o=>o.pullRequest.number):!!he(t)?.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function nr(e,t,r,s){if(t==="synced"){e.synced+=1;return}if(t==="discovered"){e.discovered+=1,e.firstDiscoveredPrNumber??=r,e.firstDiscoveredPrUrl??=s;return}e.notFound+=1}function _l(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function ss(e,t){let r=await ae(e,t);try{r.type==="project"&&r.repoTargets?.length?(await ir(e,t),r=await ae(e,t)):r.prs.some(p=>p.number)&&(r=await ti(e,t))}catch{}let s=await Qn(e,r),o=r.sessionId?await mt(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as wl}from"node:fs/promises";async function ns(e,t){let r=await ae(e,t),s=es(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await wl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ce();async function is(e,t){let r=await ae(e,t);if(await Pe(r),(await te("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await bl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function bl(e){let t=[],r=await te("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await kl(e);for(let o of s){let p=await oe("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(p.stdout.trimEnd())}return t.join(`
139
+ `)}`}let t=pe(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function Ml(e){return e.status!=="merged"?"not merged":e.cleanup.warning?`warning: ${e.cleanup.warning}`:e.cleanup.preservedWorktree?"preserved worktree":e.cleanup.worktreeRemovedAt?`worktree removed at ${e.cleanup.worktreeRemovedAt}`:"cleanup pending"}function Ol(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function ii(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([Le(e,r.repoId),mt(e,r.sessionId)]),p=await Tt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:p.id,disposition:"attached"}}Re();async function ai(e,t){let r=await ae(e,t),s=pe(r);return s?.number?(await Et(r.worktreePath),ir(s)?(await ts(e,r)).task:es(e,r)):r}async function ar(e,t){let r=await ae(e,t),s=(r.repoTargets??[]).filter(k=>k.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let k of s){await Et(k.worktreePath);let i=k.pullRequest.number?await At(e,r,k):await At(e,r,k).catch(()=>"not_found");o[i==="not_found"?"notFound":i]++}let p=await he(e,r.id);return p.status!=="closed"&&(p.status=li(p),await se(e,p)),o}async function ci(e,t){let r=new Map,s=new Map;for(let o of t){let p=is(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let d of o.repoTargets.filter(_=>_.status==="ready")){let _={id:`${o.id}:${d.repoId}`,task:o,targetRepoId:d.repoId,worktreePath:d.worktreePath,selector:d.pullRequest.number?String(d.pullRequest.number):d.branch,mode:d.pullRequest.number?"number":"head"};await oi(s,_).catch(async()=>{try{let a=d.pullRequest.number?await At(e,o,d):await At(e,o,d).catch(()=>"not_found");or(p,a,d.pullRequest.number??null,d.pullRequest.url??null)}catch{}})}continue}let k=pe(o),i=k?.number&&!ir(k),c={id:o.id,task:o,worktreePath:o.worktreePath,selector:i?String(k.number):o.branch,mode:i?"number":"head"};await oi(s,c).catch(async()=>{try{let{disposition:d,task:_}=await os(e,o.id),a=pe(_);or(p,d,a?.number??null,a?.url??null)}catch{}})}for(let o of s.values())try{await Et(o.worktreePath);let p=await Xn(o.worktreePath,o.repository,o.items),k=new Map(p.map(i=>[i.id,i]));for(let i of o.items){let c=is(r,i.task),d=k.get(i.id);if(!d?.found||!d.view){or(c,"not_found",null,null);continue}i.targetRepoId?await Qn(e,i.task,i.targetRepoId,d.view):await Yn(e,i.task,d.view),or(c,i.mode==="number"?"synced":"discovered",d.view.number,d.view.url)}}catch{}for(let o of t.filter(p=>p.type==="project"&&p.repoTargets?.length)){let p=await he(e,o.id);p.status!=="closed"&&(p.status=li(p),await se(e,p))}return t.map(o=>is(r,o))}async function os(e,t){let r=await ae(e,t);await Ie(r),await Et(r.worktreePath);let s=pe(r);if(s?.number&&!ir(s))return{disposition:"synced",task:await es(e,r)};let o=await ts(e,r);return{disposition:o.discovered?"discovered":"not_found",task:o.task}}function li(e){let t=(e.repoTargets??[]).filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?e.status:r.every(s=>s.status==="merged")?"merged":r.length===t.length&&r.every(Bl)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function oi(e,t){let r=await Gn(t.worktreePath);if(!r)throw new Error("GitHub repository remote could not be parsed.");let s=`${r.owner}/${r.name}`,o=e.get(s);if(o){o.items.push(t);return}e.set(s,{worktreePath:t.worktreePath,repository:r,items:[t]})}function is(e,t){let r=e.get(t.id);if(r)return r;let s={taskId:t.id,synced:0,discovered:0,notFound:0,hadPr:t.type==="project"?!!t.repoTargets?.some(o=>o.pullRequest.number):!!pe(t)?.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function or(e,t,r,s){if(t==="synced"){e.synced+=1;return}if(t==="discovered"){e.discovered+=1,e.firstDiscoveredPrNumber??=r,e.firstDiscoveredPrUrl??=s;return}e.notFound+=1}function Bl(e){return e.mergeable&&e.reviewDecision!=="REVIEW_REQUIRED"&&e.reviewDecision!=="CHANGES_REQUESTED"&&e.mergeStateStatus!=="REVIEW_REQUIRED"&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function as(e,t){let r=await ae(e,t);try{r.type==="project"&&r.repoTargets?.length?(await ar(e,t),r=await ae(e,t)):r.prs.some(p=>p.number)&&(r=await ai(e,t))}catch{}let s=await ni(e,r),o=r.sessionId?await mt(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as $l}from"node:fs/promises";async function cs(e,t){let r=await ae(e,t),s=ns(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await $l(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Pe();async function ls(e,t){let r=await ae(e,t);if(await Ie(r),(await ee("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Fl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Fl(e){let t=[],r=await ee("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Nl(e);for(let o of s){let p=await oe("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(p.stdout.trimEnd())}return t.join(`
122
140
 
123
- `)}async function kl(e){return(await te("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
124
- `).map(r=>r.trim()).filter(r=>r.length>0)}async function os(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await mt(e,r.sessionId).catch(o=>{throw yl(o)?new Error(`Task ${r.id} does not have a Craig session.`):o});if(!s.paneId)throw new Error(`Task ${r.id} does not have a tmux target.`);return await Vt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function yl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as vl}from"node:child_process";async function as(e,t){let r=await ae(e,t);await Pe(r);let o=(await Ne(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let p=[...o,r.worktreePath];return await Sl(p,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:p}}async function Sl(e,t){await new Promise((r,s)=>{let[o,...p]=e,v=vl(o,p,{cwd:t,stdio:"inherit"});v.on("error",s),v.on("exit",i=>{if(i===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${i??"unknown"}.`))})})}We();import{mkdir as Tl}from"node:fs/promises";import Rl from"node:path";Te();Ce();async function cs(e,t){let r=await ae(e,t);if(await Pe(r),r.status==="draft"||r.status==="merged")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);if(r.status==="running"&&await Jt(r.worktreePath)&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);let o=(await Ne(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await se(e,r);let p=[];for(let v of o){let i=new Date().toISOString(),c=await oe("sh",["-lc",v],{cwd:r.worktreePath}),d=new Date().toISOString(),w=c.exitCode??1;if(p.push({command:v,startedAt:i,finishedAt:d,exitCode:w}),w!==0)return r.checks.results=p,r.checks.status="failed",r.checks.lastRunAt=d,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${v}`,await ni(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=p,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await ni(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function ni(e,t){let r=tr(e,t.artifacts.checkSummaryPath);r&&(await Tl(Rl.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}Te();async function ls(e,t){let r=await ae(e,t);await Pe(r);let s=await Jt(r.worktreePath);if(r.status==="running"&&s&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot commit from status "${r.status}".`);if(!s)throw new Error(`Task ${r.id} has no uncommitted diff to commit.`);let o=r.prompt.value.trim();await In(r.worktreePath),await xn(r.worktreePath,o);let p=await En(r.worktreePath);return r.lastCommit={sha:p.sha,message:p.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await se(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:p.sha,message:p.message}}ot();dt();Ct();wt();xt();Ot();Ce();import Ll from"node:path";import{stat as Ml}from"node:fs/promises";async function pi(e,t){let r=Ll.resolve(e.workspaceRoot,t);if(!(await Ml(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Ot(),fi)).then(({addWorkspace:v})=>v(e,t)),p=o.repos[0];if(!p||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:p,workspaceId:o.workspace.id,created:o.created}}async function gi(e){return{kind:"listRepos",repos:await lt(e)}}async function mi(e,t){let r=await De(e,t),o=(await Le(e)).filter(d=>d.primaryRepoId===t),p=o.filter(d=>d.status==="active"),v=await He(e,{repoId:t});if(p.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(v.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(d=>or(e,d.id))),await Tn(e,t);let i=await Se(e);await it(e,{...i,repoIds:i.repoIds.filter(d=>d!==t)});let c=await Ae({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Re({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}dt();Te();async function _i(e,t,r){let[s,o]=await Promise.all([ae(e,t),De(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let p=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await se(e,{...s,linkedRepoIds:p}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:p}}async function wi(e,t){let r=await ae(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>De(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Ot();async function bi(e,t){switch(e.kind){case"addWorkspace":return Dt(t.paths,e.path);case"addRepo":return pi(t.paths,e.path);case"listRepos":return gi(t.paths);case"removeRepo":return mi(t.paths,e.repoId);case"listWorkspaces":return ds(t.paths,{archived:e.archived});case"archiveWorkspace":return Lt(t.paths,e.workspaceId);case"restoreWorkspace":return us(t.paths,e.workspaceId);case"removeWorkspace":return Mt(t.paths,e.workspaceId);case"createTask":return Wn(t.paths,e.repoId??e.workspaceId??"",e.prompt,{...e.runner?{runner:e.runner}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}});case"listTasks":return e.repoId||e.workspaceId?He(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):He(t.paths);case"attachTask":return Zn(t.paths,e.taskId);case"addTaskLink":return _i(t.paths,e.taskId,e.repoId);case"listTaskLinks":return wi(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return ss(t.paths,e.taskId);case"showSelectedTask":return ss(t.paths,ut(t,"show"));case"streamTaskLogs":return ns(t.paths,e.taskId);case"streamSelectedTaskLogs":return ns(t.paths,ut(t,"logs"));case"showTaskDiff":return is(t.paths,e.taskId);case"showSelectedTaskDiff":return is(t.paths,ut(t,"diff"));case"focusTask":return os(t.paths,e.taskId);case"focusSelectedTask":return os(t.paths,ut(t,"focus"));case"openTask":return as(t.paths,e.taskId);case"openSelectedTask":return as(t.paths,ut(t,"open"));case"runChecks":return cs(t.paths,e.taskId);case"runSelectedTaskChecks":return cs(t.paths,ut(t,"check"));case"commitTask":return ls(t.paths,e.taskId);case"commitSelectedTask":return ls(t.paths,ut(t,"commit"));case"help":return{kind:"help",text:_e()};case"exit":return{kind:"exit"};default:return Ol(e)}}function Ol(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function ut(e,t){if(e.selectedTaskId)return e.selectedTaskId;throw new Error(`No task selected. Create a task with 'task new --repo <repo-id> <prompt>' or use '${t} <id>'.`)}We();import{mkdir as Ue,readFile as Bl}from"node:fs/promises";import ye from"node:path";function ze(e){let t=ye.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ye.join(t,"index.json"),reposDir:ye.join(t,"repos"),workspacesDir:ye.join(t,"workspaces"),sessionsDir:ye.join(t,"sessions"),runtimeDir:ye.join(t,"runtime"),uiStateFile:ye.join(t,"runtime","ui-state.json"),tasksDir:ye.join(t,"tasks"),jobsDir:ye.join(t,"jobs"),logsDir:ye.join(t,"logs"),artifactsDir:ye.join(t,"artifacts"),worktreesDir:ye.join(t,"worktrees"),configFile:ye.join(t,"config.json")}}ot();async function kt(e){let t=ze(e);await Ue(t.craigDir,{recursive:!0}),await Promise.all([Ue(t.reposDir,{recursive:!0}),Ue(t.workspacesDir,{recursive:!0}),Ue(t.sessionsDir,{recursive:!0}),Ue(t.runtimeDir,{recursive:!0}),Ue(t.tasksDir,{recursive:!0}),Ue(t.jobsDir,{recursive:!0}),Ue(t.logsDir,{recursive:!0}),Ue(t.artifactsDir,{recursive:!0}),Ue(t.worktreesDir,{recursive:!0})]);try{let o=await Bl(t.indexFile,"utf8"),p=JSON.parse(o);return Wr(p,e,t.indexFile)}catch(o){if(!$l(o))throw o instanceof SyntaxError?new Error(`Craig index at ${t.indexFile} is malformed. Remove or repair the file before rerunning Craig.`):o}let r=new Date().toISOString(),s={version:2,workspaceRoot:e,repoIds:[],workspaceIds:[],taskIds:[],jobIds:[],createdAt:r,updatedAt:r};return await de(t.indexFile,s),s}function $l(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function ki(e){switch(e.kind){case"createWorkspace":return[`${e.created?"Registered":"Updated"} ${e.workspace.kind??"repo"} workspace ${e.workspace.id}`,`Path: ${e.workspace.rootPath??""}`,`Repos: ${e.repos.map(t=>t.id).join(", ")}`].join(`
141
+ `)}async function Nl(e){return(await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
142
+ `).map(r=>r.trim()).filter(r=>r.length>0)}async function ds(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await mt(e,r.sessionId).catch(o=>{throw Wl(o)?new Error(`Task ${r.id} does not have a Craig session.`):o});if(!s.paneId)throw new Error(`Task ${r.id} does not have a tmux target.`);return await Gt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Wl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as jl}from"node:child_process";async function us(e,t){let r=await ae(e,t);await Ie(r);let o=(await Ne(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let p=[...o,r.worktreePath];return await Hl(p,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:p}}async function Hl(e,t){await new Promise((r,s)=>{let[o,...p]=e,k=jl(o,p,{cwd:t,stdio:"inherit"});k.on("error",s),k.on("exit",i=>{if(i===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${i??"unknown"}.`))})})}We();import{mkdir as Ul}from"node:fs/promises";import ql from"node:path";Re();Pe();async function hs(e,t){let r=await ae(e,t);if(await Ie(r),r.status==="draft"||r.status==="merged")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);if(r.status==="running"&&await Jt(r.worktreePath)&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);let o=(await Ne(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await se(e,r);let p=[];for(let k of o){let i=new Date().toISOString(),c=await oe("sh",["-lc",k],{cwd:r.worktreePath}),d=new Date().toISOString(),_=c.exitCode??1;if(p.push({command:k,startedAt:i,finishedAt:d,exitCode:_}),_!==0)return r.checks.results=p,r.checks.status="failed",r.checks.lastRunAt=d,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${k}`,await di(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=p,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await di(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function di(e,t){let r=rr(e,t.artifacts.checkSummaryPath);r&&(await Ul(ql.dirname(r),{recursive:!0}),await ue(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}Re();async function fs(e,t){let r=await ae(e,t);await Ie(r);let s=await Jt(r.worktreePath);if(r.status==="running"&&s&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot commit from status "${r.status}".`);if(!s)throw new Error(`Task ${r.id} has no uncommitted diff to commit.`);let o=r.prompt.value.trim();await An(r.worktreePath),await Dn(r.worktreePath,o);let p=await Ln(r.worktreePath);return r.lastCommit={sha:p.sha,message:p.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await se(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:p.sha,message:p.message}}ot();dt();Ct();wt();xt();Ot();Pe();import Jl from"node:path";import{stat as Zl}from"node:fs/promises";async function ki(e,t){let r=Jl.resolve(e.workspaceRoot,t);if(!(await Zl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Ot(),bi)).then(({addWorkspace:k})=>k(e,t)),p=o.repos[0];if(!p||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:p,workspaceId:o.workspace.id,created:o.created}}async function yi(e){return{kind:"listRepos",repos:await lt(e)}}async function vi(e,t){let r=await Le(e,t),o=(await Me(e)).filter(d=>d.primaryRepoId===t),p=o.filter(d=>d.status==="active"),k=await He(e,{repoId:t});if(p.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(k.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(d=>cr(e,d.id))),await Pn(e,t);let i=await Te(e);await it(e,{...i,repoIds:i.repoIds.filter(d=>d!==t)});let c=await De({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Ce({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}dt();Re();async function Si(e,t,r){let[s,o]=await Promise.all([ae(e,t),Le(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let p=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await se(e,{...s,linkedRepoIds:p}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:p}}async function Ti(e,t){let r=await ae(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Le(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Ot();async function Ri(e,t){switch(e.kind){case"addWorkspace":return Dt(t.paths,e.path);case"addRepo":return ki(t.paths,e.path);case"listRepos":return yi(t.paths);case"removeRepo":return vi(t.paths,e.repoId);case"listWorkspaces":return ps(t.paths,{archived:e.archived});case"archiveWorkspace":return Lt(t.paths,e.workspaceId);case"restoreWorkspace":return gs(t.paths,e.workspaceId);case"removeWorkspace":return Mt(t.paths,e.workspaceId);case"createTask":return Un(t.paths,e.repoId??e.workspaceId??"",e.prompt,{...e.runner?{runner:e.runner}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}});case"listTasks":return e.repoId||e.workspaceId?He(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):He(t.paths);case"attachTask":return ii(t.paths,e.taskId);case"addTaskLink":return Si(t.paths,e.taskId,e.repoId);case"listTaskLinks":return Ti(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return as(t.paths,e.taskId);case"showSelectedTask":return as(t.paths,ut(t,"show"));case"streamTaskLogs":return cs(t.paths,e.taskId);case"streamSelectedTaskLogs":return cs(t.paths,ut(t,"logs"));case"showTaskDiff":return ls(t.paths,e.taskId);case"showSelectedTaskDiff":return ls(t.paths,ut(t,"diff"));case"focusTask":return ds(t.paths,e.taskId);case"focusSelectedTask":return ds(t.paths,ut(t,"focus"));case"openTask":return us(t.paths,e.taskId);case"openSelectedTask":return us(t.paths,ut(t,"open"));case"runChecks":return hs(t.paths,e.taskId);case"runSelectedTaskChecks":return hs(t.paths,ut(t,"check"));case"commitTask":return fs(t.paths,e.taskId);case"commitSelectedTask":return fs(t.paths,ut(t,"commit"));case"help":return{kind:"help",text:be()};case"exit":return{kind:"exit"};default:return ed(e)}}function ed(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function ut(e,t){if(e.selectedTaskId)return e.selectedTaskId;throw new Error(`No task selected. Create a task with 'task new --repo <repo-id> <prompt>' or use '${t} <id>'.`)}We();import{mkdir as Ue,readFile as td}from"node:fs/promises";import ve from"node:path";function ze(e){let t=ve.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ve.join(t,"index.json"),reposDir:ve.join(t,"repos"),workspacesDir:ve.join(t,"workspaces"),sessionsDir:ve.join(t,"sessions"),runtimeDir:ve.join(t,"runtime"),uiStateFile:ve.join(t,"runtime","ui-state.json"),tasksDir:ve.join(t,"tasks"),jobsDir:ve.join(t,"jobs"),logsDir:ve.join(t,"logs"),artifactsDir:ve.join(t,"artifacts"),worktreesDir:ve.join(t,"worktrees"),configFile:ve.join(t,"config.json")}}ot();async function kt(e){let t=ze(e);await Ue(t.craigDir,{recursive:!0}),await Promise.all([Ue(t.reposDir,{recursive:!0}),Ue(t.workspacesDir,{recursive:!0}),Ue(t.sessionsDir,{recursive:!0}),Ue(t.runtimeDir,{recursive:!0}),Ue(t.tasksDir,{recursive:!0}),Ue(t.jobsDir,{recursive:!0}),Ue(t.logsDir,{recursive:!0}),Ue(t.artifactsDir,{recursive:!0}),Ue(t.worktreesDir,{recursive:!0})]);try{let o=await td(t.indexFile,"utf8"),p=JSON.parse(o);return qr(p,e,t.indexFile)}catch(o){if(!rd(o))throw o instanceof SyntaxError?new Error(`Craig index at ${t.indexFile} is malformed. Remove or repair the file before rerunning Craig.`):o}let r=new Date().toISOString(),s={version:2,workspaceRoot:e,repoIds:[],workspaceIds:[],taskIds:[],jobIds:[],createdAt:r,updatedAt:r};return await ue(t.indexFile,s),s}function rd(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function Ci(e){switch(e.kind){case"createWorkspace":return[`${e.created?"Registered":"Updated"} ${e.workspace.kind??"repo"} workspace ${e.workspace.id}`,`Path: ${e.workspace.rootPath??""}`,`Repos: ${e.repos.map(t=>t.id).join(", ")}`].join(`
125
143
  `);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
126
144
  `);case"listRepos":return e.repos.length===0?"No repos registered yet. Use 'craig repo add <path>'.":["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
127
145
  `);case"removeRepo":return`Removed repo ${e.repoId} (${e.rootPath})`;case"listWorkspaces":return e.workspaces.length===0?e.archivedOnly?"No archived workspaces.":"No active workspaces yet. Register one with 'craig workspace add <path>'.":["ID KIND STATUS REPOS PATH",...e.workspaces.map(t=>`${t.id} ${t.kind??"repo"} ${t.status} ${(t.discoveredRepoIds??[t.primaryRepoId]).join(",")} ${t.rootPath??""}`)].join(`
128
146
  `);case"archiveWorkspace":return`Archived workspace ${e.workspaceId} on branch ${e.branch}`;case"restoreWorkspace":return`Restored workspace ${e.workspaceId} on branch ${e.branch}`;case"removeWorkspace":return`Removed workspace ${e.workspaceId} (${e.rootPath})`;case"createTask":return[`Created task ${e.taskId}`,`Repo: ${e.repoId}`,`Workspace: ${e.workspaceId}`,`Session: ${e.sessionId}`,`Status: ${e.status}`,`Branch: ${e.branch}`,`Worktree: ${e.worktreePath}`,`Runner: ${e.runner}`].join(`
129
147
  `);case"attachTask":return`Attached to task ${e.taskId} via session ${e.sessionId}`;case"addTaskLink":return`Linked repo ${e.repoId} to task ${e.taskId}: ${e.linkedRepoIds.join(", ")}`;case"listTaskLinks":return e.repos.length===0?`Task ${e.taskId} has no linked repos.`:["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
130
- `);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${Wl(t)} ${jl(t)} ${t.title}`)].join(`
131
- `);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...Fl(e)].join(`
148
+ `);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${id(t)} ${od(t)} ${t.title}`)].join(`
149
+ `);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...sd(e)].join(`
132
150
  `);case"streamTaskLogs":return`Streaming logs for ${e.taskId} from ${e.logPath}`;case"showTaskDiff":return e.isEmpty?`Task ${e.taskId} has no uncommitted diff.`:e.diffText;case"focusTask":return`Focused task ${e.taskId} on ${e.tmuxTarget}`;case"openTask":return e.launched?`Opened task ${e.taskId} at ${e.worktreePath}`:e.worktreePath;case"runChecks":return`Checks ${e.status} for ${e.taskId}: ${e.commands.join(", ")}`;case"commitTask":return[`Committed task ${e.taskId}`,`Status: ${e.status}`,`Commit: ${e.commitSha}`,`Message: ${e.message}`].join(`
133
- `);default:return Nl(e)}}function Fl(e){let t=[];return e.inspection.worktreeExists||e.task.status==="merged"&&!e.task.cleanup.preservedWorktree&&e.task.cleanup.worktreeRemovedAt||t.push(`Warning: worktree is missing at ${e.task.worktreePath}`),e.task.cleanup.warning&&!(e.task.status==="merged"&&!e.task.cleanup.worktreeRemovedAt)&&t.push(`Cleanup warning: ${e.task.cleanup.warning}`),e.task.artifacts.logPath&&!e.inspection.logExists&&t.push(`Warning: log file is missing at ${e.task.artifacts.logPath}`),e.inspection.recentFailureReason&&t.push(`Last failure: ${e.inspection.recentFailureReason}`),t}function Nl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function Wl(e){return e.checks.status}function jl(e){if(e.type==="project"&&e.repoTargets?.length){let r=e.repoTargets.filter(o=>o.pullRequest.number);if(r.length===0)return"-";let s=r.reduce((o,p)=>{let v=p.pullRequest.status??"unknown";return o[v]=(o[v]??0)+1,o},{});return Object.entries(s).map(([o,p])=>`${p} ${o}`).join(", ")}let t=e.prs[0];return t?.number?`#${t.number}:${t.status??"unknown"}`:"-"}dt();Ct();wt();import{createRequire as Ah}from"node:module";import{readdir as Dh,stat as Lh}from"node:fs/promises";import vt from"node:path";Te();xt();Ot();Ce();import{readFile as Hl,stat as Ul}from"node:fs/promises";import hs from"node:path";var ql=200*1024,Kl=500*1024,ar="100000";async function vi(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return zl(e,t,r);try{let s=Qe(r.selectedFilePath??null,t.filePaths),o=Qe(r.selectedDiffPath??null,t.diffPaths),p=o?await Bt(e.worktreePath):null,[v,i]=await Promise.all([lr(e.worktreePath,s),o?fs(e.worktreePath,o,t.diffRows,p):Promise.resolve(ge("No diff selected","No local changes found.","empty"))]),c=o?{[o]:i}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:v,selectedDiff:i,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function zl(e,t,r){let s=Qe(r.selectedFilePath??null,t.filePaths),o=Qe(r.selectedDiffPath??null,t.diffPaths),[p,v]=await Promise.all([Ti(e,s),(async()=>{if(!o)return ge("No diff selected","No local changes found.","empty");let c=cr(e,o),d=c?await Bt(c.target.worktreePath).catch(()=>null):null;return Ri(e,o,t.diffRows,d)})()]),i=o?{[o]:v}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:i,selectedFile:p,selectedDiff:v}}async function Si(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return Vl(e,t);try{await Pe(e);let r=await Bt(e.worktreePath),[s,o]=await Promise.all([Ci(e.worktreePath),Pi(e.worktreePath,r)]),p=[...new Set(o.map(a=>a.path))],v=Qe(t.selectedFilePath??null,s),i=Qe(t.selectedDiffPath??null,p),[c,d]=await Promise.all([lr(e.worktreePath,v),i?fs(e.worktreePath,i,o,r):Promise.resolve(ge("No diff selected","No local changes found.","empty"))]),w=i?{[i]:d}:{};return{taskId:e.id,fileRows:Ei(s),filePaths:s,diffRows:o,diffPaths:p,diffContents:w,selectedFilePath:v,selectedDiffPath:i,selectedFile:c,selectedDiff:d,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:ge("Files unavailable",s,"error"),selectedDiff:ge("Diff unavailable",s,"error"),error:s}}}async function Vl(e,t){let r=(e.repoTargets??[]).filter(k=>k.status==="ready"),s=await Promise.all(r.map(async k=>{let l=await Bt(k.worktreePath).catch(()=>null),[m,_]=await Promise.all([Ci(k.worktreePath).catch(()=>[]),Pi(k.worktreePath,l).catch(()=>[])]);return{target:k,baseRef:l,targetFiles:m,targetDiffRows:_}})),o=[],p=[];for(let{target:k,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(_=>`${k.repoId}/${_}`)),p.push(...m.map(_=>({..._,path:`${k.repoId}/${_.path}`})));let v=[...new Set(p.map(k=>k.path))].sort(),i=Qe(t.selectedFilePath??null,o),c=Qe(t.selectedDiffPath??null,v),[d,w]=await Promise.all([Ti(e,i),(async()=>{if(!c)return ge("No diff selected","No local changes found.","empty");let k=cr(e,c),l=k?s.find(m=>m.target.repoId===k.target.repoId):null;return Ri(e,c,p,l?.baseRef??null)})()]),a=c?{[c]:w}:{};return{taskId:e.id,fileRows:Ei(o),filePaths:o,diffRows:p,diffPaths:v,diffContents:a,selectedFilePath:i,selectedDiffPath:c,selectedFile:d,selectedDiff:w,error:null}}async function Ti(e,t){let r=cr(e,t);if(!r)return ge("No file selected","No Git-visible files found.","empty");let s=await lr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function Ri(e,t,r,s=null){let o=cr(e,t);return o?{...await fs(o.target.worktreePath,o.relativePath,r.filter(v=>v.path.startsWith(`${o.target.repoId}/`)).map(v=>({...v,path:v.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:ge(t,"Repo target is unavailable.","error",t)}function cr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),p=(e.repoTargets??[]).find(v=>v.repoId===r&&v.status==="ready")??null;return!p||o.length===0?null:{target:p,relativePath:o}}async function Ci(e){let t=await te("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return Ai(t.stdout)}async function Pi(e,t){let[r,s,o,p]=await Promise.all([Gl(e,t),yi(e,"staged"),yi(e,"unstaged"),Xl(e)]);return[...r,...s,...o,...p]}async function Gl(e,t){if(!t)return[];let[r,s]=await Promise.all([te("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),te("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Ii(r.stdout),p=xi(s.stdout);return o.map(v=>{let i=p.get(v.path)??{additions:null,deletions:null};return{group:"branch",path:v.path,status:v.status,additions:i.additions,deletions:i.deletions}}).sort((v,i)=>v.path.localeCompare(i.path))}async function yi(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([te("git",[...r,"--name-status"],{cwd:e}),te("git",[...r,"--numstat"],{cwd:e})]),p=Ii(s.stdout),v=xi(o.stdout);return p.map(i=>{let c=v.get(i.path)??{additions:null,deletions:null};return{group:t,path:i.path,status:i.status,additions:c.additions,deletions:c.deletions}}).sort((i,c)=>i.path.localeCompare(c.path))}async function Xl(e){let t=await te("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=Ai(t.stdout);return await Promise.all(r.map(async o=>{let p=await lr(e,o),v=p.status==="ready"?Yl(p.lines):null;return{group:"untracked",path:o,status:"A",additions:v,deletions:0}}))}function Ii(e){return e.split(`
134
- `).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...s]=t.split(" ");return{status:r,path:s.at(-1)??""}}).filter(t=>t.path.length>0)}function xi(e){let t=new Map;for(let r of e.split(`
135
- `)){let s=r.trim();if(!s)continue;let[o="-",p="-",...v]=s.split(" "),i=v.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function Bt(e){return(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function lr(e,t){if(!t)return ge("No file selected","No Git-visible files found.","empty");let r=Jl(e,t);try{let s=await Ul(r);if(s.size>ql)return ge(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await Hl(r);return Ql(o)?ge(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
136
- `),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return ge(t,o,"missing",t,null)}}async function fs(e,t,r,s=null){if(!t)return ge("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await Bt(e);if(i){let c=await te("git",["diff","--stat","--patch",`--unified=${ar}`,`${i}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
137
- ${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await te("git",["diff","--cached","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`staged
138
- ${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await te("git",["diff","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`unstaged
139
- ${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${ar}`,"--","/dev/null",t],{cwd:e});i.stdout.trim().length>0&&o.push(`untracked
140
- ${i.stdout.trimEnd()}`)}let v=o.join(`
141
-
142
- `);return v.length>Kl?ge(t,"Diff is above the 500 KB inline preview limit.","too_large",t,v.length):v.includes("\0")?ge(t,"Binary diff preview is not available in Craig.","binary",t,v.length):{path:t,status:v.length>0?"ready":"empty",title:t,lines:v.length>0?v.split(`
143
- `):["No diff for this file."],byteLength:v.length}}function Ei(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let p=0;p<o.length-1;p+=1){let v=o.slice(0,p+1).join("/");r.has(v)||(r.add(v),t.push({kind:"directory",path:v,depth:p,label:o[p]??v}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function Qe(e,t){return e&&t.includes(e)?e:t[0]??null}function Yl(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Ai(e){return[...new Set(e.split(`
144
- `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Jl(e,t){let r=hs.resolve(e,t),s=hs.resolve(e);if(r!==s&&!r.startsWith(`${s}${hs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Ql(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function ge(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Te();import{access as Zl}from"node:fs/promises";async function Di(e,t){let r=await ae(e,t),s=await ed(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await se(e,o),o}async function ed(e){try{return await Zl(e),!0}catch{return!1}}Ee();Ce();import Wt from"node:path";function Li(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"\u{F06E6} ";case"js":case"jsx":case"mjs":case"cjs":return"\u{F031E} ";case"json":case"jsonc":return"\u{F0871} ";case"md":case"mdx":return"\u{F0354} ";case"yaml":case"yml":return"\u{F0B10} ";case"sh":case"bash":case"zsh":return"\u{F018D} ";case"css":case"scss":case"sass":return"\u{F031C} ";case"html":case"htm":return"\u{F031D} ";case"py":return"\u{F0320} ";case"go":return"\u{F07D3} ";case"rs":return"\u{F1617} ";case"lock":return"\u{F033E} ";case"png":case"jpg":case"jpeg":case"gif":case"svg":case"webp":return"\u{F02E9} ";default:return"\u{F0214} "}}var Mi="\u{F024B} ",Oi="\u{F0DCF} ",Bi="\u25CB",$i="\uEA64",Fi="\uEAFE",Ni="\uEBDA",ps="\u25CB",gs="\u25CF",ms="\u2713",_s="\u2715";function Wi(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Ee();wt();Ee();var td=["tasks","center","inspector","actions"],Ki=["agent","terminal"],zi=[],ne="inspection",Km=[...Ki,...zi],Vi=["commit","push","refresh-checks","close-task"],rd=["refresh-checks","close-task"],Gi=["task","checks","pr","setup-run","actions","next-action"],Xi=["diff","files","review"];function Yi(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=bd(e?.openInspectionKind)??r,o=pt(t);return{inputMode:yd(e?.inputMode),focusedRegion:_d(e?.focusedRegion),selectedRepoId:Ve(e?.selectedRepoId),selectedWorkspaceId:Ve(e?.selectedWorkspaceId),selectedTaskId:Ve(e?.selectedTaskId),selectedPtyTabId:Ve(e?.selectedPtyTabId),selectedLeftItemId:Ed(Ve(e?.selectedTaskId)),activeTab:r?ne:Ve(e?.activeTab)??"agent",preferredPtyTabKind:kd(e?.preferredPtyTabKind),inspectorSection:$t(e?.inspectorSection,Gi,"task"),inspectionMode:wd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ve(e?.selectedFileTreePath),selectedFilePath:Ve(e?.selectedFilePath),selectedDiffPath:Ve(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:$t(e?.selectedActionId,Vi,"commit"),selectedProjectTargetId:null,selectedRunner:vd(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:sd(),centerZoomed:!1}}function sd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function Ji(e,t){return{...e??je(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function fr(e,t,r={}){let s=Id(e,t),o=io(s),p=(o?.kind==="workspace"?t.workspaces?.find(w=>w.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(w=>w.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(w=>w.id===o.id)??null:o?.kind==="task"?t.repos.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(w=>w.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(w.id))??null:null)??(p?.kind!=="project"?t.repos.find(w=>w.id===p?.primaryRepoId)??null:null)??t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(w=>w.workspaceId===p.id):i?t.tasks.filter(w=>w.repoId===i):[],d=(o?.kind==="task"?c.find(w=>w.id===o.id)??null:null)??c.find(w=>w.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...Td(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:pd(e,t,d?.id??null),...Rd(e,t,d?.id??null),selectedDiffPath:fd(e,t,d?.id??null),inspectorSection:$t(e.inspectorSection,Gi,"task")}}function Qi(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return nd(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(bs(e.selectedLeftItemId)||ks(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:ys(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return ji(e,1);if(t==="SHIFT_TAB"||t==="[")return ji(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,-1,r):Hi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,1,r):Hi(e,1,r);if(t==="PAGE_UP")return Ze(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return Ze(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return Ze(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return Ze(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??le,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Sd(e,t);return X({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Ad(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&qi(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return ws(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Ui(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return ws(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Ui(e,1)}if(et(t)){if(e.focusedRegion==="tasks"&&(bs(e.selectedLeftItemId)||ks(e.selectedLeftItemId))){let s=oo(e.selectedLeftItemId),o=ao(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Ft(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&qi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Ft(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:ld({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Nt(e,t){return{...e,terminal:t}}function Zi(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function nd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function et(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
145
- `}function eo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function to(e){return ro(e)||Ft(e)!==null}function id(e){return zi.includes(e)}function ro(e){return Ki.includes(e)}function so(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var od=["tasks","center","inspector"];function ji(e,t){return dr(e,"focusedRegion",od,t)}function ws(e,t,r){let s=dr(e,"activeTab",r&&r.length>0?r:Pd(e),t);return!s.changed||id(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Ft(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Hi(e,t,r){if(e.focusedRegion==="tasks")return ad(e,t,r.leftItemIds);if(e.focusedRegion==="center")return ws(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return no(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}return r.projectTargetIds?.length?ur(e,"selectedProjectTargetId",r.projectTargetIds,t):dr(e,"selectedActionId",rd,t)}return dr(e,"selectedActionId",Vi,t)}function ad(e,t,r){let s=ur(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=io(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let p=oo(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let v=ao(s.state.selectedLeftItemId);return v?{...s,state:{...s.state,selectedWorkspaceId:v}}:s}function Ze(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return no(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return dd(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return ud(e,t,r)}return X({state:e})}function cd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Ui(e,t){return cd(e,md(e.inspectionMode,Xi,t))}function no(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),v=Ge(p===-1?0:p+t,0,s.length-1),i=s[v]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function ld(e){if(!e.selectedFileTreePath)return e;let t=new Set(e.collapsedFileTreePaths);return t.has(e.selectedFileTreePath)?t.delete(e.selectedFileTreePath):t.add(e.selectedFileTreePath),{...e,collapsedFileTreePaths:[...t].sort((r,s)=>r.localeCompare(s)),actionMessage:null}}function dd(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),v=Ge(e[t]+r,0,p);return v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function ud(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return hd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let w=Ge(v,0,p);return w===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let w=Ge(v,0,p);return w===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}if(t>0&&v>p){let w=i[c+1]??null;return w?X({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&v<0){let w=i[c-1]??null;return w?X({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Ge(v,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function hd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=Ge(e.diffScrollOffset+t,0,p),i=gd(r.diffPathRanges??[],v)??e.selectedDiffPath;return v===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:v,selectedDiffPath:i,actionMessage:null},changed:!0})}function fd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function pd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function gd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function dr(e,t,r,s){let o=r.indexOf(e[t]),p=Ge(o+s,0,r.length-1),v=r[p];return!v||v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function ur(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),v=Ge(p===-1?0:p+s,0,r.length-1),i=r[v]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function md(e,t,r){let s=t.indexOf(e);return t[Ge(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function $t(e,t,r){return t.includes(e??"")?e:r}function _d(e){return e==="tabs"?"center":$t(e,td,"tasks")}function wd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":$t(e,Xi,t)}function bd(e){return e==="file"||e==="diff"?e:null}function kd(e){return e==="terminal"?"terminal":"agent"}function yd(e){return e==="terminal"?"terminal":"control"}function vd(e,t=[...le],r="codex"){return e&&gt(e)&&t.includes(e)?e:r}function ys(e,t=le){let r=t.length>0?t:le,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Ft(e){let t=le.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Sd(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Ft(e.activeTab)??e.preferredPtyTabKind}function Td(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(ro(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let v=o??s??e.ptyTabs[0]??null;return{activeTab:v?.id??ne,selectedPtyTabId:v?.id??null}}function Rd(e,t,r){if(!t.inspection||t.inspection.taskId!==r)return{selectedFileTreePath:e.selectedFileTreePath,collapsedFileTreePaths:e.collapsedFileTreePaths};let s=e.selectedFileTreePath??t.inspection.selectedFilePath,o=e.selectedFileTreePath===null&&e.collapsedFileTreePaths.length===0?Cd(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Cd(e,t){let r=new Set;if(t){let s=t.split("/");for(let o=1;o<s.length;o+=1)r.add(s.slice(0,o).join("/"))}return e.filter(s=>s.kind==="directory"&&!s.path.includes("/")&&!r.has(s.path)).map(s=>s.path).sort((s,o)=>s.localeCompare(o))}function Pd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function qi(e,t){return t.includes(e)}function Id(e,t){let r=xd(t);return e.selectedLeftItemId&&r.includes(e.selectedLeftItemId)?e.selectedLeftItemId:e.selectedWorkspaceId&&r.includes(`workspace:${e.selectedWorkspaceId}`)?`workspace:${e.selectedWorkspaceId}`:e.selectedTaskId&&r.includes(`task:${e.selectedTaskId}`)?`task:${e.selectedTaskId}`:e.selectedRepoId&&r.includes(`repo:${e.selectedRepoId}`)?`repo:${e.selectedRepoId}`:r[0]??null}function xd(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function io(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ve(e){return typeof e=="string"?e:null}function Ed(e){return e?`task:${e}`:null}function hr(e){return typeof e=="string"&&e.startsWith("task:")}function bs(e){return typeof e=="string"&&e.startsWith("new-task:")}function ks(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function Ad(e){return typeof e=="string"&&e.startsWith("workspace:")}function oo(e){return bs(e)?e.slice(9):null}function ao(e){return ks(e)?e.slice(19):null}function Ge(e,t,r){return Math.min(r,Math.max(t,e))}var gr="empty",fe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function uo(e,t){let r=Md(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],v=p.find(_=>_.id===e.selectedTaskId)??p[0]??null,i=v?.type==="project",c=uu(t.tasks),d=$d(e,v),w=Bd(e,v,d),a=w.find(_=>_.id===d)??w[0]??{id:"agent",label:"CODEX"},k=t.inspection?.taskId===v?.id?t.inspection:null,l=s?.name??"no repo",m=v?ve(v.runner):ve(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${ve(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${ve(e.selectedRunner)}] Enter create task Esc pause ? help`:hr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?v===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${ve(e.centerTabRunner??v?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 navigate targets R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:Wt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${Wt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:Dd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>hu(_,c[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":v?.id??"no task",repo:l,agent:m},centerTranscript:Od(d,e,s,v,e.workspaceBrowser,k,r),tabs:w,rightContext:du(s,v),rightInspection:Yd(e,v,k)}}function Dd(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return Ld(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let v=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:v,focused:v&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let w=e.selectedLeftItemId===`task:${d.id}`,a=w?"\u25B8":"\u2022",k=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${k}`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks"},m=fo(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${ve(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${ve(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let w=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${w?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function Ld(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let v=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:v,focused:v&&t.focusedRegion==="tasks"});let i=s.filter(w=>w.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let w of i){let a=t.selectedLeftItemId===`task:${w.id}`,k=a?"\u25B8":"\u2022",l=w.title.length>28?`${w.title.slice(0,25)}\u2026`:w.title,m={id:`task:${w.id}`,taskId:w.id,text:`${k} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},_=fo(w);_&&(m.prBadge=_),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${ve(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function Md(e,t){let r=e.workspaces??[];if(!e.workspaces)return null;let s=e.tasks.find(o=>o.id===t.selectedTaskId)??null;return s?r.find(o=>o.id===s.workspaceId)??null:t.selectedWorkspaceId?r.find(o=>o.id===t.selectedWorkspaceId)??null:r[0]??null}function Od(e,t,r,s,o,p=null,v=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,w)=>{let a=w===o.selectedIndex?"\u25B8":" ",k=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${k}`});return Me(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Me(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=v?.kind==="project",d=c?v.name??"this workspace":r.name,w=c?"Project Task":"Task";return Me([`No tasks in ${d}.`,"",`Press n or choose + New ${w} to create one with ${ve(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?Wd(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?jd(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Me(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Me(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function Bd(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:Fd(p)}))??[];if(!t)return[{id:gr,label:"EMPTY",active:r===gr,focused:e.focusedRegion==="center"&&r===gr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:Nd(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function $d(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:gr}function Fd(e){return e.title.toUpperCase()}function Nd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?Wt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Wd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Me(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=ho(s.path??s.title);return[{text:s.title},{text:`${s.byteLength===null?"size unknown":`${s.byteLength} bytes`} \xB7 ${s.lines.length} lines \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Hd(s.lines,r,o)]}function jd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Me(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=ho(s.path??s.title);return[{text:s.title},{text:`${t.diffPaths.length} changed files \xB7 ${s.lines.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Ud(s.lines,r,o)]}function Me(e){return e.map(t=>({text:t}))}function Hd(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,v)=>{let i=o+v+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:fe.lineNumber}},{text:" \u2502 ",style:{fg:fe.gutter}},...vs(p,r)],tone:"default"}})}function Ud(e,t,r){let s=qd(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>Kd(p,r))}function qd(e){let t=[],r=0,s=0;for(let o of e){let p=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(p){r=Number.parseInt(p[1]??"0",10),s=Number.parseInt(p[2]??"0",10);continue}if(!(o.startsWith("diff --git")||o.startsWith("index ")||o.startsWith("+++ ")||o.startsWith("--- "))&&!(o==="staged"||o==="unstaged"||o==="untracked")){if(o.startsWith("-")&&!o.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:o.slice(1),kind:"delete"}),r+=1;continue}if(o.startsWith("+")&&!o.startsWith("+++")){t.push({oldNumber:null,newNumber:s,marker:"+",text:o.slice(1),kind:"add"}),s+=1;continue}if(o.startsWith(" ")){if(r===0&&s===0)continue;t.push({oldNumber:r,newNumber:s,marker:" ",text:o.slice(1),kind:"context"}),r+=1,s+=1;continue}}}return t}function Kd(e,t){let r=co(e.oldNumber),s=co(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:fe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:fe.diffAdd}:null,v=`${o} \u2502 ${e.text}`,i=p?Vd(vs(e.text,t),p.bg,p.fallbackFg):vs(e.text,t),c=p?{fg:fe.lineNumber,bg:p.bg}:{fg:fe.lineNumber},d=p?{fg:fe.gutter,bg:p.bg}:{fg:fe.gutter};return{text:v,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function co(e){return e===null?" ":String(e).padStart(4," ")}function ho(e){let t=Wt.extname(e).toLowerCase();return[".ts",".tsx",".js",".jsx",".mjs",".cjs"].includes(t)?"javascript":[".json",".jsonc"].includes(t)?"json":[".md",".mdx"].includes(t)?"markdown":[".css",".scss"].includes(t)?"css":"plain"}function vs(e,t){return t==="diff"?zd(e):t==="markdown"?Gd(e):t==="json"?Ss(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Ss(e,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|\/\/.*$|\/\*.*?\*\/|\b(const|let|var|function|return|if|else|for|while|class|interface|type|import|export|from|async|await|new|extends|implements|switch|case|break|continue|try|catch|throw|true|false|null|undefined)\b|-?\b\d+(?:\.\d+)?\b/g):[{text:e}]}function zd(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:fe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:fe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:fe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:fe.diffMeta}}]:[{text:e}]}function Vd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Gd(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:fe.markup,bold:!0}}]:Ss(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Ss(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],v=o.index??0;v>s&&r.push({text:e.slice(s,v)}),r.push({text:p,style:Xd(p)}),s=v+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Xd(e){return e.startsWith("//")||e.startsWith("/*")?{fg:fe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:fe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:fe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:fe.markup}:{fg:fe.keyword}}function Yd(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?po(t.repoTargets??[]):o?.pullRequest??(t?he(t):null),v=[Jd(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...v,...Zd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...v,...iu(e,r)]}:{title:"",rows:[...v,...au(e,r)]}}function Jd(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let w=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:w}})}let p=Ts(t),v=Rs(t?.requiredChecks??null);return o.push({text:" "},p,{text:" "},v),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function lo(e){return[{text:" "},Ts(e),{text:" "},Rs(e.requiredChecks??null)]}function fo(e){if(e.type==="project"&&e.repoTargets?.length){let r=po(e.repoTargets);return r?lo(r):null}let t=he(e);return t?.number?lo(t):null}function po(e){let t=e.filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?null:{provider:"github",number:-1,url:null,baseBranch:null,headBranch:null,status:Qd(r),mergeable:r.length===t.length&&r.every(s=>s.mergeable),mergeStateStatus:null,requiredChecks:r.flatMap(s=>s.requiredChecks),lastSyncedAt:r.map(s=>s.lastSyncedAt).filter(s=>!!s).sort().at(-1)??null,lastSyncedHeadSha:null}}function Qd(e){return e.some(t=>t.status==="open")?"open":e.every(t=>t.status==="merged")?"merged":e.some(t=>t.status==="closed")?"closed":e[0]?.status??null}function Ts(e){return!e||!e.number?{text:Bi,style:{fg:"565f89"}}:e.status==="merged"?{text:Fi,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Ni,style:{fg:"f7768e"}}:{text:$i,style:{fg:"9ece6a"}}}function Rs(e){return!e||e.length===0?{text:ps,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:_s,style:{fg:"f7768e"}}:e.every(t=>t.status==="success"||t.status==="skipped")?{text:ms,style:{fg:"9ece6a"}}:{text:gs,style:{fg:"e0af68"}}}function Zd(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return eu(e,t);let r=he(t),s=go("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,mergeable:!1,mergeStateStatus:null,lastSyncedAt:null,requiredChecks:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),s}var pr=32;function eu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let v of s){let i=o===v.repoId,c=e.focusedRegion==="inspector"&&i,d=v.repoId.startsWith("repo_")?v.repoId.slice(5):v.repoId;if(v.status!=="ready"){let a=v.failureReason?v.failureReason.slice(0,14):v.status,k=pr-a.length-1,l=d.length>k?d.slice(0,k-1)+"\u2026":d,m=pr-l.length-a.length;r.push({id:`project-review:${v.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let w=Ts(v.pullRequest),a=Rs(v.pullRequest.requiredChecks),k=`${w.text} ${a.text}`,l=pr-k.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,_=pr-m.length-k.length,n=m+" ".repeat(Math.max(1,_));r.push({id:`project-review:${v.repoId}`,text:n+k,selected:i,focused:c,segments:[{text:n},{...w,text:w.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(v=>v.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...go("target",p.branch,p.pullRequest))),r}function go(e,t,r){let s=d=>`${e}-${d}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let v=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${v} \u2192 ${i}`,muted:!0});let c=r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";return o.push({id:s("pr-merge"),text:c,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${tu(r.lastSyncedAt)}`,muted:!0}),o.push({id:s("checks-spacer"),text:""}),o.push({id:s("checks-header"),text:"Checks"}),r.requiredChecks.length?o.push(...r.requiredChecks.map(ru)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0}),o}function tu(e){if(!e)return"--";let t=Date.now()-new Date(e).getTime(),r=Math.floor(t/1e3);if(r<60)return`${r}s ago`;let s=Math.floor(r/60);if(s<60)return`${s}m ago`;let o=Math.floor(s/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function ru(e){let{icon:t,color:r}=su(e.status),s=e.name.length>16?`${e.name.slice(0,15)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(16," ")} ${nu(e.status)}`,color:r,muted:!1}}function su(e){switch(e){case"success":return{icon:ms,color:"9ece6a"};case"pending":return{icon:gs,color:"e0af68"};case"failed":return{icon:_s,color:"f7768e"};case"skipped":return{icon:ps,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function nu(e){return e==="success"?"passing":e==="failed"?"failing":e}function iu(e,t){if(!t)return[{id:"empty",text:"No file index. Select a task with local changes.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.fileRows.length===0)return[{id:"empty",text:"No Git-visible files.",muted:!0}];let r=new Map(t.diffRows.map(p=>[p.path,p.status])),s=ou(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let v=p.kind==="file"?r.get(p.path):void 0,i=v==="A"?"9ece6a":v==="M"?"e0af68":v==="D"?"f7768e":v==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Mi:Oi:Li(p.label),d=p.kind==="file"?Wi(p.label):void 0,w=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},k=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:w},a,k];return{id:p.path,text:`${w}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function ou(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function au(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(cu(t))return lu(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>mo(p,e,t))))}return r}function cu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function lu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),v=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:v,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>mo(d,e,t,o.length+1))))}}return r}function mo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,v=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:v}}function du(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:ve(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:Wt.basename(t.worktreePath)}]:[{label:"Repo",value:e.name},{label:"Branch",value:e.defaultBranch},{label:"Task",value:"none",mutedValue:!0}]:[{label:"Repo",value:"none",mutedValue:!0}]}function uu(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function hu(e,t){return{name:ve(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var mr={width:120,height:36},Oe={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??mr.width,mr.width),height:Math.max(t??mr.height,mr.height)}}import{spawn as Mu}from"node:child_process";import{createHash as Ou}from"node:crypto";import{createServer as Bu,createConnection as Io}from"node:net";import{openSync as $u}from"node:fs";import{mkdir as Fu,readFile as Ds,rm as ft,writeFile as Nu}from"node:fs/promises";import{tmpdir as Wu}from"node:os";import yt from"node:path";import{createRequire as yu}from"node:module";var ko=Ta(wo(),1),fu=1e3,pu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function yo(e){return new ko.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:fu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function vo(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Ps(e,t){return new Promise(r=>{e.write(t,r)})}function So(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,v=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(v+i);if(!c){s.push({segments:[]});continue}let d=[];for(let w=0;w<e.cols;w+=1){let a=c.getCell(w,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:_u(a,v+i===p&&w===r.cursorX)})}s.push({segments:gu(mu(d))})}return s}function gu(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&ku(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};To(r.style)||(o.style=r.style),t.push(o)}return t}function mu(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!To(r.style))break;t-=1}return e.slice(0,t)}function _u(e,t){let r={},s=bo(e,"fg"),o=bo(e,"bg");return s&&(r.fg=s),o&&(r.bg=o),e.isBold()&&(r.bold=!0),e.isDim()&&(r.dim=!0),e.isItalic()&&(r.italic=!0),e.isUnderline()&&(r.underline=!0),(e.isInverse()||t)&&(r.inverse=!0),r}function bo(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let s=t==="fg"?e.isFgRGB():e.isBgRGB(),o=t==="fg"?e.getFgColor():e.getBgColor();return s?o.toString(16).padStart(6,"0"):pu[o]??wu(o)}function wu(e){if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),s=Math.floor(t%36/6),o=t%6;return[r,s,o].map(bu).map(p=>p.toString(16).padStart(2,"0")).join("")}if(e>=232&&e<=255){let t=8+(e-232)*10;return[t,t,t].map(r=>r.toString(16).padStart(2,"0")).join("")}return"e6e6e6"}function bu(e){return e===0?0:55+e*40}function ku(e,t){return Cs(e)===Cs(t)}function Cs(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function To(e){return Cs(e)===""}var vu=yu(import.meta.url),Su=/^CTRL_([A-Z])$/,Tu="\x1B[6n",Ru="\x1B[c",Cu="\x1B[?u",Pu={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
146
- `,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},_r=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Is(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,Ro(p,s),this.getViewState(r);let v=this.createSession(t,r,s,o);return this.sessions.set(r,v),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=Iu(t);r!==null&&this.write(r)}scrollViewport(t){let r=this.getAttachedSession();if(!r||t===0)return;let s=r.terminal.buffer.active.baseY;r.scrollbackLines=Math.max(0,Math.min(s,r.scrollbackLines-t))}resize(t){let r=this.getAttachedSession();r&&Ro(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(Is(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Is(t);this.sessions.clear(),this.attachedTabId=null}getViewState(t){if(!t)return{status:"idle",rows:[],error:null,scrolledBack:!1};let r=this.sessions.get(t);return r?{status:r.status,rows:So(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let p=this.spawn??Eu().spawn,v=yo(s),i=o??this.resolveSessionSpec(t,r),c=at({...this.env,...i.env??{}}),{executable:d,args:w}=Au(this.shell,i.command,{cwd:i.cwd,env:c}),a=p(d,w,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:i.cwd,env:Du(c)}),k={taskId:t,tabId:r,pty:a,terminal:v,status:"running",error:null,disposables:[],scrollbackLines:0};return k.disposables.push(a.onData(l=>{Lu(a,l),Ps(k.terminal,l).then(()=>{this.onUpdate?.(k.tabId)})})),k.disposables.push(a.onExit(l=>{k.status="exited",Ps(k.terminal,`\r
147
- [process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(k.tabId)})})),k}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function Iu(e){if(e.length===1)return e;let t=Pu[e];if(t!==void 0)return t;let r=Su.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function Ro(e,t){xu(e.pty,t),vo(e.terminal,t)}function Is(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function xu(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Eu(){return vu("node-pty")}function Au(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ct(t[0],r),...t.slice(1)].map(Co).join(" ")}; exec ${Co(e)} -l`;return{executable:e,args:["-lc",o]}}function Co(e){return`'${e.replaceAll("'","'\\''")}'`}function Du(e){let t={};for(let[r,s]of Object.entries(e))typeof s=="string"&&(t[r]=s);return t.TERM=t.TERM??"xterm-256color",t}function Lu(e,t){for(let r=0;r<xs(t,Tu);r+=1)e.write("\x1B[1;1R");for(let r=0;r<xs(t,Ru);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<xs(t,Cu);r+=1)e.write("\x1B[?0u")}function xs(e,t){if(t.length===0)return 0;let r=0,s=e.indexOf(t);for(;s!==-1;)r+=1,s=e.indexOf(t,s+t.length);return r}var Ls=3;async function xo(e){let t=Ms(e.paths);await ju(t,e.paths,e.spawnDaemon);let r=await Oo(t.socketPath),s=new Es(r,e);return await s.ready(),s}async function Eo(e,t={}){let r=Ms(e);await Fu(e.runtimeDir,{recursive:!0}),await ft(r.socketPath,{force:!0});let s=new As(e,t),o=Bu(p=>s.handleConnection(p));await Vu(o,r.socketPath),await Nu(r.pidPath,String(process.pid),"utf8"),await new Promise(p=>{let v=()=>{s.closeClients(),o.close(()=>p())};s.onShutdown=v,process.once("SIGTERM",v),process.once("SIGINT",v)}),await ft(r.socketPath,{force:!0}),await ft(r.pidPath,{force:!0}),s.disposeAll()}async function Ao(e){let t=Ms(e);return await br(t.socketPath)?(await Lo(t.socketPath),!0):!1}var Es=class{constructor(t,r){this.socket=t;this.options=r,t.setEncoding("utf8"),t.on("data",s=>this.handleData(String(s))),t.on("error",s=>this.rejectAll(s instanceof Error?s:new Error(String(s)))),t.on("close",()=>{this.closed=!0,this.rejectAll(new Error("Craig PTY daemon connection closed."))})}socket;nextRequestId=1;pending=new Map;viewCache=new Map;attachedTabId=null;buffer="";closed=!1;options;async ready(){if((await this.send({type:"ping"})).protocolVersion!==Ls)throw new Error("Craig PTY daemon protocol mismatch.")}async ensureSession(t,r,s){let o=await this.send({type:"ensureSession",taskId:t,tabId:r,size:s,spec:this.options.resolveSessionSpec?.(t,r)??{cwd:this.options.workspaceRoot,command:[]}});this.attachedTabId=r;let p=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,p),p}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((v,i)=>{this.pending.set(r,{resolve:v,reject:i})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
151
+ `);default:return nd(e)}}function sd(e){let t=[];return e.inspection.worktreeExists||e.task.status==="merged"&&!e.task.cleanup.preservedWorktree&&e.task.cleanup.worktreeRemovedAt||t.push(`Warning: worktree is missing at ${e.task.worktreePath}`),e.task.cleanup.warning&&!(e.task.status==="merged"&&!e.task.cleanup.worktreeRemovedAt)&&t.push(`Cleanup warning: ${e.task.cleanup.warning}`),e.task.artifacts.logPath&&!e.inspection.logExists&&t.push(`Warning: log file is missing at ${e.task.artifacts.logPath}`),e.inspection.recentFailureReason&&t.push(`Last failure: ${e.inspection.recentFailureReason}`),t}function nd(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function id(e){return e.checks.status}function od(e){if(e.type==="project"&&e.repoTargets?.length){let r=e.repoTargets.filter(o=>o.pullRequest.number);if(r.length===0)return"-";let s=r.reduce((o,p)=>{let k=p.pullRequest.status??"unknown";return o[k]=(o[k]??0)+1,o},{});return Object.entries(s).map(([o,p])=>`${p} ${o}`).join(", ")}let t=e.prs[0];return t?.number?`#${t.number}:${t.status??"unknown"}`:"-"}dt();Ct();wt();import{createRequire as Zh}from"node:module";import{readdir as ef,stat as tf}from"node:fs/promises";import vt from"node:path";Re();xt();Ot();Pe();import{readFile as ad,stat as cd}from"node:fs/promises";import ms from"node:path";var ld=200*1024,dd=500*1024,lr="100000";async function Ii(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return ud(e,t,r);try{let s=Ze(r.selectedFilePath??null,t.filePaths),o=Ze(r.selectedDiffPath??null,t.diffPaths),p=o?await Bt(e.worktreePath):null,[k,i]=await Promise.all([ur(e.worktreePath,s),o?_s(e.worktreePath,o,t.diffRows,p):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),c=o?{[o]:i}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:k,selectedDiff:i,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function ud(e,t,r){let s=Ze(r.selectedFilePath??null,t.filePaths),o=Ze(r.selectedDiffPath??null,t.diffPaths),[p,k]=await Promise.all([Ei(e,s),(async()=>{if(!o)return me("No diff selected","No local changes found.","empty");let c=dr(e,o),d=c?await Bt(c.target.worktreePath).catch(()=>null):null;return Ai(e,o,t.diffRows,d)})()]),i=o?{[o]:k}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:i,selectedFile:p,selectedDiff:k}}async function xi(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return hd(e,t);try{await Ie(e);let r=await Bt(e.worktreePath),[s,o]=await Promise.all([Di(e.worktreePath),Li(e.worktreePath,r)]),p=[...new Set(o.map(a=>a.path))],k=Ze(t.selectedFilePath??null,s),i=Ze(t.selectedDiffPath??null,p),[c,d]=await Promise.all([ur(e.worktreePath,k),i?_s(e.worktreePath,i,o,r):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),_=i?{[i]:d}:{};return{taskId:e.id,fileRows:Bi(s),filePaths:s,diffRows:o,diffPaths:p,diffContents:_,selectedFilePath:k,selectedDiffPath:i,selectedFile:c,selectedDiff:d,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:me("Files unavailable",s,"error"),selectedDiff:me("Diff unavailable",s,"error"),error:s}}}async function hd(e,t){let r=(e.repoTargets??[]).filter(b=>b.status==="ready"),s=await Promise.all(r.map(async b=>{let l=await Bt(b.worktreePath).catch(()=>null),[m,w]=await Promise.all([Di(b.worktreePath).catch(()=>[]),Li(b.worktreePath,l).catch(()=>[])]);return{target:b,baseRef:l,targetFiles:m,targetDiffRows:w}})),o=[],p=[];for(let{target:b,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(w=>`${b.repoId}/${w}`)),p.push(...m.map(w=>({...w,path:`${b.repoId}/${w.path}`})));let k=[...new Set(p.map(b=>b.path))].sort(),i=Ze(t.selectedFilePath??null,o),c=Ze(t.selectedDiffPath??null,k),[d,_]=await Promise.all([Ei(e,i),(async()=>{if(!c)return me("No diff selected","No local changes found.","empty");let b=dr(e,c),l=b?s.find(m=>m.target.repoId===b.target.repoId):null;return Ai(e,c,p,l?.baseRef??null)})()]),a=c?{[c]:_}:{};return{taskId:e.id,fileRows:Bi(o),filePaths:o,diffRows:p,diffPaths:k,diffContents:a,selectedFilePath:i,selectedDiffPath:c,selectedFile:d,selectedDiff:_,error:null}}async function Ei(e,t){let r=dr(e,t);if(!r)return me("No file selected","No Git-visible files found.","empty");let s=await ur(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function Ai(e,t,r,s=null){let o=dr(e,t);return o?{...await _s(o.target.worktreePath,o.relativePath,r.filter(k=>k.path.startsWith(`${o.target.repoId}/`)).map(k=>({...k,path:k.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:me(t,"Repo target is unavailable.","error",t)}function dr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),p=(e.repoTargets??[]).find(k=>k.repoId===r&&k.status==="ready")??null;return!p||o.length===0?null:{target:p,relativePath:o}}async function Di(e){let t=await ee("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return $i(t.stdout)}async function Li(e,t){let[r,s,o,p]=await Promise.all([fd(e,t),Pi(e,"staged"),Pi(e,"unstaged"),pd(e)]);return[...r,...s,...o,...p]}async function fd(e,t){if(!t)return[];let[r,s]=await Promise.all([ee("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),ee("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Mi(r.stdout),p=Oi(s.stdout);return o.map(k=>{let i=p.get(k.path)??{additions:null,deletions:null};return{group:"branch",path:k.path,status:k.status,additions:i.additions,deletions:i.deletions}}).sort((k,i)=>k.path.localeCompare(i.path))}async function Pi(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([ee("git",[...r,"--name-status"],{cwd:e}),ee("git",[...r,"--numstat"],{cwd:e})]),p=Mi(s.stdout),k=Oi(o.stdout);return p.map(i=>{let c=k.get(i.path)??{additions:null,deletions:null};return{group:t,path:i.path,status:i.status,additions:c.additions,deletions:c.deletions}}).sort((i,c)=>i.path.localeCompare(c.path))}async function pd(e){let t=await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=$i(t.stdout);return await Promise.all(r.map(async o=>{let p=await ur(e,o),k=p.status==="ready"?gd(p.lines):null;return{group:"untracked",path:o,status:"A",additions:k,deletions:0}}))}function Mi(e){return e.split(`
152
+ `).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...s]=t.split(" ");return{status:r,path:s.at(-1)??""}}).filter(t=>t.path.length>0)}function Oi(e){let t=new Map;for(let r of e.split(`
153
+ `)){let s=r.trim();if(!s)continue;let[o="-",p="-",...k]=s.split(" "),i=k.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function Bt(e){return(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function ur(e,t){if(!t)return me("No file selected","No Git-visible files found.","empty");let r=md(e,t);try{let s=await cd(r);if(s.size>ld)return me(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await ad(r);return _d(o)?me(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
154
+ `),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return me(t,o,"missing",t,null)}}async function _s(e,t,r,s=null){if(!t)return me("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await Bt(e);if(i){let c=await ee("git",["diff","--stat","--patch",`--unified=${lr}`,`${i}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
155
+ ${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await ee("git",["diff","--cached","--stat","--patch",`--unified=${lr}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`staged
156
+ ${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await ee("git",["diff","--stat","--patch",`--unified=${lr}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`unstaged
157
+ ${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${lr}`,"--","/dev/null",t],{cwd:e});i.stdout.trim().length>0&&o.push(`untracked
158
+ ${i.stdout.trimEnd()}`)}let k=o.join(`
159
+
160
+ `);return k.length>dd?me(t,"Diff is above the 500 KB inline preview limit.","too_large",t,k.length):k.includes("\0")?me(t,"Binary diff preview is not available in Craig.","binary",t,k.length):{path:t,status:k.length>0?"ready":"empty",title:t,lines:k.length>0?k.split(`
161
+ `):["No diff for this file."],byteLength:k.length}}function Bi(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let p=0;p<o.length-1;p+=1){let k=o.slice(0,p+1).join("/");r.has(k)||(r.add(k),t.push({kind:"directory",path:k,depth:p,label:o[p]??k}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function Ze(e,t){return e&&t.includes(e)?e:t[0]??null}function gd(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function $i(e){return[...new Set(e.split(`
162
+ `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function md(e,t){let r=ms.resolve(e,t),s=ms.resolve(e);if(r!==s&&!r.startsWith(`${s}${ms.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function _d(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function me(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Re();import{access as wd}from"node:fs/promises";async function Fi(e,t){let r=await ae(e,t),s=await bd(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await se(e,o),o}async function bd(e){try{return await wd(e),!0}catch{return!1}}Ae();Pe();import Wt from"node:path";function Ni(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"\u{F06E6} ";case"js":case"jsx":case"mjs":case"cjs":return"\u{F031E} ";case"json":case"jsonc":return"\u{F0871} ";case"md":case"mdx":return"\u{F0354} ";case"yaml":case"yml":return"\u{F0B10} ";case"sh":case"bash":case"zsh":return"\u{F018D} ";case"css":case"scss":case"sass":return"\u{F031C} ";case"html":case"htm":return"\u{F031D} ";case"py":return"\u{F0320} ";case"go":return"\u{F07D3} ";case"rs":return"\u{F1617} ";case"lock":return"\u{F033E} ";case"png":case"jpg":case"jpeg":case"gif":case"svg":case"webp":return"\u{F02E9} ";default:return"\u{F0214} "}}var Wi="\u{F024B} ",ji="\u{F0DCF} ",Hi="\u25CB",ws="\uEA64",Ui="\uEAFE",qi="\uEBDA",hr="\u25CB",fr="\u25CF",bs="\u2713",pr="\u2715";function Ki(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Ae();wt();Ae();var kd=["tasks","center","inspector","actions"],Qi=["agent","terminal"],Ji=[],ne="inspection",f_=[...Qi,...Ji],Zi=["commit","push","refresh-checks","close-task"],yd=["refresh-checks","close-task"],eo=["task","checks","pr","setup-run","actions","next-action"],to=["diff","files","review"];function ro(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=$d(e?.openInspectionKind)??r,o=pt(t);return{inputMode:Nd(e?.inputMode),focusedRegion:Od(e?.focusedRegion),selectedRepoId:Ve(e?.selectedRepoId),selectedWorkspaceId:Ve(e?.selectedWorkspaceId),selectedTaskId:Ve(e?.selectedTaskId),selectedPtyTabId:Ve(e?.selectedPtyTabId),selectedLeftItemId:Gd(Ve(e?.selectedTaskId)),activeTab:r?ne:Ve(e?.activeTab)??"agent",preferredPtyTabKind:Fd(e?.preferredPtyTabKind),inspectorSection:$t(e?.inspectorSection,eo,"task"),inspectionMode:Bd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ve(e?.selectedFileTreePath),selectedFilePath:Ve(e?.selectedFilePath),selectedDiffPath:Ve(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0,selectedActionId:$t(e?.selectedActionId,Zi,"commit"),selectedProjectTargetId:null,selectedRunner:Wd(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,footerToast:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:vd(),centerZoomed:!1}}function vd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function so(e,t){return{...e??je(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function wr(e,t,r={}){let s=zd(e,t),o=ho(s),p=(o?.kind==="workspace"?t.workspaces?.find(_=>_.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(_=>_.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(_=>_.id===o.id)??null:o?.kind==="task"?t.repos.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(_=>_.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(_.id))??null:null)??(p?.kind!=="project"?t.repos.find(_=>_.id===p?.primaryRepoId)??null:null)??t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(_=>_.workspaceId===p.id):i?t.tasks.filter(_=>_.repoId===i):[],d=(o?.kind==="task"?c.find(_=>_.id===o.id)??null:null)??c.find(_=>_.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...Hd(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:Dd(e,t,d?.id??null),...Ud(e,t,d?.id??null),selectedDiffPath:Ad(e,t,d?.id??null),inspectorSection:$t(e.inspectorSection,eo,"task")}}function no(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Sd(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:Ss(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return zi(e,1);if(t==="SHIFT_TAB"||t==="[")return zi(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,-1,r):Vi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,1,r):Vi(e,1,r);if(t==="PAGE_UP")return et(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return et(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return et(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return et(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??de,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=jd(e,t);return X({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&_r(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Xd(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Yi(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return ks(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Gi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return ks(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Gi(e,1)}if(tt(t)){if(e.focusedRegion==="tasks"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId))){let s=fo(e.selectedLeftItemId),o=po(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&_r(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Ft(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&Yi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Ft(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:Id({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Nt(e,t){return{...e,terminal:t}}function io(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Sd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function tt(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
163
+ `}function oo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function ao(e){return co(e)||Ft(e)!==null}function Td(e){return Ji.includes(e)}function co(e){return Qi.includes(e)}function lo(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Rd=["tasks","center","inspector"];function zi(e,t){return gr(e,"focusedRegion",Rd,t)}function ks(e,t,r){let s=gr(e,"activeTab",r&&r.length>0?r:Kd(e),t);return!s.changed||Td(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Ft(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Vi(e,t,r){if(e.focusedRegion==="tasks")return Cd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return ks(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=mr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}if(r.projectTargetIds?.length){let s=mr(e,"selectedProjectTargetId",r.projectTargetIds,t);return s.changed?{...s,state:{...s.state,reviewScrollOffset:0}}:s}return gr(e,"selectedActionId",yd,t)}return gr(e,"selectedActionId",Zi,t)}function Cd(e,t,r){let s=mr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=ho(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};let p=fo(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let k=po(s.state.selectedLeftItemId);return k?{...s,state:{...s.state,selectedWorkspaceId:k}}:s}function et(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=mr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return e.inspectionMode==="review"?Xi(e,"reviewScrollOffset",t,r.reviewRowCount??100,r.pageRows):X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Xi(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return xd(e,t,r)}return X({state:e})}function Pd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,reviewScrollOffset:t==="review"?0:e.reviewScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Gi(e,t){return Pd(e,Md(e.inspectionMode,to,t))}function uo(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),k=Ge(p===-1?0:p+t,0,s.length-1),i=s[k]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function Id(e){if(!e.selectedFileTreePath)return e;let t=new Set(e.collapsedFileTreePaths);return t.has(e.selectedFileTreePath)?t.delete(e.selectedFileTreePath):t.add(e.selectedFileTreePath),{...e,collapsedFileTreePaths:[...t].sort((r,s)=>r.localeCompare(s)),actionMessage:null}}function Xi(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),k=Ge(e[t]+r,0,p);return k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function xd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Ed(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let _=Ge(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let _=Ge(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}if(t>0&&k>p){let _=i[c+1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&k<0){let _=i[c-1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Ge(k,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function Ed(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=Ge(e.diffScrollOffset+t,0,p),i=Ld(r.diffPathRanges??[],k)??e.selectedDiffPath;return k===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:k,selectedDiffPath:i,actionMessage:null},changed:!0})}function Ad(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Dd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Ld(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function gr(e,t,r,s){let o=r.indexOf(e[t]),p=Ge(o+s,0,r.length-1),k=r[p];return!k||k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function mr(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),k=Ge(p===-1?0:p+s,0,r.length-1),i=r[k]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function Md(e,t,r){let s=t.indexOf(e);return t[Ge(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function $t(e,t,r){return t.includes(e??"")?e:r}function Od(e){return e==="tabs"?"center":$t(e,kd,"tasks")}function Bd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":$t(e,to,t)}function $d(e){return e==="file"||e==="diff"?e:null}function Fd(e){return e==="terminal"?"terminal":"agent"}function Nd(e){return e==="terminal"?"terminal":"control"}function Wd(e,t=[...de],r="codex"){return e&&gt(e)&&t.includes(e)?e:r}function Ss(e,t=de){let r=t.length>0?t:de,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Ft(e){let t=de.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function jd(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Ft(e.activeTab)??e.preferredPtyTabKind}function Hd(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(co(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let k=o??s??e.ptyTabs[0]??null;return{activeTab:k?.id??ne,selectedPtyTabId:k?.id??null}}function Ud(e,t,r){if(!t.inspection||t.inspection.taskId!==r)return{selectedFileTreePath:e.selectedFileTreePath,collapsedFileTreePaths:e.collapsedFileTreePaths};let s=e.selectedFileTreePath??t.inspection.selectedFilePath,o=e.selectedFileTreePath===null&&e.collapsedFileTreePaths.length===0?qd(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function qd(e,t){let r=new Set;if(t){let s=t.split("/");for(let o=1;o<s.length;o+=1)r.add(s.slice(0,o).join("/"))}return e.filter(s=>s.kind==="directory"&&!s.path.includes("/")&&!r.has(s.path)).map(s=>s.path).sort((s,o)=>s.localeCompare(o))}function Kd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Yi(e,t){return t.includes(e)}function zd(e,t){let r=Vd(t);return e.selectedLeftItemId&&r.includes(e.selectedLeftItemId)?e.selectedLeftItemId:e.selectedWorkspaceId&&r.includes(`workspace:${e.selectedWorkspaceId}`)?`workspace:${e.selectedWorkspaceId}`:e.selectedTaskId&&r.includes(`task:${e.selectedTaskId}`)?`task:${e.selectedTaskId}`:e.selectedRepoId&&r.includes(`repo:${e.selectedRepoId}`)?`repo:${e.selectedRepoId}`:r[0]??null}function Vd(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function ho(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ve(e){return typeof e=="string"?e:null}function Gd(e){return e?`task:${e}`:null}function _r(e){return typeof e=="string"&&e.startsWith("task:")}function ys(e){return typeof e=="string"&&e.startsWith("new-task:")}function vs(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function Xd(e){return typeof e=="string"&&e.startsWith("workspace:")}function fo(e){return ys(e)?e.slice(9):null}function po(e){return vs(e)?e.slice(19):null}function Ge(e,t,r){return Math.min(r,Math.max(t,e))}var kr="empty",fe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function _o(e,t){let r=Jd(t,e),s=t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(w=>w.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(w=>w.repoId===s.id):[],k=p.find(w=>w.id===e.selectedTaskId)??p[0]??null,i=k?.type==="project",c=Du(t.tasks),d=tu(e,k),_=eu(e,k,d),a=_.find(w=>w.id===d)??_[0]??{id:"agent",label:"CODEX"},b=t.inspection?.taskId===k?.id?t.inspection:null,l=s?.name??"no repo",m=k?Se(k.runner):Se(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,footerToast:e.footerToast,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${Se(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${Se(e.selectedRunner)}] Enter create task Esc pause ? help`:_r(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?k===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Se(e.centerTabRunner??k?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 targets Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:Wt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${Wt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:Yd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>Lu(w,c[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":k?.id??"no task",repo:l,agent:m},centerTranscript:Zd(d,e,s,k,e.workspaceBrowser,b,r),tabs:_,rightContext:Au(s,k),rightInspection:pu(e,k,b)}}function Yd(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return Qd(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let k=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:k,focused:k&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let _=e.selectedLeftItemId===`task:${d.id}`,a=_?"\u25B8":"\u2022",b=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${b}`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks"},m=bo(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${Se(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${Se(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let _=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${_?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function Qd(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let k=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:k,focused:k&&t.focusedRegion==="tasks"});let i=s.filter(_=>_.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let _ of i){let a=t.selectedLeftItemId===`task:${_.id}`,b=a?"\u25B8":"\u2022",l=_.title.length>28?`${_.title.slice(0,25)}\u2026`:_.title,m={id:`task:${_.id}`,taskId:_.id,text:`${b} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},w=bo(_);w&&(m.prBadge=w),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Se(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function Jd(e,t){let r=e.workspaces??[];if(!e.workspaces)return null;let s=e.tasks.find(o=>o.id===t.selectedTaskId)??null;return s?r.find(o=>o.id===s.workspaceId)??null:t.selectedWorkspaceId?r.find(o=>o.id===t.selectedWorkspaceId)??null:r[0]??null}function Zd(e,t,r,s,o,p=null,k=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,_)=>{let a=_===o.selectedIndex?"\u25B8":" ",b=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${b}`});return Oe(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Oe(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=k?.kind==="project",d=c?k.name??"this workspace":r.name,_=c?"Project Task":"Task";return Oe([`No tasks in ${d}.`,"",`Press n or choose + New ${_} to create one with ${Se(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Oe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Oe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?nu(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?iu(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Oe(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Oe(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function eu(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:ru(p)}))??[];if(!t)return[{id:kr,label:"EMPTY",active:r===kr,focused:e.focusedRegion==="center"&&r===kr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:su(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function tu(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:kr}function ru(e){return e.title.toUpperCase()}function su(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?Wt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function nu(e,t,r){if(!e)return Oe(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Oe(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=wo(s.path??s.title);return[{text:s.title},{text:`${s.byteLength===null?"size unknown":`${s.byteLength} bytes`} \xB7 ${s.lines.length} lines \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...ou(s.lines,r,o)]}function iu(e,t,r){if(!e)return Oe(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Oe(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=wo(s.path??s.title);return[{text:s.title},{text:`${t.diffPaths.length} changed files \xB7 ${s.lines.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...au(s.lines,r,o)]}function Oe(e){return e.map(t=>({text:t}))}function ou(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,k)=>{let i=o+k+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:fe.lineNumber}},{text:" \u2502 ",style:{fg:fe.gutter}},...Ts(p,r)],tone:"default"}})}function au(e,t,r){let s=cu(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>lu(p,r))}function cu(e){let t=[],r=0,s=0;for(let o of e){let p=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(p){r=Number.parseInt(p[1]??"0",10),s=Number.parseInt(p[2]??"0",10);continue}if(!(o.startsWith("diff --git")||o.startsWith("index ")||o.startsWith("+++ ")||o.startsWith("--- "))&&!(o==="staged"||o==="unstaged"||o==="untracked")){if(o.startsWith("-")&&!o.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:o.slice(1),kind:"delete"}),r+=1;continue}if(o.startsWith("+")&&!o.startsWith("+++")){t.push({oldNumber:null,newNumber:s,marker:"+",text:o.slice(1),kind:"add"}),s+=1;continue}if(o.startsWith(" ")){if(r===0&&s===0)continue;t.push({oldNumber:r,newNumber:s,marker:" ",text:o.slice(1),kind:"context"}),r+=1,s+=1;continue}}}return t}function lu(e,t){let r=go(e.oldNumber),s=go(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:fe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:fe.diffAdd}:null,k=`${o} \u2502 ${e.text}`,i=p?uu(Ts(e.text,t),p.bg,p.fallbackFg):Ts(e.text,t),c=p?{fg:fe.lineNumber,bg:p.bg}:{fg:fe.lineNumber},d=p?{fg:fe.gutter,bg:p.bg}:{fg:fe.gutter};return{text:k,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function go(e){return e===null?" ":String(e).padStart(4," ")}function wo(e){let t=Wt.extname(e).toLowerCase();return[".ts",".tsx",".js",".jsx",".mjs",".cjs"].includes(t)?"javascript":[".json",".jsonc"].includes(t)?"json":[".md",".mdx"].includes(t)?"markdown":[".css",".scss"].includes(t)?"css":"plain"}function Ts(e,t){return t==="diff"?du(e):t==="markdown"?hu(e):t==="json"?Rs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Rs(e,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|\/\/.*$|\/\*.*?\*\/|\b(const|let|var|function|return|if|else|for|while|class|interface|type|import|export|from|async|await|new|extends|implements|switch|case|break|continue|try|catch|throw|true|false|null|undefined)\b|-?\b\d+(?:\.\d+)?\b/g):[{text:e}]}function du(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:fe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:fe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:fe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:fe.diffMeta}}]:[{text:e}]}function uu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function hu(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:fe.markup,bold:!0}}]:Rs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Rs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],k=o.index??0;k>s&&r.push({text:e.slice(s,k)}),r.push({text:p,style:fu(p)}),s=k+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function fu(e){return e.startsWith("//")||e.startsWith("/*")?{fg:fe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:fe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:fe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:fe.markup}:{fg:fe.keyword}}function pu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?ko(t.repoTargets??[]):o?.pullRequest??(t?pe(t):null),k=[gu(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...k,...vo(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...k,...Cu(e,r)]}:{title:"",rows:[...k,...Iu(e,r)]}}function gu(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let _=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:_}})}let p=Cs(t),k=Ps(t);return o.push({text:" "},p,{text:" "},k),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function mo(e){return[{text:" "},Cs(e),{text:" "},Ps(e)]}function bo(e){if(e.type==="project"&&e.repoTargets?.length){let r=ko(e.repoTargets);return r?mo(r):null}let t=pe(e);return t?.number?mo(t):null}function ko(e){let t=e.filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?null:{provider:"github",number:-1,url:null,baseBranch:null,headBranch:null,status:mu(r),draft:r.some(s=>s.draft),mergeable:r.length===t.length&&r.every(s=>s.mergeable),mergeStateStatus:null,reviewDecision:r.some(s=>s.reviewDecision==="CHANGES_REQUESTED")?"CHANGES_REQUESTED":r.some(s=>s.reviewDecision==="REVIEW_REQUIRED")?"REVIEW_REQUIRED":r.every(s=>s.reviewDecision==="APPROVED")?"APPROVED":null,requiredChecks:r.flatMap(s=>s.requiredChecks),comments:r.flatMap(s=>s.comments??[]).slice(-4),lastSyncedAt:r.map(s=>s.lastSyncedAt).filter(s=>!!s).sort().at(-1)??null,lastSyncedHeadSha:null}}function mu(e){return e.some(t=>t.status==="open")?"open":e.every(t=>t.status==="merged")?"merged":e.some(t=>t.status==="closed")?"closed":e[0]?.status??null}function Cs(e){return!e||!e.number?{text:Hi,style:{fg:"565f89"}}:e.status==="merged"?{text:Ui,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:qi,style:{fg:"f7768e"}}:e.status==="draft"||e.draft?{text:ws,style:{fg:"565f89"}}:{text:ws,style:{fg:"9ece6a"}}}function Ps(e){let t=e?.requiredChecks??null;return e?.status==="closed"?{text:hr,style:{fg:"565f89"}}:!e?.number||!t||t.length===0?{text:hr,style:{fg:"565f89"}}:t.some(r=>r.status==="failed")||e.reviewDecision==="CHANGES_REQUESTED"?{text:pr,style:{fg:"f7768e"}}:t.every(r=>r.status==="success"||r.status==="skipped")?yo(e)?{text:pr,style:{fg:"f7768e"}}:_u(e)?{text:bs,style:{fg:"9ece6a"}}:{text:fr,style:{fg:"e0af68"}}:{text:fr,style:{fg:"e0af68"}}}function _u(e){return!!(e.mergeable&&!e.draft&&!yo(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped"))}function yo(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function vo(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return wu(e,t);let r=pe(t),s=To("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,lastSyncedAt:null,requiredChecks:[],comments:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),bu(s,e)}var br=32;function wu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let k of s){let i=o===k.repoId,c=e.focusedRegion==="inspector"&&i,d=k.repoId.startsWith("repo_")?k.repoId.slice(5):k.repoId;if(k.status!=="ready"){let a=k.failureReason?k.failureReason.slice(0,14):k.status,b=br-a.length-1,l=d.length>b?d.slice(0,b-1)+"\u2026":d,m=br-l.length-a.length;r.push({id:`project-review:${k.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let _=Cs(k.pullRequest),a=Ps(k.pullRequest),b=`${_.text} ${a.text}`,l=br-b.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,w=br-m.length-b.length,n=m+" ".repeat(Math.max(1,w));r.push({id:`project-review:${k.repoId}`,text:n+b,selected:i,focused:c,segments:[{text:n},{..._,text:_.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(k=>k.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...To("target",p.branch,p.pullRequest))),r}function So(e,t){return vo(e,t).length}function To(e,t,r){let s=a=>`${e}-${a}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let k=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${k} \u2192 ${i}`,muted:!0});let c=ku(r.reviewDecision,r.mergeStateStatus),d=c&&c!=="review approved"?"merge blocked":r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";o.push({id:s("pr-merge"),text:d,muted:!0}),c&&o.push({id:s("pr-review"),text:c,color:r.reviewDecision==="CHANGES_REQUESTED"?"f7768e":"e0af68"}),o.push({id:s("pr-synced"),text:`synced ${Ro(r.lastSyncedAt)}`,muted:!0}),o.push({id:s("checks-spacer"),text:""}),o.push({id:s("checks-header"),text:"Checks"}),r.requiredChecks.length?o.push(...r.requiredChecks.map(yu)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0});let _=r.comments??[];return _.length>0&&(o.push({id:s("comments-spacer"),text:""}),o.push({id:s("comments-header"),text:`Review comments (${_.length})`}),o.push(..._.slice(-4).flatMap((a,b)=>vu(a,s(`comment:${b}`))))),o}function bu(e,t){if(t.focusedRegion!=="inspector"||t.inspectionMode!=="review"||e.length===0)return e;let r=Math.max(0,Math.min(t.reviewScrollOffset,e.length-1));return e.map((s,o)=>({...s,selected:t.reviewScrollOffset===0&&s.selected||o===r,focused:t.reviewScrollOffset===0&&s.focused||o===r}))}function ku(e,t){return e==="CHANGES_REQUESTED"?"review changes requested":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"review required":e==="APPROVED"?"review approved":null}function Ro(e){if(!e)return"--";let t=Date.now()-new Date(e).getTime(),r=Math.floor(t/1e3);if(r<60)return`${r}s ago`;let s=Math.floor(r/60);if(s<60)return`${s}m ago`;let o=Math.floor(s/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function yu(e){let{icon:t,color:r}=Tu(e.status),s=e.name.length>16?`${e.name.slice(0,15)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(16," ")} ${Ru(e.status)}`,color:r,muted:!1}}function vu(e,t){let r=e.author??"unknown",s=e.createdAt?` \xB7 ${Ro(e.createdAt)}`:"",o=Su(e.body,30),p=o.slice(0,4),k=p.length<o.length,i=[{id:`${t}:author`,text:`${r}${s}`,muted:!0},...p.map((c,d)=>({id:`${t}:body:${d}`,text:` ${k&&d===p.length-1?`${c}\u2026`:c}`,muted:!0}))];return i.push({id:`${t}:spacer`,text:"",muted:!0}),i}function Su(e,t){let r=e.split(/\s+/).filter(Boolean);if(r.length===0)return[];let s=[],o="";for(let p of r){if(!o){o=p;continue}`${o} ${p}`.length<=t?o=`${o} ${p}`:(s.push(o),o=p)}return o&&s.push(o),s}function Tu(e){switch(e){case"success":return{icon:bs,color:"9ece6a"};case"pending":return{icon:fr,color:"e0af68"};case"failed":return{icon:pr,color:"f7768e"};case"skipped":return{icon:hr,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function Ru(e){return e==="success"?"passing":e==="failed"?"failing":e}function Cu(e,t){if(!t)return[{id:"empty",text:"No file index. Select a task with local changes.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.fileRows.length===0)return[{id:"empty",text:"No Git-visible files.",muted:!0}];let r=new Map(t.diffRows.map(p=>[p.path,p.status])),s=Pu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let k=p.kind==="file"?r.get(p.path):void 0,i=k==="A"?"9ece6a":k==="M"?"e0af68":k==="D"?"f7768e":k==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Wi:ji:Ni(p.label),d=p.kind==="file"?Ki(p.label):void 0,_=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},b=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:_},a,b];return{id:p.path,text:`${_}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function Pu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Iu(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(xu(t))return Eu(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>Co(p,e,t))))}return r}function xu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Eu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),k=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:k,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>Co(d,e,t,o.length+1))))}}return r}function Co(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,k=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:k}}function Au(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Se(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:Wt.basename(t.worktreePath)}]:[{label:"Repo",value:e.name},{label:"Branch",value:e.defaultBranch},{label:"Task",value:"none",mutedValue:!0}]:[{label:"Repo",value:"none",mutedValue:!0}]}function Du(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function Lu(e,t){return{name:Se(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var yr={width:120,height:36},Be={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??yr.width,yr.width),height:Math.max(t??yr.height,yr.height)}}import{spawn as th}from"node:child_process";import{createHash as rh}from"node:crypto";import{createServer as sh,createConnection as Fo}from"node:net";import{openSync as nh}from"node:fs";import{mkdir as ih,readFile as Ms,rm as ft,writeFile as oh}from"node:fs/promises";import{tmpdir as ah}from"node:os";import yt from"node:path";import{createRequire as Hu}from"node:module";var Eo=Ba(Io(),1),Mu=1e3,Ou=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Ao(e){return new Eo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:Mu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Do(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function xs(e,t){return new Promise(r=>{e.write(t,r)})}function Lo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,k=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(k+i);if(!c){s.push({segments:[]});continue}let d=[];for(let _=0;_<e.cols;_+=1){let a=c.getCell(_,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:Fu(a,k+i===p&&_===r.cursorX)})}s.push({segments:Bu($u(d))})}return s}function Bu(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&ju(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};Mo(r.style)||(o.style=r.style),t.push(o)}return t}function $u(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Mo(r.style))break;t-=1}return e.slice(0,t)}function Fu(e,t){let r={},s=xo(e,"fg"),o=xo(e,"bg");return s&&(r.fg=s),o&&(r.bg=o),e.isBold()&&(r.bold=!0),e.isDim()&&(r.dim=!0),e.isItalic()&&(r.italic=!0),e.isUnderline()&&(r.underline=!0),(e.isInverse()||t)&&(r.inverse=!0),r}function xo(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let s=t==="fg"?e.isFgRGB():e.isBgRGB(),o=t==="fg"?e.getFgColor():e.getBgColor();return s?o.toString(16).padStart(6,"0"):Ou[o]??Nu(o)}function Nu(e){if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),s=Math.floor(t%36/6),o=t%6;return[r,s,o].map(Wu).map(p=>p.toString(16).padStart(2,"0")).join("")}if(e>=232&&e<=255){let t=8+(e-232)*10;return[t,t,t].map(r=>r.toString(16).padStart(2,"0")).join("")}return"e6e6e6"}function Wu(e){return e===0?0:55+e*40}function ju(e,t){return Is(e)===Is(t)}function Is(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function Mo(e){return Is(e)===""}var Uu=Hu(import.meta.url),qu=/^CTRL_([A-Z])$/,Ku="\x1B[6n",zu="\x1B[c",Vu="\x1B[?u",Gu={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
164
+ `,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},vr=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Es(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,Oo(p,s),this.getViewState(r);let k=this.createSession(t,r,s,o);return this.sessions.set(r,k),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=Xu(t);r!==null&&this.write(r)}scrollViewport(t){let r=this.getAttachedSession();if(!r||t===0)return;let s=r.terminal.buffer.active.baseY;r.scrollbackLines=Math.max(0,Math.min(s,r.scrollbackLines-t))}resize(t){let r=this.getAttachedSession();r&&Oo(r,t)}detach(){this.attachedTabId=null}sessionTabIds(){return[...this.sessions.keys()]}disposeSession(t){let r=this.sessions.get(t);r&&(Es(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Es(t);this.sessions.clear(),this.attachedTabId=null}getViewState(t){if(!t)return{status:"idle",rows:[],error:null,scrolledBack:!1};let r=this.sessions.get(t);return r?{status:r.status,rows:Lo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let p=this.spawn??Qu().spawn,k=Ao(s),i=o??this.resolveSessionSpec(t,r),c=at({...this.env,...i.env??{}}),{executable:d,args:_}=Ju(this.shell,i.command,{cwd:i.cwd,env:c}),a=p(d,_,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:i.cwd,env:Zu(c)}),b={taskId:t,tabId:r,pty:a,terminal:k,status:"running",error:null,disposables:[],scrollbackLines:0};return b.disposables.push(a.onData(l=>{eh(a,l),xs(b.terminal,l).then(()=>{this.onUpdate?.(b.tabId)})})),b.disposables.push(a.onExit(l=>{b.status="exited",xs(b.terminal,`\r
165
+ [process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(b.tabId)})})),b}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function Xu(e){if(e.length===1)return e;let t=Gu[e];if(t!==void 0)return t;let r=qu.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function Oo(e,t){Yu(e.pty,t),Do(e.terminal,t)}function Es(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function Yu(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Qu(){return Uu("node-pty")}function Ju(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ct(t[0],r),...t.slice(1)].map(Bo).join(" ")}; exec ${Bo(e)} -l`;return{executable:e,args:["-lc",o]}}function Bo(e){return`'${e.replaceAll("'","'\\''")}'`}function Zu(e){let t={};for(let[r,s]of Object.entries(e))typeof s=="string"&&(t[r]=s);return t.TERM=t.TERM??"xterm-256color",t}function eh(e,t){for(let r=0;r<As(t,Ku);r+=1)e.write("\x1B[1;1R");for(let r=0;r<As(t,zu);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<As(t,Vu);r+=1)e.write("\x1B[?0u")}function As(e,t){if(t.length===0)return 0;let r=0,s=e.indexOf(t);for(;s!==-1;)r+=1,s=e.indexOf(t,s+t.length);return r}var Os=3;async function No(e){let t=Bs(e.paths);await ch(t,e.paths,e.spawnDaemon);let r=await Ko(t.socketPath),s=new Ds(r,e);return await s.ready(),s}async function Wo(e,t={}){let r=Bs(e);await ih(e.runtimeDir,{recursive:!0}),await ft(r.socketPath,{force:!0});let s=new Ls(e,t),o=sh(p=>s.handleConnection(p));await ph(o,r.socketPath),await oh(r.pidPath,String(process.pid),"utf8"),await new Promise(p=>{let k=()=>{s.closeClients(),o.close(()=>p())};s.onShutdown=k,process.once("SIGTERM",k),process.once("SIGINT",k)}),await ft(r.socketPath,{force:!0}),await ft(r.pidPath,{force:!0}),s.disposeAll()}async function jo(e){let t=Bs(e);return await Tr(t.socketPath)?(await Uo(t.socketPath),!0):!1}var Ds=class{constructor(t,r){this.socket=t;this.options=r,t.setEncoding("utf8"),t.on("data",s=>this.handleData(String(s))),t.on("error",s=>this.rejectAll(s instanceof Error?s:new Error(String(s)))),t.on("close",()=>{this.closed=!0,this.rejectAll(new Error("Craig PTY daemon connection closed."))})}socket;nextRequestId=1;pending=new Map;viewCache=new Map;attachedTabId=null;buffer="";closed=!1;options;async ready(){if((await this.send({type:"ping"})).protocolVersion!==Os)throw new Error("Craig PTY daemon protocol mismatch.")}async ensureSession(t,r,s){let o=await this.send({type:"ensureSession",taskId:t,tabId:r,size:s,spec:this.options.resolveSessionSpec?.(t,r)??{cwd:this.options.workspaceRoot,command:[]}});this.attachedTabId=r;let p=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,p),p}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}async pruneStale(t){await this.send({type:"pruneStale",keepTabIds:t})}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((k,i)=>{this.pending.set(r,{resolve:k,reject:i})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
148
166
  `);let p=await o;if(!p.ok)throw new Error(p.error);return p}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
149
167
  `);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
150
- `)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},As=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new _r({...r,workspaceRoot:t.workspaceRoot,onUpdate:s=>this.broadcastUpdate(s)})}handleConnection(t){let r="";this.clients.add(t),t.setEncoding("utf8"),t.on("data",s=>{r+=String(s);let o=r.indexOf(`
168
+ `)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},Ls=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new vr({...r,workspaceRoot:t.workspaceRoot,onUpdate:s=>this.broadcastUpdate(s)})}handleConnection(t){let r="";this.clients.add(t),t.setEncoding("utf8"),t.on("data",s=>{r+=String(s);let o=r.indexOf(`
151
169
  `);for(;o!==-1;){let p=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,p),o=r.indexOf(`
152
- `)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{wr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);wr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:Ls}:{},...o?{view:o}:{}})}catch(o){let p=o instanceof Error?o.message:String(o);wr(t,{id:s.id,ok:!1,error:p})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return Gu(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)wr(s,{type:"update",tabId:t,view:r})}};function Ms(e){let t=Ou("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:yt.join(Wu(),`craig-${t}.sock`),pidPath:yt.join(e.runtimeDir,"pty-daemon.pid")}}async function ju(e,t,r){if(await Hu(e.socketPath,1e3))return;await br(e.socketPath)&&(await Lo(e.socketPath),await Po(e.socketPath,1e3)),await br(e.socketPath)&&(await Ku(e),await Po(e.socketPath,1e3)),await qu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:v,args:i}=Uu(s),c=$u(yt.join(t.runtimeDir,"pty-daemon.log"),"a");Mu(v,i,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await Do(e.socketPath))return;await Os(50)}let p=await Ds(yt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${p?`
153
- ${p.slice(-2e3)}`:""}`)}async function Do(e){let t=await zu(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Ls}async function Hu(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await Do(e))return!0;await Os(50)}return!1}function Uu(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:yt.resolve(yt.dirname(t),"..","node_modules",".bin","tsx"),args:[t,"__craig-daemon",e]};let r=process.argv.slice(1);return{command:process.execPath,args:[...process.execArgv,...r,"__craig-daemon",e]}}async function qu(e){let t=await Ds(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Bo(r))return}await ft(e.socketPath,{force:!0}),await ft(e.pidPath,{force:!0})}async function br(e){let t=await Oo(e).catch(()=>null);return t?(t.end(),!0):!1}async function Lo(e){await Mo(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Ku(e){let t=await Ds(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Bo(r)){await ft(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await ft(e.socketPath,{force:!0})}}async function zu(e){return Mo(e,{id:1,type:"ping"})}function Mo(e,t){return new Promise((r,s)=>{let o=Io(e),p="",v=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),i=()=>clearTimeout(v);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
170
+ `)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{Sr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);Sr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:Os}:{},...o?{view:o}:{}})}catch(o){let p=o instanceof Error?o.message:String(o);Sr(t,{id:s.id,ok:!1,error:p})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"pruneStale":{let r=new Set(t.keepTabIds);for(let s of this.runtime.sessionTabIds())r.has(s)||(this.runtime.disposeSession(s),this.attachedTabId===s&&(this.attachedTabId=null));return null}case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return gh(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)Sr(s,{type:"update",tabId:t,view:r})}};function Bs(e){let t=rh("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:yt.join(ah(),`craig-${t}.sock`),pidPath:yt.join(e.runtimeDir,"pty-daemon.pid")}}async function ch(e,t,r){if(await lh(e.socketPath,1e3))return;await Tr(e.socketPath)&&(await Uo(e.socketPath),await $o(e.socketPath,1e3)),await Tr(e.socketPath)&&(await hh(e),await $o(e.socketPath,1e3)),await uh(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:k,args:i}=dh(s),c=nh(yt.join(t.runtimeDir,"pty-daemon.log"),"a");th(k,i,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await Ho(e.socketPath))return;await $s(50)}let p=await Ms(yt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${p?`
171
+ ${p.slice(-2e3)}`:""}`)}async function Ho(e){let t=await fh(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Os}async function lh(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await Ho(e))return!0;await $s(50)}return!1}function dh(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:yt.resolve(yt.dirname(t),"..","node_modules",".bin","tsx"),args:[t,"__craig-daemon",e]};let r=process.argv.slice(1);return{command:process.execPath,args:[...process.execArgv,...r,"__craig-daemon",e]}}async function uh(e){let t=await Ms(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&zo(r))return}await ft(e.socketPath,{force:!0}),await ft(e.pidPath,{force:!0})}async function Tr(e){let t=await Ko(e).catch(()=>null);return t?(t.end(),!0):!1}async function Uo(e){await qo(e,{id:1,type:"shutdown"}).catch(()=>null)}async function hh(e){let t=await Ms(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!zo(r)){await ft(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await ft(e.socketPath,{force:!0})}}async function fh(e){return qo(e,{id:1,type:"ping"})}function qo(e,t){return new Promise((r,s)=>{let o=Fo(e),p="",k=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),i=()=>clearTimeout(k);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
154
172
  `)),o.once("error",c=>{i(),s(c)}),o.on("data",c=>{p+=String(c);let d=p.indexOf(`
155
- `);if(d===-1)return;let w=p.slice(0,d);i(),o.end();try{r(JSON.parse(w))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function Po(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await br(e))return;await Os(50)}}function Oo(e){return new Promise((t,r)=>{let s=Io(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Vu(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function wr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
156
- `)}catch{}}function Bo(e){try{return process.kill(e,0),!0}catch{return!1}}function Os(e){return new Promise(t=>setTimeout(t,e))}function Gu(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Xu=[" \u2584\u2588\u2588\u2588\u2588\u2584 \u2588\u2588\u2580\u2588\u2588\u2588 \u2584\u2584\u2584 \u2588\u2588\u2593 \u2584\u2588\u2588\u2588\u2588"," \u2592\u2588\u2588\u2580 \u2580\u2588 \u2593\u2588\u2588 \u2592 \u2588\u2588\u2592\u2592\u2588\u2588\u2588\u2588\u2584 \u2593\u2588\u2588\u2592 \u2588\u2588\u2592 \u2580\u2588\u2592"," \u2592\u2593\u2588 \u2584 \u2593\u2588\u2588 \u2591\u2584\u2588 \u2592\u2592\u2588\u2588 \u2580\u2588\u2584 \u2592\u2588\u2588\u2592\u2592\u2588\u2588\u2591\u2584\u2584\u2584\u2591"," \u2592\u2593\u2593\u2584 \u2584\u2588\u2588\u2592\u2592\u2588\u2588\u2580\u2580\u2588\u2584 \u2591\u2588\u2588\u2584\u2584\u2584\u2584\u2588\u2588 \u2591\u2588\u2588\u2591\u2591\u2593\u2588 \u2588\u2588\u2593"," \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591\u2591\u2588\u2588\u2593 \u2592\u2588\u2588\u2592 \u2593\u2588 \u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2591\u2591\u2592\u2593\u2588\u2588\u2588\u2580\u2592"," \u2591 \u2591\u2592 \u2592 \u2591\u2591 \u2592\u2593 \u2591\u2592\u2593\u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591\u2593 \u2591\u2592 \u2592"," \u2591 \u2592 \u2591\u2592 \u2591 \u2592\u2591 \u2592 \u2592\u2592 \u2591 \u2592 \u2591 \u2591 \u2591"," \u2591 \u2591\u2591 \u2591 \u2591 \u2592 \u2592 \u2591\u2591 \u2591 \u2591"," \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591"," \u2591"];function Bs(){return[...Xu]}var Yu=["Start","Options","Exit"],Ju=["Resume","Options","Exit"],vr=2,Sr=2,Tr=2,Qu=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Zu=new RegExp("\x1B\\[(?:0)?m","g"),eh=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),th=/https?:\/\/[^\s<>"']+/g,$s="\x1B[0m",No="\x1B]8;;\x1B\\",re={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function Wo(e,t={}){return Ns(e,{subtitle:"crAIg is that you?",menuItems:Yu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}function jo(e,t={}){return Ns(e,{subtitle:"Control mode is paused.",menuItems:Ju,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}var kr=[" GLOBAL CENTER PANEL INSPECTOR"," ? help \u2190\u2192 / hl switch tab \u2191\u2193 / jk navigate"," Esc pause / back + new tab \u2190\u2192 / hl switch mode"," Tab cycle panels a codex tab R sync PR"," q quit t terminal tab R sync PR"," x close tab X close task"," TASKS Enter attach PTY X close task"," \u2191\u2193 / jk navigate"," n new task TERMINAL MODE"," Enter attach Ctrl+] return to control mode"," Wheel / PgUp / PgDn scroll",""," Press Esc to return."],rh=["Help"];function Fs(e,t={}){return Ns(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??rh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Ho(e,t={}){let r=t.color??!0,s=re.overlay,o=new Array(e.height).fill(pe(" ".repeat(e.width),r,s)),p=Bs(),v=Math.max(1,Math.floor((e.height-p.length-2-kr.length)/2));for(let w=0;w<p.length&&!(v+w>=e.height);w+=1)o[v+w]=pe(zo(p[w]??"",e.width),r,re.overlayLogo);let i=Math.max(...kr.map(w=>w.length)),c=Math.max(0,Math.floor((e.width-i)/2)),d=v+p.length+2;for(let w=0;w<kr.length;w+=1){let a=d+w;if(a>=e.height)break;let k=kr[w]??"";o[a]=pe(tt(" ".repeat(c)+k,e.width),r,s)}return o.join(`
157
- `)}function Uo(e,t,r={}){let s=r.color??!0,o=Oe.leftWidth,p=Oe.rightWidth,v=Oe.dividerWidth,i=r.centerOnly??!1,c=i?e.width:e.width-o-p-v*2,d=e.height-Oe.topRailHeight-1,w=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent}`,a=pe(tt(w,e.width),s,re.rail),k=sh(t,o-vr-Sr,d,s),l=nh(t,c,d,s),m=oh(t,p,d,s),_=t.inputMode==="terminal",n=[];for(let u=0;u<d;u+=1){if(i){n.push(yr(l[u]??qe(),c,s,"center"));continue}let h=yr(k[u]??qe(),o,s,"left"),y=pe("\u2502",s,re.divider),S=yr(l[u]??qe(),c,s,"center"),P=pe("\u2502",s,re.divider),x=yr(m[u]??qe(),p,s,"right");n.push(`${h}${y}${S}${P}${x}`)}let g=_||t.modalInput?re.panelBg:re.panelMuted,f=pe(tt(` ${t.footerText}`,e.width),s,g);return[a,...n,f].join(`
158
- `)}function Ns(e,t){let r=new Array(e.height).fill(pe(" ".repeat(e.width),t.color,re.overlay)),s=Bs(),o=Math.max(...t.menuItems.map(d=>d.length)),p=t.menuItems.map((d,w)=>`${w===t.menuIndex?">":" "} ${d.padEnd(o)}`),v=t.optionsMessage?["",t.optionsMessage]:[],i=[...s,"",t.subtitle,"",...p,...v],c=Math.max(1,Math.floor((e.height-i.length)/2));for(let d=0;d<i.length;d+=1){let w=zo(i[d]??"",e.width);if(d<s.length){r[c+d]=pe(w,t.color,re.overlayLogo);continue}if(d===s.length+1){r[c+d]=pe(w,t.color,re.overlaySubtitle);continue}let a=d-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?re.overlayMenuSelected:re.overlay;r[c+d]=pe(w,t.color,l)}if(t.versionText){let d=t.updateText?" (update available)":"",w=`${t.versionText}${d} `,a=" ".repeat(Math.max(0,e.width-Be(w)));r[e.height-1]=pe(`${a}${Ir(w,t.color,re.overlay)}`,t.color,re.overlay)}return r.join(`
159
- `)}function sh(e,t,r,s){let o=lh(e.runners),p=1,v=e.leftTree.map(c=>ch(c,t,s));return[...Rr(v,r-p),o]}function nh(e,t,r,s){let o=e.tabs.find(f=>f.active)?.label??"AGENT",p=vh(e.tabs),v=`${" ".repeat(p)}${Pr("\u2500".repeat(o.length+1),s,re.panelMuted)}`,i=[`${Pr(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(f=>f.active)?.id??"agent",d=e.centerHeader.tabLabel==="BROWSER"||!to(c)?e.centerTranscript.map(f=>({...f})):ih(e),w=dh(e.tabs,s,e.focusedRegion==="center"),a=" engaged ",k=a.length+2,l=e.inputMode==="terminal"?`${Ir(a,s,re.panelBg)}${Cr("\u25CF",s,re.panelBg)} `:"",m=t-2,_=e.inputMode==="terminal"?" ".repeat(Math.max(0,m-Be(w)-k)):"",g=[{text:e.inputMode==="terminal"?`${w}${_}${l}`:w},{text:v,tone:"muted"},{text:i},qe(),...d];return Rr(g,r)}function ih(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},qe(),{text:e.terminal.error},qe(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:Yo(s.segments),segments:s.segments,fullBleed:!0}))}function oh(e,t,r,s){let o=e.rightInspection?ah(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Rr([{text:"CONTEXT"},qe(),...e.rightContext.map(p=>uh(p,s)),...e.actionMessage?[qe(),{text:e.actionMessage}]:[]],r);return Rr(o,r)}function ah(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),v=p===-1?0:Th(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>$o(i)),...s.slice(v,v+o).map(i=>$o(i))]}function $o(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),v=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:v}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function ch(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",v=e.accentDot?` ${Cr("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+Be(m.text),0):0,c=t-Be(p)-Be(o)-i,d=e.selected?e.text:e.focused?Cr(e.text,r,re.panelBg):e.panelHeader?Pr(e.text,r,re.panelMuted):e.text,w=tt(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${w}${p}${v}`},...e.prBadge];return{text:`${w}${p}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${w}${p}${v}`,tone:a}}function lh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),v=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${v}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function dh(e,t,r){return e.map(s=>s.active?r?Cr(s.label,t,re.panelBg):Pr(s.label,t,re.panelBg):Ir(s.label,t,re.panelBg)).join(" ")}function uh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Ir(e.value,t,re.panelBg):e.value}`}}function yr(e,t,r,s){let o=hh(s,e.tone??"default"),p=fh(e,r,o);if(s==="left"){if(e.fullBleed)return pe(tt(p,t),r,o);let i=t-vr-Sr;if(e.rightAlign){let d=Be(p),w=Math.max(0,i-d),a=`${" ".repeat(vr)}${" ".repeat(w)}${p}${" ".repeat(Sr)}`;return pe(a,r,o)}let c=`${" ".repeat(vr)}${tt(p,i)}${" ".repeat(Sr)}`;return pe(c,r,o)}return s==="center"&&e.fullBleed?ph(e,t,r,o):pe(tt(` ${p}`,t),r,o)}function hh(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Rr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(qe());return r}function qe(){return{text:""}}function fh(e,t,r){return e.segments?e.segments.map(s=>qo(s,t,r)).join(""):e.text}function ph(e,t,r,s){let o=" ".repeat(Tr),p=Math.max(0,t-Tr*2);if(!e.segments)return pe(`${o}${tt(e.text,p)}${o}`,r,s);let v=_h(e.segments,p),i=`${o}${v.map(c=>qo(c,r,s)).join("")}${o}`;return pe(i,r,s)}function qo(e,t,r){let s=e.href?`${Ko(e.href)}${e.text}${No}`:gh(e.text);return!t||!e.style?s:`${jt(kh(e.style,r))}${yh(e.style)}${s}${$s}${jt(r)}`}function gh(e){return e.replace(th,t=>{let[r,s]=mh(t);return`${Ko(r)}${r}${No}${s}`})}function mh(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Ko(e){return`\x1B]8;;${e}\x1B\\`}function _h(e,t){let r=wh(e,t);return bh(r,t)}function wh(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=Be(o.text);if(p<=s){r.push(o),s-=p;continue}let v=Vo(o.text,s);v.length>0&&r.push({...o,text:v}),s=0}return r}function bh(e,t){let r=Be(Yo(e));if(r>=t)return e;let s=e.at(-1)?.style;return s?.bg?[...e,{text:" ".repeat(t-r),style:s}]:[...e,{text:" ".repeat(t-r)}]}function kh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,v=s??t.bg;return p&&(o.fg=p),v&&(o.bg=v),o}function yh(e){let t=[];return e.bold&&t.push("1"),e.dim&&t.push("2"),e.italic&&t.push("3"),e.underline&&t.push("4"),t.length>0?`\x1B[${t.join(";")}m`:""}function vh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function zo(e,t){let r=Math.max(0,t-Be(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function tt(e,t){let r=Be(e);return r>=t?Sh(e,t):e+" ".repeat(t-r)}function Sh(e,t){if(t<=0)return"";if(Be(e)<=t)return e;let r=Xo(e);return Vo(r,Math.max(0,t-1))+"\u2026"}function Be(e){let t=0;for(let r of Array.from(Xo(e)))t+=Go(r);return t}function Vo(e,t){let r="",s=0;for(let o of Array.from(e)){let p=Go(o);if(s+p>t)break;r+=o,s+=p}return r}function Go(e){let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65024&&t<=65039?0:t>=4352&&(t<=4447||t===9001||t===9002||t>=11904&&t<=42191&&t!==12351||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141)?2:1}function Th(e,t,r){return Math.min(Math.max(e,t),r)}function Xo(e){return e.replace(eh,"").replace(Qu,"")}function Yo(e){return e.map(t=>t.text).join("")}function pe(e,t,r){if(!t)return e;let s=jt(r),o=e.replace(Zu,`${$s}${s}`);return`${s}${o}${$s}`}function jt(e){let t=[];return e.fg&&t.push(`38;2;${Fo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Fo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Fo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Cr(e,t,r){return Ws(e,t,re.success.fg,r)}function Pr(e,t,r){return Ws(e,t,re.accent.fg,r)}function Ir(e,t,r){return Ws(e,t,re.mutedfg.fg,r)}function Ws(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${jt(o)}${e}${jt(s)}`}var Rh="https://registry.npmjs.org/craig-cli/latest";var xr=null;function js(){try{return"0.5.1"}catch{return"unknown"}}async function Jo(){let e=js(),t=Date.now();if(xr&&t-xr.cachedAt<36e5)return xr.result;let r=null;try{let o=await fetch(Rh,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&Ch(r,e)};return xr={result:s,cachedAt:t},s}function Ch(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[v=0,i=0,c=0]=r(t);return s!==v?s>v:o!==i?o>i:p>c}Ee();var Hs=["Runners","Help"];function Us(e,t){return le.map(r=>{let s=ke(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),v=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${v}`})}function Zo(e){return e.message?e.message:e.pathEdit?"Type an executable path. Enter saves. Empty resets to default. Esc cancels.":"Enter toggles. E edits the executable path."}function ea(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Hs.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:qs(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ta(e,t,r,s){if(e.pathEdit)return Ph({...e,pathEdit:e.pathEdit},t,r);let o=Us(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=le[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!qs(r))return{kind:"noop",state:e};let p=le[e.menuIndex]??"codex",v=t.runners?.[p]?.enabled!==!1;return v&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Ih(t,p,!v),state:{...e,message:`${ke(p).displayName} ${v?"disabled":"enabled"}.`}}}function Ph(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Qo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(qs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:xh(t,s,o.length>0?o:null),state:Qo({...e,message:o.length>0?`${ke(s).displayName} executable saved.`:`${ke(s).displayName} executable reset to default.`})}}return Eh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Ih(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function xh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function Qo(e){let t={...e};return delete t.pathEdit,t}function qs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
160
- `}function Eh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Mh=Ah(import.meta.url),Oh=Mh("terminal-kit"),Bh=Oh.terminal;async function na(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=ze(t);await kt(t);let s=await Ne(r),o=pt(s),p=e.uiStateFile?await Ae({uiStateFile:e.uiStateFile}):null,v=Promise.resolve(),i=Promise.resolve(),c=await Ht(t,void 0,o),d=fr(Yi(p,s),c);c=await Ht(t,d,o);let w=()=>{},a={workspaceRoot:t,onUpdate:()=>w(),resolveSessionSpec:(m,_)=>Wh(c,_,t)},k=e.ptyRuntime??await xo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=Ji(p,m);let _=p;v=v.then(()=>Re({uiStateFile:e.uiStateFile},_),()=>Re({uiStateFile:e.uiStateFile},_)),v.catch(()=>{})};return new Promise(m=>{let _=e.terminal??Bh,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:fr(d,c)},g=!1,f=!1,u=null,h=0,y=0,S=null,P=null,x=null,W=null,$=!1,D=`Craig v${js()}`,A=null,E=0,H=!0,G=null,N=()=>{},z=k;w=()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&N()},50)))};function q(B){return Nt(B,z.getViewState(B.selectedPtyTabId))}function b(B){return q($h(B,c))}function C(B){return c.tasks.find(L=>L.id===B.selectedTaskId)??null}async function T(){await z.hydrateSessions?.(c.tasks.flatMap(B=>B.ptyTabs.map(L=>L.id)))}function R(){T().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},N())})}function O(B){let L=i.then(B,B);return i=L.then(()=>{},()=>{}),L}function F(B){let L=C(B),M=c.inspection,j=M&&M.taskId===L?.id?M:null,K=Fh(j?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:Nh(c),centerTabIds:so(L,B),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:K.map(Z=>Z.path),fileTreeFileIds:K.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:K.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,pageRows:Math.max(5,ht(_.width,_.height).height-Oe.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function U(B){await tn(r,B),s=B,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function V(B){let L=B.selectedTaskId;L&&await O(async()=>{let M=await ue(r,L);!M.ptyTabs.some(j=>j.id===B.activeTab)||M.selectedPtyTabId===B.activeTab||await se(r,{...M,selectedPtyTabId:B.activeTab})})}async function J(){let B=(n.mode==="main",n.shell);c=await Ht(t,B,o),n.mode==="main"?n={mode:"main",shell:b(n.shell)}:n={...n,shell:b(n.shell)}}async function I(B){let L=++E,M=ia(c.tasks,B),j=c.inspection,K;if(M&&j?.taskId===M.id){let Z={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ce=await vi(M,j,Z);if(L!==E)return;K={...c,inspection:ce}}else if(K=await Ht(t,B,o),L!==E)return;c=K,n.mode==="main"&&(n={mode:"main",shell:b(n.shell)},l(n.shell),N())}async function Q(B){let L=await Qh(B);n.mode==="main"&&(n={mode:"main",shell:b({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},N())}async function Y(B){try{let L=b(B),M=C(L),j=L.selectedPtyTabId;if(M&&L.focusedRegion==="tasks"){let ce=M.ptyTabs.find(xe=>xe.kind==="agent")??null;ce?j=ce.id:(M=await zs(M),await J(),j=M.selectedPtyTabId)}M&&!j&&(M=await zs(M),await J(),j=M.selectedPtyTabId);let K=b({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!K.selectedTaskId||!j){n={mode:"main",shell:K},N();return}n={mode:"main",shell:Nt({...K,inputMode:"terminal"},z.getViewState(j))},l(n.shell);let Z=await z.ensureSession(K.selectedTaskId,j,Er(ht(_.width,_.height)));f=Ks(j),u=null,n={mode:"main",shell:Nt({...K,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let M=L instanceof Error?L.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&Ks(B.selectedPtyTabId)&&(await ee(B.selectedTaskId,M).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:Zi(b(B),M)},l(n.shell)}N()}async function ee(B,L){await O(async()=>{let M=await ue(r,B);await se(r,{...M,status:M.status==="running"?"draft":M.status,runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function we(B,L,M){let j=b(B);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let K=await O(async()=>{let Z=await ue(r,j.selectedTaskId),ce=L??Uh(Z,j.activeTab,j.preferredPtyTabKind),xe=ra(Z,ce,M??void 0,s),St={...Z,ptyTabs:[...Z.ptyTabs,xe],selectedPtyTabId:xe.id};return await se(r,St),St});return await J(),b({...j,activeTab:K.selectedPtyTabId??j.activeTab,selectedPtyTabId:K.selectedPtyTabId,preferredPtyTabKind:K.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${K.ptyTabs.at(-1)?.title??"tab"}`})}async function be(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:M,nextSelectedTab:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=K.ptyTabs.findIndex(Or=>Or.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=K.ptyTabs[Z],xe=K.ptyTabs.filter(Or=>Or.id!==ce.id),St=xe[Math.min(Z,xe.length-1)]??xe[Z-1]??null;return await se(r,{...K,ptyTabs:xe,selectedPtyTabId:St?.id??null}),{closedTab:ce,nextSelectedTab:St}});return z.disposeSession(M.id),await J(),b({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${M.title}`})}async function Xe(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let M=C(L),j;if(M?.type==="project"&&M.repoTargets?.length){let K=await ir(r,L.selectedTaskId);await J();let Z=K.synced+K.discovered+K.notFound;j=K.discovered>0?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""} \xB7 ${K.synced} refreshed`:`Refreshed ${K.synced}/${Z} targets`}else{let{disposition:K,task:Z}=await rs(r,L.selectedTaskId);await J(),j=K==="not_found"?`No PR found for ${Z.branch}`:K==="discovered"?`Discovered PR: #${he(Z)?.number} ${he(Z)?.url??""}`:`Refreshed checks: ${he(Z)?.requiredChecks.length??0} reported`}return b({...L,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Ie(){if($||n.mode!=="main")return;let B=n.shell.selectedTaskId,L=c.tasks;$=!0;try{let M=n.shell.actionMessage,K=(await ri(r,L)).find(ce=>ce.taskId===B),Z=L.find(ce=>ce.id===B);if(K&&!K.hadPr&&K.discovered>0&&(M=Z?.type==="project"?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""}`:`Discovered PR: #${K.firstDiscoveredPrNumber} ${K.firstDiscoveredPrUrl??""}`),n.mode!=="main")return;c=await Ht(t,n.shell,o),n={mode:"main",shell:b({...n.shell,actionMessage:M})},N()}catch{}finally{$=!1}}async function Ke(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:M,task:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=await Di(r,L.selectedTaskId);return{taskBeforeClose:K,task:Z}});for(let K of M.ptyTabs)z.disposeSession(K.id);return await J(),b({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function rt(B){let L=b(B);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await He(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Lt(r,L.selectedWorkspaceId);let j=await Mt(r,L.selectedWorkspaceId);return await J(),b({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function zs(B){let L=B.ptyTabs.find(K=>K.kind==="agent")??null;if(L){let K={...B,selectedPtyTabId:L.id};return await O(async()=>{let Z=await ue(r,B.id),ce=Z.ptyTabs.find(xe=>xe.kind==="agent")??null;ce&&await se(r,{...Z,selectedPtyTabId:ce.id})}),K}let M=ra(B,"agent",void 0,s),j={...B,ptyTabs:[...B.ptyTabs,M],selectedPtyTabId:M.id};return await O(async()=>{let K=await ue(r,B.id),Z=K.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await se(r,{...K,selectedPtyTabId:Z.id});return}await se(r,{...K,ptyTabs:[...K.ptyTabs,M],selectedPtyTabId:M.id})}),j}N=()=>{aa();let B=ht(_.width,_.height),L=n.mode==="main"?Uo(B,uo(b(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?Wo(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="pause"?jo(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="options"?Fs(B,{menuIndex:n.menuIndex,optionsMenuItems:Hs}):n.variant==="runners"?Fs(B,{menuIndex:Ut(n).menuIndex,optionsMenuItems:Us(s,Ut(n)),optionsMessage:Zo(Ut(n)),optionsSubtitle:"Runners"}):Ho(B);H&&(_.moveTo(1,1),_.eraseDisplayBelow(),H=!1),_.noFormat(Kh(L)),_.hideCursor(!0)};function aa(){let B=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";B!==G&&(G=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let ca=()=>{process.stdout.off("resize",Js),process.off("SIGCONT",Qs),_.removeListener("key",Vs),_.removeListener("unknown",Gs),_.removeListener("mouse",Xs),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),x&&(clearTimeout(x),x=null),W&&(clearInterval(W),W=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Lr=B=>{ca(),m(B)},la=async()=>{if(n.mode!=="main"||g)return;let B=n.shell,L=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){n={mode:"main",shell:b({...B,taskPromptError:"Select a workspace first."})},N();return}if(L.length===0){n={mode:"main",shell:b({...B,taskPromptError:"Task prompt cannot be empty."})},N();return}g=!0,n={mode:"main",shell:b({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},N();let M=null;try{M=await qh(r,B.selectedRepoId,B.selectedWorkspaceId,L,B.selectedRunner),await J();let j=b({...n.shell,selectedRepoId:M.repoId,selectedWorkspaceId:M.workspaceId,selectedTaskId:M.id,selectedPtyTabId:M.selectedPtyTabId,selectedLeftItemId:`task:${M.id}`,activeTab:M.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),K=await z.ensureSession(M.id,j.selectedPtyTabId??oa(M,"agent"),Er(ht(_.width,_.height)));f=Ks(j.selectedPtyTabId),n={mode:"main",shell:Nt(j,K)},l(n.shell)}catch(j){j instanceof Ar&&(M=j.task);let K=j instanceof Error?j.message:"Failed to create task.";M&&(await se(r,{...M,status:"draft",runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:K}).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:b({...n.shell,inputMode:"control",selectedTaskId:M?.id??n.shell.selectedTaskId,selectedPtyTabId:M?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:M?`task:${M.id}`:n.shell.selectedLeftItemId,activeTab:M?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:M?null:"",taskPromptError:K,actionMessage:null})}}finally{g=!1,N()}},da=B=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(B==="ESCAPE"){n={mode:"main",shell:b({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},N();return}if(et(B)){la();return}if(B==="BACKSPACE"){n={mode:"main",shell:b({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},N();return}if(B==="CTRL_R"){n={mode:"main",shell:b({...L,selectedRunner:ys(L.selectedRunner,o),taskPromptError:null})},N();return}eo(B)&&(n={mode:"main",shell:b({...L,taskPromptInput:`${L.taskPromptInput}${B}`,taskPromptError:null})},N())}},ua=B=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(B==="ESCAPE"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,actionMessage:null})},N();return}if(B==="UP"||B==="k"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},N();return}if(B==="DOWN"||B==="j"){let M=Math.max(0,L.entries.length-1);n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(M,L.selectedIndex+1),error:null}})},N();return}if(B==="LEFT"||B==="h"){Q(vt.dirname(L.cwd)).catch(M=>{let j=M instanceof Error?M.message:"Failed to open parent directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:j}})},N()});return}if(B==="RIGHT"||B==="l"||et(B)){let M=L.entries[L.selectedIndex]??null;if(!M)return;if((B==="RIGHT"||B==="l")&&(M.kind==="directory"||M.kind==="repo")){Q(M.path).catch(j=>{let K=j instanceof Error?j.message:"Failed to open directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()});return}Dt(r,M.path).then(async j=>{await J();let K=j.repos[0]??null;n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:K?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to add workspace.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()})}}},Vs=B=>{let L=typeof B=="string"?B:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){da(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){ua(L);return}if(n.mode==="main"){let M=Qi(n.shell,L,F(n.shell));if(M.exit){Lr(0);return}if(M.detachTerminal){z.detach(),n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(n.shell.inputMode==="terminal"){if(M.changed){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(f&&et(L)){f=!1;return}f&&(f=!1),u=Vh(L)?{key:L,at:Date.now()}:null;let j=Gh(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Mr(j);return}z.writeKey(L);return}if(L==="CTRL_C"){Lr(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},H=!0,N();return}if(M.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:b(M.state)},H=!0,N();return}if(M.beginTaskPrompt){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(M.openWorkspaceBrowser){Q(t).catch(j=>{let K=j instanceof Error?j.message:"Failed to browse workspaces.";n={mode:"main",shell:b({...M.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:K}})},N()});return}if(M.createPtyTab){we(M.state,M.createPtyTabKind,M.createPtyTabRunner).then(j=>{Y(j)}).catch(j=>{let K=j instanceof Error?j.message:"Failed to create tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closePtyTab){be(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.refreshPullRequestChecks){Xe(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh PR checks.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closeTask){Ke(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close task.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.removeWorkspace){rt(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to remove workspace.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.attachTerminal){Y(M.state);return}if(M.refreshInspection){n={mode:"main",shell:b(M.state)},l(n.shell),N(),I(n.shell).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:b({...n.shell,actionMessage:K})},N()});return}M.changed&&(n={mode:"main",shell:b(M.state)},V(n.shell).catch(()=>{}),l(n.shell),N());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:b(n.shell)},H=!0,N();return}if(n.variant==="options"){ha(L);return}if(n.variant==="runners"){fa(L);return}if(n.optionsMessage){(L==="ESCAPE"||et(L))&&(n={...n,optionsMessage:null},N());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},N();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},N();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:b(n.shell)},H=!0,N());return}if(et(L)){if(n.menuIndex===0){n={mode:"main",shell:b({...n.shell,inputMode:"control"})},H=!0,N(),R();return}if(n.menuIndex===1){let M=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}Lr(0)}};function ha(B){if(n.mode!=="overlay"||n.variant!=="options")return;let L=ea(n.menuIndex,B);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},N();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},H=!0,N());return}if(L.kind==="help"){let M=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="runners"){let M=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N()}}}function fa(B){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ta(Ut(n),s,B,o);if(L.kind!=="noop"){if(L.kind==="back"){let M=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},N();return}U(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},N())}).catch(M=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=M instanceof Error?M.message:"Failed to save runner option.";n={...n,runnerOptions:{...Ut(n),message:j}},N()})}}let Gs=B=>{let L=zh(B);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){z.detach(),f=!1,u=null,n={mode:"main",shell:b({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),N();return}let M=Xh(L);if(M!==0){Mr(M);return}let j=Yh(L);if(j){f=!1,u={key:j,at:Date.now()},z.writeKey(j);return}if(f&&L!=="\r"&&L!==`
173
+ `);if(d===-1)return;let _=p.slice(0,d);i(),o.end();try{r(JSON.parse(_))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function $o(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await Tr(e))return;await $s(50)}}function Ko(e){return new Promise((t,r)=>{let s=Fo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function ph(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function Sr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
174
+ `)}catch{}}function zo(e){try{return process.kill(e,0),!0}catch{return!1}}function $s(e){return new Promise(t=>setTimeout(t,e))}function gh(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var mh=[" \u2584\u2588\u2588\u2588\u2588\u2584 \u2588\u2588\u2580\u2588\u2588\u2588 \u2584\u2584\u2584 \u2588\u2588\u2593 \u2584\u2588\u2588\u2588\u2588"," \u2592\u2588\u2588\u2580 \u2580\u2588 \u2593\u2588\u2588 \u2592 \u2588\u2588\u2592\u2592\u2588\u2588\u2588\u2588\u2584 \u2593\u2588\u2588\u2592 \u2588\u2588\u2592 \u2580\u2588\u2592"," \u2592\u2593\u2588 \u2584 \u2593\u2588\u2588 \u2591\u2584\u2588 \u2592\u2592\u2588\u2588 \u2580\u2588\u2584 \u2592\u2588\u2588\u2592\u2592\u2588\u2588\u2591\u2584\u2584\u2584\u2591"," \u2592\u2593\u2593\u2584 \u2584\u2588\u2588\u2592\u2592\u2588\u2588\u2580\u2580\u2588\u2584 \u2591\u2588\u2588\u2584\u2584\u2584\u2584\u2588\u2588 \u2591\u2588\u2588\u2591\u2591\u2593\u2588 \u2588\u2588\u2593"," \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591\u2591\u2588\u2588\u2593 \u2592\u2588\u2588\u2592 \u2593\u2588 \u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2591\u2591\u2592\u2593\u2588\u2588\u2588\u2580\u2592"," \u2591 \u2591\u2592 \u2592 \u2591\u2591 \u2592\u2593 \u2591\u2592\u2593\u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591\u2593 \u2591\u2592 \u2592"," \u2591 \u2592 \u2591\u2592 \u2591 \u2592\u2591 \u2592 \u2592\u2592 \u2591 \u2592 \u2591 \u2591 \u2591"," \u2591 \u2591\u2591 \u2591 \u2591 \u2592 \u2592 \u2591\u2591 \u2591 \u2591"," \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591"," \u2591"];function Fs(){return[...mh]}var _h=["Start","Options","Exit"],wh=["Resume","Options","Exit"],Pr=2,Ir=2,xr=2,bh=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),kh=new RegExp("\x1B\\[(?:0)?m","g"),yh=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),vh=/https?:\/\/[^\s<>"']+/g,Ns="\x1B[0m",Xo="\x1B]8;;\x1B\\",re={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function Yo(e,t={}){return js(e,{subtitle:"crAIg is that you?",menuItems:_h,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}function Qo(e,t={}){return js(e,{subtitle:"Control mode is paused.",menuItems:wh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}var Rr=[" GLOBAL CENTER PANEL INSPECTOR"," ? help \u2190\u2192 / hl switch tab \u2191\u2193 / jk navigate"," Esc pause / back + new tab \u2190\u2192 / hl switch mode"," Tab cycle panels a codex tab R sync PR"," q quit t terminal tab R sync PR"," x close tab X close task"," TASKS Enter attach PTY X close task"," \u2191\u2193 / jk navigate"," n new task TERMINAL MODE"," Enter attach Ctrl+] return to control mode"," Wheel / PgUp / PgDn scroll",""," Press Esc to return."],Sh=["Help"];function Ws(e,t={}){return js(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Sh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Jo(e,t={}){let r=t.color??!0,s=re.overlay,o=new Array(e.height).fill(le(" ".repeat(e.width),r,s)),p=Fs(),k=Math.max(1,Math.floor((e.height-p.length-2-Rr.length)/2));for(let _=0;_<p.length&&!(k+_>=e.height);_+=1)o[k+_]=le(ra(p[_]??"",e.width),r,re.overlayLogo);let i=Math.max(...Rr.map(_=>_.length)),c=Math.max(0,Math.floor((e.width-i)/2)),d=k+p.length+2;for(let _=0;_<Rr.length;_+=1){let a=d+_;if(a>=e.height)break;let b=Rr[_]??"";o[a]=le(Xe(" ".repeat(c)+b,e.width),r,s)}return o.join(`
175
+ `)}function Zo(e,t,r={}){let s=r.color??!0,o=Be.leftWidth,p=Be.rightWidth,k=Be.dividerWidth,i=r.centerOnly??!1,c=i?e.width:e.width-o-p-k*2,d=e.height-Be.topRailHeight-1,_=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent}`,a=le(Xe(_,e.width),s,re.rail),b=Rh(t,o-Pr-Ir,d,s),l=Ch(t,c,d,s),m=Ih(t,p,d,s),w=t.inputMode==="terminal",n=[];for(let u=0;u<d;u+=1){if(i){n.push(Cr(l[u]??qe(),c,s,"center"));continue}let h=Cr(b[u]??qe(),o,s,"left"),y=le("\u2502",s,re.divider),T=Cr(l[u]??qe(),c,s,"center"),P=le("\u2502",s,re.divider),x=Cr(m[u]??qe(),p,s,"right");n.push(`${h}${y}${T}${P}${x}`)}let g=w||t.modalInput?re.panelBg:re.panelMuted,f=Th(t.footerText,t.footerToast,e.width,s,g);return[a,...n,f].join(`
176
+ `)}function Th(e,t,r,s,o){let p=` ${e}`;if(!t)return le(Xe(p,r),s,o);let k=`\u2713 ${t}`,i=ke(k),c=ke(p),d=Math.max(1,r-c-i-2),_=c+d+i+2>r?Hs(p,Math.max(0,r-i-3)):p,a=Math.max(1,r-ke(_)-i-2),b=`${_}${" ".repeat(a)}${Ht(k,s,o)} `;return le(Xe(b,r),s,o)}function js(e,t){let r=new Array(e.height).fill(le(" ".repeat(e.width),t.color,re.overlay)),s=Fs(),o=Math.max(...t.menuItems.map(d=>d.length)),p=t.menuItems.map((d,_)=>`${_===t.menuIndex?">":" "} ${d.padEnd(o)}`),k=t.optionsMessage?["",t.optionsMessage]:[],i=[...s,"",t.subtitle,"",...p,...k],c=Math.max(1,Math.floor((e.height-i.length)/2));for(let d=0;d<i.length;d+=1){let _=ra(i[d]??"",e.width);if(d<s.length){r[c+d]=le(_,t.color,re.overlayLogo);continue}if(d===s.length+1){r[c+d]=le(_,t.color,re.overlaySubtitle);continue}let a=d-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?re.overlayMenuSelected:re.overlay;r[c+d]=le(_,t.color,l)}if(t.versionText){let d=t.updateText?" (update available)":"",_=`${t.versionText}${d} `,a=" ".repeat(Math.max(0,e.width-ke(_)));r[e.height-1]=le(`${a}${Dr(_,t.color,re.overlay)}`,t.color,re.overlay)}return r.join(`
177
+ `)}function Rh(e,t,r,s){let o=Ah(e.runners),p=1,k=e.leftTree.map(c=>Eh(c,t,s));return[...Er(k,r-p),o]}function Ch(e,t,r,s){let o=e.tabs.find(f=>f.active)?.label??"AGENT",p=qh(e.tabs),k=`${" ".repeat(p)}${Ar("\u2500".repeat(o.length+1),s,re.panelMuted)}`,i=[`${Ar(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(f=>f.active)?.id??"agent",d=e.centerHeader.tabLabel==="BROWSER"||!ao(c)?e.centerTranscript.map(f=>({...f})):Ph(e),_=Dh(e.tabs,s,e.focusedRegion==="center"),a=" engaged ",b=a.length+2,l=e.inputMode==="terminal"?`${Dr(a,s,re.panelBg)}${Ht("\u25CF",s,re.panelBg)} `:"",m=t-2,w=e.inputMode==="terminal"?" ".repeat(Math.max(0,m-ke(_)-b)):"",g=[{text:e.inputMode==="terminal"?`${_}${w}${l}`:_},{text:k,tone:"muted"},{text:i},qe(),...d];return Er(g,r)}function Ph(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},qe(),{text:e.terminal.error},qe(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:ia(s.segments),segments:s.segments,fullBleed:!0}))}function Ih(e,t,r,s){let o=e.rightInspection?xh(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Er([{text:"CONTEXT"},qe(),...e.rightContext.map(p=>Lh(p,s)),...e.actionMessage?[qe(),{text:e.actionMessage}]:[]],r);return Er(o,r)}function xh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),k=p===-1?0:zh(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Vo(i)),...s.slice(k,k+o).map(i=>Vo(i))]}function Vo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),k=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:k}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Eh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",k=e.accentDot?` ${Ht("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+ke(m.text),0):0,c=t-ke(p)-ke(o)-i,d=e.selected?e.text:e.focused?Ht(e.text,r,re.panelBg):e.panelHeader?Ar(e.text,r,re.panelMuted):e.text,_=Xe(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${_}${p}${k}`},...e.prBadge];return{text:`${_}${p}${e.prBadge.map(w=>w.text).join("")}`,segments:l,tone:a}}return{text:`${_}${p}${k}`,tone:a}}function Ah(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),k=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${k}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function Dh(e,t,r){return e.map(s=>s.active?r?Ht(s.label,t,re.panelBg):Ar(s.label,t,re.panelBg):Dr(s.label,t,re.panelBg)).join(" ")}function Lh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Dr(e.value,t,re.panelBg):e.value}`}}function Cr(e,t,r,s){let o=Mh(s,e.tone??"default"),p=Oh(e,r,o);if(s==="left"){if(e.fullBleed)return le(Xe(p,t),r,o);let i=t-Pr-Ir;if(e.rightAlign){let d=ke(p),_=Math.max(0,i-d),a=`${" ".repeat(Pr)}${" ".repeat(_)}${p}${" ".repeat(Ir)}`;return le(a,r,o)}let c=`${" ".repeat(Pr)}${Xe(p,i)}${" ".repeat(Ir)}`;return le(c,r,o)}return s==="center"&&e.fullBleed?Bh(e,t,r,o):le(Xe(` ${p}`,t),r,o)}function Mh(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Er(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(qe());return r}function qe(){return{text:""}}function Oh(e,t,r){return e.segments?e.segments.map(s=>ea(s,t,r)).join(""):e.text}function Bh(e,t,r,s){let o=" ".repeat(xr),p=Math.max(0,t-xr*2);if(!e.segments)return le(`${o}${Xe(e.text,p)}${o}`,r,s);let k=Nh(e.segments,p),i=`${o}${k.map(c=>ea(c,r,s)).join("")}${o}`;return le(i,r,s)}function ea(e,t,r){let s=e.href?`${ta(e.href)}${e.text}${Xo}`:$h(e.text);return!t||!e.style?s:`${jt(Hh(e.style,r))}${Uh(e.style)}${s}${Ns}${jt(r)}`}function $h(e){return e.replace(vh,t=>{let[r,s]=Fh(t);return`${ta(r)}${r}${Xo}${s}`})}function Fh(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function ta(e){return`\x1B]8;;${e}\x1B\\`}function Nh(e,t){let r=Wh(e,t);return jh(r,t)}function Wh(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=ke(o.text);if(p<=s){r.push(o),s-=p;continue}let k=Hs(o.text,s);k.length>0&&r.push({...o,text:k}),s=0}return r}function jh(e,t){let r=ke(ia(e));if(r>=t)return e;let s=e.at(-1)?.style;return s?.bg?[...e,{text:" ".repeat(t-r),style:s}]:[...e,{text:" ".repeat(t-r)}]}function Hh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,k=s??t.bg;return p&&(o.fg=p),k&&(o.bg=k),o}function Uh(e){let t=[];return e.bold&&t.push("1"),e.dim&&t.push("2"),e.italic&&t.push("3"),e.underline&&t.push("4"),t.length>0?`\x1B[${t.join(";")}m`:""}function qh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function ra(e,t){let r=Math.max(0,t-ke(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function Xe(e,t){let r=ke(e);return r>=t?Kh(e,t):e+" ".repeat(t-r)}function Kh(e,t){if(t<=0)return"";if(ke(e)<=t)return e;let r=na(e);return Hs(r,Math.max(0,t-1))+"\u2026"}function ke(e){let t=0;for(let r of Array.from(na(e)))t+=sa(r);return t}function Hs(e,t){let r="",s=0;for(let o of Array.from(e)){let p=sa(o);if(s+p>t)break;r+=o,s+=p}return r}function sa(e){let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65024&&t<=65039?0:t>=4352&&(t<=4447||t===9001||t===9002||t>=11904&&t<=42191&&t!==12351||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141)?2:1}function zh(e,t,r){return Math.min(Math.max(e,t),r)}function na(e){return e.replace(yh,"").replace(bh,"")}function ia(e){return e.map(t=>t.text).join("")}function le(e,t,r){if(!t)return e;let s=jt(r),o=e.replace(kh,`${Ns}${s}`);return`${s}${o}${Ns}`}function jt(e){let t=[];return e.fg&&t.push(`38;2;${Go(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Go(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Go(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Ht(e,t,r){return Us(e,t,re.success.fg,r)}function Ar(e,t,r){return Us(e,t,re.accent.fg,r)}function Dr(e,t,r){return Us(e,t,re.mutedfg.fg,r)}function Us(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${jt(o)}${e}${jt(s)}`}var Vh="https://registry.npmjs.org/craig-cli/latest";var Lr=null;function qs(){try{return"0.5.3"}catch{return"unknown"}}async function oa(){let e=qs(),t=Date.now();if(Lr&&t-Lr.cachedAt<36e5)return Lr.result;let r=null;try{let o=await fetch(Vh,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&Gh(r,e)};return Lr={result:s,cachedAt:t},s}function Gh(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[k=0,i=0,c=0]=r(t);return s!==k?s>k:o!==i?o>i:p>c}Ae();var Ks=["Runners","Help"];function zs(e,t){return de.map(r=>{let s=ye(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),k=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${k}`})}function ca(e){return e.message?e.message:e.pathEdit?"Type an executable path. Enter saves. Empty resets to default. Esc cancels.":"Enter toggles. E edits the executable path."}function la(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Ks.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Vs(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function da(e,t,r,s){if(e.pathEdit)return Xh({...e,pathEdit:e.pathEdit},t,r);let o=zs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=de[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!Vs(r))return{kind:"noop",state:e};let p=de[e.menuIndex]??"codex",k=t.runners?.[p]?.enabled!==!1;return k&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Yh(t,p,!k),state:{...e,message:`${ye(p).displayName} ${k?"disabled":"enabled"}.`}}}function Xh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:aa({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Vs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:Qh(t,s,o.length>0?o:null),state:aa({...e,message:o.length>0?`${ye(s).displayName} executable saved.`:`${ye(s).displayName} executable reset to default.`})}}return Jh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Yh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function Qh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function aa(e){let t={...e};return delete t.pathEdit,t}function Vs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
178
+ `}function Jh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var rf=Zh(import.meta.url),sf=rf("terminal-kit"),nf=sf.terminal;async function fa(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=ze(t);await kt(t);let s=await Ne(r),o=pt(s),p=e.uiStateFile?await De({uiStateFile:e.uiStateFile}):null,k=Promise.resolve(),i=Promise.resolve(),c=await Ut(t,void 0,o),d=wr(ro(p,s),c);c=await Ut(t,d,o);let _=()=>{},a={workspaceRoot:t,onUpdate:()=>_(),resolveSessionSpec:(m,w)=>lf(c,w,t)},b=e.ptyRuntime??await No({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=so(p,m);let w=p;k=k.then(()=>Ce({uiStateFile:e.uiStateFile},w),()=>Ce({uiStateFile:e.uiStateFile},w)),k.catch(()=>{})};return new Promise(m=>{let w=e.terminal??nf,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:wr(d,c)},g=!1,f=!1,u=null,h=0,y=0,T=null,P=null,x=null,N=null,B=null,D=!1,A=`Craig v${qs()}`,E=null,q=0,K=!0,Y=null,F=()=>{},H=b;_=()=>{n.mode==="main"&&(n={mode:"main",shell:v(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&F()},50)))};function v(M){return Nt(M,H.getViewState(C(M)))}function C(M){let L=R(M);return L?L.ptyTabs.some(O=>O.id===M.activeTab)?M.activeTab:M.activeTab==="agent"||M.activeTab==="terminal"?L.ptyTabs.find(O=>O.kind===M.activeTab)?.id??M.selectedPtyTabId:M.selectedPtyTabId:M.selectedPtyTabId}function S(M){return v(of(M,c))}function R(M){return c.tasks.find(L=>L.id===M.selectedTaskId)??null}async function $(){let M=c.tasks.flatMap(L=>L.ptyTabs.map(O=>O.id));await H.pruneStale?.(M),await H.hydrateSessions?.(M)}function W(){$().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:S(n.shell)},F())})}function U(M,L){return N&&(clearTimeout(N),N=null),L?(N=setTimeout(()=>{N=null,!(n.mode!=="main"||n.shell.footerToast!==L)&&(n={mode:"main",shell:S({...n.shell,footerToast:null})},F())},3e3),{...M,footerToast:L}):{...M,footerToast:null}}function z(M){let L=i.then(M,M);return i=L.then(()=>{},()=>{}),L}function te(M){let L=R(M),O=c.inspection,j=O&&O.taskId===L?.id?O:null,G=af(j?.fileRows??[],M.collapsedFileTreePaths);return{leftItemIds:cf(c),centerTabIds:lo(L,M),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:G.map(Z=>Z.path),fileTreeFileIds:G.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:G.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,reviewRowCount:So(M,L),pageRows:Math.max(5,ht(w.width,w.height).height-Be.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function I(M){await nn(r,M),s=M,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:S({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:S({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function Q(M){let L=M.selectedTaskId;L&&await z(async()=>{let O=await he(r,L);!O.ptyTabs.some(j=>j.id===M.activeTab)||O.selectedPtyTabId===M.activeTab||await se(r,{...O,selectedPtyTabId:M.activeTab})})}async function V(){let M=(n.mode==="main",n.shell);c=await Ut(t,M,o),n.mode==="main"?n={mode:"main",shell:S(n.shell)}:n={...n,shell:S(n.shell)}}async function J(M){let L=++q,O=pa(c.tasks,M),j=c.inspection,G;if(O&&j?.taskId===O.id){let Z={selectedFilePath:M.selectedFilePath,selectedDiffPath:M.selectedDiffPath},ce=await Ii(O,j,Z);if(L!==q)return;G={...c,inspection:ce}}else if(G=await Ut(t,M,o),L!==q)return;c=G,n.mode==="main"&&(n={mode:"main",shell:S(n.shell)},l(n.shell),F())}async function ge(M){let L=await yf(M);n.mode==="main"&&(n={mode:"main",shell:S({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},F())}async function _e(M){try{let L=S(M),O=R(L),j=L.selectedPtyTabId;if(O&&L.focusedRegion==="tasks"){let ce=O.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce?j=ce.id:(O=await Xs(O),await V(),j=O.selectedPtyTabId)}O&&!j&&(O=await Xs(O),await V(),j=O.selectedPtyTabId);let G=S({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!G.selectedTaskId||!j){n={mode:"main",shell:G},F();return}n={mode:"main",shell:Nt({...G,inputMode:"terminal"},H.getViewState(j))},l(n.shell);let Z=await H.ensureSession(G.selectedTaskId,j,Mr(ht(w.width,w.height)));f=Gs(j),u=null,n={mode:"main",shell:Nt({...G,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let O=L instanceof Error?L.message:"Failed to start PTY.";M.selectedTaskId&&M.selectedPtyTabId&&Gs(M.selectedPtyTabId)&&(await Ye(M.selectedTaskId,O).catch(()=>{}),await V().catch(()=>{})),n={mode:"main",shell:io(S(M),O)},l(n.shell)}F()}async function Ye(M,L){await z(async()=>{let O=await he(r,M);await se(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function xe(M,L,O){let j=S(M);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let G=await z(async()=>{let Z=await he(r,j.selectedTaskId),ce=L??hf(Z,j.activeTab,j.preferredPtyTabKind),Ee=ua(Z,ce,O??void 0,s),St={...Z,ptyTabs:[...Z.ptyTabs,Ee],selectedPtyTabId:Ee.id};return await se(r,St),St});return await V(),S({...j,activeTab:G.selectedPtyTabId??j.activeTab,selectedPtyTabId:G.selectedPtyTabId,preferredPtyTabKind:G.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${G.ptyTabs.at(-1)?.title??"tab"}`})}async function Ke(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:j}=await z(async()=>{let G=await he(r,L.selectedTaskId),Z=G.ptyTabs.findIndex(Nr=>Nr.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=G.ptyTabs[Z],Ee=G.ptyTabs.filter(Nr=>Nr.id!==ce.id),St=Ee[Math.min(Z,Ee.length-1)]??Ee[Z-1]??null;return await se(r,{...G,ptyTabs:Ee,selectedPtyTabId:St?.id??null}),{closedTab:ce,nextSelectedTab:St}});return H.disposeSession(O.id),await V(),S({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function rt(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=R(L),j=null,G=null;if(O?.type==="project"&&O.repoTargets?.length){let Z=await ar(r,L.selectedTaskId);await V();let ce=Z.synced+Z.discovered+Z.notFound;G=`Refreshed ${Z.synced}/${ce} targets`}else{let{disposition:Z,task:ce}=await os(r,L.selectedTaskId);await V(),j=Z==="not_found"?`No PR found for ${ce.branch}`:null,Z!=="not_found"&&(G=`Refreshed checks: ${pe(ce)?.requiredChecks.length??0} reported`)}return S({...U(L,G),focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function ma(){if(D||n.mode!=="main")return;let M=c.tasks;D=!0;try{if(await ci(r,M),n.mode!=="main")return;c=await Ut(t,n.shell,o),n={mode:"main",shell:S(n.shell)},F()}catch{}finally{D=!1}}async function _a(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:j}=await z(async()=>{let G=await he(r,L.selectedTaskId),Z=await Fi(r,L.selectedTaskId);return{taskBeforeClose:G,task:Z}});for(let G of O.ptyTabs)H.disposeSession(G.id);return await V(),S({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function wa(M){let L=S(M);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await He(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Lt(r,L.selectedWorkspaceId);let j=await Mt(r,L.selectedWorkspaceId);return await V(),S({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function Xs(M){let L=M.ptyTabs.find(G=>G.kind==="agent")??null;if(L){let G={...M,selectedPtyTabId:L.id};return await z(async()=>{let Z=await he(r,M.id),ce=Z.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce&&await se(r,{...Z,selectedPtyTabId:ce.id})}),G}let O=ua(M,"agent",void 0,s),j={...M,ptyTabs:[...M.ptyTabs,O],selectedPtyTabId:O.id};return await z(async()=>{let G=await he(r,M.id),Z=G.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await se(r,{...G,selectedPtyTabId:Z.id});return}await se(r,{...G,ptyTabs:[...G.ptyTabs,O],selectedPtyTabId:O.id})}),j}F=()=>{ba();let M=ht(w.width,w.height),L=n.mode==="main"?Zo(M,_o(S(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?Yo(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:A,updateText:E}):n.variant==="pause"?Qo(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:A,updateText:E}):n.variant==="options"?Ws(M,{menuIndex:n.menuIndex,optionsMenuItems:Ks}):n.variant==="runners"?Ws(M,{menuIndex:qt(n).menuIndex,optionsMenuItems:zs(s,qt(n)),optionsMessage:ca(qt(n)),optionsSubtitle:"Runners"}):Jo(M);K&&(w.moveTo(1,1),w.eraseDisplayBelow(),K=!1),w.noFormat(pf(L)),w.hideCursor(!0)};function ba(){let M=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";M!==Y&&(Y=M,w.grabInput(M==="terminal"?{mouse:"button"}:!0))}let ka=()=>{process.stdout.off("resize",en),process.off("SIGCONT",tn),w.removeListener("key",Ys),w.removeListener("unknown",Qs),w.removeListener("mouse",Js),T&&(clearTimeout(T),T=null),P&&(clearTimeout(P),P=null),x&&(clearTimeout(x),x=null),N&&(clearTimeout(N),N=null),B&&(clearInterval(B),B=null),H.disposeAll(),w.grabInput(!1),w.hideCursor(!1),w.fullscreen(!1)},$r=M=>{ka(),m(M)},ya=async()=>{if(n.mode!=="main"||g)return;let M=n.shell,L=M.taskPromptInput?.trim()??"";if(!M.selectedRepoId&&!M.selectedWorkspaceId){n={mode:"main",shell:S({...M,taskPromptError:"Select a workspace first."})},F();return}if(L.length===0){n={mode:"main",shell:S({...M,taskPromptError:"Task prompt cannot be empty."})},F();return}g=!0,n={mode:"main",shell:S({...M,actionMessage:`Creating ${M.selectedRunner} task in ${M.selectedWorkspaceId??M.selectedRepoId}...`})},F();let O=null;try{O=await ff(r,M.selectedRepoId,M.selectedWorkspaceId,L,M.selectedRunner),await V();let j=S({...n.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),G=await H.ensureSession(O.id,j.selectedPtyTabId??ga(O,"agent"),Mr(ht(w.width,w.height)));f=Gs(j.selectedPtyTabId),n={mode:"main",shell:Nt(j,G)},l(n.shell)}catch(j){j instanceof Or&&(O=j.task);let G=j instanceof Error?j.message:"Failed to create task.";O&&(await se(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:G}).catch(()=>{}),await V().catch(()=>{})),n={mode:"main",shell:S({...n.shell,inputMode:"control",selectedTaskId:O?.id??n.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:n.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:G,actionMessage:null})}}finally{g=!1,F()}},va=M=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(M==="ESCAPE"){n={mode:"main",shell:S({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},F();return}if(tt(M)){ya();return}if(M==="BACKSPACE"){n={mode:"main",shell:S({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},F();return}if(M==="CTRL_R"){n={mode:"main",shell:S({...L,selectedRunner:Ss(L.selectedRunner,o),taskPromptError:null})},F();return}oo(M)&&(n={mode:"main",shell:S({...L,taskPromptInput:`${L.taskPromptInput}${M}`,taskPromptError:null})},F())}},Sa=M=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(M==="ESCAPE"){n={mode:"main",shell:S({...n.shell,workspaceBrowser:null,actionMessage:null})},F();return}if(M==="UP"||M==="k"){n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},F();return}if(M==="DOWN"||M==="j"){let O=Math.max(0,L.entries.length-1);n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(O,L.selectedIndex+1),error:null}})},F();return}if(M==="LEFT"||M==="h"){ge(vt.dirname(L.cwd)).catch(O=>{let j=O instanceof Error?O.message:"Failed to open parent directory.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:j}})},F()});return}if(M==="RIGHT"||M==="l"||tt(M)){let O=L.entries[L.selectedIndex]??null;if(!O)return;if((M==="RIGHT"||M==="l")&&(O.kind==="directory"||O.kind==="repo")){ge(O.path).catch(j=>{let G=j instanceof Error?j.message:"Failed to open directory.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:G}})},F()});return}Dt(r,O.path).then(async j=>{await V();let G=j.repos[0]??null;n={mode:"main",shell:S({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:G?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to add workspace.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:G}})},F()})}}},Ys=M=>{let L=typeof M=="string"?M:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){va(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){Sa(L);return}if(n.mode==="main"){let O=no(n.shell,L,te(n.shell));if(O.exit){$r(0);return}if(O.detachTerminal){H.detach(),n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(n.shell.inputMode==="terminal"){if(O.changed){n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(f&&tt(L)){f=!1;return}f&&(f=!1),u=mf(L)?{key:L,at:Date.now()}:null;let j=_f(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Fr(j);return}H.writeKey(L);return}if(L==="CTRL_C"){$r(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},K=!0,F();return}if(O.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:S(O.state)},K=!0,F();return}if(O.beginTaskPrompt){n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(O.openWorkspaceBrowser){ge(t).catch(j=>{let G=j instanceof Error?j.message:"Failed to browse workspaces.";n={mode:"main",shell:S({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:G}})},F()});return}if(O.createPtyTab){xe(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(j=>{_e(j)}).catch(j=>{let G=j instanceof Error?j.message:"Failed to create tab.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.closePtyTab){Ke(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to close tab.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.refreshPullRequestChecks){rt(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to refresh PR checks.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.closeTask){_a(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to close task.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.removeWorkspace){wa(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to remove workspace.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.attachTerminal){_e(O.state);return}if(O.refreshInspection){n={mode:"main",shell:S(O.state)},l(n.shell),F(),J(n.shell).catch(j=>{let G=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:S({...n.shell,actionMessage:G})},F()});return}O.changed&&(n={mode:"main",shell:S(O.state)},Q(n.shell).catch(()=>{}),l(n.shell),F());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:S(n.shell)},K=!0,F();return}if(n.variant==="options"){Ta(L);return}if(n.variant==="runners"){Ra(L);return}if(n.optionsMessage){(L==="ESCAPE"||tt(L))&&(n={...n,optionsMessage:null},F());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},F();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},F();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:S(n.shell)},K=!0,F());return}if(tt(L)){if(n.menuIndex===0){n={mode:"main",shell:S({...n.shell,inputMode:"control"})},K=!0,F(),W();return}if(n.menuIndex===1){let O=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}$r(0)}};function Ta(M){if(n.mode!=="overlay"||n.variant!=="options")return;let L=la(n.menuIndex,M);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},F();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},K=!0,F());return}if(L.kind==="help"){let O=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}if(L.kind==="runners"){let O=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F()}}}function Ra(M){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=da(qt(n),s,M,o);if(L.kind!=="noop"){if(L.kind==="back"){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},F();return}I(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},F())}).catch(O=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=O instanceof Error?O.message:"Failed to save runner option.";n={...n,runnerOptions:{...qt(n),message:j}},F()})}}let Qs=M=>{let L=gf(M);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){H.detach(),f=!1,u=null,n={mode:"main",shell:S({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),F();return}let O=wf(L);if(O!==0){Fr(O);return}let j=bf(L);if(j){f=!1,u={key:j,at:Date.now()},H.writeKey(j);return}if(f&&L!=="\r"&&L!==`
161
179
  `&&L!==`\r
162
- `&&(f=!1),Jh(f,u,L)){f=!1;return}z.write(L)},Xs=B=>{if(n.mode!=="main")return;if(n.shell.inputMode==="control"){ga(sa(B));return}let L=sa(B);L!==0&&Mr(L)};function Mr(B){h+=B,!S&&(S=setTimeout(()=>{S=null;let L=h;h=0,L!==0&&(pa(L),N())},16))}function pa(B){z.scrollViewport(B),n={mode:"main",shell:q(n.shell)}}function Ys(){H=!0,_.fullscreen(!0)}function ga(B){B!==0&&(y+=B,!P&&(P=setTimeout(()=>{P=null;let L=y;if(y=0,L===0||n.mode!=="main"||n.shell.inputMode!=="control")return;let M=Ze(n.shell,L,F(n.shell));if(M.changed){if(M.refreshInspection){n={mode:"main",shell:b(M.state)},l(n.shell),N(),I(n.shell).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:b({...n.shell,actionMessage:K})},N()});return}n={mode:"main",shell:b(M.state)},l(n.shell),N()}},16)))}let Js=()=>{Ys(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(z.resize(Er(ht(_.width,_.height))),n={mode:"main",shell:q(n.shell)}),N()},Qs=()=>{Ys(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(z.resize(Er(ht(_.width,_.height))),n={mode:"main",shell:q(n.shell)}),N()};process.stdout.on("resize",Js),process.on("SIGCONT",Qs),_.grabInput(!0),G="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Vs),_.on("unknown",Gs),_.on("mouse",Xs),W=setInterval(()=>{Ie()},(s.github?.watchIntervalSeconds??5)*1e3),Jo().then(B=>{B.updateAvailable&&B.latest&&(A=`Update available: v${B.latest}`,N())}),N()})}async function Ht(e,t,r){let s=ze(e),[o,p,v]=await Promise.all([lt(s),Le(s),He(s)]),i=ia(v.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},d=i?await Si(i,c):null;return{workspaceRoot:e,workspaces:p.filter(w=>w.status==="active"),repos:o,tasks:v.tasks,inspection:d,...r?{enabledRunnerIds:r}:{}}}function ia(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function $h(e,t){return fr(e,t)}function Fh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Nh(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function Wh(e,t,r){let s=e.tasks.find(i=>i.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(i=>i.id===t)??null,p=s?.worktreePath??r,v=o?.kind==="agent"?Hh(o):[];return s?.type==="project"?{cwd:p,command:v,env:{GIT_CEILING_DIRECTORIES:jh(process.env.GIT_CEILING_DIRECTORIES,p)}}:{cwd:p,command:v}}function jh(e,t){let r=(e??"").split(vt.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(vt.delimiter):[...r,t].join(vt.delimiter)}function Hh(e){return e.command.length>0?e.command:["codex"]}function Ut(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Uh(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function ra(e,t,r,s={}){let o=r??e.runner,p=ke(o),v=t==="agent"?p.defaultAgentTitle:"Terminal",i=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),d=1,w=i;for(;c.has(w);)d+=1,w=`${i}-${d}`;let a=new Date().toISOString(),k=r&&r!==e.runner?r:void 0;return{id:w,kind:t,...k?{runner:k}:{},title:d===1?v:`${v} ${d}`,command:t==="agent"?me(o,void 0,s):[],createdAt:a,updatedAt:a}}async function qh(e,t,r,s,o){let p=await Ne(e);qt(o,p);let v=r?await er(e,r,s,{runner:o,config:p}):await It(e,t??"",s,{runner:o,config:p});try{let d=at();await te(ct($r(o,p).executable,{cwd:v.repoRoot,env:d}),["--help"],{cwd:v.repoRoot,env:d})}catch(d){let w=d instanceof Error?d.message:"Failed to start runner.",a={...v.task,status:"draft",runnerSession:{...v.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:w};throw await se(e,a),new Ar(w,a)}let i=oa(v.task,"agent"),c={...v.task,status:"running",selectedPtyTabId:i,runnerSession:{...v.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await se(e,c),await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),version:1,selectedRepoId:c.repoId,selectedWorkspaceId:c.workspaceId,selectedTaskId:c.id,selectedPtyTabId:c.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:c.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),c}var Ar=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function oa(e,t){let r=e.ptyTabs.find(s=>s.kind===t);if(!r)throw new Error(`Task ${e.id} is missing its ${t} PTY tab.`);return r.id}function Er(e){return{columns:Math.max(20,e.width-Oe.leftWidth-Oe.rightWidth-Oe.dividerWidth-Tr*2),rows:Math.max(5,e.height-Oe.topRailHeight-5)}}function Kh(e){return e.split(`
163
- `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function zh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Vh(e){return e.length===1||et(e)||e==="BACKSPACE"||e==="TAB"}function Ks(e){return typeof e=="string"&&new RegExp(`:(?:agent|${le.join("|")})(?:-\\d+)?$`).test(e)}function Gh(e,t){return e==="UP"&&t?-3:e==="DOWN"&&t?3:e==="PAGE_UP"?-5:e==="PAGE_DOWN"?5:e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function sa(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function Xh(e){let t=new RegExp("\x1B\\[<(\\d+);\\d+;\\d+[mM]").exec(e);if(!t?.[1])return 0;let r=Number.parseInt(t[1],10);return r===64?-3:r===65?3:0}function Yh(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function Jh(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
180
+ `&&(f=!1),kf(f,u,L)){f=!1;return}H.write(L)},Js=M=>{if(n.mode!=="main")return;if(n.shell.inputMode==="control"){Pa(ha(M));return}let L=ha(M);L!==0&&Fr(L)};function Fr(M){h+=M,!T&&(T=setTimeout(()=>{T=null;let L=h;h=0,L!==0&&(Ca(L),F())},16))}function Ca(M){H.scrollViewport(M),n={mode:"main",shell:v(n.shell)}}function Zs(){K=!0,w.fullscreen(!0)}function Pa(M){M!==0&&(y+=M,!P&&(P=setTimeout(()=>{P=null;let L=y;if(y=0,L===0||n.mode!=="main"||n.shell.inputMode!=="control")return;let O=et(n.shell,L,te(n.shell));if(O.changed){if(O.refreshInspection){n={mode:"main",shell:S(O.state)},l(n.shell),F(),J(n.shell).catch(j=>{let G=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:S({...n.shell,actionMessage:G})},F()});return}n={mode:"main",shell:S(O.state)},l(n.shell),F()}},16)))}let en=()=>{Zs(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(H.resize(Mr(ht(w.width,w.height))),n={mode:"main",shell:v(n.shell)}),F()},tn=()=>{Zs(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(H.resize(Mr(ht(w.width,w.height))),n={mode:"main",shell:v(n.shell)}),F()};process.stdout.on("resize",en),process.on("SIGCONT",tn),w.grabInput(!0),Y="control",w.hideCursor(!0),w.fullscreen(!0),w.on("key",Ys),w.on("unknown",Qs),w.on("mouse",Js),B=setInterval(()=>{ma()},(s.github?.watchIntervalSeconds??5)*1e3),oa().then(M=>{M.updateAvailable&&M.latest&&(E=`Update available: v${M.latest}`,F())}),F()})}async function Ut(e,t,r){let s=ze(e),[o,p,k]=await Promise.all([lt(s),Me(s),He(s)]),i=pa(k.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},d=i?await xi(i,c):null;return{workspaceRoot:e,workspaces:p.filter(_=>_.status==="active"),repos:o,tasks:k.tasks,inspection:d,...r?{enabledRunnerIds:r}:{}}}function pa(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function of(e,t){return wr(e,t)}function af(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function cf(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function lf(e,t,r){let s=e.tasks.find(i=>i.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(i=>i.id===t)??null,p=s?.worktreePath??r,k=o?.kind==="agent"?uf(o):[];return s?.type==="project"?{cwd:p,command:k,env:{GIT_CEILING_DIRECTORIES:df(process.env.GIT_CEILING_DIRECTORIES,p)}}:{cwd:p,command:k}}function df(e,t){let r=(e??"").split(vt.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(vt.delimiter):[...r,t].join(vt.delimiter)}function uf(e){return e.command.length>0?e.command:["codex"]}function qt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function hf(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function ua(e,t,r,s={}){let o=r??e.runner,p=ye(o),k=t==="agent"?p.defaultAgentTitle:"Terminal",i=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),d=1,_=i;for(;c.has(_);)d+=1,_=`${i}-${d}`;let a=new Date().toISOString(),b=r&&r!==e.runner?r:void 0;return{id:_,kind:t,...b?{runner:b}:{},title:d===1?k:`${k} ${d}`,command:t==="agent"?we(o,void 0,s):[],createdAt:a,updatedAt:a}}async function ff(e,t,r,s,o){let p=await Ne(e);Kt(o,p);let k=r?await tr(e,r,s,{runner:o,config:p}):await It(e,t??"",s,{runner:o,config:p});try{let d=at();await ee(ct(jr(o,p).executable,{cwd:k.repoRoot,env:d}),["--help"],{cwd:k.repoRoot,env:d})}catch(d){let _=d instanceof Error?d.message:"Failed to start runner.",a={...k.task,status:"draft",runnerSession:{...k.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:_};throw await se(e,a),new Or(_,a)}let i=ga(k.task,"agent"),c={...k.task,status:"running",selectedPtyTabId:i,runnerSession:{...k.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await se(e,c),await Ce({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??je(),version:1,selectedRepoId:c.repoId,selectedWorkspaceId:c.workspaceId,selectedTaskId:c.id,selectedPtyTabId:c.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:c.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),c}var Or=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function ga(e,t){let r=e.ptyTabs.find(s=>s.kind===t);if(!r)throw new Error(`Task ${e.id} is missing its ${t} PTY tab.`);return r.id}function Mr(e){return{columns:Math.max(20,e.width-Be.leftWidth-Be.rightWidth-Be.dividerWidth-xr*2),rows:Math.max(5,e.height-Be.topRailHeight-5)}}function pf(e){return e.split(`
181
+ `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function gf(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function mf(e){return e.length===1||tt(e)||e==="BACKSPACE"||e==="TAB"}function Gs(e){return typeof e=="string"&&new RegExp(`:(?:agent|${de.join("|")})(?:-\\d+)?$`).test(e)}function _f(e,t){return e==="UP"&&t?-3:e==="DOWN"&&t?3:e==="PAGE_UP"?-5:e==="PAGE_DOWN"?5:e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function ha(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function wf(e){let t=new RegExp("\x1B\\[<(\\d+);\\d+;\\d+[mM]").exec(e);if(!t?.[1])return 0;let r=Number.parseInt(t[1],10);return r===64?-3:r===65?3:0}function bf(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function kf(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
164
182
  `||r===`\r
165
- `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function Qh(e){let t=await Dh(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=vt.join(e,s.name);r.push({name:s.name,path:o,kind:await Zh(o)?"repo":"directory"})}return r.sort((s,o)=>s.kind!==o.kind?s.kind==="repo"?-1:1:s.name.localeCompare(o.name)),{cwd:e,entries:r,selectedIndex:0,error:null}}async function Zh(e){let t=vt.join(e,".git");return await Lh(t).catch(()=>null)!==null}function Dr(){return process.cwd()}async function ef(){try{if(process.argv[2]==="__craig-daemon"){let i=process.argv[3]??Dr(),c=ze(i);return await kt(i),await Eo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let i=process.argv[3]??Dr(),c=ze(i);return await kt(i),await Ao(c),0}let e=en(process.argv.slice(2)),t=Dr(),r=ze(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await na({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let p=await bi(e.command,o),v=ki(p);return v.length>0&&process.stdout.write(`${v}
183
+ `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function yf(e){let t=await ef(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=vt.join(e,s.name);r.push({name:s.name,path:o,kind:await vf(o)?"repo":"directory"})}return r.sort((s,o)=>s.kind!==o.kind?s.kind==="repo"?-1:1:s.name.localeCompare(o.name)),{cwd:e,entries:r,selectedIndex:0,error:null}}async function vf(e){let t=vt.join(e,".git");return await tf(t).catch(()=>null)!==null}function Br(){return process.cwd()}async function Sf(){try{if(process.argv[2]==="__craig-daemon"){let i=process.argv[3]??Br(),c=ze(i);return await kt(i),await Wo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let i=process.argv[3]??Br(),c=ze(i);return await kt(i),await jo(c),0}let e=sn(process.argv.slice(2)),t=Br(),r=ze(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await fa({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let p=await Ri(e.command,o),k=Ci(p);return k.length>0&&process.stdout.write(`${k}
166
184
  `),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
167
- `),1}}var tf=await ef();process.exit(tf);
185
+ `),1}}var Tf=await Sf();process.exit(Tf);