craig-cli 0.4.14 → 0.4.15

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 +32 -31
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
- var Ta=Object.create;var $r=Object.defineProperty;var Ra=Object.getOwnPropertyDescriptor;var Ca=Object.getOwnPropertyNames;var Pa=Object.getPrototypeOf,Ia=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var xa=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ea=(e,t)=>{for(var r in t)$r(e,r,{get:t[r],enumerable:!0})},Aa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ca(t))!Ia.call(e,o)&&o!==r&&$r(e,o,{get:()=>t[o],enumerable:!(s=Ra(t,o))||s.enumerable});return e};var Da=(e,t,r)=>(r=e!=null?Ta(Pa(e)):{},Aa(t||!e||!e.__esModule?$r(r,"default",{value:e,enumerable:!0}):r,e));function ye(e){return La[e]}function Fr(e,t={}){let r=ye(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function mt(e={}){return le.filter(t=>e.runners?.[t]?.enabled!==!1)}function nt(e={}){let t=mt(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 Gt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function _t(e){return le.includes(e)}function Zs(e){if(!e||e.length===0)return"codex";if(!_t(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${le.join(", ")}.`);return e}function Te(e){return ye(e).displayName}function _e(e,t,r={}){let s=[Fr(e,r).executable];return t&&t.length>0&&s.push(t),s}var le,La,Ae=$e(()=>{"use strict";le=["codex","cursor","claude"],La={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 Na}from"node:crypto";import{open as ja,readFile as wf,rename as Ha,rm as Ua}from"node:fs/promises";import Wr from"node:path";async function de(e,t){let r=Wr.dirname(e),s=Wr.join(r,`.${Wr.basename(e)}.${process.pid}.${Date.now()}.${Na()}.tmp`),o=await ja(s,"w");try{let g=`${JSON.stringify(t,null,2)}
3
- `;await o.writeFile(g,"utf8"),await o.sync(),await o.close(),await Ha(s,e)}catch(g){throw await o.close().catch(()=>{}),await Ua(s,{force:!0}).catch(()=>{}),g}}var Fe=$e(()=>{"use strict"});import{readFile as Ya}from"node:fs/promises";async function Ce(e){let t=await Ya(e.indexFile,"utf8"),r=JSON.parse(t);return jr(r,e.workspaceRoot,e.indexFile)}async function at(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await de(e.indexFile,r)}function jr(e,t,r){if(!Ja(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 Ja(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 ct=$e(()=>{"use strict";Fe()});import{readFile as Qa}from"node:fs/promises";async function ue(e,t){let r=await Qa(Hr(e,t),"utf8"),s=JSON.parse(r);return Za(s,Hr(e,t))}async function re(e,t){let r={...t,updatedAt:new Date().toISOString()};await de(Hr(e,t.id),r)}async function Ur(e,t){let r=await Ce(e);r.taskIds.includes(t)||await at(e,{...r,taskIds:[...r.taskIds,t]})}function Hr(e,t){return`${e.tasksDir}/${t}.json`}function Za(e,t){let r=ec(e);if(!rc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function ec(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:qr(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:nc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:sc(t.repoTargets),runnerSession:t.runnerSession??tc(t),checks:dc(t),lastCommit:t.lastCommit??null,pullRequest:uc(t),artifacts:fc(t),cleanup:pc(t)}}function tc(e){if(typeof e.title!="string")return null;let t=qr(e.runner);return{command:_e(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function rc(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"&&_t(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"&&ii(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||ic(t.repoTargets))&&ac(t.runnerSession)&&cc(t.prompt)&&ni(t.checks)&&oi(t.lastCommit)&&ai(t.pullRequest)&&lc(t.artifacts)&&ci(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function sc(e){if(Array.isArray(e))return e.filter(si)}function ic(e){return Array.isArray(e)&&e.every(si)}function si(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)&&ni(t.checks)&&oi(t.lastCommit)&&ai(t.pullRequest)&&ci(t.cleanup)}function nc(e){if(ii(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 oc(e.id,e.title,t,qr(e.runner))}function oc(e,t,r,s){let o=ye(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:_e(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function qr(e){return e&&_t(e)?e:"codex"}function ii(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 ac(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 cc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function ni(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 oi(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function ai(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&(typeof e.number=="number"||e.number===null)&&(typeof e.url=="string"||e.url===null)&&(typeof e.baseBranch=="string"||e.baseBranch===null)&&(typeof e.headBranch=="string"||e.headBranch===null)&&(e.status==="open"||e.status==="closed"||e.status==="merged"||e.status===null)&&typeof e.mergeable=="boolean"&&(typeof e.mergeStateStatus=="string"||e.mergeStateStatus===null)&&Array.isArray(e.requiredChecks)&&e.requiredChecks.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))&&(typeof e.lastSyncedAt=="string"||e.lastSyncedAt===null)&&(typeof e.lastSyncedHeadSha=="string"||e.lastSyncedHeadSha===null||e.lastSyncedHeadSha===void 0)}function lc(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 ci(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 dc(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 uc(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:hc(t.requiredChecks),lastSyncedHeadSha:t.lastSyncedHeadSha??null}:{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function hc(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 fc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function pc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var we=$e(()=>{"use strict";Fe();ct();Ae()});import{readFile as gc}from"node:fs/promises";async function De(e){try{let t=await gc(e.uiStateFile,"utf8"),r=JSON.parse(t);return mc(r,e.uiStateFile)}catch(t){if(wc(t))return null;throw t}}async function Pe(e,t){await de(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function We(){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 mc(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")||!wt(e,"inputMode")||!wt(e,"focusedRegion")||!wt(e,"activeTab")||!wt(e,"inspectorSection")||!wt(e,"inspectionMode")||!Xt(e,"openInspectionKind")||!Xt(e,"selectedFileTreePath")||!Xt(e,"selectedFilePath")||!Xt(e,"selectedDiffPath")||!_c(e,"collapsedFileTreePaths")||!wt(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 wt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function Xt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function _c(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function wc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var kt=$e(()=>{"use strict";Fe()});import{execFile as kc}from"node:child_process";import{promisify as bc}from"node:util";async function J(e,t,r={}){try{let s=await li(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(di(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function ae(e,t,r={}){try{let s=await li(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(di(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function di(e){return e instanceof Error}var li,Ie=$e(()=>{"use strict";li=bc(kc)});import{readFile as $c,readdir as Fc,rm as Wc}from"node:fs/promises";import yi from"node:path";async function Le(e,t){let r=await $c(Qt(e,t),"utf8"),s=JSON.parse(r);return Nc(s,Qt(e,t))}async function Zt(e,t){await de(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function ut(e){let t=await Fc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Le(e,yi.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function vi(e,t){await Wc(Qt(e,t),{force:!0})}function Qt(e,t){return yi.join(e.reposDir,`${t}.json`)}function Nc(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 ht=$e(()=>{"use strict";Fe()});import{readFile as jc,readdir as Hc,rm as Uc}from"node:fs/promises";import Si from"node:path";async function Pt(e,t){let r=await jc(er(e,t),"utf8"),s=JSON.parse(r);return qc(s,er(e,t))}async function bt(e,t){await de(er(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Me(e){let t=await Hc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,Si.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function Ti(e,t){await Uc(er(e,t),{force:!0})}function er(e,t){return Si.join(e.workspacesDir,`${t}.json`)}function qc(e,t){let r=Kc(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 Kc(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 It=$e(()=>{"use strict";Fe()});async function Ne(e,t){let r=await Ce(e),s=[],o=[];await Promise.all(r.taskIds.map(async n=>{try{s.push(await ue(e,n))}catch(c){if(Zc(c)){o.push(n);return}throw c}}));let y=(t?.includeClosed?s:s.filter(n=>n.status!=="closed")).filter(n=>!(t?.workspaceId&&n.workspaceId!==t.workspaceId||t?.repoId&&n.repoId!==t.repoId&&!(n.repoTargets??[]).some(c=>c.repoId===t.repoId)));return y.sort((n,c)=>n.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:y,missingTaskIds:o,repoId:t?.repoId??null}}function Zc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Dt=$e(()=>{"use strict";ct();we()});var kn={};Ea(kn,{addWorkspace:()=>$t,archiveWorkspace:()=>Ft,listWorkspaces:()=>hs,removeWorkspace:()=>Wt,removeWorkspaceRecord:()=>dr,restoreWorkspace:()=>fs});import{readdir as Ll,realpath as un,stat as Ml}from"node:fs/promises";import Ze from"node:path";async function $t(e,t){let r=Ze.resolve(e.workspaceRoot,t);if(!(await Ml(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await mn(r)?Ol(e,r):Bl(e,r)}async function hs(e,t){return{kind:"listWorkspaces",workspaces:(await Me(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Ft(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await wn(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function fs(e,t){let s={...await Pt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await De({uiStateFile:e.uiStateFile})??null;return await Pe({uiStateFile:e.uiStateFile},{...o??We(),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 Wt(e,t){let r=await Pt(e,t),s=await Ne(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 dr(e,t),await wn(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Ol(e,t){let r=await _n(t),s=await ut(e),o=s.find(a=>a.rootPath===t)??null,g=o?fn(o,r):hn(s,t,r),y=`workspace_${g.id}`,c=(await Me(e)).find(a=>a.id===y)??null,h=new Date().toISOString(),k=c??{id:y,kind:"repo",name:g.name,rootPath:t,primaryRepoId:g.id,repoId:g.id,discoveredRepoIds:[g.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:h,updatedAt:h};return await Zt(e,g),c||await bt(e,k),await pn(e,{repoIds:[g.id],workspaceIds:[k.id]}),await gn(e,k,g.id),{kind:"createWorkspace",workspace:k,repos:[g],created:!c}}async function Bl(e,t){let r=await $l(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=Wl(s,Ze.basename(t)),g=s.find(h=>h.kind==="project"&&h.rootPath===t)??null,y=new Date().toISOString(),n=r.map(h=>h.id),c=g?{...g,discoveredRepoIds:n,primaryRepoId:n[0]??g.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Ze.basename(t),rootPath:t,primaryRepoId:n[0]??"",discoveredRepoIds:n,branch:"project",status:"active",linkedRepoIds:n,archivedAt:null,createdAt:y,updatedAt:y};return await Promise.all(r.map(h=>Zt(e,h))),await bt(e,c),await pn(e,{repoIds:n,workspaceIds:[c.id]}),await gn(e,c,n[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!g}}async function $l(e,t){let r=await Ll(t,{withFileTypes:!0}),s=await ut(e),o=[];for(let g of r){if(!g.isDirectory()||g.name.startsWith("."))continue;let y=Ze.join(t,g.name);if(!await mn(y))continue;let n=s.find(h=>h.rootPath===y)??o.find(h=>h.rootPath===y),c=await _n(y);o.push(n?fn(n,c):hn([...s,...o],y,c))}return o.sort((g,y)=>g.name.localeCompare(y.name)||g.id.localeCompare(y.id))}function hn(e,t,r){let s=new Date().toISOString();return{id:Fl(e,Ze.basename(t)),name:Ze.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function fn(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Fl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(g=>g.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function Wl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(g=>g.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function pn(e,t){let r=await Ce(e);await at(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function gn(e,t,r){await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function mn(e){try{let r=(await J("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([un(r).catch(()=>Ze.resolve(r)),un(e).catch(()=>Ze.resolve(e))]);return s===o}catch{return!1}}async function _n(e){let t=await ae("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 g of["main","master","trunk"])if((await ae("git",["show-ref","--verify","--quiet",`refs/heads/${g}`],{cwd:e})).exitCode===0)return g;let o=(await J("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function dr(e,t){await Ti(e,t);let r=await Ce(e);await at(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function wn(e,t){let r=await De({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Pe({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Nt=$e(()=>{"use strict";ct();ht();It();kt();Ie();Dt()});var To=xa(So=>{(()=>{"use strict";var e={5639:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let h=c(7150),k=c(802);class a extends h.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new k.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new k.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new k.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 i=l;i<this._length-m;i++)this._array[this._getCyclicIndex(i)]=this._array[this._getCyclicIndex(i+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let i=this._length-1;i>=l;i--)this._array[this._getCyclicIndex(i+_.length)]=this._array[this._getCyclicIndex(i)];for(let i=0;i<_.length;i++)this._array[this._getCyclicIndex(l+i)]=_[i];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let i=this._length+_.length-this._maxLength;this._startIndex+=i,this._length=this._maxLength,this.onTrimEmitter.fire(i)}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 p=m-1;p>=0;p--)this.set(l+p+_,this.get(l+p));let i=l+m+_-this._length;if(i>0)for(this._length+=i;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let i=0;i<m;i++)this.set(l+i+_,this.get(l+i))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}n.CircularList=a},7453:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.clone=function c(h,k=5){if(typeof h!="object")return h;let a=Array.isArray(h)?[]:{};for(let w in h)a[w]=k<=1?h[w]:h[w]&&c(h[w],k-1);return a}},5777:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let h=c(6501),k=c(6025),a=c(7276),w=c(9640),l=c(56),m=c(4071),_=c(7792),i=c(6415),p=c(5746),f=c(5882),d=c(2486),u=c(3562),b=c(8811),S=c(802),P=c(7150),E=!1;class H 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 x in D)this.optionsService.options[x]=D[x]}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 k.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(h.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(h.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(h.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(h.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(h.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(i.UnicodeService)),this._instantiationService.setService(h.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(p.CharsetService),this._instantiationService.setService(h.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(b.OscLinkService),this._instantiationService.setService(h.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new d.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 u.WriteBuffer(((x,A)=>this._inputHandler.parse(x,A)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,x){this._writeBuffer.write(D,x)}writeSync(D,x){this._logService.logLevel<=h.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(D,x)}input(D,x=!0){this.coreService.triggerDataEvent(D,x)}resize(D,x){isNaN(D)||isNaN(x)||(D=Math.max(D,w.MINIMUM_COLS),x=Math.max(x,w.MINIMUM_ROWS),this._bufferService.resize(D,x))}scroll(D,x=!1){this._bufferService.scroll(D,x)}scrollLines(D,x){this._bufferService.scrollLines(D,x)}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 x=D-this._bufferService.buffer.ydisp;x!==0&&this.scrollLines(x)}registerEscHandler(D,x){return this._inputHandler.registerEscHandler(D,x)}registerDcsHandler(D,x){return this._inputHandler.registerDcsHandler(D,x)}registerCsiHandler(D,x){return this._inputHandler.registerCsiHandler(D,x)}registerOscHandler(D,x){return this._inputHandler.registerOscHandler(D,x)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,x=this.optionsService.rawOptions.windowsPty;x&&x.buildNumber!==void 0&&x.buildNumber!==void 0?D=x.backend==="conpty"&&x.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 x of D)x.dispose()}))}}}n.CoreTerminal=H},2486:function(y,n,c){var h=this&&this.__decorate||function(K,v,C,T){var R,F=arguments.length,j=F<3?v:T===null?T=Object.getOwnPropertyDescriptor(v,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")j=Reflect.decorate(K,v,C,T);else for(var U=K.length-1;U>=0;U--)(R=K[U])&&(j=(F<3?R(j):F>3?R(v,C,j):R(v,C))||j);return F>3&&j&&Object.defineProperty(v,C,j),j},k=this&&this.__param||function(K,v){return function(C,T){v(C,T,K)}};Object.defineProperty(n,"__esModule",{value:!0}),n.InputHandler=n.WindowsOptionsReportType=void 0,n.isValidColorIndex=W;let a=c(3534),w=c(6760),l=c(6717),m=c(7150),_=c(726),i=c(6107),p=c(8938),f=c(3055),d=c(5451),u=c(6501),b=c(6415),S=c(1346),P=c(9823),E=c(8693),H=c(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function x(K,v){if(K>24)return v.setWinLines||!1;switch(K){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 A;(function(K){K[K.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",K[K.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(A||(n.WindowsOptionsReportType=A={}));let L=0;class z extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,C,T,R,F,j,U,V,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=F,this._oscLinkService=j,this._coreMouseService=U,this._unicodeService=V,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new H.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new H.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new H.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new H.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new H.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new H.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new H.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new H.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new H.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new H.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new H.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new H.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new H.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 X(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 w.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,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([v,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(v,C){let T,R=this._activeBuffer.x,F=this._activeBuffer.y,j=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,F=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(j=this._parseStack.position+D)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===u.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=j;I<v.length;I+=D){let Q=I+D<v.length?I+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,Q),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,F,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,F,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===F||this._onCursorMove.fire();let V=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(V,this._bufferService.rows-1)})}print(v,C,T){let R,F,j=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=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 ke=C;ke<T;++ke){if(R=v[ke],R<127&&j){let Ue=j[String.fromCharCode(R)];Ue&&(R=Ue.charCodeAt(0))}let be=this._unicodeService.charProperties(R,ee);F=b.UnicodeService.extractWidth(be);let Xe=b.UnicodeService.extractShouldJoin(be),xe=Xe?b.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+F-xe>V){if(te){let Ue=Y,it=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),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),xe>0&&Y instanceof i.BufferLine&&Y.copyCellsFrom(Ue,it,0,xe,!1);it<V;)Ue.setCellFromCodepoint(it++,0,1,Q)}else if(this._activeBuffer.x=V-1,F===2)continue}if(Xe&&this._activeBuffer.x){let Ue=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ue,R,F);for(let it=F-xe;--it>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(Y.insertCells(this._activeBuffer.x,F-xe,this._activeBuffer.getNullCell(Q)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,p.NULL_CELL_CODE,p.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,F,Q),F>0)for(;--F;)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(v,C){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,C):this._parser.registerCsiHandler(v,(T=>!x(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}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 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 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,T,R=!1,F=!1){let j=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);j.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),F),R&&(j.isWrapped=!1)}_resetBufferLine(v,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),T.isWrapped=!1)}eraseInDisplay(v,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),v.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(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 T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,F=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(F-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(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 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(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(i.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 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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(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 T=v.params[0]||1,R=b.UnicodeService.extractWidth(C),F=this._activeBuffer.x-R,j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(F),U=new Uint32Array(j.length*T),V=0;for(let I=0;I<j.length;){let Q=j.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let te=V;for(let I=1;I<T;++I)U.copyWithin(te,0,V),te+=V;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,w.DEFAULT_CHARSET),this._charsetService.setgCharset(1,w.DEFAULT_CHARSET),this._charsetService.setgCharset(2,w.DEFAULT_CHARSET),this._charsetService.setgCharset(3,w.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 T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:F}=this._coreMouseService,j=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:te,alt:I}=U,Q=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,ee=v.params[0];return ke=ee,be=C?ee===2?4:ee===4?Y(j.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(!j.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(F==="SGR"):ee===1015?4:ee===1016?Y(F==="SGR_PIXELS"):ee===1048?1:ee===47||ee===1047||ee===1049?Y(te===I):ee===2004?Y(T.bracketedPasteMode):ee===2026?Y(T.synchronizedOutput):0,j.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${ke};${be}$y`),!0;var ke,be}_updateAttrColor(v,C,T,R,F){return C===2?(v|=50331648,v&=-16777216,v|=d.AttributeData.fromColorRGB([T,R,F])):C===5&&(v&=-50331904,v|=33554432|255&T),v}_extractColor(v,C,T){let R=[0,0,-1,0,0,0],F=0,j=0;do{if(R[j+F]=v.params[C+j],v.hasSubParams(C+j)){let U=v.getSubParams(C+j),V=0;do R[1]===5&&(F=1),R[j+V+1+F]=U[V];while(++V<U.length&&V+j+1+F<R.length);break}if(R[1]===5&&j+F>=2||R[1]===2&&j+F>=5)break;R[1]&&(F=1)}while(++j+C<v.length&&j+F<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 j}_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=i.DEFAULT_ATTR_DATA.fg,v.bg=i.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,T,R=this._curAttrData;for(let F=0;F<C;F++)T=v.params[F],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(v.hasSubParams(F)?v.getSubParams(F)[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&i.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?F+=this._extractColor(v,F,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&i.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);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,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(v){if(v.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(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=i.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 T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(v){let C=v.params[0]||1,T;return(v.length<2||(T=v.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(v){if(!x(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(A.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(A.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=[],T=v.split(";");for(;T.length>1;){let R=T.shift(),F=T.shift();if(/^\d+$/.exec(R)){let j=parseInt(R);if(W(j))if(F==="?")C.push({type:0,index:j});else{let U=(0,E.parseColor)(F);U&&C.push({type:1,index:j,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(v){let C=v.indexOf(";");if(C===-1)return!0;let T=v.slice(0,C).trim(),R=v.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(v,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=v.split(":"),R,F=T.findIndex((j=>j.startsWith("id=")));return F!==-1&&(R=T[F].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 T=v.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 F=(0,E.parseColor)(T[R]);F&&this._onColor.fire([{type:1,index:this._specialColors[C],color:F}])}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=[],T=v.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let F=parseInt(T[R]);W(F)&&C.push({type:2,index:F})}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,w.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset($[v[0]],w.CHARSETS[v[1]]||w.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=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.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 T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(F=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${F}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${T.scrollTop+1};${T.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)}}n.InputHandler=z;let X=class{constructor(K){this._bufferService=K,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(K){K<this.start?this.start=K:K>this.end&&(this.end=K)}markRangeDirty(K,v){K>v&&(L=K,K=v,v=L),K<this.start&&(this.start=K),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function W(K){return 0<=K&&K<256}X=h([k(0,u.IBufferService)],X)},701:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isChromeOS=n.isLinux=n.isWindows=n.isIphone=n.isIpad=n.isMac=n.isSafari=n.isLegacyEdge=n.isFirefox=n.isNode=void 0,n.getSafariVersion=function(){if(!n.isSafari)return 0;let k=c.match(/Version\/(\d+)/);return k===null||k.length<2?0:parseInt(k[1])},n.isNode=typeof process<"u"&&"title"in process;let c=n.isNode?"node":navigator.userAgent,h=n.isNode?"node":navigator.platform;n.isFirefox=c.includes("Firefox"),n.isLegacyEdge=c.includes("Edge"),n.isSafari=/^((?!chrome|android).)*safari/i.test(c),n.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(h),n.isIpad=h==="iPad",n.isIphone=h==="iPhone",n.isWindows=["Windows","Win16","Win32","WinCE"].includes(h),n.isLinux=h.indexOf("Linux")>=0,n.isChromeOS=/\bCrOS\b/.test(c)},6168:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DebouncedIdleTask=n.IdleTaskQueue=n.PriorityTaskQueue=void 0;let h=c(701);class k{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,i=l.timeRemaining(),p=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,_),p=l.timeRemaining(),1.5*_>p)return i-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(i-m))}ms`),void this._start();i=p}this.clear()}}class a extends k{_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())}}}n.PriorityTaskQueue=a,n.IdleTaskQueue=!h.isNode&&"requestIdleCallback"in window?class extends k{_requestCallback(w){return requestIdleCallback(w)}_cancelCallback(w){cancelIdleCallback(w)}}:a,n.DebouncedIdleTask=class{constructor(){this._queue=new n.IdleTaskQueue}set(w){this._queue.clear(),this._queue.enqueue(w)}flush(){this._queue.flush()}}},5882:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(k){let a=k.buffer.lines.get(k.buffer.ybase+k.buffer.y-1),w=a?.get(k.cols-1),l=k.buffer.lines.get(k.buffer.ybase+k.buffer.y);l&&w&&(l.isWrapped=w[h.CHAR_DATA_CODE_INDEX]!==h.NULL_CELL_CODE&&w[h.CHAR_DATA_CODE_INDEX]!==h.WHITESPACE_CELL_CODE)};let h=c(8938)},5451:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ExtendedAttrs=n.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new h}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}}n.AttributeData=c;class h{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,w=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=w}clone(){return new h(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}n.ExtendedAttrs=h},1073:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Buffer=n.MAX_BUFFER_SIZE=void 0;let h=c(5639),k=c(6168),a=c(5451),w=c(6107),l=c(732),m=c(3055),_=c(8938),i=c(8158),p=c(6760);n.MAX_BUFFER_SIZE=4294967295,n.Buffer=class{constructor(f,d,u){this._hasScrollback=f,this._optionsService=d,this._bufferService=u,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=w.DEFAULT_ATTR_DATA.clone(),this.savedCharset=p.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 k.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new h.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,d){return new w.BufferLine(this._bufferService.cols,this.getNullCell(f),d)}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 d=f+this._optionsService.rawOptions.scrollback;return d>n.MAX_BUFFER_SIZE?n.MAX_BUFFER_SIZE:d}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=w.DEFAULT_ATTR_DATA);let d=this._rows;for(;d--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new h.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,d){let u=this.getNullCell(w.DEFAULT_ATTR_DATA),b=0,S=this._getCorrectBufferLength(d);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let E=0;E<this.lines.length;E++)b+=+this.lines.get(E).resize(f,u);let P=0;if(this._rows<d)for(let E=this._rows;E<d;E++)this.lines.length<d+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new w.BufferLine(f,u)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new w.BufferLine(f,u)));else for(let E=this._rows;E>d;E--)this.lines.length>d+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let E=this.lines.length-S;E>0&&(this.lines.trimStart(E),this.ybase=Math.max(this.ybase-E,0),this.ydisp=Math.max(this.ydisp-E,0),this.savedY=Math.max(this.savedY-E,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,d-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=d-1,this._isReflowEnabled&&(this._reflow(f,d),this._cols>f))for(let P=0;P<this.lines.length;P++)b+=+this.lines.get(P).resize(f,u);this._cols=f,this._rows=d,this._memoryCleanupQueue.clear(),b>.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 d=0;for(;this._memoryCleanupPosition<this.lines.length;)if(d+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),d>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,d){this._cols!==f&&(f>this._cols?this._reflowLarger(f,d):this._reflowSmaller(f,d))}_reflowLarger(f,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),u);if(b.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,b);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,d,S.countRemoved)}}_reflowLargerAdjustViewport(f,d,u){let b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=u;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<d&&this.lines.push(new w.BufferLine(f,b))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-u,0)}_reflowSmaller(f,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=[],P=0;for(let E=this.lines.length-1;E>=0;E--){let H=this.lines.get(E);if(!H||!H.isWrapped&&H.getTrimmedLength()<=f)continue;let $=[H];for(;H.isWrapped&&E>0;)H=this.lines.get(--E),$.unshift(H);if(!u){let T=this.ybase+this.y;if(T>=E&&T<E+$.length)continue}let D=$[$.length-1].getTrimmedLength(),x=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,f),A=x.length-$.length,L;L=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+A):Math.max(0,this.lines.length-this.lines.maxLength+A);let z=[];for(let T=0;T<A;T++){let R=this.getBlankLine(w.DEFAULT_ATTR_DATA,!0);z.push(R)}z.length>0&&(S.push({start:E+$.length+P,newLines:z}),P+=z.length),$.push(...z);let X=x.length-1,W=x[X];W===0&&(X--,W=x[X]);let K=$.length-A-1,v=D;for(;K>=0;){let T=Math.min(v,W);if($[X]===void 0)break;if($[X].copyCellsFrom($[K],v-T,W-T,T,!0),W-=T,W===0&&(X--,W=x[X]),v-=T,v===0){K--;let R=Math.max(K,0);v=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)x[T]<f&&$[T].setCell(x[T],b);let C=A-L;for(;C-- >0;)this.ybase===0?this.y<d-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-d&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+A,this.ybase+d-1)}if(S.length>0){let E=[],H=[];for(let W=0;W<this.lines.length;W++)H.push(this.lines.get(W));let $=this.lines.length,D=$-1,x=0,A=S[x];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let L=0;for(let W=Math.min(this.lines.maxLength-1,$+P-1);W>=0;W--)if(A&&A.start>D+L){for(let K=A.newLines.length-1;K>=0;K--)this.lines.set(W--,A.newLines[K]);W++,E.push({index:D+1,amount:A.newLines.length}),L+=A.newLines.length,A=S[++x]}else this.lines.set(W,H[D--]);let z=0;for(let W=E.length-1;W>=0;W--)E[W].index+=z,this.lines.onInsertEmitter.fire(E[W]),z+=E[W].amount;let X=Math.max(0,$+P-this.lines.maxLength);X>0&&this.lines.onTrimEmitter.fire(X)}}translateBufferLineToString(f,d,u=0,b){let S=this.lines.get(f);return S?S.translateToString(d,u,b):""}getWrappedRangeForLine(f){let d=f,u=f;for(;d>0&&this.lines.get(d).isWrapped;)d--;for(;u+1<this.lines.length&&this.lines.get(u+1).isWrapped;)u++;return{first:d,last:u}}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 d=0;d<this.markers.length;d++)this.markers[d].line===f&&(this.markers[d].dispose(),this.markers.splice(d--,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 d=new i.Marker(f);return this.markers.push(d),d.register(this.lines.onTrim((u=>{d.line-=u,d.line<0&&d.dispose()}))),d.register(this.lines.onInsert((u=>{d.line>=u.index&&(d.line+=u.amount)}))),d.register(this.lines.onDelete((u=>{d.line>=u.index&&d.line<u.index+u.amount&&d.dispose(),d.line>u.index&&(d.line-=u.amount)}))),d.register(d.onDispose((()=>this._removeMarker(d)))),d}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLine=n.DEFAULT_ATTR_DATA=void 0;let h=c(5451),k=c(3055),a=c(8938),w=c(726);n.DEFAULT_ATTR_DATA=Object.freeze(new h.AttributeData);let l=0;class m{constructor(i,p,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*i);let d=p||k.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let u=0;u<i;++u)this.setCell(u,d);this.length=i}get(i){let p=this._data[3*i+0],f=2097151&p;return[this._data[3*i+1],2097152&p?this._combined[i]:f?(0,w.stringFromCodePoint)(f):"",p>>22,2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):f]}set(i,p){this._data[3*i+1]=p[a.CHAR_DATA_ATTR_INDEX],p[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[i]=p[1],this._data[3*i+0]=2097152|i|p[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*i+0]=p[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(i){return this._data[3*i+0]>>22}hasWidth(i){return 12582912&this._data[3*i+0]}getFg(i){return this._data[3*i+1]}getBg(i){return this._data[3*i+2]}hasContent(i){return 4194303&this._data[3*i+0]}getCodePoint(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):2097151&p}isCombined(i){return 2097152&this._data[3*i+0]}getString(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i]:2097151&p?(0,w.stringFromCodePoint)(2097151&p):""}isProtected(i){return 536870912&this._data[3*i+2]}loadCell(i,p){return l=3*i,p.content=this._data[l+0],p.fg=this._data[l+1],p.bg=this._data[l+2],2097152&p.content&&(p.combinedData=this._combined[i]),268435456&p.bg&&(p.extended=this._extendedAttrs[i]),p}setCell(i,p){2097152&p.content&&(this._combined[i]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[i]=p.extended),this._data[3*i+0]=p.content,this._data[3*i+1]=p.fg,this._data[3*i+2]=p.bg}setCellFromCodepoint(i,p,f,d){268435456&d.bg&&(this._extendedAttrs[i]=d.extended),this._data[3*i+0]=p|f<<22,this._data[3*i+1]=d.fg,this._data[3*i+2]=d.bg}addCodepointToCell(i,p,f){let d=this._data[3*i+0];2097152&d?this._combined[i]+=(0,w.stringFromCodePoint)(p):2097151&d?(this._combined[i]=(0,w.stringFromCodePoint)(2097151&d)+(0,w.stringFromCodePoint)(p),d&=-2097152,d|=2097152):d=p|4194304,f&&(d&=-12582913,d|=f<<22),this._data[3*i+0]=d}insertCells(i,p,f){if((i%=this.length)&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,f),p<this.length-i){let d=new k.CellData;for(let u=this.length-i-p-1;u>=0;--u)this.setCell(i+p+u,this.loadCell(i+u,d));for(let u=0;u<p;++u)this.setCell(i+u,f)}else for(let d=i;d<this.length;++d)this.setCell(d,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(i,p,f){if(i%=this.length,p<this.length-i){let d=new k.CellData;for(let u=0;u<this.length-i-p;++u)this.setCell(i+u,this.loadCell(i+p+u,d));for(let u=this.length-p;u<this.length;++u)this.setCell(u,f)}else for(let d=i;d<this.length;++d)this.setCell(d,f);i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,f),this.getWidth(i)!==0||this.hasContent(i)||this.setCellFromCodepoint(i,0,1,f)}replaceCells(i,p,f,d=!1){if(d)for(i&&this.getWidth(i-1)===2&&!this.isProtected(i-1)&&this.setCellFromCodepoint(i-1,0,1,f),p<this.length&&this.getWidth(p-1)===2&&!this.isProtected(p)&&this.setCellFromCodepoint(p,0,1,f);i<p&&i<this.length;)this.isProtected(i)||this.setCell(i,f),i++;else for(i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,f),p<this.length&&this.getWidth(p-1)===2&&this.setCellFromCodepoint(p,0,1,f);i<p&&i<this.length;)this.setCell(i++,f)}resize(i,p){if(i===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*i;if(i>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let d=new Uint32Array(f);d.set(this._data),this._data=d}for(let d=this.length;d<i;++d)this.setCell(d,p)}else{this._data=this._data.subarray(0,f);let d=Object.keys(this._combined);for(let b=0;b<d.length;b++){let S=parseInt(d[b],10);S>=i&&delete this._combined[S]}let u=Object.keys(this._extendedAttrs);for(let b=0;b<u.length;b++){let S=parseInt(u[b],10);S>=i&&delete this._extendedAttrs[S]}}return this.length=i,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let i=new Uint32Array(this._data.length);return i.set(this._data),this._data=i,1}return 0}fill(i,p=!1){if(p)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,i);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,i)}}copyFrom(i){this.length!==i.length?this._data=new Uint32Array(i._data):this._data.set(i._data),this.length=i.length,this._combined={};for(let p in i._combined)this._combined[p]=i._combined[p];this._extendedAttrs={};for(let p in i._extendedAttrs)this._extendedAttrs[p]=i._extendedAttrs[p];this.isWrapped=i.isWrapped}clone(){let i=new m(0);i._data=new Uint32Array(this._data),i.length=this.length;for(let p in this._combined)i._combined[p]=this._combined[p];for(let p in this._extendedAttrs)i._extendedAttrs[p]=this._extendedAttrs[p];return i.isWrapped=this.isWrapped,i}getTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0])return i+(this._data[3*i+0]>>22);return 0}getNoBgTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0]||50331648&this._data[3*i+2])return i+(this._data[3*i+0]>>22);return 0}copyCellsFrom(i,p,f,d,u){let b=i._data;if(u)for(let P=d-1;P>=0;P--){for(let E=0;E<3;E++)this._data[3*(f+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[f+P]=i._extendedAttrs[p+P])}else for(let P=0;P<d;P++){for(let E=0;E<3;E++)this._data[3*(f+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[f+P]=i._extendedAttrs[p+P])}let S=Object.keys(i._combined);for(let P=0;P<S.length;P++){let E=parseInt(S[P],10);E>=p&&(this._combined[E-p+f]=i._combined[E])}}translateToString(i,p,f,d){p=p??0,f=f??this.length,i&&(f=Math.min(f,this.getTrimmedLength())),d&&(d.length=0);let u="";for(;p<f;){let b=this._data[3*p+0],S=2097151&b,P=2097152&b?this._combined[p]:S?(0,w.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(u+=P,d)for(let E=0;E<P.length;++E)d.push(p);p+=b>>22||1}return d&&d.push(p),u}}n.BufferLine=m},732:(y,n)=>{function c(h,k,a){if(k===h.length-1)return h[k].getTrimmedLength();let w=!h[k].hasContent(a-1)&&h[k].getWidth(a-1)===1,l=h[k+1].getWidth(0)===2;return w&&l?a-1:a}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(h,k,a,w,l,m){let _=[];for(let i=0;i<h.length-1;i++){let p=i,f=h.get(++p);if(!f.isWrapped)continue;let d=[h.get(i)];for(;p<h.length&&f.isWrapped;)d.push(f),f=h.get(++p);if(!m&&w>=i&&w<p){i+=d.length-1;continue}let u=0,b=c(d,u,k),S=1,P=0;for(;S<d.length;){let H=c(d,S,k),$=H-P,D=a-b,x=Math.min($,D);d[u].copyCellsFrom(d[S],P,b,x,!1),b+=x,b===a&&(u++,b=0),P+=x,P===H&&(S++,P=0),b===0&&u!==0&&d[u-1].getWidth(a-1)===2&&(d[u].copyCellsFrom(d[u-1],a-1,b++,1,!1),d[u-1].setCell(a-1,l))}d[u].replaceCells(b,a,l);let E=0;for(let H=d.length-1;H>0&&(H>u||d[H].getTrimmedLength()===0);H--)E++;E>0&&(_.push(i+d.length-E),_.push(E)),i+=d.length-1}return _},n.reflowLargerCreateNewLayout=function(h,k){let a=[],w=0,l=k[w],m=0;for(let _=0;_<h.length;_++)if(l===_){let i=k[++w];h.onDeleteEmitter.fire({index:_-m,amount:i}),_+=i-1,m+=i,l=k[++w]}else a.push(_);return{layout:a,countRemoved:m}},n.reflowLargerApplyNewLayout=function(h,k){let a=[];for(let w=0;w<k.length;w++)a.push(h.get(k[w]));for(let w=0;w<a.length;w++)h.set(w,a[w]);h.length=k.length},n.reflowSmallerGetNewLineLengths=function(h,k,a){let w=[],l=h.map(((p,f)=>c(h,f,k))).reduce(((p,f)=>p+f)),m=0,_=0,i=0;for(;i<l;){if(l-i<a){w.push(l-i);break}m+=a;let p=c(h,_,k);m>p&&(m-=p,_++);let f=h[_].getWidth(m-1)===2;f&&m--;let d=f?a-1:a;w.push(d),i+=d}return w},n.getWrappedLineTrimmedLength=c},4097:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferSet=void 0;let h=c(7150),k=c(1073),a=c(802);class w extends h.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 k.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new k.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)}}n.BufferSet=w},3055:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let h=c(726),k=c(8938),a=c(5451);class w 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 w;return _.setFromCharData(m),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,h.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[k.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(m[k.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(m[k.CHAR_DATA_CHAR_INDEX].length===2){let i=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){let p=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=p&&p<=57343?this.content=1024*(i-55296)+p-56320+65536|m[k.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[k.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=m[k.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[k.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}n.CellData=w},8938:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WHITESPACE_CELL_CODE=n.WHITESPACE_CELL_WIDTH=n.WHITESPACE_CELL_CHAR=n.NULL_CELL_CODE=n.NULL_CELL_WIDTH=n.NULL_CELL_CHAR=n.CHAR_DATA_CODE_INDEX=n.CHAR_DATA_WIDTH_INDEX=n.CHAR_DATA_CHAR_INDEX=n.CHAR_DATA_ATTR_INDEX=n.DEFAULT_EXT=n.DEFAULT_ATTR=n.DEFAULT_COLOR=void 0,n.DEFAULT_COLOR=0,n.DEFAULT_ATTR=n.DEFAULT_COLOR<<9|256,n.DEFAULT_EXT=0,n.CHAR_DATA_ATTR_INDEX=0,n.CHAR_DATA_CHAR_INDEX=1,n.CHAR_DATA_WIDTH_INDEX=2,n.CHAR_DATA_CODE_INDEX=3,n.NULL_CELL_CHAR="",n.NULL_CELL_WIDTH=1,n.NULL_CELL_CODE=0,n.WHITESPACE_CELL_CHAR=" ",n.WHITESPACE_CELL_WIDTH=1,n.WHITESPACE_CELL_CODE=32},8158:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let h=c(802),k=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 h.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,k.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}n.Marker=a,a._nextId=1},6760:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CHARSET=n.CHARSETS=void 0,n.CHARSETS={},n.DEFAULT_CHARSET=n.CHARSETS.B,n.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"},n.CHARSETS.A={"#":"\xA3"},n.CHARSETS.B=void 0,n.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},n.CHARSETS.C=n.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},n.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},n.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},n.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},n.CHARSETS.E=n.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},n.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},n.CHARSETS.H=n.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,n)=>{var c,h,k;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.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||(n.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"})(h||(n.C1=h={})),(function(a){a.ST=`${c.ESC}\\`})(k||(n.C1_ESCAPED=k={}))},726:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Utf8ToUtf32=n.StringToUtf32=void 0,n.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},n.utf32ToString=function(c,h=0,k=c.length){let a="";for(let w=h;w<k;++w){let l=c[w];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},n.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,h){let k=c.length;if(!k)return 0;let a=0,w=0;if(this._interim){let l=c.charCodeAt(w++);56320<=l&&l<=57343?h[a++]=1024*(this._interim-55296)+l-56320+65536:(h[a++]=this._interim,h[a++]=l),this._interim=0}for(let l=w;l<k;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=k)return this._interim=m,a;let _=c.charCodeAt(l);56320<=_&&_<=57343?h[a++]=1024*(m-55296)+_-56320+65536:(h[a++]=m,h[a++]=_)}else m!==65279&&(h[a++]=m)}return a}},n.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,h){let k=c.length;if(!k)return 0;let a,w,l,m,_=0,i=0,p=0;if(this.interim[0]){let u=!1,b=this.interim[0];b&=(224&b)==192?31:(240&b)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)b<<=6,b|=S;let E=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,H=E-P;for(;p<H;){if(p>=k)return 0;if(S=c[p++],(192&S)!=128){p--,u=!0;break}this.interim[P++]=S,b<<=6,b|=63&S}u||(E===2?b<128?p--:h[_++]=b:E===3?b<2048||b>=55296&&b<=57343||b===65279||(h[_++]=b):b<65536||b>1114111||(h[_++]=b)),this.interim.fill(0)}let f=k-4,d=p;for(;d<k;){for(;!(!(d<f)||128&(a=c[d])||128&(w=c[d+1])||128&(l=c[d+2])||128&(m=c[d+3]));)h[_++]=a,h[_++]=w,h[_++]=l,h[_++]=m,d+=4;if(a=c[d++],a<128)h[_++]=a;else if((224&a)==192){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(i=(31&a)<<6|63&w,i<128){d--;continue}h[_++]=i}else if((240&a)==224){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(l=c[d++],(192&l)!=128){d--;continue}if(i=(15&a)<<12|(63&w)<<6|63&l,i<2048||i>=55296&&i<=57343||i===65279)continue;h[_++]=i}else if((248&a)==240){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(l=c[d++],(192&l)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,this.interim[2]=l,_;if(m=c[d++],(192&m)!=128){d--;continue}if(i=(7&a)<<18|(63&w)<<12|(63&l)<<6|63&m,i<65536||i>1114111)continue;h[_++]=i}}return _}}},7428:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeV6=void 0;let h=c(6415),k=[[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]],w;n.UnicodeV6=class{constructor(){if(this.version="6",!w){w=new Uint8Array(65536),w.fill(1),w[0]=0,w.fill(0,1,32),w.fill(0,127,160),w.fill(2,4352,4448),w[9001]=2,w[9002]=2,w.fill(2,11904,42192),w[12351]=1,w.fill(2,44032,55204),w.fill(2,63744,64256),w.fill(2,65040,65050),w.fill(2,65072,65136),w.fill(2,65280,65377),w.fill(2,65504,65511);for(let l=0;l<k.length;++l)w.fill(0,k[l][0],k[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?w[l]:(function(m,_){let i,p=0,f=_.length-1;if(m<_[0][0]||m>_[f][1])return!1;for(;f>=p;)if(i=p+f>>1,m>_[i][1])p=i+1;else{if(!(m<_[i][0]))return!0;f=i-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let _=this.wcwidth(l),i=_===0&&m!==0;if(i){let p=h.UnicodeService.extractWidth(m);p===0?i=!1:p>_&&(_=p)}return h.UnicodeService.createPropertyValue(0,_,i)}}},3562:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WriteBuffer=void 0;let h=c(7150),k=c(802);class a extends h.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 k.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 i=this._callbacks.shift();i&&i()}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 i=this._writeBuffer[this._bufferOffset],p=this._action(i,m);if(p){let d=u=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,u))):this._innerWrite(_,u);return void p.catch((u=>(queueMicrotask((()=>{throw u})),Promise.resolve(!1)))).then(d)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=i.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()}}n.WriteBuffer=a},8693:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.parseColor=function(a){if(!a)return;let w=a.toLowerCase();if(w.indexOf("rgb:")===0){w=w.slice(4);let l=c.exec(w);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(w.indexOf("#")===0&&(w=w.slice(1),h.exec(w)&&[3,6,9,12].includes(w.length))){let l=w.length/3,m=[0,0,0];for(let _=0;_<3;++_){let i=parseInt(w.slice(l*_,l*_+l),16);m[_]=l===1?i<<4:l===2?i:l===3?i>>4:i>>8}return m}},n.toRgbString=function(a,w=16){let[l,m,_]=a;return`rgb:${k(l,w)}/${k(m,w)}/${k(_,w)}`};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})$/,h=/^[\da-f]+$/;function k(a,w){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(w){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.PAYLOAD_LIMIT=void 0,n.PAYLOAD_LIMIT=1e7},9823:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DcsHandler=n.DcsParser=void 0;let h=c(726),k=c(7262),a=c(1263),w=[];n.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=w,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=w}registerHandler(m,_){this._handlers[m]===void 0&&(this._handlers[m]=[]);let i=this._handlers[m];return i.push(_),{dispose:()=>{let p=i.indexOf(_);p!==-1&&i.splice(p,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=w,this._ident=0}hook(m,_){if(this.reset(),this._ident=m,this._active=this._handlers[m]||w,this._active.length)for(let i=this._active.length-1;i>=0;i--)this._active[i].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(m,_,i){if(this._active.length)for(let p=this._active.length-1;p>=0;p--)this._active[p].put(m,_,i);else this._handlerFb(this._ident,"PUT",(0,h.utf32ToString)(m,_,i))}unhook(m,_=!0){if(this._active.length){let i=!1,p=this._active.length-1,f=!1;if(this._stack.paused&&(p=this._stack.loopPosition-1,i=_,f=this._stack.fallThrough,this._stack.paused=!1),!f&&i===!1){for(;p>=0&&(i=this._active[p].unhook(m),i!==!0);p--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!1,i;p--}for(;p>=0;p--)if(i=this._active[p].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",m);this._active=w,this._ident=0}};let l=new k.Params;l.addParam(0),n.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,_,i){this._hitLimit||(this._data+=(0,h.utf32ToString)(m,_,i),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((i=>(this._params=l,this._data="",this._hitLimit=!1,i)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.EscapeSequenceParser=n.VT500_TRANSITION_TABLE=n.TransitionTable=void 0;let h=c(7150),k=c(7262),a=c(1346),w=c(9823);class l{constructor(p){this.table=new Uint8Array(p)}setDefault(p,f){this.table.fill(p<<4|f)}add(p,f,d,u){this.table[f<<8|p]=d<<4|u}addMany(p,f,d,u){for(let b=0;b<p.length;b++)this.table[f<<8|p[b]]=d<<4|u}}n.TransitionTable=l;let m=160;n.VT500_TRANSITION_TABLE=(function(){let i=new l(4095),p=Array.apply(null,Array(256)).map(((P,E)=>E)),f=(P,E)=>p.slice(P,E),d=f(32,127),u=f(0,24);u.push(25),u.push.apply(u,f(28,32));let b=f(0,14),S;for(S in i.setDefault(1,0),i.addMany(d,0,2,0),b)i.addMany([24,26,153,154],S,3,0),i.addMany(f(128,144),S,3,0),i.addMany(f(144,152),S,3,0),i.add(156,S,0,0),i.add(27,S,11,1),i.add(157,S,4,8),i.addMany([152,158,159],S,0,7),i.add(155,S,11,3),i.add(144,S,11,9);return i.addMany(u,0,3,0),i.addMany(u,1,3,1),i.add(127,1,0,1),i.addMany(u,8,0,8),i.addMany(u,3,3,3),i.add(127,3,0,3),i.addMany(u,4,3,4),i.add(127,4,0,4),i.addMany(u,6,3,6),i.addMany(u,5,3,5),i.add(127,5,0,5),i.addMany(u,2,3,2),i.add(127,2,0,2),i.add(93,1,4,8),i.addMany(d,8,5,8),i.add(127,8,5,8),i.addMany([156,27,24,26,7],8,6,0),i.addMany(f(28,32),8,0,8),i.addMany([88,94,95],1,0,7),i.addMany(d,7,0,7),i.addMany(u,7,0,7),i.add(156,7,0,0),i.add(127,7,0,7),i.add(91,1,11,3),i.addMany(f(64,127),3,7,0),i.addMany(f(48,60),3,8,4),i.addMany([60,61,62,63],3,9,4),i.addMany(f(48,60),4,8,4),i.addMany(f(64,127),4,7,0),i.addMany([60,61,62,63],4,0,6),i.addMany(f(32,64),6,0,6),i.add(127,6,0,6),i.addMany(f(64,127),6,0,0),i.addMany(f(32,48),3,9,5),i.addMany(f(32,48),5,9,5),i.addMany(f(48,64),5,0,6),i.addMany(f(64,127),5,7,0),i.addMany(f(32,48),4,9,5),i.addMany(f(32,48),1,9,2),i.addMany(f(32,48),2,9,2),i.addMany(f(48,127),2,10,0),i.addMany(f(48,80),1,10,0),i.addMany(f(81,88),1,10,0),i.addMany([89,90,92],1,10,0),i.addMany(f(96,127),1,10,0),i.add(80,1,11,9),i.addMany(u,9,0,9),i.add(127,9,0,9),i.addMany(f(28,32),9,0,9),i.addMany(f(32,48),9,9,12),i.addMany(f(48,60),9,8,10),i.addMany([60,61,62,63],9,9,10),i.addMany(u,11,0,11),i.addMany(f(32,128),11,0,11),i.addMany(f(28,32),11,0,11),i.addMany(u,10,0,10),i.add(127,10,0,10),i.addMany(f(28,32),10,0,10),i.addMany(f(48,60),10,8,10),i.addMany([60,61,62,63],10,0,11),i.addMany(f(32,48),10,9,12),i.addMany(u,12,0,12),i.add(127,12,0,12),i.addMany(f(28,32),12,0,12),i.addMany(f(32,48),12,9,12),i.addMany(f(48,64),12,0,11),i.addMany(f(64,127),12,12,13),i.addMany(f(64,127),10,12,13),i.addMany(f(64,127),9,12,13),i.addMany(u,13,13,13),i.addMany(d,13,13,13),i.add(127,13,0,13),i.addMany([27,156,24,26],13,14,0),i.add(m,0,2,0),i.add(m,8,5,8),i.add(m,6,0,6),i.add(m,11,0,11),i.add(m,13,13,13),i})();class _ extends h.Disposable{constructor(p=n.VT500_TRANSITION_TABLE){super(),this._transitions=p,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new k.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,d,u)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,d)=>{},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,h.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 w.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(p,f=[64,126]){let d=0;if(p.prefix){if(p.prefix.length>1)throw new Error("only one byte as prefix supported");if(d=p.prefix.charCodeAt(0),d&&60>d||d>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(p.intermediates){if(p.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let b=0;b<p.intermediates.length;++b){let S=p.intermediates.charCodeAt(b);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");d<<=8,d|=S}}if(p.final.length!==1)throw new Error("final must be a single byte");let u=p.final.charCodeAt(0);if(f[0]>u||u>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return d<<=8,d|=u,d}identToString(p){let f=[];for(;p;)f.push(String.fromCharCode(255&p)),p>>=8;return f.reverse().join("")}setPrintHandler(p){this._printHandler=p}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(p,f){let d=this._identifier(p,[48,126]);this._escHandlers[d]===void 0&&(this._escHandlers[d]=[]);let u=this._escHandlers[d];return u.push(f),{dispose:()=>{let b=u.indexOf(f);b!==-1&&u.splice(b,1)}}}clearEscHandler(p){this._escHandlers[this._identifier(p,[48,126])]&&delete this._escHandlers[this._identifier(p,[48,126])]}setEscHandlerFallback(p){this._escHandlerFb=p}setExecuteHandler(p,f){this._executeHandlers[p.charCodeAt(0)]=f}clearExecuteHandler(p){this._executeHandlers[p.charCodeAt(0)]&&delete this._executeHandlers[p.charCodeAt(0)]}setExecuteHandlerFallback(p){this._executeHandlerFb=p}registerCsiHandler(p,f){let d=this._identifier(p);this._csiHandlers[d]===void 0&&(this._csiHandlers[d]=[]);let u=this._csiHandlers[d];return u.push(f),{dispose:()=>{let b=u.indexOf(f);b!==-1&&u.splice(b,1)}}}clearCsiHandler(p){this._csiHandlers[this._identifier(p)]&&delete this._csiHandlers[this._identifier(p)]}setCsiHandlerFallback(p){this._csiHandlerFb=p}registerDcsHandler(p,f){return this._dcsParser.registerHandler(this._identifier(p),f)}clearDcsHandler(p){this._dcsParser.clearHandler(this._identifier(p))}setDcsHandlerFallback(p){this._dcsParser.setHandlerFallback(p)}registerOscHandler(p,f){return this._oscParser.registerHandler(p,f)}clearOscHandler(p){this._oscParser.clearHandler(p)}setOscHandlerFallback(p){this._oscParser.setHandlerFallback(p)}setErrorHandler(p){this._errorHandler=p}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(p,f,d,u,b){this._parseStack.state=p,this._parseStack.handlers=f,this._parseStack.handlerPos=d,this._parseStack.transition=u,this._parseStack.chunkPos=b}parse(p,f,d){let u,b=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(d===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let E=this._parseStack.handlers,H=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](this._params),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 4:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 6:if(b=p[this._parseStack.chunkPos],u=this._dcsParser.unhook(b!==24&&b!==26,d),u)return u;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=p[this._parseStack.chunkPos],u=this._oscParser.end(b!==24&&b!==26,d),u)return u;b===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 E=P;E<f;++E){switch(b=p[E],S=this._transitions.table[this.currentState<<8|(b<160?b:m)],S>>4){case 2:for(let A=E+1;;++A){if(A>=f||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=f||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=f||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=f||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}}break;case 3:this._executeHandlers[b]?this._executeHandlers[b]():this._executeHandlerFb(b),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:E,code:b,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let H=this._csiHandlers[this._collect<<8|b],$=H?H.length-1:-1;for(;$>=0&&(u=H[$](this._params),u!==!0);$--)if(u instanceof Promise)return this._preserveStack(3,H,$,S,E),u;$<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingJoinState=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++E<f&&(b=p[E])>47&&b<60);E--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:let D=this._escHandlers[this._collect<<8|b],x=D?D.length-1:-1;for(;x>=0&&(u=D[x](),u!==!0);x--)if(u instanceof Promise)return this._preserveStack(4,D,x,S,E),u;x<0&&this._escHandlerFb(this._collect<<8|b),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|b,this._params);break;case 13:for(let A=E+1;;++A)if(A>=f||(b=p[A])===24||b===26||b===27||b>127&&b<m){this._dcsParser.put(p,E,A),E=A-1;break}break;case 14:if(u=this._dcsParser.unhook(b!==24&&b!==26),u)return this._preserveStack(6,[],0,S,E),u;b===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 A=E+1;;A++)if(A>=f||(b=p[A])<32||b>127&&b<m){this._oscParser.put(p,E,A),E=A-1;break}break;case 6:if(u=this._oscParser.end(b!==24&&b!==26),u)return this._preserveStack(5,[],0,S,E),u;b===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}n.EscapeSequenceParser=_},1346:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let h=c(1263),k=c(726),a=[];n.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(w,l){this._handlers[w]===void 0&&(this._handlers[w]=[]);let m=this._handlers[w];return m.push(l),{dispose:()=>{let _=m.indexOf(l);_!==-1&&m.splice(_,1)}}}clearHandler(w){this._handlers[w]&&delete this._handlers[w]}setHandlerFallback(w){this._handlerFb=w}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let w=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;w>=0;--w)this._active[w].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 w=this._active.length-1;w>=0;w--)this._active[w].start();else this._handlerFb(this._id,"START")}_put(w,l,m){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(w,l,m);else this._handlerFb(this._id,"PUT",(0,k.utf32ToString)(w,l,m))}start(){this.reset(),this._state=1}put(w,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let _=w[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(w,l,m)}}end(w,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,i=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,m=l,i=this._stack.fallThrough,this._stack.paused=!1),!i&&m===!1){for(;_>=0&&(m=this._active[_].end(w),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",w);this._active=a,this._id=-1,this._state=0}}},n.OscHandler=class{constructor(w){this._handler=w,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(w,l,m){this._hitLimit||(this._data+=(0,k.utf32ToString)(w,l,m),this._data.length>h.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(w){let l=!1;if(this._hitLimit)l=!1;else if(w&&(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:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Params=void 0;let c=2147483647;class h{static fromArray(a){let w=new h;if(!a.length)return w;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;++_)w.addSubParam(m[_]);else w.addParam(m)}return w}constructor(a=32,w=32){if(this.maxLength=a,this.maxSubParamsLength=w,w>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(w),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new h(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 w=0;w<this.length;++w){a.push(this.params[w]);let l=this._subParamsIdx[w]>>8,m=255&this._subParamsIdx[w];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 w=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-w>0?this._subParams.subarray(w,l):null}getSubParamsAll(){let a={};for(let w=0;w<this.length;++w){let l=this._subParamsIdx[w]>>8,m=255&this._subParamsIdx[w];m-l>0&&(a[w]=this._subParams.slice(l,m))}return a}addDigit(a){let w;if(this._rejectDigits||!(w=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[w-1];l[w-1]=~m?Math.min(10*m+a,c):a}}n.Params=h},3027:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.AddonManager=void 0,n.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,h){let k={instance:h,dispose:h.dispose,isDisposed:!1};this._addons.push(k),h.dispose=()=>this._wrappedAddonDispose(k),h.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let h=-1;for(let k=0;k<this._addons.length;k++)if(this._addons[k]===c){h=k;break}if(h===-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(h,1)}}},3235:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferApiView=void 0;let h=c(793),k=c(3055);n.BufferApiView=class{constructor(a,w){this._buffer=a,this.type=w}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 w=this._buffer.lines.get(a);if(w)return new h.BufferLineApiView(w)}getNullCell(){return new k.CellData}}},793:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let h=c(3055);n.BufferLineApiView=class{constructor(k){this._line=k}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(k,a){if(!(k<0||k>=this._line.length))return a?(this._line.loadCell(k,a),a):this._line.loadCell(k,new h.CellData)}translateToString(k,a,w){return this._line.translateToString(k,a,w)}}},5101:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let h=c(3235),k=c(7150),a=c(802);class w extends k.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new h.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new h.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)}}n.BufferNamespaceApi=w},6097:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ParserApi=void 0,n.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,h){return this._core.registerCsiHandler(c,(k=>h(k.toArray())))}addCsiHandler(c,h){return this.registerCsiHandler(c,h)}registerDcsHandler(c,h){return this._core.registerDcsHandler(c,((k,a)=>h(k,a.toArray())))}addDcsHandler(c,h){return this.registerDcsHandler(c,h)}registerEscHandler(c,h){return this._core.registerEscHandler(c,h)}addEscHandler(c,h){return this.registerEscHandler(c,h)}registerOscHandler(c,h){return this._core.registerOscHandler(c,h)}addOscHandler(c,h){return this.registerOscHandler(c,h)}}},4335:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeApi=void 0,n.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(y,n,c){var h=this&&this.__decorate||function(i,p,f,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,f):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,f,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,f,S):u(p,f))||S);return b>3&&S&&Object.defineProperty(p,f,S),S},k=this&&this.__param||function(i,p){return function(f,d){p(f,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.BufferService=n.MINIMUM_ROWS=n.MINIMUM_COLS=void 0;let a=c(7150),w=c(4097),l=c(6501),m=c(802);n.MINIMUM_COLS=2,n.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(i){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(i.rawOptions.cols||0,n.MINIMUM_COLS),this.rows=Math.max(i.rawOptions.rows||0,n.MINIMUM_ROWS),this.buffers=this._register(new w.BufferSet(i,this)),this._register(this.buffers.onBufferActivate((p=>{this._onScroll.fire(p.activeBuffer.ydisp)})))}resize(i,p){let f=this.cols!==i,d=this.rows!==p;this.cols=i,this.rows=p,this.buffers.resize(i,p),this._onResize.fire({cols:i,rows:p,colsChanged:f,rowsChanged:d})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(i,p=!1){let f=this.buffer,d;d=this._cachedBlankLine,d&&d.length===this.cols&&d.getFg(0)===i.fg&&d.getBg(0)===i.bg||(d=f.getBlankLine(i,p),this._cachedBlankLine=d),d.isWrapped=p;let u=f.ybase+f.scrollTop,b=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;b===f.lines.length-1?S?f.lines.recycle().copyFrom(d):f.lines.push(d.clone()):f.lines.splice(b+1,0,d.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=b-u+1;f.lines.shiftElements(u+1,S-1,-1),f.lines.set(b,d.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(i,p){let f=this.buffer;if(i<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else i+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let d=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+i,f.ybase),0),d!==f.ydisp&&(p||this._onScroll.fire(f.ydisp))}};n.BufferService=_,n.BufferService=_=h([k(0,l.IOptionsService)],_)},5746:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CharsetService=void 0,n.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,h){this._charsets[c]=h,this.glevel===c&&(this.charset=h)}}},7792:function(y,n,c){var h=this&&this.__decorate||function(d,u,b,S){var P,E=arguments.length,H=E<3?u:S===null?S=Object.getOwnPropertyDescriptor(u,b):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")H=Reflect.decorate(d,u,b,S);else for(var $=d.length-1;$>=0;$--)(P=d[$])&&(H=(E<3?P(H):E>3?P(u,b,H):P(u,b))||H);return E>3&&H&&Object.defineProperty(u,b,H),H},k=this&&this.__param||function(d,u){return function(b,S){u(b,S,d)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreMouseService=void 0;let a=c(6501),w=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:d=>d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)},VT200:{events:19,restrict:d=>d.action!==32},DRAG:{events:23,restrict:d=>d.action!==32||d.button!==3},ANY:{events:31,restrict:d=>!0}};function _(d,u){let b=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(b|=64,b|=d.action):(b|=3&d.button,4&d.button&&(b|=64),8&d.button&&(b|=128),d.action===32?b|=32:d.action!==0||u||(b|=3)),b}let i=String.fromCharCode,p={DEFAULT:d=>{let u=[_(d,!1)+32,d.col+32,d.row+32];return u[0]>255||u[1]>255||u[2]>255?"":`\x1B[M${i(u[0])}${i(u[1])}${i(u[2])}`},SGR:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.col};${d.row}${u}`},SGR_PIXELS:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.x};${d.y}${u}`}},f=class extends w.Disposable{constructor(d,u,b){super(),this._bufferService=d,this._coreService=u,this._optionsService=b,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(p))this.addEncoding(S,p[S]);this.reset()}addProtocol(d,u){this._protocols[d]=u}addEncoding(d,u){this._encodings[d]=u}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(d){if(!this._protocols[d])throw new Error(`unknown protocol "${d}"`);this._activeProtocol=d,this._onProtocolChange.fire(this._protocols[d].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(d){if(!this._encodings[d])throw new Error(`unknown encoding "${d}"`);this._activeEncoding=d}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(d,u,b){if(d.deltaY===0||d.shiftKey||u===void 0||b===void 0)return 0;let S=u/b,P=this._applyScrollModifier(d.deltaY,d);return d.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(d.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):d.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(d,u){return u.altKey||u.ctrlKey||u.shiftKey?d*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:d*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(d){if(d.col<0||d.col>=this._bufferService.cols||d.row<0||d.row>=this._bufferService.rows||d.button===4&&d.action===32||d.button===3&&d.action!==32||d.button!==4&&(d.action===2||d.action===3)||(d.col++,d.row++,d.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,d,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(d))return!1;let u=this._encodings[this._activeEncoding](d);return u&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(u):this._coreService.triggerDataEvent(u,!0)),this._lastEvent=d,!0}explainEvents(d){return{down:!!(1&d),up:!!(2&d),drag:!!(4&d),move:!!(8&d),wheel:!!(16&d)}}_equalEvents(d,u,b){if(b){if(d.x!==u.x||d.y!==u.y)return!1}else if(d.col!==u.col||d.row!==u.row)return!1;return d.button===u.button&&d.action===u.action&&d.ctrl===u.ctrl&&d.alt===u.alt&&d.shift===u.shift}};n.CoreMouseService=f,n.CoreMouseService=f=h([k(0,a.IBufferService),k(1,a.ICoreService),k(2,a.IOptionsService)],f)},4071:function(y,n,c){var h=this&&this.__decorate||function(f,d,u,b){var S,P=arguments.length,E=P<3?d:b===null?b=Object.getOwnPropertyDescriptor(d,u):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(f,d,u,b);else for(var H=f.length-1;H>=0;H--)(S=f[H])&&(E=(P<3?S(E):P>3?S(d,u,E):S(d,u))||E);return P>3&&E&&Object.defineProperty(d,u,E),E},k=this&&this.__param||function(f,d){return function(u,b){d(u,b,f)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreService=void 0;let a=c(7453),w=c(7150),l=c(6501),m=c(802),_=Object.freeze({insertMode:!1}),i=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),p=class extends w.Disposable{constructor(f,d,u){super(),this._bufferService=f,this._logService=d,this._optionsService=u,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)(i)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}triggerDataEvent(f,d=!1){if(this._optionsService.rawOptions.disableStdin)return;let u=this._bufferService.buffer;d&&this._optionsService.rawOptions.scrollOnUserInput&&u.ybase!==u.ydisp&&this._onRequestScrollToBottom.fire(),d&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((b=>b.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((d=>d.charCodeAt(0))))),this._onBinary.fire(f))}};n.CoreService=p,n.CoreService=p=h([k(0,l.IBufferService),k(1,l.ILogService),k(2,l.IOptionsService)],p)},6025:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let h=c(6501),k=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)}}n.ServiceCollection=a,n.InstantiationService=class{constructor(){this._services=new a,this._services.set(h.IInstantiationService,this)}setService(w,l){this._services.set(w,l)}getService(w){return this._services.get(w)}createInstance(w,...l){let m=(0,k.getServiceDependencies)(w).sort(((p,f)=>p.index-f.index)),_=[];for(let p of m){let f=this._services.get(p.id);if(!f)throw new Error(`[createInstance] ${w.name} depends on UNKNOWN service ${p.id._id}.`);_.push(f)}let i=m.length>0?m[0].index:l.length;if(l.length!==i)throw new Error(`[createInstance] First service dependency of ${w.name} at position ${i+1} conflicts with ${l.length} static arguments`);return new w(...l,..._)}}},7276:function(y,n,c){var h=this&&this.__decorate||function(i,p,f,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,f):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,f,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,f,S):u(p,f))||S);return b>3&&S&&Object.defineProperty(p,f,S),S},k=this&&this.__param||function(i,p){return function(f,d){p(f,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.LogService=void 0,n.setTraceLogger=function(i){m=i},n.traceCall=function(i,p,f){if(typeof f.value!="function")throw new Error("not supported");let d=f.value;f.value=function(...u){if(m.logLevel!==w.LogLevelEnum.TRACE)return d.apply(this,u);m.trace(`GlyphRenderer#${d.name}(${u.map((S=>JSON.stringify(S))).join(", ")})`);let b=d.apply(this,u);return m.trace(`GlyphRenderer#${d.name} return`,b),b}};let a=c(7150),w=c(6501),l={trace:w.LogLevelEnum.TRACE,debug:w.LogLevelEnum.DEBUG,info:w.LogLevelEnum.INFO,warn:w.LogLevelEnum.WARN,error:w.LogLevelEnum.ERROR,off:w.LogLevelEnum.OFF},m,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(i){super(),this._optionsService=i,this._logLevel=w.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(i){for(let p=0;p<i.length;p++)typeof i[p]=="function"&&(i[p]=i[p]())}_log(i,p,f){this._evalLazyOptionalParams(f),i.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+p,...f)}trace(i,...p){this._logLevel<=w.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,i,p)}debug(i,...p){this._logLevel<=w.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,i,p)}info(i,...p){this._logLevel<=w.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,i,p)}warn(i,...p){this._logLevel<=w.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,i,p)}error(i,...p){this._logLevel<=w.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,i,p)}};n.LogService=_,n.LogService=_=h([k(0,w.IOptionsService)],_)},56:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let h=c(7150),k=c(701),a=c(802);n.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:k.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let w=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends h.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let i={...n.DEFAULT_OPTIONS};for(let p in _)if(p in i)try{let f=_[p];i[p]=this._sanitizeAndValidateOption(p,f)}catch(f){console.error(f)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register((0,h.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,i){return this.onOptionChange((p=>{p===_&&i(this.rawOptions[_])}))}onMultipleOptionChange(_,i){return this.onOptionChange((p=>{_.indexOf(p)!==-1&&i()}))}_setupOptions(){let _=p=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);return this.rawOptions[p]},i=(p,f)=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);f=this._sanitizeAndValidateOption(p,f),this.rawOptions[p]!==f&&(this.rawOptions[p]=f,this._onOptionChange.fire(p))};for(let p in this.rawOptions){let f={get:_.bind(this,p),set:i.bind(this,p)};Object.defineProperty(this.options,p,f)}}_sanitizeAndValidateOption(_,i){switch(_){case"cursorStyle":if(i||(i=n.DEFAULT_OPTIONS[_]),!(function(p){return p==="block"||p==="underline"||p==="bar"})(i))throw new Error(`"${i}" is not a valid value for ${_}`);break;case"wordSeparator":i||(i=n.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=w.includes(i)?i:n.DEFAULT_OPTIONS[_];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${_} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${_} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{}}return i}}n.OptionsService=l},8811:function(y,n,c){var h=this&&this.__decorate||function(l,m,_,i){var p,f=arguments.length,d=f<3?m:i===null?i=Object.getOwnPropertyDescriptor(m,_):i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(l,m,_,i);else for(var u=l.length-1;u>=0;u--)(p=l[u])&&(d=(f<3?p(d):f>3?p(m,_,d):p(m,_))||d);return f>3&&d&&Object.defineProperty(m,_,d),d},k=this&&this.__param||function(l,m){return function(_,i){m(_,i,l)}};Object.defineProperty(n,"__esModule",{value:!0}),n.OscLinkService=void 0;let a=c(6501),w=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 u=m.addMarker(m.ybase+m.y),b={data:l,id:this._nextId++,lines:[u]};return u.onDispose((()=>this._removeMarkerFromLink(b,u))),this._dataByLinkId.set(b.id,b),b.id}let _=l,i=this._getEntryIdKey(_),p=this._entriesWithId.get(i);if(p)return this.addLineToLink(p.id,m.ybase+m.y),p.id;let f=m.addMarker(m.ybase+m.y),d={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(d,f))),this._entriesWithId.set(d.key,d),this._dataByLinkId.set(d.id,d),d.id}addLineToLink(l,m){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((i=>i.line!==m))){let i=this._bufferService.buffer.addMarker(m);_.lines.push(i),i.onDispose((()=>this._removeMarkerFromLink(_,i)))}}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)))}};n.OscLinkService=w,n.OscLinkService=w=h([k(0,a.IBufferService)],w)},6201:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(k){return k[h]||[]},n.createDecorator=function(k){if(n.serviceRegistry.has(k))return n.serviceRegistry.get(k);let a=function(w,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,i,p){i[c]===i?i[h].push({id:_,index:p}):(i[h]=[{id:_,index:p}],i[c]=i)})(a,w,m)};return a._id=k,n.serviceRegistry.set(k,a),a};let c="di$target",h="di$dependencies";n.serviceRegistry=new Map},6501:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.IDecorationService=n.IUnicodeService=n.IOscLinkService=n.IOptionsService=n.ILogService=n.LogLevelEnum=n.IInstantiationService=n.ICharsetService=n.ICoreService=n.ICoreMouseService=n.IBufferService=void 0;let h=c(6201);var k;n.IBufferService=(0,h.createDecorator)("BufferService"),n.ICoreMouseService=(0,h.createDecorator)("CoreMouseService"),n.ICoreService=(0,h.createDecorator)("CoreService"),n.ICharsetService=(0,h.createDecorator)("CharsetService"),n.IInstantiationService=(0,h.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"})(k||(n.LogLevelEnum=k={})),n.ILogService=(0,h.createDecorator)("LogService"),n.IOptionsService=(0,h.createDecorator)("OptionsService"),n.IOscLinkService=(0,h.createDecorator)("OscLinkService"),n.IUnicodeService=(0,h.createDecorator)("UnicodeService"),n.IDecorationService=(0,h.createDecorator)("DecorationService")},6415:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let h=c(7428),k=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 k.Emitter,this.onChange=this._onChange.event;let l=new h.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,i=l.length;for(let p=0;p<i;++p){let f=l.charCodeAt(p);if(55296<=f&&f<=56319){if(++p>=i)return m+this.wcwidth(f);let b=l.charCodeAt(p);56320<=b&&b<=57343?f=1024*(f-55296)+b-56320+65536:m+=this.wcwidth(b)}let d=this.charProperties(f,_),u=a.extractWidth(d);a.extractShouldJoin(d)&&(u-=a.extractWidth(_)),m+=u,_=d}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}n.UnicodeService=a},5856:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Terminal=void 0;let h=c(6107),k=c(5777),a=c(802);class w extends k.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(h.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()}}n.Terminal=w},3058:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Permutation=n.CallbackIterable=n.ArrayQueue=n.booleanComparator=n.numberComparator=n.CompareResult=void 0,n.tail=function(u,b=0){return u[u.length-(1+b)]},n.tail2=function(u){if(u.length===0)throw new Error("Invalid tail call");return[u.slice(0,u.length-1),u[u.length-1]]},n.equals=function(u,b,S=(P,E)=>P===E){if(u===b)return!0;if(!u||!b||u.length!==b.length)return!1;for(let P=0,E=u.length;P<E;P++)if(!S(u[P],b[P]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(u,b){let S=u.length-1;b<S&&(u[b]=u[S]),u.pop()},n.binarySearch=function(u,b,S){return a(u.length,(P=>S(u[P],b)))},n.binarySearch2=a,n.quickSelect=function u(b,S,P){if((b|=0)>=S.length)throw new TypeError("invalid index");let E=S[Math.floor(S.length*Math.random())],H=[],$=[],D=[];for(let x of S){let A=P(x,E);A<0?H.push(x):A>0?$.push(x):D.push(x)}return b<H.length?u(b,H,P):b<H.length+D.length?D[0]:u(b-(H.length+D.length),$,P)},n.groupBy=function(u,b){let S=[],P;for(let E of u.slice(0).sort(b))P&&b(P[0],E)===0?P.push(E):(P=[E],S.push(P));return S},n.groupAdjacentBy=function*(u,b){let S,P;for(let E of u)P!==void 0&&b(P,E)?S.push(E):(S&&(yield S),S=[E]),P=E;S&&(yield S)},n.forEachAdjacent=function(u,b){for(let S=0;S<=u.length;S++)b(S===0?void 0:u[S-1],S===u.length?void 0:u[S])},n.forEachWithNeighbors=function(u,b){for(let S=0;S<u.length;S++)b(S===0?void 0:u[S-1],u[S],S+1===u.length?void 0:u[S+1])},n.sortedDiff=w,n.delta=function(u,b,S){let P=w(u,b,S),E=[],H=[];for(let $ of P)E.push(...u.slice($.start,$.start+$.deleteCount)),H.push(...$.toInsert);return{removed:E,added:H}},n.top=function(u,b,S){if(S===0)return[];let P=u.slice(0,S).sort(b);return l(u,b,P,S,u.length),P},n.topAsync=function(u,b,S,P,E){return S===0?Promise.resolve([]):new Promise(((H,$)=>{(async()=>{let D=u.length,x=u.slice(0,S).sort(b);for(let A=S,L=Math.min(S+P,D);A<D;A=L,L=Math.min(L+P,D)){if(A>S&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new h.CancellationError;l(u,b,x,A,L)}return x})().then(H,$)}))},n.coalesce=function(u){return u.filter((b=>!!b))},n.coalesceInPlace=function(u){let b=0;for(let S=0;S<u.length;S++)u[S]&&(u[b]=u[S],b+=1);u.length=b},n.move=function(u,b,S){u.splice(S,0,u.splice(b,1)[0])},n.isFalsyOrEmpty=function(u){return!Array.isArray(u)||u.length===0},n.isNonEmptyArray=function(u){return Array.isArray(u)&&u.length>0},n.distinct=function(u,b=S=>S){let S=new Set;return u.filter((P=>{let E=b(P);return!S.has(E)&&(S.add(E),!0)}))},n.uniqueFilter=function(u){let b=new Set;return S=>{let P=u(S);return!b.has(P)&&(b.add(P),!0)}},n.firstOrDefault=function(u,b){return u.length>0?u[0]:b},n.lastOrDefault=function(u,b){return u.length>0?u[u.length-1]:b},n.commonPrefixLength=function(u,b,S=(P,E)=>P===E){let P=0;for(let E=0,H=Math.min(u.length,b.length);E<H&&S(u[E],b[E]);E++)P++;return P},n.range=function(u,b){let S=typeof b=="number"?u:0;typeof b=="number"?S=u:(S=0,b=u);let P=[];if(S<=b)for(let E=S;E<b;E++)P.push(E);else for(let E=S;E>b;E--)P.push(E);return P},n.index=function(u,b,S){return u.reduce(((P,E)=>(P[b(E)]=S?S(E):E,P)),Object.create(null))},n.insert=function(u,b){return u.push(b),()=>m(u,b)},n.remove=m,n.arrayInsert=function(u,b,S){let P=u.slice(0,b),E=u.slice(b);return P.concat(S,E)},n.shuffle=function(u,b){let S;if(typeof b=="number"){let P=b;S=()=>{let E=179426549*Math.sin(P++);return E-Math.floor(E)}}else S=Math.random;for(let P=u.length-1;P>0;P-=1){let E=Math.floor(S()*(P+1)),H=u[P];u[P]=u[E],u[E]=H}},n.pushToStart=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.unshift(b))},n.pushToEnd=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.push(b))},n.pushMany=function(u,b){for(let S of b)u.push(S)},n.mapArrayOrNot=function(u,b){return Array.isArray(u)?u.map(b):b(u)},n.asArray=function(u){return Array.isArray(u)?u:[u]},n.getRandomElement=function(u){return u[Math.floor(Math.random()*u.length)]},n.insertInto=_,n.splice=function(u,b,S,P){let E=i(u,b),H=u.splice(E,S);return H===void 0&&(H=[]),_(u,E,P),H},n.compareBy=function(u,b){return(S,P)=>b(u(S),u(P))},n.tieBreakComparators=function(...u){return(b,S)=>{for(let P of u){let E=P(b,S);if(!p.isNeitherLessOrGreaterThan(E))return E}return p.neitherLessOrGreaterThan}},n.reverseOrder=function(u){return(b,S)=>-u(b,S)};let h=c(9807),k=c(8297);function a(u,b){let S=0,P=u-1;for(;S<=P;){let E=(S+P)/2|0,H=b(E);if(H<0)S=E+1;else{if(!(H>0))return E;P=E-1}}return-(S+1)}function w(u,b,S){let P=[];function E(D,x,A){if(x===0&&A.length===0)return;let L=P[P.length-1];L&&L.start+L.deleteCount===D?(L.deleteCount+=x,L.toInsert.push(...A)):P.push({start:D,deleteCount:x,toInsert:A})}let H=0,$=0;for(;;){if(H===u.length){E(H,0,b.slice($));break}if($===b.length){E(H,u.length-H,[]);break}let D=u[H],x=b[$],A=S(D,x);A===0?(H+=1,$+=1):A<0?(E(H,1,[]),H+=1):A>0&&(E(H,0,[x]),$+=1)}return P}function l(u,b,S,P,E){for(let H=S.length;P<E;P++){let $=u[P];if(b($,S[H-1])<0){S.pop();let D=(0,k.findFirstIdxMonotonousOrArrLen)(S,(x=>b($,x)<0));S.splice(D,0,$)}}}function m(u,b){let S=u.indexOf(b);if(S>-1)return u.splice(S,1),b}function _(u,b,S){let P=i(u,b),E=u.length,H=S.length;u.length=E+H;for(let $=E-1;$>=P;$--)u[$+H]=u[$];for(let $=0;$<H;$++)u[$+P]=S[$]}function i(u,b){return b<0?Math.max(b+u.length,0):Math.min(b,u.length)}var p;(function(u){u.isLessThan=function(b){return b<0},u.isLessThanOrEqual=function(b){return b<=0},u.isGreaterThan=function(b){return b>0},u.isNeitherLessOrGreaterThan=function(b){return b===0},u.greaterThan=1,u.lessThan=-1,u.neitherLessOrGreaterThan=0})(p||(n.CompareResult=p={})),n.numberComparator=(u,b)=>u-b,n.booleanComparator=(u,b)=>(0,n.numberComparator)(u?1:0,b?1:0),n.ArrayQueue=class{constructor(u){this.items=u,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(u){let b=this.firstIdx;for(;b<this.items.length&&u(this.items[b]);)b++;let S=b===this.firstIdx?null:this.items.slice(this.firstIdx,b);return this.firstIdx=b,S}takeFromEndWhile(u){let b=this.lastIdx;for(;b>=0&&u(this.items[b]);)b--;let S=b===this.lastIdx?null:this.items.slice(b+1,this.lastIdx+1);return this.lastIdx=b,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let u=this.items[this.firstIdx];return this.firstIdx++,u}removeLast(){let u=this.items[this.lastIdx];return this.lastIdx--,u}takeCount(u){let b=this.items.slice(this.firstIdx,this.firstIdx+u);return this.firstIdx+=u,b}};class f{static{this.empty=new f((b=>{}))}constructor(b){this.iterate=b}forEach(b){this.iterate((S=>(b(S),!0)))}toArray(){let b=[];return this.iterate((S=>(b.push(S),!0))),b}filter(b){return new f((S=>this.iterate((P=>!b(P)||S(P)))))}map(b){return new f((S=>this.iterate((P=>S(b(P))))))}some(b){let S=!1;return this.iterate((P=>(S=b(P),!S))),S}findFirst(b){let S;return this.iterate((P=>!b(P)||(S=P,!1))),S}findLast(b){let S;return this.iterate((P=>(b(P)&&(S=P),!0))),S}findLastMaxBy(b){let S,P=!0;return this.iterate((E=>((P||p.isGreaterThan(b(E,S)))&&(P=!1,S=E),!0))),S}}n.CallbackIterable=f;class d{constructor(b){this._indexMap=b}static createSortPermutation(b,S){let P=Array.from(b.keys()).sort(((E,H)=>S(b[E],b[H])));return new d(P)}apply(b){return b.map(((S,P)=>b[this._indexMap[P]]))}inverse(){let b=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)b[this._indexMap[S]]=S;return new d(b)}}n.Permutation=d},8297:(y,n)=>{function c(l,m,_=l.length-1){for(let i=_;i>=0;i--)if(m(l[i]))return i;return-1}function h(l,m,_=0,i=l.length){let p=_,f=i;for(;p<f;){let d=Math.floor((p+f)/2);m(l[d])?p=d+1:f=d}return p-1}function k(l,m,_=0,i=l.length){let p=_,f=i;for(;p<f;){let d=Math.floor((p+f)/2);m(l[d])?f=d:p=d+1}return p}Object.defineProperty(n,"__esModule",{value:!0}),n.MonotonousArray=void 0,n.findLast=function(l,m){let _=c(l,m);if(_!==-1)return l[_]},n.findLastIdx=c,n.findLastMonotonous=function(l,m){let _=h(l,m);return _===-1?void 0:l[_]},n.findLastIdxMonotonous=h,n.findFirstMonotonous=function(l,m){let _=k(l,m);return _===l.length?void 0:l[_]},n.findFirstIdxMonotonousOrArrLen=k,n.findFirstIdxMonotonous=function(l,m,_=0,i=l.length){let p=k(l,m,_,i);return p===l.length?-1:p},n.findFirstMax=w,n.findLastMax=function(l,m){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];m(p,_)>=0&&(_=p)}return _},n.findFirstMin=function(l,m){return w(l,((_,i)=>-m(_,i)))},n.findMaxIdx=function(l,m){if(l.length===0)return-1;let _=0;for(let i=1;i<l.length;i++)m(l[i],l[_])>0&&(_=i);return _},n.mapFindFirst=function(l,m){for(let _ of l){let i=m(_);if(i!==void 0)return i}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let i of this._array)if(this._prevFindLastPredicate(i)&&!m(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let _=h(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function w(l,m){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];m(p,_)>0&&(_=p)}return _}n.MonotonousArray=a},9087:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.SetWithKey=void 0,n.groupBy=function(k,a){let w=Object.create(null);for(let l of k){let m=a(l),_=w[m];_||(_=w[m]=[]),_.push(l)}return w},n.diffSets=function(k,a){let w=[],l=[];for(let m of k)a.has(m)||w.push(m);for(let m of a)k.has(m)||l.push(m);return{removed:w,added:l}},n.diffMaps=function(k,a){let w=[],l=[];for(let[m,_]of k)a.has(m)||w.push(_);for(let[m,_]of a)k.has(m)||l.push(_);return{removed:w,added:l}},n.intersection=function(k,a){let w=new Set;for(let l of a)k.has(l)&&w.add(l);return w};class h{static{c=Symbol.toStringTag}constructor(a,w){this.toKey=w,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let w=this.toKey(a);return this._map.set(w,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,w){this._map.forEach((l=>a.call(w,l,l,this)))}[Symbol.iterator](){return this.values()}}n.SetWithKey=h},9807:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.ExpectedError=n.NotSupportedError=n.NotImplementedError=n.ReadonlyError=n.CancellationError=n.errorHandler=n.ErrorHandler=void 0,n.setUnexpectedErrorHandler=function(f){n.errorHandler.setUnexpectedErrorHandler(f)},n.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let d=f;return d.code==="EPIPE"&&d.syscall?.toUpperCase()==="WRITE"},n.onUnexpectedError=function(f){k(f)||n.errorHandler.onUnexpectedError(f)},n.onUnexpectedExternalError=function(f){k(f)||n.errorHandler.onUnexpectedExternalError(f)},n.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:d,message:u}=f;return{$isError:!0,name:d,message:u,stack:f.stacktrace||f.stack,noTelemetry:i.isErrorNoTelemetry(f)}}return f},n.transformErrorFromSerialization=function(f){let d;return f.noTelemetry?d=new i:(d=new Error,d.name=f.name),d.message=f.message,d.stack=f.stack,d},n.isCancellationError=k,n.canceled=function(){let f=new Error(h);return f.name=f.message,f},n.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},n.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},n.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
5
- `)[0]:String(f):"Error"};class c{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(d){setTimeout((()=>{throw d.stack?i.isErrorNoTelemetry(d)?new i(d.message+`
2
+ var Ta=Object.create;var $r=Object.defineProperty;var Ra=Object.getOwnPropertyDescriptor;var Ca=Object.getOwnPropertyNames;var Pa=Object.getPrototypeOf,Ia=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var xa=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ea=(e,t)=>{for(var r in t)$r(e,r,{get:t[r],enumerable:!0})},Aa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ca(t))!Ia.call(e,o)&&o!==r&&$r(e,o,{get:()=>t[o],enumerable:!(s=Ra(t,o))||s.enumerable});return e};var Da=(e,t,r)=>(r=e!=null?Ta(Pa(e)):{},Aa(t||!e||!e.__esModule?$r(r,"default",{value:e,enumerable:!0}):r,e));function ye(e){return La[e]}function Fr(e,t={}){let r=ye(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function mt(e={}){return le.filter(t=>e.runners?.[t]?.enabled!==!1)}function nt(e={}){let t=mt(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 Gt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function _t(e){return le.includes(e)}function Zs(e){if(!e||e.length===0)return"codex";if(!_t(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${le.join(", ")}.`);return e}function Te(e){return ye(e).displayName}function _e(e,t,r={}){let s=[Fr(e,r).executable];return t&&t.length>0&&s.push(t),s}var le,La,Ae=$e(()=>{"use strict";le=["codex","cursor","claude"],La={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 Na}from"node:crypto";import{open as ja,readFile as kf,rename as Ha,rm as Ua}from"node:fs/promises";import Wr from"node:path";async function de(e,t){let r=Wr.dirname(e),s=Wr.join(r,`.${Wr.basename(e)}.${process.pid}.${Date.now()}.${Na()}.tmp`),o=await ja(s,"w");try{let g=`${JSON.stringify(t,null,2)}
3
+ `;await o.writeFile(g,"utf8"),await o.sync(),await o.close(),await Ha(s,e)}catch(g){throw await o.close().catch(()=>{}),await Ua(s,{force:!0}).catch(()=>{}),g}}var Fe=$e(()=>{"use strict"});import{readFile as Ya}from"node:fs/promises";async function Ce(e){let t=await Ya(e.indexFile,"utf8"),r=JSON.parse(t);return jr(r,e.workspaceRoot,e.indexFile)}async function at(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await de(e.indexFile,r)}function jr(e,t,r){if(!Ja(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 Ja(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 ct=$e(()=>{"use strict";Fe()});import{readFile as Qa}from"node:fs/promises";async function ue(e,t){let r=await Qa(Hr(e,t),"utf8"),s=JSON.parse(r);return Za(s,Hr(e,t))}async function re(e,t){let r={...t,updatedAt:new Date().toISOString()};await de(Hr(e,t.id),r)}async function Ur(e,t){let r=await Ce(e);r.taskIds.includes(t)||await at(e,{...r,taskIds:[...r.taskIds,t]})}function Hr(e,t){return`${e.tasksDir}/${t}.json`}function Za(e,t){let r=ec(e);if(!rc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function ec(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:qr(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:nc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:sc(t.repoTargets),runnerSession:t.runnerSession??tc(t),checks:dc(t),lastCommit:t.lastCommit??null,pullRequest:uc(t),artifacts:fc(t),cleanup:pc(t)}}function tc(e){if(typeof e.title!="string")return null;let t=qr(e.runner);return{command:_e(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function rc(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"&&_t(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"&&ii(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||ic(t.repoTargets))&&ac(t.runnerSession)&&cc(t.prompt)&&ni(t.checks)&&oi(t.lastCommit)&&ai(t.pullRequest)&&lc(t.artifacts)&&ci(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function sc(e){if(Array.isArray(e))return e.filter(si)}function ic(e){return Array.isArray(e)&&e.every(si)}function si(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)&&ni(t.checks)&&oi(t.lastCommit)&&ai(t.pullRequest)&&ci(t.cleanup)}function nc(e){if(ii(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 oc(e.id,e.title,t,qr(e.runner))}function oc(e,t,r,s){let o=ye(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:_e(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function qr(e){return e&&_t(e)?e:"codex"}function ii(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 ac(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 cc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function ni(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 oi(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function ai(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&(typeof e.number=="number"||e.number===null)&&(typeof e.url=="string"||e.url===null)&&(typeof e.baseBranch=="string"||e.baseBranch===null)&&(typeof e.headBranch=="string"||e.headBranch===null)&&(e.status==="open"||e.status==="closed"||e.status==="merged"||e.status===null)&&typeof e.mergeable=="boolean"&&(typeof e.mergeStateStatus=="string"||e.mergeStateStatus===null)&&Array.isArray(e.requiredChecks)&&e.requiredChecks.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))&&(typeof e.lastSyncedAt=="string"||e.lastSyncedAt===null)&&(typeof e.lastSyncedHeadSha=="string"||e.lastSyncedHeadSha===null||e.lastSyncedHeadSha===void 0)}function lc(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 ci(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 dc(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 uc(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:hc(t.requiredChecks),lastSyncedHeadSha:t.lastSyncedHeadSha??null}:{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function hc(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 fc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function pc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var we=$e(()=>{"use strict";Fe();ct();Ae()});import{readFile as gc}from"node:fs/promises";async function De(e){try{let t=await gc(e.uiStateFile,"utf8"),r=JSON.parse(t);return mc(r,e.uiStateFile)}catch(t){if(wc(t))return null;throw t}}async function Pe(e,t){await de(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function We(){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 mc(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")||!wt(e,"inputMode")||!wt(e,"focusedRegion")||!wt(e,"activeTab")||!wt(e,"inspectorSection")||!wt(e,"inspectionMode")||!Xt(e,"openInspectionKind")||!Xt(e,"selectedFileTreePath")||!Xt(e,"selectedFilePath")||!Xt(e,"selectedDiffPath")||!_c(e,"collapsedFileTreePaths")||!wt(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 wt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function Xt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function _c(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function wc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var kt=$e(()=>{"use strict";Fe()});import{execFile as kc}from"node:child_process";import{promisify as bc}from"node:util";async function J(e,t,r={}){try{let s=await li(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(di(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function ae(e,t,r={}){try{let s=await li(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(di(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function di(e){return e instanceof Error}var li,Ie=$e(()=>{"use strict";li=bc(kc)});import{readFile as $c,readdir as Fc,rm as Wc}from"node:fs/promises";import yi from"node:path";async function Le(e,t){let r=await $c(Qt(e,t),"utf8"),s=JSON.parse(r);return Nc(s,Qt(e,t))}async function Zt(e,t){await de(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function ut(e){let t=await Fc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Le(e,yi.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function vi(e,t){await Wc(Qt(e,t),{force:!0})}function Qt(e,t){return yi.join(e.reposDir,`${t}.json`)}function Nc(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 ht=$e(()=>{"use strict";Fe()});import{readFile as jc,readdir as Hc,rm as Uc}from"node:fs/promises";import Si from"node:path";async function Pt(e,t){let r=await jc(er(e,t),"utf8"),s=JSON.parse(r);return qc(s,er(e,t))}async function bt(e,t){await de(er(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Me(e){let t=await Hc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,Si.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function Ti(e,t){await Uc(er(e,t),{force:!0})}function er(e,t){return Si.join(e.workspacesDir,`${t}.json`)}function qc(e,t){let r=Kc(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 Kc(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 It=$e(()=>{"use strict";Fe()});async function Ne(e,t){let r=await Ce(e),s=[],o=[];await Promise.all(r.taskIds.map(async n=>{try{s.push(await ue(e,n))}catch(c){if(Zc(c)){o.push(n);return}throw c}}));let y=(t?.includeClosed?s:s.filter(n=>n.status!=="closed")).filter(n=>!(t?.workspaceId&&n.workspaceId!==t.workspaceId||t?.repoId&&n.repoId!==t.repoId&&!(n.repoTargets??[]).some(c=>c.repoId===t.repoId)));return y.sort((n,c)=>n.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:y,missingTaskIds:o,repoId:t?.repoId??null}}function Zc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Dt=$e(()=>{"use strict";ct();we()});var kn={};Ea(kn,{addWorkspace:()=>$t,archiveWorkspace:()=>Ft,listWorkspaces:()=>hs,removeWorkspace:()=>Wt,removeWorkspaceRecord:()=>dr,restoreWorkspace:()=>fs});import{readdir as Ll,realpath as un,stat as Ml}from"node:fs/promises";import Ze from"node:path";async function $t(e,t){let r=Ze.resolve(e.workspaceRoot,t);if(!(await Ml(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await mn(r)?Ol(e,r):Bl(e,r)}async function hs(e,t){return{kind:"listWorkspaces",workspaces:(await Me(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Ft(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await wn(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function fs(e,t){let s={...await Pt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await De({uiStateFile:e.uiStateFile})??null;return await Pe({uiStateFile:e.uiStateFile},{...o??We(),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 Wt(e,t){let r=await Pt(e,t),s=await Ne(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 dr(e,t),await wn(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Ol(e,t){let r=await _n(t),s=await ut(e),o=s.find(a=>a.rootPath===t)??null,g=o?fn(o,r):hn(s,t,r),y=`workspace_${g.id}`,c=(await Me(e)).find(a=>a.id===y)??null,f=new Date().toISOString(),k=c??{id:y,kind:"repo",name:g.name,rootPath:t,primaryRepoId:g.id,repoId:g.id,discoveredRepoIds:[g.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:f,updatedAt:f};return await Zt(e,g),c||await bt(e,k),await pn(e,{repoIds:[g.id],workspaceIds:[k.id]}),await gn(e,k,g.id),{kind:"createWorkspace",workspace:k,repos:[g],created:!c}}async function Bl(e,t){let r=await $l(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=Wl(s,Ze.basename(t)),g=s.find(f=>f.kind==="project"&&f.rootPath===t)??null,y=new Date().toISOString(),n=r.map(f=>f.id),c=g?{...g,discoveredRepoIds:n,primaryRepoId:n[0]??g.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Ze.basename(t),rootPath:t,primaryRepoId:n[0]??"",discoveredRepoIds:n,branch:"project",status:"active",linkedRepoIds:n,archivedAt:null,createdAt:y,updatedAt:y};return await Promise.all(r.map(f=>Zt(e,f))),await bt(e,c),await pn(e,{repoIds:n,workspaceIds:[c.id]}),await gn(e,c,n[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!g}}async function $l(e,t){let r=await Ll(t,{withFileTypes:!0}),s=await ut(e),o=[];for(let g of r){if(!g.isDirectory()||g.name.startsWith("."))continue;let y=Ze.join(t,g.name);if(!await mn(y))continue;let n=s.find(f=>f.rootPath===y)??o.find(f=>f.rootPath===y),c=await _n(y);o.push(n?fn(n,c):hn([...s,...o],y,c))}return o.sort((g,y)=>g.name.localeCompare(y.name)||g.id.localeCompare(y.id))}function hn(e,t,r){let s=new Date().toISOString();return{id:Fl(e,Ze.basename(t)),name:Ze.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function fn(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Fl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(g=>g.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function Wl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(g=>g.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function pn(e,t){let r=await Ce(e);await at(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function gn(e,t,r){await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function mn(e){try{let r=(await J("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([un(r).catch(()=>Ze.resolve(r)),un(e).catch(()=>Ze.resolve(e))]);return s===o}catch{return!1}}async function _n(e){let t=await ae("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 g of["main","master","trunk"])if((await ae("git",["show-ref","--verify","--quiet",`refs/heads/${g}`],{cwd:e})).exitCode===0)return g;let o=(await J("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function dr(e,t){await Ti(e,t);let r=await Ce(e);await at(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function wn(e,t){let r=await De({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Pe({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Nt=$e(()=>{"use strict";ct();ht();It();kt();Ie();Dt()});var To=xa(So=>{(()=>{"use strict";var e={5639:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let f=c(7150),k=c(802);class a extends f.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new k.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new k.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new k.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 i=l;i<this._length-m;i++)this._array[this._getCyclicIndex(i)]=this._array[this._getCyclicIndex(i+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let i=this._length-1;i>=l;i--)this._array[this._getCyclicIndex(i+_.length)]=this._array[this._getCyclicIndex(i)];for(let i=0;i<_.length;i++)this._array[this._getCyclicIndex(l+i)]=_[i];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let i=this._length+_.length-this._maxLength;this._startIndex+=i,this._length=this._maxLength,this.onTrimEmitter.fire(i)}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 p=m-1;p>=0;p--)this.set(l+p+_,this.get(l+p));let i=l+m+_-this._length;if(i>0)for(this._length+=i;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let i=0;i<m;i++)this.set(l+i+_,this.get(l+i))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}n.CircularList=a},7453:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.clone=function c(f,k=5){if(typeof f!="object")return f;let a=Array.isArray(f)?[]:{};for(let w in f)a[w]=k<=1?f[w]:f[w]&&c(f[w],k-1);return a}},5777:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let f=c(6501),k=c(6025),a=c(7276),w=c(9640),l=c(56),m=c(4071),_=c(7792),i=c(6415),p=c(5746),h=c(5882),d=c(2486),u=c(3562),b=c(8811),S=c(802),P=c(7150),E=!1;class H 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 x in D)this.optionsService.options[x]=D[x]}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 k.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(f.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(f.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(f.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(f.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(f.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(i.UnicodeService)),this._instantiationService.setService(f.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(p.CharsetService),this._instantiationService.setService(f.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(b.OscLinkService),this._instantiationService.setService(f.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new d.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 u.WriteBuffer(((x,A)=>this._inputHandler.parse(x,A)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,x){this._writeBuffer.write(D,x)}writeSync(D,x){this._logService.logLevel<=f.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(D,x)}input(D,x=!0){this.coreService.triggerDataEvent(D,x)}resize(D,x){isNaN(D)||isNaN(x)||(D=Math.max(D,w.MINIMUM_COLS),x=Math.max(x,w.MINIMUM_ROWS),this._bufferService.resize(D,x))}scroll(D,x=!1){this._bufferService.scroll(D,x)}scrollLines(D,x){this._bufferService.scrollLines(D,x)}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 x=D-this._bufferService.buffer.ydisp;x!==0&&this.scrollLines(x)}registerEscHandler(D,x){return this._inputHandler.registerEscHandler(D,x)}registerDcsHandler(D,x){return this._inputHandler.registerDcsHandler(D,x)}registerCsiHandler(D,x){return this._inputHandler.registerCsiHandler(D,x)}registerOscHandler(D,x){return this._inputHandler.registerOscHandler(D,x)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,x=this.optionsService.rawOptions.windowsPty;x&&x.buildNumber!==void 0&&x.buildNumber!==void 0?D=x.backend==="conpty"&&x.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(h.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,h.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let x of D)x.dispose()}))}}}n.CoreTerminal=H},2486:function(y,n,c){var f=this&&this.__decorate||function(K,v,C,T){var R,F=arguments.length,j=F<3?v:T===null?T=Object.getOwnPropertyDescriptor(v,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")j=Reflect.decorate(K,v,C,T);else for(var U=K.length-1;U>=0;U--)(R=K[U])&&(j=(F<3?R(j):F>3?R(v,C,j):R(v,C))||j);return F>3&&j&&Object.defineProperty(v,C,j),j},k=this&&this.__param||function(K,v){return function(C,T){v(C,T,K)}};Object.defineProperty(n,"__esModule",{value:!0}),n.InputHandler=n.WindowsOptionsReportType=void 0,n.isValidColorIndex=W;let a=c(3534),w=c(6760),l=c(6717),m=c(7150),_=c(726),i=c(6107),p=c(8938),h=c(3055),d=c(5451),u=c(6501),b=c(6415),S=c(1346),P=c(9823),E=c(8693),H=c(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function x(K,v){if(K>24)return v.setWinLines||!1;switch(K){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 A;(function(K){K[K.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",K[K.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(A||(n.WindowsOptionsReportType=A={}));let L=0;class z extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,C,T,R,F,j,U,V,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=F,this._oscLinkService=j,this._coreMouseService=U,this._unicodeService=V,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new H.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new H.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new H.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new H.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new H.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new H.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new H.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new H.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new H.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new H.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new H.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new H.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new H.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 X(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 w.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,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([v,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(v,C){let T,R=this._activeBuffer.x,F=this._activeBuffer.y,j=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,F=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(j=this._parseStack.position+D)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===u.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=j;I<v.length;I+=D){let Q=I+D<v.length?I+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,Q),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,F,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,F,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===F||this._onCursorMove.fire();let V=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(V,this._bufferService.rows-1)})}print(v,C,T){let R,F,j=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=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 ke=C;ke<T;++ke){if(R=v[ke],R<127&&j){let Ue=j[String.fromCharCode(R)];Ue&&(R=Ue.charCodeAt(0))}let be=this._unicodeService.charProperties(R,ee);F=b.UnicodeService.extractWidth(be);let Xe=b.UnicodeService.extractShouldJoin(be),xe=Xe?b.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+F-xe>V){if(te){let Ue=Y,it=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),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),xe>0&&Y instanceof i.BufferLine&&Y.copyCellsFrom(Ue,it,0,xe,!1);it<V;)Ue.setCellFromCodepoint(it++,0,1,Q)}else if(this._activeBuffer.x=V-1,F===2)continue}if(Xe&&this._activeBuffer.x){let Ue=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ue,R,F);for(let it=F-xe;--it>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(Y.insertCells(this._activeBuffer.x,F-xe,this._activeBuffer.getNullCell(Q)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,p.NULL_CELL_CODE,p.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,F,Q),F>0)for(;--F;)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(v,C){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,C):this._parser.registerCsiHandler(v,(T=>!x(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}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 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 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,T,R=!1,F=!1){let j=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);j.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),F),R&&(j.isWrapped=!1)}_resetBufferLine(v,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),T.isWrapped=!1)}eraseInDisplay(v,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),v.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(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 T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,F=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(F-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(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 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(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(i.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 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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.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(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 T=v.params[0]||1,R=b.UnicodeService.extractWidth(C),F=this._activeBuffer.x-R,j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(F),U=new Uint32Array(j.length*T),V=0;for(let I=0;I<j.length;){let Q=j.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let te=V;for(let I=1;I<T;++I)U.copyWithin(te,0,V),te+=V;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,w.DEFAULT_CHARSET),this._charsetService.setgCharset(1,w.DEFAULT_CHARSET),this._charsetService.setgCharset(2,w.DEFAULT_CHARSET),this._charsetService.setgCharset(3,w.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 T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:F}=this._coreMouseService,j=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:te,alt:I}=U,Q=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,ee=v.params[0];return ke=ee,be=C?ee===2?4:ee===4?Y(j.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(!j.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(F==="SGR"):ee===1015?4:ee===1016?Y(F==="SGR_PIXELS"):ee===1048?1:ee===47||ee===1047||ee===1049?Y(te===I):ee===2004?Y(T.bracketedPasteMode):ee===2026?Y(T.synchronizedOutput):0,j.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${ke};${be}$y`),!0;var ke,be}_updateAttrColor(v,C,T,R,F){return C===2?(v|=50331648,v&=-16777216,v|=d.AttributeData.fromColorRGB([T,R,F])):C===5&&(v&=-50331904,v|=33554432|255&T),v}_extractColor(v,C,T){let R=[0,0,-1,0,0,0],F=0,j=0;do{if(R[j+F]=v.params[C+j],v.hasSubParams(C+j)){let U=v.getSubParams(C+j),V=0;do R[1]===5&&(F=1),R[j+V+1+F]=U[V];while(++V<U.length&&V+j+1+F<R.length);break}if(R[1]===5&&j+F>=2||R[1]===2&&j+F>=5)break;R[1]&&(F=1)}while(++j+C<v.length&&j+F<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 j}_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=i.DEFAULT_ATTR_DATA.fg,v.bg=i.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,T,R=this._curAttrData;for(let F=0;F<C;F++)T=v.params[F],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(v.hasSubParams(F)?v.getSubParams(F)[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&i.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?F+=this._extractColor(v,F,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&i.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);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,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(v){if(v.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(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=i.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 T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(v){let C=v.params[0]||1,T;return(v.length<2||(T=v.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(v){if(!x(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(A.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(A.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=[],T=v.split(";");for(;T.length>1;){let R=T.shift(),F=T.shift();if(/^\d+$/.exec(R)){let j=parseInt(R);if(W(j))if(F==="?")C.push({type:0,index:j});else{let U=(0,E.parseColor)(F);U&&C.push({type:1,index:j,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(v){let C=v.indexOf(";");if(C===-1)return!0;let T=v.slice(0,C).trim(),R=v.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(v,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=v.split(":"),R,F=T.findIndex((j=>j.startsWith("id=")));return F!==-1&&(R=T[F].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 T=v.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 F=(0,E.parseColor)(T[R]);F&&this._onColor.fire([{type:1,index:this._specialColors[C],color:F}])}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=[],T=v.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let F=parseInt(T[R]);W(F)&&C.push({type:2,index:F})}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,w.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset($[v[0]],w.CHARSETS[v[1]]||w.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=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.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 h.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 T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(F=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${F}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${T.scrollTop+1};${T.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)}}n.InputHandler=z;let X=class{constructor(K){this._bufferService=K,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(K){K<this.start?this.start=K:K>this.end&&(this.end=K)}markRangeDirty(K,v){K>v&&(L=K,K=v,v=L),K<this.start&&(this.start=K),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function W(K){return 0<=K&&K<256}X=f([k(0,u.IBufferService)],X)},701:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isChromeOS=n.isLinux=n.isWindows=n.isIphone=n.isIpad=n.isMac=n.isSafari=n.isLegacyEdge=n.isFirefox=n.isNode=void 0,n.getSafariVersion=function(){if(!n.isSafari)return 0;let k=c.match(/Version\/(\d+)/);return k===null||k.length<2?0:parseInt(k[1])},n.isNode=typeof process<"u"&&"title"in process;let c=n.isNode?"node":navigator.userAgent,f=n.isNode?"node":navigator.platform;n.isFirefox=c.includes("Firefox"),n.isLegacyEdge=c.includes("Edge"),n.isSafari=/^((?!chrome|android).)*safari/i.test(c),n.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(f),n.isIpad=f==="iPad",n.isIphone=f==="iPhone",n.isWindows=["Windows","Win16","Win32","WinCE"].includes(f),n.isLinux=f.indexOf("Linux")>=0,n.isChromeOS=/\bCrOS\b/.test(c)},6168:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DebouncedIdleTask=n.IdleTaskQueue=n.PriorityTaskQueue=void 0;let f=c(701);class k{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,i=l.timeRemaining(),p=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,_),p=l.timeRemaining(),1.5*_>p)return i-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(i-m))}ms`),void this._start();i=p}this.clear()}}class a extends k{_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())}}}n.PriorityTaskQueue=a,n.IdleTaskQueue=!f.isNode&&"requestIdleCallback"in window?class extends k{_requestCallback(w){return requestIdleCallback(w)}_cancelCallback(w){cancelIdleCallback(w)}}:a,n.DebouncedIdleTask=class{constructor(){this._queue=new n.IdleTaskQueue}set(w){this._queue.clear(),this._queue.enqueue(w)}flush(){this._queue.flush()}}},5882:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(k){let a=k.buffer.lines.get(k.buffer.ybase+k.buffer.y-1),w=a?.get(k.cols-1),l=k.buffer.lines.get(k.buffer.ybase+k.buffer.y);l&&w&&(l.isWrapped=w[f.CHAR_DATA_CODE_INDEX]!==f.NULL_CELL_CODE&&w[f.CHAR_DATA_CODE_INDEX]!==f.WHITESPACE_CELL_CODE)};let f=c(8938)},5451:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ExtendedAttrs=n.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new f}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}}n.AttributeData=c;class f{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,w=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=w}clone(){return new f(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}n.ExtendedAttrs=f},1073:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Buffer=n.MAX_BUFFER_SIZE=void 0;let f=c(5639),k=c(6168),a=c(5451),w=c(6107),l=c(732),m=c(3055),_=c(8938),i=c(8158),p=c(6760);n.MAX_BUFFER_SIZE=4294967295,n.Buffer=class{constructor(h,d,u){this._hasScrollback=h,this._optionsService=d,this._bufferService=u,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=w.DEFAULT_ATTR_DATA.clone(),this.savedCharset=p.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 k.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new f.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(h){return h?(this._nullCell.fg=h.fg,this._nullCell.bg=h.bg,this._nullCell.extended=h.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(h){return h?(this._whitespaceCell.fg=h.fg,this._whitespaceCell.bg=h.bg,this._whitespaceCell.extended=h.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(h,d){return new w.BufferLine(this._bufferService.cols,this.getNullCell(h),d)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let h=this.ybase+this.y-this.ydisp;return h>=0&&h<this._rows}_getCorrectBufferLength(h){if(!this._hasScrollback)return h;let d=h+this._optionsService.rawOptions.scrollback;return d>n.MAX_BUFFER_SIZE?n.MAX_BUFFER_SIZE:d}fillViewportRows(h){if(this.lines.length===0){h===void 0&&(h=w.DEFAULT_ATTR_DATA);let d=this._rows;for(;d--;)this.lines.push(this.getBlankLine(h))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new f.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(h,d){let u=this.getNullCell(w.DEFAULT_ATTR_DATA),b=0,S=this._getCorrectBufferLength(d);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<h)for(let E=0;E<this.lines.length;E++)b+=+this.lines.get(E).resize(h,u);let P=0;if(this._rows<d)for(let E=this._rows;E<d;E++)this.lines.length<d+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new w.BufferLine(h,u)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new w.BufferLine(h,u)));else for(let E=this._rows;E>d;E--)this.lines.length>d+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let E=this.lines.length-S;E>0&&(this.lines.trimStart(E),this.ybase=Math.max(this.ybase-E,0),this.ydisp=Math.max(this.ydisp-E,0),this.savedY=Math.max(this.savedY-E,0)),this.lines.maxLength=S}this.x=Math.min(this.x,h-1),this.y=Math.min(this.y,d-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,h-1),this.scrollTop=0}if(this.scrollBottom=d-1,this._isReflowEnabled&&(this._reflow(h,d),this._cols>h))for(let P=0;P<this.lines.length;P++)b+=+this.lines.get(P).resize(h,u);this._cols=h,this._rows=d,this._memoryCleanupQueue.clear(),b>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let h=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,h=!1);let d=0;for(;this._memoryCleanupPosition<this.lines.length;)if(d+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),d>100)return!0;return h}get _isReflowEnabled(){let h=this._optionsService.rawOptions.windowsPty;return h&&h.buildNumber?this._hasScrollback&&h.backend==="conpty"&&h.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(h,d){this._cols!==h&&(h>this._cols?this._reflowLarger(h,d):this._reflowSmaller(h,d))}_reflowLarger(h,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,h,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),u);if(b.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,b);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(h,d,S.countRemoved)}}_reflowLargerAdjustViewport(h,d,u){let b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=u;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<d&&this.lines.push(new w.BufferLine(h,b))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-u,0)}_reflowSmaller(h,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=[],P=0;for(let E=this.lines.length-1;E>=0;E--){let H=this.lines.get(E);if(!H||!H.isWrapped&&H.getTrimmedLength()<=h)continue;let $=[H];for(;H.isWrapped&&E>0;)H=this.lines.get(--E),$.unshift(H);if(!u){let T=this.ybase+this.y;if(T>=E&&T<E+$.length)continue}let D=$[$.length-1].getTrimmedLength(),x=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,h),A=x.length-$.length,L;L=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+A):Math.max(0,this.lines.length-this.lines.maxLength+A);let z=[];for(let T=0;T<A;T++){let R=this.getBlankLine(w.DEFAULT_ATTR_DATA,!0);z.push(R)}z.length>0&&(S.push({start:E+$.length+P,newLines:z}),P+=z.length),$.push(...z);let X=x.length-1,W=x[X];W===0&&(X--,W=x[X]);let K=$.length-A-1,v=D;for(;K>=0;){let T=Math.min(v,W);if($[X]===void 0)break;if($[X].copyCellsFrom($[K],v-T,W-T,T,!0),W-=T,W===0&&(X--,W=x[X]),v-=T,v===0){K--;let R=Math.max(K,0);v=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)x[T]<h&&$[T].setCell(x[T],b);let C=A-L;for(;C-- >0;)this.ybase===0?this.y<d-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-d&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+A,this.ybase+d-1)}if(S.length>0){let E=[],H=[];for(let W=0;W<this.lines.length;W++)H.push(this.lines.get(W));let $=this.lines.length,D=$-1,x=0,A=S[x];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let L=0;for(let W=Math.min(this.lines.maxLength-1,$+P-1);W>=0;W--)if(A&&A.start>D+L){for(let K=A.newLines.length-1;K>=0;K--)this.lines.set(W--,A.newLines[K]);W++,E.push({index:D+1,amount:A.newLines.length}),L+=A.newLines.length,A=S[++x]}else this.lines.set(W,H[D--]);let z=0;for(let W=E.length-1;W>=0;W--)E[W].index+=z,this.lines.onInsertEmitter.fire(E[W]),z+=E[W].amount;let X=Math.max(0,$+P-this.lines.maxLength);X>0&&this.lines.onTrimEmitter.fire(X)}}translateBufferLineToString(h,d,u=0,b){let S=this.lines.get(h);return S?S.translateToString(d,u,b):""}getWrappedRangeForLine(h){let d=h,u=h;for(;d>0&&this.lines.get(d).isWrapped;)d--;for(;u+1<this.lines.length&&this.lines.get(u+1).isWrapped;)u++;return{first:d,last:u}}setupTabStops(h){for(h!=null?this.tabs[h]||(h=this.prevStop(h)):(this.tabs={},h=0);h<this._cols;h+=this._optionsService.rawOptions.tabStopWidth)this.tabs[h]=!0}prevStop(h){for(h==null&&(h=this.x);!this.tabs[--h]&&h>0;);return h>=this._cols?this._cols-1:h<0?0:h}nextStop(h){for(h==null&&(h=this.x);!this.tabs[++h]&&h<this._cols;);return h>=this._cols?this._cols-1:h<0?0:h}clearMarkers(h){this._isClearing=!0;for(let d=0;d<this.markers.length;d++)this.markers[d].line===h&&(this.markers[d].dispose(),this.markers.splice(d--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let h=0;h<this.markers.length;h++)this.markers[h].dispose();this.markers.length=0,this._isClearing=!1}addMarker(h){let d=new i.Marker(h);return this.markers.push(d),d.register(this.lines.onTrim((u=>{d.line-=u,d.line<0&&d.dispose()}))),d.register(this.lines.onInsert((u=>{d.line>=u.index&&(d.line+=u.amount)}))),d.register(this.lines.onDelete((u=>{d.line>=u.index&&d.line<u.index+u.amount&&d.dispose(),d.line>u.index&&(d.line-=u.amount)}))),d.register(d.onDispose((()=>this._removeMarker(d)))),d}_removeMarker(h){this._isClearing||this.markers.splice(this.markers.indexOf(h),1)}}},6107:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLine=n.DEFAULT_ATTR_DATA=void 0;let f=c(5451),k=c(3055),a=c(8938),w=c(726);n.DEFAULT_ATTR_DATA=Object.freeze(new f.AttributeData);let l=0;class m{constructor(i,p,h=!1){this.isWrapped=h,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*i);let d=p||k.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let u=0;u<i;++u)this.setCell(u,d);this.length=i}get(i){let p=this._data[3*i+0],h=2097151&p;return[this._data[3*i+1],2097152&p?this._combined[i]:h?(0,w.stringFromCodePoint)(h):"",p>>22,2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):h]}set(i,p){this._data[3*i+1]=p[a.CHAR_DATA_ATTR_INDEX],p[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[i]=p[1],this._data[3*i+0]=2097152|i|p[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*i+0]=p[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(i){return this._data[3*i+0]>>22}hasWidth(i){return 12582912&this._data[3*i+0]}getFg(i){return this._data[3*i+1]}getBg(i){return this._data[3*i+2]}hasContent(i){return 4194303&this._data[3*i+0]}getCodePoint(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):2097151&p}isCombined(i){return 2097152&this._data[3*i+0]}getString(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i]:2097151&p?(0,w.stringFromCodePoint)(2097151&p):""}isProtected(i){return 536870912&this._data[3*i+2]}loadCell(i,p){return l=3*i,p.content=this._data[l+0],p.fg=this._data[l+1],p.bg=this._data[l+2],2097152&p.content&&(p.combinedData=this._combined[i]),268435456&p.bg&&(p.extended=this._extendedAttrs[i]),p}setCell(i,p){2097152&p.content&&(this._combined[i]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[i]=p.extended),this._data[3*i+0]=p.content,this._data[3*i+1]=p.fg,this._data[3*i+2]=p.bg}setCellFromCodepoint(i,p,h,d){268435456&d.bg&&(this._extendedAttrs[i]=d.extended),this._data[3*i+0]=p|h<<22,this._data[3*i+1]=d.fg,this._data[3*i+2]=d.bg}addCodepointToCell(i,p,h){let d=this._data[3*i+0];2097152&d?this._combined[i]+=(0,w.stringFromCodePoint)(p):2097151&d?(this._combined[i]=(0,w.stringFromCodePoint)(2097151&d)+(0,w.stringFromCodePoint)(p),d&=-2097152,d|=2097152):d=p|4194304,h&&(d&=-12582913,d|=h<<22),this._data[3*i+0]=d}insertCells(i,p,h){if((i%=this.length)&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length-i){let d=new k.CellData;for(let u=this.length-i-p-1;u>=0;--u)this.setCell(i+p+u,this.loadCell(i+u,d));for(let u=0;u<p;++u)this.setCell(i+u,h)}else for(let d=i;d<this.length;++d)this.setCell(d,h);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,h)}deleteCells(i,p,h){if(i%=this.length,p<this.length-i){let d=new k.CellData;for(let u=0;u<this.length-i-p;++u)this.setCell(i+u,this.loadCell(i+p+u,d));for(let u=this.length-p;u<this.length;++u)this.setCell(u,h)}else for(let d=i;d<this.length;++d)this.setCell(d,h);i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),this.getWidth(i)!==0||this.hasContent(i)||this.setCellFromCodepoint(i,0,1,h)}replaceCells(i,p,h,d=!1){if(d)for(i&&this.getWidth(i-1)===2&&!this.isProtected(i-1)&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length&&this.getWidth(p-1)===2&&!this.isProtected(p)&&this.setCellFromCodepoint(p,0,1,h);i<p&&i<this.length;)this.isProtected(i)||this.setCell(i,h),i++;else for(i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length&&this.getWidth(p-1)===2&&this.setCellFromCodepoint(p,0,1,h);i<p&&i<this.length;)this.setCell(i++,h)}resize(i,p){if(i===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let h=3*i;if(i>this.length){if(this._data.buffer.byteLength>=4*h)this._data=new Uint32Array(this._data.buffer,0,h);else{let d=new Uint32Array(h);d.set(this._data),this._data=d}for(let d=this.length;d<i;++d)this.setCell(d,p)}else{this._data=this._data.subarray(0,h);let d=Object.keys(this._combined);for(let b=0;b<d.length;b++){let S=parseInt(d[b],10);S>=i&&delete this._combined[S]}let u=Object.keys(this._extendedAttrs);for(let b=0;b<u.length;b++){let S=parseInt(u[b],10);S>=i&&delete this._extendedAttrs[S]}}return this.length=i,4*h*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let i=new Uint32Array(this._data.length);return i.set(this._data),this._data=i,1}return 0}fill(i,p=!1){if(p)for(let h=0;h<this.length;++h)this.isProtected(h)||this.setCell(h,i);else{this._combined={},this._extendedAttrs={};for(let h=0;h<this.length;++h)this.setCell(h,i)}}copyFrom(i){this.length!==i.length?this._data=new Uint32Array(i._data):this._data.set(i._data),this.length=i.length,this._combined={};for(let p in i._combined)this._combined[p]=i._combined[p];this._extendedAttrs={};for(let p in i._extendedAttrs)this._extendedAttrs[p]=i._extendedAttrs[p];this.isWrapped=i.isWrapped}clone(){let i=new m(0);i._data=new Uint32Array(this._data),i.length=this.length;for(let p in this._combined)i._combined[p]=this._combined[p];for(let p in this._extendedAttrs)i._extendedAttrs[p]=this._extendedAttrs[p];return i.isWrapped=this.isWrapped,i}getTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0])return i+(this._data[3*i+0]>>22);return 0}getNoBgTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0]||50331648&this._data[3*i+2])return i+(this._data[3*i+0]>>22);return 0}copyCellsFrom(i,p,h,d,u){let b=i._data;if(u)for(let P=d-1;P>=0;P--){for(let E=0;E<3;E++)this._data[3*(h+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[h+P]=i._extendedAttrs[p+P])}else for(let P=0;P<d;P++){for(let E=0;E<3;E++)this._data[3*(h+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[h+P]=i._extendedAttrs[p+P])}let S=Object.keys(i._combined);for(let P=0;P<S.length;P++){let E=parseInt(S[P],10);E>=p&&(this._combined[E-p+h]=i._combined[E])}}translateToString(i,p,h,d){p=p??0,h=h??this.length,i&&(h=Math.min(h,this.getTrimmedLength())),d&&(d.length=0);let u="";for(;p<h;){let b=this._data[3*p+0],S=2097151&b,P=2097152&b?this._combined[p]:S?(0,w.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(u+=P,d)for(let E=0;E<P.length;++E)d.push(p);p+=b>>22||1}return d&&d.push(p),u}}n.BufferLine=m},732:(y,n)=>{function c(f,k,a){if(k===f.length-1)return f[k].getTrimmedLength();let w=!f[k].hasContent(a-1)&&f[k].getWidth(a-1)===1,l=f[k+1].getWidth(0)===2;return w&&l?a-1:a}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(f,k,a,w,l,m){let _=[];for(let i=0;i<f.length-1;i++){let p=i,h=f.get(++p);if(!h.isWrapped)continue;let d=[f.get(i)];for(;p<f.length&&h.isWrapped;)d.push(h),h=f.get(++p);if(!m&&w>=i&&w<p){i+=d.length-1;continue}let u=0,b=c(d,u,k),S=1,P=0;for(;S<d.length;){let H=c(d,S,k),$=H-P,D=a-b,x=Math.min($,D);d[u].copyCellsFrom(d[S],P,b,x,!1),b+=x,b===a&&(u++,b=0),P+=x,P===H&&(S++,P=0),b===0&&u!==0&&d[u-1].getWidth(a-1)===2&&(d[u].copyCellsFrom(d[u-1],a-1,b++,1,!1),d[u-1].setCell(a-1,l))}d[u].replaceCells(b,a,l);let E=0;for(let H=d.length-1;H>0&&(H>u||d[H].getTrimmedLength()===0);H--)E++;E>0&&(_.push(i+d.length-E),_.push(E)),i+=d.length-1}return _},n.reflowLargerCreateNewLayout=function(f,k){let a=[],w=0,l=k[w],m=0;for(let _=0;_<f.length;_++)if(l===_){let i=k[++w];f.onDeleteEmitter.fire({index:_-m,amount:i}),_+=i-1,m+=i,l=k[++w]}else a.push(_);return{layout:a,countRemoved:m}},n.reflowLargerApplyNewLayout=function(f,k){let a=[];for(let w=0;w<k.length;w++)a.push(f.get(k[w]));for(let w=0;w<a.length;w++)f.set(w,a[w]);f.length=k.length},n.reflowSmallerGetNewLineLengths=function(f,k,a){let w=[],l=f.map(((p,h)=>c(f,h,k))).reduce(((p,h)=>p+h)),m=0,_=0,i=0;for(;i<l;){if(l-i<a){w.push(l-i);break}m+=a;let p=c(f,_,k);m>p&&(m-=p,_++);let h=f[_].getWidth(m-1)===2;h&&m--;let d=h?a-1:a;w.push(d),i+=d}return w},n.getWrappedLineTrimmedLength=c},4097:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferSet=void 0;let f=c(7150),k=c(1073),a=c(802);class w extends f.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 k.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new k.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)}}n.BufferSet=w},3055:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let f=c(726),k=c(8938),a=c(5451);class w 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 w;return _.setFromCharData(m),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,f.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[k.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(m[k.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(m[k.CHAR_DATA_CHAR_INDEX].length===2){let i=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){let p=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=p&&p<=57343?this.content=1024*(i-55296)+p-56320+65536|m[k.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=m[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[k.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=m[k.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[k.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}n.CellData=w},8938:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WHITESPACE_CELL_CODE=n.WHITESPACE_CELL_WIDTH=n.WHITESPACE_CELL_CHAR=n.NULL_CELL_CODE=n.NULL_CELL_WIDTH=n.NULL_CELL_CHAR=n.CHAR_DATA_CODE_INDEX=n.CHAR_DATA_WIDTH_INDEX=n.CHAR_DATA_CHAR_INDEX=n.CHAR_DATA_ATTR_INDEX=n.DEFAULT_EXT=n.DEFAULT_ATTR=n.DEFAULT_COLOR=void 0,n.DEFAULT_COLOR=0,n.DEFAULT_ATTR=n.DEFAULT_COLOR<<9|256,n.DEFAULT_EXT=0,n.CHAR_DATA_ATTR_INDEX=0,n.CHAR_DATA_CHAR_INDEX=1,n.CHAR_DATA_WIDTH_INDEX=2,n.CHAR_DATA_CODE_INDEX=3,n.NULL_CELL_CHAR="",n.NULL_CELL_WIDTH=1,n.NULL_CELL_CODE=0,n.WHITESPACE_CELL_CHAR=" ",n.WHITESPACE_CELL_WIDTH=1,n.WHITESPACE_CELL_CODE=32},8158:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let f=c(802),k=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 f.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,k.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}n.Marker=a,a._nextId=1},6760:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CHARSET=n.CHARSETS=void 0,n.CHARSETS={},n.DEFAULT_CHARSET=n.CHARSETS.B,n.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"},n.CHARSETS.A={"#":"\xA3"},n.CHARSETS.B=void 0,n.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},n.CHARSETS.C=n.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},n.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},n.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},n.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},n.CHARSETS.E=n.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},n.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},n.CHARSETS.H=n.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,n)=>{var c,f,k;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.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||(n.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"})(f||(n.C1=f={})),(function(a){a.ST=`${c.ESC}\\`})(k||(n.C1_ESCAPED=k={}))},726:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Utf8ToUtf32=n.StringToUtf32=void 0,n.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},n.utf32ToString=function(c,f=0,k=c.length){let a="";for(let w=f;w<k;++w){let l=c[w];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},n.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,f){let k=c.length;if(!k)return 0;let a=0,w=0;if(this._interim){let l=c.charCodeAt(w++);56320<=l&&l<=57343?f[a++]=1024*(this._interim-55296)+l-56320+65536:(f[a++]=this._interim,f[a++]=l),this._interim=0}for(let l=w;l<k;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=k)return this._interim=m,a;let _=c.charCodeAt(l);56320<=_&&_<=57343?f[a++]=1024*(m-55296)+_-56320+65536:(f[a++]=m,f[a++]=_)}else m!==65279&&(f[a++]=m)}return a}},n.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,f){let k=c.length;if(!k)return 0;let a,w,l,m,_=0,i=0,p=0;if(this.interim[0]){let u=!1,b=this.interim[0];b&=(224&b)==192?31:(240&b)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)b<<=6,b|=S;let E=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,H=E-P;for(;p<H;){if(p>=k)return 0;if(S=c[p++],(192&S)!=128){p--,u=!0;break}this.interim[P++]=S,b<<=6,b|=63&S}u||(E===2?b<128?p--:f[_++]=b:E===3?b<2048||b>=55296&&b<=57343||b===65279||(f[_++]=b):b<65536||b>1114111||(f[_++]=b)),this.interim.fill(0)}let h=k-4,d=p;for(;d<k;){for(;!(!(d<h)||128&(a=c[d])||128&(w=c[d+1])||128&(l=c[d+2])||128&(m=c[d+3]));)f[_++]=a,f[_++]=w,f[_++]=l,f[_++]=m,d+=4;if(a=c[d++],a<128)f[_++]=a;else if((224&a)==192){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(i=(31&a)<<6|63&w,i<128){d--;continue}f[_++]=i}else if((240&a)==224){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(l=c[d++],(192&l)!=128){d--;continue}if(i=(15&a)<<12|(63&w)<<6|63&l,i<2048||i>=55296&&i<=57343||i===65279)continue;f[_++]=i}else if((248&a)==240){if(d>=k)return this.interim[0]=a,_;if(w=c[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(l=c[d++],(192&l)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,this.interim[2]=l,_;if(m=c[d++],(192&m)!=128){d--;continue}if(i=(7&a)<<18|(63&w)<<12|(63&l)<<6|63&m,i<65536||i>1114111)continue;f[_++]=i}}return _}}},7428:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeV6=void 0;let f=c(6415),k=[[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]],w;n.UnicodeV6=class{constructor(){if(this.version="6",!w){w=new Uint8Array(65536),w.fill(1),w[0]=0,w.fill(0,1,32),w.fill(0,127,160),w.fill(2,4352,4448),w[9001]=2,w[9002]=2,w.fill(2,11904,42192),w[12351]=1,w.fill(2,44032,55204),w.fill(2,63744,64256),w.fill(2,65040,65050),w.fill(2,65072,65136),w.fill(2,65280,65377),w.fill(2,65504,65511);for(let l=0;l<k.length;++l)w.fill(0,k[l][0],k[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?w[l]:(function(m,_){let i,p=0,h=_.length-1;if(m<_[0][0]||m>_[h][1])return!1;for(;h>=p;)if(i=p+h>>1,m>_[i][1])p=i+1;else{if(!(m<_[i][0]))return!0;h=i-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let _=this.wcwidth(l),i=_===0&&m!==0;if(i){let p=f.UnicodeService.extractWidth(m);p===0?i=!1:p>_&&(_=p)}return f.UnicodeService.createPropertyValue(0,_,i)}}},3562:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WriteBuffer=void 0;let f=c(7150),k=c(802);class a extends f.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 k.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 i=this._callbacks.shift();i&&i()}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 i=this._writeBuffer[this._bufferOffset],p=this._action(i,m);if(p){let d=u=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,u))):this._innerWrite(_,u);return void p.catch((u=>(queueMicrotask((()=>{throw u})),Promise.resolve(!1)))).then(d)}let h=this._callbacks[this._bufferOffset];if(h&&h(),this._bufferOffset++,this._pendingData-=i.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()}}n.WriteBuffer=a},8693:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.parseColor=function(a){if(!a)return;let w=a.toLowerCase();if(w.indexOf("rgb:")===0){w=w.slice(4);let l=c.exec(w);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(w.indexOf("#")===0&&(w=w.slice(1),f.exec(w)&&[3,6,9,12].includes(w.length))){let l=w.length/3,m=[0,0,0];for(let _=0;_<3;++_){let i=parseInt(w.slice(l*_,l*_+l),16);m[_]=l===1?i<<4:l===2?i:l===3?i>>4:i>>8}return m}},n.toRgbString=function(a,w=16){let[l,m,_]=a;return`rgb:${k(l,w)}/${k(m,w)}/${k(_,w)}`};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})$/,f=/^[\da-f]+$/;function k(a,w){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(w){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.PAYLOAD_LIMIT=void 0,n.PAYLOAD_LIMIT=1e7},9823:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DcsHandler=n.DcsParser=void 0;let f=c(726),k=c(7262),a=c(1263),w=[];n.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=w,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=w}registerHandler(m,_){this._handlers[m]===void 0&&(this._handlers[m]=[]);let i=this._handlers[m];return i.push(_),{dispose:()=>{let p=i.indexOf(_);p!==-1&&i.splice(p,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=w,this._ident=0}hook(m,_){if(this.reset(),this._ident=m,this._active=this._handlers[m]||w,this._active.length)for(let i=this._active.length-1;i>=0;i--)this._active[i].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(m,_,i){if(this._active.length)for(let p=this._active.length-1;p>=0;p--)this._active[p].put(m,_,i);else this._handlerFb(this._ident,"PUT",(0,f.utf32ToString)(m,_,i))}unhook(m,_=!0){if(this._active.length){let i=!1,p=this._active.length-1,h=!1;if(this._stack.paused&&(p=this._stack.loopPosition-1,i=_,h=this._stack.fallThrough,this._stack.paused=!1),!h&&i===!1){for(;p>=0&&(i=this._active[p].unhook(m),i!==!0);p--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!1,i;p--}for(;p>=0;p--)if(i=this._active[p].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",m);this._active=w,this._ident=0}};let l=new k.Params;l.addParam(0),n.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,_,i){this._hitLimit||(this._data+=(0,f.utf32ToString)(m,_,i),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((i=>(this._params=l,this._data="",this._hitLimit=!1,i)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.EscapeSequenceParser=n.VT500_TRANSITION_TABLE=n.TransitionTable=void 0;let f=c(7150),k=c(7262),a=c(1346),w=c(9823);class l{constructor(p){this.table=new Uint8Array(p)}setDefault(p,h){this.table.fill(p<<4|h)}add(p,h,d,u){this.table[h<<8|p]=d<<4|u}addMany(p,h,d,u){for(let b=0;b<p.length;b++)this.table[h<<8|p[b]]=d<<4|u}}n.TransitionTable=l;let m=160;n.VT500_TRANSITION_TABLE=(function(){let i=new l(4095),p=Array.apply(null,Array(256)).map(((P,E)=>E)),h=(P,E)=>p.slice(P,E),d=h(32,127),u=h(0,24);u.push(25),u.push.apply(u,h(28,32));let b=h(0,14),S;for(S in i.setDefault(1,0),i.addMany(d,0,2,0),b)i.addMany([24,26,153,154],S,3,0),i.addMany(h(128,144),S,3,0),i.addMany(h(144,152),S,3,0),i.add(156,S,0,0),i.add(27,S,11,1),i.add(157,S,4,8),i.addMany([152,158,159],S,0,7),i.add(155,S,11,3),i.add(144,S,11,9);return i.addMany(u,0,3,0),i.addMany(u,1,3,1),i.add(127,1,0,1),i.addMany(u,8,0,8),i.addMany(u,3,3,3),i.add(127,3,0,3),i.addMany(u,4,3,4),i.add(127,4,0,4),i.addMany(u,6,3,6),i.addMany(u,5,3,5),i.add(127,5,0,5),i.addMany(u,2,3,2),i.add(127,2,0,2),i.add(93,1,4,8),i.addMany(d,8,5,8),i.add(127,8,5,8),i.addMany([156,27,24,26,7],8,6,0),i.addMany(h(28,32),8,0,8),i.addMany([88,94,95],1,0,7),i.addMany(d,7,0,7),i.addMany(u,7,0,7),i.add(156,7,0,0),i.add(127,7,0,7),i.add(91,1,11,3),i.addMany(h(64,127),3,7,0),i.addMany(h(48,60),3,8,4),i.addMany([60,61,62,63],3,9,4),i.addMany(h(48,60),4,8,4),i.addMany(h(64,127),4,7,0),i.addMany([60,61,62,63],4,0,6),i.addMany(h(32,64),6,0,6),i.add(127,6,0,6),i.addMany(h(64,127),6,0,0),i.addMany(h(32,48),3,9,5),i.addMany(h(32,48),5,9,5),i.addMany(h(48,64),5,0,6),i.addMany(h(64,127),5,7,0),i.addMany(h(32,48),4,9,5),i.addMany(h(32,48),1,9,2),i.addMany(h(32,48),2,9,2),i.addMany(h(48,127),2,10,0),i.addMany(h(48,80),1,10,0),i.addMany(h(81,88),1,10,0),i.addMany([89,90,92],1,10,0),i.addMany(h(96,127),1,10,0),i.add(80,1,11,9),i.addMany(u,9,0,9),i.add(127,9,0,9),i.addMany(h(28,32),9,0,9),i.addMany(h(32,48),9,9,12),i.addMany(h(48,60),9,8,10),i.addMany([60,61,62,63],9,9,10),i.addMany(u,11,0,11),i.addMany(h(32,128),11,0,11),i.addMany(h(28,32),11,0,11),i.addMany(u,10,0,10),i.add(127,10,0,10),i.addMany(h(28,32),10,0,10),i.addMany(h(48,60),10,8,10),i.addMany([60,61,62,63],10,0,11),i.addMany(h(32,48),10,9,12),i.addMany(u,12,0,12),i.add(127,12,0,12),i.addMany(h(28,32),12,0,12),i.addMany(h(32,48),12,9,12),i.addMany(h(48,64),12,0,11),i.addMany(h(64,127),12,12,13),i.addMany(h(64,127),10,12,13),i.addMany(h(64,127),9,12,13),i.addMany(u,13,13,13),i.addMany(d,13,13,13),i.add(127,13,0,13),i.addMany([27,156,24,26],13,14,0),i.add(m,0,2,0),i.add(m,8,5,8),i.add(m,6,0,6),i.add(m,11,0,11),i.add(m,13,13,13),i})();class _ extends f.Disposable{constructor(p=n.VT500_TRANSITION_TABLE){super(),this._transitions=p,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new k.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(h,d,u)=>{},this._executeHandlerFb=h=>{},this._csiHandlerFb=(h,d)=>{},this._escHandlerFb=h=>{},this._errorHandlerFb=h=>h,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,f.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 w.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(p,h=[64,126]){let d=0;if(p.prefix){if(p.prefix.length>1)throw new Error("only one byte as prefix supported");if(d=p.prefix.charCodeAt(0),d&&60>d||d>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(p.intermediates){if(p.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let b=0;b<p.intermediates.length;++b){let S=p.intermediates.charCodeAt(b);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");d<<=8,d|=S}}if(p.final.length!==1)throw new Error("final must be a single byte");let u=p.final.charCodeAt(0);if(h[0]>u||u>h[1])throw new Error(`final must be in range ${h[0]} .. ${h[1]}`);return d<<=8,d|=u,d}identToString(p){let h=[];for(;p;)h.push(String.fromCharCode(255&p)),p>>=8;return h.reverse().join("")}setPrintHandler(p){this._printHandler=p}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(p,h){let d=this._identifier(p,[48,126]);this._escHandlers[d]===void 0&&(this._escHandlers[d]=[]);let u=this._escHandlers[d];return u.push(h),{dispose:()=>{let b=u.indexOf(h);b!==-1&&u.splice(b,1)}}}clearEscHandler(p){this._escHandlers[this._identifier(p,[48,126])]&&delete this._escHandlers[this._identifier(p,[48,126])]}setEscHandlerFallback(p){this._escHandlerFb=p}setExecuteHandler(p,h){this._executeHandlers[p.charCodeAt(0)]=h}clearExecuteHandler(p){this._executeHandlers[p.charCodeAt(0)]&&delete this._executeHandlers[p.charCodeAt(0)]}setExecuteHandlerFallback(p){this._executeHandlerFb=p}registerCsiHandler(p,h){let d=this._identifier(p);this._csiHandlers[d]===void 0&&(this._csiHandlers[d]=[]);let u=this._csiHandlers[d];return u.push(h),{dispose:()=>{let b=u.indexOf(h);b!==-1&&u.splice(b,1)}}}clearCsiHandler(p){this._csiHandlers[this._identifier(p)]&&delete this._csiHandlers[this._identifier(p)]}setCsiHandlerFallback(p){this._csiHandlerFb=p}registerDcsHandler(p,h){return this._dcsParser.registerHandler(this._identifier(p),h)}clearDcsHandler(p){this._dcsParser.clearHandler(this._identifier(p))}setDcsHandlerFallback(p){this._dcsParser.setHandlerFallback(p)}registerOscHandler(p,h){return this._oscParser.registerHandler(p,h)}clearOscHandler(p){this._oscParser.clearHandler(p)}setOscHandlerFallback(p){this._oscParser.setHandlerFallback(p)}setErrorHandler(p){this._errorHandler=p}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(p,h,d,u,b){this._parseStack.state=p,this._parseStack.handlers=h,this._parseStack.handlerPos=d,this._parseStack.transition=u,this._parseStack.chunkPos=b}parse(p,h,d){let u,b=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(d===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let E=this._parseStack.handlers,H=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](this._params),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 4:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 6:if(b=p[this._parseStack.chunkPos],u=this._dcsParser.unhook(b!==24&&b!==26,d),u)return u;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=p[this._parseStack.chunkPos],u=this._oscParser.end(b!==24&&b!==26,d),u)return u;b===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 E=P;E<h;++E){switch(b=p[E],S=this._transitions.table[this.currentState<<8|(b<160?b:m)],S>>4){case 2:for(let A=E+1;;++A){if(A>=h||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<m){this._printHandler(p,E,A),E=A-1;break}}break;case 3:this._executeHandlers[b]?this._executeHandlers[b]():this._executeHandlerFb(b),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:E,code:b,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let H=this._csiHandlers[this._collect<<8|b],$=H?H.length-1:-1;for(;$>=0&&(u=H[$](this._params),u!==!0);$--)if(u instanceof Promise)return this._preserveStack(3,H,$,S,E),u;$<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingJoinState=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++E<h&&(b=p[E])>47&&b<60);E--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:let D=this._escHandlers[this._collect<<8|b],x=D?D.length-1:-1;for(;x>=0&&(u=D[x](),u!==!0);x--)if(u instanceof Promise)return this._preserveStack(4,D,x,S,E),u;x<0&&this._escHandlerFb(this._collect<<8|b),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|b,this._params);break;case 13:for(let A=E+1;;++A)if(A>=h||(b=p[A])===24||b===26||b===27||b>127&&b<m){this._dcsParser.put(p,E,A),E=A-1;break}break;case 14:if(u=this._dcsParser.unhook(b!==24&&b!==26),u)return this._preserveStack(6,[],0,S,E),u;b===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 A=E+1;;A++)if(A>=h||(b=p[A])<32||b>127&&b<m){this._oscParser.put(p,E,A),E=A-1;break}break;case 6:if(u=this._oscParser.end(b!==24&&b!==26),u)return this._preserveStack(5,[],0,S,E),u;b===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}n.EscapeSequenceParser=_},1346:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let f=c(1263),k=c(726),a=[];n.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(w,l){this._handlers[w]===void 0&&(this._handlers[w]=[]);let m=this._handlers[w];return m.push(l),{dispose:()=>{let _=m.indexOf(l);_!==-1&&m.splice(_,1)}}}clearHandler(w){this._handlers[w]&&delete this._handlers[w]}setHandlerFallback(w){this._handlerFb=w}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let w=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;w>=0;--w)this._active[w].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 w=this._active.length-1;w>=0;w--)this._active[w].start();else this._handlerFb(this._id,"START")}_put(w,l,m){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(w,l,m);else this._handlerFb(this._id,"PUT",(0,k.utf32ToString)(w,l,m))}start(){this.reset(),this._state=1}put(w,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let _=w[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(w,l,m)}}end(w,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,i=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,m=l,i=this._stack.fallThrough,this._stack.paused=!1),!i&&m===!1){for(;_>=0&&(m=this._active[_].end(w),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",w);this._active=a,this._id=-1,this._state=0}}},n.OscHandler=class{constructor(w){this._handler=w,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(w,l,m){this._hitLimit||(this._data+=(0,k.utf32ToString)(w,l,m),this._data.length>f.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(w){let l=!1;if(this._hitLimit)l=!1;else if(w&&(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:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Params=void 0;let c=2147483647;class f{static fromArray(a){let w=new f;if(!a.length)return w;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;++_)w.addSubParam(m[_]);else w.addParam(m)}return w}constructor(a=32,w=32){if(this.maxLength=a,this.maxSubParamsLength=w,w>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(w),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new f(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 w=0;w<this.length;++w){a.push(this.params[w]);let l=this._subParamsIdx[w]>>8,m=255&this._subParamsIdx[w];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 w=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-w>0?this._subParams.subarray(w,l):null}getSubParamsAll(){let a={};for(let w=0;w<this.length;++w){let l=this._subParamsIdx[w]>>8,m=255&this._subParamsIdx[w];m-l>0&&(a[w]=this._subParams.slice(l,m))}return a}addDigit(a){let w;if(this._rejectDigits||!(w=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[w-1];l[w-1]=~m?Math.min(10*m+a,c):a}}n.Params=f},3027:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.AddonManager=void 0,n.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,f){let k={instance:f,dispose:f.dispose,isDisposed:!1};this._addons.push(k),f.dispose=()=>this._wrappedAddonDispose(k),f.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let f=-1;for(let k=0;k<this._addons.length;k++)if(this._addons[k]===c){f=k;break}if(f===-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(f,1)}}},3235:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferApiView=void 0;let f=c(793),k=c(3055);n.BufferApiView=class{constructor(a,w){this._buffer=a,this.type=w}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 w=this._buffer.lines.get(a);if(w)return new f.BufferLineApiView(w)}getNullCell(){return new k.CellData}}},793:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let f=c(3055);n.BufferLineApiView=class{constructor(k){this._line=k}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(k,a){if(!(k<0||k>=this._line.length))return a?(this._line.loadCell(k,a),a):this._line.loadCell(k,new f.CellData)}translateToString(k,a,w){return this._line.translateToString(k,a,w)}}},5101:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let f=c(3235),k=c(7150),a=c(802);class w extends k.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new f.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new f.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)}}n.BufferNamespaceApi=w},6097:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ParserApi=void 0,n.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,f){return this._core.registerCsiHandler(c,(k=>f(k.toArray())))}addCsiHandler(c,f){return this.registerCsiHandler(c,f)}registerDcsHandler(c,f){return this._core.registerDcsHandler(c,((k,a)=>f(k,a.toArray())))}addDcsHandler(c,f){return this.registerDcsHandler(c,f)}registerEscHandler(c,f){return this._core.registerEscHandler(c,f)}addEscHandler(c,f){return this.registerEscHandler(c,f)}registerOscHandler(c,f){return this._core.registerOscHandler(c,f)}addOscHandler(c,f){return this.registerOscHandler(c,f)}}},4335:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeApi=void 0,n.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(y,n,c){var f=this&&this.__decorate||function(i,p,h,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,h):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,h,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,h,S):u(p,h))||S);return b>3&&S&&Object.defineProperty(p,h,S),S},k=this&&this.__param||function(i,p){return function(h,d){p(h,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.BufferService=n.MINIMUM_ROWS=n.MINIMUM_COLS=void 0;let a=c(7150),w=c(4097),l=c(6501),m=c(802);n.MINIMUM_COLS=2,n.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(i){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(i.rawOptions.cols||0,n.MINIMUM_COLS),this.rows=Math.max(i.rawOptions.rows||0,n.MINIMUM_ROWS),this.buffers=this._register(new w.BufferSet(i,this)),this._register(this.buffers.onBufferActivate((p=>{this._onScroll.fire(p.activeBuffer.ydisp)})))}resize(i,p){let h=this.cols!==i,d=this.rows!==p;this.cols=i,this.rows=p,this.buffers.resize(i,p),this._onResize.fire({cols:i,rows:p,colsChanged:h,rowsChanged:d})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(i,p=!1){let h=this.buffer,d;d=this._cachedBlankLine,d&&d.length===this.cols&&d.getFg(0)===i.fg&&d.getBg(0)===i.bg||(d=h.getBlankLine(i,p),this._cachedBlankLine=d),d.isWrapped=p;let u=h.ybase+h.scrollTop,b=h.ybase+h.scrollBottom;if(h.scrollTop===0){let S=h.lines.isFull;b===h.lines.length-1?S?h.lines.recycle().copyFrom(d):h.lines.push(d.clone()):h.lines.splice(b+1,0,d.clone()),S?this.isUserScrolling&&(h.ydisp=Math.max(h.ydisp-1,0)):(h.ybase++,this.isUserScrolling||h.ydisp++)}else{let S=b-u+1;h.lines.shiftElements(u+1,S-1,-1),h.lines.set(b,d.clone())}this.isUserScrolling||(h.ydisp=h.ybase),this._onScroll.fire(h.ydisp)}scrollLines(i,p){let h=this.buffer;if(i<0){if(h.ydisp===0)return;this.isUserScrolling=!0}else i+h.ydisp>=h.ybase&&(this.isUserScrolling=!1);let d=h.ydisp;h.ydisp=Math.max(Math.min(h.ydisp+i,h.ybase),0),d!==h.ydisp&&(p||this._onScroll.fire(h.ydisp))}};n.BufferService=_,n.BufferService=_=f([k(0,l.IOptionsService)],_)},5746:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CharsetService=void 0,n.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,f){this._charsets[c]=f,this.glevel===c&&(this.charset=f)}}},7792:function(y,n,c){var f=this&&this.__decorate||function(d,u,b,S){var P,E=arguments.length,H=E<3?u:S===null?S=Object.getOwnPropertyDescriptor(u,b):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")H=Reflect.decorate(d,u,b,S);else for(var $=d.length-1;$>=0;$--)(P=d[$])&&(H=(E<3?P(H):E>3?P(u,b,H):P(u,b))||H);return E>3&&H&&Object.defineProperty(u,b,H),H},k=this&&this.__param||function(d,u){return function(b,S){u(b,S,d)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreMouseService=void 0;let a=c(6501),w=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:d=>d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)},VT200:{events:19,restrict:d=>d.action!==32},DRAG:{events:23,restrict:d=>d.action!==32||d.button!==3},ANY:{events:31,restrict:d=>!0}};function _(d,u){let b=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(b|=64,b|=d.action):(b|=3&d.button,4&d.button&&(b|=64),8&d.button&&(b|=128),d.action===32?b|=32:d.action!==0||u||(b|=3)),b}let i=String.fromCharCode,p={DEFAULT:d=>{let u=[_(d,!1)+32,d.col+32,d.row+32];return u[0]>255||u[1]>255||u[2]>255?"":`\x1B[M${i(u[0])}${i(u[1])}${i(u[2])}`},SGR:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.col};${d.row}${u}`},SGR_PIXELS:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.x};${d.y}${u}`}},h=class extends w.Disposable{constructor(d,u,b){super(),this._bufferService=d,this._coreService=u,this._optionsService=b,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(p))this.addEncoding(S,p[S]);this.reset()}addProtocol(d,u){this._protocols[d]=u}addEncoding(d,u){this._encodings[d]=u}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(d){if(!this._protocols[d])throw new Error(`unknown protocol "${d}"`);this._activeProtocol=d,this._onProtocolChange.fire(this._protocols[d].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(d){if(!this._encodings[d])throw new Error(`unknown encoding "${d}"`);this._activeEncoding=d}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(d,u,b){if(d.deltaY===0||d.shiftKey||u===void 0||b===void 0)return 0;let S=u/b,P=this._applyScrollModifier(d.deltaY,d);return d.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(d.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):d.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(d,u){return u.altKey||u.ctrlKey||u.shiftKey?d*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:d*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(d){if(d.col<0||d.col>=this._bufferService.cols||d.row<0||d.row>=this._bufferService.rows||d.button===4&&d.action===32||d.button===3&&d.action!==32||d.button!==4&&(d.action===2||d.action===3)||(d.col++,d.row++,d.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,d,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(d))return!1;let u=this._encodings[this._activeEncoding](d);return u&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(u):this._coreService.triggerDataEvent(u,!0)),this._lastEvent=d,!0}explainEvents(d){return{down:!!(1&d),up:!!(2&d),drag:!!(4&d),move:!!(8&d),wheel:!!(16&d)}}_equalEvents(d,u,b){if(b){if(d.x!==u.x||d.y!==u.y)return!1}else if(d.col!==u.col||d.row!==u.row)return!1;return d.button===u.button&&d.action===u.action&&d.ctrl===u.ctrl&&d.alt===u.alt&&d.shift===u.shift}};n.CoreMouseService=h,n.CoreMouseService=h=f([k(0,a.IBufferService),k(1,a.ICoreService),k(2,a.IOptionsService)],h)},4071:function(y,n,c){var f=this&&this.__decorate||function(h,d,u,b){var S,P=arguments.length,E=P<3?d:b===null?b=Object.getOwnPropertyDescriptor(d,u):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(h,d,u,b);else for(var H=h.length-1;H>=0;H--)(S=h[H])&&(E=(P<3?S(E):P>3?S(d,u,E):S(d,u))||E);return P>3&&E&&Object.defineProperty(d,u,E),E},k=this&&this.__param||function(h,d){return function(u,b){d(u,b,h)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreService=void 0;let a=c(7453),w=c(7150),l=c(6501),m=c(802),_=Object.freeze({insertMode:!1}),i=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),p=class extends w.Disposable{constructor(h,d,u){super(),this._bufferService=h,this._logService=d,this._optionsService=u,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)(i)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}triggerDataEvent(h,d=!1){if(this._optionsService.rawOptions.disableStdin)return;let u=this._bufferService.buffer;d&&this._optionsService.rawOptions.scrollOnUserInput&&u.ybase!==u.ydisp&&this._onRequestScrollToBottom.fire(),d&&this._onUserInput.fire(),this._logService.debug(`sending data "${h}"`),this._logService.trace("sending data (codes)",(()=>h.split("").map((b=>b.charCodeAt(0))))),this._onData.fire(h)}triggerBinaryEvent(h){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${h}"`),this._logService.trace("sending binary (codes)",(()=>h.split("").map((d=>d.charCodeAt(0))))),this._onBinary.fire(h))}};n.CoreService=p,n.CoreService=p=f([k(0,l.IBufferService),k(1,l.ILogService),k(2,l.IOptionsService)],p)},6025:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let f=c(6501),k=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)}}n.ServiceCollection=a,n.InstantiationService=class{constructor(){this._services=new a,this._services.set(f.IInstantiationService,this)}setService(w,l){this._services.set(w,l)}getService(w){return this._services.get(w)}createInstance(w,...l){let m=(0,k.getServiceDependencies)(w).sort(((p,h)=>p.index-h.index)),_=[];for(let p of m){let h=this._services.get(p.id);if(!h)throw new Error(`[createInstance] ${w.name} depends on UNKNOWN service ${p.id._id}.`);_.push(h)}let i=m.length>0?m[0].index:l.length;if(l.length!==i)throw new Error(`[createInstance] First service dependency of ${w.name} at position ${i+1} conflicts with ${l.length} static arguments`);return new w(...l,..._)}}},7276:function(y,n,c){var f=this&&this.__decorate||function(i,p,h,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,h):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,h,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,h,S):u(p,h))||S);return b>3&&S&&Object.defineProperty(p,h,S),S},k=this&&this.__param||function(i,p){return function(h,d){p(h,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.LogService=void 0,n.setTraceLogger=function(i){m=i},n.traceCall=function(i,p,h){if(typeof h.value!="function")throw new Error("not supported");let d=h.value;h.value=function(...u){if(m.logLevel!==w.LogLevelEnum.TRACE)return d.apply(this,u);m.trace(`GlyphRenderer#${d.name}(${u.map((S=>JSON.stringify(S))).join(", ")})`);let b=d.apply(this,u);return m.trace(`GlyphRenderer#${d.name} return`,b),b}};let a=c(7150),w=c(6501),l={trace:w.LogLevelEnum.TRACE,debug:w.LogLevelEnum.DEBUG,info:w.LogLevelEnum.INFO,warn:w.LogLevelEnum.WARN,error:w.LogLevelEnum.ERROR,off:w.LogLevelEnum.OFF},m,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(i){super(),this._optionsService=i,this._logLevel=w.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(i){for(let p=0;p<i.length;p++)typeof i[p]=="function"&&(i[p]=i[p]())}_log(i,p,h){this._evalLazyOptionalParams(h),i.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+p,...h)}trace(i,...p){this._logLevel<=w.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,i,p)}debug(i,...p){this._logLevel<=w.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,i,p)}info(i,...p){this._logLevel<=w.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,i,p)}warn(i,...p){this._logLevel<=w.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,i,p)}error(i,...p){this._logLevel<=w.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,i,p)}};n.LogService=_,n.LogService=_=f([k(0,w.IOptionsService)],_)},56:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let f=c(7150),k=c(701),a=c(802);n.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:k.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let w=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends f.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let i={...n.DEFAULT_OPTIONS};for(let p in _)if(p in i)try{let h=_[p];i[p]=this._sanitizeAndValidateOption(p,h)}catch(h){console.error(h)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register((0,f.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,i){return this.onOptionChange((p=>{p===_&&i(this.rawOptions[_])}))}onMultipleOptionChange(_,i){return this.onOptionChange((p=>{_.indexOf(p)!==-1&&i()}))}_setupOptions(){let _=p=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);return this.rawOptions[p]},i=(p,h)=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);h=this._sanitizeAndValidateOption(p,h),this.rawOptions[p]!==h&&(this.rawOptions[p]=h,this._onOptionChange.fire(p))};for(let p in this.rawOptions){let h={get:_.bind(this,p),set:i.bind(this,p)};Object.defineProperty(this.options,p,h)}}_sanitizeAndValidateOption(_,i){switch(_){case"cursorStyle":if(i||(i=n.DEFAULT_OPTIONS[_]),!(function(p){return p==="block"||p==="underline"||p==="bar"})(i))throw new Error(`"${i}" is not a valid value for ${_}`);break;case"wordSeparator":i||(i=n.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=w.includes(i)?i:n.DEFAULT_OPTIONS[_];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${_} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${_} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{}}return i}}n.OptionsService=l},8811:function(y,n,c){var f=this&&this.__decorate||function(l,m,_,i){var p,h=arguments.length,d=h<3?m:i===null?i=Object.getOwnPropertyDescriptor(m,_):i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(l,m,_,i);else for(var u=l.length-1;u>=0;u--)(p=l[u])&&(d=(h<3?p(d):h>3?p(m,_,d):p(m,_))||d);return h>3&&d&&Object.defineProperty(m,_,d),d},k=this&&this.__param||function(l,m){return function(_,i){m(_,i,l)}};Object.defineProperty(n,"__esModule",{value:!0}),n.OscLinkService=void 0;let a=c(6501),w=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 u=m.addMarker(m.ybase+m.y),b={data:l,id:this._nextId++,lines:[u]};return u.onDispose((()=>this._removeMarkerFromLink(b,u))),this._dataByLinkId.set(b.id,b),b.id}let _=l,i=this._getEntryIdKey(_),p=this._entriesWithId.get(i);if(p)return this.addLineToLink(p.id,m.ybase+m.y),p.id;let h=m.addMarker(m.ybase+m.y),d={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(d,h))),this._entriesWithId.set(d.key,d),this._dataByLinkId.set(d.id,d),d.id}addLineToLink(l,m){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((i=>i.line!==m))){let i=this._bufferService.buffer.addMarker(m);_.lines.push(i),i.onDispose((()=>this._removeMarkerFromLink(_,i)))}}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)))}};n.OscLinkService=w,n.OscLinkService=w=f([k(0,a.IBufferService)],w)},6201:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(k){return k[f]||[]},n.createDecorator=function(k){if(n.serviceRegistry.has(k))return n.serviceRegistry.get(k);let a=function(w,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,i,p){i[c]===i?i[f].push({id:_,index:p}):(i[f]=[{id:_,index:p}],i[c]=i)})(a,w,m)};return a._id=k,n.serviceRegistry.set(k,a),a};let c="di$target",f="di$dependencies";n.serviceRegistry=new Map},6501:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.IDecorationService=n.IUnicodeService=n.IOscLinkService=n.IOptionsService=n.ILogService=n.LogLevelEnum=n.IInstantiationService=n.ICharsetService=n.ICoreService=n.ICoreMouseService=n.IBufferService=void 0;let f=c(6201);var k;n.IBufferService=(0,f.createDecorator)("BufferService"),n.ICoreMouseService=(0,f.createDecorator)("CoreMouseService"),n.ICoreService=(0,f.createDecorator)("CoreService"),n.ICharsetService=(0,f.createDecorator)("CharsetService"),n.IInstantiationService=(0,f.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"})(k||(n.LogLevelEnum=k={})),n.ILogService=(0,f.createDecorator)("LogService"),n.IOptionsService=(0,f.createDecorator)("OptionsService"),n.IOscLinkService=(0,f.createDecorator)("OscLinkService"),n.IUnicodeService=(0,f.createDecorator)("UnicodeService"),n.IDecorationService=(0,f.createDecorator)("DecorationService")},6415:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let f=c(7428),k=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 k.Emitter,this.onChange=this._onChange.event;let l=new f.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,i=l.length;for(let p=0;p<i;++p){let h=l.charCodeAt(p);if(55296<=h&&h<=56319){if(++p>=i)return m+this.wcwidth(h);let b=l.charCodeAt(p);56320<=b&&b<=57343?h=1024*(h-55296)+b-56320+65536:m+=this.wcwidth(b)}let d=this.charProperties(h,_),u=a.extractWidth(d);a.extractShouldJoin(d)&&(u-=a.extractWidth(_)),m+=u,_=d}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}n.UnicodeService=a},5856:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Terminal=void 0;let f=c(6107),k=c(5777),a=c(802);class w extends k.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(f.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()}}n.Terminal=w},3058:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Permutation=n.CallbackIterable=n.ArrayQueue=n.booleanComparator=n.numberComparator=n.CompareResult=void 0,n.tail=function(u,b=0){return u[u.length-(1+b)]},n.tail2=function(u){if(u.length===0)throw new Error("Invalid tail call");return[u.slice(0,u.length-1),u[u.length-1]]},n.equals=function(u,b,S=(P,E)=>P===E){if(u===b)return!0;if(!u||!b||u.length!==b.length)return!1;for(let P=0,E=u.length;P<E;P++)if(!S(u[P],b[P]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(u,b){let S=u.length-1;b<S&&(u[b]=u[S]),u.pop()},n.binarySearch=function(u,b,S){return a(u.length,(P=>S(u[P],b)))},n.binarySearch2=a,n.quickSelect=function u(b,S,P){if((b|=0)>=S.length)throw new TypeError("invalid index");let E=S[Math.floor(S.length*Math.random())],H=[],$=[],D=[];for(let x of S){let A=P(x,E);A<0?H.push(x):A>0?$.push(x):D.push(x)}return b<H.length?u(b,H,P):b<H.length+D.length?D[0]:u(b-(H.length+D.length),$,P)},n.groupBy=function(u,b){let S=[],P;for(let E of u.slice(0).sort(b))P&&b(P[0],E)===0?P.push(E):(P=[E],S.push(P));return S},n.groupAdjacentBy=function*(u,b){let S,P;for(let E of u)P!==void 0&&b(P,E)?S.push(E):(S&&(yield S),S=[E]),P=E;S&&(yield S)},n.forEachAdjacent=function(u,b){for(let S=0;S<=u.length;S++)b(S===0?void 0:u[S-1],S===u.length?void 0:u[S])},n.forEachWithNeighbors=function(u,b){for(let S=0;S<u.length;S++)b(S===0?void 0:u[S-1],u[S],S+1===u.length?void 0:u[S+1])},n.sortedDiff=w,n.delta=function(u,b,S){let P=w(u,b,S),E=[],H=[];for(let $ of P)E.push(...u.slice($.start,$.start+$.deleteCount)),H.push(...$.toInsert);return{removed:E,added:H}},n.top=function(u,b,S){if(S===0)return[];let P=u.slice(0,S).sort(b);return l(u,b,P,S,u.length),P},n.topAsync=function(u,b,S,P,E){return S===0?Promise.resolve([]):new Promise(((H,$)=>{(async()=>{let D=u.length,x=u.slice(0,S).sort(b);for(let A=S,L=Math.min(S+P,D);A<D;A=L,L=Math.min(L+P,D)){if(A>S&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new f.CancellationError;l(u,b,x,A,L)}return x})().then(H,$)}))},n.coalesce=function(u){return u.filter((b=>!!b))},n.coalesceInPlace=function(u){let b=0;for(let S=0;S<u.length;S++)u[S]&&(u[b]=u[S],b+=1);u.length=b},n.move=function(u,b,S){u.splice(S,0,u.splice(b,1)[0])},n.isFalsyOrEmpty=function(u){return!Array.isArray(u)||u.length===0},n.isNonEmptyArray=function(u){return Array.isArray(u)&&u.length>0},n.distinct=function(u,b=S=>S){let S=new Set;return u.filter((P=>{let E=b(P);return!S.has(E)&&(S.add(E),!0)}))},n.uniqueFilter=function(u){let b=new Set;return S=>{let P=u(S);return!b.has(P)&&(b.add(P),!0)}},n.firstOrDefault=function(u,b){return u.length>0?u[0]:b},n.lastOrDefault=function(u,b){return u.length>0?u[u.length-1]:b},n.commonPrefixLength=function(u,b,S=(P,E)=>P===E){let P=0;for(let E=0,H=Math.min(u.length,b.length);E<H&&S(u[E],b[E]);E++)P++;return P},n.range=function(u,b){let S=typeof b=="number"?u:0;typeof b=="number"?S=u:(S=0,b=u);let P=[];if(S<=b)for(let E=S;E<b;E++)P.push(E);else for(let E=S;E>b;E--)P.push(E);return P},n.index=function(u,b,S){return u.reduce(((P,E)=>(P[b(E)]=S?S(E):E,P)),Object.create(null))},n.insert=function(u,b){return u.push(b),()=>m(u,b)},n.remove=m,n.arrayInsert=function(u,b,S){let P=u.slice(0,b),E=u.slice(b);return P.concat(S,E)},n.shuffle=function(u,b){let S;if(typeof b=="number"){let P=b;S=()=>{let E=179426549*Math.sin(P++);return E-Math.floor(E)}}else S=Math.random;for(let P=u.length-1;P>0;P-=1){let E=Math.floor(S()*(P+1)),H=u[P];u[P]=u[E],u[E]=H}},n.pushToStart=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.unshift(b))},n.pushToEnd=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.push(b))},n.pushMany=function(u,b){for(let S of b)u.push(S)},n.mapArrayOrNot=function(u,b){return Array.isArray(u)?u.map(b):b(u)},n.asArray=function(u){return Array.isArray(u)?u:[u]},n.getRandomElement=function(u){return u[Math.floor(Math.random()*u.length)]},n.insertInto=_,n.splice=function(u,b,S,P){let E=i(u,b),H=u.splice(E,S);return H===void 0&&(H=[]),_(u,E,P),H},n.compareBy=function(u,b){return(S,P)=>b(u(S),u(P))},n.tieBreakComparators=function(...u){return(b,S)=>{for(let P of u){let E=P(b,S);if(!p.isNeitherLessOrGreaterThan(E))return E}return p.neitherLessOrGreaterThan}},n.reverseOrder=function(u){return(b,S)=>-u(b,S)};let f=c(9807),k=c(8297);function a(u,b){let S=0,P=u-1;for(;S<=P;){let E=(S+P)/2|0,H=b(E);if(H<0)S=E+1;else{if(!(H>0))return E;P=E-1}}return-(S+1)}function w(u,b,S){let P=[];function E(D,x,A){if(x===0&&A.length===0)return;let L=P[P.length-1];L&&L.start+L.deleteCount===D?(L.deleteCount+=x,L.toInsert.push(...A)):P.push({start:D,deleteCount:x,toInsert:A})}let H=0,$=0;for(;;){if(H===u.length){E(H,0,b.slice($));break}if($===b.length){E(H,u.length-H,[]);break}let D=u[H],x=b[$],A=S(D,x);A===0?(H+=1,$+=1):A<0?(E(H,1,[]),H+=1):A>0&&(E(H,0,[x]),$+=1)}return P}function l(u,b,S,P,E){for(let H=S.length;P<E;P++){let $=u[P];if(b($,S[H-1])<0){S.pop();let D=(0,k.findFirstIdxMonotonousOrArrLen)(S,(x=>b($,x)<0));S.splice(D,0,$)}}}function m(u,b){let S=u.indexOf(b);if(S>-1)return u.splice(S,1),b}function _(u,b,S){let P=i(u,b),E=u.length,H=S.length;u.length=E+H;for(let $=E-1;$>=P;$--)u[$+H]=u[$];for(let $=0;$<H;$++)u[$+P]=S[$]}function i(u,b){return b<0?Math.max(b+u.length,0):Math.min(b,u.length)}var p;(function(u){u.isLessThan=function(b){return b<0},u.isLessThanOrEqual=function(b){return b<=0},u.isGreaterThan=function(b){return b>0},u.isNeitherLessOrGreaterThan=function(b){return b===0},u.greaterThan=1,u.lessThan=-1,u.neitherLessOrGreaterThan=0})(p||(n.CompareResult=p={})),n.numberComparator=(u,b)=>u-b,n.booleanComparator=(u,b)=>(0,n.numberComparator)(u?1:0,b?1:0),n.ArrayQueue=class{constructor(u){this.items=u,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(u){let b=this.firstIdx;for(;b<this.items.length&&u(this.items[b]);)b++;let S=b===this.firstIdx?null:this.items.slice(this.firstIdx,b);return this.firstIdx=b,S}takeFromEndWhile(u){let b=this.lastIdx;for(;b>=0&&u(this.items[b]);)b--;let S=b===this.lastIdx?null:this.items.slice(b+1,this.lastIdx+1);return this.lastIdx=b,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let u=this.items[this.firstIdx];return this.firstIdx++,u}removeLast(){let u=this.items[this.lastIdx];return this.lastIdx--,u}takeCount(u){let b=this.items.slice(this.firstIdx,this.firstIdx+u);return this.firstIdx+=u,b}};class h{static{this.empty=new h((b=>{}))}constructor(b){this.iterate=b}forEach(b){this.iterate((S=>(b(S),!0)))}toArray(){let b=[];return this.iterate((S=>(b.push(S),!0))),b}filter(b){return new h((S=>this.iterate((P=>!b(P)||S(P)))))}map(b){return new h((S=>this.iterate((P=>S(b(P))))))}some(b){let S=!1;return this.iterate((P=>(S=b(P),!S))),S}findFirst(b){let S;return this.iterate((P=>!b(P)||(S=P,!1))),S}findLast(b){let S;return this.iterate((P=>(b(P)&&(S=P),!0))),S}findLastMaxBy(b){let S,P=!0;return this.iterate((E=>((P||p.isGreaterThan(b(E,S)))&&(P=!1,S=E),!0))),S}}n.CallbackIterable=h;class d{constructor(b){this._indexMap=b}static createSortPermutation(b,S){let P=Array.from(b.keys()).sort(((E,H)=>S(b[E],b[H])));return new d(P)}apply(b){return b.map(((S,P)=>b[this._indexMap[P]]))}inverse(){let b=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)b[this._indexMap[S]]=S;return new d(b)}}n.Permutation=d},8297:(y,n)=>{function c(l,m,_=l.length-1){for(let i=_;i>=0;i--)if(m(l[i]))return i;return-1}function f(l,m,_=0,i=l.length){let p=_,h=i;for(;p<h;){let d=Math.floor((p+h)/2);m(l[d])?p=d+1:h=d}return p-1}function k(l,m,_=0,i=l.length){let p=_,h=i;for(;p<h;){let d=Math.floor((p+h)/2);m(l[d])?h=d:p=d+1}return p}Object.defineProperty(n,"__esModule",{value:!0}),n.MonotonousArray=void 0,n.findLast=function(l,m){let _=c(l,m);if(_!==-1)return l[_]},n.findLastIdx=c,n.findLastMonotonous=function(l,m){let _=f(l,m);return _===-1?void 0:l[_]},n.findLastIdxMonotonous=f,n.findFirstMonotonous=function(l,m){let _=k(l,m);return _===l.length?void 0:l[_]},n.findFirstIdxMonotonousOrArrLen=k,n.findFirstIdxMonotonous=function(l,m,_=0,i=l.length){let p=k(l,m,_,i);return p===l.length?-1:p},n.findFirstMax=w,n.findLastMax=function(l,m){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];m(p,_)>=0&&(_=p)}return _},n.findFirstMin=function(l,m){return w(l,((_,i)=>-m(_,i)))},n.findMaxIdx=function(l,m){if(l.length===0)return-1;let _=0;for(let i=1;i<l.length;i++)m(l[i],l[_])>0&&(_=i);return _},n.mapFindFirst=function(l,m){for(let _ of l){let i=m(_);if(i!==void 0)return i}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let i of this._array)if(this._prevFindLastPredicate(i)&&!m(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let _=f(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function w(l,m){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];m(p,_)>0&&(_=p)}return _}n.MonotonousArray=a},9087:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.SetWithKey=void 0,n.groupBy=function(k,a){let w=Object.create(null);for(let l of k){let m=a(l),_=w[m];_||(_=w[m]=[]),_.push(l)}return w},n.diffSets=function(k,a){let w=[],l=[];for(let m of k)a.has(m)||w.push(m);for(let m of a)k.has(m)||l.push(m);return{removed:w,added:l}},n.diffMaps=function(k,a){let w=[],l=[];for(let[m,_]of k)a.has(m)||w.push(_);for(let[m,_]of a)k.has(m)||l.push(_);return{removed:w,added:l}},n.intersection=function(k,a){let w=new Set;for(let l of a)k.has(l)&&w.add(l);return w};class f{static{c=Symbol.toStringTag}constructor(a,w){this.toKey=w,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let w=this.toKey(a);return this._map.set(w,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,w){this._map.forEach((l=>a.call(w,l,l,this)))}[Symbol.iterator](){return this.values()}}n.SetWithKey=f},9807:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.ExpectedError=n.NotSupportedError=n.NotImplementedError=n.ReadonlyError=n.CancellationError=n.errorHandler=n.ErrorHandler=void 0,n.setUnexpectedErrorHandler=function(h){n.errorHandler.setUnexpectedErrorHandler(h)},n.isSigPipeError=function(h){if(!h||typeof h!="object")return!1;let d=h;return d.code==="EPIPE"&&d.syscall?.toUpperCase()==="WRITE"},n.onUnexpectedError=function(h){k(h)||n.errorHandler.onUnexpectedError(h)},n.onUnexpectedExternalError=function(h){k(h)||n.errorHandler.onUnexpectedExternalError(h)},n.transformErrorForSerialization=function(h){if(h instanceof Error){let{name:d,message:u}=h;return{$isError:!0,name:d,message:u,stack:h.stacktrace||h.stack,noTelemetry:i.isErrorNoTelemetry(h)}}return h},n.transformErrorFromSerialization=function(h){let d;return h.noTelemetry?d=new i:(d=new Error,d.name=h.name),d.message=h.message,d.stack=h.stack,d},n.isCancellationError=k,n.canceled=function(){let h=new Error(f);return h.name=h.message,h},n.illegalArgument=function(h){return h?new Error(`Illegal argument: ${h}`):new Error("Illegal argument")},n.illegalState=function(h){return h?new Error(`Illegal state: ${h}`):new Error("Illegal state")},n.getErrorMessage=function(h){return h?h.message?h.message:h.stack?h.stack.split(`
5
+ `)[0]:String(h):"Error"};class c{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(d){setTimeout((()=>{throw d.stack?i.isErrorNoTelemetry(d)?new i(d.message+`
6
6
 
7
7
  `+d.stack):new Error(d.message+`
8
8
 
9
- `+d.stack):d}),0)}}addListener(d){return this.listeners.push(d),()=>{this._removeListener(d)}}emit(d){this.listeners.forEach((u=>{u(d)}))}_removeListener(d){this.listeners.splice(this.listeners.indexOf(d),1)}setUnexpectedErrorHandler(d){this.unexpectedErrorHandler=d}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(d){this.unexpectedErrorHandler(d),this.emit(d)}onUnexpectedExternalError(d){this.unexpectedErrorHandler(d)}}n.ErrorHandler=c,n.errorHandler=new c;let h="Canceled";function k(f){return f instanceof a||f instanceof Error&&f.name===h&&f.message===h}class a extends Error{constructor(){super(h),this.name=this.message}}n.CancellationError=a;class w extends TypeError{constructor(d){super(d?`${d} is read-only and cannot be changed`:"Cannot change read-only property")}}n.ReadonlyError=w;class l extends Error{constructor(d){super("NotImplemented"),d&&(this.message=d)}}n.NotImplementedError=l;class m extends Error{constructor(d){super("NotSupported"),d&&(this.message=d)}}n.NotSupportedError=m;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}n.ExpectedError=_;class i extends Error{constructor(d){super(d),this.name="CodeExpectedError"}static fromError(d){if(d instanceof i)return d;let u=new i;return u.message=d.message,u.stack=d.stack,u}static isErrorNoTelemetry(d){return d.name==="CodeExpectedError"}}n.ErrorNoTelemetry=i;class p extends Error{constructor(d){super(d||"An unexpected bug occurred."),Object.setPrototypeOf(this,p.prototype)}}n.BugIndicatingError=p},802:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ValueWithChangeEvent=n.Relay=n.EventBufferer=n.DynamicListEventMultiplexer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.AsyncEmitter=n.createEventDeliveryQueue=n.Emitter=n.ListenerRefusalError=n.ListenerLeakError=n.EventProfiling=n.Event=void 0,n.setGlobalLeakWarningThreshold=function(x){let A=i;return i=x,{dispose(){i=A}}};let h=c(9807),k=c(8841),a=c(7150),w=c(6317),l=c(9725);var m;(function(x){function A(T){return(R,F=null,j)=>{let U,V=!1;return U=T((te=>{if(!V)return U?U.dispose():V=!0,R.call(F,te)}),null,j),V&&U.dispose(),U}}function L(T,R,F){return X(((j,U=null,V)=>T((te=>j.call(U,R(te))),null,V)),F)}function z(T,R,F){return X(((j,U=null,V)=>T((te=>R(te)&&j.call(U,te)),null,V)),F)}function X(T,R){let F,j=new P({onWillAddFirstListener(){F=T(j.fire,j)},onDidRemoveLastListener(){F?.dispose()}});return R?.add(j),j.event}function W(T,R,F=100,j=!1,U=!1,V,te){let I,Q,Y,ee,ke=0,be=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Xe=>{ke++,Q=R(Q,Xe),j&&!Y&&(be.fire(Q),Q=void 0),ee=()=>{let xe=Q;Q=void 0,Y=void 0,(!j||ke>1)&&be.fire(xe),ke=0},typeof F=="number"?(clearTimeout(Y),Y=setTimeout(ee,F)):Y===void 0&&(Y=0,queueMicrotask(ee))}))},onWillRemoveListener(){U&&ke>0&&ee?.()},onDidRemoveLastListener(){ee=void 0,I.dispose()}});return te?.add(be),be.event}x.None=()=>a.Disposable.None,x.defer=function(T,R){return W(T,(()=>{}),0,void 0,!0,void 0,R)},x.once=A,x.map=L,x.forEach=function(T,R,F){return X(((j,U=null,V)=>T((te=>{R(te),j.call(U,te)}),null,V)),F)},x.filter=z,x.signal=function(T){return T},x.any=function(...T){return(R,F=null,j)=>{return U=(0,a.combinedDisposable)(...T.map((te=>te((I=>R.call(F,I)))))),(V=j)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},x.reduce=function(T,R,F,j){let U=F;return L(T,(V=>(U=R(U,V),U)),j)},x.debounce=W,x.accumulate=function(T,R=0,F){return x.debounce(T,((j,U)=>j?(j.push(U),j):[U]),R,void 0,!0,void 0,F)},x.latch=function(T,R=(j,U)=>j===U,F){let j,U=!0;return z(T,(V=>{let te=U||!R(V,j);return U=!1,j=V,te}),F)},x.split=function(T,R,F){return[x.filter(T,R,F),x.filter(T,(j=>!R(j)),F)]},x.buffer=function(T,R=!1,F=[],j){let U=F.slice(),V=T((Q=>{U?U.push(Q):I.fire(Q)}));j&&j.add(V);let te=()=>{U?.forEach((Q=>I.fire(Q))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((Q=>I.fire(Q))),j&&j.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(te):te())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return j&&j.add(I),I.event},x.chain=function(T,R){return(F,j,U)=>{let V=R(new v);return T((function(te){let I=V.evaluate(te);I!==K&&F.call(j,I)}),void 0,U)}};let K=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((F=>(R(F),F))),this}filter(R){return this.steps.push((F=>R(F)?F:K)),this}reduce(R,F){let j=F;return this.steps.push((U=>(j=R(j,U),j))),this}latch(R=(F,j)=>F===j){let F,j=!0;return this.steps.push((U=>{let V=j||!R(U,F);return j=!1,F=U,V?U:K})),this}evaluate(R){for(let F of this.steps)if((R=F(R))===K)break;return R}}x.fromNodeEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,j),onDidRemoveLastListener:()=>T.removeListener(R,j)});return U.event},x.fromDOMEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,j),onDidRemoveLastListener:()=>T.removeEventListener(R,j)});return U.event},x.toPromise=function(T){return new Promise((R=>A(T)(R)))},x.fromPromise=function(T){let R=new P;return T.then((F=>{R.fire(F)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},x.forward=function(T,R){return T((F=>R.fire(F)))},x.runAndSubscribe=function(T,R,F){return R(F),T((j=>R(j)))};class C{constructor(R,F){this._observable=R,this._counter=0,this._hasChanged=!1;let j={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(j),F&&F.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,F){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}x.fromObservable=function(T,R){return new C(T,R).emitter.event},x.fromObservableLight=function(T){return(R,F,j)=>{let U=0,V=!1,te={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(F)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(te),T.reportChanges();let I={dispose(){T.removeObserver(te)}};return j instanceof a.DisposableStore?j.add(I):Array.isArray(j)&&j.push(I),I}}})(m||(n.Event=m={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(A){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${A}_${_._idPool++}`,_.all.add(this)}start(A){this._stopWatch=new l.StopWatch,this.listenerCount=A}stop(){if(this._stopWatch){let A=this._stopWatch.elapsed();this.durations.push(A),this.elapsedOverall+=A,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_;let i=-1;class p{static{this._idPool=1}constructor(A,L,z=(p._idPool++).toString(16).padStart(3,"0")){this._errorHandler=A,this.threshold=L,this.name=z,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(A,L){let z=this.threshold;if(z<=0||L<z)return;this._stacks||(this._stacks=new Map);let X=this._stacks.get(A.value)||0;if(this._stacks.set(A.value,X+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*z;let[W,K]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${L} listeners already. MOST frequent listener (${K}):`;console.warn(v),console.warn(W);let C=new d(v,W);this._errorHandler(C)}return()=>{let W=this._stacks.get(A.value)||0;this._stacks.set(A.value,W-1)}}getMostFrequentStack(){if(!this._stacks)return;let A,L=0;for(let[z,X]of this._stacks)(!A||L<X)&&(A=[z,X],L=X);return A}}class f{static create(){let A=new Error;return new f(A.stack??"")}constructor(A){this.value=A}print(){console.warn(this.value.split(`
9
+ `+d.stack):d}),0)}}addListener(d){return this.listeners.push(d),()=>{this._removeListener(d)}}emit(d){this.listeners.forEach((u=>{u(d)}))}_removeListener(d){this.listeners.splice(this.listeners.indexOf(d),1)}setUnexpectedErrorHandler(d){this.unexpectedErrorHandler=d}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(d){this.unexpectedErrorHandler(d),this.emit(d)}onUnexpectedExternalError(d){this.unexpectedErrorHandler(d)}}n.ErrorHandler=c,n.errorHandler=new c;let f="Canceled";function k(h){return h instanceof a||h instanceof Error&&h.name===f&&h.message===f}class a extends Error{constructor(){super(f),this.name=this.message}}n.CancellationError=a;class w extends TypeError{constructor(d){super(d?`${d} is read-only and cannot be changed`:"Cannot change read-only property")}}n.ReadonlyError=w;class l extends Error{constructor(d){super("NotImplemented"),d&&(this.message=d)}}n.NotImplementedError=l;class m extends Error{constructor(d){super("NotSupported"),d&&(this.message=d)}}n.NotSupportedError=m;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}n.ExpectedError=_;class i extends Error{constructor(d){super(d),this.name="CodeExpectedError"}static fromError(d){if(d instanceof i)return d;let u=new i;return u.message=d.message,u.stack=d.stack,u}static isErrorNoTelemetry(d){return d.name==="CodeExpectedError"}}n.ErrorNoTelemetry=i;class p extends Error{constructor(d){super(d||"An unexpected bug occurred."),Object.setPrototypeOf(this,p.prototype)}}n.BugIndicatingError=p},802:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ValueWithChangeEvent=n.Relay=n.EventBufferer=n.DynamicListEventMultiplexer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.AsyncEmitter=n.createEventDeliveryQueue=n.Emitter=n.ListenerRefusalError=n.ListenerLeakError=n.EventProfiling=n.Event=void 0,n.setGlobalLeakWarningThreshold=function(x){let A=i;return i=x,{dispose(){i=A}}};let f=c(9807),k=c(8841),a=c(7150),w=c(6317),l=c(9725);var m;(function(x){function A(T){return(R,F=null,j)=>{let U,V=!1;return U=T((te=>{if(!V)return U?U.dispose():V=!0,R.call(F,te)}),null,j),V&&U.dispose(),U}}function L(T,R,F){return X(((j,U=null,V)=>T((te=>j.call(U,R(te))),null,V)),F)}function z(T,R,F){return X(((j,U=null,V)=>T((te=>R(te)&&j.call(U,te)),null,V)),F)}function X(T,R){let F,j=new P({onWillAddFirstListener(){F=T(j.fire,j)},onDidRemoveLastListener(){F?.dispose()}});return R?.add(j),j.event}function W(T,R,F=100,j=!1,U=!1,V,te){let I,Q,Y,ee,ke=0,be=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Xe=>{ke++,Q=R(Q,Xe),j&&!Y&&(be.fire(Q),Q=void 0),ee=()=>{let xe=Q;Q=void 0,Y=void 0,(!j||ke>1)&&be.fire(xe),ke=0},typeof F=="number"?(clearTimeout(Y),Y=setTimeout(ee,F)):Y===void 0&&(Y=0,queueMicrotask(ee))}))},onWillRemoveListener(){U&&ke>0&&ee?.()},onDidRemoveLastListener(){ee=void 0,I.dispose()}});return te?.add(be),be.event}x.None=()=>a.Disposable.None,x.defer=function(T,R){return W(T,(()=>{}),0,void 0,!0,void 0,R)},x.once=A,x.map=L,x.forEach=function(T,R,F){return X(((j,U=null,V)=>T((te=>{R(te),j.call(U,te)}),null,V)),F)},x.filter=z,x.signal=function(T){return T},x.any=function(...T){return(R,F=null,j)=>{return U=(0,a.combinedDisposable)(...T.map((te=>te((I=>R.call(F,I)))))),(V=j)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},x.reduce=function(T,R,F,j){let U=F;return L(T,(V=>(U=R(U,V),U)),j)},x.debounce=W,x.accumulate=function(T,R=0,F){return x.debounce(T,((j,U)=>j?(j.push(U),j):[U]),R,void 0,!0,void 0,F)},x.latch=function(T,R=(j,U)=>j===U,F){let j,U=!0;return z(T,(V=>{let te=U||!R(V,j);return U=!1,j=V,te}),F)},x.split=function(T,R,F){return[x.filter(T,R,F),x.filter(T,(j=>!R(j)),F)]},x.buffer=function(T,R=!1,F=[],j){let U=F.slice(),V=T((Q=>{U?U.push(Q):I.fire(Q)}));j&&j.add(V);let te=()=>{U?.forEach((Q=>I.fire(Q))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((Q=>I.fire(Q))),j&&j.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(te):te())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return j&&j.add(I),I.event},x.chain=function(T,R){return(F,j,U)=>{let V=R(new v);return T((function(te){let I=V.evaluate(te);I!==K&&F.call(j,I)}),void 0,U)}};let K=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((F=>(R(F),F))),this}filter(R){return this.steps.push((F=>R(F)?F:K)),this}reduce(R,F){let j=F;return this.steps.push((U=>(j=R(j,U),j))),this}latch(R=(F,j)=>F===j){let F,j=!0;return this.steps.push((U=>{let V=j||!R(U,F);return j=!1,F=U,V?U:K})),this}evaluate(R){for(let F of this.steps)if((R=F(R))===K)break;return R}}x.fromNodeEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,j),onDidRemoveLastListener:()=>T.removeListener(R,j)});return U.event},x.fromDOMEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,j),onDidRemoveLastListener:()=>T.removeEventListener(R,j)});return U.event},x.toPromise=function(T){return new Promise((R=>A(T)(R)))},x.fromPromise=function(T){let R=new P;return T.then((F=>{R.fire(F)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},x.forward=function(T,R){return T((F=>R.fire(F)))},x.runAndSubscribe=function(T,R,F){return R(F),T((j=>R(j)))};class C{constructor(R,F){this._observable=R,this._counter=0,this._hasChanged=!1;let j={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(j),F&&F.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,F){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}x.fromObservable=function(T,R){return new C(T,R).emitter.event},x.fromObservableLight=function(T){return(R,F,j)=>{let U=0,V=!1,te={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(F)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(te),T.reportChanges();let I={dispose(){T.removeObserver(te)}};return j instanceof a.DisposableStore?j.add(I):Array.isArray(j)&&j.push(I),I}}})(m||(n.Event=m={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(A){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${A}_${_._idPool++}`,_.all.add(this)}start(A){this._stopWatch=new l.StopWatch,this.listenerCount=A}stop(){if(this._stopWatch){let A=this._stopWatch.elapsed();this.durations.push(A),this.elapsedOverall+=A,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_;let i=-1;class p{static{this._idPool=1}constructor(A,L,z=(p._idPool++).toString(16).padStart(3,"0")){this._errorHandler=A,this.threshold=L,this.name=z,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(A,L){let z=this.threshold;if(z<=0||L<z)return;this._stacks||(this._stacks=new Map);let X=this._stacks.get(A.value)||0;if(this._stacks.set(A.value,X+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*z;let[W,K]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${L} listeners already. MOST frequent listener (${K}):`;console.warn(v),console.warn(W);let C=new d(v,W);this._errorHandler(C)}return()=>{let W=this._stacks.get(A.value)||0;this._stacks.set(A.value,W-1)}}getMostFrequentStack(){if(!this._stacks)return;let A,L=0;for(let[z,X]of this._stacks)(!A||L<X)&&(A=[z,X],L=X);return A}}class h{static create(){let A=new Error;return new h(A.stack??"")}constructor(A){this.value=A}print(){console.warn(this.value.split(`
10
10
  `).slice(2).join(`
11
- `))}}class d extends Error{constructor(A,L){super(A),this.name="ListenerLeakError",this.stack=L}}n.ListenerLeakError=d;class u extends Error{constructor(A,L){super(A),this.name="ListenerRefusalError",this.stack=L}}n.ListenerRefusalError=u;let b=0;class S{constructor(A){this.value=A,this.id=b++}}class P{constructor(A){this._size=0,this._options=A,this._leakageMon=i>0||this._options?.leakWarningThreshold?new p(A?.onListenerError??h.onUnexpectedError,this._options?.leakWarningThreshold??i):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??=(A,L,z)=>{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],T=new u(`${v}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||h.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;L&&(A=A.bind(L));let X=new S(A),W;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(X.stack=f.create(),W=this._leakageMon.check(X.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new E,this._listeners=[this._listeners,X]):this._listeners.push(X):(this._options?.onWillAddFirstListener?.(this),this._listeners=X,this._options?.onDidAddFirstListener?.(this)),this._size++;let K=(0,a.toDisposable)((()=>{W?.(),this._removeListener(X)}));return z instanceof a.DisposableStore?z.add(K):Array.isArray(z)&&z.push(K),K},this._event}_removeListener(A){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 L=this._listeners,z=L.indexOf(A);if(z===-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--,L[z]=void 0;let X=this._deliveryQueue.current===this;if(2*this._size<=L.length){let W=0;for(let K=0;K<L.length;K++)L[K]?L[W++]=L[K]:X&&(this._deliveryQueue.end--,W<this._deliveryQueue.i&&this._deliveryQueue.i--);L.length=W}}_deliver(A,L){if(!A)return;let z=this._options?.onListenerError||h.onUnexpectedError;if(z)try{A.value(L)}catch(X){z(X)}else A.value(L)}_deliverQueue(A){let L=A.current._listeners;for(;A.i<A.end;)this._deliver(L[A.i++],A.value);A.reset()}fire(A){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,A);else{let L=this._deliveryQueue;L.enqueue(this,A,this._listeners.length),this._deliverQueue(L)}this._perfMon?.stop()}hasListeners(){return this._size>0}}n.Emitter=P,n.createEventDeliveryQueue=()=>new E;class E{constructor(){this.i=-1,this.end=0}enqueue(A,L,z){this.i=0,this.end=z,this.current=A,this.value=L}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}n.AsyncEmitter=class extends P{async fireAsync(x,A,L){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new w.LinkedList),((z,X)=>{if(z instanceof S)X(z);else for(let W=0;W<z.length;W++){let K=z[W];K&&X(K)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,x])));this._asyncDeliveryQueue.size>0&&!A.isCancellationRequested;){let[z,X]=this._asyncDeliveryQueue.shift(),W=[],K={...X,token:A,waitUntil:v=>{if(Object.isFrozen(W))throw new Error("waitUntil can NOT be called asynchronous");L&&(v=L(v,z)),W.push(v)}};try{z(K)}catch(v){(0,h.onUnexpectedError)(v);continue}Object.freeze(W),await Promise.allSettled(W).then((v=>{for(let C of v)C.status==="rejected"&&(0,h.onUnexpectedError)(C.reason)}))}}};class H extends P{get isPaused(){return this._isPaused!==0}constructor(A){super(A),this._isPaused=0,this._eventQueue=new w.LinkedList,this._mergeFn=A?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let A=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(A))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(A){this._size&&(this._isPaused!==0?this._eventQueue.push(A):super.fire(A))}}n.PauseableEmitter=H,n.DebounceEmitter=class extends H{constructor(x){super(x),this._delay=x.delay??100}fire(x){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(x)}},n.MicrotaskEmitter=class extends P{constructor(x){super(x),this._queuedEvents=[],this._mergeFn=x?.merge}fire(x){this.hasListeners()&&(this._queuedEvents.push(x),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((A=>super.fire(A))),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(A){let L={event:A,listener:null};return this.events.push(L),this.hasListeners&&this.hook(L),(0,a.toDisposable)((0,k.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(L);let z=this.events.indexOf(L);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((A=>this.hook(A)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((A=>this.unhook(A)))}hook(A){A.listener=A.event((L=>this.emitter.fire(L)))}unhook(A){A.listener?.dispose(),A.listener=null}dispose(){this.emitter.dispose();for(let A of this.events)A.listener?.dispose();this.events=[]}}n.EventMultiplexer=$,n.DynamicListEventMultiplexer=class{constructor(x,A,L,z){this._store=new a.DisposableStore;let X=this._store.add(new $),W=this._store.add(new a.DisposableMap);function K(v){W.set(v,X.add(z(v)))}for(let v of x)K(v);this._store.add(A((v=>{K(v)}))),this._store.add(L((v=>{W.deleteAndDispose(v)}))),this.event=X.event}dispose(){this._store.dispose()}},n.EventBufferer=class{constructor(){this.data=[]}wrapEvent(x,A,L){return(z,X,W)=>x((K=>{let v=this.data[this.data.length-1];if(!A)return void(v?v.buffers.push((()=>z.call(X,K))):z.call(X,K));let C=v;C?(C.items??=[],C.items.push(K),C.buffers.length===0&&v.buffers.push((()=>{C.reducedResult??=L?C.items.reduce(A,L):C.items.reduce(A),z.call(X,C.reducedResult)}))):z.call(X,A(L,K))}),void 0,W)}bufferEvents(x){let A={buffers:new Array};this.data.push(A);let L=x();return this.data.pop(),A.buffers.forEach((z=>z())),L}},n.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(x){this.inputEvent=x,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=x(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},n.ValueWithChangeEvent=class{static const(x){return new D(x)}constructor(x){this._value=x,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(x){x!==this._value&&(this._value=x,this._onDidChange.fire(void 0))}};class D{constructor(A){this.value=A,this.onDidChange=m.None}}},8841:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createSingleCallFunction=function(c,h){let k=this,a,w=!1;return function(){if(w)return a;if(w=!0,h)try{a=c.apply(k,arguments)}finally{h()}else a=c.apply(k,arguments);return a}}},4218:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(h){function k(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}h.is=k;let a=Object.freeze([]);function*w(l){yield l}h.empty=function(){return a},h.single=w,h.wrap=function(l){return k(l)?l:w(l)},h.from=function(l){return l||a},h.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},h.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},h.first=function(l){return l[Symbol.iterator]().next().value},h.some=function(l,m){let _=0;for(let i of l)if(m(i,_++))return!0;return!1},h.find=function(l,m){for(let _ of l)if(m(_))return _},h.filter=function*(l,m){for(let _ of l)m(_)&&(yield _)},h.map=function*(l,m){let _=0;for(let i of l)yield m(i,_++)},h.flatMap=function*(l,m){let _=0;for(let i of l)yield*m(i,_++)},h.concat=function*(...l){for(let m of l)yield*m},h.reduce=function(l,m,_){let i=_;for(let p of l)i=m(i,p);return i},h.slice=function*(l,m,_=l.length){for(m<0&&(m+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);m<_;m++)yield l[m]},h.consume=function(l,m=Number.POSITIVE_INFINITY){let _=[];if(m===0)return[_,l];let i=l[Symbol.iterator]();for(let p=0;p<m;p++){let f=i.next();if(f.done)return[_,h.empty()];_.push(f.value)}return[_,{[Symbol.iterator]:()=>i}]},h.asyncToArray=async function(l){let m=[];for await(let _ of l)m.push(_);return Promise.resolve(m)}})(c||(n.Iterable=c={}))},7150:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DisposableMap=n.ImmortalReference=n.AsyncReferenceCollection=n.ReferenceCollection=n.SafeDisposable=n.RefCountedDisposable=n.MandatoryMutableDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.DisposableTracker=void 0,n.setDisposableTracker=function($){m=$},n.trackDisposable=i,n.markAsDisposed=p,n.markAsSingleton=function($){return m?.markAsSingleton($),$},n.isDisposable=d,n.dispose=u,n.disposeIfDisposable=function($){for(let D of $)d(D)&&D.dispose();return[]},n.combinedDisposable=function(...$){let D=b((()=>u($)));return(function(x,A){if(m)for(let L of x)m.setParent(L,A)})($,D),D},n.toDisposable=b,n.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let h=c(3058),k=c(9087),a=c(2608),w=c(8841),l=c(4218),m=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let x=this.livingDisposables.get(D);return x||(x={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,x)),x}trackDisposable(D){let x=this.getDisposableData(D);x.source||(x.source=new Error().stack)}setParent(D,x){this.getDisposableData(D).parent=x}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,x){let A=x.get(D);if(A)return A;let L=D.parent?this.getRootParent(this.getDisposableData(D.parent),x):D;return x.set(D,L),L}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,x])=>x.source!==null&&!this.getRootParent(x,D).isSingleton)).flatMap((([x])=>x))}computeLeakingDisposables(D=10,x){let A;if(x)A=x;else{let K=new Map,v=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,K).isSingleton));if(v.length===0)return;let C=new Set(v.map((T=>T.value)));if(A=v.filter((T=>!(T.parent&&C.has(T.parent)))),A.length===0)throw new Error("There are cyclic diposable chains!")}if(!A)return;function L(K){let v=K.source.split(`
11
+ `))}}class d extends Error{constructor(A,L){super(A),this.name="ListenerLeakError",this.stack=L}}n.ListenerLeakError=d;class u extends Error{constructor(A,L){super(A),this.name="ListenerRefusalError",this.stack=L}}n.ListenerRefusalError=u;let b=0;class S{constructor(A){this.value=A,this.id=b++}}class P{constructor(A){this._size=0,this._options=A,this._leakageMon=i>0||this._options?.leakWarningThreshold?new p(A?.onListenerError??f.onUnexpectedError,this._options?.leakWarningThreshold??i):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??=(A,L,z)=>{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],T=new u(`${v}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||f.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;L&&(A=A.bind(L));let X=new S(A),W;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(X.stack=h.create(),W=this._leakageMon.check(X.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new E,this._listeners=[this._listeners,X]):this._listeners.push(X):(this._options?.onWillAddFirstListener?.(this),this._listeners=X,this._options?.onDidAddFirstListener?.(this)),this._size++;let K=(0,a.toDisposable)((()=>{W?.(),this._removeListener(X)}));return z instanceof a.DisposableStore?z.add(K):Array.isArray(z)&&z.push(K),K},this._event}_removeListener(A){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 L=this._listeners,z=L.indexOf(A);if(z===-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--,L[z]=void 0;let X=this._deliveryQueue.current===this;if(2*this._size<=L.length){let W=0;for(let K=0;K<L.length;K++)L[K]?L[W++]=L[K]:X&&(this._deliveryQueue.end--,W<this._deliveryQueue.i&&this._deliveryQueue.i--);L.length=W}}_deliver(A,L){if(!A)return;let z=this._options?.onListenerError||f.onUnexpectedError;if(z)try{A.value(L)}catch(X){z(X)}else A.value(L)}_deliverQueue(A){let L=A.current._listeners;for(;A.i<A.end;)this._deliver(L[A.i++],A.value);A.reset()}fire(A){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,A);else{let L=this._deliveryQueue;L.enqueue(this,A,this._listeners.length),this._deliverQueue(L)}this._perfMon?.stop()}hasListeners(){return this._size>0}}n.Emitter=P,n.createEventDeliveryQueue=()=>new E;class E{constructor(){this.i=-1,this.end=0}enqueue(A,L,z){this.i=0,this.end=z,this.current=A,this.value=L}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}n.AsyncEmitter=class extends P{async fireAsync(x,A,L){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new w.LinkedList),((z,X)=>{if(z instanceof S)X(z);else for(let W=0;W<z.length;W++){let K=z[W];K&&X(K)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,x])));this._asyncDeliveryQueue.size>0&&!A.isCancellationRequested;){let[z,X]=this._asyncDeliveryQueue.shift(),W=[],K={...X,token:A,waitUntil:v=>{if(Object.isFrozen(W))throw new Error("waitUntil can NOT be called asynchronous");L&&(v=L(v,z)),W.push(v)}};try{z(K)}catch(v){(0,f.onUnexpectedError)(v);continue}Object.freeze(W),await Promise.allSettled(W).then((v=>{for(let C of v)C.status==="rejected"&&(0,f.onUnexpectedError)(C.reason)}))}}};class H extends P{get isPaused(){return this._isPaused!==0}constructor(A){super(A),this._isPaused=0,this._eventQueue=new w.LinkedList,this._mergeFn=A?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let A=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(A))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(A){this._size&&(this._isPaused!==0?this._eventQueue.push(A):super.fire(A))}}n.PauseableEmitter=H,n.DebounceEmitter=class extends H{constructor(x){super(x),this._delay=x.delay??100}fire(x){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(x)}},n.MicrotaskEmitter=class extends P{constructor(x){super(x),this._queuedEvents=[],this._mergeFn=x?.merge}fire(x){this.hasListeners()&&(this._queuedEvents.push(x),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((A=>super.fire(A))),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(A){let L={event:A,listener:null};return this.events.push(L),this.hasListeners&&this.hook(L),(0,a.toDisposable)((0,k.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(L);let z=this.events.indexOf(L);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((A=>this.hook(A)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((A=>this.unhook(A)))}hook(A){A.listener=A.event((L=>this.emitter.fire(L)))}unhook(A){A.listener?.dispose(),A.listener=null}dispose(){this.emitter.dispose();for(let A of this.events)A.listener?.dispose();this.events=[]}}n.EventMultiplexer=$,n.DynamicListEventMultiplexer=class{constructor(x,A,L,z){this._store=new a.DisposableStore;let X=this._store.add(new $),W=this._store.add(new a.DisposableMap);function K(v){W.set(v,X.add(z(v)))}for(let v of x)K(v);this._store.add(A((v=>{K(v)}))),this._store.add(L((v=>{W.deleteAndDispose(v)}))),this.event=X.event}dispose(){this._store.dispose()}},n.EventBufferer=class{constructor(){this.data=[]}wrapEvent(x,A,L){return(z,X,W)=>x((K=>{let v=this.data[this.data.length-1];if(!A)return void(v?v.buffers.push((()=>z.call(X,K))):z.call(X,K));let C=v;C?(C.items??=[],C.items.push(K),C.buffers.length===0&&v.buffers.push((()=>{C.reducedResult??=L?C.items.reduce(A,L):C.items.reduce(A),z.call(X,C.reducedResult)}))):z.call(X,A(L,K))}),void 0,W)}bufferEvents(x){let A={buffers:new Array};this.data.push(A);let L=x();return this.data.pop(),A.buffers.forEach((z=>z())),L}},n.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(x){this.inputEvent=x,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=x(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},n.ValueWithChangeEvent=class{static const(x){return new D(x)}constructor(x){this._value=x,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(x){x!==this._value&&(this._value=x,this._onDidChange.fire(void 0))}};class D{constructor(A){this.value=A,this.onDidChange=m.None}}},8841:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createSingleCallFunction=function(c,f){let k=this,a,w=!1;return function(){if(w)return a;if(w=!0,f)try{a=c.apply(k,arguments)}finally{f()}else a=c.apply(k,arguments);return a}}},4218:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(f){function k(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}f.is=k;let a=Object.freeze([]);function*w(l){yield l}f.empty=function(){return a},f.single=w,f.wrap=function(l){return k(l)?l:w(l)},f.from=function(l){return l||a},f.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},f.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},f.first=function(l){return l[Symbol.iterator]().next().value},f.some=function(l,m){let _=0;for(let i of l)if(m(i,_++))return!0;return!1},f.find=function(l,m){for(let _ of l)if(m(_))return _},f.filter=function*(l,m){for(let _ of l)m(_)&&(yield _)},f.map=function*(l,m){let _=0;for(let i of l)yield m(i,_++)},f.flatMap=function*(l,m){let _=0;for(let i of l)yield*m(i,_++)},f.concat=function*(...l){for(let m of l)yield*m},f.reduce=function(l,m,_){let i=_;for(let p of l)i=m(i,p);return i},f.slice=function*(l,m,_=l.length){for(m<0&&(m+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);m<_;m++)yield l[m]},f.consume=function(l,m=Number.POSITIVE_INFINITY){let _=[];if(m===0)return[_,l];let i=l[Symbol.iterator]();for(let p=0;p<m;p++){let h=i.next();if(h.done)return[_,f.empty()];_.push(h.value)}return[_,{[Symbol.iterator]:()=>i}]},f.asyncToArray=async function(l){let m=[];for await(let _ of l)m.push(_);return Promise.resolve(m)}})(c||(n.Iterable=c={}))},7150:(y,n,c)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DisposableMap=n.ImmortalReference=n.AsyncReferenceCollection=n.ReferenceCollection=n.SafeDisposable=n.RefCountedDisposable=n.MandatoryMutableDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.DisposableTracker=void 0,n.setDisposableTracker=function($){m=$},n.trackDisposable=i,n.markAsDisposed=p,n.markAsSingleton=function($){return m?.markAsSingleton($),$},n.isDisposable=d,n.dispose=u,n.disposeIfDisposable=function($){for(let D of $)d(D)&&D.dispose();return[]},n.combinedDisposable=function(...$){let D=b((()=>u($)));return(function(x,A){if(m)for(let L of x)m.setParent(L,A)})($,D),D},n.toDisposable=b,n.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let f=c(3058),k=c(9087),a=c(2608),w=c(8841),l=c(4218),m=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let x=this.livingDisposables.get(D);return x||(x={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,x)),x}trackDisposable(D){let x=this.getDisposableData(D);x.source||(x.source=new Error().stack)}setParent(D,x){this.getDisposableData(D).parent=x}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,x){let A=x.get(D);if(A)return A;let L=D.parent?this.getRootParent(this.getDisposableData(D.parent),x):D;return x.set(D,L),L}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,x])=>x.source!==null&&!this.getRootParent(x,D).isSingleton)).flatMap((([x])=>x))}computeLeakingDisposables(D=10,x){let A;if(x)A=x;else{let K=new Map,v=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,K).isSingleton));if(v.length===0)return;let C=new Set(v.map((T=>T.value)));if(A=v.filter((T=>!(T.parent&&C.has(T.parent)))),A.length===0)throw new Error("There are cyclic diposable chains!")}if(!A)return;function L(K){let v=K.source.split(`
12
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()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let z=new a.SetMap;for(let K of A){let v=L(K);for(let C=0;C<=v.length;C++)z.add(v.slice(0,C).join(`
13
- `),K)}A.sort((0,h.compareBy)((K=>K.idx),h.numberComparator));let X="",W=0;for(let K of A.slice(0,D)){W++;let v=L(K),C=[];for(let T=0;T<v.length;T++){let R=v[T];R=`(shared with ${z.get(v.slice(0,T+1).join(`
13
+ `),K)}A.sort((0,f.compareBy)((K=>K.idx),f.numberComparator));let X="",W=0;for(let K of A.slice(0,D)){W++;let v=L(K),C=[];for(let T=0;T<v.length;T++){let R=v[T];R=`(shared with ${z.get(v.slice(0,T+1).join(`
14
14
  `)).size}/${A.length} leaks) at ${R}`;let F=z.get(v.slice(0,T).join(`
15
15
  `)),j=(0,k.groupBy)([...F].map((U=>L(U)[T])),(U=>U));delete j[v[T]];for(let[U,V]of Object.entries(j))C.unshift(` - stacktraces of ${V.length} other leaks continue with ${U}`);C.unshift(R)}X+=`
16
16
 
@@ -25,7 +25,7 @@ ${C.join(`
25
25
 
26
26
  ... and ${A.length-D} more leaking disposables
27
27
 
28
- `),{leaks:A,details:X}}}function i($){return m?.trackDisposable($),$}function p($){m?.markAsDisposed($)}function f($,D){m?.setParent($,D)}function d($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function u($){if(l.Iterable.is($)){let D=[];for(let x of $)if(x)try{x.dispose()}catch(A){D.push(A)}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 b($){let D=i({dispose:(0,w.createSingleCallFunction)((()=>{p(D),$()}))});return D}n.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,i(this)}dispose(){this._isDisposed||(p(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{u(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))}}n.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,i(this),f(this._store,this)}dispose(){p(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}n.Disposable=P;class E{constructor(){this._isDisposed=!1,i(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,p(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}n.MutableDisposable=E,n.MandatoryMutableDisposable=class{constructor($){this._disposable=new E,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()}},n.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},n.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,i(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,p(this))},this}},n.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let x=this.references.get($);x||(x={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,x));let{object:A}=x,L=(0,w.createSingleCallFunction)((()=>{--x.counter==0&&(this.destroyReferencedObject($,x.object),this.references.delete($))}));return x.counter++,{object:A,dispose:L}}},n.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let x=this.referenceCollection.acquire($,...D);try{return{object:await x.object,dispose:()=>x.dispose()}}catch(A){throw x.dispose(),A}}},n.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class H{constructor(){this._store=new Map,this._isDisposed=!1,i(this)}dispose(){p(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{u(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,x,A=!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),A||this._store.get(D)?.dispose(),this._store.set(D,x)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let x=this._store.get(D);return this._store.delete(D),x}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=H},6317:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.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 h{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 w=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=w}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,w){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(w){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 w=a.prev;w.next=a.next,a.next.prev=w}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}}n.LinkedList=h},2608:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=n.BidirectionalMap=n.CounterSet=n.Touch=void 0,n.getOrSet=function(h,k,a){let w=h.get(k);return w===void 0&&(w=a,h.set(k,w)),w},n.mapToString=function(h){let k=[];return h.forEach(((a,w)=>{k.push(`${w} => ${a}`)})),`Map(${h.size}) {${k.join(", ")}}`},n.setToString=function(h){let k=[];return h.forEach((a=>{k.push(a)})),`Set(${h.size}) {${k.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(h,k){if(h===k)return!0;if(h.size!==k.size)return!1;for(let[a,w]of h)if(!k.has(a)||k.get(a)!==w)return!1;for(let[a]of k)if(!h.has(a))return!1;return!0},(function(h){h[h.None=0]="None",h[h.AsOld=1]="AsOld",h[h.AsNew=2]="AsNew"})(c||(n.Touch=c={})),n.CounterSet=class{constructor(){this.map=new Map}add(h){return this.map.set(h,(this.map.get(h)||0)+1),this}delete(h){let k=this.map.get(h)||0;return k!==0&&(k--,k===0?this.map.delete(h):this.map.set(h,k),!0)}has(h){return this.map.has(h)}},n.BidirectionalMap=class{constructor(h){if(this._m1=new Map,this._m2=new Map,h)for(let[k,a]of h)this.set(k,a)}clear(){this._m1.clear(),this._m2.clear()}set(h,k){this._m1.set(h,k),this._m2.set(k,h)}get(h){return this._m1.get(h)}getKey(h){return this._m2.get(h)}delete(h){let k=this._m1.get(h);return k!==void 0&&(this._m1.delete(h),this._m2.delete(k),!0)}forEach(h,k){this._m1.forEach(((a,w)=>{h.call(k,a,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(h,k){let a=this.map.get(h);a||(a=new Set,this.map.set(h,a)),a.add(k)}delete(h,k){let a=this.map.get(h);a&&(a.delete(k),a.size===0&&this.map.delete(h))}forEach(h,k){let a=this.map.get(h);a&&a.forEach(k)}get(h){return this.map.get(h)||new Set}}},9725:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class h{static create(a){return new h(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}}n.StopWatch=h}},t={};function r(y){var n=t[y];if(n!==void 0)return n.exports;var c=t[y]={exports:{}};return e[y].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var y=s;Object.defineProperty(y,"__esModule",{value:!0}),y.Terminal=void 0;let n=r(5101),c=r(6097),h=r(4335),k=r(5856),a=r(3027),w=r(7150),l=["cols","rows"];class m extends w.Disposable{constructor(i){super(),this._core=this._register(new k.Terminal(i)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let p=d=>this._core.options[d],f=(d,u)=>{this._checkReadonlyOptions(d),this._core.options[d]=u};for(let d in this._core.options){Object.defineProperty(this._publicOptions,d,{get:()=>this._core.options[d],set:b=>{this._checkReadonlyOptions(d),this._core.options[d]=b}});let u={get:p.bind(this,d),set:f.bind(this,d)};Object.defineProperty(this._publicOptions,d,u)}}_checkReadonlyOptions(i){if(l.includes(i))throw new Error(`Option "${i}" 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 h.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 n.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let i=this._core.coreService.decPrivateModes,p="none";switch(this._core.coreMouseService.activeProtocol){case"X10":p="x10";break;case"VT200":p="vt200";break;case"DRAG":p="drag";break;case"ANY":p="any"}return{applicationCursorKeysMode:i.applicationCursorKeys,applicationKeypadMode:i.applicationKeypad,bracketedPasteMode:i.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:p,originMode:i.origin,reverseWraparoundMode:i.reverseWraparound,sendFocusMode:i.sendFocus,synchronizedOutputMode:i.synchronizedOutput,wraparoundMode:i.wraparound}}get options(){return this._publicOptions}set options(i){for(let p in i)this._publicOptions[p]=i[p]}input(i,p=!0){this._core.input(i,p)}resize(i,p){this._verifyIntegers(i,p),this._core.resize(i,p)}registerMarker(i=0){return this._checkProposedApi(),this._verifyIntegers(i),this._core.addMarker(i)}addMarker(i){return this.registerMarker(i)}dispose(){super.dispose()}scrollLines(i){this._verifyIntegers(i),this._core.scrollLines(i)}scrollPages(i){this._verifyIntegers(i),this._core.scrollPages(i)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(i){this._verifyIntegers(i),this._core.scrollToLine(i)}clear(){this._core.clear()}write(i,p){this._core.write(i,p)}writeln(i,p){this._core.write(i),this._core.write(`\r
28
+ `),{leaks:A,details:X}}}function i($){return m?.trackDisposable($),$}function p($){m?.markAsDisposed($)}function h($,D){m?.setParent($,D)}function d($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function u($){if(l.Iterable.is($)){let D=[];for(let x of $)if(x)try{x.dispose()}catch(A){D.push(A)}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 b($){let D=i({dispose:(0,w.createSingleCallFunction)((()=>{p(D),$()}))});return D}n.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,i(this)}dispose(){this._isDisposed||(p(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{u(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 h(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),h(D,null))}}n.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,i(this),h(this._store,this)}dispose(){p(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}n.Disposable=P;class E{constructor(){this._isDisposed=!1,i(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&h(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,p(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&h(D,null),D}}n.MutableDisposable=E,n.MandatoryMutableDisposable=class{constructor($){this._disposable=new E,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()}},n.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},n.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,i(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,p(this))},this}},n.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let x=this.references.get($);x||(x={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,x));let{object:A}=x,L=(0,w.createSingleCallFunction)((()=>{--x.counter==0&&(this.destroyReferencedObject($,x.object),this.references.delete($))}));return x.counter++,{object:A,dispose:L}}},n.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let x=this.referenceCollection.acquire($,...D);try{return{object:await x.object,dispose:()=>x.dispose()}}catch(A){throw x.dispose(),A}}},n.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class H{constructor(){this._store=new Map,this._isDisposed=!1,i(this)}dispose(){p(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{u(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,x,A=!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),A||this._store.get(D)?.dispose(),this._store.set(D,x)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let x=this._store.get(D);return this._store.delete(D),x}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=H},6317:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.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 f{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 w=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=w}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,w){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(w){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 w=a.prev;w.next=a.next,a.next.prev=w}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}}n.LinkedList=f},2608:(y,n)=>{var c;Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=n.BidirectionalMap=n.CounterSet=n.Touch=void 0,n.getOrSet=function(f,k,a){let w=f.get(k);return w===void 0&&(w=a,f.set(k,w)),w},n.mapToString=function(f){let k=[];return f.forEach(((a,w)=>{k.push(`${w} => ${a}`)})),`Map(${f.size}) {${k.join(", ")}}`},n.setToString=function(f){let k=[];return f.forEach((a=>{k.push(a)})),`Set(${f.size}) {${k.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(f,k){if(f===k)return!0;if(f.size!==k.size)return!1;for(let[a,w]of f)if(!k.has(a)||k.get(a)!==w)return!1;for(let[a]of k)if(!f.has(a))return!1;return!0},(function(f){f[f.None=0]="None",f[f.AsOld=1]="AsOld",f[f.AsNew=2]="AsNew"})(c||(n.Touch=c={})),n.CounterSet=class{constructor(){this.map=new Map}add(f){return this.map.set(f,(this.map.get(f)||0)+1),this}delete(f){let k=this.map.get(f)||0;return k!==0&&(k--,k===0?this.map.delete(f):this.map.set(f,k),!0)}has(f){return this.map.has(f)}},n.BidirectionalMap=class{constructor(f){if(this._m1=new Map,this._m2=new Map,f)for(let[k,a]of f)this.set(k,a)}clear(){this._m1.clear(),this._m2.clear()}set(f,k){this._m1.set(f,k),this._m2.set(k,f)}get(f){return this._m1.get(f)}getKey(f){return this._m2.get(f)}delete(f){let k=this._m1.get(f);return k!==void 0&&(this._m1.delete(f),this._m2.delete(k),!0)}forEach(f,k){this._m1.forEach(((a,w)=>{f.call(k,a,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(f,k){let a=this.map.get(f);a||(a=new Set,this.map.set(f,a)),a.add(k)}delete(f,k){let a=this.map.get(f);a&&(a.delete(k),a.size===0&&this.map.delete(f))}forEach(f,k){let a=this.map.get(f);a&&a.forEach(k)}get(f){return this.map.get(f)||new Set}}},9725:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class f{static create(a){return new f(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}}n.StopWatch=f}},t={};function r(y){var n=t[y];if(n!==void 0)return n.exports;var c=t[y]={exports:{}};return e[y].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var y=s;Object.defineProperty(y,"__esModule",{value:!0}),y.Terminal=void 0;let n=r(5101),c=r(6097),f=r(4335),k=r(5856),a=r(3027),w=r(7150),l=["cols","rows"];class m extends w.Disposable{constructor(i){super(),this._core=this._register(new k.Terminal(i)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let p=d=>this._core.options[d],h=(d,u)=>{this._checkReadonlyOptions(d),this._core.options[d]=u};for(let d in this._core.options){Object.defineProperty(this._publicOptions,d,{get:()=>this._core.options[d],set:b=>{this._checkReadonlyOptions(d),this._core.options[d]=b}});let u={get:p.bind(this,d),set:h.bind(this,d)};Object.defineProperty(this._publicOptions,d,u)}}_checkReadonlyOptions(i){if(l.includes(i))throw new Error(`Option "${i}" 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 f.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 n.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let i=this._core.coreService.decPrivateModes,p="none";switch(this._core.coreMouseService.activeProtocol){case"X10":p="x10";break;case"VT200":p="vt200";break;case"DRAG":p="drag";break;case"ANY":p="any"}return{applicationCursorKeysMode:i.applicationCursorKeys,applicationKeypadMode:i.applicationKeypad,bracketedPasteMode:i.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:p,originMode:i.origin,reverseWraparoundMode:i.reverseWraparound,sendFocusMode:i.sendFocus,synchronizedOutputMode:i.synchronizedOutput,wraparoundMode:i.wraparound}}get options(){return this._publicOptions}set options(i){for(let p in i)this._publicOptions[p]=i[p]}input(i,p=!0){this._core.input(i,p)}resize(i,p){this._verifyIntegers(i,p),this._core.resize(i,p)}registerMarker(i=0){return this._checkProposedApi(),this._verifyIntegers(i),this._core.addMarker(i)}addMarker(i){return this.registerMarker(i)}dispose(){super.dispose()}scrollLines(i){this._verifyIntegers(i),this._core.scrollLines(i)}scrollPages(i){this._verifyIntegers(i),this._core.scrollPages(i)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(i){this._verifyIntegers(i),this._core.scrollToLine(i)}clear(){this._core.clear()}write(i,p){this._core.write(i,p)}writeln(i,p){this._core.write(i),this._core.write(`\r
29
29
  `,p)}reset(){this._core.reset()}loadAddon(i){this._addonManager.loadAddon(this,i)}_verifyIntegers(...i){for(let p of i)if(p===1/0||isNaN(p)||p%1!=0)throw new Error("This API only accepts integers")}}y.Terminal=m})();var o=So;for(var g in s)o[g]=s[g];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Ae();function ei(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
31
  `+pe());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.
@@ -36,13 +36,13 @@ ${pe()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t
36
36
 
37
37
  `+pe());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
38
38
 
39
- `+pe());let g=r===-1?void 0:t[r+1]?.trim()??"",y=s===-1?void 0:t[s+1]?.trim()??"",n=o===-1?void 0:Zs(t[o+1]?.trim()??""),h=t.filter((k,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(g!==void 0&&g.length===0)throw new Error(`Repo id cannot be empty.
39
+ `+pe());let g=r===-1?void 0:t[r+1]?.trim()??"",y=s===-1?void 0:t[s+1]?.trim()??"",n=o===-1?void 0:Zs(t[o+1]?.trim()??""),f=t.filter((k,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(g!==void 0&&g.length===0)throw new Error(`Repo id cannot be empty.
40
40
 
41
41
  `+pe());if(y!==void 0&&y.length===0)throw new Error(`Workspace id cannot be empty.
42
42
 
43
- `+pe());if(h.length===0)throw new Error(`Task prompt cannot be empty.
43
+ `+pe());if(f.length===0)throw new Error(`Task prompt cannot be empty.
44
44
 
45
- `+pe());return{mode:"command",command:{kind:"createTask",...g?{repoId:g}:{},...y?{workspaceId:y}:{},prompt:h,...n?{runner:n}:{}}}}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
+ `+pe());return{mode:"command",command:{kind:"createTask",...g?{repoId:g}:{},...y?{workspaceId:y}:{},prompt:f,...n?{runner:n}:{}}}}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
47
  ${pe()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Re(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Re(t[2])}};if(t.length>=3&&t.length<=4&&t[0]==="task"&&t[1]==="pr"){let r=t[3]==="--watch";if(t.length===4&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
48
48
 
@@ -56,13 +56,13 @@ ${pe()}`)}function pe(){return["Craig commands:"," craig Show the
56
56
  ${pe()}`);return t}function Ma(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
57
57
 
58
58
  ${pe()}`);return t}import Fi from"node:path";Ae();import{mkdir as Oa,readFile as Ba,writeFile as $a}from"node:fs/promises";import Fa from"node:path";async function ve(e){try{let t=await Ba(e.configFile,"utf8"),r=JSON.parse(t);return ri(r,e.configFile)}catch(t){if(Wa(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 ti(e,t){ri(t,e.configFile),await Oa(Fa.dirname(e.configFile),{recursive:!0}),await $a(e.configFile,`${JSON.stringify(t,null,2)}
59
- `,"utf8")}function ri(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 g=o;if(g.enabled!==void 0&&typeof g.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(g.path!==void 0&&(typeof g.path!="string"||g.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 Wa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Fe();import{readFile as qa,readdir as vf,rm as Sf}from"node:fs/promises";import Ka from"node:path";async function Ye(e,t){let r=await qa(Nr(e,t),"utf8"),s=JSON.parse(r);return za(s,Nr(e,t))}async function ot(e,t){await de(Nr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Nr(e,t){return Ka.join(e.sessionsDir,`${t}.json`)}function za(e,t){let r=Xa(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")||!Ga(r.attach)||!Va(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 Va(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 Ga(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 Xa(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??""}}we();kt();Ie();function Yt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as yc,constants as vc}from"node:fs";import{homedir as ui}from"node:os";import Je from"node:path";var Sc=[Je.join(ui(),".local","bin"),Je.join(ui(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function fi(e=process.env){return Rc([...(e.PATH??"").split(Je.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Sc])}function lt(e=process.env){return{...e,PATH:fi(e).join(Je.delimiter)}}function Tc(e,t={}){if(e.includes(Je.sep)){let r=Je.isAbsolute(e)?e:Je.resolve(t.cwd??process.cwd(),e);return hi(r)?r:null}for(let r of fi(t.env)){let s=Je.join(r,e);if(hi(s))return s}return null}function dt(e,t={}){let r=Tc(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 hi(e){try{return yc(e,vc.X_OK),!0}catch{return!1}}function Rc(e){return[...new Set(e)]}Ae();Ie();import{spawn as Cc}from"node:child_process";import{createHash as Pc}from"node:crypto";import Ic from"node:path";var xc="craig";async function pi(e,t,r){let s=Kr(e,t),o=Ac(),g=await J("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),y=Lc(g.stdout);return await Ec(e,s),y}async function Ec(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 J("tmux",s,{cwd:e})}async function gi(e,t,r){await J("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function mi(e,t,r){await J("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function _i(e,t,r){await J("tmux",["pipe-pane","-o","-t",e,`cat >> ${Yt(t)}`],{cwd:r})}async function Jt(e,t,r,s){let o=s??ki(e);if(r?await J("tmux",["select-window","-t",r],{cwd:e}):await J("tmux",["select-window","-t",t],{cwd:e}),await J("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await J("tmux",["switch-client","-t",o],{cwd:e});return}await Oc(e,["attach-session","-t",o])}async function wi(e,t){await J("tmux",["kill-session","-t",t],{cwd:e})}function ki(e){let r=Ic.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=Pc("sha1").update(e).digest("hex").slice(0,8);return`${xc}-${r}-${s}`}function Kr(e,t){return`${ki(e)}-${t.toLowerCase()}`}function Ac(){let e=Dc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Dc(){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 Lc(e){let t=Mc(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 Mc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Oc(e,t){await new Promise((r,s)=>{let o=Cc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",g=>{if(g===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${g??"unknown"}.`))})})}var zr={async prepare(e,t){let r=e.runnerSession.command[0]??_e(e.runner)[0],s=lt();await J(dt(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:_e(e.runner,e.prompt.value),s=dt(r[0],{cwd:e.worktreePath,env:lt()});await mi(t.session.paneId,[s,...r.slice(1)].map(o=>Yt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ae();Ie();var Ct={async create(e,t){let r=await pi(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await _i(r.paneId,t.logPath,t.repoRoot);let s=await bi({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||Kr(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 ot(e,o),o},async attach(e,t,r){let s=await Ct.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Jt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await ot(e,o),o},async resize(e,t,r,s){await gi(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await ot(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 ot(e,s),s},async snapshot(e,t){return Bc(e,t)}};async function Bc(e,t){let r=await ae("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return bi({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function bi(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ht();we();It();import{mkdir as Et,rm as Vc,writeFile as sr}from"node:fs/promises";import oe from"node:path";Ie();async function Ri(e,t){let r=await ae("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 Vr(e,t,r,s="main"){let o=s.trim()||"main";if((await ae("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let y=await zc(e,o);await J("git",["worktree","add","-b",t,r,y],{cwd:e})}async function zc(e,t){return(await ae("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await ae("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await ae("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function xt(e){let t=await ae("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 Ci(e){await J("git",["add","-A"],{cwd:e})}async function Pi(e,t){await J("git",["commit","-m",t],{cwd:e})}async function tr(e){let t=await J("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
60
- `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}async function rr(e){return!await xt(e)}async function Ii(e){await J("git",["remote","get-url","origin"],{cwd:e})}async function xi(e,t){await J("git",["push","-u","origin",t],{cwd:e})}async function Ei(e,t){await J("git",["worktree","remove","--force",t],{cwd:e})}Ae();ct();async function Ai(e,t){let r=await Ce(e),s=Li(new Date),o=Mi(r.taskIds,s);for(;;){let g=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${g}`;if(!await Ri(t,y))return g;o+=1}}async function Di(e){let t=await Ce(e),r=Li(new Date),s=Mi(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Li(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 Mi(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 Oi=["AGENTS","md"].join(".");async function At(e,t,r,s={}){let o=await Le(e,t),g=await Qc(e,o.id),y=await Ai(e,o.rootPath),n=s.sessionId??null,c=`craig/${y}`,h=oe.join(e.worktreesDir,o.id,y),k=oe.join(e.logsDir,`${y}.log`),a=oe.join(e.artifactsDir,y);await Et(oe.dirname(h),{recursive:!0}),await Et(a,{recursive:!0}),await sr(k,"","utf8");let w=Gc(e,{taskId:y,repoId:o.id,workspaceId:g.id,sessionId:n,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:h});return await re(e,w),await Ur(e,y),await Vr(o.rootPath,c,h,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:n,workspaceId:g.id,task:w}}async function nr(e,t,r,s={}){let o=(await Me(e)).find(u=>u.id===t&&u.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 u=await At(e,o.primaryRepoId,r,s);return{...u,bundlePath:u.task.worktreePath,repoTargets:[]}}let g=o.discoveredRepoIds??[];if(g.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let y=await Di(e),n=new Date().toISOString(),c=s.runner??"codex",h=s.sessionId??null,k=`craig/${y}`,a=oe.join(e.craigDir,"task-bundles",y),w=oe.join(e.logsDir,`${y}.log`),l=oe.join(e.artifactsDir,y);await Et(a,{recursive:!0}),await Et(l,{recursive:!0}),await sr(w,"","utf8");let m=await Promise.all(g.map(u=>Le(e,u))),_=Yc(m),i=await Promise.all(m.map(u=>Xc(e,u,y,k,oe.join(a,_.get(u.id))))),p=i.find(u=>u.status==="ready")??i[0];if(!i.some(u=>u.status==="ready"))throw await Vc(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${i.map(u=>`${u.repoId}: ${u.failureReason??"unknown error"}`).join("; ")}`);await sr(oe.join(a,"manifest.json"),JSON.stringify({taskId:y,workspaceId:t,prompt:r,repos:i.map(u=>({repoId:u.repoId,repoName:m.find(b=>b.id===u.repoId)?.name??u.repoId,path:oe.relative(a,u.worktreePath),status:u.status,worktreePath:u.worktreePath,failureReason:u.failureReason}))},null,2),"utf8"),await sr(oe.join(a,Oi),Jc({taskId:y,workspaceId:t,prompt:r,repos:m,repoTargets:i,bundlePath:a}),"utf8");let f=Bi(y,r,n,c,s.config??{}),d={id:y,title:r,slug:$i(r),type:"project",status:"draft",runner:c,repoId:p.repoId,workspaceId:o.id,sessionId:h,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:g.filter(u=>u!==p.repoId),repoRoot:a,worktreePath:a,branch:k,bundlePath:a,selectedRepoTargetId:p.repoId,repoTargets:i,ptyTabs:f,runnerSession:{command:_e(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:p.checks,lastCommit:null,pullRequest:p.pullRequest,artifacts:{logPath:oe.relative(e.workspaceRoot,w),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(l,"pr-status.json"))},cleanup:ir(),lastFailureReason:i.every(u=>u.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:n,updatedAt:n};return await re(e,d),await Ur(e,y),{repoId:p.repoId,repoRoot:a,sessionId:h,workspaceId:o.id,task:d,bundlePath:a,repoTargets:i}}function Bi(e,t,r,s="codex",o={}){let g=ye(s);return[{id:`${e}:agent`,kind:"agent",title:g.defaultAgentTitle,command:_e(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Gc(e,t){let r=new Date().toISOString(),s=Bi(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:$i(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:_e(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Gr(oe.relative(e.workspaceRoot,e.configFile))},lastCommit:null,pullRequest:Xr(),artifacts:{logPath:oe.relative(e.workspaceRoot,oe.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:ir(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Xc(e,t,r,s,o){await Et(oe.dirname(o),{recursive:!0});try{return await Vr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Gr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Xr(),cleanup:ir()}}catch(g){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:g instanceof Error?g.message:"Failed to create worktree.",checks:Gr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Xr(),cleanup:ir()}}}function Yc(e){let t=new Set(["manifest.json",Oi]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,g=o,y=2;for(;t.has(g);)g=`${o}-${y}`,y+=1;t.add(g),r.set(s.id,g)}return r}function Jc(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,g=oe.relative(e.bundlePath,s.worktreePath),y=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${g}/\` - ${o} (${s.repoId}, ${y})`}).join(`
59
+ `,"utf8")}function ri(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 g=o;if(g.enabled!==void 0&&typeof g.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(g.path!==void 0&&(typeof g.path!="string"||g.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 Wa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Fe();import{readFile as qa,readdir as Sf,rm as Tf}from"node:fs/promises";import Ka from"node:path";async function Ye(e,t){let r=await qa(Nr(e,t),"utf8"),s=JSON.parse(r);return za(s,Nr(e,t))}async function ot(e,t){await de(Nr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Nr(e,t){return Ka.join(e.sessionsDir,`${t}.json`)}function za(e,t){let r=Xa(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")||!Ga(r.attach)||!Va(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 Va(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 Ga(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 Xa(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??""}}we();kt();Ie();function Yt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as yc,constants as vc}from"node:fs";import{homedir as ui}from"node:os";import Je from"node:path";var Sc=[Je.join(ui(),".local","bin"),Je.join(ui(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function fi(e=process.env){return Rc([...(e.PATH??"").split(Je.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Sc])}function lt(e=process.env){return{...e,PATH:fi(e).join(Je.delimiter)}}function Tc(e,t={}){if(e.includes(Je.sep)){let r=Je.isAbsolute(e)?e:Je.resolve(t.cwd??process.cwd(),e);return hi(r)?r:null}for(let r of fi(t.env)){let s=Je.join(r,e);if(hi(s))return s}return null}function dt(e,t={}){let r=Tc(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 hi(e){try{return yc(e,vc.X_OK),!0}catch{return!1}}function Rc(e){return[...new Set(e)]}Ae();Ie();import{spawn as Cc}from"node:child_process";import{createHash as Pc}from"node:crypto";import Ic from"node:path";var xc="craig";async function pi(e,t,r){let s=Kr(e,t),o=Ac(),g=await J("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),y=Lc(g.stdout);return await Ec(e,s),y}async function Ec(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 J("tmux",s,{cwd:e})}async function gi(e,t,r){await J("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function mi(e,t,r){await J("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function _i(e,t,r){await J("tmux",["pipe-pane","-o","-t",e,`cat >> ${Yt(t)}`],{cwd:r})}async function Jt(e,t,r,s){let o=s??ki(e);if(r?await J("tmux",["select-window","-t",r],{cwd:e}):await J("tmux",["select-window","-t",t],{cwd:e}),await J("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await J("tmux",["switch-client","-t",o],{cwd:e});return}await Oc(e,["attach-session","-t",o])}async function wi(e,t){await J("tmux",["kill-session","-t",t],{cwd:e})}function ki(e){let r=Ic.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=Pc("sha1").update(e).digest("hex").slice(0,8);return`${xc}-${r}-${s}`}function Kr(e,t){return`${ki(e)}-${t.toLowerCase()}`}function Ac(){let e=Dc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Dc(){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 Lc(e){let t=Mc(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 Mc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Oc(e,t){await new Promise((r,s)=>{let o=Cc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",g=>{if(g===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${g??"unknown"}.`))})})}var zr={async prepare(e,t){let r=e.runnerSession.command[0]??_e(e.runner)[0],s=lt();await J(dt(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:_e(e.runner,e.prompt.value),s=dt(r[0],{cwd:e.worktreePath,env:lt()});await mi(t.session.paneId,[s,...r.slice(1)].map(o=>Yt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ae();Ie();var Ct={async create(e,t){let r=await pi(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await _i(r.paneId,t.logPath,t.repoRoot);let s=await bi({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||Kr(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 ot(e,o),o},async attach(e,t,r){let s=await Ct.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Jt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await ot(e,o),o},async resize(e,t,r,s){await gi(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await ot(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 ot(e,s),s},async snapshot(e,t){return Bc(e,t)}};async function Bc(e,t){let r=await ae("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return bi({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function bi(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ht();we();It();import{mkdir as Et,rm as Vc,writeFile as sr}from"node:fs/promises";import oe from"node:path";Ie();async function Ri(e,t){let r=await ae("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 Vr(e,t,r,s="main"){let o=s.trim()||"main";if((await ae("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let y=await zc(e,o);await J("git",["worktree","add","-b",t,r,y],{cwd:e})}async function zc(e,t){return(await ae("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await ae("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await ae("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function xt(e){let t=await ae("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 Ci(e){await J("git",["add","-A"],{cwd:e})}async function Pi(e,t){await J("git",["commit","-m",t],{cwd:e})}async function tr(e){let t=await J("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
60
+ `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}async function rr(e){return!await xt(e)}async function Ii(e){await J("git",["remote","get-url","origin"],{cwd:e})}async function xi(e,t){await J("git",["push","-u","origin",t],{cwd:e})}async function Ei(e,t){await J("git",["worktree","remove","--force",t],{cwd:e})}Ae();ct();async function Ai(e,t){let r=await Ce(e),s=Li(new Date),o=Mi(r.taskIds,s);for(;;){let g=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${g}`;if(!await Ri(t,y))return g;o+=1}}async function Di(e){let t=await Ce(e),r=Li(new Date),s=Mi(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Li(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 Mi(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 Oi=["AGENTS","md"].join(".");async function At(e,t,r,s={}){let o=await Le(e,t),g=await Qc(e,o.id),y=await Ai(e,o.rootPath),n=s.sessionId??null,c=`craig/${y}`,f=oe.join(e.worktreesDir,o.id,y),k=oe.join(e.logsDir,`${y}.log`),a=oe.join(e.artifactsDir,y);await Et(oe.dirname(f),{recursive:!0}),await Et(a,{recursive:!0}),await sr(k,"","utf8");let w=Gc(e,{taskId:y,repoId:o.id,workspaceId:g.id,sessionId:n,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:f});return await re(e,w),await Ur(e,y),await Vr(o.rootPath,c,f,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:n,workspaceId:g.id,task:w}}async function nr(e,t,r,s={}){let o=(await Me(e)).find(u=>u.id===t&&u.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 u=await At(e,o.primaryRepoId,r,s);return{...u,bundlePath:u.task.worktreePath,repoTargets:[]}}let g=o.discoveredRepoIds??[];if(g.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let y=await Di(e),n=new Date().toISOString(),c=s.runner??"codex",f=s.sessionId??null,k=`craig/${y}`,a=oe.join(e.craigDir,"task-bundles",y),w=oe.join(e.logsDir,`${y}.log`),l=oe.join(e.artifactsDir,y);await Et(a,{recursive:!0}),await Et(l,{recursive:!0}),await sr(w,"","utf8");let m=await Promise.all(g.map(u=>Le(e,u))),_=Yc(m),i=await Promise.all(m.map(u=>Xc(e,u,y,k,oe.join(a,_.get(u.id))))),p=i.find(u=>u.status==="ready")??i[0];if(!i.some(u=>u.status==="ready"))throw await Vc(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${i.map(u=>`${u.repoId}: ${u.failureReason??"unknown error"}`).join("; ")}`);await sr(oe.join(a,"manifest.json"),JSON.stringify({taskId:y,workspaceId:t,prompt:r,repos:i.map(u=>({repoId:u.repoId,repoName:m.find(b=>b.id===u.repoId)?.name??u.repoId,path:oe.relative(a,u.worktreePath),status:u.status,worktreePath:u.worktreePath,failureReason:u.failureReason}))},null,2),"utf8"),await sr(oe.join(a,Oi),Jc({taskId:y,workspaceId:t,prompt:r,repos:m,repoTargets:i,bundlePath:a}),"utf8");let h=Bi(y,r,n,c,s.config??{}),d={id:y,title:r,slug:$i(r),type:"project",status:"draft",runner:c,repoId:p.repoId,workspaceId:o.id,sessionId:f,selectedPtyTabId:h[0]?.id??null,linkedRepoIds:g.filter(u=>u!==p.repoId),repoRoot:a,worktreePath:a,branch:k,bundlePath:a,selectedRepoTargetId:p.repoId,repoTargets:i,ptyTabs:h,runnerSession:{command:_e(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:p.checks,lastCommit:null,pullRequest:p.pullRequest,artifacts:{logPath:oe.relative(e.workspaceRoot,w),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(l,"pr-status.json"))},cleanup:ir(),lastFailureReason:i.every(u=>u.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:n,updatedAt:n};return await re(e,d),await Ur(e,y),{repoId:p.repoId,repoRoot:a,sessionId:f,workspaceId:o.id,task:d,bundlePath:a,repoTargets:i}}function Bi(e,t,r,s="codex",o={}){let g=ye(s);return[{id:`${e}:agent`,kind:"agent",title:g.defaultAgentTitle,command:_e(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Gc(e,t){let r=new Date().toISOString(),s=Bi(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:$i(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:_e(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Gr(oe.relative(e.workspaceRoot,e.configFile))},lastCommit:null,pullRequest:Xr(),artifacts:{logPath:oe.relative(e.workspaceRoot,oe.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:ir(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Xc(e,t,r,s,o){await Et(oe.dirname(o),{recursive:!0});try{return await Vr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Gr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Xr(),cleanup:ir()}}catch(g){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:g instanceof Error?g.message:"Failed to create worktree.",checks:Gr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Xr(),cleanup:ir()}}}function Yc(e){let t=new Set(["manifest.json",Oi]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,g=o,y=2;for(;t.has(g);)g=`${o}-${y}`,y+=1;t.add(g),r.set(s.id,g)}return r}function Jc(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,g=oe.relative(e.bundlePath,s.worktreePath),y=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${g}/\` - ${o} (${s.repoId}, ${y})`}).join(`
61
61
  `);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(`
62
- `)}function Gr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Xr(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function ir(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function Qc(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 $i(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Wi(e,t,r,s={}){let o=r.trim(),g=await ve(e),y=s.runner??nt(g);if(Gt(y,g),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 n=s.workspaceId?await nr(e,s.workspaceId,o,{runner:y,config:g}):await At(e,t,o,{runner:y,config:g}),c=n.task,h=_e(y,o,g),k=`session_${c.id}`,a=c.artifacts.logPath?Fi.resolve(e.workspaceRoot,c.artifacts.logPath):Fi.join(e.logsDir,`${c.id}.log`);try{await zr.prepare(c,{repoRoot:n.repoRoot});let w=await Ct.create(e,{sessionId:k,taskId:c.id,repoId:n.repoId,workspaceId:n.workspaceId,repoRoot:n.repoRoot,worktreePath:c.worktreePath,logPath:a,command:h});await zr.launch(c,{repoRoot:n.repoRoot,session:w});let l=new Date().toISOString();w={...w,status:"running",startedAt:l,command:h};let m={...c,status:"running",runner:y,sessionId:w.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:w.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await re(e,m),await ot(e,w),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:w.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(w){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:w instanceof Error?w.message:"Unknown Craig error"};throw await re(e,l),w}}Dt();ht();we();import{access as el}from"node:fs/promises";import Ni from"node:path";async function ie(e,t){try{return await ue(e,t)}catch(r){throw nl(r)?new Error(`Craig task "${t}" was not found.`):r}}async function ge(e){if(!await Yr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function Jr(e,t){return t.artifacts.logPath?Ni.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Ni.join(e.workspaceRoot,t.artifacts.logPath):null}async function ji(e,t){let r=await Yr(t.worktreePath),s=Jr(e,t),o=s?await Yr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:tl(t),lastCommitSummary:rl(t),prSummary:sl(t),cleanupSummary:il(t)}}async function Yr(e){try{return await el(e),!0}catch{return!1}}function tl(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 rl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function sl(e){if(!e.pullRequest.number||!e.pullRequest.url)return"not linked";let t=e.pullRequest.requiredChecks.length,r=t===1?"check":"checks";return`#${e.pullRequest.number} ${e.pullRequest.status??"unknown"} mergeable=${e.pullRequest.mergeable} mergeState=${e.pullRequest.mergeStateStatus??"unknown"} (${t} ${r})`}function il(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 nl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Hi(e,t){let r=await ie(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),Ye(e,r.sessionId)]),g=await Ct.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:g.id,disposition:"attached"}}we();Fe();we();import{mkdir as Ki,readFile as ol,writeFile as al}from"node:fs/promises";import or from"node:path";Ie();import Ui from"node:path";function Lt(e,t){return t?Ui.isAbsolute(t)?t:Ui.join(e.repoRoot,t):null}var qi=3,cl=1e3,ll=1e4;async function Qe(e){let t=await ae("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 zi(e,t){let r=Lt(t,e.artifacts.prDraftPath??or.join(".craig","artifacts",e.id,"pr.md"));if(!r)throw new Error(`Task ${e.id} is missing a PR draft artifact path.`);await Ki(or.dirname(r),{recursive:!0});try{await ol(r,"utf8")}catch{await al(r,`## Summary
62
+ `)}function Gr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Xr(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function ir(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function Qc(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 $i(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Wi(e,t,r,s={}){let o=r.trim(),g=await ve(e),y=s.runner??nt(g);if(Gt(y,g),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 n=s.workspaceId?await nr(e,s.workspaceId,o,{runner:y,config:g}):await At(e,t,o,{runner:y,config:g}),c=n.task,f=_e(y,o,g),k=`session_${c.id}`,a=c.artifacts.logPath?Fi.resolve(e.workspaceRoot,c.artifacts.logPath):Fi.join(e.logsDir,`${c.id}.log`);try{await zr.prepare(c,{repoRoot:n.repoRoot});let w=await Ct.create(e,{sessionId:k,taskId:c.id,repoId:n.repoId,workspaceId:n.workspaceId,repoRoot:n.repoRoot,worktreePath:c.worktreePath,logPath:a,command:f});await zr.launch(c,{repoRoot:n.repoRoot,session:w});let l=new Date().toISOString();w={...w,status:"running",startedAt:l,command:f};let m={...c,status:"running",runner:y,sessionId:w.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:w.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await re(e,m),await ot(e,w),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:w.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(w){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:w instanceof Error?w.message:"Unknown Craig error"};throw await re(e,l),w}}Dt();ht();we();import{access as el}from"node:fs/promises";import Ni from"node:path";async function ie(e,t){try{return await ue(e,t)}catch(r){throw nl(r)?new Error(`Craig task "${t}" was not found.`):r}}async function ge(e){if(!await Yr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function Jr(e,t){return t.artifacts.logPath?Ni.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Ni.join(e.workspaceRoot,t.artifacts.logPath):null}async function ji(e,t){let r=await Yr(t.worktreePath),s=Jr(e,t),o=s?await Yr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:tl(t),lastCommitSummary:rl(t),prSummary:sl(t),cleanupSummary:il(t)}}async function Yr(e){try{return await el(e),!0}catch{return!1}}function tl(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 rl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function sl(e){if(!e.pullRequest.number||!e.pullRequest.url)return"not linked";let t=e.pullRequest.requiredChecks.length,r=t===1?"check":"checks";return`#${e.pullRequest.number} ${e.pullRequest.status??"unknown"} mergeable=${e.pullRequest.mergeable} mergeState=${e.pullRequest.mergeStateStatus??"unknown"} (${t} ${r})`}function il(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 nl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Hi(e,t){let r=await ie(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),Ye(e,r.sessionId)]),g=await Ct.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:g.id,disposition:"attached"}}we();Fe();we();import{mkdir as Ki,readFile as ol,writeFile as al}from"node:fs/promises";import or from"node:path";Ie();import Ui from"node:path";function Lt(e,t){return t?Ui.isAbsolute(t)?t:Ui.join(e.repoRoot,t):null}var qi=3,cl=1e3,ll=1e4;async function Qe(e){let t=await ae("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 zi(e,t){let r=Lt(t,e.artifacts.prDraftPath??or.join(".craig","artifacts",e.id,"pr.md"));if(!r)throw new Error(`Task ${e.id} is missing a PR draft artifact path.`);await Ki(or.dirname(r),{recursive:!0});try{await ol(r,"utf8")}catch{await al(r,`## Summary
63
63
 
64
64
  - ${e.title}
65
- `,"utf8")}return e.artifacts.prDraftPath=or.relative(t.repoRoot,r),r}async function Vi(e,t){await J("gh",["pr","create","--base","main","--head",e.branch,"--title",e.lastCommit?.message??e.title,"--body-file",t],{cwd:e.worktreePath})}async function Gi(e,t){let r=t==="merge"?"--merge":t==="rebase"?"--rebase":"--squash";await J("gh",["pr","merge",String(e.pullRequest.number),r,"--delete-branch=false"],{cwd:e.worktreePath})}async function ft(e,t){let r=await J("gh",ar(t.pullRequest.number?String(t.pullRequest.number):t.branch),{cwd:t.worktreePath}),s=JSON.parse(r.stdout);return rs(e,t,s)}async function Zr(e,t){let r=await ae("gh",ar(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)}}async function Xi(e){let t=await ae("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:_l(t.stdout.trim())}async function Yi(e,t,r){if(r.length===0)return[];let s=wl(r),o=await dl(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),y=JSON.parse(o.stdout).data?.repository??{};return r.map((n,c)=>{let h=y[`item${c}`],k=kl(h);return{id:n.id,found:k!==null,view:k}})}async function dl(e,t){let r;for(let s=0;s<=qi;s+=1)try{return await J("gh",t,{cwd:e})}catch(o){if(r=o,s===qi||!ul(o))throw o;await fl(hl(s))}throw r}function ul(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 hl(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||cl,r=Math.min(t*2**e,ll),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function fl(e){return new Promise(t=>setTimeout(t,e))}async function Mt(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let y=await J("gh",ar(s),{cwd:r.worktreePath}),n=cr(JSON.parse(y.stdout));return r.pullRequest=n,await Qr(e,t,r.repoId,n),"synced"}let o=await ae("gh",ar(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let g=cr(JSON.parse(o.stdout));return r.pullRequest=g,await Qr(e,t,r.repoId,g),"discovered"}async function Ji(e,t,r){return rs(e,t,r)}async function Qi(e,t,r,s){return Qr(e,t,r,cr(s))}async function es(e,t){let s=((await ve(e)).github?.watchIntervalSeconds??5)*1e3;for(;;){if(await ft(e,t),gl(t.pullRequest))return t;await new Promise(o=>setTimeout(o,s))}}async function ts(e,t){let r=Lt(e,t.artifacts.prStatusPath);r&&(await Ki(or.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,pullRequest:t.pullRequest}))}function Zi(e){return e.requiredChecks.length===0?"no required checks":e.requiredChecks.map(t=>`${t.name}:${t.status}`).join(", ")}function pt(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function pl(e){return e.requiredChecks.some(t=>t.status==="failed")}function gl(e){return pt(e)||pl(e)||e.status==="closed"||e.status==="merged"}function ml(e){return pt(e)?"merge_ready":e.status==="merged"?"merged":e.status==="open"?"pr_open":"checked"}function ar(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,mergeable,mergeStateStatus,statusCheckRollup"]}function _l(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 wl(e){return`
65
+ `,"utf8")}return e.artifacts.prDraftPath=or.relative(t.repoRoot,r),r}async function Vi(e,t){await J("gh",["pr","create","--base","main","--head",e.branch,"--title",e.lastCommit?.message??e.title,"--body-file",t],{cwd:e.worktreePath})}async function Gi(e,t){let r=t==="merge"?"--merge":t==="rebase"?"--rebase":"--squash";await J("gh",["pr","merge",String(e.pullRequest.number),r,"--delete-branch=false"],{cwd:e.worktreePath})}async function ft(e,t){let r=await J("gh",ar(t.pullRequest.number?String(t.pullRequest.number):t.branch),{cwd:t.worktreePath}),s=JSON.parse(r.stdout);return rs(e,t,s)}async function Zr(e,t){let r=await ae("gh",ar(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)}}async function Xi(e){let t=await ae("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:_l(t.stdout.trim())}async function Yi(e,t,r){if(r.length===0)return[];let s=wl(r),o=await dl(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),y=JSON.parse(o.stdout).data?.repository??{};return r.map((n,c)=>{let f=y[`item${c}`],k=kl(f);return{id:n.id,found:k!==null,view:k}})}async function dl(e,t){let r;for(let s=0;s<=qi;s+=1)try{return await J("gh",t,{cwd:e})}catch(o){if(r=o,s===qi||!ul(o))throw o;await fl(hl(s))}throw r}function ul(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 hl(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||cl,r=Math.min(t*2**e,ll),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function fl(e){return new Promise(t=>setTimeout(t,e))}async function Mt(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let y=await J("gh",ar(s),{cwd:r.worktreePath}),n=cr(JSON.parse(y.stdout));return r.pullRequest=n,await Qr(e,t,r.repoId,n),"synced"}let o=await ae("gh",ar(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let g=cr(JSON.parse(o.stdout));return r.pullRequest=g,await Qr(e,t,r.repoId,g),"discovered"}async function Ji(e,t,r){return rs(e,t,r)}async function Qi(e,t,r,s){return Qr(e,t,r,cr(s))}async function es(e,t){let s=((await ve(e)).github?.watchIntervalSeconds??5)*1e3;for(;;){if(await ft(e,t),gl(t.pullRequest))return t;await new Promise(o=>setTimeout(o,s))}}async function ts(e,t){let r=Lt(e,t.artifacts.prStatusPath);r&&(await Ki(or.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,pullRequest:t.pullRequest}))}function Zi(e){return e.requiredChecks.length===0?"no required checks":e.requiredChecks.map(t=>`${t.name}:${t.status}`).join(", ")}function pt(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function pl(e){return e.requiredChecks.some(t=>t.status==="failed")}function gl(e){return pt(e)||pl(e)||e.status==="closed"||e.status==="merged"}function ml(e){return pt(e)?"merge_ready":e.status==="merged"?"merged":e.status==="open"?"pr_open":"checked"}function ar(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,mergeable,mergeStateStatus,statusCheckRollup"]}function _l(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 wl(e){return`
66
66
  query CraigPullRequestBatch($owner: String!, $name: String!) {
67
67
  repository(owner: $owner, name: $name) {
68
68
  ${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(`
@@ -118,10 +118,10 @@ fragment PrFields on PullRequest {
118
118
  }
119
119
  }
120
120
  }
121
- `}function kl(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,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,statusCheckRollup:s}}async function rs(e,t,r){let s=cr(r);t.pullRequest=s,t.status=ml(s),await ts(e,t);let o=await ue(e,t.id),g=o.status==="closed"?o.status:t.status,y={...o,pullRequest:s,status:g};return await re(e,y),y}async function Qr(e,t,r,s){let o=await ue(e,t.id),g=(o.repoTargets??t.repoTargets??[]).map(n=>n.repoId===r?{...n,pullRequest:s}:n),y={...o,repoTargets:g};return await re(e,y),y}function cr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:bl(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:yl(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function bl(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function yl(e){return e.map(t=>vl(t)).filter(t=>t!==null)}function vl(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:en(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function en(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?en(s,s):"unknown"}async function Ot(e,t,r){let s=await ie(e,t);await ge(s),await Ii(s.worktreePath),await Qe(s.worktreePath);let o=!!s.pullRequest.number;if(!o&&(await Zr(e,s)).discovered)return r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await es(e,s),tn(s,r.watch,"discovered");if(s.status!=="checked"&&s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot open a pull request from status "${s.status}".`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before opening a pull request.`);if(!await rr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before opening a pull request.`);let g=await zi(s,e);return await re(e,s),await xi(s.worktreePath,s.branch),s.pullRequest.number||await Vi(s,g),await ft(e,s),r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await es(e,s),await ts(e,s),tn(s,r.watch,o?"synced":"created")}async function sn(e,t){let r=await ie(e,t);return r.pullRequest.number&&(await Qe(r.worktreePath),await ft(e,r)),r}async function nn(e,t){let r=await ie(e,t),s=(r.repoTargets??[]).filter(y=>y.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let y of s){await Qe(y.worktreePath);let n=y.pullRequest.number?await Mt(e,r,y):await Mt(e,r,y).catch(()=>"not_found");o[n==="not_found"?"notFound":n]++}let g=await ue(e,r.id);return g.status!=="closed"&&(g.status=an(g),g.pullRequest=cn(g),await re(e,g)),o}async function on(e,t){let r=new Map,s=new Map;for(let o of t){let g=ss(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let n of o.repoTargets.filter(c=>c.status==="ready")){let c={id:`${o.id}:${n.repoId}`,task:o,targetRepoId:n.repoId,worktreePath:n.worktreePath,selector:n.pullRequest.number?String(n.pullRequest.number):n.branch,mode:n.pullRequest.number?"number":"head"};await rn(s,c).catch(async()=>{try{let h=n.pullRequest.number?await Mt(e,o,n):await Mt(e,o,n).catch(()=>"not_found");lr(g,h,n.pullRequest.number??null,n.pullRequest.url??null)}catch{}})}continue}let y={id:o.id,task:o,worktreePath:o.worktreePath,selector:o.pullRequest.number?String(o.pullRequest.number):o.branch,mode:o.pullRequest.number?"number":"head"};await rn(s,y).catch(async()=>{try{let{disposition:n,task:c}=await is(e,o.id);lr(g,n,c.pullRequest.number,c.pullRequest.url)}catch{}})}for(let o of s.values())try{await Qe(o.worktreePath);let g=await Yi(o.worktreePath,o.repository,o.items),y=new Map(g.map(n=>[n.id,n]));for(let n of o.items){let c=ss(r,n.task),h=y.get(n.id);if(!h?.found||!h.view){lr(c,"not_found",null,null);continue}n.targetRepoId?await Qi(e,n.task,n.targetRepoId,h.view):await Ji(e,n.task,h.view),lr(c,n.mode==="number"?"synced":"discovered",h.view.number,h.view.url)}}catch{}for(let o of t.filter(g=>g.type==="project"&&g.repoTargets?.length)){let g=await ue(e,o.id);g.status!=="closed"&&(g.status=an(g),g.pullRequest=cn(g),await re(e,g))}return t.map(o=>ss(r,o))}async function is(e,t){let r=await ie(e,t);return await ge(r),await Qe(r.worktreePath),r.pullRequest.number?(await ft(e,r),{disposition:"synced",task:r}):{disposition:(await Zr(e,r)).discovered?"discovered":"not_found",task:r}}function tn(e,t,r){return{kind:"openPullRequest",taskId:e.id,watch:t,disposition:r,prNumber:e.pullRequest.number??0,url:e.pullRequest.url??"",status:e.status,mergeable:e.pullRequest.mergeable,requiredChecksSummary:Zi(e.pullRequest)}}function an(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(Sl)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function rn(e,t){let r=await Xi(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 ss(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):!!t.pullRequest.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function lr(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 cn(e){let t=(e.repoTargets??[]).filter(s=>s.status==="ready"),r=t.find(s=>s.repoId===e.selectedRepoTargetId);return r?.pullRequest.number?r.pullRequest:t.find(s=>s.pullRequest.number)?.pullRequest??e.pullRequest}function Sl(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function ns(e,t){let r=await ie(e,t);if(r.pullRequest.number)try{r=await sn(e,t)}catch{}let s=await ji(e,r),o=r.sessionId?await Ye(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as Tl}from"node:fs/promises";async function os(e,t){let r=await ie(e,t),s=Jr(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await Tl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ie();async function as(e,t){let r=await ie(e,t);if(await ge(r),(await J("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Rl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Rl(e){let t=[],r=await J("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Cl(e);for(let o of s){let g=await ae("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(g.stdout.trimEnd())}return t.join(`
121
+ `}function kl(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,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,statusCheckRollup:s}}async function rs(e,t,r){let s=cr(r);t.pullRequest=s,t.status=ml(s),await ts(e,t);let o=await ue(e,t.id),g=o.status==="closed"?o.status:t.status,y={...o,pullRequest:s,status:g};return await re(e,y),y}async function Qr(e,t,r,s){let o=await ue(e,t.id),g=(o.repoTargets??t.repoTargets??[]).map(n=>n.repoId===r?{...n,pullRequest:s}:n),y={...o,repoTargets:g};return await re(e,y),y}function cr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:bl(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:yl(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function bl(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function yl(e){return e.map(t=>vl(t)).filter(t=>t!==null)}function vl(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:en(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function en(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?en(s,s):"unknown"}async function Ot(e,t,r){let s=await ie(e,t);await ge(s),await Ii(s.worktreePath),await Qe(s.worktreePath);let o=!!s.pullRequest.number;if(!o&&(await Zr(e,s)).discovered)return r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await es(e,s),tn(s,r.watch,"discovered");if(s.status!=="checked"&&s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot open a pull request from status "${s.status}".`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before opening a pull request.`);if(!await rr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before opening a pull request.`);let g=await zi(s,e);return await re(e,s),await xi(s.worktreePath,s.branch),s.pullRequest.number||await Vi(s,g),await ft(e,s),r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await es(e,s),await ts(e,s),tn(s,r.watch,o?"synced":"created")}async function sn(e,t){let r=await ie(e,t);return r.pullRequest.number&&(await Qe(r.worktreePath),await ft(e,r)),r}async function nn(e,t){let r=await ie(e,t),s=(r.repoTargets??[]).filter(y=>y.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let y of s){await Qe(y.worktreePath);let n=y.pullRequest.number?await Mt(e,r,y):await Mt(e,r,y).catch(()=>"not_found");o[n==="not_found"?"notFound":n]++}let g=await ue(e,r.id);return g.status!=="closed"&&(g.status=an(g),g.pullRequest=cn(g),await re(e,g)),o}async function on(e,t){let r=new Map,s=new Map;for(let o of t){let g=ss(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let n of o.repoTargets.filter(c=>c.status==="ready")){let c={id:`${o.id}:${n.repoId}`,task:o,targetRepoId:n.repoId,worktreePath:n.worktreePath,selector:n.pullRequest.number?String(n.pullRequest.number):n.branch,mode:n.pullRequest.number?"number":"head"};await rn(s,c).catch(async()=>{try{let f=n.pullRequest.number?await Mt(e,o,n):await Mt(e,o,n).catch(()=>"not_found");lr(g,f,n.pullRequest.number??null,n.pullRequest.url??null)}catch{}})}continue}let y={id:o.id,task:o,worktreePath:o.worktreePath,selector:o.pullRequest.number?String(o.pullRequest.number):o.branch,mode:o.pullRequest.number?"number":"head"};await rn(s,y).catch(async()=>{try{let{disposition:n,task:c}=await is(e,o.id);lr(g,n,c.pullRequest.number,c.pullRequest.url)}catch{}})}for(let o of s.values())try{await Qe(o.worktreePath);let g=await Yi(o.worktreePath,o.repository,o.items),y=new Map(g.map(n=>[n.id,n]));for(let n of o.items){let c=ss(r,n.task),f=y.get(n.id);if(!f?.found||!f.view){lr(c,"not_found",null,null);continue}n.targetRepoId?await Qi(e,n.task,n.targetRepoId,f.view):await Ji(e,n.task,f.view),lr(c,n.mode==="number"?"synced":"discovered",f.view.number,f.view.url)}}catch{}for(let o of t.filter(g=>g.type==="project"&&g.repoTargets?.length)){let g=await ue(e,o.id);g.status!=="closed"&&(g.status=an(g),g.pullRequest=cn(g),await re(e,g))}return t.map(o=>ss(r,o))}async function is(e,t){let r=await ie(e,t);return await ge(r),await Qe(r.worktreePath),r.pullRequest.number?(await ft(e,r),{disposition:"synced",task:r}):{disposition:(await Zr(e,r)).discovered?"discovered":"not_found",task:r}}function tn(e,t,r){return{kind:"openPullRequest",taskId:e.id,watch:t,disposition:r,prNumber:e.pullRequest.number??0,url:e.pullRequest.url??"",status:e.status,mergeable:e.pullRequest.mergeable,requiredChecksSummary:Zi(e.pullRequest)}}function an(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(Sl)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function rn(e,t){let r=await Xi(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 ss(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):!!t.pullRequest.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function lr(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 cn(e){let t=(e.repoTargets??[]).filter(s=>s.status==="ready"),r=t.find(s=>s.repoId===e.selectedRepoTargetId);return r?.pullRequest.number?r.pullRequest:t.find(s=>s.pullRequest.number)?.pullRequest??e.pullRequest}function Sl(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function ns(e,t){let r=await ie(e,t);if(r.pullRequest.number)try{r=await sn(e,t)}catch{}let s=await ji(e,r),o=r.sessionId?await Ye(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as Tl}from"node:fs/promises";async function os(e,t){let r=await ie(e,t),s=Jr(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await Tl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ie();async function as(e,t){let r=await ie(e,t);if(await ge(r),(await J("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Rl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Rl(e){let t=[],r=await J("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Cl(e);for(let o of s){let g=await ae("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(g.stdout.trimEnd())}return t.join(`
122
122
 
123
123
  `)}async function Cl(e){return(await J("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
124
- `).map(r=>r.trim()).filter(r=>r.length>0)}async function cs(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await Ye(e,r.sessionId).catch(o=>{throw Pl(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 Jt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Pl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Il}from"node:child_process";async function ls(e,t){let r=await ie(e,t);await ge(r);let o=(await ve(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let g=[...o,r.worktreePath];return await xl(g,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:g}}async function xl(e,t){await new Promise((r,s)=>{let[o,...g]=e,y=Il(o,g,{cwd:t,stdio:"inherit"});y.on("error",s),y.on("exit",n=>{if(n===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${n??"unknown"}.`))})})}Fe();import{mkdir as El}from"node:fs/promises";import Al from"node:path";we();Ie();async function ds(e,t){let r=await ie(e,t);if(await ge(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 xt(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 ve(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 re(e,r);let g=[];for(let y of o){let n=new Date().toISOString(),c=await ae("sh",["-lc",y],{cwd:r.worktreePath}),h=new Date().toISOString(),k=c.exitCode??1;if(g.push({command:y,startedAt:n,finishedAt:h,exitCode:k}),k!==0)return r.checks.results=g,r.checks.status="failed",r.checks.lastRunAt=h,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${y}`,await ln(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=g,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await ln(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function ln(e,t){let r=Lt(e,t.artifacts.checkSummaryPath);r&&(await El(Al.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}))}we();async function us(e,t){let r=await ie(e,t);await ge(r);let s=await xt(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 Ci(r.worktreePath),await Pi(r.worktreePath,o);let g=await tr(r.worktreePath);return r.lastCommit={sha:g.sha,message:g.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await re(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:g.sha,message:g.message}}we();we();async function dn(e,t,r){let s=[];try{if(t.sessionId){let o=await Ye(e,t.sessionId);await wi(e.repoRoot,o.sessionName),t.cleanup.paneClosedAt=new Date().toISOString()}}catch(o){s.push(o instanceof Error?o.message:"Failed to close tmux session.")}if(t.cleanup.preservedWorktree=r.preserveWorktree,!r.preserveWorktree)try{await Ei(e.repoRoot,t.worktreePath),t.cleanup.worktreeRemovedAt=new Date().toISOString()}catch(o){s.push(o instanceof Error?o.message:"Failed to remove worktree.")}t.cleanup.warning=s.length>0?s.join(" "):null,await re(e,t)}async function Bt(e,t,r){let s=await ie(e,t);if(await ge(s),s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot merge from status "${s.status}".`);if(!s.pullRequest.number)throw new Error(`Task ${s.id} does not have a tracked pull request.`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before merging.`);if(!await rr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before merging.`);if((await tr(s.worktreePath)).sha!==s.lastCommit.sha)throw new Error(`Task ${s.id} local HEAD does not match the tracked task commit. Sync or commit before merging.`);await Qe(s.worktreePath),await ft(e,s);let g=Dl(s);if(g.length>0)throw new Error(`Task ${s.id} pull request is not merge-ready: ${g.join("; ")}.`);let n=(await ve(e)).github?.mergeMethod??"squash";return await Gi(s,n),s.pullRequest.status="merged",s.status="merged",s.lastFailureReason=null,await re(e,s),await dn(e,s,r),{kind:"mergeTask",taskId:s.id,status:s.status,prNumber:s.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:s.cleanup.warning}}function Dl(e){let t=[],r=e.pullRequest;r.status!=="open"&&t.push(`PR is ${r.status??"unknown"}`),r.mergeable||t.push(`GitHub reports merge state ${r.mergeStateStatus??"unknown"}`),r.lastSyncedHeadSha!==e.lastCommit?.sha&&t.push("local task commit is not synced to the PR head"),r.requiredChecks.length===0&&t.push("no GitHub checks reported");for(let s of["failed","pending","unknown"]){let o=r.requiredChecks.filter(g=>g.status===s).map(g=>g.name);o.length>0&&t.push(`${s} checks: ${o.join(", ")}`)}return pt(r)||t.push("required checks are not passing"),[...new Set(t)]}ct();ht();It();kt();Dt();Nt();Ie();import Nl from"node:path";import{stat as jl}from"node:fs/promises";async function bn(e,t){let r=Nl.resolve(e.workspaceRoot,t);if(!(await jl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Nt(),kn)).then(({addWorkspace:y})=>y(e,t)),g=o.repos[0];if(!g||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:g,workspaceId:o.workspace.id,created:o.created}}async function yn(e){return{kind:"listRepos",repos:await ut(e)}}async function vn(e,t){let r=await Le(e,t),o=(await Me(e)).filter(h=>h.primaryRepoId===t),g=o.filter(h=>h.status==="active"),y=await Ne(e,{repoId:t});if(g.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(y.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(h=>dr(e,h.id))),await vi(e,t);let n=await Ce(e);await at(e,{...n,repoIds:n.repoIds.filter(h=>h!==t)});let c=await De({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Pe({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}ht();we();async function Sn(e,t,r){let[s,o]=await Promise.all([ie(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 g=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await re(e,{...s,linkedRepoIds:g}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:g}}async function Tn(e,t){let r=await ie(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Le(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Nt();async function Rn(e,t){switch(e.kind){case"addWorkspace":return $t(t.paths,e.path);case"addRepo":return bn(t.paths,e.path);case"listRepos":return yn(t.paths);case"removeRepo":return vn(t.paths,e.repoId);case"listWorkspaces":return hs(t.paths,{archived:e.archived});case"archiveWorkspace":return Ft(t.paths,e.workspaceId);case"restoreWorkspace":return fs(t.paths,e.workspaceId);case"removeWorkspace":return Wt(t.paths,e.workspaceId);case"createTask":return Wi(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?Ne(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):Ne(t.paths);case"attachTask":return Hi(t.paths,e.taskId);case"addTaskLink":return Sn(t.paths,e.taskId,e.repoId);case"listTaskLinks":return Tn(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return ns(t.paths,e.taskId);case"showSelectedTask":return ns(t.paths,qe(t,"show"));case"streamTaskLogs":return os(t.paths,e.taskId);case"streamSelectedTaskLogs":return os(t.paths,qe(t,"logs"));case"showTaskDiff":return as(t.paths,e.taskId);case"showSelectedTaskDiff":return as(t.paths,qe(t,"diff"));case"focusTask":return cs(t.paths,e.taskId);case"focusSelectedTask":return cs(t.paths,qe(t,"focus"));case"openTask":return ls(t.paths,e.taskId);case"openSelectedTask":return ls(t.paths,qe(t,"open"));case"runChecks":return ds(t.paths,e.taskId);case"runSelectedTaskChecks":return ds(t.paths,qe(t,"check"));case"commitTask":return us(t.paths,e.taskId);case"commitSelectedTask":return us(t.paths,qe(t,"commit"));case"openPullRequest":return Ot(t.paths,e.taskId,{watch:e.watch});case"openSelectedTaskPullRequest":return Ot(t.paths,qe(t,"pr"),{watch:e.watch});case"mergeTask":return Bt(t.paths,e.taskId,{preserveWorktree:e.preserveWorktree});case"mergeSelectedTask":return Bt(t.paths,qe(t,"merge"),{preserveWorktree:e.preserveWorktree});case"help":return{kind:"help",text:pe()};case"exit":return{kind:"exit"};default:return Hl(e)}}function Hl(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function qe(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>'.`)}Fe();import{mkdir as je,readFile as Ul}from"node:fs/promises";import Se from"node:path";function Ke(e){let t=Se.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:Se.join(t,"index.json"),reposDir:Se.join(t,"repos"),workspacesDir:Se.join(t,"workspaces"),sessionsDir:Se.join(t,"sessions"),runtimeDir:Se.join(t,"runtime"),uiStateFile:Se.join(t,"runtime","ui-state.json"),tasksDir:Se.join(t,"tasks"),jobsDir:Se.join(t,"jobs"),logsDir:Se.join(t,"logs"),artifactsDir:Se.join(t,"artifacts"),worktreesDir:Se.join(t,"worktrees"),configFile:Se.join(t,"config.json")}}ct();async function yt(e){let t=Ke(e);await je(t.craigDir,{recursive:!0}),await Promise.all([je(t.reposDir,{recursive:!0}),je(t.workspacesDir,{recursive:!0}),je(t.sessionsDir,{recursive:!0}),je(t.runtimeDir,{recursive:!0}),je(t.tasksDir,{recursive:!0}),je(t.jobsDir,{recursive:!0}),je(t.logsDir,{recursive:!0}),je(t.artifactsDir,{recursive:!0}),je(t.worktreesDir,{recursive:!0})]);try{let o=await Ul(t.indexFile,"utf8"),g=JSON.parse(o);return jr(g,e,t.indexFile)}catch(o){if(!ql(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 ql(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function Cn(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(`
124
+ `).map(r=>r.trim()).filter(r=>r.length>0)}async function cs(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await Ye(e,r.sessionId).catch(o=>{throw Pl(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 Jt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Pl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Il}from"node:child_process";async function ls(e,t){let r=await ie(e,t);await ge(r);let o=(await ve(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let g=[...o,r.worktreePath];return await xl(g,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:g}}async function xl(e,t){await new Promise((r,s)=>{let[o,...g]=e,y=Il(o,g,{cwd:t,stdio:"inherit"});y.on("error",s),y.on("exit",n=>{if(n===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${n??"unknown"}.`))})})}Fe();import{mkdir as El}from"node:fs/promises";import Al from"node:path";we();Ie();async function ds(e,t){let r=await ie(e,t);if(await ge(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 xt(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 ve(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 re(e,r);let g=[];for(let y of o){let n=new Date().toISOString(),c=await ae("sh",["-lc",y],{cwd:r.worktreePath}),f=new Date().toISOString(),k=c.exitCode??1;if(g.push({command:y,startedAt:n,finishedAt:f,exitCode:k}),k!==0)return r.checks.results=g,r.checks.status="failed",r.checks.lastRunAt=f,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${y}`,await ln(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=g,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await ln(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function ln(e,t){let r=Lt(e,t.artifacts.checkSummaryPath);r&&(await El(Al.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}))}we();async function us(e,t){let r=await ie(e,t);await ge(r);let s=await xt(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 Ci(r.worktreePath),await Pi(r.worktreePath,o);let g=await tr(r.worktreePath);return r.lastCommit={sha:g.sha,message:g.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await re(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:g.sha,message:g.message}}we();we();async function dn(e,t,r){let s=[];try{if(t.sessionId){let o=await Ye(e,t.sessionId);await wi(e.repoRoot,o.sessionName),t.cleanup.paneClosedAt=new Date().toISOString()}}catch(o){s.push(o instanceof Error?o.message:"Failed to close tmux session.")}if(t.cleanup.preservedWorktree=r.preserveWorktree,!r.preserveWorktree)try{await Ei(e.repoRoot,t.worktreePath),t.cleanup.worktreeRemovedAt=new Date().toISOString()}catch(o){s.push(o instanceof Error?o.message:"Failed to remove worktree.")}t.cleanup.warning=s.length>0?s.join(" "):null,await re(e,t)}async function Bt(e,t,r){let s=await ie(e,t);if(await ge(s),s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot merge from status "${s.status}".`);if(!s.pullRequest.number)throw new Error(`Task ${s.id} does not have a tracked pull request.`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before merging.`);if(!await rr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before merging.`);if((await tr(s.worktreePath)).sha!==s.lastCommit.sha)throw new Error(`Task ${s.id} local HEAD does not match the tracked task commit. Sync or commit before merging.`);await Qe(s.worktreePath),await ft(e,s);let g=Dl(s);if(g.length>0)throw new Error(`Task ${s.id} pull request is not merge-ready: ${g.join("; ")}.`);let n=(await ve(e)).github?.mergeMethod??"squash";return await Gi(s,n),s.pullRequest.status="merged",s.status="merged",s.lastFailureReason=null,await re(e,s),await dn(e,s,r),{kind:"mergeTask",taskId:s.id,status:s.status,prNumber:s.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:s.cleanup.warning}}function Dl(e){let t=[],r=e.pullRequest;r.status!=="open"&&t.push(`PR is ${r.status??"unknown"}`),r.mergeable||t.push(`GitHub reports merge state ${r.mergeStateStatus??"unknown"}`),r.lastSyncedHeadSha!==e.lastCommit?.sha&&t.push("local task commit is not synced to the PR head"),r.requiredChecks.length===0&&t.push("no GitHub checks reported");for(let s of["failed","pending","unknown"]){let o=r.requiredChecks.filter(g=>g.status===s).map(g=>g.name);o.length>0&&t.push(`${s} checks: ${o.join(", ")}`)}return pt(r)||t.push("required checks are not passing"),[...new Set(t)]}ct();ht();It();kt();Dt();Nt();Ie();import Nl from"node:path";import{stat as jl}from"node:fs/promises";async function bn(e,t){let r=Nl.resolve(e.workspaceRoot,t);if(!(await jl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Nt(),kn)).then(({addWorkspace:y})=>y(e,t)),g=o.repos[0];if(!g||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:g,workspaceId:o.workspace.id,created:o.created}}async function yn(e){return{kind:"listRepos",repos:await ut(e)}}async function vn(e,t){let r=await Le(e,t),o=(await Me(e)).filter(f=>f.primaryRepoId===t),g=o.filter(f=>f.status==="active"),y=await Ne(e,{repoId:t});if(g.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(y.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(f=>dr(e,f.id))),await vi(e,t);let n=await Ce(e);await at(e,{...n,repoIds:n.repoIds.filter(f=>f!==t)});let c=await De({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Pe({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}ht();we();async function Sn(e,t,r){let[s,o]=await Promise.all([ie(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 g=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await re(e,{...s,linkedRepoIds:g}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:g}}async function Tn(e,t){let r=await ie(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Le(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Nt();async function Rn(e,t){switch(e.kind){case"addWorkspace":return $t(t.paths,e.path);case"addRepo":return bn(t.paths,e.path);case"listRepos":return yn(t.paths);case"removeRepo":return vn(t.paths,e.repoId);case"listWorkspaces":return hs(t.paths,{archived:e.archived});case"archiveWorkspace":return Ft(t.paths,e.workspaceId);case"restoreWorkspace":return fs(t.paths,e.workspaceId);case"removeWorkspace":return Wt(t.paths,e.workspaceId);case"createTask":return Wi(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?Ne(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):Ne(t.paths);case"attachTask":return Hi(t.paths,e.taskId);case"addTaskLink":return Sn(t.paths,e.taskId,e.repoId);case"listTaskLinks":return Tn(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return ns(t.paths,e.taskId);case"showSelectedTask":return ns(t.paths,qe(t,"show"));case"streamTaskLogs":return os(t.paths,e.taskId);case"streamSelectedTaskLogs":return os(t.paths,qe(t,"logs"));case"showTaskDiff":return as(t.paths,e.taskId);case"showSelectedTaskDiff":return as(t.paths,qe(t,"diff"));case"focusTask":return cs(t.paths,e.taskId);case"focusSelectedTask":return cs(t.paths,qe(t,"focus"));case"openTask":return ls(t.paths,e.taskId);case"openSelectedTask":return ls(t.paths,qe(t,"open"));case"runChecks":return ds(t.paths,e.taskId);case"runSelectedTaskChecks":return ds(t.paths,qe(t,"check"));case"commitTask":return us(t.paths,e.taskId);case"commitSelectedTask":return us(t.paths,qe(t,"commit"));case"openPullRequest":return Ot(t.paths,e.taskId,{watch:e.watch});case"openSelectedTaskPullRequest":return Ot(t.paths,qe(t,"pr"),{watch:e.watch});case"mergeTask":return Bt(t.paths,e.taskId,{preserveWorktree:e.preserveWorktree});case"mergeSelectedTask":return Bt(t.paths,qe(t,"merge"),{preserveWorktree:e.preserveWorktree});case"help":return{kind:"help",text:pe()};case"exit":return{kind:"exit"};default:return Hl(e)}}function Hl(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function qe(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>'.`)}Fe();import{mkdir as je,readFile as Ul}from"node:fs/promises";import Se from"node:path";function Ke(e){let t=Se.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:Se.join(t,"index.json"),reposDir:Se.join(t,"repos"),workspacesDir:Se.join(t,"workspaces"),sessionsDir:Se.join(t,"sessions"),runtimeDir:Se.join(t,"runtime"),uiStateFile:Se.join(t,"runtime","ui-state.json"),tasksDir:Se.join(t,"tasks"),jobsDir:Se.join(t,"jobs"),logsDir:Se.join(t,"logs"),artifactsDir:Se.join(t,"artifacts"),worktreesDir:Se.join(t,"worktrees"),configFile:Se.join(t,"config.json")}}ct();async function yt(e){let t=Ke(e);await je(t.craigDir,{recursive:!0}),await Promise.all([je(t.reposDir,{recursive:!0}),je(t.workspacesDir,{recursive:!0}),je(t.sessionsDir,{recursive:!0}),je(t.runtimeDir,{recursive:!0}),je(t.tasksDir,{recursive:!0}),je(t.jobsDir,{recursive:!0}),je(t.logsDir,{recursive:!0}),je(t.artifactsDir,{recursive:!0}),je(t.worktreesDir,{recursive:!0})]);try{let o=await Ul(t.indexFile,"utf8"),g=JSON.parse(o);return jr(g,e,t.indexFile)}catch(o){if(!ql(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 ql(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function Cn(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
125
  `);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
126
  `);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
127
  `);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(`
@@ -132,7 +132,7 @@ fragment PrFields on PullRequest {
132
132
  `);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
133
  `);case"openPullRequest":return[`${Kl(e.disposition,e.watch)} PR for ${e.taskId}`,`PR: #${e.prNumber} ${e.url}`,`Status: ${e.status}`,`Mergeable: ${e.mergeable}`,`Checks: ${e.requiredChecksSummary}`].join(`
134
134
  `);case"mergeTask":return[`Merged task ${e.taskId} from PR #${e.prNumber}`,`Status: ${e.status}`,`Preserved worktree: ${e.preservedWorktree}`,`Cleanup warning: ${e.cleanupWarning??"none"}`].join(`
135
- `);default:return Vl(e)}}function Kl(e,t){return t?"Watched":e==="created"?"Created":e==="discovered"?"Discovered":"Synced"}function zl(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 Vl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function Gl(e){return e.checks.status}function Xl(e){return e.pullRequest.number?`#${e.pullRequest.number}:${e.pullRequest.status??"unknown"}`:"-"}ht();It();kt();import{createRequire as $h}from"node:module";import{readdir as Fh,stat as Wh}from"node:fs/promises";import Tt from"node:path";we();Dt();Nt();Ie();import{readFile as Yl,stat as Jl}from"node:fs/promises";import ps from"node:path";var Ql=200*1024,Zl=500*1024,ur="100000";async function In(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return ed(e,t,r);try{let s=et(r.selectedFilePath??null,t.filePaths),o=et(r.selectedDiffPath??null,t.diffPaths),g=o?await jt(e.worktreePath):null,[y,n]=await Promise.all([fr(e.worktreePath,s),o?gs(e.worktreePath,o,t.diffRows,g):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),c=o?{[o]:n}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:y,selectedDiff:n,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function ed(e,t,r){let s=et(r.selectedFilePath??null,t.filePaths),o=et(r.selectedDiffPath??null,t.diffPaths),[g,y]=await Promise.all([En(e,s),(async()=>{if(!o)return me("No diff selected","No local changes found.","empty");let c=hr(e,o),h=c?await jt(c.target.worktreePath).catch(()=>null):null;return An(e,o,t.diffRows,h)})()]),n=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:n,selectedFile:g,selectedDiff:y}}async function xn(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return td(e,t);try{await ge(e);let r=await jt(e.worktreePath),[s,o]=await Promise.all([Dn(e.worktreePath),Ln(e.worktreePath,r)]),g=[...new Set(o.map(a=>a.path))],y=et(t.selectedFilePath??null,s),n=et(t.selectedDiffPath??null,g),[c,h]=await Promise.all([fr(e.worktreePath,y),n?gs(e.worktreePath,n,o,r):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),k=n?{[n]:h}:{};return{taskId:e.id,fileRows:Bn(s),filePaths:s,diffRows:o,diffPaths:g,diffContents:k,selectedFilePath:y,selectedDiffPath:n,selectedFile:c,selectedDiff:h,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 td(e,t){let r=(e.repoTargets??[]).filter(w=>w.status==="ready"),s=await Promise.all(r.map(async w=>{let l=await jt(w.worktreePath).catch(()=>null),[m,_]=await Promise.all([Dn(w.worktreePath).catch(()=>[]),Ln(w.worktreePath,l).catch(()=>[])]);return{target:w,baseRef:l,targetFiles:m,targetDiffRows:_}})),o=[],g=[];for(let{target:w,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(_=>`${w.repoId}/${_}`)),g.push(...m.map(_=>({..._,path:`${w.repoId}/${_.path}`})));let y=[...new Set(g.map(w=>w.path))].sort(),n=et(t.selectedFilePath??null,o),c=et(t.selectedDiffPath??null,y),[h,k]=await Promise.all([En(e,n),(async()=>{if(!c)return me("No diff selected","No local changes found.","empty");let w=hr(e,c),l=w?s.find(m=>m.target.repoId===w.target.repoId):null;return An(e,c,g,l?.baseRef??null)})()]),a=c?{[c]:k}:{};return{taskId:e.id,fileRows:Bn(o),filePaths:o,diffRows:g,diffPaths:y,diffContents:a,selectedFilePath:n,selectedDiffPath:c,selectedFile:h,selectedDiff:k,error:null}}async function En(e,t){let r=hr(e,t);if(!r)return me("No file selected","No Git-visible files found.","empty");let s=await fr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function An(e,t,r,s=null){let o=hr(e,t);return o?{...await gs(o.target.worktreePath,o.relativePath,r.filter(y=>y.path.startsWith(`${o.target.repoId}/`)).map(y=>({...y,path:y.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:me(t,"Repo target is unavailable.","error",t)}function hr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),g=(e.repoTargets??[]).find(y=>y.repoId===r&&y.status==="ready")??null;return!g||o.length===0?null:{target:g,relativePath:o}}async function Dn(e){let t=await J("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return $n(t.stdout)}async function Ln(e,t){let[r,s,o,g]=await Promise.all([rd(e,t),Pn(e,"staged"),Pn(e,"unstaged"),sd(e)]);return[...r,...s,...o,...g]}async function rd(e,t){if(!t)return[];let[r,s]=await Promise.all([J("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),J("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Mn(r.stdout),g=On(s.stdout);return o.map(y=>{let n=g.get(y.path)??{additions:null,deletions:null};return{group:"branch",path:y.path,status:y.status,additions:n.additions,deletions:n.deletions}}).sort((y,n)=>y.path.localeCompare(n.path))}async function Pn(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([J("git",[...r,"--name-status"],{cwd:e}),J("git",[...r,"--numstat"],{cwd:e})]),g=Mn(s.stdout),y=On(o.stdout);return g.map(n=>{let c=y.get(n.path)??{additions:null,deletions:null};return{group:t,path:n.path,status:n.status,additions:c.additions,deletions:c.deletions}}).sort((n,c)=>n.path.localeCompare(c.path))}async function sd(e){let t=await J("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=$n(t.stdout);return await Promise.all(r.map(async o=>{let g=await fr(e,o),y=g.status==="ready"?id(g.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function Mn(e){return e.split(`
135
+ `);default:return Vl(e)}}function Kl(e,t){return t?"Watched":e==="created"?"Created":e==="discovered"?"Discovered":"Synced"}function zl(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 Vl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function Gl(e){return e.checks.status}function Xl(e){return e.pullRequest.number?`#${e.pullRequest.number}:${e.pullRequest.status??"unknown"}`:"-"}ht();It();kt();import{createRequire as $h}from"node:module";import{readdir as Fh,stat as Wh}from"node:fs/promises";import Tt from"node:path";we();Dt();Nt();Ie();import{readFile as Yl,stat as Jl}from"node:fs/promises";import ps from"node:path";var Ql=200*1024,Zl=500*1024,ur="100000";async function In(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return ed(e,t,r);try{let s=et(r.selectedFilePath??null,t.filePaths),o=et(r.selectedDiffPath??null,t.diffPaths),g=o?await jt(e.worktreePath):null,[y,n]=await Promise.all([fr(e.worktreePath,s),o?gs(e.worktreePath,o,t.diffRows,g):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),c=o?{[o]:n}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:y,selectedDiff:n,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function ed(e,t,r){let s=et(r.selectedFilePath??null,t.filePaths),o=et(r.selectedDiffPath??null,t.diffPaths),[g,y]=await Promise.all([En(e,s),(async()=>{if(!o)return me("No diff selected","No local changes found.","empty");let c=hr(e,o),f=c?await jt(c.target.worktreePath).catch(()=>null):null;return An(e,o,t.diffRows,f)})()]),n=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:n,selectedFile:g,selectedDiff:y}}async function xn(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return td(e,t);try{await ge(e);let r=await jt(e.worktreePath),[s,o]=await Promise.all([Dn(e.worktreePath),Ln(e.worktreePath,r)]),g=[...new Set(o.map(a=>a.path))],y=et(t.selectedFilePath??null,s),n=et(t.selectedDiffPath??null,g),[c,f]=await Promise.all([fr(e.worktreePath,y),n?gs(e.worktreePath,n,o,r):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),k=n?{[n]:f}:{};return{taskId:e.id,fileRows:Bn(s),filePaths:s,diffRows:o,diffPaths:g,diffContents:k,selectedFilePath:y,selectedDiffPath:n,selectedFile:c,selectedDiff:f,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 td(e,t){let r=(e.repoTargets??[]).filter(w=>w.status==="ready"),s=await Promise.all(r.map(async w=>{let l=await jt(w.worktreePath).catch(()=>null),[m,_]=await Promise.all([Dn(w.worktreePath).catch(()=>[]),Ln(w.worktreePath,l).catch(()=>[])]);return{target:w,baseRef:l,targetFiles:m,targetDiffRows:_}})),o=[],g=[];for(let{target:w,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(_=>`${w.repoId}/${_}`)),g.push(...m.map(_=>({..._,path:`${w.repoId}/${_.path}`})));let y=[...new Set(g.map(w=>w.path))].sort(),n=et(t.selectedFilePath??null,o),c=et(t.selectedDiffPath??null,y),[f,k]=await Promise.all([En(e,n),(async()=>{if(!c)return me("No diff selected","No local changes found.","empty");let w=hr(e,c),l=w?s.find(m=>m.target.repoId===w.target.repoId):null;return An(e,c,g,l?.baseRef??null)})()]),a=c?{[c]:k}:{};return{taskId:e.id,fileRows:Bn(o),filePaths:o,diffRows:g,diffPaths:y,diffContents:a,selectedFilePath:n,selectedDiffPath:c,selectedFile:f,selectedDiff:k,error:null}}async function En(e,t){let r=hr(e,t);if(!r)return me("No file selected","No Git-visible files found.","empty");let s=await fr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function An(e,t,r,s=null){let o=hr(e,t);return o?{...await gs(o.target.worktreePath,o.relativePath,r.filter(y=>y.path.startsWith(`${o.target.repoId}/`)).map(y=>({...y,path:y.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:me(t,"Repo target is unavailable.","error",t)}function hr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),g=(e.repoTargets??[]).find(y=>y.repoId===r&&y.status==="ready")??null;return!g||o.length===0?null:{target:g,relativePath:o}}async function Dn(e){let t=await J("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return $n(t.stdout)}async function Ln(e,t){let[r,s,o,g]=await Promise.all([rd(e,t),Pn(e,"staged"),Pn(e,"unstaged"),sd(e)]);return[...r,...s,...o,...g]}async function rd(e,t){if(!t)return[];let[r,s]=await Promise.all([J("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),J("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Mn(r.stdout),g=On(s.stdout);return o.map(y=>{let n=g.get(y.path)??{additions:null,deletions:null};return{group:"branch",path:y.path,status:y.status,additions:n.additions,deletions:n.deletions}}).sort((y,n)=>y.path.localeCompare(n.path))}async function Pn(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([J("git",[...r,"--name-status"],{cwd:e}),J("git",[...r,"--numstat"],{cwd:e})]),g=Mn(s.stdout),y=On(o.stdout);return g.map(n=>{let c=y.get(n.path)??{additions:null,deletions:null};return{group:t,path:n.path,status:n.status,additions:c.additions,deletions:c.deletions}}).sort((n,c)=>n.path.localeCompare(c.path))}async function sd(e){let t=await J("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=$n(t.stdout);return await Promise.all(r.map(async o=>{let g=await fr(e,o),y=g.status==="ready"?id(g.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function Mn(e){return e.split(`
136
136
  `).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 On(e){let t=new Map;for(let r of e.split(`
137
137
  `)){let s=r.trim();if(!s)continue;let[o="-",g="-",...y]=s.split(" "),n=y.join(" ");n&&t.set(n,{additions:o==="-"?null:Number(o),deletions:g==="-"?null:Number(g)})}return t}async function jt(e){return(await ae("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await ae("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function fr(e,t){if(!t)return me("No file selected","No Git-visible files found.","empty");let r=nd(e,t);try{let s=await Jl(r);if(s.size>Ql)return me(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await Yl(r);return od(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(`
138
138
  `),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 gs(e,t,r,s=null){if(!t)return me("No diff selected","No local changes found.","empty");let o=[],g=r.filter(n=>n.path===t).map(n=>n.group);if(g.includes("branch")){let n=s??await jt(e);if(n){let c=await J("git",["diff","--stat","--patch",`--unified=${ur}`,`${n}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
@@ -143,8 +143,9 @@ ${n.stdout.trimEnd()}`)}let y=o.join(`
143
143
 
144
144
  `);return y.length>Zl?me(t,"Diff is above the 500 KB inline preview limit.","too_large",t,y.length):y.includes("\0")?me(t,"Binary diff preview is not available in Craig.","binary",t,y.length):{path:t,status:y.length>0?"ready":"empty",title:t,lines:y.length>0?y.split(`
145
145
  `):["No diff for this file."],byteLength:y.length}}function Bn(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let g=0;g<o.length-1;g+=1){let y=o.slice(0,g+1).join("/");r.has(y)||(r.add(y),t.push({kind:"directory",path:y,depth:g,label:o[g]??y}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function et(e,t){return e&&t.includes(e)?e:t[0]??null}function id(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function $n(e){return[...new Set(e.split(`
146
- `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function nd(e,t){let r=ps.resolve(e,t),s=ps.resolve(e);if(r!==s&&!r.startsWith(`${s}${ps.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function od(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}}we();import{access as ad}from"node:fs/promises";async function Fn(e,t){let r=await ie(e,t),s=await cd(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await re(e,o),o}async function cd(e){try{return await ad(e),!0}catch{return!1}}Ae();Ie();import qt from"node:path";function Wn(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 Nn="\u{F024B} ",jn="\u{F0DCF} ",Hn="\u25CB",Un="\uEA64",qn="\uEAFE",Kn="\uEBDA",ms="\u25CB",_s="\u25CF",ws="\u2713",ks="\u2715";function zn(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();kt();Ae();var ld=["tasks","center","inspector","actions"],Jn=["agent","terminal"],Qn=[],ne="inspection",c_=[...Jn,...Qn],Zn=["commit","push","create-pr","refresh-checks","merge","close-task"],dd=["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=Pd(e?.openInspectionKind)??r,o=mt(t);return{inputMode:xd(e?.inputMode),focusedRegion:Rd(e?.focusedRegion),selectedRepoId:ze(e?.selectedRepoId),selectedWorkspaceId:ze(e?.selectedWorkspaceId),selectedTaskId:ze(e?.selectedTaskId),selectedPtyTabId:ze(e?.selectedPtyTabId),selectedLeftItemId:Fd(ze(e?.selectedTaskId)),activeTab:r?ne:ze(e?.activeTab)??"agent",preferredPtyTabKind:Id(e?.preferredPtyTabKind),inspectorSection:Ht(e?.inspectorSection,eo,"task"),inspectionMode:Cd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:ze(e?.selectedFileTreePath),selectedFilePath:ze(e?.selectedFilePath),selectedDiffPath:ze(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:Ht(e?.selectedActionId,Zn,"commit"),selectedProjectTargetId:null,selectedRunner:Ed(e?.selectedRunner,o,nt(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:ud(),centerZoomed:!1}}function ud(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function so(e,t){return{...e??We(),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 _r(e,t,r={}){let s=Bd(e,t),o=ho(s),g=(o?.kind==="workspace"?t.workspaces?.find(k=>k.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(k=>k.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,n=((o?.kind==="repo"?t.repos.find(k=>k.id===o.id)??null:o?.kind==="task"?t.repos.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(g?.kind==="project"?t.repos.find(k=>k.id===e.selectedRepoId&&g.discoveredRepoIds?.includes(k.id))??null:null)??(g?.kind!=="project"?t.repos.find(k=>k.id===g?.primaryRepoId)??null:null)??t.repos.find(k=>k.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=g?t.tasks.filter(k=>k.workspaceId===g.id):n?t.tasks.filter(k=>k.repoId===n):[],h=(o?.kind==="task"?c.find(k=>k.id===o.id)??null:null)??c.find(k=>k.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:g?.id??null,selectedRepoId:n,selectedTaskId:h?.id??null,...Dd(h,e.activeTab,e.selectedPtyTabId),selectedFilePath:vd(e,t,h?.id??null),...Ld(e,t,h?.id??null),selectedDiffPath:yd(e,t,h?.id??null),inspectorSection:Ht(e.inspectorSection,eo,"task")}}function io(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return hd(t)?G({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null},changed:!0,detachTerminal:!0}):G({state:e});if(t==="q"||t==="Q")return G({state:e,exit:!0});if(t==="ESCAPE")return G({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return G({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 G({state:{...e,selectedRunner:Ss(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Vn(e,1);if(t==="SHIFT_TAB"||t==="[")return Vn(e,-1);if(t==="z"||t==="Z")return G({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?tt(e,-1,r):Gn(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?tt(e,1,r):Gn(e,1,r);if(t==="PAGE_UP")return tt(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return tt(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return tt(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return tt(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??le,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,g=o===s.length-1?null:s[o+1];return G({state:{...e,centerTabRunner:g,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Ad(e,t);return G({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 G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&mr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Wd(e.selectedLeftItemId)&&e.selectedWorkspaceId)return G({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Yn(e.activeTab,r.ptyTabIds??[]))return G({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return bs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xn(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return bs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xn(e,1)}if(rt(t)){if(e.focusedRegion==="tasks"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId))){let s=fo(e.selectedLeftItemId),o=po(e.selectedLeftItemId);return G({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 G({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&mr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&Yn(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:wr(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return G({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 G({state:_d({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return G({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"?G({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?G({state:e}):e.selectedActionId==="create-pr"?G({state:{...e,actionMessage:null},changed:!0,syncPullRequest:!0}):e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="merge"?G({state:{...e,actionMessage:null},changed:!0,mergeTask:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return G({state:e})}function Ut(e,t){return{...e,terminal:t}}function no(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function hd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function rt(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
147
- `}function oo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function ao(e){return co(e)||wr(e)!==null}function fd(e){return Qn.includes(e)}function co(e){return Jn.includes(e)}function lo(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var pd=["tasks","center","inspector"];function Vn(e,t){return pr(e,"focusedRegion",pd,t)}function bs(e,t,r){let s=pr(e,"activeTab",r&&r.length>0?r:Od(e),t);return!s.changed||fd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:wr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Gn(e,t,r){if(e.focusedRegion==="tasks")return gd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return bs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=gr(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?gr(e,"selectedProjectTargetId",r.projectTargetIds,t):pr(e,"selectedActionId",dd,t)}return pr(e,"selectedActionId",Zn,t)}function gd(e,t,r){let s=gr(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},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 g=fo(s.state.selectedLeftItemId);if(g)return{...s,state:{...s.state,selectedRepoId:g}};let y=po(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function tt(e,t,r){if(t===0)return G({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=gr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return G({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return wd(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return kd(e,t,r)}return G({state:e})}function md(e,t){if(e.inspectionMode===t)return G({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return G({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 Xn(e,t){return md(e,Td(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 G({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,g=s.indexOf(o??""),y=Ve(g===-1?0:g+t,0,s.length-1),n=s[y]??null;if(n===e.selectedFileTreePath)return G({state:e});let c=n!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(n);return G({state:{...e,selectedFileTreePath:n,selectedFilePath:c?n:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function _d(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 wd(e,t,r,s,o=10){let g=Math.max(0,s-Math.max(1,o)),y=Ve(e[t]+r,0,g);return y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function kd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return bd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,g=Math.max(0,s-Math.max(1,o)),y=e.diffScrollOffset+t,n=r.diffPathIds??[];if(n.length===0||!e.selectedDiffPath){let k=Ve(y,0,g);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}let c=n.indexOf(e.selectedDiffPath);if(c===-1){let k=Ve(y,0,g);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}if(t>0&&y>g){let k=n[c+1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===g?G({state:e}):G({state:{...e,diffScrollOffset:g,actionMessage:null},changed:!0})}if(t<0&&y<0){let k=n[c-1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?G({state:e}):G({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let h=Ve(y,0,g);return h===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:h,actionMessage:null},changed:!0})}function bd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,g=Math.max(0,s-Math.max(1,o)),y=Ve(e.diffScrollOffset+t,0,g),n=Sd(r.diffPathRanges??[],y)??e.selectedDiffPath;return y===e.diffScrollOffset&&n===e.selectedDiffPath?G({state:e}):G({state:{...e,diffScrollOffset:y,selectedDiffPath:n,actionMessage:null},changed:!0})}function yd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function vd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Sd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function pr(e,t,r,s){let o=r.indexOf(e[t]),g=Ve(o+s,0,r.length-1),y=r[g];return!y||y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function gr(e,t,r,s,o=!1){if(r.length===0)return G({state:e});let g=r.indexOf(e[t]??r[0]??""),y=Ve(g===-1?0:g+s,0,r.length-1),n=r[y]??null;return n===e[t]?G({state:e}):G({state:{...e,[t]:n,actionMessage:null},changed:!0,refreshInspection:o})}function Td(e,t,r){let s=t.indexOf(e);return t[Ve(s+r,0,t.length-1)]??e}function G(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,syncPullRequest:e.syncPullRequest??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,mergeTask:e.mergeTask??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function Ht(e,t,r){return t.includes(e??"")?e:r}function Rd(e){return e==="tabs"?"center":Ht(e,ld,"tasks")}function Cd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ht(e,to,t)}function Pd(e){return e==="file"||e==="diff"?e:null}function Id(e){return e==="terminal"?"terminal":"agent"}function xd(e){return e==="terminal"?"terminal":"control"}function Ed(e,t=[...le],r="codex"){return e&&_t(e)&&t.includes(e)?e:r}function Ss(e,t=le){let r=t.length>0?t:le,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function wr(e){let t=le.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Ad(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":wr(e.activeTab)??e.preferredPtyTabKind}function Dd(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(n=>n.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(n=>n.id===e.selectedPtyTabId)??null:null,g=e.ptyTabs.find(n=>n.id===t)??null;if(g)return{activeTab:g.id,selectedPtyTabId:g.id};if(co(t)){let c=e.ptyTabs.find(h=>h.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 y=o??s??e.ptyTabs[0]??null;return{activeTab:y?.id??ne,selectedPtyTabId:y?.id??null}}function Ld(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?Md(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Md(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 Od(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Yn(e,t){return t.includes(e)}function Bd(e,t){let r=$d(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 $d(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 ze(e){return typeof e=="string"?e:null}function Fd(e){return e?`task:${e}`:null}function mr(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 Wd(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 Ve(e,t,r){return Math.min(r,Math.max(t,e))}var br="empty",he={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=Hd(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,g=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],y=g.find(_=>_.id===e.selectedTaskId)??g[0]??null,n=y?.type==="project",c=ku(t.tasks),h=Kd(e,y),k=qd(e,y,h),a=k.find(_=>_.id===h)??k[0]??{id:"agent",label:"CODEX"},w=t.inspection?.taskId===y?.id?t.inspection:null,l=s?.name??"no repo",m=y?Te(y.runner):Te(e.selectedRunner);return{inputMode:e.inputMode,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 ${Te(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 [${Te(e.selectedRunner)}] Enter create task Esc pause ? help`:mr(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"?y===null?"n new task Tab tasks Esc pause ? help":h===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Te(e.centerTabRunner??y?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?n?"\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:qt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${qt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m,liveLabel:y?.status==="running"?"live":"idle"},leftTree:Nd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>bu(_,c[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:l,agent:m},centerTranscript:Ud(h,e,s,y,e.workspaceBrowser,w,r),tabs:k,rightContext:wu(s,y),rightInspection:iu(e,y,w)}}function Nd(e,t){let r=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return jd(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 g of s){let y=e.selectedLeftItemId===`workspace:${g.id}`;r.push({id:`workspace:${g.id}`,text:`${g.kind==="project"?"\u2261":"\u2013"} ${g.name??g.id}`,selected:y,focused:y&&e.focusedRegion==="tasks"});let n=g.kind==="project"?g.discoveredRepoIds??[]:[g.primaryRepoId],c=t.tasks.filter(h=>h.workspaceId===g.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let h of c){let k=e.selectedLeftItemId===`task:${h.id}`,a=k?"\u25B8":"\u2022",w=h.title.length>28?`${h.title.slice(0,25)}\u2026`:h.title,l={id:`task:${h.id}`,taskId:h.id,text:`${a} ${w}`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks"},m=ko(h);m&&(l.prBadge=m),r.push(l)}if(g.kind==="project"){let h=`new-task-workspace:${g.id}`,k=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Project Task [${Te(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}if(g.kind==="repo"){let h=`new-task:${g.primaryRepoId}`,k=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Task [${Te(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}else{r.push({text:` Repos (${n.length})`,indent:0,muted:!0});for(let h of n.slice(0,6)){let k=t.repos.find(a=>a.id===h);r.push({text:` \xB7 ${k?.name??h}`,indent:0,muted:!0})}n.length>6&&r.push({text:` \xB7 ${n.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 jd(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let g of r){let y=t.selectedLeftItemId===`repo:${g.id}`;e.push({id:`repo:${g.id}`,text:`\u2013 ${g.name}`,selected:y,focused:y&&t.focusedRegion==="tasks"});let n=s.filter(k=>k.repoId===g.id);if(n.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let k of n){let a=t.selectedLeftItemId===`task:${k.id}`,w=a?"\u25B8":"\u2022",l=k.title.length>28?`${k.title.slice(0,25)}\u2026`:k.title,m={id:`task:${k.id}`,taskId:k.id,text:`${w} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},_=ko(k);_&&(m.prBadge=_),e.push(m)}let c=`new-task:${g.id}`,h=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Te(t.selectedRunner)}]`,indent:2,selected:h,focused:h&&t.focusedRegion==="tasks",muted:!h})}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 Hd(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 Ud(e,t,r,s,o,g=null,y=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((h,k)=>{let a=k===o.selectedIndex?"\u25B8":" ",w=h.kind==="repo"?" [git repo]":"/";return`${a} ${h.name}${w}`});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=y?.kind==="project",h=c?y.name??"this workspace":r.name,k=c?"Project Task":"Task";return Oe([`No tasks in ${h}.`,"",`Press n or choose + New ${k} to create one with ${Te(t.selectedRunner)}.`])}let n=s.ptyTabs.find(c=>c.id===e)??null;return n?n.kind==="agent"?Oe([`${n.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([`${n.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"?Gd(s,g,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Xd(s,g,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 qd(e,t,r){let s=t?.ptyTabs.map(g=>({id:g.id,label:zd(g)}))??[];if(!t)return[{id:br,label:"EMPTY",active:r===br,focused:e.focusedRegion==="center"&&r===br}];let o=e.openInspectionKind||r===ne?[{id:ne,label:Vd(e)}]:[];return[...s,...o].map(g=>({...g,active:g.id===r,focused:e.focusedRegion==="center"&&g.id===r}))}function Kd(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:br}function zd(e){return e.title.toUpperCase()}function Vd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?qt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Gd(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:""},...Yd(s.lines,r,o)]}function Xd(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:""},...Jd(s.lines,r,o)]}function Oe(e){return e.map(t=>({text:t}))}function Yd(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((g,y)=>{let n=o+y+1;return{text:`${`${String(n).padStart(s," ")} \u2502 `}${g}`,segments:[{text:String(n).padStart(s," "),style:{fg:he.lineNumber}},{text:" \u2502 ",style:{fg:he.gutter}},...Ts(g,r)],tone:"default"}})}function Jd(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(g=>Zd(g,r))}function Qd(e){let t=[],r=0,s=0;for(let o of e){let g=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(g){r=Number.parseInt(g[1]??"0",10),s=Number.parseInt(g[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 Zd(e,t){let r=go(e.oldNumber),s=go(e.newNumber),o=e.kind==="delete"?r:s,g=e.kind==="delete"?{bg:"2a1111",fallbackFg:he.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:he.diffAdd}:null,y=`${o} \u2502 ${e.text}`,n=g?tu(Ts(e.text,t),g.bg,g.fallbackFg):Ts(e.text,t),c=g?{fg:he.lineNumber,bg:g.bg}:{fg:he.lineNumber},h=g?{fg:he.gutter,bg:g.bg}:{fg:he.gutter};return{text:y,segments:[{text:o,style:c},{text:" \u2502 ",style:h},...n],fullBleed:g!==null}}function go(e){return e===null?" ":String(e).padStart(4," ")}function wo(e){let t=qt.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"?eu(e):t==="markdown"?ru(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 eu(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:he.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:he.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:he.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:he.diffMeta}}]:[{text:e}]}function tu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function ru(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:he.markup,bold:!0}}]:Rs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Rs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let g=o[0],y=o.index??0;y>s&&r.push({text:e.slice(s,y)}),r.push({text:g,style:su(g)}),s=y+g.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function su(e){return e.startsWith("//")||e.startsWith("/*")?{fg:he.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:he.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:he.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:he.markup}:{fg:he.keyword}}function iu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(n=>n.repoId===s)??null:null,g=t?.type==="project"?bo(t.repoTargets??[]):o?.pullRequest??t?.pullRequest??null,y=[nu(e,g),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...au(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...fu(e,r)]}:{title:"",rows:[...y,...gu(e,r)]}}function nu(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 h=s[c];c>0&&o.push({text:" "}),o.push({text:h.label,style:{fg:h.active?"7aa2f7":"565f89"}})}let g=Cs(t),y=Ps(t?.requiredChecks??null);return o.push({text:" "},g,{text:" "},y),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function mo(e){return[{text:" "},Cs(e),{text:" "},Ps(e.requiredChecks??null)]}function ko(e){if(e.type==="project"&&e.repoTargets?.length){let t=bo(e.repoTargets);return t?mo(t):null}return e.pullRequest.number?mo(e.pullRequest):null}function bo(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:ou(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 ou(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:Hn,style:{fg:"565f89"}}:e.status==="merged"?{text:qn,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Kn,style:{fg:"f7768e"}}:{text:Un,style:{fg:"9ece6a"}}}function Ps(e){return!e||e.length===0?{text:ms,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:ks,style:{fg:"f7768e"}}:e.every(t=>t.status==="success"||t.status==="skipped")?{text:ws,style:{fg:"9ece6a"}}:{text:_s,style:{fg:"e0af68"}}}function au(e,t){return t?t.type==="project"&&t.repoTargets?.length?cu(e,t):yo("pr",t.branch,t.pullRequest):[{id:"review-empty",text:"No task selected.",muted:!0}]}var kr=32;function cu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let y of s){let n=o===y.repoId,c=e.focusedRegion==="inspector"&&n,h=y.repoId.startsWith("repo_")?y.repoId.slice(5):y.repoId;if(y.status!=="ready"){let a=y.failureReason?y.failureReason.slice(0,14):y.status,w=kr-a.length-1,l=h.length>w?h.slice(0,w-1)+"\u2026":h,m=kr-l.length-a.length;r.push({id:`project-review:${y.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:n,focused:c,muted:!0})}else{let k=Cs(y.pullRequest),a=Ps(y.pullRequest.requiredChecks),w=`${k.text} ${a.text}`,l=kr-w.length-1,m=h.length>l?h.slice(0,l-1)+"\u2026":h,_=kr-m.length-w.length,i=m+" ".repeat(Math.max(1,_));r.push({id:`project-review:${y.repoId}`,text:i+w,selected:n,focused:c,segments:[{text:i},{...k,text:k.text},{text:" "},{...a,text:a.text}]})}}let g=s.find(y=>y.repoId===o)??null;return g?.status==="ready"&&g.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...yo("target",g.branch,g.pullRequest))),r}function yo(e,t,r){let s=h=>`${e}-${h}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],g=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${g} Open in GitHub \u2197`,segments:[{text:g},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:g});let y=r.baseBranch??"?",n=r.headBranch??t;o.push({id:s("pr-branches"),text:`${y} \u2192 ${n}`,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 ${lu(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(du)):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 lu(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 du(e){let{icon:t,color:r}=uu(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," ")} ${hu(e.status)}`,color:r,muted:!1}}function uu(e){switch(e){case"success":return{icon:ws,color:"9ece6a"};case"pending":return{icon:_s,color:"e0af68"};case"failed":return{icon:ks,color:"f7768e"};case"skipped":return{icon:ms,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function hu(e){return e==="success"?"passing":e==="failed"?"failing":e}function fu(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(g=>[g.path,g.status])),s=pu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(g=>{let y=g.kind==="file"?r.get(g.path):void 0,n=y==="A"?"9ece6a":y==="M"?"e0af68":y==="D"?"f7768e":y==="??"?"565f89":void 0,c=g.kind==="directory"?e.collapsedFileTreePaths.includes(g.path)?Nn:jn:Wn(g.label),h=g.kind==="file"?zn(g.label):void 0,k=" ".repeat(g.depth),a=h?{text:c,style:{fg:h}}:{text:c},w=n?{text:g.label,style:{fg:n}}:{text:g.label},l=[{text:k},a,w];return{id:g.path,text:`${k}${c}${g.label}`,selected:g.path===o,focused:g.path===o&&e.focusedRegion==="inspector",muted:g.kind==="directory",segments:l}})}function pu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let g=1;g<o.length;g+=1)if(r.has(o.slice(0,g).join("/")))return!1;return!0})}function gu(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(mu(t))return _u(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(g=>g.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(g=>vo(g,e,t))))}return r}function mu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function _u(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 g=t.diffRows.filter(n=>n.path.startsWith(`${o}/`)),y=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:y,muted:!0});for(let n of["branch","staged","unstaged","untracked"]){let c=g.filter(h=>h.group===n);c.length!==0&&(r.push({id:`repo-diff:${o}:${n}`,text:` ${n}`,muted:!0}),r.push(...c.map(h=>vo(h,e,t,o.length+1))))}}return r}function vo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,g=e.deletions===null?"-":`-${e.deletions}`,y=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",n=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${n} ${o}/${g}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:y}}function wu(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Te(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:qt.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 ku(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function bu(e,t){return{name:Te(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 vt(e,t){return{width:Math.max(e??yr.width,yr.width),height:Math.max(t??yr.height,yr.height)}}import{spawn as Hu}from"node:child_process";import{createHash as Uu}from"node:crypto";import{createServer as qu,createConnection as Mo}from"node:net";import{openSync as Ku}from"node:fs";import{mkdir as zu,readFile as Ms,rm as gt,writeFile as Vu}from"node:fs/promises";import{tmpdir as Gu}from"node:os";import St from"node:path";import{createRequire as xu}from"node:module";var Co=Da(To(),1),yu=1e3,vu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Po(e){return new Co.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:yu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Io(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 xo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),g=r.baseY+r.cursorY,y=Math.max(0,r.baseY-t);for(let n=0;n<e.rows;n+=1){let c=r.getLine(y+n);if(!c){s.push({segments:[]});continue}let h=[];for(let k=0;k<e.cols;k+=1){let a=c.getCell(k,o);!a||a.getWidth()===0||h.push({text:a.getChars()||" ",style:Ru(a,y+n===g&&k===r.cursorX)})}s.push({segments:Su(Tu(h))})}return s}function Su(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&Iu(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};Eo(r.style)||(o.style=r.style),t.push(o)}return t}function Tu(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Eo(r.style))break;t-=1}return e.slice(0,t)}function Ru(e,t){let r={},s=Ro(e,"fg"),o=Ro(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 Ro(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"):vu[o]??Cu(o)}function Cu(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(Pu).map(g=>g.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 Pu(e){return e===0?0:55+e*40}function Iu(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 Eo(e){return Is(e)===""}var Eu=xu(import.meta.url),Au=/^CTRL_([A-Z])$/,Du="\x1B[6n",Lu="\x1B[c",Mu="\x1B[?u",Ou={ENTER:"\r",KP_ENTER:"\r",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 g=this.sessions.get(r);if(g)if(g.status!=="running")Es(g),this.sessions.delete(r);else return this.attachedTabId=r,g.scrollbackLines=0,Ao(g,s),this.getViewState(r);let y=this.createSession(t,r,s,o);return this.sessions.set(r,y),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=Bu(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&&Ao(r,t)}detach(){this.attachedTabId=null}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:xo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let g=this.spawn??Fu().spawn,y=Po(s),n=o??this.resolveSessionSpec(t,r),c=lt({...this.env,...n.env??{}}),{executable:h,args:k}=Wu(this.shell,n.command,{cwd:n.cwd,env:c}),a=g(h,k,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:n.cwd,env:Nu(c)}),w={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(a.onData(l=>{ju(a,l),xs(w.terminal,l).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(a.onExit(l=>{w.status="exited",xs(w.terminal,`\r
146
+ `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function nd(e,t){let r=ps.resolve(e,t),s=ps.resolve(e);if(r!==s&&!r.startsWith(`${s}${ps.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function od(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}}we();import{access as ad}from"node:fs/promises";async function Fn(e,t){let r=await ie(e,t),s=await cd(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await re(e,o),o}async function cd(e){try{return await ad(e),!0}catch{return!1}}Ae();Ie();import qt from"node:path";function Wn(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 Nn="\u{F024B} ",jn="\u{F0DCF} ",Hn="\u25CB",Un="\uEA64",qn="\uEAFE",Kn="\uEBDA",ms="\u25CB",_s="\u25CF",ws="\u2713",ks="\u2715";function zn(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();kt();Ae();var ld=["tasks","center","inspector","actions"],Jn=["agent","terminal"],Qn=[],ne="inspection",l_=[...Jn,...Qn],Zn=["commit","push","create-pr","refresh-checks","merge","close-task"],dd=["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=Pd(e?.openInspectionKind)??r,o=mt(t);return{inputMode:xd(e?.inputMode),focusedRegion:Rd(e?.focusedRegion),selectedRepoId:ze(e?.selectedRepoId),selectedWorkspaceId:ze(e?.selectedWorkspaceId),selectedTaskId:ze(e?.selectedTaskId),selectedPtyTabId:ze(e?.selectedPtyTabId),selectedLeftItemId:Fd(ze(e?.selectedTaskId)),activeTab:r?ne:ze(e?.activeTab)??"agent",preferredPtyTabKind:Id(e?.preferredPtyTabKind),inspectorSection:Ht(e?.inspectorSection,eo,"task"),inspectionMode:Cd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:ze(e?.selectedFileTreePath),selectedFilePath:ze(e?.selectedFilePath),selectedDiffPath:ze(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:Ht(e?.selectedActionId,Zn,"commit"),selectedProjectTargetId:null,selectedRunner:Ed(e?.selectedRunner,o,nt(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:ud(),centerZoomed:!1}}function ud(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function so(e,t){return{...e??We(),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 _r(e,t,r={}){let s=Bd(e,t),o=ho(s),g=(o?.kind==="workspace"?t.workspaces?.find(k=>k.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(k=>k.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,n=((o?.kind==="repo"?t.repos.find(k=>k.id===o.id)??null:o?.kind==="task"?t.repos.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(g?.kind==="project"?t.repos.find(k=>k.id===e.selectedRepoId&&g.discoveredRepoIds?.includes(k.id))??null:null)??(g?.kind!=="project"?t.repos.find(k=>k.id===g?.primaryRepoId)??null:null)??t.repos.find(k=>k.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=g?t.tasks.filter(k=>k.workspaceId===g.id):n?t.tasks.filter(k=>k.repoId===n):[],f=(o?.kind==="task"?c.find(k=>k.id===o.id)??null:null)??c.find(k=>k.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:g?.id??null,selectedRepoId:n,selectedTaskId:f?.id??null,...Dd(f,e.activeTab,e.selectedPtyTabId),selectedFilePath:vd(e,t,f?.id??null),...Ld(e,t,f?.id??null),selectedDiffPath:yd(e,t,f?.id??null),inspectorSection:Ht(e.inspectorSection,eo,"task")}}function io(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return hd(t)?G({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null},changed:!0,detachTerminal:!0}):G({state:e});if(t==="q"||t==="Q")return G({state:e,exit:!0});if(t==="ESCAPE")return G({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return G({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 G({state:{...e,selectedRunner:Ss(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Vn(e,1);if(t==="SHIFT_TAB"||t==="[")return Vn(e,-1);if(t==="z"||t==="Z")return G({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?tt(e,-1,r):Gn(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?tt(e,1,r):Gn(e,1,r);if(t==="PAGE_UP")return tt(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return tt(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return tt(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return tt(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??le,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,g=o===s.length-1?null:s[o+1];return G({state:{...e,centerTabRunner:g,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Ad(e,t);return G({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 G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&mr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Wd(e.selectedLeftItemId)&&e.selectedWorkspaceId)return G({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Yn(e.activeTab,r.ptyTabIds??[]))return G({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return bs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xn(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return bs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xn(e,1)}if(rt(t)){if(e.focusedRegion==="tasks"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId))){let s=fo(e.selectedLeftItemId),o=po(e.selectedLeftItemId);return G({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 G({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&mr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&Yn(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:wr(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return G({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 G({state:_d({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return G({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"?G({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?G({state:e}):e.selectedActionId==="create-pr"?G({state:{...e,actionMessage:null},changed:!0,syncPullRequest:!0}):e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="merge"?G({state:{...e,actionMessage:null},changed:!0,mergeTask:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return G({state:e})}function Ut(e,t){return{...e,terminal:t}}function no(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function hd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function rt(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
147
+ `}function oo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function ao(e){return co(e)||wr(e)!==null}function fd(e){return Qn.includes(e)}function co(e){return Jn.includes(e)}function lo(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var pd=["tasks","center","inspector"];function Vn(e,t){return pr(e,"focusedRegion",pd,t)}function bs(e,t,r){let s=pr(e,"activeTab",r&&r.length>0?r:Od(e),t);return!s.changed||fd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:wr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Gn(e,t,r){if(e.focusedRegion==="tasks")return gd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return bs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=gr(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?gr(e,"selectedProjectTargetId",r.projectTargetIds,t):pr(e,"selectedActionId",dd,t)}return pr(e,"selectedActionId",Zn,t)}function gd(e,t,r){let s=gr(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},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 g=fo(s.state.selectedLeftItemId);if(g)return{...s,state:{...s.state,selectedRepoId:g}};let y=po(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function tt(e,t,r){if(t===0)return G({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=gr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return G({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return wd(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return kd(e,t,r)}return G({state:e})}function md(e,t){if(e.inspectionMode===t)return G({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return G({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 Xn(e,t){return md(e,Td(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 G({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,g=s.indexOf(o??""),y=Ve(g===-1?0:g+t,0,s.length-1),n=s[y]??null;if(n===e.selectedFileTreePath)return G({state:e});let c=n!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(n);return G({state:{...e,selectedFileTreePath:n,selectedFilePath:c?n:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function _d(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 wd(e,t,r,s,o=10){let g=Math.max(0,s-Math.max(1,o)),y=Ve(e[t]+r,0,g);return y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function kd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return bd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,g=Math.max(0,s-Math.max(1,o)),y=e.diffScrollOffset+t,n=r.diffPathIds??[];if(n.length===0||!e.selectedDiffPath){let k=Ve(y,0,g);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}let c=n.indexOf(e.selectedDiffPath);if(c===-1){let k=Ve(y,0,g);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}if(t>0&&y>g){let k=n[c+1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===g?G({state:e}):G({state:{...e,diffScrollOffset:g,actionMessage:null},changed:!0})}if(t<0&&y<0){let k=n[c-1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?G({state:e}):G({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let f=Ve(y,0,g);return f===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:f,actionMessage:null},changed:!0})}function bd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,g=Math.max(0,s-Math.max(1,o)),y=Ve(e.diffScrollOffset+t,0,g),n=Sd(r.diffPathRanges??[],y)??e.selectedDiffPath;return y===e.diffScrollOffset&&n===e.selectedDiffPath?G({state:e}):G({state:{...e,diffScrollOffset:y,selectedDiffPath:n,actionMessage:null},changed:!0})}function yd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function vd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Sd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function pr(e,t,r,s){let o=r.indexOf(e[t]),g=Ve(o+s,0,r.length-1),y=r[g];return!y||y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function gr(e,t,r,s,o=!1){if(r.length===0)return G({state:e});let g=r.indexOf(e[t]??r[0]??""),y=Ve(g===-1?0:g+s,0,r.length-1),n=r[y]??null;return n===e[t]?G({state:e}):G({state:{...e,[t]:n,actionMessage:null},changed:!0,refreshInspection:o})}function Td(e,t,r){let s=t.indexOf(e);return t[Ve(s+r,0,t.length-1)]??e}function G(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,syncPullRequest:e.syncPullRequest??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,mergeTask:e.mergeTask??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function Ht(e,t,r){return t.includes(e??"")?e:r}function Rd(e){return e==="tabs"?"center":Ht(e,ld,"tasks")}function Cd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ht(e,to,t)}function Pd(e){return e==="file"||e==="diff"?e:null}function Id(e){return e==="terminal"?"terminal":"agent"}function xd(e){return e==="terminal"?"terminal":"control"}function Ed(e,t=[...le],r="codex"){return e&&_t(e)&&t.includes(e)?e:r}function Ss(e,t=le){let r=t.length>0?t:le,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function wr(e){let t=le.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Ad(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":wr(e.activeTab)??e.preferredPtyTabKind}function Dd(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(n=>n.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(n=>n.id===e.selectedPtyTabId)??null:null,g=e.ptyTabs.find(n=>n.id===t)??null;if(g)return{activeTab:g.id,selectedPtyTabId:g.id};if(co(t)){let c=e.ptyTabs.find(f=>f.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 y=o??s??e.ptyTabs[0]??null;return{activeTab:y?.id??ne,selectedPtyTabId:y?.id??null}}function Ld(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?Md(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Md(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 Od(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Yn(e,t){return t.includes(e)}function Bd(e,t){let r=$d(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 $d(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 ze(e){return typeof e=="string"?e:null}function Fd(e){return e?`task:${e}`:null}function mr(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 Wd(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 Ve(e,t,r){return Math.min(r,Math.max(t,e))}var br="empty",he={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=Hd(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,g=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],y=g.find(_=>_.id===e.selectedTaskId)??g[0]??null,n=y?.type==="project",c=ku(t.tasks),f=Kd(e,y),k=qd(e,y,f),a=k.find(_=>_.id===f)??k[0]??{id:"agent",label:"CODEX"},w=t.inspection?.taskId===y?.id?t.inspection:null,l=s?.name??"no repo",m=y?Te(y.runner):Te(e.selectedRunner);return{inputMode:e.inputMode,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 ${Te(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 [${Te(e.selectedRunner)}] Enter create task Esc pause ? help`:mr(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"?y===null?"n new task Tab tasks Esc pause ? help":f===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Te(e.centerTabRunner??y?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?n?"\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:qt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${qt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m,liveLabel:y?.status==="running"?"live":"idle"},leftTree:Nd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>bu(_,c[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:l,agent:m},centerTranscript:Ud(f,e,s,y,e.workspaceBrowser,w,r),tabs:k,rightContext:wu(s,y),rightInspection:iu(e,y,w)}}function Nd(e,t){let r=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return jd(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 g of s){let y=e.selectedLeftItemId===`workspace:${g.id}`;r.push({id:`workspace:${g.id}`,text:`${g.kind==="project"?"\u2261":"\u2013"} ${g.name??g.id}`,selected:y,focused:y&&e.focusedRegion==="tasks"});let n=g.kind==="project"?g.discoveredRepoIds??[]:[g.primaryRepoId],c=t.tasks.filter(f=>f.workspaceId===g.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let f of c){let k=e.selectedLeftItemId===`task:${f.id}`,a=k?"\u25B8":"\u2022",w=f.title.length>28?`${f.title.slice(0,25)}\u2026`:f.title,l={id:`task:${f.id}`,taskId:f.id,text:`${a} ${w}`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks"},m=ko(f);m&&(l.prBadge=m),r.push(l)}if(g.kind==="project"){let f=`new-task-workspace:${g.id}`,k=e.selectedLeftItemId===f;r.push({id:f,text:`+ New Project Task [${Te(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}if(g.kind==="repo"){let f=`new-task:${g.primaryRepoId}`,k=e.selectedLeftItemId===f;r.push({id:f,text:`+ New Task [${Te(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}else{r.push({text:` Repos (${n.length})`,indent:0,muted:!0});for(let f of n.slice(0,6)){let k=t.repos.find(a=>a.id===f);r.push({text:` \xB7 ${k?.name??f}`,indent:0,muted:!0})}n.length>6&&r.push({text:` \xB7 ${n.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 jd(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let g of r){let y=t.selectedLeftItemId===`repo:${g.id}`;e.push({id:`repo:${g.id}`,text:`\u2013 ${g.name}`,selected:y,focused:y&&t.focusedRegion==="tasks"});let n=s.filter(k=>k.repoId===g.id);if(n.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let k of n){let a=t.selectedLeftItemId===`task:${k.id}`,w=a?"\u25B8":"\u2022",l=k.title.length>28?`${k.title.slice(0,25)}\u2026`:k.title,m={id:`task:${k.id}`,taskId:k.id,text:`${w} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},_=ko(k);_&&(m.prBadge=_),e.push(m)}let c=`new-task:${g.id}`,f=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Te(t.selectedRunner)}]`,indent:2,selected:f,focused:f&&t.focusedRegion==="tasks",muted:!f})}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 Hd(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 Ud(e,t,r,s,o,g=null,y=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((f,k)=>{let a=k===o.selectedIndex?"\u25B8":" ",w=f.kind==="repo"?" [git repo]":"/";return`${a} ${f.name}${w}`});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=y?.kind==="project",f=c?y.name??"this workspace":r.name,k=c?"Project Task":"Task";return Oe([`No tasks in ${f}.`,"",`Press n or choose + New ${k} to create one with ${Te(t.selectedRunner)}.`])}let n=s.ptyTabs.find(c=>c.id===e)??null;return n?n.kind==="agent"?Oe([`${n.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([`${n.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"?Gd(s,g,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Xd(s,g,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 qd(e,t,r){let s=t?.ptyTabs.map(g=>({id:g.id,label:zd(g)}))??[];if(!t)return[{id:br,label:"EMPTY",active:r===br,focused:e.focusedRegion==="center"&&r===br}];let o=e.openInspectionKind||r===ne?[{id:ne,label:Vd(e)}]:[];return[...s,...o].map(g=>({...g,active:g.id===r,focused:e.focusedRegion==="center"&&g.id===r}))}function Kd(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:br}function zd(e){return e.title.toUpperCase()}function Vd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?qt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Gd(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:""},...Yd(s.lines,r,o)]}function Xd(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:""},...Jd(s.lines,r,o)]}function Oe(e){return e.map(t=>({text:t}))}function Yd(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((g,y)=>{let n=o+y+1;return{text:`${`${String(n).padStart(s," ")} \u2502 `}${g}`,segments:[{text:String(n).padStart(s," "),style:{fg:he.lineNumber}},{text:" \u2502 ",style:{fg:he.gutter}},...Ts(g,r)],tone:"default"}})}function Jd(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(g=>Zd(g,r))}function Qd(e){let t=[],r=0,s=0;for(let o of e){let g=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(g){r=Number.parseInt(g[1]??"0",10),s=Number.parseInt(g[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 Zd(e,t){let r=go(e.oldNumber),s=go(e.newNumber),o=e.kind==="delete"?r:s,g=e.kind==="delete"?{bg:"2a1111",fallbackFg:he.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:he.diffAdd}:null,y=`${o} \u2502 ${e.text}`,n=g?tu(Ts(e.text,t),g.bg,g.fallbackFg):Ts(e.text,t),c=g?{fg:he.lineNumber,bg:g.bg}:{fg:he.lineNumber},f=g?{fg:he.gutter,bg:g.bg}:{fg:he.gutter};return{text:y,segments:[{text:o,style:c},{text:" \u2502 ",style:f},...n],fullBleed:g!==null}}function go(e){return e===null?" ":String(e).padStart(4," ")}function wo(e){let t=qt.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"?eu(e):t==="markdown"?ru(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 eu(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:he.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:he.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:he.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:he.diffMeta}}]:[{text:e}]}function tu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function ru(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:he.markup,bold:!0}}]:Rs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Rs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let g=o[0],y=o.index??0;y>s&&r.push({text:e.slice(s,y)}),r.push({text:g,style:su(g)}),s=y+g.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function su(e){return e.startsWith("//")||e.startsWith("/*")?{fg:he.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:he.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:he.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:he.markup}:{fg:he.keyword}}function iu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(n=>n.repoId===s)??null:null,g=t?.type==="project"?bo(t.repoTargets??[]):o?.pullRequest??t?.pullRequest??null,y=[nu(e,g),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...au(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...fu(e,r)]}:{title:"",rows:[...y,...gu(e,r)]}}function nu(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 f=s[c];c>0&&o.push({text:" "}),o.push({text:f.label,style:{fg:f.active?"7aa2f7":"565f89"}})}let g=Cs(t),y=Ps(t?.requiredChecks??null);return o.push({text:" "},g,{text:" "},y),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function mo(e){return[{text:" "},Cs(e),{text:" "},Ps(e.requiredChecks??null)]}function ko(e){if(e.type==="project"&&e.repoTargets?.length){let t=bo(e.repoTargets);return t?mo(t):null}return e.pullRequest.number?mo(e.pullRequest):null}function bo(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:ou(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 ou(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:Hn,style:{fg:"565f89"}}:e.status==="merged"?{text:qn,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Kn,style:{fg:"f7768e"}}:{text:Un,style:{fg:"9ece6a"}}}function Ps(e){return!e||e.length===0?{text:ms,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:ks,style:{fg:"f7768e"}}:e.every(t=>t.status==="success"||t.status==="skipped")?{text:ws,style:{fg:"9ece6a"}}:{text:_s,style:{fg:"e0af68"}}}function au(e,t){return t?t.type==="project"&&t.repoTargets?.length?cu(e,t):yo("pr",t.branch,t.pullRequest):[{id:"review-empty",text:"No task selected.",muted:!0}]}var kr=32;function cu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let y of s){let n=o===y.repoId,c=e.focusedRegion==="inspector"&&n,f=y.repoId.startsWith("repo_")?y.repoId.slice(5):y.repoId;if(y.status!=="ready"){let a=y.failureReason?y.failureReason.slice(0,14):y.status,w=kr-a.length-1,l=f.length>w?f.slice(0,w-1)+"\u2026":f,m=kr-l.length-a.length;r.push({id:`project-review:${y.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:n,focused:c,muted:!0})}else{let k=Cs(y.pullRequest),a=Ps(y.pullRequest.requiredChecks),w=`${k.text} ${a.text}`,l=kr-w.length-1,m=f.length>l?f.slice(0,l-1)+"\u2026":f,_=kr-m.length-w.length,i=m+" ".repeat(Math.max(1,_));r.push({id:`project-review:${y.repoId}`,text:i+w,selected:n,focused:c,segments:[{text:i},{...k,text:k.text},{text:" "},{...a,text:a.text}]})}}let g=s.find(y=>y.repoId===o)??null;return g?.status==="ready"&&g.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...yo("target",g.branch,g.pullRequest))),r}function yo(e,t,r){let s=f=>`${e}-${f}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],g=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${g} Open in GitHub \u2197`,segments:[{text:g},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:g});let y=r.baseBranch??"?",n=r.headBranch??t;o.push({id:s("pr-branches"),text:`${y} \u2192 ${n}`,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 ${lu(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(du)):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 lu(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 du(e){let{icon:t,color:r}=uu(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," ")} ${hu(e.status)}`,color:r,muted:!1}}function uu(e){switch(e){case"success":return{icon:ws,color:"9ece6a"};case"pending":return{icon:_s,color:"e0af68"};case"failed":return{icon:ks,color:"f7768e"};case"skipped":return{icon:ms,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function hu(e){return e==="success"?"passing":e==="failed"?"failing":e}function fu(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(g=>[g.path,g.status])),s=pu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(g=>{let y=g.kind==="file"?r.get(g.path):void 0,n=y==="A"?"9ece6a":y==="M"?"e0af68":y==="D"?"f7768e":y==="??"?"565f89":void 0,c=g.kind==="directory"?e.collapsedFileTreePaths.includes(g.path)?Nn:jn:Wn(g.label),f=g.kind==="file"?zn(g.label):void 0,k=" ".repeat(g.depth),a=f?{text:c,style:{fg:f}}:{text:c},w=n?{text:g.label,style:{fg:n}}:{text:g.label},l=[{text:k},a,w];return{id:g.path,text:`${k}${c}${g.label}`,selected:g.path===o,focused:g.path===o&&e.focusedRegion==="inspector",muted:g.kind==="directory",segments:l}})}function pu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let g=1;g<o.length;g+=1)if(r.has(o.slice(0,g).join("/")))return!1;return!0})}function gu(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(mu(t))return _u(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(g=>g.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(g=>vo(g,e,t))))}return r}function mu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function _u(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 g=t.diffRows.filter(n=>n.path.startsWith(`${o}/`)),y=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:y,muted:!0});for(let n of["branch","staged","unstaged","untracked"]){let c=g.filter(f=>f.group===n);c.length!==0&&(r.push({id:`repo-diff:${o}:${n}`,text:` ${n}`,muted:!0}),r.push(...c.map(f=>vo(f,e,t,o.length+1))))}}return r}function vo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,g=e.deletions===null?"-":`-${e.deletions}`,y=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",n=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${n} ${o}/${g}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:y}}function wu(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Te(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:qt.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 ku(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function bu(e,t){return{name:Te(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 vt(e,t){return{width:Math.max(e??yr.width,yr.width),height:Math.max(t??yr.height,yr.height)}}import{spawn as Hu}from"node:child_process";import{createHash as Uu}from"node:crypto";import{createServer as qu,createConnection as Mo}from"node:net";import{openSync as Ku}from"node:fs";import{mkdir as zu,readFile as Ms,rm as gt,writeFile as Vu}from"node:fs/promises";import{tmpdir as Gu}from"node:os";import St from"node:path";import{createRequire as xu}from"node:module";var Co=Da(To(),1),yu=1e3,vu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Po(e){return new Co.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:yu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Io(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 xo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),g=r.baseY+r.cursorY,y=Math.max(0,r.baseY-t);for(let n=0;n<e.rows;n+=1){let c=r.getLine(y+n);if(!c){s.push({segments:[]});continue}let f=[];for(let k=0;k<e.cols;k+=1){let a=c.getCell(k,o);!a||a.getWidth()===0||f.push({text:a.getChars()||" ",style:Ru(a,y+n===g&&k===r.cursorX)})}s.push({segments:Su(Tu(f))})}return s}function Su(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&Iu(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};Eo(r.style)||(o.style=r.style),t.push(o)}return t}function Tu(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Eo(r.style))break;t-=1}return e.slice(0,t)}function Ru(e,t){let r={},s=Ro(e,"fg"),o=Ro(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 Ro(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"):vu[o]??Cu(o)}function Cu(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(Pu).map(g=>g.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 Pu(e){return e===0?0:55+e*40}function Iu(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 Eo(e){return Is(e)===""}var Eu=xu(import.meta.url),Au=/^CTRL_([A-Z])$/,Du="\x1B[6n",Lu="\x1B[c",Mu="\x1B[?u",Ou={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
148
+ `,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 g=this.sessions.get(r);if(g)if(g.status!=="running")Es(g),this.sessions.delete(r);else return this.attachedTabId=r,g.scrollbackLines=0,Ao(g,s),this.getViewState(r);let y=this.createSession(t,r,s,o);return this.sessions.set(r,y),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=Bu(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&&Ao(r,t)}detach(){this.attachedTabId=null}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:xo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let g=this.spawn??Fu().spawn,y=Po(s),n=o??this.resolveSessionSpec(t,r),c=lt({...this.env,...n.env??{}}),{executable:f,args:k}=Wu(this.shell,n.command,{cwd:n.cwd,env:c}),a=g(f,k,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:n.cwd,env:Nu(c)}),w={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(a.onData(l=>{ju(a,l),xs(w.terminal,l).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(a.onExit(l=>{w.status="exited",xs(w.terminal,`\r
148
149
  [process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(w.tabId)})})),w}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function Bu(e){if(e.length===1)return e;let t=Ou[e];if(t!==void 0)return t;let r=Au.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function Ao(e,t){$u(e.pty,t),Io(e.terminal,t)}function Es(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function $u(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Fu(){return Eu("node-pty")}function Wu(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[dt(t[0],r),...t.slice(1)].map(Do).join(" ")}; exec ${Do(e)} -l`;return{executable:e,args:["-lc",o]}}function Do(e){return`'${e.replaceAll("'","'\\''")}'`}function Nu(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 ju(e,t){for(let r=0;r<As(t,Du);r+=1)e.write("\x1B[1;1R");for(let r=0;r<As(t,Lu);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<As(t,Mu);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 Oo(e){let t=Bs(e.paths);await Xu(t,e.paths,e.spawnDaemon);let r=await jo(t.socketPath),s=new Ds(r,e);return await s.ready(),s}async function Bo(e,t={}){let r=Bs(e);await zu(e.runtimeDir,{recursive:!0}),await gt(r.socketPath,{force:!0});let s=new Ls(e,t),o=qu(g=>s.handleConnection(g));await th(o,r.socketPath),await Vu(r.pidPath,String(process.pid),"utf8"),await new Promise(g=>{let y=()=>{s.closeClients(),o.close(()=>g())};s.onShutdown=y,process.once("SIGTERM",y),process.once("SIGINT",y)}),await gt(r.socketPath,{force:!0}),await gt(r.pidPath,{force:!0}),s.disposeAll()}async function $o(e){let t=Bs(e);return await Tr(t.socketPath)?(await Wo(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 g=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,g),g}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((y,n)=>{this.pending.set(r,{resolve:y,reject:n})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
149
150
  `);let g=await o;if(!g.ok)throw new Error(g.error);return g}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
150
151
  `);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
@@ -152,17 +153,17 @@ ${n.stdout.trimEnd()}`)}let y=o.join(`
152
153
  `);for(;o!==-1;){let g=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,g),o=r.indexOf(`
153
154
  `)}}),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 g=o instanceof Error?o.message:String(o);Sr(t,{id:s.id,ok:!1,error:g})}}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 rh(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=Uu("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:St.join(Gu(),`craig-${t}.sock`),pidPath:St.join(e.runtimeDir,"pty-daemon.pid")}}async function Xu(e,t,r){if(await Yu(e.socketPath,1e3))return;await Tr(e.socketPath)&&(await Wo(e.socketPath),await Lo(e.socketPath,1e3)),await Tr(e.socketPath)&&(await Zu(e),await Lo(e.socketPath,1e3)),await Qu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:y,args:n}=Ju(s),c=Ku(St.join(t.runtimeDir,"pty-daemon.log"),"a");Hu(y,n,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await Fo(e.socketPath))return;await $s(50)}let g=await Ms(St.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${g?`
154
155
  ${g.slice(-2e3)}`:""}`)}async function Fo(e){let t=await eh(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Os}async function Yu(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await Fo(e))return!0;await $s(50)}return!1}function Ju(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:St.resolve(St.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 Ms(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Ho(r))return}await gt(e.socketPath,{force:!0}),await gt(e.pidPath,{force:!0})}async function Tr(e){let t=await jo(e).catch(()=>null);return t?(t.end(),!0):!1}async function Wo(e){await No(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Zu(e){let t=await Ms(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Ho(r)){await gt(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await gt(e.socketPath,{force:!0})}}async function eh(e){return No(e,{id:1,type:"ping"})}function No(e,t){return new Promise((r,s)=>{let o=Mo(e),g="",y=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),n=()=>clearTimeout(y);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
155
- `)),o.once("error",c=>{n(),s(c)}),o.on("data",c=>{g+=String(c);let h=g.indexOf(`
156
- `);if(h===-1)return;let k=g.slice(0,h);n(),o.end();try{r(JSON.parse(k))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>n())})}async function Lo(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await Tr(e))return;await $s(50)}}function jo(e){return new Promise((t,r)=>{let s=Mo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function th(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)}
157
- `)}catch{}}function Ho(e){try{return process.kill(e,0),!0}catch{return!1}}function $s(e){return new Promise(t=>setTimeout(t,e))}function rh(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var sh=[" \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[...sh]}var ih=["Start","Options","Exit"],nh=["Resume","Options","Exit"],Pr=2,Ir=2,xr=2,oh=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),ah=new RegExp("\x1B\\[(?:0)?m","g"),ch=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),lh=/https?:\/\/[^\s<>"']+/g,Ws="\x1B[0m",Ko="\x1B]8;;\x1B\\",se={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 zo(e,t={}){return js(e,{subtitle:"crAIg is that you?",menuItems:ih,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Vo(e,t={}){return js(e,{subtitle:"Control mode is paused.",menuItems:nh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}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."],dh=["Help"];function Ns(e,t={}){return js(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??dh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Go(e,t={}){let r=t.color??!0,s=se.overlay,o=new Array(e.height).fill(fe(" ".repeat(e.width),r,s)),g=Fs(),y=Math.max(1,Math.floor((e.height-g.length-2-Rr.length)/2));for(let k=0;k<g.length&&!(y+k>=e.height);k+=1)o[y+k]=fe(Zo(g[k]??"",e.width),r,se.overlayLogo);let n=Math.max(...Rr.map(k=>k.length)),c=Math.max(0,Math.floor((e.width-n)/2)),h=y+g.length+2;for(let k=0;k<Rr.length;k+=1){let a=h+k;if(a>=e.height)break;let w=Rr[k]??"";o[a]=fe(st(" ".repeat(c)+w,e.width),r,s)}return o.join(`
158
- `)}function Xo(e,t,r={}){let s=r.color??!0,o=Be.leftWidth,g=Be.rightWidth,y=Be.dividerWidth,n=r.centerOnly??!1,c=n?e.width:e.width-o-g-y*2,h=e.height-Be.topRailHeight-1,k=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent} ${ia(`\u25CF ${t.topRail.liveLabel}`,s,se.rail)}`,a=fe(st(k,e.width),s,se.rail),w=uh(t,o-Pr-Ir,h,s),l=hh(t,c,h,s),m=ph(t,g,h,s),_=[];for(let p=0;p<h;p+=1){if(n){_.push(Cr(l[p]??He(),c,s,"center"));continue}let f=Cr(w[p]??He(),o,s,"left"),d=fe("\u2502",s,se.divider),u=Cr(l[p]??He(),c,s,"center"),b=fe("\u2502",s,se.divider),S=Cr(m[p]??He(),g,s,"right");_.push(`${f}${d}${u}${b}${S}`)}let i=fe(st(` ${t.footerText}`,e.width),s,se.panelMuted);return[a,..._,i].join(`
159
- `)}function js(e,t){let r=new Array(e.height).fill(fe(" ".repeat(e.width),t.color,se.overlay)),s=Fs(),o=Math.max(...t.menuItems.map(h=>h.length)),g=t.menuItems.map((h,k)=>`${k===t.menuIndex?">":" "} ${h.padEnd(o)}`),y=t.optionsMessage?["",t.optionsMessage]:[],n=[...s,"",t.subtitle,"",...g,...y],c=Math.max(1,Math.floor((e.height-n.length)/2));for(let h=0;h<n.length;h+=1){let k=Zo(n[h]??"",e.width);if(h<s.length){r[c+h]=fe(k,t.color,se.overlayLogo);continue}if(h===s.length+1){r[c+h]=fe(k,t.color,se.overlaySubtitle);continue}let a=h-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?se.overlayMenuSelected:se.overlay;r[c+h]=fe(k,t.color,l)}return r.join(`
160
- `)}function uh(e,t,r,s){let o=_h(e.runners),g=1,y=e.leftTree.map(c=>mh(c,t,s));return[...Er(y,r-g),o]}function hh(e,t,r,s){let o=e.tabs.find(a=>a.active)?.label??"AGENT",g=Eh(e.tabs),y=`${" ".repeat(g)}${Ar("\u2500".repeat(o.length+1),s,se.panelMuted)}`,n=[`${Ar(e.centerHeader.tabLabel,s,se.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(a=>a.active)?.id??"agent",h=e.centerHeader.tabLabel==="BROWSER"||!ao(c)?e.centerTranscript.map(a=>({...a})):fh(e),k=[{text:wh(e.tabs,s)},{text:y,tone:"muted"},{text:n},He(),...h];return Er(k,r)}function fh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},He(),{text:e.terminal.error},He(),{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:sa(s.segments),segments:s.segments,fullBleed:!0}))}function ph(e,t,r,s){let o=e.rightInspection?gh(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:Yo("CONTEXT",e.focusedRegion==="tasks",s,se.panelBg)},He(),...e.rightContext.map(g=>kh(g,s)),...e.actionMessage?[He(),{text:e.actionMessage}]:[]],r);return Er(o,r)}function gh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),g=s.findIndex(n=>n.focused||n.selected),y=g===-1?0:Dh(g-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(n=>Uo(n)),...s.slice(y,y+o).map(n=>Uo(n))]}function Uo(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(" "),g=o===-1?e.text:e.text.slice(0,o),y=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:g,style:{fg:"7aa2f7"}},{text:y}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function mh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",g=e.status?` ${e.status}`:"",y=e.accentDot?` ${ia("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=e.prBadge?e.prBadge.reduce((l,m)=>l+Ge(m.text),0):0,c=t-Ge(g)-Ge(o)-n,h=e.focused&&!e.selected?Yo(e.text,!0,r,se.panelBg):e.text,k=st(`${s}${h}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${k}${g}${y}`},...e.prBadge];return{text:`${k}${g}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${k}${g}${y}`,tone:a}}function _h(e){let t=e.map(s=>{let o=s.health>=1,g=parseInt(s.count,10),y=g>1?` (${g})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${y}`,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:se.success.fg}}):r.push({text:o.text,style:{fg:se.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function wh(e,t){return e.map(r=>r.active?Ar(r.label,t,se.panelBg):na(r.label,t,se.panelBg)).join(" ")}function kh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?na(e.value,t,se.panelBg):e.value}`}}function Yo(e,t,r,s){return t?Ar(e,r,s):e}function Cr(e,t,r,s){let o=bh(s,e.tone??"default"),g=yh(e,r,o);if(s==="left"){if(e.fullBleed)return fe(st(g,t),r,o);let n=t-Pr-Ir;if(e.rightAlign){let h=Ge(g),k=Math.max(0,n-h),a=`${" ".repeat(Pr)}${" ".repeat(k)}${g}${" ".repeat(Ir)}`;return fe(a,r,o)}let c=`${" ".repeat(Pr)}${st(g,n)}${" ".repeat(Ir)}`;return fe(c,r,o)}return s==="center"&&e.fullBleed?vh(e,t,r,o):fe(st(` ${g}`,t),r,o)}function bh(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function Er(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(He());return r}function He(){return{text:""}}function yh(e,t,r){return e.segments?e.segments.map(s=>Jo(s,t,r)).join(""):e.text}function vh(e,t,r,s){let o=" ".repeat(xr),g=Math.max(0,t-xr*2);if(!e.segments)return fe(`${o}${st(e.text,g)}${o}`,r,s);let y=Rh(e.segments,g),n=`${o}${y.map(c=>Jo(c,r,s)).join("")}${o}`;return fe(n,r,s)}function Jo(e,t,r){let s=e.href?`${Qo(e.href)}${e.text}${Ko}`:Sh(e.text);return!t||!e.style?s:`${Kt(Ih(e.style,r))}${xh(e.style)}${s}${Ws}${Kt(r)}`}function Sh(e){return e.replace(lh,t=>{let[r,s]=Th(t);return`${Qo(r)}${r}${Ko}${s}`})}function Th(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Qo(e){return`\x1B]8;;${e}\x1B\\`}function Rh(e,t){let r=Ch(e,t);return Ph(r,t)}function Ch(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let g=Ge(o.text);if(g<=s){r.push(o),s-=g;continue}let y=ea(o.text,s);y.length>0&&r.push({...o,text:y}),s=0}return r}function Ph(e,t){let r=Ge(sa(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 Ih(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},g=r??t.fg,y=s??t.bg;return g&&(o.fg=g),y&&(o.bg=y),o}function xh(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 Eh(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-Ge(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function st(e,t){let r=Ge(e);return r>=t?Ah(e,t):e+" ".repeat(t-r)}function Ah(e,t){if(t<=0)return"";if(Ge(e)<=t)return e;let r=ra(e);return ea(r,Math.max(0,t-1))+"\u2026"}function Ge(e){let t=0;for(let r of Array.from(ra(e)))t+=ta(r);return t}function ea(e,t){let r="",s=0;for(let o of Array.from(e)){let g=ta(o);if(s+g>t)break;r+=o,s+=g}return r}function ta(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 Dh(e,t,r){return Math.min(Math.max(e,t),r)}function ra(e){return e.replace(ch,"").replace(oh,"")}function sa(e){return e.map(t=>t.text).join("")}function fe(e,t,r){if(!t)return e;let s=Kt(r),o=e.replace(ah,`${Ws}${s}`);return`${s}${o}${Ws}`}function Kt(e){let t=[];return e.fg&&t.push(`38;2;${qo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${qo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function qo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function ia(e,t,r){return Hs(e,t,se.success.fg,r)}function Ar(e,t,r){return Hs(e,t,se.accent.fg,r)}function na(e,t,r){return Hs(e,t,se.mutedfg.fg,r)}function Hs(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Kt(o)}${e}${Kt(s)}`}Ae();var Us=["Runners","Help"];function qs(e,t){return le.map(r=>{let s=ye(r),o=e.runners?.[r]?.enabled!==!1,g=e.runners?.[r]?.path?.trim(),y=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:g&&g.length>0?g:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${y}`})}function aa(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 ca(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Us.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Ks(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function la(e,t,r,s){if(e.pathEdit)return Lh({...e,pathEdit:e.pathEdit},t,r);let o=qs(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 n=le[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:n,value:t.runners?.[n]?.path??""}}}}if(!Ks(r))return{kind:"noop",state:e};let g=le[e.menuIndex]??"codex",y=t.runners?.[g]?.enabled!==!1;return y&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Mh(t,g,!y),state:{...e,message:`${ye(g).displayName} ${y?"disabled":"enabled"}.`}}}function Lh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:oa({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Ks(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:Oh(t,s,o.length>0?o:null),state:oa({...e,message:o.length>0?`${ye(s).displayName} executable saved.`:`${ye(s).displayName} executable reset to default.`})}}return Bh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Mh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function Oh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function oa(e){let t={...e};return delete t.pathEdit,t}function Ks(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
161
- `}function Bh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Nh=$h(import.meta.url),jh=Nh("terminal-kit"),Hh=jh.terminal;async function ha(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ke(t);await yt(t);let s=await ve(r),o=mt(s),g=e.uiStateFile?await De({uiStateFile:e.uiStateFile}):null,y=Promise.resolve(),n=Promise.resolve(),c=await zt(t,void 0,o),h=_r(ro(g,s),c);c=await zt(t,h,o);let k=()=>{},a={workspaceRoot:t,onUpdate:()=>k(),resolveSessionSpec:(m,_)=>zh(c,_,t)},w=e.ptyRuntime??await Oo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;g=so(g,m);let _=g;y=y.then(()=>Pe({uiStateFile:e.uiStateFile},_),()=>Pe({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(m=>{let _=e.terminal??Hh,i={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:_r(h,c)},p=!1,f=!1,d=null,u=0,b=0,S=null,P=null,E=null,H=null,$=!1,D=0,x=!0,A=null,L=()=>{},z=w;k=()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},E||(E=setTimeout(()=>{E=null,i.mode==="main"&&L()},50)))};function X(B){return Ut(B,z.getViewState(B.selectedPtyTabId))}function W(B){return X(Uh(B,c))}function K(B){return c.tasks.find(M=>M.id===B.selectedTaskId)??null}async function v(){await z.hydrateSessions?.(c.tasks.flatMap(B=>B.ptyTabs.map(M=>M.id)))}function C(){v().catch(()=>{}).then(()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},L())})}function T(B){let M=n.then(B,B);return n=M.then(()=>{},()=>{}),M}function R(B){let M=K(B),O=c.inspection,N=O&&O.taskId===M?.id?O:null,q=qh(N?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:Kh(c),centerTabIds:lo(M,B),ptyTabIds:M?.ptyTabs.map(Z=>Z.id)??[],filePathIds:N?.filePaths??[],fileTreeRowIds:q.map(Z=>Z.path),fileTreeFileIds:q.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:q.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:N?.diffPaths??[],diffPathRanges:[],fileLineCount:N?.selectedFile.lines.length??0,diffLineCount:N?.selectedDiff.lines.length??0,pageRows:Math.max(5,vt(_.width,_.height).height-Be.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:M?.repoTargets?.map(Z=>Z.repoId)??[]}}async function F(B){await ti(r,B),s=B,o=mt(s),c={...c,enabledRunnerIds:o},i.mode==="main"?i={mode:"main",shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:nt(s)})}:i={...i,shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:nt(s)})}}async function j(B){let M=B.selectedTaskId;M&&await T(async()=>{let O=await ue(r,M);!O.ptyTabs.some(N=>N.id===B.activeTab)||O.selectedPtyTabId===B.activeTab||await re(r,{...O,selectedPtyTabId:B.activeTab})})}async function U(){let B=(i.mode==="main",i.shell);c=await zt(t,B,o),i.mode==="main"?i={mode:"main",shell:W(i.shell)}:i={...i,shell:W(i.shell)}}async function V(B){let M=++D,O=fa(c.tasks,B),N=c.inspection,q;if(O&&N?.taskId===O.id){let Z={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ce=await In(O,N,Z);if(M!==D)return;q={...c,inspection:ce}}else if(q=await zt(t,B,o),M!==D)return;c=q,i.mode==="main"&&(i={mode:"main",shell:W(i.shell)},l(i.shell),L())}async function te(B){let M=await sf(B);i.mode==="main"&&(i={mode:"main",shell:W({...i.shell,workspaceBrowser:M,activeTab:i.shell.selectedPtyTabId??i.shell.activeTab,actionMessage:null})},L())}async function I(B){try{let M=W(B),O=K(M),N=M.selectedPtyTabId;if(O&&M.focusedRegion==="tasks"){let ce=O.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce?N=ce.id:(O=await Gs(O),await U(),N=O.selectedPtyTabId)}O&&!N&&(O=await Gs(O),await U(),N=O.selectedPtyTabId);let q=W({...M,activeTab:N??M.activeTab,selectedPtyTabId:N});if(!q.selectedTaskId||!N){i={mode:"main",shell:q},L();return}i={mode:"main",shell:Ut({...q,inputMode:"terminal"},z.getViewState(N))},l(i.shell);let Z=await z.ensureSession(q.selectedTaskId,N,zs(vt(_.width,_.height)));f=Vs(N),d=null,i={mode:"main",shell:Ut({...q,inputMode:"terminal"},Z)},l(i.shell)}catch(M){let O=M instanceof Error?M.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&Vs(B.selectedPtyTabId)&&(await Q(B.selectedTaskId,O).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:no(W(B),O)},l(i.shell)}L()}async function Q(B,M){await T(async()=>{let O=await ue(r,B);await re(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:M})})}async function Y(B,M,O){let N=W(B);if(!N.selectedTaskId)throw new Error("Select a task before creating a tab.");let q=await T(async()=>{let Z=await ue(r,N.selectedTaskId),ce=M??Xh(Z,N.activeTab,N.preferredPtyTabKind),Ee=da(Z,ce,O??void 0,s),Rt={...Z,ptyTabs:[...Z.ptyTabs,Ee],selectedPtyTabId:Ee.id};return await re(r,Rt),Rt});return await U(),W({...N,activeTab:q.selectedPtyTabId??N.activeTab,selectedPtyTabId:q.selectedPtyTabId,preferredPtyTabKind:q.ptyTabs.at(-1)?.kind??N.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${q.ptyTabs.at(-1)?.title??"tab"}`})}async function ee(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:N}=await T(async()=>{let q=await ue(r,M.selectedTaskId),Z=q.ptyTabs.findIndex(Br=>Br.id===M.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=q.ptyTabs[Z],Ee=q.ptyTabs.filter(Br=>Br.id!==ce.id),Rt=Ee[Math.min(Z,Ee.length-1)]??Ee[Z-1]??null;return await re(r,{...q,ptyTabs:Ee,selectedPtyTabId:Rt?.id??null}),{closedTab:ce,nextSelectedTab:Rt}});return z.disposeSession(O.id),await U(),W({...M,activeTab:N?.id??(M.openInspectionKind?"inspection":M.activeTab),selectedPtyTabId:N?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function ke(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before creating or syncing a PR.");let O=await Ot(r,M.selectedTaskId,{watch:!1});await U();let N=O.disposition==="created"?"Created PR":O.disposition==="discovered"?"Discovered PR":"Synced PR";return W({...M,focusedRegion:"inspector",inspectionMode:"review",actionMessage:`${N}: #${O.prNumber} ${O.url}`})}async function be(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=K(M),N;if(O?.type==="project"&&O.repoTargets?.length){let q=await nn(r,M.selectedTaskId);await U();let Z=q.synced+q.discovered+q.notFound;N=q.discovered>0?`Discovered ${q.discovered} PR${q.discovered!==1?"s":""} \xB7 ${q.synced} refreshed`:`Refreshed ${q.synced}/${Z} targets`}else{let{disposition:q,task:Z}=await is(r,M.selectedTaskId);await U(),N=q==="not_found"?`No PR found for ${Z.branch}`:q==="discovered"?`Discovered PR: #${Z.pullRequest.number} ${Z.pullRequest.url??""}`:`Refreshed checks: ${Z.pullRequest.requiredChecks.length} reported`}return W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:N})}async function Xe(){if($||i.mode!=="main")return;let B=i.shell.selectedTaskId,M=c.tasks;$=!0;try{let O=i.shell.actionMessage,q=(await on(r,M)).find(ce=>ce.taskId===B),Z=M.find(ce=>ce.id===B);if(q&&!q.hadPr&&q.discovered>0&&(O=Z?.type==="project"?`Discovered ${q.discovered} PR${q.discovered!==1?"s":""}`:`Discovered PR: #${q.firstDiscoveredPrNumber} ${q.firstDiscoveredPrUrl??""}`),i.mode!=="main")return;c=await zt(t,i.shell,o),i={mode:"main",shell:W({...i.shell,actionMessage:O})},L()}catch{}finally{$=!1}}async function xe(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before merging a PR.");let O=await Bt(r,M.selectedTaskId,{preserveWorktree:!0});return await U(),W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"merge",actionMessage:`Merged PR #${O.prNumber}; worktree preserved`})}async function Ue(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:N}=await T(async()=>{let q=await ue(r,M.selectedTaskId),Z=await Fn(r,M.selectedTaskId);return{taskBeforeClose:q,task:Z}});for(let q of O.ptyTabs)z.disposeSession(q.id);return await U(),W({...M,selectedActionId:"close-task",actionMessage:N.cleanup.preservedWorktree?`Archived task ${N.id}; worktree preserved`:`Archived task ${N.id}`})}async function it(B){let M=W(B);if(!M.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await Ne(r,{workspaceId:M.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${M.selectedWorkspaceId} while task records still reference it.`);await Ft(r,M.selectedWorkspaceId);let N=await Wt(r,M.selectedWorkspaceId);return await U(),W({...M,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${N.workspaceId}`})}async function Gs(B){let M=B.ptyTabs.find(q=>q.kind==="agent")??null;if(M){let q={...B,selectedPtyTabId:M.id};return await T(async()=>{let Z=await ue(r,B.id),ce=Z.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce&&await re(r,{...Z,selectedPtyTabId:ce.id})}),q}let O=da(B,"agent",void 0,s),N={...B,ptyTabs:[...B.ptyTabs,O],selectedPtyTabId:O.id};return await T(async()=>{let q=await ue(r,B.id),Z=q.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await re(r,{...q,selectedPtyTabId:Z.id});return}await re(r,{...q,ptyTabs:[...q.ptyTabs,O],selectedPtyTabId:O.id})}),N}L=()=>{ga();let B=vt(_.width,_.height),M=i.mode==="main"?Xo(B,_o(W(i.shell),c),{centerOnly:i.shell.centerZoomed}):i.variant==="boot"?zo(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="pause"?Vo(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="options"?Ns(B,{menuIndex:i.menuIndex,optionsMenuItems:Us}):i.variant==="runners"?Ns(B,{menuIndex:Vt(i).menuIndex,optionsMenuItems:qs(s,Vt(i)),optionsMessage:aa(Vt(i)),optionsSubtitle:"Runners"}):Go(B);x&&(_.moveTo(1,1),_.eraseDisplayBelow(),x=!1),_.noFormat(Jh(M)),_.hideCursor(!0)};function ga(){let B=i.mode==="main"&&i.shell.inputMode==="terminal"?"terminal":"control";B!==A&&(A=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let ma=()=>{process.stdout.off("resize",Qs),_.removeListener("key",Xs),_.removeListener("unknown",Ys),_.removeListener("mouse",Js),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),E&&(clearTimeout(E),E=null),H&&(clearInterval(H),H=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Mr=B=>{ma(),m(B)},_a=async()=>{if(i.mode!=="main"||p)return;let B=i.shell,M=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){i={mode:"main",shell:W({...B,taskPromptError:"Select a workspace first."})},L();return}if(M.length===0){i={mode:"main",shell:W({...B,taskPromptError:"Task prompt cannot be empty."})},L();return}p=!0,i={mode:"main",shell:W({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},L();let O=null;try{O=await Yh(r,B.selectedRepoId,B.selectedWorkspaceId,M,B.selectedRunner),await U();let N=W({...i.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",taskPromptInput:null,taskPromptError:null,actionMessage:null}),q=await z.ensureSession(O.id,N.selectedPtyTabId??pa(O,"agent"),zs(vt(_.width,_.height)));f=Vs(N.selectedPtyTabId),i={mode:"main",shell:Ut(N,q)},l(i.shell)}catch(N){N instanceof Dr&&(O=N.task);let q=N instanceof Error?N.message:"Failed to create task.";O&&(await re(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:q}).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:W({...i.shell,inputMode:"control",selectedTaskId:O?.id??i.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??i.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:i.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??i.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:q,actionMessage:null})}}finally{p=!1,L()}},wa=B=>{if(i.mode!=="main")return;let M=i.shell;if(M.taskPromptInput!==null){if(B==="ESCAPE"){i={mode:"main",shell:W({...M,taskPromptInput:null,taskPromptError:null,actionMessage:null})},L();return}if(rt(B)){_a();return}if(B==="BACKSPACE"){i={mode:"main",shell:W({...M,taskPromptInput:M.taskPromptInput.slice(0,-1),taskPromptError:null})},L();return}if(B==="CTRL_R"){i={mode:"main",shell:W({...M,selectedRunner:Ss(M.selectedRunner,o),taskPromptError:null})},L();return}oo(B)&&(i={mode:"main",shell:W({...M,taskPromptInput:`${M.taskPromptInput}${B}`,taskPromptError:null})},L())}},ka=B=>{if(i.mode!=="main")return;let M=i.shell.workspaceBrowser;if(M){if(B==="ESCAPE"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,actionMessage:null})},L();return}if(B==="UP"||B==="k"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.max(0,M.selectedIndex-1),error:null}})},L();return}if(B==="DOWN"||B==="j"){let O=Math.max(0,M.entries.length-1);i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.min(O,M.selectedIndex+1),error:null}})},L();return}if(B==="LEFT"||B==="h"){te(Tt.dirname(M.cwd)).catch(O=>{let N=O instanceof Error?O.message:"Failed to open parent directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:N}})},L()});return}if(B==="RIGHT"||B==="l"||rt(B)){let O=M.entries[M.selectedIndex]??null;if(!O)return;if((B==="RIGHT"||B==="l")&&(O.kind==="directory"||O.kind==="repo")){te(O.path).catch(N=>{let q=N instanceof Error?N.message:"Failed to open directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:q}})},L()});return}$t(r,O.path).then(async N=>{await U();let q=N.repos[0]??null;i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${N.workspace.id}`,selectedWorkspaceId:N.workspace.id,selectedRepoId:q?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${N.workspace.name??N.workspace.id}`})},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to add workspace.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:q}})},L()})}}},Xs=B=>{let M=typeof B=="string"?B:"";if(i.mode==="main"&&i.shell.taskPromptInput!==null){wa(M);return}if(i.mode==="main"&&i.shell.workspaceBrowser!==null){ka(M);return}if(i.mode==="main"){let O=io(i.shell,M,R(i.shell));if(O.exit){Mr(0);return}if(O.detachTerminal){z.detach(),i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(i.shell.inputMode==="terminal"){if(O.changed){i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(f&&rt(M)){f=!1;return}f&&(f=!1),d=Zh(M)?{key:M,at:Date.now()}:null;let N=ef(M,i.shell.terminal.scrolledBack??!1);if(N!==0){Or(N);return}z.writeKey(M);return}if(M==="CTRL_C"){Mr(0);return}if(M==="?"&&i.shell.inputMode==="control"){i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell},x=!0,L();return}if(O.pause){i={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:W(O.state)},x=!0,L();return}if(O.beginTaskPrompt){i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(O.openWorkspaceBrowser){te(t).catch(N=>{let q=N instanceof Error?N.message:"Failed to browse workspaces.";i={mode:"main",shell:W({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:q}})},L()});return}if(O.createPtyTab){Y(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(N=>{I(N)}).catch(N=>{let q=N instanceof Error?N.message:"Failed to create tab.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.closePtyTab){ee(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to close tab.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.syncPullRequest){ke(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to create or sync PR.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.refreshPullRequestChecks){be(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh PR checks.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.mergeTask){xe(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to merge PR.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.closeTask){Ue(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to close task.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.removeWorkspace){it(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to remove workspace.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.attachTerminal){I(O.state);return}if(O.refreshInspection){i={mode:"main",shell:W(O.state)},l(i.shell),L(),V(i.shell).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:q})},L()});return}O.changed&&(i={mode:"main",shell:W(O.state)},j(i.shell).catch(()=>{}),l(i.shell),L());return}if(i.variant==="help"){i.viaOptions&&i.parentVariant?i={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:i.shell,parentVariant:i.parentVariant}:i.parentVariant?i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell}:i={mode:"main",shell:W(i.shell)},x=!0,L();return}if(i.variant==="options"){ba(M);return}if(i.variant==="runners"){ya(M);return}if(i.optionsMessage){(M==="ESCAPE"||rt(M))&&(i={...i,optionsMessage:null},L());return}if(M==="UP"||M==="k"){i={...i,menuIndex:Math.max(0,i.menuIndex-1)},L();return}if(M==="DOWN"||M==="j"){i={...i,menuIndex:Math.min(2,i.menuIndex+1)},L();return}if(M==="ESCAPE"){i.variant==="pause"&&(i={mode:"main",shell:W(i.shell)},x=!0,L());return}if(rt(M)){if(i.menuIndex===0){i={mode:"main",shell:W({...i.shell,inputMode:"control"})},x=!0,L(),C();return}if(i.menuIndex===1){let O=i.variant==="boot"||i.variant==="pause"?i.variant:void 0;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}Mr(0)}};function ba(B){if(i.mode!=="overlay"||i.variant!=="options")return;let M=ca(i.menuIndex,B);if(M.kind!=="noop"){if(M.kind==="render"){i={...i,menuIndex:M.menuIndex},L();return}if(M.kind==="back"){i.parentVariant&&(i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell},x=!0,L());return}if(M.kind==="help"){let O=i.parentVariant;i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="runners"){let O=i.parentVariant;i={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L()}}}function ya(B){if(i.mode!=="overlay"||i.variant!=="runners")return;let M=la(Vt(i),s,B,o);if(M.kind!=="noop"){if(M.kind==="back"){let O=i.parentVariant;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="render"){i={...i,runnerOptions:M.state},L();return}F(M.config).then(()=>{i.mode!=="overlay"||i.variant!=="runners"||(i={...i,runnerOptions:M.state},L())}).catch(O=>{if(i.mode!=="overlay"||i.variant!=="runners")return;let N=O instanceof Error?O.message:"Failed to save runner option.";i={...i,runnerOptions:{...Vt(i),message:N}},L()})}}let Ys=B=>{let M=Qh(B);if(i.mode!=="main"||i.shell.inputMode!=="terminal"||M.length===0)return;if(M.includes("")){z.detach(),f=!1,d=null,i={mode:"main",shell:W({...i.shell,inputMode:"control",actionMessage:null})},l(i.shell),L();return}let O=tf(M);if(O!==0){Or(O);return}if(f&&M!=="\r"&&M!==`
156
+ `)),o.once("error",c=>{n(),s(c)}),o.on("data",c=>{g+=String(c);let f=g.indexOf(`
157
+ `);if(f===-1)return;let k=g.slice(0,f);n(),o.end();try{r(JSON.parse(k))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>n())})}async function Lo(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await Tr(e))return;await $s(50)}}function jo(e){return new Promise((t,r)=>{let s=Mo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function th(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)}
158
+ `)}catch{}}function Ho(e){try{return process.kill(e,0),!0}catch{return!1}}function $s(e){return new Promise(t=>setTimeout(t,e))}function rh(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var sh=[" \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[...sh]}var ih=["Start","Options","Exit"],nh=["Resume","Options","Exit"],Pr=2,Ir=2,xr=2,oh=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),ah=new RegExp("\x1B\\[(?:0)?m","g"),ch=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),lh=/https?:\/\/[^\s<>"']+/g,Ws="\x1B[0m",Ko="\x1B]8;;\x1B\\",se={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 zo(e,t={}){return js(e,{subtitle:"crAIg is that you?",menuItems:ih,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Vo(e,t={}){return js(e,{subtitle:"Control mode is paused.",menuItems:nh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}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."],dh=["Help"];function Ns(e,t={}){return js(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??dh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Go(e,t={}){let r=t.color??!0,s=se.overlay,o=new Array(e.height).fill(fe(" ".repeat(e.width),r,s)),g=Fs(),y=Math.max(1,Math.floor((e.height-g.length-2-Rr.length)/2));for(let k=0;k<g.length&&!(y+k>=e.height);k+=1)o[y+k]=fe(Zo(g[k]??"",e.width),r,se.overlayLogo);let n=Math.max(...Rr.map(k=>k.length)),c=Math.max(0,Math.floor((e.width-n)/2)),f=y+g.length+2;for(let k=0;k<Rr.length;k+=1){let a=f+k;if(a>=e.height)break;let w=Rr[k]??"";o[a]=fe(st(" ".repeat(c)+w,e.width),r,s)}return o.join(`
159
+ `)}function Xo(e,t,r={}){let s=r.color??!0,o=Be.leftWidth,g=Be.rightWidth,y=Be.dividerWidth,n=r.centerOnly??!1,c=n?e.width:e.width-o-g-y*2,f=e.height-Be.topRailHeight-1,k=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent} ${ia(`\u25CF ${t.topRail.liveLabel}`,s,se.rail)}`,a=fe(st(k,e.width),s,se.rail),w=uh(t,o-Pr-Ir,f,s),l=hh(t,c,f,s),m=ph(t,g,f,s),_=[];for(let p=0;p<f;p+=1){if(n){_.push(Cr(l[p]??He(),c,s,"center"));continue}let h=Cr(w[p]??He(),o,s,"left"),d=fe("\u2502",s,se.divider),u=Cr(l[p]??He(),c,s,"center"),b=fe("\u2502",s,se.divider),S=Cr(m[p]??He(),g,s,"right");_.push(`${h}${d}${u}${b}${S}`)}let i=fe(st(` ${t.footerText}`,e.width),s,se.panelMuted);return[a,..._,i].join(`
160
+ `)}function js(e,t){let r=new Array(e.height).fill(fe(" ".repeat(e.width),t.color,se.overlay)),s=Fs(),o=Math.max(...t.menuItems.map(f=>f.length)),g=t.menuItems.map((f,k)=>`${k===t.menuIndex?">":" "} ${f.padEnd(o)}`),y=t.optionsMessage?["",t.optionsMessage]:[],n=[...s,"",t.subtitle,"",...g,...y],c=Math.max(1,Math.floor((e.height-n.length)/2));for(let f=0;f<n.length;f+=1){let k=Zo(n[f]??"",e.width);if(f<s.length){r[c+f]=fe(k,t.color,se.overlayLogo);continue}if(f===s.length+1){r[c+f]=fe(k,t.color,se.overlaySubtitle);continue}let a=f-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?se.overlayMenuSelected:se.overlay;r[c+f]=fe(k,t.color,l)}return r.join(`
161
+ `)}function uh(e,t,r,s){let o=_h(e.runners),g=1,y=e.leftTree.map(c=>mh(c,t,s));return[...Er(y,r-g),o]}function hh(e,t,r,s){let o=e.tabs.find(a=>a.active)?.label??"AGENT",g=Eh(e.tabs),y=`${" ".repeat(g)}${Ar("\u2500".repeat(o.length+1),s,se.panelMuted)}`,n=[`${Ar(e.centerHeader.tabLabel,s,se.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(a=>a.active)?.id??"agent",f=e.centerHeader.tabLabel==="BROWSER"||!ao(c)?e.centerTranscript.map(a=>({...a})):fh(e),k=[{text:wh(e.tabs,s)},{text:y,tone:"muted"},{text:n},He(),...f];return Er(k,r)}function fh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},He(),{text:e.terminal.error},He(),{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:sa(s.segments),segments:s.segments,fullBleed:!0}))}function ph(e,t,r,s){let o=e.rightInspection?gh(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:Yo("CONTEXT",e.focusedRegion==="tasks",s,se.panelBg)},He(),...e.rightContext.map(g=>kh(g,s)),...e.actionMessage?[He(),{text:e.actionMessage}]:[]],r);return Er(o,r)}function gh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),g=s.findIndex(n=>n.focused||n.selected),y=g===-1?0:Dh(g-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(n=>Uo(n)),...s.slice(y,y+o).map(n=>Uo(n))]}function Uo(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(" "),g=o===-1?e.text:e.text.slice(0,o),y=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:g,style:{fg:"7aa2f7"}},{text:y}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function mh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",g=e.status?` ${e.status}`:"",y=e.accentDot?` ${ia("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=e.prBadge?e.prBadge.reduce((l,m)=>l+Ge(m.text),0):0,c=t-Ge(g)-Ge(o)-n,f=e.focused&&!e.selected?Yo(e.text,!0,r,se.panelBg):e.text,k=st(`${s}${f}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${k}${g}${y}`},...e.prBadge];return{text:`${k}${g}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${k}${g}${y}`,tone:a}}function _h(e){let t=e.map(s=>{let o=s.health>=1,g=parseInt(s.count,10),y=g>1?` (${g})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${y}`,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:se.success.fg}}):r.push({text:o.text,style:{fg:se.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function wh(e,t){return e.map(r=>r.active?Ar(r.label,t,se.panelBg):na(r.label,t,se.panelBg)).join(" ")}function kh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?na(e.value,t,se.panelBg):e.value}`}}function Yo(e,t,r,s){return t?Ar(e,r,s):e}function Cr(e,t,r,s){let o=bh(s,e.tone??"default"),g=yh(e,r,o);if(s==="left"){if(e.fullBleed)return fe(st(g,t),r,o);let n=t-Pr-Ir;if(e.rightAlign){let f=Ge(g),k=Math.max(0,n-f),a=`${" ".repeat(Pr)}${" ".repeat(k)}${g}${" ".repeat(Ir)}`;return fe(a,r,o)}let c=`${" ".repeat(Pr)}${st(g,n)}${" ".repeat(Ir)}`;return fe(c,r,o)}return s==="center"&&e.fullBleed?vh(e,t,r,o):fe(st(` ${g}`,t),r,o)}function bh(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function Er(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(He());return r}function He(){return{text:""}}function yh(e,t,r){return e.segments?e.segments.map(s=>Jo(s,t,r)).join(""):e.text}function vh(e,t,r,s){let o=" ".repeat(xr),g=Math.max(0,t-xr*2);if(!e.segments)return fe(`${o}${st(e.text,g)}${o}`,r,s);let y=Rh(e.segments,g),n=`${o}${y.map(c=>Jo(c,r,s)).join("")}${o}`;return fe(n,r,s)}function Jo(e,t,r){let s=e.href?`${Qo(e.href)}${e.text}${Ko}`:Sh(e.text);return!t||!e.style?s:`${Kt(Ih(e.style,r))}${xh(e.style)}${s}${Ws}${Kt(r)}`}function Sh(e){return e.replace(lh,t=>{let[r,s]=Th(t);return`${Qo(r)}${r}${Ko}${s}`})}function Th(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Qo(e){return`\x1B]8;;${e}\x1B\\`}function Rh(e,t){let r=Ch(e,t);return Ph(r,t)}function Ch(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let g=Ge(o.text);if(g<=s){r.push(o),s-=g;continue}let y=ea(o.text,s);y.length>0&&r.push({...o,text:y}),s=0}return r}function Ph(e,t){let r=Ge(sa(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 Ih(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},g=r??t.fg,y=s??t.bg;return g&&(o.fg=g),y&&(o.bg=y),o}function xh(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 Eh(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-Ge(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function st(e,t){let r=Ge(e);return r>=t?Ah(e,t):e+" ".repeat(t-r)}function Ah(e,t){if(t<=0)return"";if(Ge(e)<=t)return e;let r=ra(e);return ea(r,Math.max(0,t-1))+"\u2026"}function Ge(e){let t=0;for(let r of Array.from(ra(e)))t+=ta(r);return t}function ea(e,t){let r="",s=0;for(let o of Array.from(e)){let g=ta(o);if(s+g>t)break;r+=o,s+=g}return r}function ta(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 Dh(e,t,r){return Math.min(Math.max(e,t),r)}function ra(e){return e.replace(ch,"").replace(oh,"")}function sa(e){return e.map(t=>t.text).join("")}function fe(e,t,r){if(!t)return e;let s=Kt(r),o=e.replace(ah,`${Ws}${s}`);return`${s}${o}${Ws}`}function Kt(e){let t=[];return e.fg&&t.push(`38;2;${qo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${qo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function qo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function ia(e,t,r){return Hs(e,t,se.success.fg,r)}function Ar(e,t,r){return Hs(e,t,se.accent.fg,r)}function na(e,t,r){return Hs(e,t,se.mutedfg.fg,r)}function Hs(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Kt(o)}${e}${Kt(s)}`}Ae();var Us=["Runners","Help"];function qs(e,t){return le.map(r=>{let s=ye(r),o=e.runners?.[r]?.enabled!==!1,g=e.runners?.[r]?.path?.trim(),y=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:g&&g.length>0?g:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${y}`})}function aa(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 ca(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Us.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Ks(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function la(e,t,r,s){if(e.pathEdit)return Lh({...e,pathEdit:e.pathEdit},t,r);let o=qs(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 n=le[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:n,value:t.runners?.[n]?.path??""}}}}if(!Ks(r))return{kind:"noop",state:e};let g=le[e.menuIndex]??"codex",y=t.runners?.[g]?.enabled!==!1;return y&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Mh(t,g,!y),state:{...e,message:`${ye(g).displayName} ${y?"disabled":"enabled"}.`}}}function Lh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:oa({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Ks(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:Oh(t,s,o.length>0?o:null),state:oa({...e,message:o.length>0?`${ye(s).displayName} executable saved.`:`${ye(s).displayName} executable reset to default.`})}}return Bh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Mh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function Oh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function oa(e){let t={...e};return delete t.pathEdit,t}function Ks(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
162
+ `}function Bh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Nh=$h(import.meta.url),jh=Nh("terminal-kit"),Hh=jh.terminal;async function ha(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ke(t);await yt(t);let s=await ve(r),o=mt(s),g=e.uiStateFile?await De({uiStateFile:e.uiStateFile}):null,y=Promise.resolve(),n=Promise.resolve(),c=await zt(t,void 0,o),f=_r(ro(g,s),c);c=await zt(t,f,o);let k=()=>{},a={workspaceRoot:t,onUpdate:()=>k(),resolveSessionSpec:(m,_)=>zh(c,_,t)},w=e.ptyRuntime??await Oo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;g=so(g,m);let _=g;y=y.then(()=>Pe({uiStateFile:e.uiStateFile},_),()=>Pe({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(m=>{let _=e.terminal??Hh,i={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:_r(f,c)},p=!1,h=!1,d=null,u=0,b=0,S=null,P=null,E=null,H=null,$=!1,D=0,x=!0,A=null,L=()=>{},z=w;k=()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},E||(E=setTimeout(()=>{E=null,i.mode==="main"&&L()},50)))};function X(B){return Ut(B,z.getViewState(B.selectedPtyTabId))}function W(B){return X(Uh(B,c))}function K(B){return c.tasks.find(M=>M.id===B.selectedTaskId)??null}async function v(){await z.hydrateSessions?.(c.tasks.flatMap(B=>B.ptyTabs.map(M=>M.id)))}function C(){v().catch(()=>{}).then(()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},L())})}function T(B){let M=n.then(B,B);return n=M.then(()=>{},()=>{}),M}function R(B){let M=K(B),O=c.inspection,N=O&&O.taskId===M?.id?O:null,q=qh(N?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:Kh(c),centerTabIds:lo(M,B),ptyTabIds:M?.ptyTabs.map(Z=>Z.id)??[],filePathIds:N?.filePaths??[],fileTreeRowIds:q.map(Z=>Z.path),fileTreeFileIds:q.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:q.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:N?.diffPaths??[],diffPathRanges:[],fileLineCount:N?.selectedFile.lines.length??0,diffLineCount:N?.selectedDiff.lines.length??0,pageRows:Math.max(5,vt(_.width,_.height).height-Be.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:M?.repoTargets?.map(Z=>Z.repoId)??[]}}async function F(B){await ti(r,B),s=B,o=mt(s),c={...c,enabledRunnerIds:o},i.mode==="main"?i={mode:"main",shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:nt(s)})}:i={...i,shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:nt(s)})}}async function j(B){let M=B.selectedTaskId;M&&await T(async()=>{let O=await ue(r,M);!O.ptyTabs.some(N=>N.id===B.activeTab)||O.selectedPtyTabId===B.activeTab||await re(r,{...O,selectedPtyTabId:B.activeTab})})}async function U(){let B=(i.mode==="main",i.shell);c=await zt(t,B,o),i.mode==="main"?i={mode:"main",shell:W(i.shell)}:i={...i,shell:W(i.shell)}}async function V(B){let M=++D,O=fa(c.tasks,B),N=c.inspection,q;if(O&&N?.taskId===O.id){let Z={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ce=await In(O,N,Z);if(M!==D)return;q={...c,inspection:ce}}else if(q=await zt(t,B,o),M!==D)return;c=q,i.mode==="main"&&(i={mode:"main",shell:W(i.shell)},l(i.shell),L())}async function te(B){let M=await nf(B);i.mode==="main"&&(i={mode:"main",shell:W({...i.shell,workspaceBrowser:M,activeTab:i.shell.selectedPtyTabId??i.shell.activeTab,actionMessage:null})},L())}async function I(B){try{let M=W(B),O=K(M),N=M.selectedPtyTabId;if(O&&M.focusedRegion==="tasks"){let ce=O.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce?N=ce.id:(O=await Gs(O),await U(),N=O.selectedPtyTabId)}O&&!N&&(O=await Gs(O),await U(),N=O.selectedPtyTabId);let q=W({...M,activeTab:N??M.activeTab,selectedPtyTabId:N});if(!q.selectedTaskId||!N){i={mode:"main",shell:q},L();return}i={mode:"main",shell:Ut({...q,inputMode:"terminal"},z.getViewState(N))},l(i.shell);let Z=await z.ensureSession(q.selectedTaskId,N,zs(vt(_.width,_.height)));h=Vs(N),d=null,i={mode:"main",shell:Ut({...q,inputMode:"terminal"},Z)},l(i.shell)}catch(M){let O=M instanceof Error?M.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&Vs(B.selectedPtyTabId)&&(await Q(B.selectedTaskId,O).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:no(W(B),O)},l(i.shell)}L()}async function Q(B,M){await T(async()=>{let O=await ue(r,B);await re(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:M})})}async function Y(B,M,O){let N=W(B);if(!N.selectedTaskId)throw new Error("Select a task before creating a tab.");let q=await T(async()=>{let Z=await ue(r,N.selectedTaskId),ce=M??Xh(Z,N.activeTab,N.preferredPtyTabKind),Ee=da(Z,ce,O??void 0,s),Rt={...Z,ptyTabs:[...Z.ptyTabs,Ee],selectedPtyTabId:Ee.id};return await re(r,Rt),Rt});return await U(),W({...N,activeTab:q.selectedPtyTabId??N.activeTab,selectedPtyTabId:q.selectedPtyTabId,preferredPtyTabKind:q.ptyTabs.at(-1)?.kind??N.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${q.ptyTabs.at(-1)?.title??"tab"}`})}async function ee(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:N}=await T(async()=>{let q=await ue(r,M.selectedTaskId),Z=q.ptyTabs.findIndex(Br=>Br.id===M.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=q.ptyTabs[Z],Ee=q.ptyTabs.filter(Br=>Br.id!==ce.id),Rt=Ee[Math.min(Z,Ee.length-1)]??Ee[Z-1]??null;return await re(r,{...q,ptyTabs:Ee,selectedPtyTabId:Rt?.id??null}),{closedTab:ce,nextSelectedTab:Rt}});return z.disposeSession(O.id),await U(),W({...M,activeTab:N?.id??(M.openInspectionKind?"inspection":M.activeTab),selectedPtyTabId:N?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function ke(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before creating or syncing a PR.");let O=await Ot(r,M.selectedTaskId,{watch:!1});await U();let N=O.disposition==="created"?"Created PR":O.disposition==="discovered"?"Discovered PR":"Synced PR";return W({...M,focusedRegion:"inspector",inspectionMode:"review",actionMessage:`${N}: #${O.prNumber} ${O.url}`})}async function be(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=K(M),N;if(O?.type==="project"&&O.repoTargets?.length){let q=await nn(r,M.selectedTaskId);await U();let Z=q.synced+q.discovered+q.notFound;N=q.discovered>0?`Discovered ${q.discovered} PR${q.discovered!==1?"s":""} \xB7 ${q.synced} refreshed`:`Refreshed ${q.synced}/${Z} targets`}else{let{disposition:q,task:Z}=await is(r,M.selectedTaskId);await U(),N=q==="not_found"?`No PR found for ${Z.branch}`:q==="discovered"?`Discovered PR: #${Z.pullRequest.number} ${Z.pullRequest.url??""}`:`Refreshed checks: ${Z.pullRequest.requiredChecks.length} reported`}return W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:N})}async function Xe(){if($||i.mode!=="main")return;let B=i.shell.selectedTaskId,M=c.tasks;$=!0;try{let O=i.shell.actionMessage,q=(await on(r,M)).find(ce=>ce.taskId===B),Z=M.find(ce=>ce.id===B);if(q&&!q.hadPr&&q.discovered>0&&(O=Z?.type==="project"?`Discovered ${q.discovered} PR${q.discovered!==1?"s":""}`:`Discovered PR: #${q.firstDiscoveredPrNumber} ${q.firstDiscoveredPrUrl??""}`),i.mode!=="main")return;c=await zt(t,i.shell,o),i={mode:"main",shell:W({...i.shell,actionMessage:O})},L()}catch{}finally{$=!1}}async function xe(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before merging a PR.");let O=await Bt(r,M.selectedTaskId,{preserveWorktree:!0});return await U(),W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"merge",actionMessage:`Merged PR #${O.prNumber}; worktree preserved`})}async function Ue(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:N}=await T(async()=>{let q=await ue(r,M.selectedTaskId),Z=await Fn(r,M.selectedTaskId);return{taskBeforeClose:q,task:Z}});for(let q of O.ptyTabs)z.disposeSession(q.id);return await U(),W({...M,selectedActionId:"close-task",actionMessage:N.cleanup.preservedWorktree?`Archived task ${N.id}; worktree preserved`:`Archived task ${N.id}`})}async function it(B){let M=W(B);if(!M.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await Ne(r,{workspaceId:M.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${M.selectedWorkspaceId} while task records still reference it.`);await Ft(r,M.selectedWorkspaceId);let N=await Wt(r,M.selectedWorkspaceId);return await U(),W({...M,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${N.workspaceId}`})}async function Gs(B){let M=B.ptyTabs.find(q=>q.kind==="agent")??null;if(M){let q={...B,selectedPtyTabId:M.id};return await T(async()=>{let Z=await ue(r,B.id),ce=Z.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce&&await re(r,{...Z,selectedPtyTabId:ce.id})}),q}let O=da(B,"agent",void 0,s),N={...B,ptyTabs:[...B.ptyTabs,O],selectedPtyTabId:O.id};return await T(async()=>{let q=await ue(r,B.id),Z=q.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await re(r,{...q,selectedPtyTabId:Z.id});return}await re(r,{...q,ptyTabs:[...q.ptyTabs,O],selectedPtyTabId:O.id})}),N}L=()=>{ga();let B=vt(_.width,_.height),M=i.mode==="main"?Xo(B,_o(W(i.shell),c),{centerOnly:i.shell.centerZoomed}):i.variant==="boot"?zo(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="pause"?Vo(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="options"?Ns(B,{menuIndex:i.menuIndex,optionsMenuItems:Us}):i.variant==="runners"?Ns(B,{menuIndex:Vt(i).menuIndex,optionsMenuItems:qs(s,Vt(i)),optionsMessage:aa(Vt(i)),optionsSubtitle:"Runners"}):Go(B);x&&(_.moveTo(1,1),_.eraseDisplayBelow(),x=!1),_.noFormat(Jh(M)),_.hideCursor(!0)};function ga(){let B=i.mode==="main"&&i.shell.inputMode==="terminal"?"terminal":"control";B!==A&&(A=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let ma=()=>{process.stdout.off("resize",Qs),_.removeListener("key",Xs),_.removeListener("unknown",Ys),_.removeListener("mouse",Js),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),E&&(clearTimeout(E),E=null),H&&(clearInterval(H),H=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Mr=B=>{ma(),m(B)},_a=async()=>{if(i.mode!=="main"||p)return;let B=i.shell,M=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){i={mode:"main",shell:W({...B,taskPromptError:"Select a workspace first."})},L();return}if(M.length===0){i={mode:"main",shell:W({...B,taskPromptError:"Task prompt cannot be empty."})},L();return}p=!0,i={mode:"main",shell:W({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},L();let O=null;try{O=await Yh(r,B.selectedRepoId,B.selectedWorkspaceId,M,B.selectedRunner),await U();let N=W({...i.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",taskPromptInput:null,taskPromptError:null,actionMessage:null}),q=await z.ensureSession(O.id,N.selectedPtyTabId??pa(O,"agent"),zs(vt(_.width,_.height)));h=Vs(N.selectedPtyTabId),i={mode:"main",shell:Ut(N,q)},l(i.shell)}catch(N){N instanceof Dr&&(O=N.task);let q=N instanceof Error?N.message:"Failed to create task.";O&&(await re(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:q}).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:W({...i.shell,inputMode:"control",selectedTaskId:O?.id??i.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??i.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:i.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??i.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:q,actionMessage:null})}}finally{p=!1,L()}},wa=B=>{if(i.mode!=="main")return;let M=i.shell;if(M.taskPromptInput!==null){if(B==="ESCAPE"){i={mode:"main",shell:W({...M,taskPromptInput:null,taskPromptError:null,actionMessage:null})},L();return}if(rt(B)){_a();return}if(B==="BACKSPACE"){i={mode:"main",shell:W({...M,taskPromptInput:M.taskPromptInput.slice(0,-1),taskPromptError:null})},L();return}if(B==="CTRL_R"){i={mode:"main",shell:W({...M,selectedRunner:Ss(M.selectedRunner,o),taskPromptError:null})},L();return}oo(B)&&(i={mode:"main",shell:W({...M,taskPromptInput:`${M.taskPromptInput}${B}`,taskPromptError:null})},L())}},ka=B=>{if(i.mode!=="main")return;let M=i.shell.workspaceBrowser;if(M){if(B==="ESCAPE"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,actionMessage:null})},L();return}if(B==="UP"||B==="k"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.max(0,M.selectedIndex-1),error:null}})},L();return}if(B==="DOWN"||B==="j"){let O=Math.max(0,M.entries.length-1);i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.min(O,M.selectedIndex+1),error:null}})},L();return}if(B==="LEFT"||B==="h"){te(Tt.dirname(M.cwd)).catch(O=>{let N=O instanceof Error?O.message:"Failed to open parent directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:N}})},L()});return}if(B==="RIGHT"||B==="l"||rt(B)){let O=M.entries[M.selectedIndex]??null;if(!O)return;if((B==="RIGHT"||B==="l")&&(O.kind==="directory"||O.kind==="repo")){te(O.path).catch(N=>{let q=N instanceof Error?N.message:"Failed to open directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:q}})},L()});return}$t(r,O.path).then(async N=>{await U();let q=N.repos[0]??null;i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${N.workspace.id}`,selectedWorkspaceId:N.workspace.id,selectedRepoId:q?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${N.workspace.name??N.workspace.id}`})},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to add workspace.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:q}})},L()})}}},Xs=B=>{let M=typeof B=="string"?B:"";if(i.mode==="main"&&i.shell.taskPromptInput!==null){wa(M);return}if(i.mode==="main"&&i.shell.workspaceBrowser!==null){ka(M);return}if(i.mode==="main"){let O=io(i.shell,M,R(i.shell));if(O.exit){Mr(0);return}if(O.detachTerminal){z.detach(),i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(i.shell.inputMode==="terminal"){if(O.changed){i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(h&&rt(M)){h=!1;return}h&&(h=!1),d=Zh(M)?{key:M,at:Date.now()}:null;let N=ef(M,i.shell.terminal.scrolledBack??!1);if(N!==0){Or(N);return}z.writeKey(M);return}if(M==="CTRL_C"){Mr(0);return}if(M==="?"&&i.shell.inputMode==="control"){i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell},x=!0,L();return}if(O.pause){i={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:W(O.state)},x=!0,L();return}if(O.beginTaskPrompt){i={mode:"main",shell:W(O.state)},l(i.shell),L();return}if(O.openWorkspaceBrowser){te(t).catch(N=>{let q=N instanceof Error?N.message:"Failed to browse workspaces.";i={mode:"main",shell:W({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:q}})},L()});return}if(O.createPtyTab){Y(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(N=>{I(N)}).catch(N=>{let q=N instanceof Error?N.message:"Failed to create tab.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.closePtyTab){ee(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to close tab.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.syncPullRequest){ke(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to create or sync PR.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.refreshPullRequestChecks){be(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh PR checks.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.mergeTask){xe(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to merge PR.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.closeTask){Ue(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to close task.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.removeWorkspace){it(O.state).then(N=>{i={mode:"main",shell:N},l(i.shell),L()}).catch(N=>{let q=N instanceof Error?N.message:"Failed to remove workspace.";i={mode:"main",shell:W({...O.state,actionMessage:q})},L()});return}if(O.attachTerminal){I(O.state);return}if(O.refreshInspection){i={mode:"main",shell:W(O.state)},l(i.shell),L(),V(i.shell).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:q})},L()});return}O.changed&&(i={mode:"main",shell:W(O.state)},j(i.shell).catch(()=>{}),l(i.shell),L());return}if(i.variant==="help"){i.viaOptions&&i.parentVariant?i={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:i.shell,parentVariant:i.parentVariant}:i.parentVariant?i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell}:i={mode:"main",shell:W(i.shell)},x=!0,L();return}if(i.variant==="options"){ba(M);return}if(i.variant==="runners"){ya(M);return}if(i.optionsMessage){(M==="ESCAPE"||rt(M))&&(i={...i,optionsMessage:null},L());return}if(M==="UP"||M==="k"){i={...i,menuIndex:Math.max(0,i.menuIndex-1)},L();return}if(M==="DOWN"||M==="j"){i={...i,menuIndex:Math.min(2,i.menuIndex+1)},L();return}if(M==="ESCAPE"){i.variant==="pause"&&(i={mode:"main",shell:W(i.shell)},x=!0,L());return}if(rt(M)){if(i.menuIndex===0){i={mode:"main",shell:W({...i.shell,inputMode:"control"})},x=!0,L(),C();return}if(i.menuIndex===1){let O=i.variant==="boot"||i.variant==="pause"?i.variant:void 0;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}Mr(0)}};function ba(B){if(i.mode!=="overlay"||i.variant!=="options")return;let M=ca(i.menuIndex,B);if(M.kind!=="noop"){if(M.kind==="render"){i={...i,menuIndex:M.menuIndex},L();return}if(M.kind==="back"){i.parentVariant&&(i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell},x=!0,L());return}if(M.kind==="help"){let O=i.parentVariant;i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="runners"){let O=i.parentVariant;i={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L()}}}function ya(B){if(i.mode!=="overlay"||i.variant!=="runners")return;let M=la(Vt(i),s,B,o);if(M.kind!=="noop"){if(M.kind==="back"){let O=i.parentVariant;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="render"){i={...i,runnerOptions:M.state},L();return}F(M.config).then(()=>{i.mode!=="overlay"||i.variant!=="runners"||(i={...i,runnerOptions:M.state},L())}).catch(O=>{if(i.mode!=="overlay"||i.variant!=="runners")return;let N=O instanceof Error?O.message:"Failed to save runner option.";i={...i,runnerOptions:{...Vt(i),message:N}},L()})}}let Ys=B=>{let M=Qh(B);if(i.mode!=="main"||i.shell.inputMode!=="terminal"||M.length===0)return;if(M.includes("")){z.detach(),h=!1,d=null,i={mode:"main",shell:W({...i.shell,inputMode:"control",actionMessage:null})},l(i.shell),L();return}let O=tf(M);if(O!==0){Or(O);return}let N=rf(M);if(N){h=!1,d={key:N,at:Date.now()},z.writeKey(N);return}if(h&&M!=="\r"&&M!==`
162
163
  `&&M!==`\r
163
- `&&(f=!1),rf(f,d,M)){f=!1;return}z.write(M)},Js=B=>{if(i.mode!=="main")return;if(i.shell.inputMode==="control"){Sa(ua(B));return}let M=ua(B);M!==0&&Or(M)};function Or(B){u+=B,!S&&(S=setTimeout(()=>{S=null;let M=u;u=0,M!==0&&(va(M),L())},16))}function va(B){z.scrollViewport(B),i={mode:"main",shell:X(i.shell)}}function Sa(B){B!==0&&(b+=B,!P&&(P=setTimeout(()=>{P=null;let M=b;if(b=0,M===0||i.mode!=="main"||i.shell.inputMode!=="control")return;let O=tt(i.shell,M,R(i.shell));if(O.changed){if(O.refreshInspection){i={mode:"main",shell:W(O.state)},l(i.shell),L(),V(i.shell).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:q})},L()});return}i={mode:"main",shell:W(O.state)},l(i.shell),L()}},16)))}let Qs=()=>{x=!0,i.mode==="main"&&i.shell.inputMode==="terminal"&&(z.resize(zs(vt(_.width,_.height))),i={mode:"main",shell:X(i.shell)}),L()};process.stdout.on("resize",Qs),_.grabInput(!0),A="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Xs),_.on("unknown",Ys),_.on("mouse",Js),H=setInterval(()=>{Xe()},(s.github?.watchIntervalSeconds??5)*1e3),L()})}async function zt(e,t,r){let s=Ke(e),[o,g,y]=await Promise.all([ut(s),Me(s),Ne(s)]),n=fa(y.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},h=n?await xn(n,c):null;return{workspaceRoot:e,workspaces:g.filter(k=>k.status==="active"),repos:o,tasks:y.tasks,inspection:h,...r?{enabledRunnerIds:r}:{}}}function fa(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function Uh(e,t){return _r(e,t)}function qh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let g=1;g<o.length;g+=1)if(r.has(o.slice(0,g).join("/")))return!1;return!0})}function Kh(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 zh(e,t,r){let s=e.tasks.find(n=>n.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(n=>n.id===t)??null,g=s?.worktreePath??r,y=o?.kind==="agent"?Gh(o):[];return s?.type==="project"?{cwd:g,command:y,env:{GIT_CEILING_DIRECTORIES:Vh(process.env.GIT_CEILING_DIRECTORIES,g)}}:{cwd:g,command:y}}function Vh(e,t){let r=(e??"").split(Tt.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(Tt.delimiter):[...r,t].join(Tt.delimiter)}function Gh(e){return e.command.length>0?e.command:["codex"]}function Vt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Xh(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function da(e,t,r,s={}){let o=r??e.runner,g=ye(o),y=t==="agent"?g.defaultAgentTitle:"Terminal",n=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),h=1,k=n;for(;c.has(k);)h+=1,k=`${n}-${h}`;let a=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:k,kind:t,...w?{runner:w}:{},title:h===1?y:`${y} ${h}`,command:t==="agent"?_e(o,void 0,s):[],createdAt:a,updatedAt:a}}async function Yh(e,t,r,s,o){let g=await ve(e);Gt(o,g);let y=r?await nr(e,r,s,{runner:o,config:g}):await At(e,t??"",s,{runner:o,config:g});try{let h=lt();await J(dt(Fr(o,g).executable,{cwd:y.repoRoot,env:h}),["--help"],{cwd:y.repoRoot,env:h})}catch(h){let k=h instanceof Error?h.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:k};throw await re(e,a),new Dr(k,a)}let n=pa(y.task,"agent"),c={...y.task,status:"running",selectedPtyTabId:n,runnerSession:{...y.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await re(e,c),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),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 Dr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function pa(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 zs(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 Jh(e){return e.split(`
164
- `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function Qh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Zh(e){return e.length===1||rt(e)||e==="BACKSPACE"||e==="TAB"}function Vs(e){return typeof e=="string"&&new RegExp(`:(?:agent|${le.join("|")})(?:-\\d+)?$`).test(e)}function ef(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 ua(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function tf(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 rf(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
164
+ `&&(h=!1),sf(h,d,M)){h=!1;return}z.write(M)},Js=B=>{if(i.mode!=="main")return;if(i.shell.inputMode==="control"){Sa(ua(B));return}let M=ua(B);M!==0&&Or(M)};function Or(B){u+=B,!S&&(S=setTimeout(()=>{S=null;let M=u;u=0,M!==0&&(va(M),L())},16))}function va(B){z.scrollViewport(B),i={mode:"main",shell:X(i.shell)}}function Sa(B){B!==0&&(b+=B,!P&&(P=setTimeout(()=>{P=null;let M=b;if(b=0,M===0||i.mode!=="main"||i.shell.inputMode!=="control")return;let O=tt(i.shell,M,R(i.shell));if(O.changed){if(O.refreshInspection){i={mode:"main",shell:W(O.state)},l(i.shell),L(),V(i.shell).catch(N=>{let q=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:q})},L()});return}i={mode:"main",shell:W(O.state)},l(i.shell),L()}},16)))}let Qs=()=>{x=!0,i.mode==="main"&&i.shell.inputMode==="terminal"&&(z.resize(zs(vt(_.width,_.height))),i={mode:"main",shell:X(i.shell)}),L()};process.stdout.on("resize",Qs),_.grabInput(!0),A="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Xs),_.on("unknown",Ys),_.on("mouse",Js),H=setInterval(()=>{Xe()},(s.github?.watchIntervalSeconds??5)*1e3),L()})}async function zt(e,t,r){let s=Ke(e),[o,g,y]=await Promise.all([ut(s),Me(s),Ne(s)]),n=fa(y.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},f=n?await xn(n,c):null;return{workspaceRoot:e,workspaces:g.filter(k=>k.status==="active"),repos:o,tasks:y.tasks,inspection:f,...r?{enabledRunnerIds:r}:{}}}function fa(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function Uh(e,t){return _r(e,t)}function qh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let g=1;g<o.length;g+=1)if(r.has(o.slice(0,g).join("/")))return!1;return!0})}function Kh(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 zh(e,t,r){let s=e.tasks.find(n=>n.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(n=>n.id===t)??null,g=s?.worktreePath??r,y=o?.kind==="agent"?Gh(o):[];return s?.type==="project"?{cwd:g,command:y,env:{GIT_CEILING_DIRECTORIES:Vh(process.env.GIT_CEILING_DIRECTORIES,g)}}:{cwd:g,command:y}}function Vh(e,t){let r=(e??"").split(Tt.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(Tt.delimiter):[...r,t].join(Tt.delimiter)}function Gh(e){return e.command.length>0?e.command:["codex"]}function Vt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Xh(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function da(e,t,r,s={}){let o=r??e.runner,g=ye(o),y=t==="agent"?g.defaultAgentTitle:"Terminal",n=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),f=1,k=n;for(;c.has(k);)f+=1,k=`${n}-${f}`;let a=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:k,kind:t,...w?{runner:w}:{},title:f===1?y:`${y} ${f}`,command:t==="agent"?_e(o,void 0,s):[],createdAt:a,updatedAt:a}}async function Yh(e,t,r,s,o){let g=await ve(e);Gt(o,g);let y=r?await nr(e,r,s,{runner:o,config:g}):await At(e,t??"",s,{runner:o,config:g});try{let f=lt();await J(dt(Fr(o,g).executable,{cwd:y.repoRoot,env:f}),["--help"],{cwd:y.repoRoot,env:f})}catch(f){let k=f instanceof Error?f.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:k};throw await re(e,a),new Dr(k,a)}let n=pa(y.task,"agent"),c={...y.task,status:"running",selectedPtyTabId:n,runnerSession:{...y.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await re(e,c),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),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 Dr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function pa(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 zs(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 Jh(e){return e.split(`
165
+ `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function Qh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Zh(e){return e.length===1||rt(e)||e==="BACKSPACE"||e==="TAB"}function Vs(e){return typeof e=="string"&&new RegExp(`:(?:agent|${le.join("|")})(?:-\\d+)?$`).test(e)}function ef(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 ua(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function tf(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 rf(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function sf(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
165
166
  `||r===`\r
166
- `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function sf(e){let t=await Fh(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=Tt.join(e,s.name);r.push({name:s.name,path:o,kind:await nf(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 nf(e){let t=Tt.join(e,".git");return await Wh(t).catch(()=>null)!==null}function Lr(){return process.cwd()}async function of(){try{if(process.argv[2]==="__craig-daemon"){let n=process.argv[3]??Lr(),c=Ke(n);return await yt(n),await Bo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let n=process.argv[3]??Lr(),c=Ke(n);return await yt(n),await $o(c),0}let e=ei(process.argv.slice(2)),t=Lr(),r=Ke(t),s=await yt(t),o={paths:r};if(e.mode==="interactive")return await ha({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let g=await Rn(e.command,o),y=Cn(g);return y.length>0&&process.stdout.write(`${y}
167
+ `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function nf(e){let t=await Fh(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=Tt.join(e,s.name);r.push({name:s.name,path:o,kind:await of(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 of(e){let t=Tt.join(e,".git");return await Wh(t).catch(()=>null)!==null}function Lr(){return process.cwd()}async function af(){try{if(process.argv[2]==="__craig-daemon"){let n=process.argv[3]??Lr(),c=Ke(n);return await yt(n),await Bo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let n=process.argv[3]??Lr(),c=Ke(n);return await yt(n),await $o(c),0}let e=ei(process.argv.slice(2)),t=Lr(),r=Ke(t),s=await yt(t),o={paths:r};if(e.mode==="interactive")return await ha({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let g=await Rn(e.command,o),y=Cn(g);return y.length>0&&process.stdout.write(`${y}
167
168
  `),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
168
- `),1}}var af=await of();process.exit(af);
169
+ `),1}}var cf=await af();process.exit(cf);