craig-cli 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +65 -65
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
3
|
-
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await sc(s,e)}catch(p){throw await o.close().catch(()=>{}),await nc(s,{force:!0}).catch(()=>{}),p}}var Ue=We(()=>{"use strict"});import{readFile as uc}from"node:fs/promises";async function Ce(e){let t=await uc(e.indexFile,"utf8"),r=JSON.parse(t);return Hr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await he(e.indexFile,r)}function Hr(e,t,r){if(!hc(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 hc(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=We(()=>{"use strict";Ue()});import{readFile as fc}from"node:fs/promises";async function fe(e,t){let r=await fc(Ur(e,t),"utf8"),s=JSON.parse(r);return pc(s,Ur(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await he(Ur(e,t.id),r)}async function qr(e,t){let r=await Ce(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function Ur(e,t){return`${e.tasksDir}/${t}.json`}function pc(e,t){let r=gc(e);if(!_c(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function gc(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Kr(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:kc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:wc(t.repoTargets),runnerSession:t.runnerSession??mc(t),checks:Cc(t),lastCommit:t.lastCommit??null,prs:Ic(t),artifacts:Dc(t),cleanup:Lc(t)}}function mc(e){if(typeof e.title!="string")return null;let t=Kr(e.runner);return{command:_e(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function _c(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.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"&&ln(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||bc(t.repoTargets))&&vc(t.runnerSession)&&Sc(t.prompt)&&dn(t.checks)&&un(t.lastCommit)&&Rc(t.prs)&&Pc(t.artifacts)&&fn(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function wc(e){if(Array.isArray(e))return e.filter(cn)}function bc(e){return Array.isArray(e)&&e.every(cn)}function cn(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)&&dn(t.checks)&&un(t.lastCommit)&&hn(t.pullRequest)&&fn(t.cleanup)}function kc(e){if(ln(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 yc(e.id,e.title,t,Kr(e.runner))}function yc(e,t,r,s){let o=Se(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 Kr(e){return e&>(e)?e:"codex"}function ln(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 vc(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 Sc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function dn(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 un(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function hn(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&Tc(e.requiredChecks)}function Tc(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))}function Rc(e){return Array.isArray(e)&&e.every(hn)}function Pc(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 fn(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 Cc(e){return e.checks?{...e.checks,results:e.checks.results??[]}:{source:{type:"repo_config",path:".craig/config.json"},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Ic(e){if(Array.isArray(e.prs))return e.prs.map(xc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:pn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:null,requiredChecks:gn(t.requiredChecks),comments:[],createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function xc(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:pn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:Ec(t.reviewDecision),requiredChecks:gn(t.requiredChecks),comments:Ac(t.comments),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function pn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function Ec(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function Ac(e){return Array.isArray(e)?e.flatMap(t=>{if(typeof t!="object"||t===null)return[];let r=t;return typeof r.body!="string"||!r.body.trim()?[]:[{author:typeof r.author=="string"?r.author:null,body:r.body,createdAt:typeof r.createdAt=="string"?r.createdAt:null,url:typeof r.url=="string"?r.url:null}]}):[]}function gn(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 Dc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Lc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Ie=We(()=>{"use strict";Ue();ot();Me()});import{readFile as Mc}from"node:fs/promises";async function Oe(e){try{let t=await Mc(e.uiStateFile,"utf8"),r=JSON.parse(t);return Oc(r,e.uiStateFile)}catch(t){if($c(t))return null;throw t}}async function xe(e,t){await he(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function qe(){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 Oc(e,t){if(typeof e!="object"||e===null||e.version!==1||!(e.selectedRepoId===null||typeof e.selectedRepoId=="string")||!(e.selectedWorkspaceId===null||typeof e.selectedWorkspaceId=="string")||!(e.selectedTaskId===null||typeof e.selectedTaskId=="string")||!(e.selectedPtyTabId===void 0||e.selectedPtyTabId===null||typeof e.selectedPtyTabId=="string")||!_t(e,"inputMode")||!_t(e,"focusedRegion")||!_t(e,"activeTab")||!_t(e,"inspectorSection")||!_t(e,"inspectionMode")||!zt(e,"openInspectionKind")||!zt(e,"selectedFileTreePath")||!zt(e,"selectedFilePath")||!zt(e,"selectedDiffPath")||!Bc(e,"collapsedFileTreePaths")||!_t(e,"selectedActionId")||typeof e.updatedAt!="string")throw new Error(`Craig UI state at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}function _t(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function zt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Bc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function $c(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=We(()=>{"use strict";Ue()});import{execFile as Fc}from"node:child_process";import{promisify as Nc}from"node:util";async function ee(e,t,r={}){try{let s=await mn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(_n(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await mn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(_n(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function _n(e){return e instanceof Error}var mn,Ee=We(()=>{"use strict";mn=Nc(Fc)});import{readFile as rl,readdir as sl,rm as nl}from"node:fs/promises";import Cn from"node:path";async function Be(e,t){let r=await rl(Xt(e,t),"utf8"),s=JSON.parse(r);return il(s,Xt(e,t))}async function Qt(e,t){await he(Xt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await sl(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Be(e,Cn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function In(e,t){await nl(Xt(e,t),{force:!0})}function Xt(e,t){return Cn.join(e.reposDir,`${t}.json`)}function il(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=We(()=>{"use strict";Ue()});import{readFile as ol,readdir as al,rm as cl}from"node:fs/promises";import xn from"node:path";async function Pt(e,t){let r=await ol(Jt(e,t),"utf8"),s=JSON.parse(r);return ll(s,Jt(e,t))}async function bt(e,t){await he(Jt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function $e(e){let t=await al(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,xn.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function En(e,t){await cl(Jt(e,t),{force:!0})}function Jt(e,t){return xn.join(e.workspacesDir,`${t}.json`)}function ll(e,t){let r=dl(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 dl(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=We(()=>{"use strict";Ue()});async function Ke(e,t){let r=await Ce(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await fe(e,i))}catch(c){if(wl(c)){o.push(i);return}throw c}}));let k=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return k.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:k,missingTaskIds:o,repoId:t?.repoId??null}}function wl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Et=We(()=>{"use strict";ot();Ie()});var ki={};Ka(ki,{addWorkspace:()=>Lt,archiveWorkspace:()=>Mt,listWorkspaces:()=>hs,removeWorkspace:()=>Ot,removeWorkspaceRecord:()=>lr,restoreWorkspace:()=>fs});import{readdir as rd,realpath as hi,stat as sd}from"node:fs/promises";import et from"node:path";async function Lt(e,t){let r=et.resolve(e.workspaceRoot,t);if(!(await sd(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await _i(r)?nd(e,r):id(e,r)}async function hs(e,t){return{kind:"listWorkspaces",workspaces:(await $e(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Mt(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await bi(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 Oe({uiStateFile:e.uiStateFile})??null;return await xe({uiStateFile:e.uiStateFile},{...o??qe(),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 Ot(e,t){let r=await Pt(e,t),s=await Ke(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 lr(e,t),await bi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function nd(e,t){let r=await wi(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?pi(o,r):fi(s,t,r),k=`workspace_${p.id}`,c=(await $e(e)).find(a=>a.id===k)??null,d=new Date().toISOString(),_=c??{id:k,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Qt(e,p),c||await bt(e,_),await gi(e,{repoIds:[p.id],workspaceIds:[_.id]}),await mi(e,_,p.id),{kind:"createWorkspace",workspace:_,repos:[p],created:!c}}async function id(e,t){let r=await od(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await $e(e),o=cd(s,et.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,k=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:et.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:k,updatedAt:k};return await Promise.all(r.map(d=>Qt(e,d))),await bt(e,c),await gi(e,{repoIds:i,workspaceIds:[c.id]}),await mi(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function od(e,t){let r=await rd(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let k=et.join(t,p.name);if(!await _i(k))continue;let i=s.find(d=>d.rootPath===k)??o.find(d=>d.rootPath===k),c=await wi(k);o.push(i?pi(i,c):fi([...s,...o],k,c))}return o.sort((p,k)=>p.name.localeCompare(k.name)||p.id.localeCompare(k.id))}function fi(e,t,r){let s=new Date().toISOString();return{id:ad(e,et.basename(t)),name:et.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function pi(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function ad(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function cd(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function gi(e,t){let r=await Ce(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function mi(e,t,r){await xe({uiStateFile:e.uiStateFile},{...await Oe({uiStateFile:e.uiStateFile})??qe(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function _i(e){try{let r=(await ee("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([hi(r).catch(()=>et.resolve(r)),hi(e).catch(()=>et.resolve(e))]);return s===o}catch{return!1}}async function wi(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await ee("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function lr(e,t){await En(e,t);let r=await Ce(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function bi(e,t){let r=await Oe({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await xe({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Bt=We(()=>{"use strict";ot();dt();Ct();wt();Ee();Et()});var Do=qa(Ao=>{(()=>{"use strict";var e={5639:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new _.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new _.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new _.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let w=0;w<Math.min(l,this.length);w++)m[w]=this._array[this._getCyclicIndex(w)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,...w){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+w.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<w.length;n++)this._array[this._getCyclicIndex(l+n)]=w[n];if(w.length&&this.onInsertEmitter.fire({index:l,amount:w.length}),this._length+w.length>this._maxLength){let n=this._length+w.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=w.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,w){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(let g=m-1;g>=0;g--)this.set(l+g+w,this.get(l+g));let n=l+m+w-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+w,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,_=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let b in d)a[b]=_<=1?d[b]:d[b]&&c(d[b],_-1);return a}},5777:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),_=c(6025),a=c(7276),b=c(9640),l=c(56),m=c(4071),w=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),S=c(802),I=c(7150),x=!1;class N extends I.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new I.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 _.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(b.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(w.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,b.MINIMUM_COLS),A=Math.max(A,b.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,I.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=N},2486:function(k,i,c){var d=this&&this.__decorate||function(B,v,P,R){var T,$=arguments.length,W=$<3?v:R===null?R=Object.getOwnPropertyDescriptor(v,P):R;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(B,v,P,R);else for(var H=B.length-1;H>=0;H--)(T=B[H])&&(W=($<3?T(W):$>3?T(v,P,W):T(v,P))||W);return $>3&&W&&Object.defineProperty(v,P,W),W},_=this&&this.__param||function(B,v){return function(P,R){v(P,R,B)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=G;let a=c(3534),b=c(6760),l=c(6717),m=c(7150),w=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),S=c(1346),I=c(9823),x=c(8693),N=c(802),F={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(B,v){if(B>24)return v.setWinLines||!1;switch(B){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var E;(function(B){B[B.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",B[B.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let U=0;class z extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,P,R,T,$,W,H,K,re=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=P,this._coreService=R,this._logService=T,this._optionsService=$,this._oscLinkService=W,this._coreMouseService=H,this._unicodeService=K,this._parser=re,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new w.StringToUtf32,this._utf8Decoder=new w.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new V(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((C=>this._activeBuffer=C.activeBuffer))),this._parser.setCsiHandlerFallback(((C,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(C),params:Q.toArray()})})),this._parser.setEscHandlerFallback((C=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(C)})})),this._parser.setExecuteHandlerFallback((C=>{this._logService.debug("Unknown EXECUTE code: ",{code:C})})),this._parser.setOscHandlerFallback(((C,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:C,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((C,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(C),action:Q,payload:Y})})),this._parser.setPrintHandler(((C,Q,Y)=>this.print(C,Q,Y))),this._parser.registerCsiHandler({final:"@"},(C=>this.insertChars(C))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(C=>this.scrollLeft(C))),this._parser.registerCsiHandler({final:"A"},(C=>this.cursorUp(C))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(C=>this.scrollRight(C))),this._parser.registerCsiHandler({final:"B"},(C=>this.cursorDown(C))),this._parser.registerCsiHandler({final:"C"},(C=>this.cursorForward(C))),this._parser.registerCsiHandler({final:"D"},(C=>this.cursorBackward(C))),this._parser.registerCsiHandler({final:"E"},(C=>this.cursorNextLine(C))),this._parser.registerCsiHandler({final:"F"},(C=>this.cursorPrecedingLine(C))),this._parser.registerCsiHandler({final:"G"},(C=>this.cursorCharAbsolute(C))),this._parser.registerCsiHandler({final:"H"},(C=>this.cursorPosition(C))),this._parser.registerCsiHandler({final:"I"},(C=>this.cursorForwardTab(C))),this._parser.registerCsiHandler({final:"J"},(C=>this.eraseInDisplay(C,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(C=>this.eraseInDisplay(C,!0))),this._parser.registerCsiHandler({final:"K"},(C=>this.eraseInLine(C,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(C=>this.eraseInLine(C,!0))),this._parser.registerCsiHandler({final:"L"},(C=>this.insertLines(C))),this._parser.registerCsiHandler({final:"M"},(C=>this.deleteLines(C))),this._parser.registerCsiHandler({final:"P"},(C=>this.deleteChars(C))),this._parser.registerCsiHandler({final:"S"},(C=>this.scrollUp(C))),this._parser.registerCsiHandler({final:"T"},(C=>this.scrollDown(C))),this._parser.registerCsiHandler({final:"X"},(C=>this.eraseChars(C))),this._parser.registerCsiHandler({final:"Z"},(C=>this.cursorBackwardTab(C))),this._parser.registerCsiHandler({final:"`"},(C=>this.charPosAbsolute(C))),this._parser.registerCsiHandler({final:"a"},(C=>this.hPositionRelative(C))),this._parser.registerCsiHandler({final:"b"},(C=>this.repeatPrecedingCharacter(C))),this._parser.registerCsiHandler({final:"c"},(C=>this.sendDeviceAttributesPrimary(C))),this._parser.registerCsiHandler({prefix:">",final:"c"},(C=>this.sendDeviceAttributesSecondary(C))),this._parser.registerCsiHandler({final:"d"},(C=>this.linePosAbsolute(C))),this._parser.registerCsiHandler({final:"e"},(C=>this.vPositionRelative(C))),this._parser.registerCsiHandler({final:"f"},(C=>this.hVPosition(C))),this._parser.registerCsiHandler({final:"g"},(C=>this.tabClear(C))),this._parser.registerCsiHandler({final:"h"},(C=>this.setMode(C))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(C=>this.setModePrivate(C))),this._parser.registerCsiHandler({final:"l"},(C=>this.resetMode(C))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(C=>this.resetModePrivate(C))),this._parser.registerCsiHandler({final:"m"},(C=>this.charAttributes(C))),this._parser.registerCsiHandler({final:"n"},(C=>this.deviceStatus(C))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(C=>this.deviceStatusPrivate(C))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(C=>this.softReset(C))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(C=>this.setCursorStyle(C))),this._parser.registerCsiHandler({final:"r"},(C=>this.setScrollRegion(C))),this._parser.registerCsiHandler({final:"s"},(C=>this.saveCursor(C))),this._parser.registerCsiHandler({final:"t"},(C=>this.windowOptions(C))),this._parser.registerCsiHandler({final:"u"},(C=>this.restoreCursor(C))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(C=>this.insertColumns(C))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(C=>this.deleteColumns(C))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(C=>this.selectProtected(C))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(C=>this.requestMode(C,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(C=>this.requestMode(C,!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((C=>(this.setTitle(C),this.setIconName(C),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((C=>this.setIconName(C)))),this._parser.registerOscHandler(2,new S.OscHandler((C=>this.setTitle(C)))),this._parser.registerOscHandler(4,new S.OscHandler((C=>this.setOrReportIndexedColor(C)))),this._parser.registerOscHandler(8,new S.OscHandler((C=>this.setHyperlink(C)))),this._parser.registerOscHandler(10,new S.OscHandler((C=>this.setOrReportFgColor(C)))),this._parser.registerOscHandler(11,new S.OscHandler((C=>this.setOrReportBgColor(C)))),this._parser.registerOscHandler(12,new S.OscHandler((C=>this.setOrReportCursorColor(C)))),this._parser.registerOscHandler(104,new S.OscHandler((C=>this.restoreIndexedColor(C)))),this._parser.registerOscHandler(110,new S.OscHandler((C=>this.restoreFgColor(C)))),this._parser.registerOscHandler(111,new S.OscHandler((C=>this.restoreBgColor(C)))),this._parser.registerOscHandler(112,new S.OscHandler((C=>this.restoreCursorColor(C)))),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 C in b.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:C},(()=>this.selectCharset("("+C))),this._parser.registerEscHandler({intermediates:")",final:C},(()=>this.selectCharset(")"+C))),this._parser.registerEscHandler({intermediates:"*",final:C},(()=>this.selectCharset("*"+C))),this._parser.registerEscHandler({intermediates:"+",final:C},(()=>this.selectCharset("+"+C))),this._parser.registerEscHandler({intermediates:"-",final:C},(()=>this.selectCharset("-"+C))),this._parser.registerEscHandler({intermediates:".",final:C},(()=>this.selectCharset("."+C))),this._parser.registerEscHandler({intermediates:"/",final:C},(()=>this.selectCharset("/"+C)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((C=>(this._logService.error("Parsing error: ",C),C))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new I.DcsHandler(((C,Q)=>this.requestStatusString(C,Q))))}_preserveStack(v,P,R,T){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=P,this._parseStack.decodedLength=R,this._parseStack.position=T}_logSlowResolvingAsync(v){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([v,new Promise(((P,R)=>setTimeout((()=>R("#SLOW_TIMEOUT")),5e3)))]).catch((P=>{if(P!=="#SLOW_TIMEOUT")throw P;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,P){let R,T=this._activeBuffer.x,$=this._activeBuffer.y,W=0,H=this._parseStack.paused;if(H){if(R=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,P))return this._logSlowResolvingAsync(R),R;T=this._parseStack.cursorStartX,$=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(W=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(C=>String.fromCharCode(C))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((C=>C.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),H||this._dirtyRowTracker.clearRange(),v.length>D)for(let C=W;C<v.length;C+=D){let Q=C+D<v.length?C+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(C,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(C,Q),this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(T,$,Y,C),this._logSlowResolvingAsync(R),R}else if(!H){let C=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,C))return this._preserveStack(T,$,C,0),this._logSlowResolvingAsync(R),R}this._activeBuffer.x===T&&this._activeBuffer.y===$||this._onCursorMove.fire();let K=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),re=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);re<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(re,this._bufferService.rows-1),end:Math.min(K,this._bufferService.rows-1)})}print(v,P,R){let T,$,W=this._charsetService.charset,H=this._optionsService.rawOptions.screenReaderMode,K=this._bufferService.cols,re=this._coreService.decPrivateModes.wraparound,C=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&&R-P>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let J=this._parser.precedingJoinState;for(let ye=P;ye<R;++ye){if(T=v[ye],T<127&&W){let De=W[String.fromCharCode(T)];De&&(T=De.charCodeAt(0))}let ve=this._unicodeService.charProperties(T,J);$=y.UnicodeService.extractWidth(ve);let le=y.UnicodeService.extractShouldJoin(ve),Re=le?y.UnicodeService.extractWidth(J):0;if(J=ve,H&&this._onA11yChar.fire((0,w.stringFromCodePoint)(T)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+$-Re>K){if(re){let De=Y,Je=this._activeBuffer.x-Re;for(this._activeBuffer.x=Re,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),Re>0&&Y instanceof n.BufferLine&&Y.copyCellsFrom(De,Je,0,Re,!1);Je<K;)De.setCellFromCodepoint(Je++,0,1,Q)}else if(this._activeBuffer.x=K-1,$===2)continue}if(le&&this._activeBuffer.x){let De=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-De,T,$);for(let Je=$-Re;--Je>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(C&&(Y.insertCells(this._activeBuffer.x,$-Re,this._activeBuffer.getNullCell(Q)),Y.getWidth(K-1)===2&&Y.setCellFromCodepoint(K-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,T,$,Q),$>0)for(;--$;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=J,this._activeBuffer.x<K&&R-P>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,P){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,P):this._parser.registerCsiHandler(v,(R=>!A(R.params[0],this._optionsService.rawOptions.windowOptions)||P(R)))}registerDcsHandler(v,P){return this._parser.registerDcsHandler(v,new I.DcsHandler(P))}registerEscHandler(v,P){return this._parser.registerEscHandler(v,P)}registerOscHandler(v,P){return this._parser.registerOscHandler(v,new S.OscHandler(P))}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,P){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+P):(this._activeBuffer.x=v,this._activeBuffer.y=P),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,P){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+P)}cursorUp(v){let P=this._activeBuffer.y-this._activeBuffer.scrollTop;return P>=0?this._moveCursor(0,-Math.min(P,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let P=this._activeBuffer.scrollBottom-this._activeBuffer.y;return P>=0?this._moveCursor(0,Math.min(P,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 P=v.params[0];return P===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:P===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let P=v.params[0];return P===1&&(this._curAttrData.bg|=536870912),P!==2&&P!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,P,R,T=!1,$=!1){let W=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);W.replaceCells(P,R,this._activeBuffer.getNullCell(this._eraseAttrData()),$),T&&(W.isWrapped=!1)}_resetBufferLine(v,P=!1){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);R&&(R.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),P),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),R.isWrapped=!1)}eraseInDisplay(v,P=!1){let R;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);R<this._bufferService.rows;R++)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(R);break;case 1:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R,0,this._activeBuffer.x+1,!0,P),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(R+1).isWrapped=!1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(R=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,R-1);R--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+R)?.getTrimmedLength(););for(;R>=0;R--)this._bufferService.scroll(this._eraseAttrData())}else{for(R=this._bufferService.rows,this._dirtyRowTracker.markDirty(R-1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0)}break;case 3:let T=this._activeBuffer.lines.length-this._bufferService.rows;T>0&&(this._activeBuffer.lines.trimStart(T),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-T,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-T,0),this._onScroll.fire(0))}return!0}eraseInLine(v,P=!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,P);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,P);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,P)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,$=this._bufferService.rows-1+this._activeBuffer.ybase-T+1;for(;P--;)this._activeBuffer.lines.splice($-1,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}deleteLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T;for(T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,T=this._bufferService.rows-1+this._activeBuffer.ybase-T;P--;)this._activeBuffer.lines.splice(R,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}insertChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.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 P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let P=v.params[0]||1;for(;P--;)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 P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.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 P=this._parser.precedingJoinState;if(!P)return!0;let R=v.params[0]||1,T=y.UnicodeService.extractWidth(P),$=this._activeBuffer.x-T,W=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString($),H=new Uint32Array(W.length*R),K=0;for(let C=0;C<W.length;){let Q=W.codePointAt(C)||0;H[K++]=Q,C+=Q>65535?2:1}let re=K;for(let C=1;C<R;++C)H.copyWithin(re,0,K),re+=K;return this.print(H,0,re),!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 P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),this._charsetService.setgCharset(1,b.DEFAULT_CHARSET),this._charsetService.setgCharset(2,b.DEFAULT_CHARSET),this._charsetService.setgCharset(3,b.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){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[P]===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,P){let R=this._coreService.decPrivateModes,{activeProtocol:T,activeEncoding:$}=this._coreMouseService,W=this._coreService,{buffers:H,cols:K}=this._bufferService,{active:re,alt:C}=H,Q=this._optionsService.rawOptions,Y=le=>le?1:2,J=v.params[0];return ye=J,ve=P?J===2?4:J===4?Y(W.modes.insertMode):J===12?3:J===20?Y(Q.convertEol):0:J===1?Y(R.applicationCursorKeys):J===3?Q.windowOptions.setWinLines?K===80?2:K===132?1:0:0:J===6?Y(R.origin):J===7?Y(R.wraparound):J===8?3:J===9?Y(T==="X10"):J===12?Y(Q.cursorBlink):J===25?Y(!W.isCursorHidden):J===45?Y(R.reverseWraparound):J===66?Y(R.applicationKeypad):J===67?4:J===1e3?Y(T==="VT200"):J===1002?Y(T==="DRAG"):J===1003?Y(T==="ANY"):J===1004?Y(R.sendFocus):J===1005?4:J===1006?Y($==="SGR"):J===1015?4:J===1016?Y($==="SGR_PIXELS"):J===1048?1:J===47||J===1047||J===1049?Y(re===C):J===2004?Y(R.bracketedPasteMode):J===2026?Y(R.synchronizedOutput):0,W.triggerDataEvent(`${a.C0.ESC}[${P?"":"?"}${ye};${ve}$y`),!0;var ye,ve}_updateAttrColor(v,P,R,T,$){return P===2?(v|=50331648,v&=-16777216,v|=u.AttributeData.fromColorRGB([R,T,$])):P===5&&(v&=-50331904,v|=33554432|255&R),v}_extractColor(v,P,R){let T=[0,0,-1,0,0,0],$=0,W=0;do{if(T[W+$]=v.params[P+W],v.hasSubParams(P+W)){let H=v.getSubParams(P+W),K=0;do T[1]===5&&($=1),T[W+K+1+$]=H[K];while(++K<H.length&&K+W+1+$<T.length);break}if(T[1]===5&&W+$>=2||T[1]===2&&W+$>=5)break;T[1]&&($=1)}while(++W+P<v.length&&W+$<T.length);for(let H=2;H<T.length;++H)T[H]===-1&&(T[H]=0);switch(T[0]){case 38:R.fg=this._updateAttrColor(R.fg,T[1],T[3],T[4],T[5]);break;case 48:R.bg=this._updateAttrColor(R.bg,T[1],T[3],T[4],T[5]);break;case 58:R.extended=R.extended.clone(),R.extended.underlineColor=this._updateAttrColor(R.extended.underlineColor,T[1],T[3],T[4],T[5])}return W}_processUnderline(v,P){P.extended=P.extended.clone(),(!~v||v>5)&&(v=1),P.extended.underlineStyle=v,P.fg|=268435456,v===0&&(P.fg&=-268435457),P.updateExtended()}_processSGR0(v){v.fg=n.DEFAULT_ATTR_DATA.fg,v.bg=n.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let P=v.length,R,T=this._curAttrData;for(let $=0;$<P;$++)R=v.params[$],R>=30&&R<=37?(T.fg&=-50331904,T.fg|=16777216|R-30):R>=40&&R<=47?(T.bg&=-50331904,T.bg|=16777216|R-40):R>=90&&R<=97?(T.fg&=-50331904,T.fg|=16777224|R-90):R>=100&&R<=107?(T.bg&=-50331904,T.bg|=16777224|R-100):R===0?this._processSGR0(T):R===1?T.fg|=134217728:R===3?T.bg|=67108864:R===4?(T.fg|=268435456,this._processUnderline(v.hasSubParams($)?v.getSubParams($)[0]:1,T)):R===5?T.fg|=536870912:R===7?T.fg|=67108864:R===8?T.fg|=1073741824:R===9?T.fg|=2147483648:R===2?T.bg|=134217728:R===21?this._processUnderline(2,T):R===22?(T.fg&=-134217729,T.bg&=-134217729):R===23?T.bg&=-67108865:R===24?(T.fg&=-268435457,this._processUnderline(0,T)):R===25?T.fg&=-536870913:R===27?T.fg&=-67108865:R===28?T.fg&=-1073741825:R===29?T.fg&=2147483647:R===39?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):R===49?(T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):R===38||R===48||R===58?$+=this._extractColor(v,$,T):R===53?T.bg|=1073741824:R===55?T.bg&=-1073741825:R===59?(T.extended=T.extended.clone(),T.extended.underlineColor=-1,T.updateExtended()):R===100?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",R);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${P};${R}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${P};${R}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let P=v.length===0?1:v.params[0];if(P===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(P){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 R=P%2==1;this._coreService.decPrivateModes.cursorBlink=R}return!0}setScrollRegion(v){let P=v.params[0]||1,R;return(v.length<2||(R=v.params[1])>this._bufferService.rows||R===0)&&(R=this._bufferService.rows),R>P&&(this._activeBuffer.scrollTop=P-1,this._activeBuffer.scrollBottom=R-1,this._setCursor(0,0)),!0}windowOptions(v){if(!A(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let P=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:P!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:P!==0&&P!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),P!==0&&P!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:P!==0&&P!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),P!==0&&P!==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 P=[],R=v.split(";");for(;R.length>1;){let T=R.shift(),$=R.shift();if(/^\d+$/.exec(T)){let W=parseInt(T);if(G(W))if($==="?")P.push({type:0,index:W});else{let H=(0,x.parseColor)($);H&&P.push({type:1,index:W,color:H})}}}return P.length&&this._onColor.fire(P),!0}setHyperlink(v){let P=v.indexOf(";");if(P===-1)return!0;let R=v.slice(0,P).trim(),T=v.slice(P+1);return T?this._createHyperlink(R,T):!R.trim()&&this._finishHyperlink()}_createHyperlink(v,P){this._getCurrentLinkId()&&this._finishHyperlink();let R=v.split(":"),T,$=R.findIndex((W=>W.startsWith("id=")));return $!==-1&&(T=R[$].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:T,uri:P}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,P){let R=v.split(";");for(let T=0;T<R.length&&!(P>=this._specialColors.length);++T,++P)if(R[T]==="?")this._onColor.fire([{type:0,index:this._specialColors[P]}]);else{let $=(0,x.parseColor)(R[T]);$&&this._onColor.fire([{type:1,index:this._specialColors[P],color:$}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let P=[],R=v.split(";");for(let T=0;T<R.length;++T)if(/^\d+$/.exec(R[T])){let $=parseInt(R[T]);G($)&&P.push({type:2,index:$})}return P.length&&this._onColor.fire(P),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset(F[v[0]],b.CHARSETS[v[1]]||b.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new f.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let P=0;P<this._bufferService.rows;++P){let R=this._activeBuffer.ybase+this._activeBuffer.y+P,T=this._activeBuffer.lines.get(R);T&&(T.fill(v),T.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,P){let R=this._bufferService.buffer,T=this._optionsService.rawOptions;return($=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${$}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${R.scrollTop+1};${R.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[T.cursorStyle]-(T.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,P){this._dirtyRowTracker.markRangeDirty(v,P)}}i.InputHandler=z;let V=class{constructor(B){this._bufferService=B,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(B){B<this.start?this.start=B:B>this.end&&(this.end=B)}markRangeDirty(B,v){B>v&&(U=B,B=v,v=U),B<this.start&&(this.start=B),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function G(B){return 0<=B&&B<256}V=d([_(0,h.IBufferService)],V)},701:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let _=c.match(/Version\/(\d+)/);return _===null||_.length<2?0:parseInt(_[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class _{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,w=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),w=Math.max(m,w),g=l.timeRemaining(),1.5*w>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends _{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends _{_requestCallback(b){return requestIdleCallback(b)}_cancelCallback(b){cancelIdleCallback(b)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(b){this._queue.clear(),this._queue.enqueue(b)}flush(){this._queue.flush()}}},5882:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(_){let a=_.buffer.lines.get(_.buffer.ybase+_.buffer.y-1),b=a?.get(_.cols-1),l=_.buffer.lines.get(_.buffer.ybase+_.buffer.y);l&&b&&(l.isWrapped=b[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&b[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,b=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=b}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),_=c(6168),a=c(5451),b=c(6107),l=c(732),m=c(3055),w=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=b.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,w.NULL_CELL_CHAR,w.NULL_CELL_WIDTH,w.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,w.WHITESPACE_CELL_CHAR,w.WHITESPACE_CELL_WIDTH,w.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new _.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new b.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=b.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(b.DEFAULT_ATTR_DATA),y=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let I=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new b.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+I+1?(this.ybase--,I++,this.ydisp>0&&this.ydisp--):this.lines.push(new b.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),I&&(this.y+=I),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let I=0;I<this.lines.length;I++)y+=+this.lines.get(I).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(b.DEFAULT_ATTR_DATA),h);if(y.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(b.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new b.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(b.DEFAULT_ATTR_DATA),S=[],I=0;for(let x=this.lines.length-1;x>=0;x--){let N=this.lines.get(x);if(!N||!N.isWrapped&&N.getTrimmedLength()<=f)continue;let F=[N];for(;N.isWrapped&&x>0;)N=this.lines.get(--x),F.unshift(N);if(!h){let R=this.ybase+this.y;if(R>=x&&R<x+F.length)continue}let D=F[F.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)(F,this._cols,f),E=A.length-F.length,U;U=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let z=[];for(let R=0;R<E;R++){let T=this.getBlankLine(b.DEFAULT_ATTR_DATA,!0);z.push(T)}z.length>0&&(S.push({start:x+F.length+I,newLines:z}),I+=z.length),F.push(...z);let V=A.length-1,G=A[V];G===0&&(V--,G=A[V]);let B=F.length-E-1,v=D;for(;B>=0;){let R=Math.min(v,G);if(F[V]===void 0)break;if(F[V].copyCellsFrom(F[B],v-R,G-R,R,!0),G-=R,G===0&&(V--,G=A[V]),v-=R,v===0){B--;let T=Math.max(B,0);v=(0,l.getWrappedLineTrimmedLength)(F,T,this._cols)}}for(let R=0;R<F.length;R++)A[R]<f&&F[R].setCell(A[R],y);let P=E-U;for(;P-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+I)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],N=[];for(let G=0;G<this.lines.length;G++)N.push(this.lines.get(G));let F=this.lines.length,D=F-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+I);let U=0;for(let G=Math.min(this.lines.maxLength-1,F+I-1);G>=0;G--)if(E&&E.start>D+U){for(let B=E.newLines.length-1;B>=0;B--)this.lines.set(G--,E.newLines[B]);G++,x.push({index:D+1,amount:E.newLines.length}),U+=E.newLines.length,E=S[++A]}else this.lines.set(G,N[D--]);let z=0;for(let G=x.length-1;G>=0;G--)x[G].index+=z,this.lines.onInsertEmitter.fire(x[G]),z+=x[G].amount;let V=Math.max(0,F+I-this.lines.maxLength);V>0&&this.lines.onTrimEmitter.fire(V)}}translateBufferLineToString(f,u,h=0,y){let S=this.lines.get(f);return S?S.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),_=c(3055),a=c(8938),b=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||_.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,b.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,b.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,b.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,b.stringFromCodePoint)(2097151&u)+(0,b.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new _.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new _.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let S=parseInt(u[y],10);S>=n&&delete this._combined[S]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let S=parseInt(h[y],10);S>=n&&delete this._extendedAttrs[S]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let I=u-1;I>=0;I--){for(let x=0;x<3;x++)this._data[3*(f+I)+x]=y[3*(g+I)+x];268435456&y[3*(g+I)+2]&&(this._extendedAttrs[f+I]=n._extendedAttrs[g+I])}else for(let I=0;I<u;I++){for(let x=0;x<3;x++)this._data[3*(f+I)+x]=y[3*(g+I)+x];268435456&y[3*(g+I)+2]&&(this._extendedAttrs[f+I]=n._extendedAttrs[g+I])}let S=Object.keys(n._combined);for(let I=0;I<S.length;I++){let x=parseInt(S[I],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],S=2097151&y,I=2097152&y?this._combined[g]:S?(0,b.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=I,u)for(let x=0;x<I.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(k,i)=>{function c(d,_,a){if(_===d.length-1)return d[_].getTrimmedLength();let b=!d[_].hasContent(a-1)&&d[_].getWidth(a-1)===1,l=d[_+1].getWidth(0)===2;return b&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,_,a,b,l,m){let w=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&b>=n&&b<g){n+=u.length-1;continue}let h=0,y=c(u,h,_),S=1,I=0;for(;S<u.length;){let N=c(u,S,_),F=N-I,D=a-y,A=Math.min(F,D);u[h].copyCellsFrom(u[S],I,y,A,!1),y+=A,y===a&&(h++,y=0),I+=A,I===N&&(S++,I=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let N=u.length-1;N>0&&(N>h||u[N].getTrimmedLength()===0);N--)x++;x>0&&(w.push(n+u.length-x),w.push(x)),n+=u.length-1}return w},i.reflowLargerCreateNewLayout=function(d,_){let a=[],b=0,l=_[b],m=0;for(let w=0;w<d.length;w++)if(l===w){let n=_[++b];d.onDeleteEmitter.fire({index:w-m,amount:n}),w+=n-1,m+=n,l=_[++b]}else a.push(w);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,_){let a=[];for(let b=0;b<_.length;b++)a.push(d.get(_[b]));for(let b=0;b<a.length;b++)d.set(b,a[b]);d.length=_.length},i.reflowSmallerGetNewLineLengths=function(d,_,a){let b=[],l=d.map(((g,f)=>c(d,f,_))).reduce(((g,f)=>g+f)),m=0,w=0,n=0;for(;n<l;){if(l-n<a){b.push(l-n);break}m+=a;let g=c(d,w,_);m>g&&(m-=g,w++);let f=d[w].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;b.push(u),n+=u}return b},i.getWrappedLineTrimmedLength=c},4097:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),_=c(1073),a=c(802);class b extends d.Disposable{constructor(m,w){super(),this._optionsService=m,this._bufferService=w,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,w){this._normal.resize(m,w),this._alt.resize(m,w),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=b},3055:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),_=c(8938),a=c(5451);class b extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let w=new b;return w.setFromCharData(m),w}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[_.CHAR_DATA_ATTR_INDEX],this.bg=0;let w=!1;if(m[_.CHAR_DATA_CHAR_INDEX].length>2)w=!0;else if(m[_.CHAR_DATA_CHAR_INDEX].length===2){let n=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[_.CHAR_DATA_WIDTH_INDEX]<<22:w=!0}else w=!0}else this.content=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[_.CHAR_DATA_WIDTH_INDEX]<<22;w&&(this.combinedData=m[_.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[_.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=b},8938:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),_=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,_.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(k,i)=>{var c,d,_;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
-
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(_||(i.C1_ESCAPED=_={}))},726:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,_=c.length){let a="";for(let b=d;b<_;++b){let l=c[b];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let _=c.length;if(!_)return 0;let a=0,b=0;if(this._interim){let l=c.charCodeAt(b++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=b;l<_;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=_)return this._interim=m,a;let w=c.charCodeAt(l);56320<=w&&w<=57343?d[a++]=1024*(m-55296)+w-56320+65536:(d[a++]=m,d[a++]=w)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let _=c.length;if(!_)return 0;let a,b,l,m,w=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let S,I=0;for(;(S=63&this.interim[++I])&&I<4;)y<<=6,y|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=x-I;for(;g<N;){if(g>=_)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[I++]=S,y<<=6,y|=63&S}h||(x===2?y<128?g--:d[w++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[w++]=y):y<65536||y>1114111||(d[w++]=y)),this.interim.fill(0)}let f=_-4,u=g;for(;u<_;){for(;!(!(u<f)||128&(a=c[u])||128&(b=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[w++]=a,d[w++]=b,d[w++]=l,d[w++]=m,u+=4;if(a=c[u++],a<128)d[w++]=a;else if((224&a)==192){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(n=(31&a)<<6|63&b,n<128){u--;continue}d[w++]=n}else if((240&a)==224){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&b)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[w++]=n}else if((248&a)==240){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,this.interim[2]=l,w;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&b)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[w++]=n}}return w}}},7428:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],b;i.UnicodeV6=class{constructor(){if(this.version="6",!b){b=new Uint8Array(65536),b.fill(1),b[0]=0,b.fill(0,1,32),b.fill(0,127,160),b.fill(2,4352,4448),b[9001]=2,b[9002]=2,b.fill(2,11904,42192),b[12351]=1,b.fill(2,44032,55204),b.fill(2,63744,64256),b.fill(2,65040,65050),b.fill(2,65072,65136),b.fill(2,65280,65377),b.fill(2,65504,65511);for(let l=0;l<_.length;++l)b.fill(0,_[l][0],_[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?b[l]:(function(m,w){let n,g=0,f=w.length-1;if(m<w[0][0]||m>w[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>w[n][1])g=n+1;else{if(!(m<w[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let w=this.wcwidth(l),n=w===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>w&&(w=g)}return d.UnicodeService.createPropertyValue(0,w,n)}}},3562:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new _.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let w;for(this._isSyncWriting=!0;w=this._writeBuffer.shift();){this._action(w);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let w=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-w>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(w,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let b=a.toLowerCase();if(b.indexOf("rgb:")===0){b=b.slice(4);let l=c.exec(b);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(b.indexOf("#")===0&&(b=b.slice(1),d.exec(b)&&[3,6,9,12].includes(b.length))){let l=b.length/3,m=[0,0,0];for(let w=0;w<3;++w){let n=parseInt(b.slice(l*w,l*w+l),16);m[w]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,b=16){let[l,m,w]=a;return`rgb:${_(l,b)}/${_(m,b)}/${_(w,b)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function _(a,b){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(b){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),_=c(7262),a=c(1263),b=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=b,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=b}registerHandler(m,w){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(w),{dispose:()=>{let g=n.indexOf(w);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=b,this._ident=0}hook(m,w){if(this.reset(),this._ident=m,this._active=this._handlers[m]||b,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(w);else this._handlerFb(this._ident,"HOOK",w)}put(m,w,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,w,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,w,n))}unhook(m,w=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=w,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=b,this._ident=0}};let l=new _.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,w,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,w,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let w=!1;if(this._hitLimit)w=!1;else if(m&&(w=this._handler(this._data,this._params),w instanceof Promise))return w.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,w}}},6717:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),_=c(7262),a=c(1346),b=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((I,x)=>x)),f=(I,x)=>g.slice(I,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class w extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new _.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new b.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let S=g.intermediates.charCodeAt(y);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,S=0,I=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,I=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](this._params),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,I=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=I;x<f;++x){switch(y=g[x],S=this._transitions.table[this.currentState<<8|(y<160?y:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|y],F=N?N.length-1:-1;for(;F>=0&&(h=N[F](this._params),h!==!0);F--)if(h instanceof Promise)return this._preserveStack(3,N,F,S,x),h;F<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=w},1346:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),_=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(b,l){this._handlers[b]===void 0&&(this._handlers[b]=[]);let m=this._handlers[b];return m.push(l),{dispose:()=>{let w=m.indexOf(l);w!==-1&&m.splice(w,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let b=this._active.length-1;b>=0;b--)this._active[b].start();else this._handlerFb(this._id,"START")}_put(b,l,m){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(b,l,m);else this._handlerFb(this._id,"PUT",(0,_.utf32ToString)(b,l,m))}start(){this.reset(),this._state=1}put(b,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let w=b[l++];if(w===59){this._state=2,this._start();break}if(w<48||57<w)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+w-48}this._state===2&&m-l>0&&this._put(b,l,m)}}end(b,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,w=this._active.length-1,n=!1;if(this._stack.paused&&(w=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;w>=0&&(m=this._active[w].end(b),m!==!0);w--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!1,m;w--}for(;w>=0;w--)if(m=this._active[w].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",b);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(b){this._handler=b,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(b,l,m){this._hitLimit||(this._data+=(0,_.utf32ToString)(b,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(b){let l=!1;if(this._hitLimit)l=!1;else if(b&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let b=new d;if(!a.length)return b;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let w=0;w<m.length;++w)b.addSubParam(m[w]);else b.addParam(m)}return b}constructor(a=32,b=32){if(this.maxLength=a,this.maxSubParamsLength=b,b>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(b),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let b=0;b<this.length;++b){a.push(this.params[b]);let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let b=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-b>0?this._subParams.subarray(b,l):null}getSubParamsAll(){let a={};for(let b=0;b<this.length;++b){let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&(a[b]=this._subParams.slice(l,m))}return a}addDigit(a){let b;if(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[b-1];l[b-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let _={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(_),d.dispose=()=>this._wrappedAddonDispose(_),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let _=0;_<this._addons.length;_++)if(this._addons[_]===c){d=_;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),_=c(3055);i.BufferApiView=class{constructor(a,b){this._buffer=a,this.type=b}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let b=this._buffer.lines.get(a);if(b)return new d.BufferLineApiView(b)}getNullCell(){return new _.CellData}}},793:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(_){this._line=_}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(_,a){if(!(_<0||_>=this._line.length))return a?(this._line.loadCell(_,a),a):this._line.loadCell(_,new d.CellData)}translateToString(_,a,b){return this._line.translateToString(_,a,b)}}},5101:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),_=c(7150),a=c(802);class b extends _.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=b},6097:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(_=>d(_.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((_,a)=>d(_,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var I=n.length-1;I>=0;I--)(h=n[I])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),b=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let w=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new b.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;y===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=y-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=w,i.BufferService=w=d([_(0,l.IOptionsService)],w)},5746:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(k,i,c){var d=this&&this.__decorate||function(u,h,y,S){var I,x=arguments.length,N=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,y):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(u,h,y,S);else for(var F=u.length-1;F>=0;F--)(I=u[F])&&(N=(x<3?I(N):x>3?I(h,y,N):I(h,y))||N);return x>3&&N&&Object.defineProperty(h,y,N),N},_=this&&this.__param||function(u,h){return function(y,S){h(y,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),b=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function w(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[w(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.x};${u.y}${h}`}},f=class extends b.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let S=h/y,I=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(I/=S+0,Math.abs(u.deltaY)<50&&(I*=.3),this._wheelPartialScroll+=I,I=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(I*=this._bufferService.rows),I}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([_(0,a.IBufferService),_(1,a.ICoreService),_(2,a.IOptionsService)],f)},4071:function(k,i,c){var d=this&&this.__decorate||function(f,u,h,y){var S,I=arguments.length,x=I<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var N=f.length-1;N>=0;N--)(S=f[N])&&(x=(I<3?S(x):I>3?S(u,h,x):S(u,h))||x);return I>3&&x&&Object.defineProperty(u,h,x),x},_=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),b=c(7150),l=c(6501),m=c(802),w=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends b.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([_(0,l.IBufferService),_(1,l.ILogService),_(2,l.IOptionsService)],g)},6025:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),_=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,w]of l)this.set(m,w)}set(l,m){let w=this._entries.get(l);return this._entries.set(l,m),w}forEach(l){for(let[m,w]of this._entries.entries())l(m,w)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(b,l){this._services.set(b,l)}getService(b){return this._services.get(b)}createInstance(b,...l){let m=(0,_.getServiceDependencies)(b).sort(((g,f)=>g.index-f.index)),w=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${b.name} depends on UNKNOWN service ${g.id._id}.`);w.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${b.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new b(...l,...w)}}},7276:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var I=n.length-1;I>=0;I--)(h=n[I])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==b.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),b=c(6501),l={trace:b.LogLevelEnum.TRACE,debug:b.LogLevelEnum.DEBUG,info:b.LogLevelEnum.INFO,warn:b.LogLevelEnum.WARN,error:b.LogLevelEnum.ERROR,off:b.LogLevelEnum.OFF},m,w=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=b.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=b.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=b.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=b.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=b.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=b.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=w,i.LogService=w=d([_(0,b.IOptionsService)],w)},56:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),_=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:_.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let b=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(w){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in w)if(g in n)try{let f=w[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(w,n){return this.onOptionChange((g=>{g===w&&n(this.rawOptions[w])}))}onMultipleOptionChange(w,n){return this.onOptionChange((g=>{w.indexOf(g)!==-1&&n()}))}_setupOptions(){let w=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:w.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(w,n){switch(w){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[w]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${w}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[w]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=b.includes(n)?n:i.DEFAULT_OPTIONS[w];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${w} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${w} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${w} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${w} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(k,i,c){var d=this&&this.__decorate||function(l,m,w,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,w):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,w,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,w,u):g(m,w))||u);return f>3&&u&&Object.defineProperty(m,w,u),u},_=this&&this.__param||function(l,m){return function(w,n){m(w,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),b=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let w=l,n=this._getEntryIdKey(w),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(w),data:w,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let w=this._dataByLinkId.get(l);if(w&&w.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);w.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(w,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let w=l.lines.indexOf(m);w!==-1&&(l.lines.splice(w,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=b,i.OscLinkService=b=d([_(0,a.IBufferService)],b)},6201:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(_){return _[d]||[]},i.createDecorator=function(_){if(i.serviceRegistry.has(_))return i.serviceRegistry.get(_);let a=function(b,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(w,n,g){n[c]===n?n[d].push({id:w,index:g}):(n[d]=[{id:w,index:g}],n[c]=n)})(a,b,m)};return a._id=_,i.serviceRegistry.set(_,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var _;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(_||(i.LogLevelEnum=_={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),_=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,w=!1){return(16777215&l)<<3|(3&m)<<1|(w?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new _.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,w=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,w),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(w)),m+=h,w=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),_=c(5777),a=c(802);class b extends _.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,w=!0){this.coreService.triggerDataEvent(m,w)}resize(m,w){m===this.cols&&w===this.rows||super.resize(m,w)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=b},3058:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,S=(I,x)=>I===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let I=0,x=h.length;I<x;I++)if(!S(h[I],y[I]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let S=h.length-1;y<S&&(h[y]=h[S]),h.pop()},i.binarySearch=function(h,y,S){return a(h.length,(I=>S(h[I],y)))},i.binarySearch2=a,i.quickSelect=function h(y,S,I){if((y|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],N=[],F=[],D=[];for(let A of S){let E=I(A,x);E<0?N.push(A):E>0?F.push(A):D.push(A)}return y<N.length?h(y,N,I):y<N.length+D.length?D[0]:h(y-(N.length+D.length),F,I)},i.groupBy=function(h,y){let S=[],I;for(let x of h.slice(0).sort(y))I&&y(I[0],x)===0?I.push(x):(I=[x],S.push(I));return S},i.groupAdjacentBy=function*(h,y){let S,I;for(let x of h)I!==void 0&&y(I,x)?S.push(x):(S&&(yield S),S=[x]),I=x;S&&(yield S)},i.forEachAdjacent=function(h,y){for(let S=0;S<=h.length;S++)y(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,y){for(let S=0;S<h.length;S++)y(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=b,i.delta=function(h,y,S){let I=b(h,y,S),x=[],N=[];for(let F of I)x.push(...h.slice(F.start,F.start+F.deleteCount)),N.push(...F.toInsert);return{removed:x,added:N}},i.top=function(h,y,S){if(S===0)return[];let I=h.slice(0,S).sort(y);return l(h,y,I,S,h.length),I},i.topAsync=function(h,y,S,I,x){return S===0?Promise.resolve([]):new Promise(((N,F)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(y);for(let E=S,U=Math.min(S+I,D);E<D;E=U,U=Math.min(U+I,D)){if(E>S&&await new Promise((z=>setTimeout(z))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,U)}return A})().then(N,F)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let S=0;S<h.length;S++)h[S]&&(h[y]=h[S],y+=1);h.length=y},i.move=function(h,y,S){h.splice(S,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=S=>S){let S=new Set;return h.filter((I=>{let x=y(I);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return S=>{let I=h(S);return!y.has(I)&&(y.add(I),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,S=(I,x)=>I===x){let I=0;for(let x=0,N=Math.min(h.length,y.length);x<N&&S(h[x],y[x]);x++)I++;return I},i.range=function(h,y){let S=typeof y=="number"?h:0;typeof y=="number"?S=h:(S=0,y=h);let I=[];if(S<=y)for(let x=S;x<y;x++)I.push(x);else for(let x=S;x>y;x--)I.push(x);return I},i.index=function(h,y,S){return h.reduce(((I,x)=>(I[y(x)]=S?S(x):x,I)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,S){let I=h.slice(0,y),x=h.slice(y);return I.concat(S,x)},i.shuffle=function(h,y){let S;if(typeof y=="number"){let I=y;S=()=>{let x=179426549*Math.sin(I++);return x-Math.floor(x)}}else S=Math.random;for(let I=h.length-1;I>0;I-=1){let x=Math.floor(S()*(I+1)),N=h[I];h[I]=h[x],h[x]=N}},i.pushToStart=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.unshift(y))},i.pushToEnd=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.push(y))},i.pushMany=function(h,y){for(let S of y)h.push(S)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=w,i.splice=function(h,y,S,I){let x=n(h,y),N=h.splice(x,S);return N===void 0&&(N=[]),w(h,x,I),N},i.compareBy=function(h,y){return(S,I)=>y(h(S),h(I))},i.tieBreakComparators=function(...h){return(y,S)=>{for(let I of h){let x=I(y,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,S)=>-h(y,S)};let d=c(9807),_=c(8297);function a(h,y){let S=0,I=h-1;for(;S<=I;){let x=(S+I)/2|0,N=y(x);if(N<0)S=x+1;else{if(!(N>0))return x;I=x-1}}return-(S+1)}function b(h,y,S){let I=[];function x(D,A,E){if(A===0&&E.length===0)return;let U=I[I.length-1];U&&U.start+U.deleteCount===D?(U.deleteCount+=A,U.toInsert.push(...E)):I.push({start:D,deleteCount:A,toInsert:E})}let N=0,F=0;for(;;){if(N===h.length){x(N,0,y.slice(F));break}if(F===y.length){x(N,h.length-N,[]);break}let D=h[N],A=y[F],E=S(D,A);E===0?(N+=1,F+=1):E<0?(x(N,1,[]),N+=1):E>0&&(x(N,0,[A]),F+=1)}return I}function l(h,y,S,I,x){for(let N=S.length;I<x;I++){let F=h[I];if(y(F,S[N-1])<0){S.pop();let D=(0,_.findFirstIdxMonotonousOrArrLen)(S,(A=>y(F,A)<0));S.splice(D,0,F)}}}function m(h,y){let S=h.indexOf(y);if(S>-1)return h.splice(S,1),y}function w(h,y,S){let I=n(h,y),x=h.length,N=S.length;h.length=x+N;for(let F=x-1;F>=I;F--)h[F+N]=h[F];for(let F=0;F<N;F++)h[F+I]=S[F]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let S=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,S}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let S=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((S=>(y(S),!0)))}toArray(){let y=[];return this.iterate((S=>(y.push(S),!0))),y}filter(y){return new f((S=>this.iterate((I=>!y(I)||S(I)))))}map(y){return new f((S=>this.iterate((I=>S(y(I))))))}some(y){let S=!1;return this.iterate((I=>(S=y(I),!S))),S}findFirst(y){let S;return this.iterate((I=>!y(I)||(S=I,!1))),S}findLast(y){let S;return this.iterate((I=>(y(I)&&(S=I),!0))),S}findLastMaxBy(y){let S,I=!0;return this.iterate((x=>((I||g.isGreaterThan(y(x,S)))&&(I=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,S){let I=Array.from(y.keys()).sort(((x,N)=>S(y[x],y[N])));return new u(I)}apply(y){return y.map(((S,I)=>y[this._indexMap[I]]))}inverse(){let y=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)y[this._indexMap[S]]=S;return new u(y)}}i.Permutation=u},8297:(k,i)=>{function c(l,m,w=l.length-1){for(let n=w;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function _(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let w=c(l,m);if(w!==-1)return l[w]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let w=d(l,m);return w===-1?void 0:l[w]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let w=_(l,m);return w===l.length?void 0:l[w]},i.findFirstIdxMonotonousOrArrLen=_,i.findFirstIdxMonotonous=function(l,m,w=0,n=l.length){let g=_(l,m,w,n);return g===l.length?-1:g},i.findFirstMax=b,i.findLastMax=function(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>=0&&(w=g)}return w},i.findFirstMin=function(l,m){return b(l,((w,n)=>-m(w,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let w=0;for(let n=1;n<l.length;n++)m(l[n],l[w])>0&&(w=n);return w},i.mapFindFirst=function(l,m){for(let w of l){let n=m(w);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let w=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=w+1,w===-1?void 0:this._array[w]}}function b(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>0&&(w=g)}return w}i.MonotonousArray=a},9087:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(_,a){let b=Object.create(null);for(let l of _){let m=a(l),w=b[m];w||(w=b[m]=[]),w.push(l)}return b},i.diffSets=function(_,a){let b=[],l=[];for(let m of _)a.has(m)||b.push(m);for(let m of a)_.has(m)||l.push(m);return{removed:b,added:l}},i.diffMaps=function(_,a){let b=[],l=[];for(let[m,w]of _)a.has(m)||b.push(w);for(let[m,w]of a)_.has(m)||l.push(w);return{removed:b,added:l}},i.intersection=function(_,a){let b=new Set;for(let l of a)_.has(l)&&b.add(l);return b};class d{static{c=Symbol.toStringTag}constructor(a,b){this.toKey=b,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let b=this.toKey(a);return this._map.set(b,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,b){this._map.forEach((l=>a.call(b,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){_(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){_(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=_,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
|
|
2
|
+
var Wa=Object.create;var Fr=Object.defineProperty;var ja=Object.getOwnPropertyDescriptor;var Ha=Object.getOwnPropertyNames;var Ua=Object.getPrototypeOf,qa=Object.prototype.hasOwnProperty;var Ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ka=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Va=(e,t)=>{for(var r in t)Fr(e,r,{get:t[r],enumerable:!0})},za=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ha(t))!qa.call(e,o)&&o!==r&&Fr(e,o,{get:()=>t[o],enumerable:!(s=ja(t,o))||s.enumerable});return e};var Ga=(e,t,r)=>(r=e!=null?Wa(Ua(e)):{},za(t||!e||!e.__esModule?Fr(r,"default",{value:e,enumerable:!0}):r,e));function Se(e){return Ya[e]}function Nr(e,t={}){let r=Se(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function gt(e={}){return ue.filter(t=>e.runners?.[t]?.enabled!==!1)}function nt(e={}){let t=gt(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 zt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function mt(e){return ue.includes(e)}function nn(e){if(!e||e.length===0)return"codex";if(!mt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${ue.join(", ")}.`);return e}function Re(e){return Se(e).displayName}function we(e,t,r={}){let s=[Nr(e,r).executable];return t&&t.length>0&&s.push(t),s}var ue,Ya,De=Ne(()=>{"use strict";ue=["codex","cursor","claude"],Ya={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 rc}from"node:crypto";import{open as sc,readFile as np,rename as nc,rm as ic}from"node:fs/promises";import Wr from"node:path";async function he(e,t){let r=Wr.dirname(e),s=Wr.join(r,`.${Wr.basename(e)}.${process.pid}.${Date.now()}.${rc()}.tmp`),o=await sc(s,"w");try{let p=`${JSON.stringify(t,null,2)}
|
|
3
|
+
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await nc(s,e)}catch(p){throw await o.close().catch(()=>{}),await ic(s,{force:!0}).catch(()=>{}),p}}var He=Ne(()=>{"use strict"});import{readFile as hc}from"node:fs/promises";async function Pe(e){let t=await hc(e.indexFile,"utf8"),r=JSON.parse(t);return Hr(r,e.workspaceRoot,e.indexFile)}async function ot(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await he(e.indexFile,r)}function Hr(e,t,r){if(!fc(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 fc(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 at=Ne(()=>{"use strict";He()});import{readFile as pc}from"node:fs/promises";async function fe(e,t){let r=await pc(Ur(e,t),"utf8"),s=JSON.parse(r);return gc(s,Ur(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await he(Ur(e,t.id),r)}async function qr(e,t){let r=await Pe(e);r.taskIds.includes(t)||await ot(e,{...r,taskIds:[...r.taskIds,t]})}function Ur(e,t){return`${e.tasksDir}/${t}.json`}function gc(e,t){let r=mc(e);if(!wc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function mc(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Kr(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:kc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:bc(t.repoTargets),runnerSession:t.runnerSession??_c(t),checks:Ic(t),lastCommit:t.lastCommit??null,prs:xc(t),artifacts:Lc(t),cleanup:Mc(t)}}function _c(e){if(typeof e.title!="string")return null;let t=Kr(e.runner);return{command:we(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function wc(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"&&mt(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"&&dn(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||yc(t.repoTargets))&&Sc(t.runnerSession)&&Tc(t.prompt)&&un(t.checks)&&hn(t.lastCommit)&&Pc(t.prs)&&Cc(t.artifacts)&&pn(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function bc(e){if(Array.isArray(e))return e.filter(ln)}function yc(e){return Array.isArray(e)&&e.every(ln)}function ln(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)&&un(t.checks)&&hn(t.lastCommit)&&fn(t.pullRequest)&&pn(t.cleanup)}function kc(e){if(dn(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 vc(e.id,e.title,t,Kr(e.runner))}function vc(e,t,r,s){let o=Se(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:we(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Kr(e){return e&&mt(e)?e:"codex"}function dn(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 Sc(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 Tc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function un(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 hn(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function fn(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&Rc(e.requiredChecks)}function Rc(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))}function Pc(e){return Array.isArray(e)&&e.every(fn)}function Cc(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 pn(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 Ic(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 xc(e){if(Array.isArray(e.prs))return e.prs.map(Ec);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:gn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:null,requiredChecks:mn(t.requiredChecks),comments:[],createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function Ec(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:gn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:Ac(t.reviewDecision),requiredChecks:mn(t.requiredChecks),comments:Dc(t.comments),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function gn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function Ac(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function Dc(e){return Array.isArray(e)?e.flatMap(t=>{if(typeof t!="object"||t===null)return[];let r=t;return typeof r.body!="string"||!r.body.trim()?[]:[{author:typeof r.author=="string"?r.author:null,body:r.body,createdAt:typeof r.createdAt=="string"?r.createdAt:null,url:typeof r.url=="string"?r.url:null}]}):[]}function mn(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 Lc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Mc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Ce=Ne(()=>{"use strict";He();at();De()});import{readFile as Oc}from"node:fs/promises";async function Le(e){try{let t=await Oc(e.uiStateFile,"utf8"),r=JSON.parse(t);return Bc(r,e.uiStateFile)}catch(t){if(Fc(t))return null;throw t}}async function Ie(e,t){await he(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function Ue(){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 Bc(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")||!Gt(e,"openInspectionKind")||!Gt(e,"selectedFileTreePath")||!Gt(e,"selectedFilePath")||!Gt(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 Gt(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 Fc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var bt=Ne(()=>{"use strict";He()});import{execFile as Nc}from"node:child_process";import{promisify as Wc}from"node:util";async function ee(e,t,r={}){try{let s=await _n(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(wn(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await _n(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(wn(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function wn(e){return e instanceof Error}var _n,xe=Ne(()=>{"use strict";_n=Wc(Nc)});import{readFile as sl,readdir as nl,rm as il}from"node:fs/promises";import In from"node:path";async function Me(e,t){let r=await sl(Qt(e,t),"utf8"),s=JSON.parse(r);return ol(s,Qt(e,t))}async function Jt(e,t){await he(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function dt(e){let t=await nl(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Me(e,In.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function xn(e,t){await il(Qt(e,t),{force:!0})}function Qt(e,t){return In.join(e.reposDir,`${t}.json`)}function ol(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 ut=Ne(()=>{"use strict";He()});import{readFile as al,readdir as cl,rm as ll}from"node:fs/promises";import En from"node:path";async function Ct(e,t){let r=await al(Zt(e,t),"utf8"),s=JSON.parse(r);return dl(s,Zt(e,t))}async function yt(e,t){await he(Zt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Oe(e){let t=await cl(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Ct(e,En.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function An(e,t){await ll(Zt(e,t),{force:!0})}function Zt(e,t){return En.join(e.workspacesDir,`${t}.json`)}function dl(e,t){let r=ul(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 ul(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=Ne(()=>{"use strict";He()});async function qe(e,t){let r=await Pe(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await fe(e,i))}catch(c){if(bl(c)){o.push(i);return}throw c}}));let y=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return y.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:y,missingTaskIds:o,repoId:t?.repoId??null}}function bl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var At=Ne(()=>{"use strict";at();Ce()});var ki={};Va(ki,{addWorkspace:()=>Mt,archiveWorkspace:()=>Ot,listWorkspaces:()=>hs,removeWorkspace:()=>Bt,removeWorkspaceRecord:()=>dr,restoreWorkspace:()=>fs});import{readdir as sd,realpath as fi,stat as nd}from"node:fs/promises";import et from"node:path";async function Mt(e,t){let r=et.resolve(e.workspaceRoot,t);if(!(await nd(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await wi(r)?id(e,r):od(e,r)}async function hs(e,t){return{kind:"listWorkspaces",workspaces:(await Oe(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Ot(e,t){let s={...await Ct(e,t),status:"archived",archivedAt:new Date().toISOString()};return await yt(e,s),await yi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function fs(e,t){let s={...await Ct(e,t),status:"active",archivedAt:null};await yt(e,s);let o=await Le({uiStateFile:e.uiStateFile})??null;return await Ie({uiStateFile:e.uiStateFile},{...o??Ue(),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 Bt(e,t){let r=await Ct(e,t),s=await qe(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 yi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function id(e,t){let r=await bi(t),s=await dt(e),o=s.find(a=>a.rootPath===t)??null,p=o?gi(o,r):pi(s,t,r),y=`workspace_${p.id}`,c=(await Oe(e)).find(a=>a.id===y)??null,d=new Date().toISOString(),w=c??{id:y,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Jt(e,p),c||await yt(e,w),await mi(e,{repoIds:[p.id],workspaceIds:[w.id]}),await _i(e,w,p.id),{kind:"createWorkspace",workspace:w,repos:[p],created:!c}}async function od(e,t){let r=await ad(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Oe(e),o=ld(s,et.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,y=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:et.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:y,updatedAt:y};return await Promise.all(r.map(d=>Jt(e,d))),await yt(e,c),await mi(e,{repoIds:i,workspaceIds:[c.id]}),await _i(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function ad(e,t){let r=await sd(t,{withFileTypes:!0}),s=await dt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let y=et.join(t,p.name);if(!await wi(y))continue;let i=s.find(d=>d.rootPath===y)??o.find(d=>d.rootPath===y),c=await bi(y);o.push(i?gi(i,c):pi([...s,...o],y,c))}return o.sort((p,y)=>p.name.localeCompare(y.name)||p.id.localeCompare(y.id))}function pi(e,t,r){let s=new Date().toISOString();return{id:cd(e,et.basename(t)),name:et.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function gi(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function cd(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function ld(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function mi(e,t){let r=await Pe(e);await ot(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function _i(e,t,r){await Ie({uiStateFile:e.uiStateFile},{...await Le({uiStateFile:e.uiStateFile})??Ue(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function wi(e){try{let r=(await ee("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([fi(r).catch(()=>et.resolve(r)),fi(e).catch(()=>et.resolve(e))]);return s===o}catch{return!1}}async function bi(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await ee("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function dr(e,t){await An(e,t);let r=await Pe(e);await ot(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function yi(e,t){let r=await Le({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Ie({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var $t=Ne(()=>{"use strict";at();ut();It();bt();xe();At()});var Lo=Ka(Do=>{(()=>{"use strict";var e={5639:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new w.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new w.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new w.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let _=0;_<Math.min(l,this.length);_++)m[_]=this._array[this._getCyclicIndex(_)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,..._){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+_.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<_.length;n++)this._array[this._getCyclicIndex(l+n)]=_[n];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let n=this._length+_.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=_.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,_){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let g=m-1;g>=0;g--)this.set(l+g+_,this.get(l+g));let n=l+m+_-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+_,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,w=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let b in d)a[b]=w<=1?d[b]:d[b]&&c(d[b],w-1);return a}},5777:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),w=c(6025),a=c(7276),b=c(9640),l=c(56),m=c(4071),_=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),k=c(8811),S=c(802),C=c(7150),x=!1;class N extends C.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new C.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new w.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(b.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(k.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,b.MINIMUM_COLS),A=Math.max(A,b.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,C.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=N},2486:function(y,i,c){var d=this&&this.__decorate||function(B,v,P,R){var T,$=arguments.length,W=$<3?v:R===null?R=Object.getOwnPropertyDescriptor(v,P):R;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(B,v,P,R);else for(var H=B.length-1;H>=0;H--)(T=B[H])&&(W=($<3?T(W):$>3?T(v,P,W):T(v,P))||W);return $>3&&W&&Object.defineProperty(v,P,W),W},w=this&&this.__param||function(B,v){return function(P,R){v(P,R,B)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=Y;let a=c(3534),b=c(6760),l=c(6717),m=c(7150),_=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),k=c(6415),S=c(1346),C=c(9823),x=c(8693),N=c(802),F={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(B,v){if(B>24)return v.setWinLines||!1;switch(B){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var E;(function(B){B[B.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",B[B.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let q=0;class G extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,P,R,T,$,W,H,V,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=P,this._coreService=R,this._logService=T,this._optionsService=$,this._oscLinkService=W,this._coreMouseService=H,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=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new z(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,X)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:X.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,X,K)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:X,data:K})})),this._parser.setDcsHandlerFallback(((I,X,K)=>{X==="HOOK"&&(K=K.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:X,payload:K})})),this._parser.setPrintHandler(((I,X,K)=>this.print(I,X,K))),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 b.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new C.DcsHandler(((I,X)=>this.requestStatusString(I,X))))}_preserveStack(v,P,R,T){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=P,this._parseStack.decodedLength=R,this._parseStack.position=T}_logSlowResolvingAsync(v){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([v,new Promise(((P,R)=>setTimeout((()=>R("#SLOW_TIMEOUT")),5e3)))]).catch((P=>{if(P!=="#SLOW_TIMEOUT")throw P;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,P){let R,T=this._activeBuffer.x,$=this._activeBuffer.y,W=0,H=this._parseStack.paused;if(H){if(R=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,P))return this._logSlowResolvingAsync(R),R;T=this._parseStack.cursorStartX,$=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(W=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((I=>I.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),H||this._dirtyRowTracker.clearRange(),v.length>D)for(let I=W;I<v.length;I+=D){let X=I+D<v.length?I+D:v.length,K=typeof v=="string"?this._stringDecoder.decode(v.substring(I,X),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,X),this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,K))return this._preserveStack(T,$,K,I),this._logSlowResolvingAsync(R),R}else if(!H){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,I))return this._preserveStack(T,$,I,0),this._logSlowResolvingAsync(R),R}this._activeBuffer.x===T&&this._activeBuffer.y===$||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,P,R){let T,$,W=this._charsetService.charset,H=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,X=this._curAttrData,K=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&R-P>0&&K.getWidth(this._activeBuffer.x-1)===2&&K.setCellFromCodepoint(this._activeBuffer.x-1,0,1,X);let J=this._parser.precedingJoinState;for(let _e=P;_e<R;++_e){if(T=v[_e],T<127&&W){let Fe=W[String.fromCharCode(T)];Fe&&(T=Fe.charCodeAt(0))}let ve=this._unicodeService.charProperties(T,J);$=k.UnicodeService.extractWidth(ve);let Je=k.UnicodeService.extractShouldJoin(ve),ce=Je?k.UnicodeService.extractWidth(J):0;if(J=ve,H&&this._onA11yChar.fire((0,_.stringFromCodePoint)(T)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+$-ce>V){if(te){let Fe=K,ze=this._activeBuffer.x-ce;for(this._activeBuffer.x=ce,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),K=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),ce>0&&K instanceof n.BufferLine&&K.copyCellsFrom(Fe,ze,0,ce,!1);ze<V;)Fe.setCellFromCodepoint(ze++,0,1,X)}else if(this._activeBuffer.x=V-1,$===2)continue}if(Je&&this._activeBuffer.x){let Fe=K.getWidth(this._activeBuffer.x-1)?1:2;K.addCodepointToCell(this._activeBuffer.x-Fe,T,$);for(let ze=$-ce;--ze>=0;)K.setCellFromCodepoint(this._activeBuffer.x++,0,0,X)}else if(I&&(K.insertCells(this._activeBuffer.x,$-ce,this._activeBuffer.getNullCell(X)),K.getWidth(V-1)===2&&K.setCellFromCodepoint(V-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,X)),K.setCellFromCodepoint(this._activeBuffer.x++,T,$,X),$>0)for(;--$;)K.setCellFromCodepoint(this._activeBuffer.x++,0,0,X)}this._parser.precedingJoinState=J,this._activeBuffer.x<V&&R-P>0&&K.getWidth(this._activeBuffer.x)===0&&!K.hasContent(this._activeBuffer.x)&&K.setCellFromCodepoint(this._activeBuffer.x,0,1,X),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,P){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,P):this._parser.registerCsiHandler(v,(R=>!A(R.params[0],this._optionsService.rawOptions.windowOptions)||P(R)))}registerDcsHandler(v,P){return this._parser.registerDcsHandler(v,new C.DcsHandler(P))}registerEscHandler(v,P){return this._parser.registerEscHandler(v,P)}registerOscHandler(v,P){return this._parser.registerOscHandler(v,new S.OscHandler(P))}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,P){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+P):(this._activeBuffer.x=v,this._activeBuffer.y=P),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,P){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+P)}cursorUp(v){let P=this._activeBuffer.y-this._activeBuffer.scrollTop;return P>=0?this._moveCursor(0,-Math.min(P,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let P=this._activeBuffer.scrollBottom-this._activeBuffer.y;return P>=0?this._moveCursor(0,Math.min(P,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 P=v.params[0];return P===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:P===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let P=v.params[0];return P===1&&(this._curAttrData.bg|=536870912),P!==2&&P!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,P,R,T=!1,$=!1){let W=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);W.replaceCells(P,R,this._activeBuffer.getNullCell(this._eraseAttrData()),$),T&&(W.isWrapped=!1)}_resetBufferLine(v,P=!1){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);R&&(R.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),P),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),R.isWrapped=!1)}eraseInDisplay(v,P=!1){let R;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);R<this._bufferService.rows;R++)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(R);break;case 1:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R,0,this._activeBuffer.x+1,!0,P),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(R+1).isWrapped=!1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(R=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,R-1);R--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+R)?.getTrimmedLength(););for(;R>=0;R--)this._bufferService.scroll(this._eraseAttrData())}else{for(R=this._bufferService.rows,this._dirtyRowTracker.markDirty(R-1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0)}break;case 3:let T=this._activeBuffer.lines.length-this._bufferService.rows;T>0&&(this._activeBuffer.lines.trimStart(T),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-T,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-T,0),this._onScroll.fire(0))}return!0}eraseInLine(v,P=!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,P);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,P);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,P)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,$=this._bufferService.rows-1+this._activeBuffer.ybase-T+1;for(;P--;)this._activeBuffer.lines.splice($-1,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}deleteLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T;for(T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,T=this._bufferService.rows-1+this._activeBuffer.ybase-T;P--;)this._activeBuffer.lines.splice(R,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}insertChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.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 P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let P=v.params[0]||1;for(;P--;)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 P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.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 P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.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 P=this._parser.precedingJoinState;if(!P)return!0;let R=v.params[0]||1,T=k.UnicodeService.extractWidth(P),$=this._activeBuffer.x-T,W=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString($),H=new Uint32Array(W.length*R),V=0;for(let I=0;I<W.length;){let X=W.codePointAt(I)||0;H[V++]=X,I+=X>65535?2:1}let te=V;for(let I=1;I<R;++I)H.copyWithin(te,0,V),te+=V;return this.print(H,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 P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),this._charsetService.setgCharset(1,b.DEFAULT_CHARSET),this._charsetService.setgCharset(2,b.DEFAULT_CHARSET),this._charsetService.setgCharset(3,b.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){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[P]===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,P){let R=this._coreService.decPrivateModes,{activeProtocol:T,activeEncoding:$}=this._coreMouseService,W=this._coreService,{buffers:H,cols:V}=this._bufferService,{active:te,alt:I}=H,X=this._optionsService.rawOptions,K=Je=>Je?1:2,J=v.params[0];return _e=J,ve=P?J===2?4:J===4?K(W.modes.insertMode):J===12?3:J===20?K(X.convertEol):0:J===1?K(R.applicationCursorKeys):J===3?X.windowOptions.setWinLines?V===80?2:V===132?1:0:0:J===6?K(R.origin):J===7?K(R.wraparound):J===8?3:J===9?K(T==="X10"):J===12?K(X.cursorBlink):J===25?K(!W.isCursorHidden):J===45?K(R.reverseWraparound):J===66?K(R.applicationKeypad):J===67?4:J===1e3?K(T==="VT200"):J===1002?K(T==="DRAG"):J===1003?K(T==="ANY"):J===1004?K(R.sendFocus):J===1005?4:J===1006?K($==="SGR"):J===1015?4:J===1016?K($==="SGR_PIXELS"):J===1048?1:J===47||J===1047||J===1049?K(te===I):J===2004?K(R.bracketedPasteMode):J===2026?K(R.synchronizedOutput):0,W.triggerDataEvent(`${a.C0.ESC}[${P?"":"?"}${_e};${ve}$y`),!0;var _e,ve}_updateAttrColor(v,P,R,T,$){return P===2?(v|=50331648,v&=-16777216,v|=u.AttributeData.fromColorRGB([R,T,$])):P===5&&(v&=-50331904,v|=33554432|255&R),v}_extractColor(v,P,R){let T=[0,0,-1,0,0,0],$=0,W=0;do{if(T[W+$]=v.params[P+W],v.hasSubParams(P+W)){let H=v.getSubParams(P+W),V=0;do T[1]===5&&($=1),T[W+V+1+$]=H[V];while(++V<H.length&&V+W+1+$<T.length);break}if(T[1]===5&&W+$>=2||T[1]===2&&W+$>=5)break;T[1]&&($=1)}while(++W+P<v.length&&W+$<T.length);for(let H=2;H<T.length;++H)T[H]===-1&&(T[H]=0);switch(T[0]){case 38:R.fg=this._updateAttrColor(R.fg,T[1],T[3],T[4],T[5]);break;case 48:R.bg=this._updateAttrColor(R.bg,T[1],T[3],T[4],T[5]);break;case 58:R.extended=R.extended.clone(),R.extended.underlineColor=this._updateAttrColor(R.extended.underlineColor,T[1],T[3],T[4],T[5])}return W}_processUnderline(v,P){P.extended=P.extended.clone(),(!~v||v>5)&&(v=1),P.extended.underlineStyle=v,P.fg|=268435456,v===0&&(P.fg&=-268435457),P.updateExtended()}_processSGR0(v){v.fg=n.DEFAULT_ATTR_DATA.fg,v.bg=n.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let P=v.length,R,T=this._curAttrData;for(let $=0;$<P;$++)R=v.params[$],R>=30&&R<=37?(T.fg&=-50331904,T.fg|=16777216|R-30):R>=40&&R<=47?(T.bg&=-50331904,T.bg|=16777216|R-40):R>=90&&R<=97?(T.fg&=-50331904,T.fg|=16777224|R-90):R>=100&&R<=107?(T.bg&=-50331904,T.bg|=16777224|R-100):R===0?this._processSGR0(T):R===1?T.fg|=134217728:R===3?T.bg|=67108864:R===4?(T.fg|=268435456,this._processUnderline(v.hasSubParams($)?v.getSubParams($)[0]:1,T)):R===5?T.fg|=536870912:R===7?T.fg|=67108864:R===8?T.fg|=1073741824:R===9?T.fg|=2147483648:R===2?T.bg|=134217728:R===21?this._processUnderline(2,T):R===22?(T.fg&=-134217729,T.bg&=-134217729):R===23?T.bg&=-67108865:R===24?(T.fg&=-268435457,this._processUnderline(0,T)):R===25?T.fg&=-536870913:R===27?T.fg&=-67108865:R===28?T.fg&=-1073741825:R===29?T.fg&=2147483647:R===39?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):R===49?(T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):R===38||R===48||R===58?$+=this._extractColor(v,$,T):R===53?T.bg|=1073741824:R===55?T.bg&=-1073741825:R===59?(T.extended=T.extended.clone(),T.extended.underlineColor=-1,T.updateExtended()):R===100?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",R);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${P};${R}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${P};${R}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let P=v.length===0?1:v.params[0];if(P===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(P){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 R=P%2==1;this._coreService.decPrivateModes.cursorBlink=R}return!0}setScrollRegion(v){let P=v.params[0]||1,R;return(v.length<2||(R=v.params[1])>this._bufferService.rows||R===0)&&(R=this._bufferService.rows),R>P&&(this._activeBuffer.scrollTop=P-1,this._activeBuffer.scrollBottom=R-1,this._setCursor(0,0)),!0}windowOptions(v){if(!A(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let P=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:P!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:P!==0&&P!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),P!==0&&P!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:P!==0&&P!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),P!==0&&P!==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 P=[],R=v.split(";");for(;R.length>1;){let T=R.shift(),$=R.shift();if(/^\d+$/.exec(T)){let W=parseInt(T);if(Y(W))if($==="?")P.push({type:0,index:W});else{let H=(0,x.parseColor)($);H&&P.push({type:1,index:W,color:H})}}}return P.length&&this._onColor.fire(P),!0}setHyperlink(v){let P=v.indexOf(";");if(P===-1)return!0;let R=v.slice(0,P).trim(),T=v.slice(P+1);return T?this._createHyperlink(R,T):!R.trim()&&this._finishHyperlink()}_createHyperlink(v,P){this._getCurrentLinkId()&&this._finishHyperlink();let R=v.split(":"),T,$=R.findIndex((W=>W.startsWith("id=")));return $!==-1&&(T=R[$].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:T,uri:P}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,P){let R=v.split(";");for(let T=0;T<R.length&&!(P>=this._specialColors.length);++T,++P)if(R[T]==="?")this._onColor.fire([{type:0,index:this._specialColors[P]}]);else{let $=(0,x.parseColor)(R[T]);$&&this._onColor.fire([{type:1,index:this._specialColors[P],color:$}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let P=[],R=v.split(";");for(let T=0;T<R.length;++T)if(/^\d+$/.exec(R[T])){let $=parseInt(R[T]);Y($)&&P.push({type:2,index:$})}return P.length&&this._onColor.fire(P),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset(F[v[0]],b.CHARSETS[v[1]]||b.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new f.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let P=0;P<this._bufferService.rows;++P){let R=this._activeBuffer.ybase+this._activeBuffer.y+P,T=this._activeBuffer.lines.get(R);T&&(T.fill(v),T.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,P){let R=this._bufferService.buffer,T=this._optionsService.rawOptions;return($=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${$}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${R.scrollTop+1};${R.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[T.cursorStyle]-(T.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,P){this._dirtyRowTracker.markRangeDirty(v,P)}}i.InputHandler=G;let z=class{constructor(B){this._bufferService=B,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(B){B<this.start?this.start=B:B>this.end&&(this.end=B)}markRangeDirty(B,v){B>v&&(q=B,B=v,v=q),B<this.start&&(this.start=B),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function Y(B){return 0<=B&&B<256}z=d([w(0,h.IBufferService)],z)},701:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let w=c.match(/Version\/(\d+)/);return w===null||w.length<2?0:parseInt(w[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class w{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,_=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),_=Math.max(m,_),g=l.timeRemaining(),1.5*_>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends w{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends w{_requestCallback(b){return requestIdleCallback(b)}_cancelCallback(b){cancelIdleCallback(b)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(b){this._queue.clear(),this._queue.enqueue(b)}flush(){this._queue.flush()}}},5882:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(w){let a=w.buffer.lines.get(w.buffer.ybase+w.buffer.y-1),b=a?.get(w.cols-1),l=w.buffer.lines.get(w.buffer.ybase+w.buffer.y);l&&b&&(l.isWrapped=b[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&b[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,b=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=b}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),w=c(6168),a=c(5451),b=c(6107),l=c(732),m=c(3055),_=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=b.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new w.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new b.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=b.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(b.DEFAULT_ATTR_DATA),k=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)k+=+this.lines.get(x).resize(f,h);let C=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new b.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+C+1?(this.ybase--,C++,this.ydisp>0&&this.ydisp--):this.lines.push(new b.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),C&&(this.y+=C),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let C=0;C<this.lines.length;C++)k+=+this.lines.get(C).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),k>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,k=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(b.DEFAULT_ATTR_DATA),h);if(k.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,k);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let k=this.getNullCell(b.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new b.BufferLine(f,k))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,k=this.getNullCell(b.DEFAULT_ATTR_DATA),S=[],C=0;for(let x=this.lines.length-1;x>=0;x--){let N=this.lines.get(x);if(!N||!N.isWrapped&&N.getTrimmedLength()<=f)continue;let F=[N];for(;N.isWrapped&&x>0;)N=this.lines.get(--x),F.unshift(N);if(!h){let R=this.ybase+this.y;if(R>=x&&R<x+F.length)continue}let D=F[F.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)(F,this._cols,f),E=A.length-F.length,q;q=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let G=[];for(let R=0;R<E;R++){let T=this.getBlankLine(b.DEFAULT_ATTR_DATA,!0);G.push(T)}G.length>0&&(S.push({start:x+F.length+C,newLines:G}),C+=G.length),F.push(...G);let z=A.length-1,Y=A[z];Y===0&&(z--,Y=A[z]);let B=F.length-E-1,v=D;for(;B>=0;){let R=Math.min(v,Y);if(F[z]===void 0)break;if(F[z].copyCellsFrom(F[B],v-R,Y-R,R,!0),Y-=R,Y===0&&(z--,Y=A[z]),v-=R,v===0){B--;let T=Math.max(B,0);v=(0,l.getWrappedLineTrimmedLength)(F,T,this._cols)}}for(let R=0;R<F.length;R++)A[R]<f&&F[R].setCell(A[R],k);let P=E-q;for(;P-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+C)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],N=[];for(let Y=0;Y<this.lines.length;Y++)N.push(this.lines.get(Y));let F=this.lines.length,D=F-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+C);let q=0;for(let Y=Math.min(this.lines.maxLength-1,F+C-1);Y>=0;Y--)if(E&&E.start>D+q){for(let B=E.newLines.length-1;B>=0;B--)this.lines.set(Y--,E.newLines[B]);Y++,x.push({index:D+1,amount:E.newLines.length}),q+=E.newLines.length,E=S[++A]}else this.lines.set(Y,N[D--]);let G=0;for(let Y=x.length-1;Y>=0;Y--)x[Y].index+=G,this.lines.onInsertEmitter.fire(x[Y]),G+=x[Y].amount;let z=Math.max(0,F+C-this.lines.maxLength);z>0&&this.lines.onTrimEmitter.fire(z)}}translateBufferLineToString(f,u,h=0,k){let S=this.lines.get(f);return S?S.translateToString(u,h,k):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),w=c(3055),a=c(8938),b=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||w.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,b.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,b.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,b.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,b.stringFromCodePoint)(2097151&u)+(0,b.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new w.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new w.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let k=0;k<u.length;k++){let S=parseInt(u[k],10);S>=n&&delete this._combined[S]}let h=Object.keys(this._extendedAttrs);for(let k=0;k<h.length;k++){let S=parseInt(h[k],10);S>=n&&delete this._extendedAttrs[S]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let k=n._data;if(h)for(let C=u-1;C>=0;C--){for(let x=0;x<3;x++)this._data[3*(f+C)+x]=k[3*(g+C)+x];268435456&k[3*(g+C)+2]&&(this._extendedAttrs[f+C]=n._extendedAttrs[g+C])}else for(let C=0;C<u;C++){for(let x=0;x<3;x++)this._data[3*(f+C)+x]=k[3*(g+C)+x];268435456&k[3*(g+C)+2]&&(this._extendedAttrs[f+C]=n._extendedAttrs[g+C])}let S=Object.keys(n._combined);for(let C=0;C<S.length;C++){let x=parseInt(S[C],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let k=this._data[3*g+0],S=2097151&k,C=2097152&k?this._combined[g]:S?(0,b.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=C,u)for(let x=0;x<C.length;++x)u.push(g);g+=k>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(y,i)=>{function c(d,w,a){if(w===d.length-1)return d[w].getTrimmedLength();let b=!d[w].hasContent(a-1)&&d[w].getWidth(a-1)===1,l=d[w+1].getWidth(0)===2;return b&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,w,a,b,l,m){let _=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&b>=n&&b<g){n+=u.length-1;continue}let h=0,k=c(u,h,w),S=1,C=0;for(;S<u.length;){let N=c(u,S,w),F=N-C,D=a-k,A=Math.min(F,D);u[h].copyCellsFrom(u[S],C,k,A,!1),k+=A,k===a&&(h++,k=0),C+=A,C===N&&(S++,C=0),k===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,k++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(k,a,l);let x=0;for(let N=u.length-1;N>0&&(N>h||u[N].getTrimmedLength()===0);N--)x++;x>0&&(_.push(n+u.length-x),_.push(x)),n+=u.length-1}return _},i.reflowLargerCreateNewLayout=function(d,w){let a=[],b=0,l=w[b],m=0;for(let _=0;_<d.length;_++)if(l===_){let n=w[++b];d.onDeleteEmitter.fire({index:_-m,amount:n}),_+=n-1,m+=n,l=w[++b]}else a.push(_);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,w){let a=[];for(let b=0;b<w.length;b++)a.push(d.get(w[b]));for(let b=0;b<a.length;b++)d.set(b,a[b]);d.length=w.length},i.reflowSmallerGetNewLineLengths=function(d,w,a){let b=[],l=d.map(((g,f)=>c(d,f,w))).reduce(((g,f)=>g+f)),m=0,_=0,n=0;for(;n<l;){if(l-n<a){b.push(l-n);break}m+=a;let g=c(d,_,w);m>g&&(m-=g,_++);let f=d[_].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;b.push(u),n+=u}return b},i.getWrappedLineTrimmedLength=c},4097:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),w=c(1073),a=c(802);class b extends d.Disposable{constructor(m,_){super(),this._optionsService=m,this._bufferService=_,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new w.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new w.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,_){this._normal.resize(m,_),this._alt.resize(m,_),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=b},3055:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),w=c(8938),a=c(5451);class b extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let _=new b;return _.setFromCharData(m),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[w.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(m[w.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(m[w.CHAR_DATA_CHAR_INDEX].length===2){let n=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[w.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[w.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=m[w.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[w.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=b},8938:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),w=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,w.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,i)=>{var c,d,w;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
+
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(w||(i.C1_ESCAPED=w={}))},726:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,w=c.length){let a="";for(let b=d;b<w;++b){let l=c[b];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let w=c.length;if(!w)return 0;let a=0,b=0;if(this._interim){let l=c.charCodeAt(b++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=b;l<w;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=w)return this._interim=m,a;let _=c.charCodeAt(l);56320<=_&&_<=57343?d[a++]=1024*(m-55296)+_-56320+65536:(d[a++]=m,d[a++]=_)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let w=c.length;if(!w)return 0;let a,b,l,m,_=0,n=0,g=0;if(this.interim[0]){let h=!1,k=this.interim[0];k&=(224&k)==192?31:(240&k)==224?15:7;let S,C=0;for(;(S=63&this.interim[++C])&&C<4;)k<<=6,k|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=x-C;for(;g<N;){if(g>=w)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[C++]=S,k<<=6,k|=63&S}h||(x===2?k<128?g--:d[_++]=k:x===3?k<2048||k>=55296&&k<=57343||k===65279||(d[_++]=k):k<65536||k>1114111||(d[_++]=k)),this.interim.fill(0)}let f=w-4,u=g;for(;u<w;){for(;!(!(u<f)||128&(a=c[u])||128&(b=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[_++]=a,d[_++]=b,d[_++]=l,d[_++]=m,u+=4;if(a=c[u++],a<128)d[_++]=a;else if((224&a)==192){if(u>=w)return this.interim[0]=a,_;if(b=c[u++],(192&b)!=128){u--;continue}if(n=(31&a)<<6|63&b,n<128){u--;continue}d[_++]=n}else if((240&a)==224){if(u>=w)return this.interim[0]=a,_;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=b,_;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&b)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[_++]=n}else if((248&a)==240){if(u>=w)return this.interim[0]=a,_;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=b,_;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=b,this.interim[2]=l,_;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&b)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[_++]=n}}return _}}},7428:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),w=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],b;i.UnicodeV6=class{constructor(){if(this.version="6",!b){b=new Uint8Array(65536),b.fill(1),b[0]=0,b.fill(0,1,32),b.fill(0,127,160),b.fill(2,4352,4448),b[9001]=2,b[9002]=2,b.fill(2,11904,42192),b[12351]=1,b.fill(2,44032,55204),b.fill(2,63744,64256),b.fill(2,65040,65050),b.fill(2,65072,65136),b.fill(2,65280,65377),b.fill(2,65504,65511);for(let l=0;l<w.length;++l)b.fill(0,w[l][0],w[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?b[l]:(function(m,_){let n,g=0,f=_.length-1;if(m<_[0][0]||m>_[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>_[n][1])g=n+1;else{if(!(m<_[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let _=this.wcwidth(l),n=_===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>_&&(_=g)}return d.UnicodeService.createPropertyValue(0,_,n)}}},3562:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new w.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let _;for(this._isSyncWriting=!0;_=this._writeBuffer.shift();){this._action(_);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let _=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(_,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-_>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let b=a.toLowerCase();if(b.indexOf("rgb:")===0){b=b.slice(4);let l=c.exec(b);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(b.indexOf("#")===0&&(b=b.slice(1),d.exec(b)&&[3,6,9,12].includes(b.length))){let l=b.length/3,m=[0,0,0];for(let _=0;_<3;++_){let n=parseInt(b.slice(l*_,l*_+l),16);m[_]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,b=16){let[l,m,_]=a;return`rgb:${w(l,b)}/${w(m,b)}/${w(_,b)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function w(a,b){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(b){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),w=c(7262),a=c(1263),b=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=b,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=b}registerHandler(m,_){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(_),{dispose:()=>{let g=n.indexOf(_);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=b,this._ident=0}hook(m,_){if(this.reset(),this._ident=m,this._active=this._handlers[m]||b,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(m,_,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,_,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,_,n))}unhook(m,_=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=_,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=b,this._ident=0}};let l=new w.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,_,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,_,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let _=!1;if(this._hitLimit)_=!1;else if(m&&(_=this._handler(this._data,this._params),_ instanceof Promise))return _.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),w=c(7262),a=c(1346),b=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let k=0;k<g.length;k++)this.table[f<<8|g[k]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((C,x)=>x)),f=(C,x)=>g.slice(C,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let k=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),k)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class _ extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new w.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new b.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let k=0;k<g.intermediates.length;++k){let S=g.intermediates.charCodeAt(k);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let k=h.indexOf(f);k!==-1&&h.splice(k,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let k=h.indexOf(f);k!==-1&&h.splice(k,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,k){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=k}parse(g,f,u){let h,k=0,S=0,C=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,C=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](this._params),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 6:if(k=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(k!==24&&k!==26,u),h)return h;k===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(k=g[this._parseStack.chunkPos],h=this._oscParser.end(k!==24&&k!==26,u),h)return h;k===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,C=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=C;x<f;++x){switch(k=g[x],S=this._transitions.table[this.currentState<<8|(k<160?k:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(k=g[E])<32||k>126&&k<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(k=g[E])<32||k>126&&k<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(k=g[E])<32||k>126&&k<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(k=g[E])<32||k>126&&k<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[k]?this._executeHandlers[k]():this._executeHandlerFb(k),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:k,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|k],F=N?N.length-1:-1;for(;F>=0&&(h=N[F](this._params),h!==!0);F--)if(h instanceof Promise)return this._preserveStack(3,N,F,S,x),h;F<0&&this._csiHandlerFb(this._collect<<8|k,this._params),this.precedingJoinState=0;break;case 8:do switch(k){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(k-48)}while(++x<f&&(k=g[x])>47&&k<60);x--;break;case 9:this._collect<<=8,this._collect|=k;break;case 10:let D=this._escHandlers[this._collect<<8|k],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|k),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|k,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(k=g[E])===24||k===26||k===27||k>127&&k<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(k!==24&&k!==26),h)return this._preserveStack(6,[],0,S,x),h;k===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(k=g[E])<32||k>127&&k<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(k!==24&&k!==26),h)return this._preserveStack(5,[],0,S,x),h;k===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=_},1346:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),w=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(b,l){this._handlers[b]===void 0&&(this._handlers[b]=[]);let m=this._handlers[b];return m.push(l),{dispose:()=>{let _=m.indexOf(l);_!==-1&&m.splice(_,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let b=this._active.length-1;b>=0;b--)this._active[b].start();else this._handlerFb(this._id,"START")}_put(b,l,m){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(b,l,m);else this._handlerFb(this._id,"PUT",(0,w.utf32ToString)(b,l,m))}start(){this.reset(),this._state=1}put(b,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let _=b[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(b,l,m)}}end(b,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,_=this._active.length-1,n=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;_>=0&&(m=this._active[_].end(b),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",b);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(b){this._handler=b,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(b,l,m){this._hitLimit||(this._data+=(0,w.utf32ToString)(b,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(b){let l=!1;if(this._hitLimit)l=!1;else if(b&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let b=new d;if(!a.length)return b;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let _=0;_<m.length;++_)b.addSubParam(m[_]);else b.addParam(m)}return b}constructor(a=32,b=32){if(this.maxLength=a,this.maxSubParamsLength=b,b>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(b),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let b=0;b<this.length;++b){a.push(this.params[b]);let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let b=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-b>0?this._subParams.subarray(b,l):null}getSubParamsAll(){let a={};for(let b=0;b<this.length;++b){let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&(a[b]=this._subParams.slice(l,m))}return a}addDigit(a){let b;if(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[b-1];l[b-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let w={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(w),d.dispose=()=>this._wrappedAddonDispose(w),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let w=0;w<this._addons.length;w++)if(this._addons[w]===c){d=w;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),w=c(3055);i.BufferApiView=class{constructor(a,b){this._buffer=a,this.type=b}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let b=this._buffer.lines.get(a);if(b)return new d.BufferLineApiView(b)}getNullCell(){return new w.CellData}}},793:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(w){this._line=w}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(w,a){if(!(w<0||w>=this._line.length))return a?(this._line.loadCell(w,a),a):this._line.loadCell(w,new d.CellData)}translateToString(w,a,b){return this._line.translateToString(w,a,b)}}},5101:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),w=c(7150),a=c(802);class b extends w.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=b},6097:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(w=>d(w.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((w,a)=>d(w,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(y,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,k=arguments.length,S=k<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var C=n.length-1;C>=0;C--)(h=n[C])&&(S=(k<3?h(S):k>3?h(g,f,S):h(g,f))||S);return k>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),b=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new b.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,k=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;k===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(k+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=k-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(k,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=_,i.BufferService=_=d([w(0,l.IOptionsService)],_)},5746:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(y,i,c){var d=this&&this.__decorate||function(u,h,k,S){var C,x=arguments.length,N=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,k):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(u,h,k,S);else for(var F=u.length-1;F>=0;F--)(C=u[F])&&(N=(x<3?C(N):x>3?C(h,k,N):C(h,k))||N);return x>3&&N&&Object.defineProperty(h,k,N),N},w=this&&this.__param||function(u,h){return function(k,S){h(k,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),b=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function _(u,h){let k=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(k|=64,k|=u.action):(k|=3&u.button,4&u.button&&(k|=64),8&u.button&&(k|=128),u.action===32?k|=32:u.action!==0||h||(k|=3)),k}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[_(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.x};${u.y}${h}`}},f=class extends b.Disposable{constructor(u,h,k){super(),this._bufferService=u,this._coreService=h,this._optionsService=k,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,k){if(u.deltaY===0||u.shiftKey||h===void 0||k===void 0)return 0;let S=h/k,C=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(C/=S+0,Math.abs(u.deltaY)<50&&(C*=.3),this._wheelPartialScroll+=C,C=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(C*=this._bufferService.rows),C}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,k){if(k){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([w(0,a.IBufferService),w(1,a.ICoreService),w(2,a.IOptionsService)],f)},4071:function(y,i,c){var d=this&&this.__decorate||function(f,u,h,k){var S,C=arguments.length,x=C<3?u:k===null?k=Object.getOwnPropertyDescriptor(u,h):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,k);else for(var N=f.length-1;N>=0;N--)(S=f[N])&&(x=(C<3?S(x):C>3?S(u,h,x):S(u,h))||x);return C>3&&x&&Object.defineProperty(u,h,x),x},w=this&&this.__param||function(f,u){return function(h,k){u(h,k,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),b=c(7150),l=c(6501),m=c(802),_=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends b.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((k=>k.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([w(0,l.IBufferService),w(1,l.ILogService),w(2,l.IOptionsService)],g)},6025:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),w=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,_]of l)this.set(m,_)}set(l,m){let _=this._entries.get(l);return this._entries.set(l,m),_}forEach(l){for(let[m,_]of this._entries.entries())l(m,_)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(b,l){this._services.set(b,l)}getService(b){return this._services.get(b)}createInstance(b,...l){let m=(0,w.getServiceDependencies)(b).sort(((g,f)=>g.index-f.index)),_=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${b.name} depends on UNKNOWN service ${g.id._id}.`);_.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${b.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new b(...l,..._)}}},7276:function(y,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,k=arguments.length,S=k<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var C=n.length-1;C>=0;C--)(h=n[C])&&(S=(k<3?h(S):k>3?h(g,f,S):h(g,f))||S);return k>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==b.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let k=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,k),k}};let a=c(7150),b=c(6501),l={trace:b.LogLevelEnum.TRACE,debug:b.LogLevelEnum.DEBUG,info:b.LogLevelEnum.INFO,warn:b.LogLevelEnum.WARN,error:b.LogLevelEnum.ERROR,off:b.LogLevelEnum.OFF},m,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=b.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=b.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=b.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=b.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=b.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=b.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=_,i.LogService=_=d([w(0,b.IOptionsService)],_)},56:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),w=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:w.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let b=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in _)if(g in n)try{let f=_[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,n){return this.onOptionChange((g=>{g===_&&n(this.rawOptions[_])}))}onMultipleOptionChange(_,n){return this.onOptionChange((g=>{_.indexOf(g)!==-1&&n()}))}_setupOptions(){let _=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:_.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(_,n){switch(_){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[_]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${_}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=b.includes(n)?n:i.DEFAULT_OPTIONS[_];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${_} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${_} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(y,i,c){var d=this&&this.__decorate||function(l,m,_,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,_):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,_,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,_,u):g(m,_))||u);return f>3&&u&&Object.defineProperty(m,_,u),u},w=this&&this.__param||function(l,m){return function(_,n){m(_,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),b=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),k={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(k,h))),this._dataByLinkId.set(k.id,k),k.id}let _=l,n=this._getEntryIdKey(_),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);_.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(_,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let _=l.lines.indexOf(m);_!==-1&&(l.lines.splice(_,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=b,i.OscLinkService=b=d([w(0,a.IBufferService)],b)},6201:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(w){return w[d]||[]},i.createDecorator=function(w){if(i.serviceRegistry.has(w))return i.serviceRegistry.get(w);let a=function(b,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,n,g){n[c]===n?n[d].push({id:_,index:g}):(n[d]=[{id:_,index:g}],n[c]=n)})(a,b,m)};return a._id=w,i.serviceRegistry.set(w,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var w;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(w||(i.LogLevelEnum=w={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),w=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,_=!1){return(16777215&l)<<3|(3&m)<<1|(_?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new w.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,_=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let k=l.charCodeAt(g);56320<=k&&k<=57343?f=1024*(f-55296)+k-56320+65536:m+=this.wcwidth(k)}let u=this.charProperties(f,_),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(_)),m+=h,_=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),w=c(5777),a=c(802);class b extends w.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,_=!0){this.coreService.triggerDataEvent(m,_)}resize(m,_){m===this.cols&&_===this.rows||super.resize(m,_)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=b},3058:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,k=0){return h[h.length-(1+k)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,k,S=(C,x)=>C===x){if(h===k)return!0;if(!h||!k||h.length!==k.length)return!1;for(let C=0,x=h.length;C<x;C++)if(!S(h[C],k[C]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,k){let S=h.length-1;k<S&&(h[k]=h[S]),h.pop()},i.binarySearch=function(h,k,S){return a(h.length,(C=>S(h[C],k)))},i.binarySearch2=a,i.quickSelect=function h(k,S,C){if((k|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],N=[],F=[],D=[];for(let A of S){let E=C(A,x);E<0?N.push(A):E>0?F.push(A):D.push(A)}return k<N.length?h(k,N,C):k<N.length+D.length?D[0]:h(k-(N.length+D.length),F,C)},i.groupBy=function(h,k){let S=[],C;for(let x of h.slice(0).sort(k))C&&k(C[0],x)===0?C.push(x):(C=[x],S.push(C));return S},i.groupAdjacentBy=function*(h,k){let S,C;for(let x of h)C!==void 0&&k(C,x)?S.push(x):(S&&(yield S),S=[x]),C=x;S&&(yield S)},i.forEachAdjacent=function(h,k){for(let S=0;S<=h.length;S++)k(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,k){for(let S=0;S<h.length;S++)k(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=b,i.delta=function(h,k,S){let C=b(h,k,S),x=[],N=[];for(let F of C)x.push(...h.slice(F.start,F.start+F.deleteCount)),N.push(...F.toInsert);return{removed:x,added:N}},i.top=function(h,k,S){if(S===0)return[];let C=h.slice(0,S).sort(k);return l(h,k,C,S,h.length),C},i.topAsync=function(h,k,S,C,x){return S===0?Promise.resolve([]):new Promise(((N,F)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(k);for(let E=S,q=Math.min(S+C,D);E<D;E=q,q=Math.min(q+C,D)){if(E>S&&await new Promise((G=>setTimeout(G))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,k,A,E,q)}return A})().then(N,F)}))},i.coalesce=function(h){return h.filter((k=>!!k))},i.coalesceInPlace=function(h){let k=0;for(let S=0;S<h.length;S++)h[S]&&(h[k]=h[S],k+=1);h.length=k},i.move=function(h,k,S){h.splice(S,0,h.splice(k,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,k=S=>S){let S=new Set;return h.filter((C=>{let x=k(C);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let k=new Set;return S=>{let C=h(S);return!k.has(C)&&(k.add(C),!0)}},i.firstOrDefault=function(h,k){return h.length>0?h[0]:k},i.lastOrDefault=function(h,k){return h.length>0?h[h.length-1]:k},i.commonPrefixLength=function(h,k,S=(C,x)=>C===x){let C=0;for(let x=0,N=Math.min(h.length,k.length);x<N&&S(h[x],k[x]);x++)C++;return C},i.range=function(h,k){let S=typeof k=="number"?h:0;typeof k=="number"?S=h:(S=0,k=h);let C=[];if(S<=k)for(let x=S;x<k;x++)C.push(x);else for(let x=S;x>k;x--)C.push(x);return C},i.index=function(h,k,S){return h.reduce(((C,x)=>(C[k(x)]=S?S(x):x,C)),Object.create(null))},i.insert=function(h,k){return h.push(k),()=>m(h,k)},i.remove=m,i.arrayInsert=function(h,k,S){let C=h.slice(0,k),x=h.slice(k);return C.concat(S,x)},i.shuffle=function(h,k){let S;if(typeof k=="number"){let C=k;S=()=>{let x=179426549*Math.sin(C++);return x-Math.floor(x)}}else S=Math.random;for(let C=h.length-1;C>0;C-=1){let x=Math.floor(S()*(C+1)),N=h[C];h[C]=h[x],h[x]=N}},i.pushToStart=function(h,k){let S=h.indexOf(k);S>-1&&(h.splice(S,1),h.unshift(k))},i.pushToEnd=function(h,k){let S=h.indexOf(k);S>-1&&(h.splice(S,1),h.push(k))},i.pushMany=function(h,k){for(let S of k)h.push(S)},i.mapArrayOrNot=function(h,k){return Array.isArray(h)?h.map(k):k(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=_,i.splice=function(h,k,S,C){let x=n(h,k),N=h.splice(x,S);return N===void 0&&(N=[]),_(h,x,C),N},i.compareBy=function(h,k){return(S,C)=>k(h(S),h(C))},i.tieBreakComparators=function(...h){return(k,S)=>{for(let C of h){let x=C(k,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(k,S)=>-h(k,S)};let d=c(9807),w=c(8297);function a(h,k){let S=0,C=h-1;for(;S<=C;){let x=(S+C)/2|0,N=k(x);if(N<0)S=x+1;else{if(!(N>0))return x;C=x-1}}return-(S+1)}function b(h,k,S){let C=[];function x(D,A,E){if(A===0&&E.length===0)return;let q=C[C.length-1];q&&q.start+q.deleteCount===D?(q.deleteCount+=A,q.toInsert.push(...E)):C.push({start:D,deleteCount:A,toInsert:E})}let N=0,F=0;for(;;){if(N===h.length){x(N,0,k.slice(F));break}if(F===k.length){x(N,h.length-N,[]);break}let D=h[N],A=k[F],E=S(D,A);E===0?(N+=1,F+=1):E<0?(x(N,1,[]),N+=1):E>0&&(x(N,0,[A]),F+=1)}return C}function l(h,k,S,C,x){for(let N=S.length;C<x;C++){let F=h[C];if(k(F,S[N-1])<0){S.pop();let D=(0,w.findFirstIdxMonotonousOrArrLen)(S,(A=>k(F,A)<0));S.splice(D,0,F)}}}function m(h,k){let S=h.indexOf(k);if(S>-1)return h.splice(S,1),k}function _(h,k,S){let C=n(h,k),x=h.length,N=S.length;h.length=x+N;for(let F=x-1;F>=C;F--)h[F+N]=h[F];for(let F=0;F<N;F++)h[F+C]=S[F]}function n(h,k){return k<0?Math.max(k+h.length,0):Math.min(k,h.length)}var g;(function(h){h.isLessThan=function(k){return k<0},h.isLessThanOrEqual=function(k){return k<=0},h.isGreaterThan=function(k){return k>0},h.isNeitherLessOrGreaterThan=function(k){return k===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,k)=>h-k,i.booleanComparator=(h,k)=>(0,i.numberComparator)(h?1:0,k?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let k=this.firstIdx;for(;k<this.items.length&&h(this.items[k]);)k++;let S=k===this.firstIdx?null:this.items.slice(this.firstIdx,k);return this.firstIdx=k,S}takeFromEndWhile(h){let k=this.lastIdx;for(;k>=0&&h(this.items[k]);)k--;let S=k===this.lastIdx?null:this.items.slice(k+1,this.lastIdx+1);return this.lastIdx=k,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let k=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,k}};class f{static{this.empty=new f((k=>{}))}constructor(k){this.iterate=k}forEach(k){this.iterate((S=>(k(S),!0)))}toArray(){let k=[];return this.iterate((S=>(k.push(S),!0))),k}filter(k){return new f((S=>this.iterate((C=>!k(C)||S(C)))))}map(k){return new f((S=>this.iterate((C=>S(k(C))))))}some(k){let S=!1;return this.iterate((C=>(S=k(C),!S))),S}findFirst(k){let S;return this.iterate((C=>!k(C)||(S=C,!1))),S}findLast(k){let S;return this.iterate((C=>(k(C)&&(S=C),!0))),S}findLastMaxBy(k){let S,C=!0;return this.iterate((x=>((C||g.isGreaterThan(k(x,S)))&&(C=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(k){this._indexMap=k}static createSortPermutation(k,S){let C=Array.from(k.keys()).sort(((x,N)=>S(k[x],k[N])));return new u(C)}apply(k){return k.map(((S,C)=>k[this._indexMap[C]]))}inverse(){let k=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)k[this._indexMap[S]]=S;return new u(k)}}i.Permutation=u},8297:(y,i)=>{function c(l,m,_=l.length-1){for(let n=_;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function w(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let _=c(l,m);if(_!==-1)return l[_]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let _=d(l,m);return _===-1?void 0:l[_]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let _=w(l,m);return _===l.length?void 0:l[_]},i.findFirstIdxMonotonousOrArrLen=w,i.findFirstIdxMonotonous=function(l,m,_=0,n=l.length){let g=w(l,m,_,n);return g===l.length?-1:g},i.findFirstMax=b,i.findLastMax=function(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>=0&&(_=g)}return _},i.findFirstMin=function(l,m){return b(l,((_,n)=>-m(_,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let _=0;for(let n=1;n<l.length;n++)m(l[n],l[_])>0&&(_=n);return _},i.mapFindFirst=function(l,m){for(let _ of l){let n=m(_);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let _=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function b(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>0&&(_=g)}return _}i.MonotonousArray=a},9087:(y,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(w,a){let b=Object.create(null);for(let l of w){let m=a(l),_=b[m];_||(_=b[m]=[]),_.push(l)}return b},i.diffSets=function(w,a){let b=[],l=[];for(let m of w)a.has(m)||b.push(m);for(let m of a)w.has(m)||l.push(m);return{removed:b,added:l}},i.diffMaps=function(w,a){let b=[],l=[];for(let[m,_]of w)a.has(m)||b.push(_);for(let[m,_]of a)w.has(m)||l.push(_);return{removed:b,added:l}},i.intersection=function(w,a){let b=new Set;for(let l of a)w.has(l)&&b.add(l);return b};class d{static{c=Symbol.toStringTag}constructor(a,b){this.toKey=b,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let b=this.toKey(a);return this._map.set(b,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,b){this._map.forEach((l=>a.call(b,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){w(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){w(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=w,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
|
|
5
5
|
`)[0]:String(f):"Error"};class c{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(u){setTimeout((()=>{throw u.stack?n.isErrorNoTelemetry(u)?new n(u.message+`
|
|
6
6
|
|
|
7
7
|
`+u.stack):new Error(u.message+`
|
|
8
8
|
|
|
9
|
-
`+u.stack):u}),0)}}addListener(u){return this.listeners.push(u),()=>{this._removeListener(u)}}emit(u){this.listeners.forEach((h=>{h(u)}))}_removeListener(u){this.listeners.splice(this.listeners.indexOf(u),1)}setUnexpectedErrorHandler(u){this.unexpectedErrorHandler=u}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}i.ErrorHandler=c,i.errorHandler=new c;let d="Canceled";function
|
|
9
|
+
`+u.stack):u}),0)}}addListener(u){return this.listeners.push(u),()=>{this._removeListener(u)}}emit(u){this.listeners.forEach((h=>{h(u)}))}_removeListener(u){this.listeners.splice(this.listeners.indexOf(u),1)}setUnexpectedErrorHandler(u){this.unexpectedErrorHandler=u}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}i.ErrorHandler=c,i.errorHandler=new c;let d="Canceled";function w(f){return f instanceof a||f instanceof Error&&f.name===d&&f.message===d}class a extends Error{constructor(){super(d),this.name=this.message}}i.CancellationError=a;class b extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=b;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=_;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),w=c(8841),a=c(7150),b=c(6317),l=c(9725);var m;(function(A){function E(R){return(T,$=null,W)=>{let H,V=!1;return H=R((te=>{if(!V)return H?H.dispose():V=!0,T.call($,te)}),null,W),V&&H.dispose(),H}}function q(R,T,$){return z(((W,H=null,V)=>R((te=>W.call(H,T(te))),null,V)),$)}function G(R,T,$){return z(((W,H=null,V)=>R((te=>T(te)&&W.call(H,te)),null,V)),$)}function z(R,T){let $,W=new C({onWillAddFirstListener(){$=R(W.fire,W)},onDidRemoveLastListener(){$?.dispose()}});return T?.add(W),W.event}function Y(R,T,$=100,W=!1,H=!1,V,te){let I,X,K,J,_e=0,ve=new C({leakWarningThreshold:V,onWillAddFirstListener(){I=R((Je=>{_e++,X=T(X,Je),W&&!K&&(ve.fire(X),X=void 0),J=()=>{let ce=X;X=void 0,K=void 0,(!W||_e>1)&&ve.fire(ce),_e=0},typeof $=="number"?(clearTimeout(K),K=setTimeout(J,$)):K===void 0&&(K=0,queueMicrotask(J))}))},onWillRemoveListener(){H&&_e>0&&J?.()},onDidRemoveLastListener(){J=void 0,I.dispose()}});return te?.add(ve),ve.event}A.None=()=>a.Disposable.None,A.defer=function(R,T){return Y(R,(()=>{}),0,void 0,!0,void 0,T)},A.once=E,A.map=q,A.forEach=function(R,T,$){return z(((W,H=null,V)=>R((te=>{T(te),W.call(H,te)}),null,V)),$)},A.filter=G,A.signal=function(R){return R},A.any=function(...R){return(T,$=null,W)=>{return H=(0,a.combinedDisposable)(...R.map((te=>te((I=>T.call($,I)))))),(V=W)instanceof Array?V.push(H):V&&V.add(H),H;var H,V}},A.reduce=function(R,T,$,W){let H=$;return q(R,(V=>(H=T(H,V),H)),W)},A.debounce=Y,A.accumulate=function(R,T=0,$){return A.debounce(R,((W,H)=>W?(W.push(H),W):[H]),T,void 0,!0,void 0,$)},A.latch=function(R,T=(W,H)=>W===H,$){let W,H=!0;return G(R,(V=>{let te=H||!T(V,W);return H=!1,W=V,te}),$)},A.split=function(R,T,$){return[A.filter(R,T,$),A.filter(R,(W=>!T(W)),$)]},A.buffer=function(R,T=!1,$=[],W){let H=$.slice(),V=R((X=>{H?H.push(X):I.fire(X)}));W&&W.add(V);let te=()=>{H?.forEach((X=>I.fire(X))),H=null},I=new C({onWillAddFirstListener(){V||(V=R((X=>I.fire(X))),W&&W.add(V))},onDidAddFirstListener(){H&&(T?setTimeout(te):te())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return W&&W.add(I),I.event},A.chain=function(R,T){return($,W,H)=>{let V=T(new v);return R((function(te){let I=V.evaluate(te);I!==B&&$.call(W,I)}),void 0,H)}};let B=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(T){return this.steps.push(T),this}forEach(T){return this.steps.push(($=>(T($),$))),this}filter(T){return this.steps.push(($=>T($)?$:B)),this}reduce(T,$){let W=$;return this.steps.push((H=>(W=T(W,H),W))),this}latch(T=($,W)=>$===W){let $,W=!0;return this.steps.push((H=>{let V=W||!T(H,$);return W=!1,$=H,V?H:B})),this}evaluate(T){for(let $ of this.steps)if((T=$(T))===B)break;return T}}A.fromNodeEventEmitter=function(R,T,$=W=>W){let W=(...V)=>H.fire($(...V)),H=new C({onWillAddFirstListener:()=>R.on(T,W),onDidRemoveLastListener:()=>R.removeListener(T,W)});return H.event},A.fromDOMEventEmitter=function(R,T,$=W=>W){let W=(...V)=>H.fire($(...V)),H=new C({onWillAddFirstListener:()=>R.addEventListener(T,W),onDidRemoveLastListener:()=>R.removeEventListener(T,W)});return H.event},A.toPromise=function(R){return new Promise((T=>E(R)(T)))},A.fromPromise=function(R){let T=new C;return R.then(($=>{T.fire($)}),(()=>{T.fire(void 0)})).finally((()=>{T.dispose()})),T.event},A.forward=function(R,T){return R(($=>T.fire($)))},A.runAndSubscribe=function(R,T,$){return T($),R((W=>T(W)))};class P{constructor(T,$){this._observable=T,this._counter=0,this._hasChanged=!1;let W={onWillAddFirstListener:()=>{T.addObserver(this)},onDidRemoveLastListener:()=>{T.removeObserver(this)}};this.emitter=new C(W),$&&$.add(this.emitter)}beginUpdate(T){this._counter++}handlePossibleChange(T){}handleChange(T,$){this._hasChanged=!0}endUpdate(T){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}A.fromObservable=function(R,T){return new P(R,T).emitter.event},A.fromObservableLight=function(R){return(T,$,W)=>{let H=0,V=!1,te={beginUpdate(){H++},endUpdate(){H--,H===0&&(R.reportChanges(),V&&(V=!1,T.call($)))},handlePossibleChange(){},handleChange(){V=!0}};R.addObserver(te),R.reportChanges();let I={dispose(){R.removeObserver(te)}};return W instanceof a.DisposableStore?W.add(I):Array.isArray(W)&&W.push(I),I}}})(m||(i.Event=m={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(E){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${E}_${_._idPool++}`,_.all.add(this)}start(E){this._stopWatch=new l.StopWatch,this.listenerCount=E}stop(){if(this._stopWatch){let E=this._stopWatch.elapsed();this.durations.push(E),this.elapsedOverall+=E,this.invocationCount+=1,this._stopWatch=void 0}}}i.EventProfiling=_;let n=-1;class g{static{this._idPool=1}constructor(E,q,G=(g._idPool++).toString(16).padStart(3,"0")){this._errorHandler=E,this.threshold=q,this.name=G,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(E,q){let G=this.threshold;if(G<=0||q<G)return;this._stacks||(this._stacks=new Map);let z=this._stacks.get(E.value)||0;if(this._stacks.set(E.value,z+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*G;let[Y,B]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${q} listeners already. MOST frequent listener (${B}):`;console.warn(v),console.warn(Y);let P=new u(v,Y);this._errorHandler(P)}return()=>{let Y=this._stacks.get(E.value)||0;this._stacks.set(E.value,Y-1)}}getMostFrequentStack(){if(!this._stacks)return;let E,q=0;for(let[G,z]of this._stacks)(!E||q<z)&&(E=[G,z],q=z);return E}}class f{static create(){let E=new Error;return new f(E.stack??"")}constructor(E){this.value=E}print(){console.warn(this.value.split(`
|
|
10
10
|
`).slice(2).join(`
|
|
11
|
-
`))}}class u extends Error{constructor(E,U){super(E),this.name="ListenerLeakError",this.stack=U}}i.ListenerLeakError=u;class h extends Error{constructor(E,U){super(E),this.name="ListenerRefusalError",this.stack=U}}i.ListenerRefusalError=h;let y=0;class S{constructor(E){this.value=E,this.id=y++}}class I{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new w(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,U,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 P=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],R=new h(`${v}. HINT: Stack shows most frequent listener (${P[1]}-times)`,P[0]);return(this._options?.onListenerError||d.onUnexpectedError)(R),a.Disposable.None}if(this._disposed)return a.Disposable.None;U&&(E=E.bind(U));let V=new S(E),G;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(V.stack=f.create(),G=this._leakageMon.check(V.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,V]):this._listeners.push(V):(this._options?.onWillAddFirstListener?.(this),this._listeners=V,this._options?.onDidAddFirstListener?.(this)),this._size++;let B=(0,a.toDisposable)((()=>{G?.(),this._removeListener(V)}));return z instanceof a.DisposableStore?z.add(B):Array.isArray(z)&&z.push(B),B},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let U=this._listeners,z=U.indexOf(E);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--,U[z]=void 0;let V=this._deliveryQueue.current===this;if(2*this._size<=U.length){let G=0;for(let B=0;B<U.length;B++)U[B]?U[G++]=U[B]:V&&(this._deliveryQueue.end--,G<this._deliveryQueue.i&&this._deliveryQueue.i--);U.length=G}}_deliver(E,U){if(!E)return;let z=this._options?.onListenerError||d.onUnexpectedError;if(z)try{E.value(U)}catch(V){z(V)}else E.value(U)}_deliverQueue(E){let U=E.current._listeners;for(;E.i<E.end;)this._deliver(U[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let U=this._deliveryQueue;U.enqueue(this,E,this._listeners.length),this._deliverQueue(U)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=I,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,U,z){this.i=0,this.end=z,this.current=E,this.value=U}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends I{async fireAsync(A,E,U){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new b.LinkedList),((z,V)=>{if(z instanceof S)V(z);else for(let G=0;G<z.length;G++){let B=z[G];B&&V(B)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[z,V]=this._asyncDeliveryQueue.shift(),G=[],B={...V,token:E,waitUntil:v=>{if(Object.isFrozen(G))throw new Error("waitUntil can NOT be called asynchronous");U&&(v=U(v,z)),G.push(v)}};try{z(B)}catch(v){(0,d.onUnexpectedError)(v);continue}Object.freeze(G),await Promise.allSettled(G).then((v=>{for(let P of v)P.status==="rejected"&&(0,d.onUnexpectedError)(P.reason)}))}}};class N extends I{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new b.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=N,i.DebounceEmitter=class extends N{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends I{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class F{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new I({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let U={event:E,listener:null};return this.events.push(U),this.hasListeners&&this.hook(U),(0,a.toDisposable)((0,_.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(U);let z=this.events.indexOf(U);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((U=>this.emitter.fire(U)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=F,i.DynamicListEventMultiplexer=class{constructor(A,E,U,z){this._store=new a.DisposableStore;let V=this._store.add(new F),G=this._store.add(new a.DisposableMap);function B(v){G.set(v,V.add(z(v)))}for(let v of A)B(v);this._store.add(E((v=>{B(v)}))),this._store.add(U((v=>{G.deleteAndDispose(v)}))),this.event=V.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,U){return(z,V,G)=>A((B=>{let v=this.data[this.data.length-1];if(!E)return void(v?v.buffers.push((()=>z.call(V,B))):z.call(V,B));let P=v;P?(P.items??=[],P.items.push(B),P.buffers.length===0&&v.buffers.push((()=>{P.reducedResult??=U?P.items.reduce(E,U):P.items.reduce(E),z.call(V,P.reducedResult)}))):z.call(V,E(U,B))}),void 0,G)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let U=A();return this.data.pop(),E.buffers.forEach((z=>z())),U}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new I({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new I,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let _=this,a,b=!1;return function(){if(b)return a;if(b=!0,d)try{a=c.apply(_,arguments)}finally{d()}else a=c.apply(_,arguments);return a}}},4218:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function _(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=_;let a=Object.freeze([]);function*b(l){yield l}d.empty=function(){return a},d.single=b,d.wrap=function(l){return _(l)?l:b(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let w=0;for(let n of l)if(m(n,w++))return!0;return!1},d.find=function(l,m){for(let w of l)if(m(w))return w},d.filter=function*(l,m){for(let w of l)m(w)&&(yield w)},d.map=function*(l,m){let w=0;for(let n of l)yield m(n,w++)},d.flatMap=function*(l,m){let w=0;for(let n of l)yield*m(n,w++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,w){let n=w;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,w=l.length){for(m<0&&(m+=l.length),w<0?w+=l.length:w>l.length&&(w=l.length);m<w;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let w=[];if(m===0)return[w,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[w,d.empty()];w.push(f.value)}return[w,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let w of l)m.push(w);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function(F){m=F},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function(F){return m?.markAsSingleton(F),F},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function(F){for(let D of F)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...F){let D=y((()=>h(F)));return(function(A,E){if(m)for(let U of A)m.setParent(U,E)})(F,D),D},i.toDisposable=y,i.disposeOnReturn=function(F){let D=new S;try{F(D)}finally{D.dispose()}};let d=c(3058),_=c(9087),a=c(2608),b=c(8841),l=c(4218),m=null;class w{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:w.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let U=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,U),U}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let B=new Map,v=[...this.livingDisposables.values()].filter((R=>R.source!==null&&!this.getRootParent(R,B).isSingleton));if(v.length===0)return;let P=new Set(v.map((R=>R.value)));if(E=v.filter((R=>!(R.parent&&P.has(R.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function U(B){let v=B.source.split(`
|
|
12
|
-
`).map((P=>P.trim().replace("at ",""))).filter((P=>P!==""));return(function(P,R){for(;P.length>0&&R.some((T=>typeof T=="string"?T===P[0]:P[0].match(T)));)P.shift()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let
|
|
13
|
-
`),B)}E.sort((0,d.compareBy)((B=>B.idx),d.numberComparator));let
|
|
14
|
-
`)).size}/${E.length} leaks) at ${T}`;let $=
|
|
15
|
-
`)),W=(0,
|
|
11
|
+
`))}}class u extends Error{constructor(E,q){super(E),this.name="ListenerLeakError",this.stack=q}}i.ListenerLeakError=u;class h extends Error{constructor(E,q){super(E),this.name="ListenerRefusalError",this.stack=q}}i.ListenerRefusalError=h;let k=0;class S{constructor(E){this.value=E,this.id=k++}}class C{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,q,G)=>{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 P=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],R=new h(`${v}. HINT: Stack shows most frequent listener (${P[1]}-times)`,P[0]);return(this._options?.onListenerError||d.onUnexpectedError)(R),a.Disposable.None}if(this._disposed)return a.Disposable.None;q&&(E=E.bind(q));let z=new S(E),Y;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(z.stack=f.create(),Y=this._leakageMon.check(z.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,z]):this._listeners.push(z):(this._options?.onWillAddFirstListener?.(this),this._listeners=z,this._options?.onDidAddFirstListener?.(this)),this._size++;let B=(0,a.toDisposable)((()=>{Y?.(),this._removeListener(z)}));return G instanceof a.DisposableStore?G.add(B):Array.isArray(G)&&G.push(B),B},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let q=this._listeners,G=q.indexOf(E);if(G===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,q[G]=void 0;let z=this._deliveryQueue.current===this;if(2*this._size<=q.length){let Y=0;for(let B=0;B<q.length;B++)q[B]?q[Y++]=q[B]:z&&(this._deliveryQueue.end--,Y<this._deliveryQueue.i&&this._deliveryQueue.i--);q.length=Y}}_deliver(E,q){if(!E)return;let G=this._options?.onListenerError||d.onUnexpectedError;if(G)try{E.value(q)}catch(z){G(z)}else E.value(q)}_deliverQueue(E){let q=E.current._listeners;for(;E.i<E.end;)this._deliver(q[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let q=this._deliveryQueue;q.enqueue(this,E,this._listeners.length),this._deliverQueue(q)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=C,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,q,G){this.i=0,this.end=G,this.current=E,this.value=q}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends C{async fireAsync(A,E,q){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new b.LinkedList),((G,z)=>{if(G instanceof S)z(G);else for(let Y=0;Y<G.length;Y++){let B=G[Y];B&&z(B)}})(this._listeners,(G=>this._asyncDeliveryQueue.push([G.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[G,z]=this._asyncDeliveryQueue.shift(),Y=[],B={...z,token:E,waitUntil:v=>{if(Object.isFrozen(Y))throw new Error("waitUntil can NOT be called asynchronous");q&&(v=q(v,G)),Y.push(v)}};try{G(B)}catch(v){(0,d.onUnexpectedError)(v);continue}Object.freeze(Y),await Promise.allSettled(Y).then((v=>{for(let P of v)P.status==="rejected"&&(0,d.onUnexpectedError)(P.reason)}))}}};class N extends C{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new b.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=N,i.DebounceEmitter=class extends N{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends C{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class F{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new C({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let q={event:E,listener:null};return this.events.push(q),this.hasListeners&&this.hook(q),(0,a.toDisposable)((0,w.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(q);let G=this.events.indexOf(q);this.events.splice(G,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((q=>this.emitter.fire(q)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=F,i.DynamicListEventMultiplexer=class{constructor(A,E,q,G){this._store=new a.DisposableStore;let z=this._store.add(new F),Y=this._store.add(new a.DisposableMap);function B(v){Y.set(v,z.add(G(v)))}for(let v of A)B(v);this._store.add(E((v=>{B(v)}))),this._store.add(q((v=>{Y.deleteAndDispose(v)}))),this.event=z.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,q){return(G,z,Y)=>A((B=>{let v=this.data[this.data.length-1];if(!E)return void(v?v.buffers.push((()=>G.call(z,B))):G.call(z,B));let P=v;P?(P.items??=[],P.items.push(B),P.buffers.length===0&&v.buffers.push((()=>{P.reducedResult??=q?P.items.reduce(E,q):P.items.reduce(E),G.call(z,P.reducedResult)}))):G.call(z,E(q,B))}),void 0,Y)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let q=A();return this.data.pop(),E.buffers.forEach((G=>G())),q}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new C({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new C,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let w=this,a,b=!1;return function(){if(b)return a;if(b=!0,d)try{a=c.apply(w,arguments)}finally{d()}else a=c.apply(w,arguments);return a}}},4218:(y,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function w(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=w;let a=Object.freeze([]);function*b(l){yield l}d.empty=function(){return a},d.single=b,d.wrap=function(l){return w(l)?l:b(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let _=0;for(let n of l)if(m(n,_++))return!0;return!1},d.find=function(l,m){for(let _ of l)if(m(_))return _},d.filter=function*(l,m){for(let _ of l)m(_)&&(yield _)},d.map=function*(l,m){let _=0;for(let n of l)yield m(n,_++)},d.flatMap=function*(l,m){let _=0;for(let n of l)yield*m(n,_++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,_){let n=_;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,_=l.length){for(m<0&&(m+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);m<_;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let _=[];if(m===0)return[_,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[_,d.empty()];_.push(f.value)}return[_,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let _ of l)m.push(_);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(y,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function(F){m=F},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function(F){return m?.markAsSingleton(F),F},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function(F){for(let D of F)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...F){let D=k((()=>h(F)));return(function(A,E){if(m)for(let q of A)m.setParent(q,E)})(F,D),D},i.toDisposable=k,i.disposeOnReturn=function(F){let D=new S;try{F(D)}finally{D.dispose()}};let d=c(3058),w=c(9087),a=c(2608),b=c(8841),l=c(4218),m=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let q=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,q),q}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let B=new Map,v=[...this.livingDisposables.values()].filter((R=>R.source!==null&&!this.getRootParent(R,B).isSingleton));if(v.length===0)return;let P=new Set(v.map((R=>R.value)));if(E=v.filter((R=>!(R.parent&&P.has(R.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function q(B){let v=B.source.split(`
|
|
12
|
+
`).map((P=>P.trim().replace("at ",""))).filter((P=>P!==""));return(function(P,R){for(;P.length>0&&R.some((T=>typeof T=="string"?T===P[0]:P[0].match(T)));)P.shift()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let G=new a.SetMap;for(let B of E){let v=q(B);for(let P=0;P<=v.length;P++)G.add(v.slice(0,P).join(`
|
|
13
|
+
`),B)}E.sort((0,d.compareBy)((B=>B.idx),d.numberComparator));let z="",Y=0;for(let B of E.slice(0,D)){Y++;let v=q(B),P=[];for(let R=0;R<v.length;R++){let T=v[R];T=`(shared with ${G.get(v.slice(0,R+1).join(`
|
|
14
|
+
`)).size}/${E.length} leaks) at ${T}`;let $=G.get(v.slice(0,R).join(`
|
|
15
|
+
`)),W=(0,w.groupBy)([...$].map((H=>q(H)[R])),(H=>H));delete W[v[R]];for(let[H,V]of Object.entries(W))P.unshift(` - stacktraces of ${V.length} other leaks continue with ${H}`);P.unshift(T)}z+=`
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
==================== Leaking disposable ${
|
|
18
|
+
==================== Leaking disposable ${Y}/${E.length}: ${B.value.constructor.name} ====================
|
|
19
19
|
${P.join(`
|
|
20
20
|
`)}
|
|
21
21
|
============================================================
|
|
22
22
|
|
|
23
|
-
`}return E.length>D&&(
|
|
23
|
+
`}return E.length>D&&(z+=`
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
... and ${E.length-D} more leaking disposables
|
|
27
27
|
|
|
28
|
-
`),{leaks:E,details:V}}}function n(F){return m?.trackDisposable(F),F}function g(F){m?.markAsDisposed(F)}function f(F,D){m?.setParent(F,D)}function u(F){return typeof F=="object"&&F!==null&&typeof F.dispose=="function"&&F.dispose.length===0}function h(F){if(l.Iterable.is(F)){let D=[];for(let A of F)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray(F)?[]:F}if(F)return F.dispose(),F}function y(F){let D=n({dispose:(0,b.createSingleCallFunction)((()=>{g(D),F()}))});return D}i.DisposableTracker=w;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=S;class I{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=I;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor(F){this._disposable=new x,this._isDisposed=!1,this._disposable.value=F}get value(){return this._disposable.value}set value(F){this._isDisposed||F===this._disposable.value||(this._disposable.value=F)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor(F){this._disposable=F,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set(F){let D=F;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire(F,...D){let A=this.references.get(F);A||(A={counter:0,object:this.createReferencedObject(F,...D)},this.references.set(F,A));let{object:E}=A,U=(0,b.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject(F,A.object),this.references.delete(F))}));return A.counter++,{object:E,dispose:U}}},i.AsyncReferenceCollection=class{constructor(F){this.referenceCollection=F}async acquire(F,...D){let A=this.referenceCollection.acquire(F,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor(F){this.object=F}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=N},6317:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let b=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=b}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,b){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(b){let w=this._last;this._last=l,l.prev=w,w.next=l}else{let w=this._first;this._first=l,l.next=w,w.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let b=a.prev;b.next=a.next,a.next.prev=b}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,_,a){let b=d.get(_);return b===void 0&&(b=a,d.set(_,b)),b},i.mapToString=function(d){let _=[];return d.forEach(((a,b)=>{_.push(`${b} => ${a}`)})),`Map(${d.size}) {${_.join(", ")}}`},i.setToString=function(d){let _=[];return d.forEach((a=>{_.push(a)})),`Set(${d.size}) {${_.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,_){if(d===_)return!0;if(d.size!==_.size)return!1;for(let[a,b]of d)if(!_.has(a)||_.get(a)!==b)return!1;for(let[a]of _)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let _=this.map.get(d)||0;return _!==0&&(_--,_===0?this.map.delete(d):this.map.set(d,_),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[_,a]of d)this.set(_,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,_){this._m1.set(d,_),this._m2.set(_,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let _=this._m1.get(d);return _!==void 0&&(this._m1.delete(d),this._m2.delete(_),!0)}forEach(d,_){this._m1.forEach(((a,b)=>{d.call(_,a,b,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,_){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(_)}delete(d,_){let a=this.map.get(d);a&&(a.delete(_),a.size===0&&this.map.delete(d))}forEach(d,_){let a=this.map.get(d);a&&a.forEach(_)}get(d){return this.map.get(d)||new Set}}},9725:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(k){var i=t[k];if(i!==void 0)return i.exports;var c=t[k]={exports:{}};return e[k].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var k=s;Object.defineProperty(k,"__esModule",{value:!0}),k.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),_=r(5856),a=r(3027),b=r(7150),l=["cols","rows"];class m extends b.Disposable{constructor(n){super(),this._core=this._register(new _.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
|
|
29
|
-
`,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}
|
|
28
|
+
`),{leaks:E,details:z}}}function n(F){return m?.trackDisposable(F),F}function g(F){m?.markAsDisposed(F)}function f(F,D){m?.setParent(F,D)}function u(F){return typeof F=="object"&&F!==null&&typeof F.dispose=="function"&&F.dispose.length===0}function h(F){if(l.Iterable.is(F)){let D=[];for(let A of F)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray(F)?[]:F}if(F)return F.dispose(),F}function k(F){let D=n({dispose:(0,b.createSingleCallFunction)((()=>{g(D),F()}))});return D}i.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=S;class C{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=C;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor(F){this._disposable=new x,this._isDisposed=!1,this._disposable.value=F}get value(){return this._disposable.value}set value(F){this._isDisposed||F===this._disposable.value||(this._disposable.value=F)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor(F){this._disposable=F,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set(F){let D=F;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire(F,...D){let A=this.references.get(F);A||(A={counter:0,object:this.createReferencedObject(F,...D)},this.references.set(F,A));let{object:E}=A,q=(0,b.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject(F,A.object),this.references.delete(F))}));return A.counter++,{object:E,dispose:q}}},i.AsyncReferenceCollection=class{constructor(F){this.referenceCollection=F}async acquire(F,...D){let A=this.referenceCollection.acquire(F,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor(F){this.object=F}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=N},6317:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let b=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=b}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,b){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(b){let _=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 b=a.prev;b.next=a.next,a.next.prev=b}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(y,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,w,a){let b=d.get(w);return b===void 0&&(b=a,d.set(w,b)),b},i.mapToString=function(d){let w=[];return d.forEach(((a,b)=>{w.push(`${b} => ${a}`)})),`Map(${d.size}) {${w.join(", ")}}`},i.setToString=function(d){let w=[];return d.forEach((a=>{w.push(a)})),`Set(${d.size}) {${w.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,w){if(d===w)return!0;if(d.size!==w.size)return!1;for(let[a,b]of d)if(!w.has(a)||w.get(a)!==b)return!1;for(let[a]of w)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let w=this.map.get(d)||0;return w!==0&&(w--,w===0?this.map.delete(d):this.map.set(d,w),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[w,a]of d)this.set(w,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,w){this._m1.set(d,w),this._m2.set(w,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let w=this._m1.get(d);return w!==void 0&&(this._m1.delete(d),this._m2.delete(w),!0)}forEach(d,w){this._m1.forEach(((a,b)=>{d.call(w,a,b,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,w){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(w)}delete(d,w){let a=this.map.get(d);a&&(a.delete(w),a.size===0&&this.map.delete(d))}forEach(d,w){let a=this.map.get(d);a&&a.forEach(w)}get(d){return this.map.get(d)||new Set}}},9725:(y,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(y){var i=t[y];if(i!==void 0)return i.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 i=r(5101),c=r(6097),d=r(4335),w=r(5856),a=r(3027),b=r(7150),l=["cols","rows"];class m extends b.Disposable{constructor(n){super(),this._core=this._register(new w.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:k=>{this._checkReadonlyOptions(u),this._core.options[u]=k}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
|
|
29
|
+
`,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}y.Terminal=m})();var o=Do;for(var p in s)o[p]=s[p];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});De();function on(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
|
+
`+be());return{mode:"command",command:{kind:"addRepo",path:r}}}if(t.length>=3&&t[0]==="workspace"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Workspace path cannot be empty.
|
|
32
32
|
|
|
33
|
-
`+
|
|
33
|
+
`+be());return{mode:"command",command:{kind:"addWorkspace",path:r}}}if(t.length===2&&t[0]==="repo"&&t[1]==="list")return{mode:"command",command:{kind:"listRepos"}};if(t.length===3&&t[0]==="repo"&&t[1]==="remove")return{mode:"command",command:{kind:"removeRepo",repoId:t[2].trim()}};if(t.length>=2&&t.length<=3&&t[0]==="workspace"&&t[1]==="list"){let r=t[2]==="--archived";if(t.length===3&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
|
|
34
34
|
|
|
35
|
-
${
|
|
35
|
+
${be()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t.length===3&&t[0]==="workspace"&&t[1]==="archive")return{mode:"command",command:{kind:"archiveWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="restore")return{mode:"command",command:{kind:"restoreWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="remove")return{mode:"command",command:{kind:"removeWorkspace",workspaceId:t[2].trim()}};if(t.length>=2&&t[0]==="task"&&t[1]==="new"){let r=t.indexOf("--repo"),s=t.indexOf("--workspace"),o=t.indexOf("--runner");if(r===-1&&s===-1)throw new Error(`Task creation now requires '--repo <repo-id>' or '--workspace <workspace-id>'.
|
|
36
36
|
|
|
37
|
-
`+
|
|
37
|
+
`+be());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
|
|
38
38
|
|
|
39
|
-
`+
|
|
39
|
+
`+be());let p=r===-1?void 0:t[r+1]?.trim()??"",y=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:nn(t[o+1]?.trim()??""),d=t.filter((w,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(p!==void 0&&p.length===0)throw new Error(`Repo id cannot be empty.
|
|
40
40
|
|
|
41
|
-
`+
|
|
41
|
+
`+be());if(y!==void 0&&y.length===0)throw new Error(`Workspace id cannot be empty.
|
|
42
42
|
|
|
43
|
-
`+
|
|
43
|
+
`+be());if(d.length===0)throw new Error(`Task prompt cannot be empty.
|
|
44
44
|
|
|
45
|
-
`+
|
|
45
|
+
`+be());return{mode:"command",command:{kind:"createTask",...p?{repoId:p}:{},...y?{workspaceId:y}:{},prompt:d,...i?{runner:i}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
46
46
|
|
|
47
|
-
${
|
|
47
|
+
${be()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:We(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:We(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:We(t[2]),repoId:Xa(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:We(t[2])}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
48
48
|
|
|
49
|
-
${
|
|
50
|
-
`)}function
|
|
49
|
+
${be()}`)}function be(){return["Craig commands:"," craig Show the Craig phase 0 placeholder"," craig repo add Register a repo in the current Craig workspace"," craig workspace add <path> Register a repo or parent-directory workspace"," craig repo list List registered repos"," craig repo remove Remove a registered repo"," craig workspace list List active workspaces"," craig workspace list --archived List archived workspaces"," craig workspace archive Archive a workspace"," craig workspace restore Restore an archived workspace"," craig workspace remove Remove an archived workspace"," craig task new --repo <repo-id> [--runner codex|cursor|claude] <prompt> Create a new Craig repo task"," craig task new --workspace <workspace-id> [--runner codex|cursor|claude] <prompt> Create a new Craig workspace task"," craig task list [--repo <repo-id>] List known Craig tasks"," craig task show Show details for a Craig task"," craig task logs Stream Craig-managed logs for a task"," craig task diff Show the current worktree diff for a task"," craig task attach Attach to a live task session"," craig task focus Focus the tmux pane for a task"," craig task open Open the task worktree or print its path"," craig task check Run configured checks for a task"," craig task commit Commit all task worktree changes"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
|
|
50
|
+
`)}function We(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
|
|
51
51
|
|
|
52
|
-
${
|
|
52
|
+
${be()}`);return t}function Xa(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
|
|
53
53
|
|
|
54
|
-
${
|
|
55
|
-
`,"utf8")}function an(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(!ue.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${ue.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function ec(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Ue();import{readFile as ic,readdir as ap,rm as cp}from"node:fs/promises";import oc from"node:path";async function mt(e,t){let r=await ic(jr(e,t),"utf8"),s=JSON.parse(r);return ac(s,jr(e,t))}async function nt(e,t){await he(jr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function jr(e,t){return oc.join(e.sessionsDir,`${t}.json`)}function ac(e,t){let r=dc(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")||!lc(r.attach)||!cc(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 cc(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 lc(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 dc(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??""}}Ie();wt();Ee();function Gt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as Wc,constants as jc}from"node:fs";import{homedir as wn}from"node:os";import Ze from"node:path";var Hc=[Ze.join(wn(),".local","bin"),Ze.join(wn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function kn(e=process.env){return qc([...(e.PATH??"").split(Ze.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Hc])}function at(e=process.env){return{...e,PATH:kn(e).join(Ze.delimiter)}}function Uc(e,t={}){if(e.includes(Ze.sep)){let r=Ze.isAbsolute(e)?e:Ze.resolve(t.cwd??process.cwd(),e);return bn(r)?r:null}for(let r of kn(t.env)){let s=Ze.join(r,e);if(bn(s))return s}return null}function ct(e,t={}){let r=Uc(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 bn(e){try{return Wc(e,jc.X_OK),!0}catch{return!1}}function qc(e){return[...new Set(e)]}Me();Ee();import{spawn as Kc}from"node:child_process";import{createHash as Vc}from"node:crypto";import zc from"node:path";var Gc="craig";async function yn(e,t,r){let s=Vr(e,t),o=Xc(),p=await ee("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),k=Jc(p.stdout);return await Yc(e,s),k}async function Yc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await ee("tmux",s,{cwd:e})}async function vn(e,t,r){await ee("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function Sn(e,t,r){await ee("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Tn(e,t,r){await ee("tmux",["pipe-pane","-o","-t",e,`cat >> ${Gt(t)}`],{cwd:r})}async function Yt(e,t,r,s){let o=s??Rn(e);if(r?await ee("tmux",["select-window","-t",r],{cwd:e}):await ee("tmux",["select-window","-t",t],{cwd:e}),await ee("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await ee("tmux",["switch-client","-t",o],{cwd:e});return}await el(e,["attach-session","-t",o])}function Rn(e){let r=zc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=Vc("sha1").update(e).digest("hex").slice(0,8);return`${Gc}-${r}-${s}`}function Vr(e,t){return`${Rn(e)}-${t.toLowerCase()}`}function Xc(){let e=Qc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Qc(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,s="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof s=="number"&&s>0)return{columns:r,rows:s}}return null}function Jc(e){let t=Zc(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 Zc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function el(e,t){await new Promise((r,s)=>{let o=Kc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var zr={async prepare(e,t){let r=e.runnerSession.command[0]??_e(e.runner)[0],s=at();await ee(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:_e(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await Sn(t.session.paneId,[s,...r.slice(1)].map(o=>Gt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Me();Ee();var Rt={async create(e,t){let r=await yn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Tn(r.paneId,t.logPath,t.repoRoot);let s=await Pn({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||Vr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Rt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Yt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await vn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return tl(e,t)}};async function tl(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return Pn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function Pn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Ie();Ct();import{mkdir as It,rm as hl,writeFile as er}from"node:fs/promises";import ie from"node:path";Ee();async function An(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Gr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let k=await ul(e,o);await ee("git",["worktree","add","-b",t,r,k],{cwd:e})}async function ul(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Zt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function Dn(e){await ee("git",["add","-A"],{cwd:e})}async function Ln(e,t){await ee("git",["commit","-m",t],{cwd:e})}async function Mn(e){let t=await ee("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
-
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}
|
|
54
|
+
${be()}`);return t}import qn from"node:path";De();import{mkdir as Qa,readFile as Ja,writeFile as Za}from"node:fs/promises";import ec from"node:path";async function je(e){try{let t=await Ja(e.configFile,"utf8"),r=JSON.parse(t);return cn(r,e.configFile)}catch(t){if(tc(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 an(e,t){cn(t,e.configFile),await Qa(ec.dirname(e.configFile),{recursive:!0}),await Za(e.configFile,`${JSON.stringify(t,null,2)}
|
|
55
|
+
`,"utf8")}function cn(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(!ue.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${ue.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function tc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}He();import{readFile as oc,readdir as cp,rm as lp}from"node:fs/promises";import ac from"node:path";async function _t(e,t){let r=await oc(jr(e,t),"utf8"),s=JSON.parse(r);return cc(s,jr(e,t))}async function it(e,t){await he(jr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function jr(e,t){return ac.join(e.sessionsDir,`${t}.json`)}function cc(e,t){let r=uc(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")||!dc(r.attach)||!lc(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 lc(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 dc(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 uc(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??""}}Ce();bt();xe();function Yt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as jc,constants as Hc}from"node:fs";import{homedir as bn}from"node:os";import Ze from"node:path";var Uc=[Ze.join(bn(),".local","bin"),Ze.join(bn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function kn(e=process.env){return Kc([...(e.PATH??"").split(Ze.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Uc])}function ct(e=process.env){return{...e,PATH:kn(e).join(Ze.delimiter)}}function qc(e,t={}){if(e.includes(Ze.sep)){let r=Ze.isAbsolute(e)?e:Ze.resolve(t.cwd??process.cwd(),e);return yn(r)?r:null}for(let r of kn(t.env)){let s=Ze.join(r,e);if(yn(s))return s}return null}function lt(e,t={}){let r=qc(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 yn(e){try{return jc(e,Hc.X_OK),!0}catch{return!1}}function Kc(e){return[...new Set(e)]}De();xe();import{spawn as Vc}from"node:child_process";import{createHash as zc}from"node:crypto";import Gc from"node:path";var Yc="craig";async function vn(e,t,r){let s=Vr(e,t),o=Qc(),p=await ee("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),y=Zc(p.stdout);return await Xc(e,s),y}async function Xc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await ee("tmux",s,{cwd:e})}async function Sn(e,t,r){await ee("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function Tn(e,t,r){await ee("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Rn(e,t,r){await ee("tmux",["pipe-pane","-o","-t",e,`cat >> ${Yt(t)}`],{cwd:r})}async function Xt(e,t,r,s){let o=s??Pn(e);if(r?await ee("tmux",["select-window","-t",r],{cwd:e}):await ee("tmux",["select-window","-t",t],{cwd:e}),await ee("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await ee("tmux",["switch-client","-t",o],{cwd:e});return}await tl(e,["attach-session","-t",o])}function Pn(e){let r=Gc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=zc("sha1").update(e).digest("hex").slice(0,8);return`${Yc}-${r}-${s}`}function Vr(e,t){return`${Pn(e)}-${t.toLowerCase()}`}function Qc(){let e=Jc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Jc(){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 Zc(e){let t=el(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 el(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function tl(e,t){await new Promise((r,s)=>{let o=Vc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var zr={async prepare(e,t){let r=e.runnerSession.command[0]??we(e.runner)[0],s=ct();await ee(lt(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:we(e.runner,e.prompt.value),s=lt(r[0],{cwd:e.worktreePath,env:ct()});await Tn(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(){}};De();xe();var Pt={async create(e,t){let r=await vn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Rn(r.paneId,t.logPath,t.repoRoot);let s=await Cn({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||Vr(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 it(e,o),o},async attach(e,t,r){let s=await Pt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Xt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await it(e,o),o},async resize(e,t,r,s){await Sn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await it(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 it(e,s),s},async snapshot(e,t){return rl(e,t)}};async function rl(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return Cn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function Cn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ut();Ce();It();import{mkdir as xt,rm as fl,writeFile as tr}from"node:fs/promises";import ie from"node:path";xe();async function Dn(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Gr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let y=await hl(e,o);await ee("git",["worktree","add","-b",t,r,y],{cwd:e})}async function hl(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function er(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function Ln(e){await ee("git",["add","-A"],{cwd:e})}async function Mn(e,t){await ee("git",["commit","-m",t],{cwd:e})}async function On(e){let t=await ee("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
+
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}De();at();async function Bn(e,t){let r=await Pe(e),s=Fn(new Date),o=Nn(r.taskIds,s);for(;;){let p=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${p}`;if(!await Dn(t,y))return p;o+=1}}async function $n(e){let t=await Pe(e),r=Fn(new Date),s=Nn(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Fn(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 Nn(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 jn=["AGENTS","md"].join(".");async function Et(e,t,r,s={}){let o=await Me(e,t),p=await wl(e,o.id),y=await Bn(e,o.rootPath),i=s.sessionId??null,c=`craig/${y}`,d=ie.join(e.worktreesDir,o.id,y),w=ie.join(e.logsDir,`${y}.log`),a=ie.join(e.artifactsDir,y);await xt(ie.dirname(d),{recursive:!0}),await xt(a,{recursive:!0}),await tr(w,"","utf8");let b=pl(e,{taskId:y,repoId:o.id,workspaceId:p.id,sessionId:i,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:d});return await se(e,b),await qr(e,y),await Gr(o.rootPath,c,d,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:i,workspaceId:p.id,task:b}}async function sr(e,t,r,s={}){let o=(await Oe(e)).find(h=>h.id===t&&h.status==="active");if(!o)throw new Error(`Workspace ${t} does not exist or is archived.`);if(o.kind!=="project"){if(!o.primaryRepoId)throw new Error(`Workspace ${t} is not task-capable.`);let h=await Et(e,o.primaryRepoId,r,s);return{...h,bundlePath:h.task.worktreePath,repoTargets:[]}}let p=o.discoveredRepoIds??[];if(p.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let y=await $n(e),i=new Date().toISOString(),c=s.runner??"codex",d=s.sessionId??null,w=`craig/${y}`,a=ie.join(e.craigDir,"task-bundles",y),b=ie.join(e.logsDir,`${y}.log`),l=ie.join(e.artifactsDir,y);await xt(a,{recursive:!0}),await xt(l,{recursive:!0}),await tr(b,"","utf8");let m=await Promise.all(p.map(h=>Me(e,h))),_=ml(m),n=await Promise.all(m.map(h=>gl(e,h,y,w,ie.join(a,_.get(h.id))))),g=n.find(h=>h.status==="ready")??n[0];if(!n.some(h=>h.status==="ready"))throw await fl(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${n.map(h=>`${h.repoId}: ${h.failureReason??"unknown error"}`).join("; ")}`);await tr(ie.join(a,"manifest.json"),JSON.stringify({taskId:y,workspaceId:t,prompt:r,repos:n.map(h=>({repoId:h.repoId,repoName:m.find(k=>k.id===h.repoId)?.name??h.repoId,path:ie.relative(a,h.worktreePath),status:h.status,worktreePath:h.worktreePath,failureReason:h.failureReason}))},null,2),"utf8"),await tr(ie.join(a,jn),_l({taskId:y,workspaceId:t,prompt:r,repos:m,repoTargets:n,bundlePath:a}),"utf8");let f=Hn(y,r,i,c,s.config??{}),u={id:y,title:r,slug:Un(r),type:"project",status:"draft",runner:c,repoId:g.repoId,workspaceId:o.id,sessionId:d,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:p.filter(h=>h!==g.repoId),repoRoot:a,worktreePath:a,branch:w,bundlePath:a,selectedRepoTargetId:g.repoId,repoTargets:n,ptyTabs:f,runnerSession:{command:we(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:g.checks,lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,b),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(l,"pr-status.json"))},cleanup:rr(),lastFailureReason:n.every(h=>h.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:i,updatedAt:i};return await se(e,u),await qr(e,y),{repoId:g.repoId,repoRoot:a,sessionId:d,workspaceId:o.id,task:u,bundlePath:a,repoTargets:n}}function Hn(e,t,r,s="codex",o={}){let p=Se(s);return[{id:`${e}:agent`,kind:"agent",title:p.defaultAgentTitle,command:we(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function pl(e,t){let r=new Date().toISOString(),s=Hn(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Un(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:we(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Yr(ie.relative(e.workspaceRoot,e.configFile))},lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,ie.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:rr(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function gl(e,t,r,s,o){await xt(ie.dirname(o),{recursive:!0});try{return await Gr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Yr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Wn(),cleanup:rr()}}catch(p){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:p instanceof Error?p.message:"Failed to create worktree.",checks:Yr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Wn(),cleanup:rr()}}}function ml(e){let t=new Set(["manifest.json",jn]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,p=o,y=2;for(;t.has(p);)p=`${o}-${y}`,y+=1;t.add(p),r.set(s.id,p)}return r}function _l(e){let t=new Map(e.repos.map(s=>[s.id,s.name])),r=e.repoTargets.map(s=>{let o=t.get(s.repoId)??s.repoId,p=ie.relative(e.bundlePath,s.worktreePath),y=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${p}/\` - ${o} (${s.repoId}, ${y})`}).join(`
|
|
57
57
|
`);return["# Craig Project Task Bundle","","This directory is a Craig project task bundle. Repo work must happen inside the child repo worktrees listed below.","","Run repo Git commands from a repo worktree directory, not from the bundle root. Use `manifest.json` as the machine-readable source of truth for this bundle.","",`Task: \`${e.taskId}\``,`Workspace: \`${e.workspaceId}\``,`Prompt: ${e.prompt}`,"","## Repo Worktrees","",r,""].join(`
|
|
58
|
-
`)}function Yr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function
|
|
58
|
+
`)}function Yr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Wn(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,requiredChecks:[],comments:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function rr(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function wl(e,t){let s=(await Oe(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 Un(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Kn(e,t,r,s={}){let o=r.trim(),p=await je(e),y=s.runner??nt(p);if(zt(y,p),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let i=s.workspaceId?await sr(e,s.workspaceId,o,{runner:y,config:p}):await Et(e,t,o,{runner:y,config:p}),c=i.task,d=we(y,o,p),w=`session_${c.id}`,a=c.artifacts.logPath?qn.resolve(e.workspaceRoot,c.artifacts.logPath):qn.join(e.logsDir,`${c.id}.log`);try{await zr.prepare(c,{repoRoot:i.repoRoot});let b=await Pt.create(e,{sessionId:w,taskId:c.id,repoId:i.repoId,workspaceId:i.workspaceId,repoRoot:i.repoRoot,worktreePath:c.worktreePath,logPath:a,command:d});await zr.launch(c,{repoRoot:i.repoRoot,session:b});let l=new Date().toISOString();b={...b,status:"running",startedAt:l,command:d};let m={...c,status:"running",runner:y,sessionId:b.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:b.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await se(e,m),await it(e,b),await Ie({uiStateFile:e.uiStateFile},{...await Le({uiStateFile:e.uiStateFile})??Ue(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:b.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(b){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:b instanceof Error?b.message:"Unknown Craig error"};throw await se(e,l),b}}At();ut();Ce();import{access as Hl}from"node:fs/promises";import ii from"node:path";He();Ce();import{mkdir as yl,readFile as Dg,writeFile as Lg}from"node:fs/promises";import kl from"node:path";xe();import Vn from"node:path";function nr(e,t){return t?Vn.isAbsolute(t)?t:Vn.join(e.repoRoot,t):null}function ge(e){return e.prs.length===0?null:[...e.prs].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e.prs[e.prs.length-1]??null}function ar(e){return e.status==="merged"||e.status==="closed"}function zn(e,t){let r=e.prs.findIndex(o=>o.number!==null&&o.number===t.number),s=r>=0?e.prs.map((o,p)=>p===r?t:o):[...e.prs,t];return{...e,prs:s}}var Gn=3,vl=1e3,Sl=1e4;async function Dt(e){let t=await oe("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Jr(e,t){let r=ge(t),s=r?.number?String(r.number):t.branch,o=await ee("gh",or(s),{cwd:t.worktreePath}),p=JSON.parse(o.stdout);return es(e,t,p,r)}async function Zr(e,t){let r=await oe("gh",or(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 es(e,t,s,null)}}async function Xn(e){let t=await oe("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:Al(t.stdout.trim())}async function Qn(e,t,r){if(r.length===0)return[];let s=Dl(r),o=await Tl(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),y=JSON.parse(o.stdout).data?.repository??{};return r.map((i,c)=>{let d=y[`item${c}`],w=Ll(d);return{id:i.id,found:w!==null,view:w}})}async function Tl(e,t){let r;for(let s=0;s<=Gn;s+=1)try{return await ee("gh",t,{cwd:e})}catch(o){if(r=o,s===Gn||!Rl(o))throw o;await Cl(Pl(s))}throw r}function Rl(e){let t=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return t.includes("rate limit")||t.includes("secondary rate limit")||t.includes("abuse detection")||t.includes("api rate limit exceeded")||t.includes("you have exceeded")}function Pl(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||vl,r=Math.min(t*2**e,Sl),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function Cl(e){return new Promise(t=>setTimeout(t,e))}async function Lt(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let y=await ee("gh",or(s),{cwd:r.worktreePath}),i=Qr(JSON.parse(y.stdout));return r.pullRequest=i,await Xr(e,t,r.repoId,i),"synced"}let o=await oe("gh",or(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let p=Qr(JSON.parse(o.stdout));return r.pullRequest=p,await Xr(e,t,r.repoId,p),"discovered"}async function Jn(e,t,r){return es(e,t,r,ge(t))}async function Zn(e,t,r,s){return Xr(e,t,r,Qr(s))}async function ei(e,t){let r=nr(e,t.artifacts.prStatusPath);r&&(await yl(kl.dirname(r),{recursive:!0}),await he(r,{taskId:t.id,prs:t.prs}))}function Il(e){return e.mergeable&&!xl(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function xl(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function El(e){if(e.length===0)return"checked";let t=[...e].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e[e.length-1];return Il(t)?"merge_ready":t.status==="merged"?"merged":t.status==="open"?"pr_open":"checked"}function or(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,isDraft,title,createdAt,updatedAt,mergedAt,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,comments"]}function Al(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 Dl(e){return`
|
|
59
59
|
query CraigPullRequestBatch($owner: String!, $name: String!) {
|
|
60
60
|
repository(owner: $owner, name: $name) {
|
|
61
61
|
${e.map((r,s)=>{let o=`item${s}`;return r.mode==="number"?`${o}: pullRequest(number: ${Number(r.selector)}) { ...PrFields }`:`${o}: pullRequests(headRefName: ${JSON.stringify(r.selector)}, states: OPEN, first: 1, orderBy: { field: UPDATED_AT, direction: DESC }) { nodes { ...PrFields } }`}).join(`
|
|
@@ -134,58 +134,58 @@ fragment PrFields on PullRequest {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
`}function
|
|
137
|
+
`}function Ll(e){if(!e||typeof e!="object")return null;let t="nodes"in e?e.nodes?.[0]??null:e;if(!t||typeof t!="object")return null;let r=t,s=r.statusCheckRollup?.contexts?.nodes??r.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[];return{number:r.number,url:r.url,baseRefName:r.baseRefName,headRefName:r.headRefName,headRefOid:r.headRefOid??null,state:r.state,isDraft:r.isDraft??!1,title:r.title??null,createdAt:r.createdAt??null,updatedAt:r.updatedAt??null,mergedAt:r.mergedAt??null,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,reviewDecision:r.reviewDecision??null,statusCheckRollup:s,comments:r.comments?.nodes??[]}}async function es(e,t,r,s){let o=Ml(r,s),p=zn(t,o),y=El(p.prs),i={...p,status:y};await ei(e,i);let c=await fe(e,t.id),d=c.status==="closed"?c.status:y,w=zn({...c,status:d},o);return await se(e,w),w}async function Xr(e,t,r,s){let o=await fe(e,t.id),p=(o.repoTargets??t.repoTargets??[]).map(i=>i.repoId===r?{...i,pullRequest:s}:i),y={...o,repoTargets:p};return await se(e,y),y}function Ml(e,t){let r=e.isDraft??!1,s=Ol(e.state,r);return{provider:"github",owner:t?.owner??null,repo:t?.repo??null,number:e.number,url:e.url,title:e.title??t?.title??null,status:s,draft:r,baseBranch:e.baseRefName,headBranch:e.headRefName,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ri(e.reviewDecision??null),requiredChecks:ti(e.statusCheckRollup),comments:si(e.comments),createdAt:e.createdAt??t?.createdAt??null,updatedAt:e.updatedAt??t?.updatedAt??null,mergedAt:e.mergedAt??t?.mergedAt??null,lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Qr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:Bl(e.state),draft:e.isDraft??!1,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ri(e.reviewDecision??null),requiredChecks:ti(e.statusCheckRollup),comments:si(e.comments),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Ol(e,t){return t?"draft":e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Bl(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function ti(e){let t=e.map(s=>$l(s)).filter(s=>s!==null),r=new Map;for(let s of t){let o=r.get(s.name);(!o||Fl(o,s))&&r.set(s.name,s)}return[...r.values()].map(s=>({name:s.name,status:s.status,conclusion:s.conclusion}))}function $l(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:ni(s??null,t.conclusion??null),conclusion:t.conclusion??null,sortTime:Nl(t)}:null}function Fl(e,t){return e.sortTime!==null||t.sortTime!==null?(t.sortTime??0)>=(e.sortTime??0):ir(e)&&!ir(t)?!0:!ir(e)&&ir(t)?!1:Yn(t.status)>=Yn(e.status)}function ir(e){return e.conclusion?.toUpperCase()==="CANCELLED"}function Yn(e){switch(e){case"pending":return 5;case"failed":return 4;case"success":return 3;case"skipped":return 2;default:return 1}}function Nl(e){let t=e.completedAt??e.startedAt??e.createdAt??null;if(!t)return null;let r=new Date(t).getTime();return Number.isFinite(r)?r:null}function ri(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function si(e){let t=Array.isArray(e)?e:e?.nodes;return Array.isArray(t)?t.map(Wl).filter(r=>r!==null).slice(-4):[]}function Wl(e){if(typeof e!="object"||e===null)return null;let t=e,r=jl(t.bodyText??t.body??"");return r?{author:typeof t.author=="string"?t.author:t.author?.login??null,body:r,createdAt:t.createdAt??null,url:t.url??null}:null}function jl(e){return e.replace(/\s+/g," ").trim()}function ni(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?ni(s,s):"unknown"}async function ae(e,t){try{return await fe(e,t)}catch(r){throw zl(r)?new Error(`Craig task "${t}" was not found.`):r}}async function Ee(e){if(!await ts(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function rs(e,t){return t.artifacts.logPath?ii.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:ii.join(e.workspaceRoot,t.artifacts.logPath):null}async function oi(e,t){let r=await ts(t.worktreePath),s=rs(e,t),o=s?await ts(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:Ul(t),lastCommitSummary:ql(t),prSummary:Kl(t),cleanupSummary:Vl(t)}}async function ts(e){try{return await Hl(e),!0}catch{return!1}}function Ul(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 ql(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Kl(e){if(e.type==="project"&&e.repoTargets?.length){let o=e.repoTargets.filter(c=>c.pullRequest.number);if(o.length===0)return"not linked";let p=o.map(c=>` ${c.repoId} #${c.pullRequest.number} ${c.pullRequest.status??"unknown"}`),y=o.reduce((c,d)=>{let w=d.pullRequest.status??"unknown";return c[w]=(c[w]??0)+1,c},{}),i=Object.entries(y).map(([c,d])=>`${d} ${c}`).join(", ");return`${o.length} PR${o.length!==1?"s":""} (${i})
|
|
138
138
|
${p.join(`
|
|
139
|
-
`)}`}let t=ge(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function
|
|
139
|
+
`)}`}let t=ge(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function Vl(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 zl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function ai(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([Me(e,r.repoId),_t(e,r.sessionId)]),p=await Pt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:p.id,disposition:"attached"}}Ce();async function li(e,t){let r=await ae(e,t),s=ge(r);return s?.number?(await Dt(r.worktreePath),ar(s)?(await Zr(e,r)).task:Jr(e,r)):r}async function lr(e,t){let r=await ae(e,t),s=(r.repoTargets??[]).filter(y=>y.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let y of s){await Dt(y.worktreePath);let i=y.pullRequest.number?await Lt(e,r,y):await Lt(e,r,y).catch(()=>"not_found");o[i==="not_found"?"notFound":i]++}let p=await fe(e,r.id);return p.status!=="closed"&&(p.status=ui(p),await se(e,p)),o}async function di(e,t){let r=new Map,s=new Map;for(let o of t){let p=ss(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let d of o.repoTargets.filter(w=>w.status==="ready")){let w={id:`${o.id}:${d.repoId}`,task:o,targetRepoId:d.repoId,worktreePath:d.worktreePath,selector:d.pullRequest.number?String(d.pullRequest.number):d.branch,mode:d.pullRequest.number?"number":"head"};await ci(s,w).catch(async()=>{try{let a=d.pullRequest.number?await Lt(e,o,d):await Lt(e,o,d).catch(()=>"not_found");cr(p,a,d.pullRequest.number??null,d.pullRequest.url??null)}catch{}})}continue}let y=ge(o),i=y?.number&&!ar(y),c={id:o.id,task:o,worktreePath:o.worktreePath,selector:i?String(y.number):o.branch,mode:i?"number":"head"};await ci(s,c).catch(async()=>{try{let{disposition:d,task:w}=await ns(e,o.id),a=ge(w);cr(p,d,a?.number??null,a?.url??null)}catch{}})}for(let o of s.values())try{await Dt(o.worktreePath);let p=await Qn(o.worktreePath,o.repository,o.items),y=new Map(p.map(i=>[i.id,i]));for(let i of o.items){let c=ss(r,i.task),d=y.get(i.id);if(!d?.found||!d.view){cr(c,"not_found",null,null);continue}i.targetRepoId?await Zn(e,i.task,i.targetRepoId,d.view):await Jn(e,i.task,d.view),cr(c,i.mode==="number"?"synced":"discovered",d.view.number,d.view.url)}}catch{}for(let o of t.filter(p=>p.type==="project"&&p.repoTargets?.length)){let p=await fe(e,o.id);p.status!=="closed"&&(p.status=ui(p),await se(e,p))}return t.map(o=>ss(r,o))}async function ns(e,t){let r=await ae(e,t);await Ee(r),await Dt(r.worktreePath);let s=ge(r);if(s?.number&&!ar(s))return{disposition:"synced",task:await Jr(e,r)};let o=await Zr(e,r);return{disposition:o.discovered?"discovered":"not_found",task:o.task}}function ui(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(Gl)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function ci(e,t){let r=await Xn(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):!!ge(t)?.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function cr(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 Gl(e){return e.mergeable&&e.reviewDecision!=="REVIEW_REQUIRED"&&e.reviewDecision!=="CHANGES_REQUESTED"&&e.mergeStateStatus!=="REVIEW_REQUIRED"&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function is(e,t){let r=await ae(e,t);try{r.type==="project"&&r.repoTargets?.length?(await lr(e,t),r=await ae(e,t)):r.prs.some(p=>p.number)&&(r=await li(e,t))}catch{}let s=await oi(e,r),o=r.sessionId?await _t(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as Yl}from"node:fs/promises";async function os(e,t){let r=await ae(e,t),s=rs(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await Yl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}xe();async function as(e,t){let r=await ae(e,t);if(await Ee(r),(await ee("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Xl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Xl(e){let t=[],r=await ee("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Ql(e);for(let o of s){let p=await oe("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(p.stdout.trimEnd())}return t.join(`
|
|
140
140
|
|
|
141
|
-
`)}async function
|
|
142
|
-
`).map(r=>r.trim()).filter(r=>r.length>0)}async function cs(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await
|
|
141
|
+
`)}async function Ql(e){return(await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
|
|
142
|
+
`).map(r=>r.trim()).filter(r=>r.length>0)}async function cs(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await _t(e,r.sessionId).catch(o=>{throw Jl(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 Xt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Jl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Zl}from"node:child_process";async function ls(e,t){let r=await ae(e,t);await Ee(r);let o=(await je(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let p=[...o,r.worktreePath];return await ed(p,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:p}}async function ed(e,t){await new Promise((r,s)=>{let[o,...p]=e,y=Zl(o,p,{cwd:t,stdio:"inherit"});y.on("error",s),y.on("exit",i=>{if(i===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${i??"unknown"}.`))})})}He();import{mkdir as td}from"node:fs/promises";import rd from"node:path";Ce();xe();async function ds(e,t){let r=await ae(e,t);if(await Ee(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 er(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 je(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await se(e,r);let p=[];for(let y of o){let i=new Date().toISOString(),c=await oe("sh",["-lc",y],{cwd:r.worktreePath}),d=new Date().toISOString(),w=c.exitCode??1;if(p.push({command:y,startedAt:i,finishedAt:d,exitCode:w}),w!==0)return r.checks.results=p,r.checks.status="failed",r.checks.lastRunAt=d,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${y}`,await hi(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=p,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await hi(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function hi(e,t){let r=nr(e,t.artifacts.checkSummaryPath);r&&(await td(rd.dirname(r),{recursive:!0}),await he(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}Ce();async function us(e,t){let r=await ae(e,t);await Ee(r);let s=await er(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 Ln(r.worktreePath),await Mn(r.worktreePath,o);let p=await On(r.worktreePath);return r.lastCommit={sha:p.sha,message:p.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await se(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:p.sha,message:p.message}}at();ut();It();bt();At();$t();xe();import dd from"node:path";import{stat as ud}from"node:fs/promises";async function vi(e,t){let r=dd.resolve(e.workspaceRoot,t);if(!(await ud(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>($t(),ki)).then(({addWorkspace:y})=>y(e,t)),p=o.repos[0];if(!p||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:p,workspaceId:o.workspace.id,created:o.created}}async function Si(e){return{kind:"listRepos",repos:await dt(e)}}async function Ti(e,t){let r=await Me(e,t),o=(await Oe(e)).filter(d=>d.primaryRepoId===t),p=o.filter(d=>d.status==="active"),y=await qe(e,{repoId:t});if(p.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(d=>dr(e,d.id))),await xn(e,t);let i=await Pe(e);await ot(e,{...i,repoIds:i.repoIds.filter(d=>d!==t)});let c=await Le({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Ie({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}ut();Ce();async function Ri(e,t,r){let[s,o]=await Promise.all([ae(e,t),Me(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let p=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await se(e,{...s,linkedRepoIds:p}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:p}}async function Pi(e,t){let r=await ae(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Me(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}$t();async function Ci(e,t){switch(e.kind){case"addWorkspace":return Mt(t.paths,e.path);case"addRepo":return vi(t.paths,e.path);case"listRepos":return Si(t.paths);case"removeRepo":return Ti(t.paths,e.repoId);case"listWorkspaces":return hs(t.paths,{archived:e.archived});case"archiveWorkspace":return Ot(t.paths,e.workspaceId);case"restoreWorkspace":return fs(t.paths,e.workspaceId);case"removeWorkspace":return Bt(t.paths,e.workspaceId);case"createTask":return Kn(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?qe(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):qe(t.paths);case"attachTask":return ai(t.paths,e.taskId);case"addTaskLink":return Ri(t.paths,e.taskId,e.repoId);case"listTaskLinks":return Pi(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return is(t.paths,e.taskId);case"showSelectedTask":return is(t.paths,ht(t,"show"));case"streamTaskLogs":return os(t.paths,e.taskId);case"streamSelectedTaskLogs":return os(t.paths,ht(t,"logs"));case"showTaskDiff":return as(t.paths,e.taskId);case"showSelectedTaskDiff":return as(t.paths,ht(t,"diff"));case"focusTask":return cs(t.paths,e.taskId);case"focusSelectedTask":return cs(t.paths,ht(t,"focus"));case"openTask":return ls(t.paths,e.taskId);case"openSelectedTask":return ls(t.paths,ht(t,"open"));case"runChecks":return ds(t.paths,e.taskId);case"runSelectedTaskChecks":return ds(t.paths,ht(t,"check"));case"commitTask":return us(t.paths,e.taskId);case"commitSelectedTask":return us(t.paths,ht(t,"commit"));case"help":return{kind:"help",text:be()};case"exit":return{kind:"exit"};default:return hd(e)}}function hd(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function ht(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>'.`)}He();import{mkdir as Ke,readFile as fd}from"node:fs/promises";import ye from"node:path";function Ge(e){let t=ye.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ye.join(t,"index.json"),reposDir:ye.join(t,"repos"),workspacesDir:ye.join(t,"workspaces"),sessionsDir:ye.join(t,"sessions"),runtimeDir:ye.join(t,"runtime"),uiStateFile:ye.join(t,"runtime","ui-state.json"),tasksDir:ye.join(t,"tasks"),jobsDir:ye.join(t,"jobs"),logsDir:ye.join(t,"logs"),errorLogFile:ye.join(t,"logs","errors.log"),artifactsDir:ye.join(t,"artifacts"),worktreesDir:ye.join(t,"worktrees"),configFile:ye.join(t,"config.json")}}at();async function kt(e){let t=Ge(e);await Ke(t.craigDir,{recursive:!0}),await Promise.all([Ke(t.reposDir,{recursive:!0}),Ke(t.workspacesDir,{recursive:!0}),Ke(t.sessionsDir,{recursive:!0}),Ke(t.runtimeDir,{recursive:!0}),Ke(t.tasksDir,{recursive:!0}),Ke(t.jobsDir,{recursive:!0}),Ke(t.logsDir,{recursive:!0}),Ke(t.artifactsDir,{recursive:!0}),Ke(t.worktreesDir,{recursive:!0})]);try{let o=await fd(t.indexFile,"utf8"),p=JSON.parse(o);return Hr(p,e,t.indexFile)}catch(o){if(!pd(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 he(t.indexFile,s),s}function pd(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function Ii(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(`
|
|
143
143
|
`);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
|
|
144
144
|
`);case"listRepos":return e.repos.length===0?"No repos registered yet. Use 'craig repo add <path>'.":["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
145
145
|
`);case"removeRepo":return`Removed repo ${e.repoId} (${e.rootPath})`;case"listWorkspaces":return e.workspaces.length===0?e.archivedOnly?"No archived workspaces.":"No active workspaces yet. Register one with 'craig workspace add <path>'.":["ID KIND STATUS REPOS PATH",...e.workspaces.map(t=>`${t.id} ${t.kind??"repo"} ${t.status} ${(t.discoveredRepoIds??[t.primaryRepoId]).join(",")} ${t.rootPath??""}`)].join(`
|
|
146
146
|
`);case"archiveWorkspace":return`Archived workspace ${e.workspaceId} on branch ${e.branch}`;case"restoreWorkspace":return`Restored workspace ${e.workspaceId} on branch ${e.branch}`;case"removeWorkspace":return`Removed workspace ${e.workspaceId} (${e.rootPath})`;case"createTask":return[`Created task ${e.taskId}`,`Repo: ${e.repoId}`,`Workspace: ${e.workspaceId}`,`Session: ${e.sessionId}`,`Status: ${e.status}`,`Branch: ${e.branch}`,`Worktree: ${e.worktreePath}`,`Runner: ${e.runner}`].join(`
|
|
147
147
|
`);case"attachTask":return`Attached to task ${e.taskId} via session ${e.sessionId}`;case"addTaskLink":return`Linked repo ${e.repoId} to task ${e.taskId}: ${e.linkedRepoIds.join(", ")}`;case"listTaskLinks":return e.repos.length===0?`Task ${e.taskId} has no linked repos.`:["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
148
|
-
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${
|
|
149
|
-
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...
|
|
148
|
+
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${_d(t)} ${wd(t)} ${t.title}`)].join(`
|
|
149
|
+
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...gd(e)].join(`
|
|
150
150
|
`);case"streamTaskLogs":return`Streaming logs for ${e.taskId} from ${e.logPath}`;case"showTaskDiff":return e.isEmpty?`Task ${e.taskId} has no uncommitted diff.`:e.diffText;case"focusTask":return`Focused task ${e.taskId} on ${e.tmuxTarget}`;case"openTask":return e.launched?`Opened task ${e.taskId} at ${e.worktreePath}`:e.worktreePath;case"runChecks":return`Checks ${e.status} for ${e.taskId}: ${e.commands.join(", ")}`;case"commitTask":return[`Committed task ${e.taskId}`,`Status: ${e.status}`,`Commit: ${e.commitSha}`,`Message: ${e.message}`].join(`
|
|
151
|
-
`);default:return
|
|
152
|
-
`).filter(o=>o.length>0);return{path:e.errorLogFile,lines:s.slice(Math.max(0,s.length-t)),empty:s.length===0}}catch(r){if(
|
|
151
|
+
`);default:return md(e)}}function gd(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 md(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function _d(e){return e.checks.status}function wd(e){if(e.type==="project"&&e.repoTargets?.length){let r=e.repoTargets.filter(o=>o.pullRequest.number);if(r.length===0)return"-";let s=r.reduce((o,p)=>{let y=p.pullRequest.status??"unknown";return o[y]=(o[y]??0)+1,o},{});return Object.entries(s).map(([o,p])=>`${p} ${o}`).join(", ")}let t=e.prs[0];return t?.number?`#${t.number}:${t.status??"unknown"}`:"-"}ut();It();bt();import{createRequire as Sf}from"node:module";import{readdir as Tf,stat as Rf}from"node:fs/promises";import Tt from"node:path";Ce();At();import{appendFile as bd,mkdir as yd,readFile as kd}from"node:fs/promises";import vd from"node:path";var Sd=80;async function Td(e,t){await yd(vd.dirname(e.errorLogFile),{recursive:!0}),await bd(e.errorLogFile,Rd(t),"utf8")}async function ps(e,t){try{await Td(e,t)}catch{}}async function xi(e,t=Sd){try{let s=(await kd(e.errorLogFile,"utf8")).trimEnd().split(`
|
|
152
|
+
`).filter(o=>o.length>0);return{path:e.errorLogFile,lines:s.slice(Math.max(0,s.length-t)),empty:s.length===0}}catch(r){if(Pd(r))return{path:e.errorLogFile,lines:[],empty:!0};throw r}}function Rd(e){let r=[`[${new Date().toISOString()}] ${e.context}`,`message: ${e.message}`];return e.details&&e.details.trim().length>0&&(r.push("details:"),r.push(...e.details.trimEnd().split(`
|
|
153
153
|
`).map(s=>` ${s}`))),`${r.join(`
|
|
154
154
|
`)}
|
|
155
155
|
|
|
156
|
-
`}function
|
|
157
|
-
`).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
|
|
158
|
-
`)){let s=r.trim();if(!s)continue;let[o="-",p="-",...
|
|
159
|
-
`),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 ms(e,t,r,s=null){if(!t)return me("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await
|
|
160
|
-
${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await ee("git",["diff","--cached","--stat","--patch",`--unified=${
|
|
161
|
-
${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await ee("git",["diff","--stat","--patch",`--unified=${
|
|
162
|
-
${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${
|
|
163
|
-
${i.stdout.trimEnd()}`)}let
|
|
164
|
-
|
|
165
|
-
`);return
|
|
166
|
-
`):["No diff for this file."],byteLength:
|
|
167
|
-
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Od(e,t){let r=gs.resolve(e,t),s=gs.resolve(e);if(r!==s&&!r.startsWith(`${s}${gs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Bd(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}}Ie();import{access as $d}from"node:fs/promises";async function Wi(e,t){let r=await ae(e,t),s=await Fd(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await se(e,o),o}async function Fd(e){try{return await $d(e),!0}catch{return!1}}Me();Ee();import jt from"node:path";function ji(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 Hi="\u{F024B} ",Ui="\u{F0DCF} ",qi="\u25CB",_s="\uEA64",Ki="\uEAFE",Vi="\uEBDA",ws="\u25CB",bs="\u25CF",ks="\u2713",ys="\u2715";function zi(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}}Me();wt();Me();var Nd=["tasks","center","inspector","actions"],Zi=["agent","terminal"],eo=[],ne="inspection",F_=[...Zi,...eo],to=["commit","push","refresh-checks","close-task"],Wd=["refresh-checks","close-task"],ro=["task","checks","pr","setup-run","actions","next-action"],so=["diff","files","review"];function no(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=ru(e?.openInspectionKind)??r,o=pt(t);return{inputMode:nu(e?.inputMode),focusedRegion:eu(e?.focusedRegion),selectedRepoId:Ye(e?.selectedRepoId),selectedWorkspaceId:Ye(e?.selectedWorkspaceId),selectedTaskId:Ye(e?.selectedTaskId),selectedPtyTabId:Ye(e?.selectedPtyTabId),selectedLeftItemId:fu(Ye(e?.selectedTaskId)),activeTab:r?ne:Ye(e?.activeTab)??"agent",preferredPtyTabKind:su(e?.preferredPtyTabKind),inspectorSection:Ft(e?.inspectorSection,ro,"task"),inspectionMode:tu(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ye(e?.selectedFileTreePath),selectedFilePath:Ye(e?.selectedFilePath),selectedDiffPath:Ye(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0,selectedActionId:Ft(e?.selectedActionId,to,"commit"),selectedProjectTargetId:null,selectedRunner:iu(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,footerToast:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:jd(),centerZoomed:!1}}function jd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function io(e,t){return{...e??qe(),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 mr(e,t,r={}){let s=uu(e,t),o=po(s),p=(o?.kind==="workspace"?t.workspaces?.find(_=>_.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(_=>_.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(_=>_.id===o.id)??null:o?.kind==="task"?t.repos.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(_=>_.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(_.id))??null:null)??(p?.kind!=="project"?t.repos.find(_=>_.id===p?.primaryRepoId)??null:null)??t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(_=>_.workspaceId===p.id):i?t.tasks.filter(_=>_.repoId===i):[],d=(o?.kind==="task"?c.find(_=>_.id===o.id)??null:null)??c.find(_=>_.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...au(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:Qd(e,t,d?.id??null),...cu(e,t,d?.id??null),selectedDiffPath:Xd(e,t,d?.id??null),inspectorSection:Ft(e.inspectorSection,ro,"task")}}function oo(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Hd(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:Rs(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Gi(e,1);if(t==="SHIFT_TAB"||t==="[")return Gi(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,-1,r):Yi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,1,r):Yi(e,1,r);if(t==="PAGE_UP")return rt(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return rt(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return rt(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return rt(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??ue,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=ou(e,t);return X({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&gr(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&pu(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Ji(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return vs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return vs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xi(e,1)}if(Qe(t)){if(e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId))){let s=go(e.selectedLeftItemId),o=mo(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&gr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Nt(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&Ji(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Nt(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:zd({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Wt(e,t){return{...e,terminal:t}}function ao(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Hd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Qe(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
168
|
-
`}function co(e){return e.length===1&&e>=" "&&e!=="\x7F"}function lo(e){return uo(e)||Nt(e)!==null}function Ud(e){return eo.includes(e)}function uo(e){return Zi.includes(e)}function ho(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var qd=["tasks","center","inspector"];function Gi(e,t){return fr(e,"focusedRegion",qd,t)}function vs(e,t,r){let s=fr(e,"activeTab",r&&r.length>0?r:du(e),t);return!s.changed||Ud(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Nt(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Yi(e,t,r){if(e.focusedRegion==="tasks")return Kd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return vs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return fo(e,t,r);if(e.inspectionMode==="diff"){let s=pr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}if(r.projectTargetIds?.length){let s=pr(e,"selectedProjectTargetId",r.projectTargetIds,t);return s.changed?{...s,state:{...s.state,reviewScrollOffset:0}}:s}return fr(e,"selectedActionId",Wd,t)}return fr(e,"selectedActionId",to,t)}function Kd(e,t,r){let s=pr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=po(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};let p=go(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let k=mo(s.state.selectedLeftItemId);return k?{...s,state:{...s.state,selectedWorkspaceId:k}}:s}function rt(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return fo(e,t,r);if(e.inspectionMode==="diff"){let s=pr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return e.inspectionMode==="review"?Qi(e,"reviewScrollOffset",t,r.reviewRowCount??100,r.pageRows):X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Qi(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return Gd(e,t,r)}return X({state:e})}function Vd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,reviewScrollOffset:t==="review"?0:e.reviewScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Xi(e,t){return Vd(e,Zd(e.inspectionMode,so,t))}function fo(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),k=Xe(p===-1?0:p+t,0,s.length-1),i=s[k]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function zd(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 Qi(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),k=Xe(e[t]+r,0,p);return k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function Gd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Yd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let _=Xe(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let _=Xe(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}if(t>0&&k>p){let _=i[c+1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&k<0){let _=i[c-1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Xe(k,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function Yd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=Xe(e.diffScrollOffset+t,0,p),i=Jd(r.diffPathRanges??[],k)??e.selectedDiffPath;return k===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:k,selectedDiffPath:i,actionMessage:null},changed:!0})}function Xd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Qd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Jd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function fr(e,t,r,s){let o=r.indexOf(e[t]),p=Xe(o+s,0,r.length-1),k=r[p];return!k||k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function pr(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),k=Xe(p===-1?0:p+s,0,r.length-1),i=r[k]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function Zd(e,t,r){let s=t.indexOf(e);return t[Xe(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function Ft(e,t,r){return t.includes(e??"")?e:r}function eu(e){return e==="tabs"?"center":Ft(e,Nd,"tasks")}function tu(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ft(e,so,t)}function ru(e){return e==="file"||e==="diff"?e:null}function su(e){return e==="terminal"?"terminal":"agent"}function nu(e){return e==="terminal"?"terminal":"control"}function iu(e,t=[...ue],r="codex"){return e&>(e)&&t.includes(e)?e:r}function Rs(e,t=ue){let r=t.length>0?t:ue,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Nt(e){let t=ue.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function ou(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Nt(e.activeTab)??e.preferredPtyTabKind}function au(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(uo(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let k=o??s??e.ptyTabs[0]??null;return{activeTab:k?.id??ne,selectedPtyTabId:k?.id??null}}function cu(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?lu(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function lu(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 du(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Ji(e,t){return t.includes(e)}function uu(e,t){let r=hu(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 hu(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 po(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 Ye(e){return typeof e=="string"?e:null}function fu(e){return e?`task:${e}`:null}function gr(e){return typeof e=="string"&&e.startsWith("task:")}function Ss(e){return typeof e=="string"&&e.startsWith("new-task:")}function Ts(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function pu(e){return typeof e=="string"&&e.startsWith("workspace:")}function go(e){return Ss(e)?e.slice(9):null}function mo(e){return Ts(e)?e.slice(19):null}function Xe(e,t,r){return Math.min(r,Math.max(t,e))}var wr="empty",pe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function ko(e,t){let r=_u(t,e),s=t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(w=>w.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(w=>w.repoId===s.id):[],k=p.find(w=>w.id===e.selectedTaskId)??p[0]??null,i=k?.type==="project",c=Zu(t.tasks),d=ku(e,k),_=bu(e,k,d),a=_.find(w=>w.id===d)??_[0]??{id:"agent",label:"CODEX"},b=t.inspection?.taskId===k?.id?t.inspection:null,l=s?.name??"no repo",m=k?Pe(k.runner):Pe(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,footerToast:e.footerToast,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${Pe(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 [${Pe(e.selectedRunner)}] Enter create task Esc pause ? help`:gr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?k===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Pe(e.centerTabRunner??k?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 targets Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:jt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${jt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:gu(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>eh(w,c[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":k?.id??"no task",repo:l,agent:m},centerTranscript:wu(d,e,s,k,e.workspaceBrowser,b,r),tabs:_,rightContext:Ju(s,k),rightInspection:Lu(e,k,b)}}function gu(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return mu(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let k=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:k,focused:k&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let _=e.selectedLeftItemId===`task:${d.id}`,a=_?"\u25B8":"\u2022",b=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${b}`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks"},m=vo(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${Pe(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${Pe(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let _=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${_?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function mu(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let k=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:k,focused:k&&t.focusedRegion==="tasks"});let i=s.filter(_=>_.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let _ of i){let a=t.selectedLeftItemId===`task:${_.id}`,b=a?"\u25B8":"\u2022",l=_.title.length>28?`${_.title.slice(0,25)}\u2026`:_.title,m={id:`task:${_.id}`,taskId:_.id,text:`${b} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},w=vo(_);w&&(m.prBadge=w),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Pe(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function _u(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 wu(e,t,r,s,o,p=null,k=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,_)=>{let a=_===o.selectedIndex?"\u25B8":" ",b=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${b}`});return Fe(["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 Fe(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=k?.kind==="project",d=c?k.name??"this workspace":r.name,_=c?"Project Task":"Task";return Fe([`No tasks in ${d}.`,"",`Press n or choose + New ${_} to create one with ${Pe(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Fe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Fe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?Su(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Tu(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Fe(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Fe(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function bu(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:yu(p)}))??[];if(!t)return[{id:wr,label:"EMPTY",active:r===wr,focused:e.focusedRegion==="center"&&r===wr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:vu(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function ku(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:wr}function yu(e){return e.title.toUpperCase()}function vu(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?jt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Su(e,t,r){if(!e)return Fe(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Fe(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=yo(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:""},...Ru(s.lines,r,o)]}function Tu(e,t,r){if(!e)return Fe(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Fe(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=yo(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:""},...Pu(s.lines,r,o)]}function Fe(e){return e.map(t=>({text:t}))}function Ru(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,k)=>{let i=o+k+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:pe.lineNumber}},{text:" \u2502 ",style:{fg:pe.gutter}},...Ps(p,r)],tone:"default"}})}function Pu(e,t,r){let s=Cu(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>Iu(p,r))}function Cu(e){let t=[],r=0,s=0;for(let o of e){let p=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(p){r=Number.parseInt(p[1]??"0",10),s=Number.parseInt(p[2]??"0",10);continue}if(!(o.startsWith("diff --git")||o.startsWith("index ")||o.startsWith("+++ ")||o.startsWith("--- "))&&!(o==="staged"||o==="unstaged"||o==="untracked")){if(o.startsWith("-")&&!o.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:o.slice(1),kind:"delete"}),r+=1;continue}if(o.startsWith("+")&&!o.startsWith("+++")){t.push({oldNumber:null,newNumber:s,marker:"+",text:o.slice(1),kind:"add"}),s+=1;continue}if(o.startsWith(" ")){if(r===0&&s===0)continue;t.push({oldNumber:r,newNumber:s,marker:" ",text:o.slice(1),kind:"context"}),r+=1,s+=1;continue}}}return t}function Iu(e,t){let r=_o(e.oldNumber),s=_o(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:pe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:pe.diffAdd}:null,k=`${o} \u2502 ${e.text}`,i=p?Eu(Ps(e.text,t),p.bg,p.fallbackFg):Ps(e.text,t),c=p?{fg:pe.lineNumber,bg:p.bg}:{fg:pe.lineNumber},d=p?{fg:pe.gutter,bg:p.bg}:{fg:pe.gutter};return{text:k,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function _o(e){return e===null?" ":String(e).padStart(4," ")}function yo(e){let t=jt.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 Ps(e,t){return t==="diff"?xu(e):t==="markdown"?Au(e):t==="json"?Cs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Cs(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 xu(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:pe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:pe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:pe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:pe.diffMeta}}]:[{text:e}]}function Eu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Au(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:pe.markup,bold:!0}}]:Cs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Cs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],k=o.index??0;k>s&&r.push({text:e.slice(s,k)}),r.push({text:p,style:Du(p)}),s=k+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Du(e){return e.startsWith("//")||e.startsWith("/*")?{fg:pe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:pe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:pe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:pe.markup}:{fg:pe.keyword}}function Lu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?So(t.repoTargets??[]):o?.pullRequest??(t?ge(t):null),k=[Mu(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...k,...Po(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...k,...zu(e,r)]}:{title:"",rows:[...k,...Yu(e,r)]}}function Mu(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let _=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:_}})}let p=Is(t),k=xs(t);return o.push({text:" "},p,{text:" "},k),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function wo(e){return[{text:" "},Is(e),{text:" "},xs(e)]}function vo(e){if(e.type==="project"&&e.repoTargets?.length){let r=So(e.repoTargets);return r?wo(r):null}let t=ge(e);return t?.number?wo(t):null}function So(e){let t=e.filter(o=>o.status==="ready"),r=t.map(o=>o.pullRequest).filter(o=>!!o.number);if(r.length===0)return null;let s=Bu(r);return{number:-1,status:Ou(r),draft:r.some(o=>o.draft),mergeable:r.length===t.length&&r.every(o=>o.mergeable),mergeStateStatus:null,reviewDecision:r.some(o=>o.reviewDecision==="CHANGES_REQUESTED")?"CHANGES_REQUESTED":r.some(o=>o.reviewDecision==="REVIEW_REQUIRED")?"REVIEW_REQUIRED":r.every(o=>o.reviewDecision==="APPROVED")?"APPROVED":null,requiredChecks:r.flatMap(o=>o.requiredChecks),aggregateReadiness:s}}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 Bu(e){let t=e.map(r=>To(r));return t.some(r=>r==="failed")?"failed":t.some(r=>r==="pending")?"pending":t.length>0&&t.every(r=>r==="success")?"success":"none"}function Is(e){return!e||!e.number?{text:qi,style:{fg:"565f89"}}:e.status==="merged"?{text:Ki,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Vi,style:{fg:"f7768e"}}:e.status==="draft"||e.draft?{text:_s,style:{fg:"565f89"}}:{text:_s,style:{fg:"9ece6a"}}}function xs(e){return e?.aggregateReadiness?bo(e.aggregateReadiness):bo(To(e))}function bo(e){return e==="failed"?{text:ys,style:{fg:"f7768e"}}:e==="pending"?{text:bs,style:{fg:"e0af68"}}:e==="success"?{text:ks,style:{fg:"9ece6a"}}:{text:ws,style:{fg:"565f89"}}}function To(e){let t=e?.requiredChecks??null;return e?.status==="merged"?"success":e?.status==="closed"||!e?.number||!t||t.length===0?"none":t.some(r=>r.status==="failed")||e.reviewDecision==="CHANGES_REQUESTED"?"failed":t.every(r=>r.status==="success"||r.status==="skipped")?Ro(e)?"failed":$u(e)?"success":"pending":"pending"}function $u(e){return!!(e.mergeable&&!e.draft&&!Ro(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped"))}function Ro(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function Po(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return Fu(e,t);let r=ge(t),s=Io("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,lastSyncedAt:null,requiredChecks:[],comments:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),Nu(s,e)}var _r=32;function Fu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let k of s){let i=o===k.repoId,c=e.focusedRegion==="inspector"&&i,d=k.repoId.startsWith("repo_")?k.repoId.slice(5):k.repoId;if(k.status!=="ready"){let a=k.failureReason?k.failureReason.slice(0,14):k.status,b=_r-a.length-1,l=d.length>b?d.slice(0,b-1)+"\u2026":d,m=_r-l.length-a.length;r.push({id:`project-review:${k.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let _=Is(k.pullRequest),a=xs(k.pullRequest),b=`${_.text} ${a.text}`,l=_r-b.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,w=_r-m.length-b.length,n=m+" ".repeat(Math.max(1,w));r.push({id:`project-review:${k.repoId}`,text:n+b,selected:i,focused:c,segments:[{text:n},{..._,text:_.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(k=>k.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...Io("target",p.branch,p.pullRequest))),r}function Co(e,t){return Po(e,t).length}function Io(e,t,r){let s=a=>`${e}-${a}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let k=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${k} \u2192 ${i}`,muted:!0});let c=Wu(r.reviewDecision,r.mergeStateStatus),d=c&&c!=="review approved"?"merge blocked":r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";c?o.push({id:s("pr-merge"),text:`${d} \xB7 ${c}`,muted:!0,segments:[{text:d},{text:" \xB7 "},{text:c,style:{fg:ju(r.reviewDecision,r.mergeStateStatus)}}]}):o.push({id:s("pr-merge"),text:d,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${xo(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(Hu)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0});let _=r.comments??[];return _.length>0&&(o.push({id:s("comments-spacer"),text:""}),o.push({id:s("comments-header"),text:`Review comments (${_.length})`}),o.push(..._.slice(-4).flatMap((a,b)=>Uu(a,s(`comment:${b}`))))),o}function Nu(e,t){if(t.focusedRegion!=="inspector"||t.inspectionMode!=="review"||e.length===0)return e;let r=Math.max(0,Math.min(t.reviewScrollOffset,e.length-1));return e.map((s,o)=>({...s,selected:t.reviewScrollOffset===0&&s.selected||o===r,focused:t.reviewScrollOffset===0&&s.focused||o===r}))}function Wu(e,t){return e==="CHANGES_REQUESTED"?"review changes requested":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"review required":e==="APPROVED"?"review approved":null}function ju(e,t){return e==="CHANGES_REQUESTED"?"f7768e":e==="APPROVED"?"9ece6a":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"e0af68":"565f89"}function xo(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 Hu(e){let{icon:t,color:r}=Ku(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," ")} ${Vu(e.status)}`,color:r,muted:!1}}function Uu(e,t){let r=e.author??"unknown",s=e.createdAt?` \xB7 ${xo(e.createdAt)}`:"",o=qu(e.body,30),p=o.slice(0,4),k=p.length<o.length,i=[{id:`${t}:author`,text:`${r}${s}`,muted:!0},...p.map((c,d)=>({id:`${t}:body:${d}`,text:` ${k&&d===p.length-1?`${c}\u2026`:c}`,muted:!0}))];return i.push({id:`${t}:spacer`,text:"",muted:!0}),i}function qu(e,t){let r=e.split(/\s+/).filter(Boolean);if(r.length===0)return[];let s=[],o="";for(let p of r){if(!o){o=p;continue}`${o} ${p}`.length<=t?o=`${o} ${p}`:(s.push(o),o=p)}return o&&s.push(o),s}function Ku(e){switch(e){case"success":return{icon:ks,color:"9ece6a"};case"pending":return{icon:bs,color:"e0af68"};case"failed":return{icon:ys,color:"f7768e"};case"skipped":return{icon:ws,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function Vu(e){return e==="success"?"passing":e==="failed"?"failing":e}function zu(e,t){if(!t)return[{id:"empty",text:"No file index. Select a task with local changes.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.fileRows.length===0)return[{id:"empty",text:"No Git-visible files.",muted:!0}];let r=new Map(t.diffRows.map(p=>[p.path,p.status])),s=Gu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let k=p.kind==="file"?r.get(p.path):void 0,i=k==="A"?"9ece6a":k==="M"?"e0af68":k==="D"?"f7768e":k==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Hi:Ui:ji(p.label),d=p.kind==="file"?zi(p.label):void 0,_=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},b=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:_},a,b];return{id:p.path,text:`${_}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function Gu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Yu(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(Xu(t))return Qu(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>Eo(p,e,t))))}return r}function Xu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Qu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),k=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:k,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>Eo(d,e,t,o.length+1))))}}return r}function Eo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,k=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:k}}function Ju(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Pe(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:jt.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 Zu(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function eh(e,t){return{name:Pe(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var br={width:120,height:36},Ne={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??br.width,br.width),height:Math.max(t??br.height,br.height)}}import{spawn as vh}from"node:child_process";import{createHash as Sh}from"node:crypto";import{createServer as Th,createConnection as Ho}from"node:net";import{openSync as Rh}from"node:fs";import{mkdir as Ph,readFile as Bs,rm as ft,writeFile as Ch}from"node:fs/promises";import{tmpdir as Ih}from"node:os";import yt from"node:path";import{createRequire as lh}from"node:module";var Mo=za(Do(),1),th=1e3,rh=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Oo(e){return new Mo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:th,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Bo(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function As(e,t){return new Promise(r=>{e.write(t,r)})}function $o(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,k=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(k+i);if(!c){s.push({segments:[]});continue}let d=[];for(let _=0;_<e.cols;_+=1){let a=c.getCell(_,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:ih(a,k+i===p&&_===r.cursorX)})}s.push({segments:sh(nh(d))})}return s}function sh(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&ch(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};Fo(r.style)||(o.style=r.style),t.push(o)}return t}function nh(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Fo(r.style))break;t-=1}return e.slice(0,t)}function ih(e,t){let r={},s=Lo(e,"fg"),o=Lo(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 Lo(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"):rh[o]??oh(o)}function oh(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(ah).map(p=>p.toString(16).padStart(2,"0")).join("")}if(e>=232&&e<=255){let t=8+(e-232)*10;return[t,t,t].map(r=>r.toString(16).padStart(2,"0")).join("")}return"e6e6e6"}function ah(e){return e===0?0:55+e*40}function ch(e,t){return Es(e)===Es(t)}function Es(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function Fo(e){return Es(e)===""}var dh=lh(import.meta.url),uh=/^CTRL_([A-Z])$/,hh="\x1B[6n",fh="\x1B[c",ph="\x1B[?u",gh={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
169
|
-
`,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:""},kr=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Ds(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,
|
|
170
|
-
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(b.tabId)})})),b}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function
|
|
156
|
+
`}function Pd(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}$t();xe();import{readFile as Cd,stat as Id}from"node:fs/promises";import gs from"node:path";var xd=200*1024,Ed=500*1024,ur="100000";async function Ai(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return Ad(e,t,r);try{let s=tt(r.selectedFilePath??null,t.filePaths),o=tt(r.selectedDiffPath??null,t.diffPaths),p=o?await Ft(e.worktreePath):null,[y,i]=await Promise.all([fr(e.worktreePath,s),o?ms(e.worktreePath,o,t.diffRows,p):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),c=o?{[o]:i}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:y,selectedDiff:i,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function Ad(e,t,r){let s=tt(r.selectedFilePath??null,t.filePaths),o=tt(r.selectedDiffPath??null,t.diffPaths),[p,y]=await Promise.all([Li(e,s),(async()=>{if(!o)return me("No diff selected","No local changes found.","empty");let c=hr(e,o),d=c?await Ft(c.target.worktreePath).catch(()=>null):null;return Mi(e,o,t.diffRows,d)})()]),i=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:i,selectedFile:p,selectedDiff:y}}async function Di(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return Dd(e,t);try{await Ee(e);let r=await Ft(e.worktreePath),[s,o]=await Promise.all([Oi(e.worktreePath),Bi(e.worktreePath,r)]),p=[...new Set(o.map(a=>a.path))],y=tt(t.selectedFilePath??null,s),i=tt(t.selectedDiffPath??null,p),[c,d]=await Promise.all([fr(e.worktreePath,y),i?ms(e.worktreePath,i,o,r):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),w=i?{[i]:d}:{};return{taskId:e.id,fileRows:Ni(s),filePaths:s,diffRows:o,diffPaths:p,diffContents:w,selectedFilePath:y,selectedDiffPath:i,selectedFile:c,selectedDiff:d,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:me("Files unavailable",s,"error"),selectedDiff:me("Diff unavailable",s,"error"),error:s}}}async function Dd(e,t){let r=(e.repoTargets??[]).filter(b=>b.status==="ready"),s=await Promise.all(r.map(async b=>{let l=await Ft(b.worktreePath).catch(()=>null),[m,_]=await Promise.all([Oi(b.worktreePath).catch(()=>[]),Bi(b.worktreePath,l).catch(()=>[])]);return{target:b,baseRef:l,targetFiles:m,targetDiffRows:_}})),o=[],p=[];for(let{target:b,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(_=>`${b.repoId}/${_}`)),p.push(...m.map(_=>({..._,path:`${b.repoId}/${_.path}`})));let y=[...new Set(p.map(b=>b.path))].sort(),i=tt(t.selectedFilePath??null,o),c=tt(t.selectedDiffPath??null,y),[d,w]=await Promise.all([Li(e,i),(async()=>{if(!c)return me("No diff selected","No local changes found.","empty");let b=hr(e,c),l=b?s.find(m=>m.target.repoId===b.target.repoId):null;return Mi(e,c,p,l?.baseRef??null)})()]),a=c?{[c]:w}:{};return{taskId:e.id,fileRows:Ni(o),filePaths:o,diffRows:p,diffPaths:y,diffContents:a,selectedFilePath:i,selectedDiffPath:c,selectedFile:d,selectedDiff:w,error:null}}async function Li(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 Mi(e,t,r,s=null){let o=hr(e,t);return o?{...await ms(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("/"),p=(e.repoTargets??[]).find(y=>y.repoId===r&&y.status==="ready")??null;return!p||o.length===0?null:{target:p,relativePath:o}}async function Oi(e){let t=await ee("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return Wi(t.stdout)}async function Bi(e,t){let[r,s,o,p]=await Promise.all([Ld(e,t),Ei(e,"staged"),Ei(e,"unstaged"),Md(e)]);return[...r,...s,...o,...p]}async function Ld(e,t){if(!t)return[];let[r,s]=await Promise.all([ee("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),ee("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=$i(r.stdout),p=Fi(s.stdout);return o.map(y=>{let i=p.get(y.path)??{additions:null,deletions:null};return{group:"branch",path:y.path,status:y.status,additions:i.additions,deletions:i.deletions}}).sort((y,i)=>y.path.localeCompare(i.path))}async function Ei(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([ee("git",[...r,"--name-status"],{cwd:e}),ee("git",[...r,"--numstat"],{cwd:e})]),p=$i(s.stdout),y=Fi(o.stdout);return p.map(i=>{let c=y.get(i.path)??{additions:null,deletions:null};return{group:t,path:i.path,status:i.status,additions:c.additions,deletions:c.deletions}}).sort((i,c)=>i.path.localeCompare(c.path))}async function Md(e){let t=await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=Wi(t.stdout);return await Promise.all(r.map(async o=>{let p=await fr(e,o),y=p.status==="ready"?Od(p.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function $i(e){return e.split(`
|
|
157
|
+
`).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 Fi(e){let t=new Map;for(let r of e.split(`
|
|
158
|
+
`)){let s=r.trim();if(!s)continue;let[o="-",p="-",...y]=s.split(" "),i=y.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function Ft(e){return(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function fr(e,t){if(!t)return me("No file selected","No Git-visible files found.","empty");let r=Bd(e,t);try{let s=await Id(r);if(s.size>xd)return me(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await Cd(r);return $d(o)?me(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
|
|
159
|
+
`),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 ms(e,t,r,s=null){if(!t)return me("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await Ft(e);if(i){let c=await ee("git",["diff","--stat","--patch",`--unified=${ur}`,`${i}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
|
|
160
|
+
${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await ee("git",["diff","--cached","--stat","--patch",`--unified=${ur}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`staged
|
|
161
|
+
${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await ee("git",["diff","--stat","--patch",`--unified=${ur}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`unstaged
|
|
162
|
+
${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${ur}`,"--","/dev/null",t],{cwd:e});i.stdout.trim().length>0&&o.push(`untracked
|
|
163
|
+
${i.stdout.trimEnd()}`)}let y=o.join(`
|
|
164
|
+
|
|
165
|
+
`);return y.length>Ed?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(`
|
|
166
|
+
`):["No diff for this file."],byteLength:y.length}}function Ni(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let p=0;p<o.length-1;p+=1){let y=o.slice(0,p+1).join("/");r.has(y)||(r.add(y),t.push({kind:"directory",path:y,depth:p,label:o[p]??y}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function tt(e,t){return e&&t.includes(e)?e:t[0]??null}function Od(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Wi(e){return[...new Set(e.split(`
|
|
167
|
+
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Bd(e,t){let r=gs.resolve(e,t),s=gs.resolve(e);if(r!==s&&!r.startsWith(`${s}${gs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function $d(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function me(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Ce();import{access as Fd}from"node:fs/promises";async function ji(e,t){let r=await ae(e,t),s=await Nd(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await se(e,o),o}async function Nd(e){try{return await Fd(e),!0}catch{return!1}}De();xe();import jt from"node:path";function Hi(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 Ui="\u{F024B} ",qi="\u{F0DCF} ",Ki="\u25CB",_s="\uEA64",Vi="\uEAFE",zi="\uEBDA",ws="\u25CB",bs="\u25CF",ys="\u2713",ks="\u2715";function Gi(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}}De();bt();De();var Wd=["tasks","center","inspector","actions"],eo=["agent","terminal"],to=[],ne="inspection",N_=[...eo,...to],ro=["commit","push","refresh-checks","close-task"],jd=["refresh-checks","close-task"],so=["task","checks","pr","setup-run","actions","next-action"],no=["diff","files","review"];function io(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=su(e?.openInspectionKind)??r,o=gt(t);return{inputMode:iu(e?.inputMode),focusedRegion:tu(e?.focusedRegion),selectedRepoId:Ye(e?.selectedRepoId),selectedWorkspaceId:Ye(e?.selectedWorkspaceId),selectedTaskId:Ye(e?.selectedTaskId),selectedPtyTabId:Ye(e?.selectedPtyTabId),selectedLeftItemId:pu(Ye(e?.selectedTaskId)),activeTab:r?ne:Ye(e?.activeTab)??"agent",preferredPtyTabKind:nu(e?.preferredPtyTabKind),inspectorSection:Nt(e?.inspectorSection,so,"task"),inspectionMode:ru(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ye(e?.selectedFileTreePath),selectedFilePath:Ye(e?.selectedFilePath),selectedDiffPath:Ye(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0,selectedActionId:Nt(e?.selectedActionId,ro,"commit"),selectedProjectTargetId:null,selectedRunner:ou(e?.selectedRunner,o,nt(t)),centerTabRunner:null,actionMessage:null,footerToast:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:Hd(),centerZoomed:!1}}function Hd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function oo(e,t){return{...e??Ue(),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=hu(e,t),o=go(s),p=(o?.kind==="workspace"?t.workspaces?.find(w=>w.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(w=>w.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(w=>w.id===o.id)??null:o?.kind==="task"?t.repos.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(w=>w.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(w.id))??null:null)??(p?.kind!=="project"?t.repos.find(w=>w.id===p?.primaryRepoId)??null:null)??t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(w=>w.workspaceId===p.id):i?t.tasks.filter(w=>w.repoId===i):[],d=(o?.kind==="task"?c.find(w=>w.id===o.id)??null:null)??c.find(w=>w.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...cu(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:Jd(e,t,d?.id??null),...lu(e,t,d?.id??null),selectedDiffPath:Qd(e,t,d?.id??null),inspectorSection:Nt(e.inspectorSection,so,"task")}}function ao(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Ud(t)?Q({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):Q({state:e});if(t==="q"||t==="Q")return Q({state:e,exit:!0});if(t==="ESCAPE")return Q({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return Q({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId)))return Q({state:{...e,selectedRunner:Rs(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Yi(e,1);if(t==="SHIFT_TAB"||t==="[")return Yi(e,-1);if(t==="z"||t==="Z")return Q({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,-1,r):Xi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,1,r):Xi(e,1,r);if(t==="PAGE_UP")return rt(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return rt(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return rt(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return rt(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??ue,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return Q({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=au(e,t);return Q({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 Q({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return Q({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 Q({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&gu(e.selectedLeftItemId)&&e.selectedWorkspaceId)return Q({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Zi(e.activeTab,r.ptyTabIds??[]))return Q({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return vs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Qi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return vs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Qi(e,1)}if(Qe(t)){if(e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId))){let s=mo(e.selectedLeftItemId),o=_o(e.selectedLeftItemId);return Q({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 Q({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&mr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return Q({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Wt(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&Zi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return Q({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Wt(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return Q({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 Q({state:Gd({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return Q({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"?Q({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?Q({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?Q({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):Q({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?Q({state:e}):e.selectedActionId==="refresh-checks"?Q({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?Q({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):Q({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return Q({state:e})}function ft(e,t){return{...e,terminal:t}}function co(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Ud(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Qe(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
168
|
+
`}function lo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function uo(e){return ho(e)||Wt(e)!==null}function qd(e){return to.includes(e)}function ho(e){return eo.includes(e)}function fo(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Kd=["tasks","center","inspector"];function Yi(e,t){return pr(e,"focusedRegion",Kd,t)}function vs(e,t,r){let s=pr(e,"activeTab",r&&r.length>0?r:uu(e),t);return!s.changed||qd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Wt(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Xi(e,t,r){if(e.focusedRegion==="tasks")return Vd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return vs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return po(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}if(r.projectTargetIds?.length){let s=gr(e,"selectedProjectTargetId",r.projectTargetIds,t);return s.changed?{...s,state:{...s.state,reviewScrollOffset:0}}:s}return pr(e,"selectedActionId",jd,t)}return pr(e,"selectedActionId",ro,t)}function Vd(e,t,r){let s=gr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=go(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};let p=mo(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let y=_o(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function rt(e,t,r){if(t===0)return Q({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return po(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 e.inspectionMode==="review"?Ji(e,"reviewScrollOffset",t,r.reviewRowCount??100,r.pageRows):Q({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Ji(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return Yd(e,t,r)}return Q({state:e})}function zd(e,t){if(e.inspectionMode===t)return Q({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return Q({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,reviewScrollOffset:t==="review"?0:e.reviewScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Qi(e,t){return zd(e,eu(e.inspectionMode,no,t))}function po(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return Q({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),y=Xe(p===-1?0:p+t,0,s.length-1),i=s[y]??null;if(i===e.selectedFileTreePath)return Q({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return Q({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function Gd(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 Ji(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),y=Xe(e[t]+r,0,p);return y===e[t]?Q({state:e}):Q({state:{...e,[t]:y,actionMessage:null},changed:!0})}function Yd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Xd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),y=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let w=Xe(y,0,p);return w===e.diffScrollOffset?Q({state:e}):Q({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let w=Xe(y,0,p);return w===e.diffScrollOffset?Q({state:e}):Q({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}if(t>0&&y>p){let w=i[c+1]??null;return w?Q({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?Q({state:e}):Q({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&y<0){let w=i[c-1]??null;return w?Q({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?Q({state:e}):Q({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Xe(y,0,p);return d===e.diffScrollOffset?Q({state:e}):Q({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function Xd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),y=Xe(e.diffScrollOffset+t,0,p),i=Zd(r.diffPathRanges??[],y)??e.selectedDiffPath;return y===e.diffScrollOffset&&i===e.selectedDiffPath?Q({state:e}):Q({state:{...e,diffScrollOffset:y,selectedDiffPath:i,actionMessage:null},changed:!0})}function Qd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Jd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Zd(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]),p=Xe(o+s,0,r.length-1),y=r[p];return!y||y===e[t]?Q({state:e}):Q({state:{...e,[t]:y,actionMessage:null},changed:!0})}function gr(e,t,r,s,o=!1){if(r.length===0)return Q({state:e});let p=r.indexOf(e[t]??r[0]??""),y=Xe(p===-1?0:p+s,0,r.length-1),i=r[y]??null;return i===e[t]?Q({state:e}):Q({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function eu(e,t,r){let s=t.indexOf(e);return t[Xe(s+r,0,t.length-1)]??e}function Q(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function Nt(e,t,r){return t.includes(e??"")?e:r}function tu(e){return e==="tabs"?"center":Nt(e,Wd,"tasks")}function ru(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Nt(e,no,t)}function su(e){return e==="file"||e==="diff"?e:null}function nu(e){return e==="terminal"?"terminal":"agent"}function iu(e){return e==="terminal"?"terminal":"control"}function ou(e,t=[...ue],r="codex"){return e&&mt(e)&&t.includes(e)?e:r}function Rs(e,t=ue){let r=t.length>0?t:ue,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Wt(e){let t=ue.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function au(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Wt(e.activeTab)??e.preferredPtyTabKind}function cu(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(ho(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let y=o??s??e.ptyTabs[0]??null;return{activeTab:y?.id??ne,selectedPtyTabId:y?.id??null}}function lu(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?du(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function du(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 uu(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Zi(e,t){return t.includes(e)}function hu(e,t){let r=fu(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 fu(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 go(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 Ye(e){return typeof e=="string"?e:null}function pu(e){return e?`task:${e}`:null}function mr(e){return typeof e=="string"&&e.startsWith("task:")}function Ss(e){return typeof e=="string"&&e.startsWith("new-task:")}function Ts(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function gu(e){return typeof e=="string"&&e.startsWith("workspace:")}function mo(e){return Ss(e)?e.slice(9):null}function _o(e){return Ts(e)?e.slice(19):null}function Xe(e,t,r){return Math.min(r,Math.max(t,e))}var br="empty",pe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function ko(e,t){let r=wu(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],y=p.find(_=>_.id===e.selectedTaskId)??p[0]??null,i=y?.type==="project",c=eh(t.tasks),d=ku(e,y),w=yu(e,y,d),a=w.find(_=>_.id===d)??w[0]??{id:"agent",label:"CODEX"},b=t.inspection?.taskId===y?.id?t.inspection:null,l=s?.name??"no repo",m=y?Re(y.runner):Re(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,footerToast:e.footerToast,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${Re(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 [${Re(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":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Re(e.centerTabRunner??y?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 targets Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:jt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${jt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:mu(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>th(_,c[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:l,agent:m},centerTranscript:bu(d,e,s,y,e.workspaceBrowser,b,r),tabs:w,rightContext:Zu(s,y),rightInspection:Mu(e,y,b)}}function mu(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return _u(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let y=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:y,focused:y&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let w=e.selectedLeftItemId===`task:${d.id}`,a=w?"\u25B8":"\u2022",b=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${b}`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks"},m=So(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${Re(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${Re(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let w=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${w?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function _u(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let y=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:y,focused:y&&t.focusedRegion==="tasks"});let i=s.filter(w=>w.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let w of i){let a=t.selectedLeftItemId===`task:${w.id}`,b=a?"\u25B8":"\u2022",l=w.title.length>28?`${w.title.slice(0,25)}\u2026`:w.title,m={id:`task:${w.id}`,taskId:w.id,text:`${b} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},_=So(w);_&&(m.prBadge=_),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Re(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function wu(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 bu(e,t,r,s,o,p=null,y=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,w)=>{let a=w===o.selectedIndex?"\u25B8":" ",b=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${b}`});return Be(["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 Be(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=y?.kind==="project",d=c?y.name??"this workspace":r.name,w=c?"Project Task":"Task";return Be([`No tasks in ${d}.`,"",`Press n or choose + New ${w} to create one with ${Re(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Be([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Be([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?Tu(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Ru(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Be(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Be(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function yu(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:vu(p)}))??[];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:Su(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function ku(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 vu(e){return e.title.toUpperCase()}function Su(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?jt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Tu(e,t,r){if(!e)return Be(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Be(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=vo(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:""},...Pu(s.lines,r,o)]}function Ru(e,t,r){if(!e)return Be(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Be(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=vo(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:""},...Cu(s.lines,r,o)]}function Be(e){return e.map(t=>({text:t}))}function Pu(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,y)=>{let i=o+y+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:pe.lineNumber}},{text:" \u2502 ",style:{fg:pe.gutter}},...Ps(p,r)],tone:"default"}})}function Cu(e,t,r){let s=Iu(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>xu(p,r))}function Iu(e){let t=[],r=0,s=0;for(let o of e){let p=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(p){r=Number.parseInt(p[1]??"0",10),s=Number.parseInt(p[2]??"0",10);continue}if(!(o.startsWith("diff --git")||o.startsWith("index ")||o.startsWith("+++ ")||o.startsWith("--- "))&&!(o==="staged"||o==="unstaged"||o==="untracked")){if(o.startsWith("-")&&!o.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:o.slice(1),kind:"delete"}),r+=1;continue}if(o.startsWith("+")&&!o.startsWith("+++")){t.push({oldNumber:null,newNumber:s,marker:"+",text:o.slice(1),kind:"add"}),s+=1;continue}if(o.startsWith(" ")){if(r===0&&s===0)continue;t.push({oldNumber:r,newNumber:s,marker:" ",text:o.slice(1),kind:"context"}),r+=1,s+=1;continue}}}return t}function xu(e,t){let r=wo(e.oldNumber),s=wo(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:pe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:pe.diffAdd}:null,y=`${o} \u2502 ${e.text}`,i=p?Au(Ps(e.text,t),p.bg,p.fallbackFg):Ps(e.text,t),c=p?{fg:pe.lineNumber,bg:p.bg}:{fg:pe.lineNumber},d=p?{fg:pe.gutter,bg:p.bg}:{fg:pe.gutter};return{text:y,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function wo(e){return e===null?" ":String(e).padStart(4," ")}function vo(e){let t=jt.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 Ps(e,t){return t==="diff"?Eu(e):t==="markdown"?Du(e):t==="json"?Cs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Cs(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:pe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:pe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:pe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:pe.diffMeta}}]:[{text:e}]}function Au(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Du(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:pe.markup,bold:!0}}]:Cs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Cs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],y=o.index??0;y>s&&r.push({text:e.slice(s,y)}),r.push({text:p,style:Lu(p)}),s=y+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Lu(e){return e.startsWith("//")||e.startsWith("/*")?{fg:pe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:pe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:pe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:pe.markup}:{fg:pe.keyword}}function Mu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?To(t.repoTargets??[]):o?.pullRequest??(t?ge(t):null),y=[Ou(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...Co(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...Gu(e,r)]}:{title:"",rows:[...y,...Xu(e,r)]}}function Ou(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let w=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:w}})}let p=Is(t),y=xs(t);return o.push({text:" "},p,{text:" "},y),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function bo(e){return[{text:" "},Is(e),{text:" "},xs(e)]}function So(e){if(e.type==="project"&&e.repoTargets?.length){let r=To(e.repoTargets);return r?bo(r):null}let t=ge(e);return t?.number?bo(t):null}function To(e){let t=e.filter(o=>o.status==="ready"),r=t.map(o=>o.pullRequest).filter(o=>!!o.number);if(r.length===0)return null;let s=$u(r);return{number:-1,status:Bu(r),draft:r.some(o=>o.draft),mergeable:r.length===t.length&&r.every(o=>o.mergeable),mergeStateStatus:null,reviewDecision:r.some(o=>o.reviewDecision==="CHANGES_REQUESTED")?"CHANGES_REQUESTED":r.some(o=>o.reviewDecision==="REVIEW_REQUIRED")?"REVIEW_REQUIRED":r.every(o=>o.reviewDecision==="APPROVED")?"APPROVED":null,requiredChecks:r.flatMap(o=>o.requiredChecks),aggregateReadiness:s}}function Bu(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 $u(e){let t=e.map(r=>Ro(r));return t.some(r=>r==="failed")?"failed":t.some(r=>r==="pending")?"pending":t.length>0&&t.every(r=>r==="success")?"success":"none"}function Is(e){return!e||!e.number?{text:Ki,style:{fg:"565f89"}}:e.status==="merged"?{text:Vi,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:zi,style:{fg:"f7768e"}}:e.status==="draft"||e.draft?{text:_s,style:{fg:"565f89"}}:{text:_s,style:{fg:"9ece6a"}}}function xs(e){return e?.aggregateReadiness?yo(e.aggregateReadiness):yo(Ro(e))}function yo(e){return e==="failed"?{text:ks,style:{fg:"f7768e"}}:e==="pending"?{text:bs,style:{fg:"e0af68"}}:e==="success"?{text:ys,style:{fg:"9ece6a"}}:{text:ws,style:{fg:"565f89"}}}function Ro(e){let t=e?.requiredChecks??null;return e?.status==="merged"?"success":e?.status==="closed"||!e?.number||!t||t.length===0?"none":t.some(r=>r.status==="failed")||e.reviewDecision==="CHANGES_REQUESTED"?"failed":t.every(r=>r.status==="success"||r.status==="skipped")?Po(e)?"failed":Fu(e)?"success":"pending":"pending"}function Fu(e){return!!(e.mergeable&&!e.draft&&!Po(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped"))}function Po(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function Co(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return Nu(e,t);let r=ge(t),s=xo("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,lastSyncedAt:null,requiredChecks:[],comments:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),Wu(s,e)}var wr=32;function Nu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let y of s){let i=o===y.repoId,c=e.focusedRegion==="inspector"&&i,d=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,b=wr-a.length-1,l=d.length>b?d.slice(0,b-1)+"\u2026":d,m=wr-l.length-a.length;r.push({id:`project-review:${y.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let w=Is(y.pullRequest),a=xs(y.pullRequest),b=`${w.text} ${a.text}`,l=wr-b.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,_=wr-m.length-b.length,n=m+" ".repeat(Math.max(1,_));r.push({id:`project-review:${y.repoId}`,text:n+b,selected:i,focused:c,segments:[{text:n},{...w,text:w.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(y=>y.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...xo("target",p.branch,p.pullRequest))),r}function Io(e,t){return Co(e,t).length}function xo(e,t,r){let s=a=>`${e}-${a}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let y=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${y} \u2192 ${i}`,muted:!0});let c=ju(r.reviewDecision,r.mergeStateStatus),d=c&&c!=="review approved"?"merge blocked":r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";c?o.push({id:s("pr-merge"),text:`${d} \xB7 ${c}`,muted:!0,segments:[{text:d},{text:" \xB7 "},{text:c,style:{fg:Hu(r.reviewDecision,r.mergeStateStatus)}}]}):o.push({id:s("pr-merge"),text:d,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${Eo(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(Uu)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0});let w=r.comments??[];return w.length>0&&(o.push({id:s("comments-spacer"),text:""}),o.push({id:s("comments-header"),text:`Review comments (${w.length})`}),o.push(...w.slice(-4).flatMap((a,b)=>qu(a,s(`comment:${b}`))))),o}function Wu(e,t){if(t.focusedRegion!=="inspector"||t.inspectionMode!=="review"||e.length===0)return e;let r=Math.max(0,Math.min(t.reviewScrollOffset,e.length-1));return e.map((s,o)=>({...s,selected:t.reviewScrollOffset===0&&s.selected||o===r,focused:t.reviewScrollOffset===0&&s.focused||o===r}))}function ju(e,t){return e==="CHANGES_REQUESTED"?"review changes requested":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"review required":e==="APPROVED"?"review approved":null}function Hu(e,t){return e==="CHANGES_REQUESTED"?"f7768e":e==="APPROVED"?"9ece6a":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"e0af68":"565f89"}function Eo(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 Uu(e){let{icon:t,color:r}=Vu(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," ")} ${zu(e.status)}`,color:r,muted:!1}}function qu(e,t){let r=e.author??"unknown",s=e.createdAt?` \xB7 ${Eo(e.createdAt)}`:"",o=Ku(e.body,30),p=o.slice(0,4),y=p.length<o.length,i=[{id:`${t}:author`,text:`${r}${s}`,muted:!0},...p.map((c,d)=>({id:`${t}:body:${d}`,text:` ${y&&d===p.length-1?`${c}\u2026`:c}`,muted:!0}))];return i.push({id:`${t}:spacer`,text:"",muted:!0}),i}function Ku(e,t){let r=e.split(/\s+/).filter(Boolean);if(r.length===0)return[];let s=[],o="";for(let p of r){if(!o){o=p;continue}`${o} ${p}`.length<=t?o=`${o} ${p}`:(s.push(o),o=p)}return o&&s.push(o),s}function Vu(e){switch(e){case"success":return{icon:ys,color:"9ece6a"};case"pending":return{icon:bs,color:"e0af68"};case"failed":return{icon:ks,color:"f7768e"};case"skipped":return{icon:ws,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function zu(e){return e==="success"?"passing":e==="failed"?"failing":e}function Gu(e,t){if(!t)return[{id:"empty",text:"No file index. Select a task with local changes.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.fileRows.length===0)return[{id:"empty",text:"No Git-visible files.",muted:!0}];let r=new Map(t.diffRows.map(p=>[p.path,p.status])),s=Yu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let y=p.kind==="file"?r.get(p.path):void 0,i=y==="A"?"9ece6a":y==="M"?"e0af68":y==="D"?"f7768e":y==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Ui:qi:Hi(p.label),d=p.kind==="file"?Gi(p.label):void 0,w=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},b=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:w},a,b];return{id:p.path,text:`${w}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function Yu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Xu(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(Qu(t))return Ju(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>Ao(p,e,t))))}return r}function Qu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Ju(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),y=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:y,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>Ao(d,e,t,o.length+1))))}}return r}function Ao(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,y=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:y}}function Zu(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Re(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:jt.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 eh(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function th(e,t){return{name:Re(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var yr={width:120,height:36},$e={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function st(e,t){return{width:Math.max(e??yr.width,yr.width),height:Math.max(t??yr.height,yr.height)}}import{spawn as Sh}from"node:child_process";import{createHash as Th}from"node:crypto";import{createServer as Rh,createConnection as Uo}from"node:net";import{openSync as Ph}from"node:fs";import{mkdir as Ch,readFile as Bs,rm as pt,writeFile as Ih}from"node:fs/promises";import{tmpdir as xh}from"node:os";import vt from"node:path";import{createRequire as dh}from"node:module";var Oo=Ga(Lo(),1),rh=1e3,sh=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Bo(e){return new Oo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:rh,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function $o(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function As(e,t){return new Promise(r=>{e.write(t,r)})}function Fo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,y=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(y+i);if(!c){s.push({segments:[]});continue}let d=[];for(let w=0;w<e.cols;w+=1){let a=c.getCell(w,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:oh(a,y+i===p&&w===r.cursorX)})}s.push({segments:nh(ih(d))})}return s}function nh(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&lh(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};No(r.style)||(o.style=r.style),t.push(o)}return t}function ih(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!No(r.style))break;t-=1}return e.slice(0,t)}function oh(e,t){let r={},s=Mo(e,"fg"),o=Mo(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 Mo(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"):sh[o]??ah(o)}function ah(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(ch).map(p=>p.toString(16).padStart(2,"0")).join("")}if(e>=232&&e<=255){let t=8+(e-232)*10;return[t,t,t].map(r=>r.toString(16).padStart(2,"0")).join("")}return"e6e6e6"}function ch(e){return e===0?0:55+e*40}function lh(e,t){return Es(e)===Es(t)}function Es(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function No(e){return Es(e)===""}var uh=dh(import.meta.url),hh=/^CTRL_([A-Z])$/,fh="\x1B[6n",ph="\x1B[c",gh="\x1B[?u",mh={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
169
|
+
`,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:""},kr=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Ds(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,Wo(p,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=_h(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&&Wo(r,t)}detach(){this.attachedTabId=null}sessionTabIds(){return[...this.sessions.keys()]}disposeSession(t){let r=this.sessions.get(t);r&&(Ds(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Ds(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:Fo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let p=this.spawn??bh().spawn,y=Bo(s),i=o??this.resolveSessionSpec(t,r),c=ct({...this.env,...i.env??{}}),{executable:d,args:w}=yh(this.shell,i.command,{cwd:i.cwd,env:c}),a=p(d,w,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:i.cwd,env:kh(c)}),b={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return b.disposables.push(a.onData(l=>{vh(a,l),As(b.terminal,l).then(()=>{this.onUpdate?.(b.tabId)})})),b.disposables.push(a.onExit(l=>{b.status="exited",As(b.terminal,`\r
|
|
170
|
+
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(b.tabId)})})),b}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function _h(e){if(e.length===1)return e;let t=mh[e];if(t!==void 0)return t;let r=hh.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function Wo(e,t){wh(e.pty,t),$o(e.terminal,t)}function Ds(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function wh(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function bh(){return uh("node-pty")}function yh(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[lt(t[0],r),...t.slice(1)].map(jo).join(" ")}; exec ${jo(e)} -l`;return{executable:e,args:["-lc",o]}}function jo(e){return`'${e.replaceAll("'","'\\''")}'`}function kh(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 vh(e,t){for(let r=0;r<Ls(t,fh);r+=1)e.write("\x1B[1;1R");for(let r=0;r<Ls(t,ph);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<Ls(t,gh);r+=1)e.write("\x1B[?0u")}function Ls(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 $s=3;async function qo(e){let t=Fs(e.paths);await Eh(t,e.paths,e.spawnDaemon);let r=await Xo(t.socketPath),s=new Ms(r,e);return await s.ready(),s}async function Ko(e,t={}){let r=Fs(e);await Ch(e.runtimeDir,{recursive:!0}),await pt(r.socketPath,{force:!0});let s=new Os(e,t),o=Rh(p=>s.handleConnection(p));await Bh(o,r.socketPath),await Ih(r.pidPath,String(process.pid),"utf8"),await new Promise(p=>{let y=()=>{s.closeClients(),o.close(()=>p())};s.onShutdown=y,process.once("SIGTERM",y),process.once("SIGINT",y)}),await pt(r.socketPath,{force:!0}),await pt(r.pidPath,{force:!0}),s.disposeAll()}async function Vo(e){let t=Fs(e);return await Sr(t.socketPath)?(await Go(t.socketPath),!0):!1}var Ms=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!==$s)throw new Error("Craig PTY daemon protocol mismatch.")}async ensureSession(t,r,s){let o=await this.send({type:"ensureSession",taskId:t,tabId:r,size:s,spec:this.options.resolveSessionSpec?.(t,r)??{cwd:this.options.workspaceRoot,command:[]}});this.attachedTabId=r;let p=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,p),p}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}async pruneStale(t){await this.send({type:"pruneStale",keepTabIds:t})}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((y,i)=>{this.pending.set(r,{resolve:y,reject:i})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
|
|
171
171
|
`);let p=await o;if(!p.ok)throw new Error(p.error);return p}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
|
|
172
172
|
`);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
|
|
173
173
|
`)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},Os=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new kr({...r,workspaceRoot:t.workspaceRoot,onUpdate:s=>this.broadcastUpdate(s)})}handleConnection(t){let r="";this.clients.add(t),t.setEncoding("utf8"),t.on("data",s=>{r+=String(s);let o=r.indexOf(`
|
|
174
174
|
`);for(;o!==-1;){let p=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,p),o=r.indexOf(`
|
|
175
|
-
`)}}),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{
|
|
176
|
-
${p.slice(-2e3)}`:""}`)}async function
|
|
175
|
+
`)}}),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{vr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);vr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:$s}:{},...o?{view:o}:{}})}catch(o){let p=o instanceof Error?o.message:String(o);vr(t,{id:s.id,ok:!1,error:p})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"pruneStale":{let r=new Set(t.keepTabIds);for(let s of this.runtime.sessionTabIds())r.has(s)||(this.runtime.disposeSession(s),this.attachedTabId===s&&(this.attachedTabId=null));return null}case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return $h(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)vr(s,{type:"update",tabId:t,view:r})}};function Fs(e){let t=Th("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:vt.join(xh(),`craig-${t}.sock`),pidPath:vt.join(e.runtimeDir,"pty-daemon.pid")}}async function Eh(e,t,r){if(await Ah(e.socketPath,1e3))return;await Sr(e.socketPath)&&(await Go(e.socketPath),await Ho(e.socketPath,1e3)),await Sr(e.socketPath)&&(await Mh(e),await Ho(e.socketPath,1e3)),await Lh(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:y,args:i}=Dh(s),c=Ph(vt.join(t.runtimeDir,"pty-daemon.log"),"a");Sh(y,i,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await zo(e.socketPath))return;await Ns(50)}let p=await Bs(vt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${p?`
|
|
176
|
+
${p.slice(-2e3)}`:""}`)}async function zo(e){let t=await Oh(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===$s}async function Ah(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await zo(e))return!0;await Ns(50)}return!1}function Dh(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:vt.resolve(vt.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 Lh(e){let t=await Bs(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Qo(r))return}await pt(e.socketPath,{force:!0}),await pt(e.pidPath,{force:!0})}async function Sr(e){let t=await Xo(e).catch(()=>null);return t?(t.end(),!0):!1}async function Go(e){await Yo(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Mh(e){let t=await Bs(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Qo(r)){await pt(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await pt(e.socketPath,{force:!0})}}async function Oh(e){return Yo(e,{id:1,type:"ping"})}function Yo(e,t){return new Promise((r,s)=>{let o=Uo(e),p="",y=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),i=()=>clearTimeout(y);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
|
|
177
177
|
`)),o.once("error",c=>{i(),s(c)}),o.on("data",c=>{p+=String(c);let d=p.indexOf(`
|
|
178
|
-
`);if(d===-1)return;let
|
|
179
|
-
`)}catch{}}function
|
|
180
|
-
`)}function
|
|
181
|
-
`)}function
|
|
182
|
-
`)}function
|
|
183
|
-
`)}function Vh(e,t,r,s){let o=Jh(e.runners),p=1,k=e.leftTree.map(c=>Qh(c,t,s));return[...Ht(k,r-p),o]}function zh(e,t,r,s){let o=t-2,p=e.tabs.find(h=>h.active)?.label??"AGENT",k=e.inputMode==="terminal"?0:hf(e.tabs),i=e.inputMode==="terminal"?o:p.length+1,c="\u2500".repeat(Math.max(0,i)),d=`${" ".repeat(k)}${e.inputMode==="terminal"?vt(c,s,te.panelBg):Ir(c,s,te.panelMuted)}`,_=[`${Ir(e.centerHeader.tabLabel,s,te.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),a=e.tabs.find(h=>h.active)?.id??"agent",b=e.centerHeader.tabLabel==="BROWSER"||!lo(a)?e.centerTranscript.map(h=>({...h})):Gh(e),l=Zh(e.tabs,s,e.focusedRegion==="center"),m=" engaged ",w=m.length+2,n=e.inputMode==="terminal"?vt(`${m}\u25CF `,s,te.panelBg):"",g=e.inputMode==="terminal"?" ".repeat(Math.max(0,o-ke(l)-w)):"",u=[{text:e.inputMode==="terminal"?`${l}${g}${n}`:l},{text:d,tone:"muted"},{text:_},Te(),...b];return Ht(u,r)}function Gh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},Te(),{text:e.terminal.error},Te(),{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:da(s.segments),segments:s.segments,fullBleed:!0}))}function Yh(e,t,r,s){let o=e.rightInspection?Xh(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Ht([{text:"CONTEXT"},Te(),...e.rightContext.map(p=>ef(p,s)),...e.actionMessage?[Te(),{text:e.actionMessage}]:[]],r);return Ht(o,r)}function Xh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),k=p===-1?0:pf(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Qo(i)),...s.slice(k,k+o).map(i=>Qo(i))]}function Qo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),k=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:k}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Qh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",k=e.accentDot?` ${vt("\u25CF",r,e.selected?te.panelSelected:te.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+ke(m.text),0):0,c=t-ke(p)-ke(o)-i,d=e.selected?e.text:e.focused?vt(e.text,r,te.panelBg):e.panelHeader?Ir(e.text,r,te.panelMuted):e.text,_=ze(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${_}${p}${k}`},...e.prBadge];return{text:`${_}${p}${e.prBadge.map(w=>w.text).join("")}`,segments:l,tone:a}}return{text:`${_}${p}${k}`,tone:a}}function Jh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),k=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${k}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:te.success.fg}}):r.push({text:o.text,style:{fg:te.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function Zh(e,t,r){return e.map(s=>s.active?r?vt(s.label,t,te.panelBg):Ir(s.label,t,te.panelBg):qs(s.label,t,te.panelBg)).join(" ")}function ef(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?qs(e.value,t,te.panelBg):e.value}`}}function Tr(e,t,r,s){let o=tf(s,e.tone??"default"),p=rf(e,r,o);if(s==="left"){if(e.fullBleed)return ce(ze(p,t),r,o);let i=t-Rr-Pr;if(e.rightAlign){let d=ke(p),_=Math.max(0,i-d),a=`${" ".repeat(Rr)}${" ".repeat(_)}${p}${" ".repeat(Pr)}`;return ce(a,r,o)}let c=`${" ".repeat(Rr)}${ze(p,i)}${" ".repeat(Pr)}`;return ce(c,r,o)}return s==="center"&&e.fullBleed?sf(e,t,r,o):ce(ze(` ${p}`,t),r,o)}function tf(e,t){return t==="selected"||t==="focused"?te.panelSelected:t==="muted"?te.panelMuted:te.panelBg}function Ht(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Te());return r}function Te(){return{text:""}}function rf(e,t,r){return e.segments?e.segments.map(s=>ia(s,t,r)).join(""):e.text}function sf(e,t,r,s){let o=" ".repeat(Cr),p=Math.max(0,t-Cr*2);if(!e.segments)return ce(`${o}${ze(e.text,p)}${o}`,r,s);let k=af(e.segments,p),i=`${o}${k.map(c=>ia(c,r,s)).join("")}${o}`;return ce(i,r,s)}function ia(e,t,r){let s=e.href?`${oa(e.href)}${e.text}${Zo}`:nf(e.text);return!t||!e.style?s:`${Ut(df(e.style,r))}${uf(e.style)}${s}${js}${Ut(r)}`}function nf(e){return e.replace(Uh,t=>{let[r,s]=of(t);return`${oa(r)}${r}${Zo}${s}`})}function of(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function oa(e){return`\x1B]8;;${e}\x1B\\`}function af(e,t){let r=cf(e,t);return lf(r,t)}function cf(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=ke(o.text);if(p<=s){r.push(o),s-=p;continue}let k=xr(o.text,s);k.length>0&&r.push({...o,text:k}),s=0}return r}function lf(e,t){let r=ke(da(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 df(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,k=s??t.bg;return p&&(o.fg=p),k&&(o.bg=k),o}function uf(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 hf(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function aa(e,t){let r=Math.max(0,t-ke(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function ze(e,t){let r=ke(e);return r>=t?ff(e,t):e+" ".repeat(t-r)}function ff(e,t){if(t<=0)return"";if(ke(e)<=t)return e;let r=la(e);return xr(r,Math.max(0,t-1))+"\u2026"}function ke(e){let t=0;for(let r of Array.from(la(e)))t+=ca(r);return t}function xr(e,t){let r="",s=0;for(let o of Array.from(e)){let p=ca(o);if(s+p>t)break;r+=o,s+=p}return r}function ca(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 pf(e,t,r){return Math.min(Math.max(e,t),r)}function la(e){return e.replace(Hh,"").replace(Wh,"")}function da(e){return e.map(t=>t.text).join("")}function ce(e,t,r){if(!t)return e;let s=Ut(r),o=e.replace(jh,`${js}${s}`);return`${s}${o}${js}`}function Ut(e){let t=[];return e.fg&&t.push(`38;2;${Jo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Jo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Jo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function vt(e,t,r){return Er(e,t,te.success.fg,r)}function gf(e,t,r){return Er(e,t,te.error.fg,r)}function Ir(e,t,r){return Er(e,t,te.accent.fg,r)}function qs(e,t,r){return Er(e,t,te.mutedfg.fg,r)}function Er(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Ut(o)}${e}${Ut(s)}`}var mf="https://registry.npmjs.org/craig-cli/latest";var Ar=null;function Ks(){try{return"0.6.3"}catch{return"unknown"}}async function ua(){let e=Ks(),t=Date.now();if(Ar&&t-Ar.cachedAt<36e5)return Ar.result;let r=null;try{let o=await fetch(mf,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&_f(r,e)};return Ar={result:s,cachedAt:t},s}function _f(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[k=0,i=0,c=0]=r(t);return s!==k?s>k:o!==i?o>i:p>c}Me();var Vs=["Runners","Error Log","Help"];function zs(e,t){return ue.map(r=>{let s=Se(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),k=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${k}`})}function fa(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 pa(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Vs.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Gs(t)?e===0?{kind:"runners"}:e===1?{kind:"error-log"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ga(e,t,r,s){if(e.pathEdit)return wf({...e,pathEdit:e.pathEdit},t,r);let o=zs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=ue[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!Gs(r))return{kind:"noop",state:e};let p=ue[e.menuIndex]??"codex",k=t.runners?.[p]?.enabled!==!1;return k&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:bf(t,p,!k),state:{...e,message:`${Se(p).displayName} ${k?"disabled":"enabled"}.`}}}function wf(e,t,r){if(r==="ESCAPE")return{kind:"render",state:ha({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Gs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:kf(t,s,o.length>0?o:null),state:ha({...e,message:o.length>0?`${Se(s).displayName} executable saved.`:`${Se(s).displayName} executable reset to default.`})}}return yf(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function bf(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function kf(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function ha(e){let t={...e};return delete t.pathEdit,t}function Gs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
184
|
-
`}function yf(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Rf=vf(import.meta.url),Pf=Rf("terminal-kit"),Cf=Pf.terminal;async function wa(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ge(t);await kt(t);let s=await He(r),o=pt(s),p=e.uiStateFile?await Oe({uiStateFile:e.uiStateFile}):null,k=Promise.resolve(),i=Promise.resolve(),c=await qt(t,void 0,o),d=mr(no(p,s),c);c=await qt(t,d,o);let _=()=>{},a={workspaceRoot:t,onUpdate:()=>_(),resolveSessionSpec:(m,w)=>Af(c,w,t)},b=e.ptyRuntime??await Uo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=io(p,m);let w=p;k=k.then(()=>xe({uiStateFile:e.uiStateFile},w),()=>xe({uiStateFile:e.uiStateFile},w)),k.catch(()=>{})};return new Promise(m=>{let w=e.terminal??Cf,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:mr(d,c)},g=!1,f=!1,u=null,h=0,y=0,S=null,I=null,x=null,N=null,F=null,D=!1,A=null,E=`Craig v${Ks()}`,U=null,z=0,V=!0,G=null,B=()=>{},v=b;_=()=>{n.mode==="main"&&(n={mode:"main",shell:P(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&B()},50)))};function P(M){return Wt(M,v.getViewState(R(M)))}function R(M){let L=$(M);return L?L.ptyTabs.some(O=>O.id===M.activeTab)?M.activeTab:M.activeTab==="agent"||M.activeTab==="terminal"?L.ptyTabs.find(O=>O.kind===M.activeTab)?.id??M.selectedPtyTabId:M.selectedPtyTabId:M.selectedPtyTabId}function T(M){return P(If(M,c))}function $(M){return c.tasks.find(L=>L.id===M.selectedTaskId)??null}async function W(){let M=c.tasks.flatMap(L=>L.ptyTabs.map(O=>O.id));await v.pruneStale?.(M),await v.hydrateSessions?.(M)}function H(){W().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},B())})}function K(M,L){return N&&(clearTimeout(N),N=null),L?(N=setTimeout(()=>{N=null,!(n.mode!=="main"||n.shell.footerToast!==L)&&(n={mode:"main",shell:T({...n.shell,footerToast:null})},B())},3e3),{...M,footerToast:L}):{...M,footerToast:null}}function re(M,L){return K(M,L?{tone:"success",message:L}:null)}function C(M,L,O){let j=L instanceof Error?L.message:O,q=L instanceof Error?L.stack??L.message:String(L);return ps(r,{context:M,message:j,details:q}),j}function Q(M,L){return K(M,{tone:"error",message:L})}function Y(M){let L=i.then(M,M);return i=L.then(()=>{},()=>{}),L}function J(M){let L=$(M),O=c.inspection,j=O&&O.taskId===L?.id?O:null,q=xf(j?.fileRows??[],M.collapsedFileTreePaths);return{leftItemIds:Ef(c),centerTabIds:ho(L,M),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.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:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,reviewRowCount:Co(M,L),pageRows:Math.max(5,ht(w.width,w.height).height-Ne.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function ye(M){await on(r,M),s=M,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function ve(M){let L=M.selectedTaskId;L&&await Y(async()=>{let O=await fe(r,L);!O.ptyTabs.some(j=>j.id===M.activeTab)||O.selectedPtyTabId===M.activeTab||await se(r,{...O,selectedPtyTabId:M.activeTab})})}async function le(){let M=(n.mode==="main",n.shell);c=await qt(t,M,o),n.mode==="main"?n={mode:"main",shell:T(n.shell)}:n={...n,shell:T(n.shell)}}async function Re(M){let L=++z,O=ba(c.tasks,M),j=c.inspection,q;if(O&&j?.taskId===O.id){let Z={selectedFilePath:M.selectedFilePath,selectedDiffPath:M.selectedDiffPath},de=await Ei(O,j,Z);if(L!==z)return;q={...c,inspection:de}}else if(q=await qt(t,M,o),L!==z)return;c=q,n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},l(n.shell),B())}async function De(M){let L=await Uf(M);n.mode==="main"&&(n={mode:"main",shell:T({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},B())}async function Je(M){try{let L=T(M),O=$(L),j=L.selectedPtyTabId;if(O&&L.focusedRegion==="tasks"){let de=O.ptyTabs.find(Le=>Le.kind==="agent")??null;de?j=de.id:(O=await Xs(O),await le(),j=O.selectedPtyTabId)}O&&!j&&(O=await Xs(O),await le(),j=O.selectedPtyTabId);let q=T({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!q.selectedTaskId||!j){n={mode:"main",shell:q},B();return}n={mode:"main",shell:Wt({...q,inputMode:"terminal"},v.getViewState(j))},l(n.shell);let Z=await v.ensureSession(q.selectedTaskId,j,Dr(ht(w.width,w.height)));f=Ys(j),u=null,n={mode:"main",shell:Wt({...q,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let O=C("attach PTY",L,"Failed to start PTY.");M.selectedTaskId&&M.selectedPtyTabId&&Ys(M.selectedPtyTabId)&&(await ya(M.selectedTaskId,O).catch(()=>{}),await le().catch(()=>{})),n={mode:"main",shell:Q(ao(T(M),O),O)},l(n.shell)}B()}async function ya(M,L){await Y(async()=>{let O=await fe(r,M);await se(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function va(M,L,O){let j=T(M);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let q=await Y(async()=>{let Z=await fe(r,j.selectedTaskId),de=L??Mf(Z,j.activeTab,j.preferredPtyTabKind),Le=ma(Z,de,O??void 0,s),Tt={...Z,ptyTabs:[...Z.ptyTabs,Le],selectedPtyTabId:Le.id};return await se(r,Tt),Tt});return await le(),T({...j,activeTab:q.selectedPtyTabId??j.activeTab,selectedPtyTabId:q.selectedPtyTabId,preferredPtyTabKind:q.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${q.ptyTabs.at(-1)?.title??"tab"}`})}async function Sa(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:j}=await Y(async()=>{let q=await fe(r,L.selectedTaskId),Z=q.ptyTabs.findIndex($r=>$r.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let de=q.ptyTabs[Z],Le=q.ptyTabs.filter($r=>$r.id!==de.id),Tt=Le[Math.min(Z,Le.length-1)]??Le[Z-1]??null;return await se(r,{...q,ptyTabs:Le,selectedPtyTabId:Tt?.id??null}),{closedTab:de,nextSelectedTab:Tt}});return v.disposeSession(O.id),await le(),T({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function Ta(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=$(L),j=null,q=null;if(O?.type==="project"&&O.repoTargets?.length){let Z=await cr(r,L.selectedTaskId);await le();let de=Z.synced+Z.discovered+Z.notFound;q=`Refreshed ${Z.synced}/${de} targets`}else{let{disposition:Z,task:de}=await ns(r,L.selectedTaskId);await le(),j=Z==="not_found"?`No PR found for ${de.branch}`:null,Z!=="not_found"&&(q=`Refreshed checks: ${ge(de)?.requiredChecks.length??0} reported`)}return T({...re(L,q),focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Ra(){if(D||n.mode!=="main")return;let M=c.tasks;D=!0;try{if(await li(r,M),A=null,n.mode!=="main")return;c=await qt(t,n.shell,o),n={mode:"main",shell:T(n.shell)},B()}catch(L){let O=L instanceof Error?L.message:"Background PR discovery failed.";O!==A&&(A=O,ps(r,{context:"background PR polling",message:O,details:L instanceof Error?L.stack??L.message:String(L)}))}finally{D=!1}}async function Pa(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:j}=await Y(async()=>{let q=await fe(r,L.selectedTaskId),Z=await Wi(r,L.selectedTaskId);return{taskBeforeClose:q,task:Z}});for(let q of O.ptyTabs)v.disposeSession(q.id);return await le(),T({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function Ca(M){let L=T(M);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await Ke(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Mt(r,L.selectedWorkspaceId);let j=await Ot(r,L.selectedWorkspaceId);return await le(),T({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function Xs(M){let L=M.ptyTabs.find(q=>q.kind==="agent")??null;if(L){let q={...M,selectedPtyTabId:L.id};return await Y(async()=>{let Z=await fe(r,M.id),de=Z.ptyTabs.find(Le=>Le.kind==="agent")??null;de&&await se(r,{...Z,selectedPtyTabId:de.id})}),q}let O=ma(M,"agent",void 0,s),j={...M,ptyTabs:[...M.ptyTabs,O],selectedPtyTabId:O.id};return await Y(async()=>{let q=await fe(r,M.id),Z=q.ptyTabs.find(de=>de.kind==="agent")??null;if(Z){await se(r,{...q,selectedPtyTabId:Z.id});return}await se(r,{...q,ptyTabs:[...q.ptyTabs,O],selectedPtyTabId:O.id})}),j}B=()=>{Ia();let M=ht(w.width,w.height),L=n.mode==="main"?na(M,ko(T(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?ea(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:U}):n.variant==="pause"?ta(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:U}):n.variant==="options"?Hs(M,{menuIndex:n.menuIndex,optionsMenuItems:Vs}):n.variant==="runners"?Hs(M,{menuIndex:Kt(n).menuIndex,optionsMenuItems:zs(s,Kt(n)),optionsMessage:fa(Kt(n)),optionsSubtitle:"Runners"}):n.variant==="error-log"?sa(M,{errorLogPath:n.errorLog?.path??r.errorLogFile,errorLogLines:n.errorLog?.lines??[]}):ra(M);V&&(w.moveTo(1,1),w.eraseDisplayBelow(),V=!1),w.noFormat(Bf(L)),w.hideCursor(!0)};function Ia(){let M=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";M!==G&&(G=M,w.grabInput(M==="terminal"?{mouse:"button"}:!0))}let xa=()=>{process.stdout.off("resize",tn),process.off("SIGCONT",rn),w.removeListener("key",Qs),w.removeListener("unknown",Js),w.removeListener("mouse",Zs),S&&(clearTimeout(S),S=null),I&&(clearTimeout(I),I=null),x&&(clearTimeout(x),x=null),N&&(clearTimeout(N),N=null),F&&(clearInterval(F),F=null),v.disposeAll(),w.grabInput(!1),w.hideCursor(!1),w.fullscreen(!1)},Or=M=>{xa(),m(M)},Ea=async()=>{if(n.mode!=="main"||g)return;let M=n.shell,L=M.taskPromptInput?.trim()??"";if(!M.selectedRepoId&&!M.selectedWorkspaceId){n={mode:"main",shell:T({...M,taskPromptError:"Select a workspace first."})},B();return}if(L.length===0){n={mode:"main",shell:T({...M,taskPromptError:"Task prompt cannot be empty."})},B();return}g=!0,n={mode:"main",shell:T({...M,actionMessage:`Creating ${M.selectedRunner} task in ${M.selectedWorkspaceId??M.selectedRepoId}...`})},B();let O=null;try{O=await Of(r,M.selectedRepoId,M.selectedWorkspaceId,L,M.selectedRunner),await le();let j=T({...n.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),q=await v.ensureSession(O.id,j.selectedPtyTabId??ka(O,"agent"),Dr(ht(w.width,w.height)));f=Ys(j.selectedPtyTabId),n={mode:"main",shell:Wt(j,q)},l(n.shell)}catch(j){j instanceof Lr&&(O=j.task);let q=C("create task",j,"Failed to create task.");O&&(await se(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:q}).catch(()=>{}),await le().catch(()=>{})),n={mode:"main",shell:Q(T({...n.shell,inputMode:"control",selectedTaskId:O?.id??n.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:n.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:q,actionMessage:null}),q)}}finally{g=!1,B()}},Aa=M=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(M==="ESCAPE"){n={mode:"main",shell:T({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},B();return}if(Qe(M)){Ea();return}if(M==="BACKSPACE"){n={mode:"main",shell:T({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},B();return}if(M==="CTRL_R"){n={mode:"main",shell:T({...L,selectedRunner:Rs(L.selectedRunner,o),taskPromptError:null})},B();return}co(M)&&(n={mode:"main",shell:T({...L,taskPromptInput:`${L.taskPromptInput}${M}`,taskPromptError:null})},B())}},Da=M=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(M==="ESCAPE"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,actionMessage:null})},B();return}if(M==="UP"||M==="k"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},B();return}if(M==="DOWN"||M==="j"){let O=Math.max(0,L.entries.length-1);n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(O,L.selectedIndex+1),error:null}})},B();return}if(M==="LEFT"||M==="h"){De(St.dirname(L.cwd)).catch(O=>{let j=C("open parent workspace directory",O,"Failed to open parent directory.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:j}}),j)},B()});return}if(M==="RIGHT"||M==="l"||Qe(M)){let O=L.entries[L.selectedIndex]??null;if(!O)return;if((M==="RIGHT"||M==="l")&&(O.kind==="directory"||O.kind==="repo")){De(O.path).catch(j=>{let q=C("open workspace directory",j,"Failed to open directory.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:q}}),q)},B()});return}Lt(r,O.path).then(async j=>{await le();let q=j.repos[0]??null;n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:q?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),B()}).catch(j=>{let q=C("add workspace",j,"Failed to add workspace.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:q}}),q)},B()})}}},Qs=M=>{let L=typeof M=="string"?M:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){Aa(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){Da(L);return}if(n.mode==="main"){let O=oo(n.shell,L,J(n.shell));if(O.exit){Or(0);return}if(O.detachTerminal){v.detach(),n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(n.shell.inputMode==="terminal"){if(O.changed){n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(f&&Qe(L)){f=!1;return}f&&(f=!1),u=Ff(L)?{key:L,at:Date.now()}:null;let j=Nf(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Br(j);return}v.writeKey(L);return}if(L==="CTRL_C"){Or(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},V=!0,B();return}if(O.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:T(O.state)},V=!0,B();return}if(O.beginTaskPrompt){n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(O.openWorkspaceBrowser){De(t).catch(j=>{let q=C("browse workspaces",j,"Failed to browse workspaces.");n={mode:"main",shell:Q(T({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:q}}),q)},B()});return}if(O.createPtyTab){va(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(j=>{Je(j)}).catch(j=>{let q=C("create PTY tab",j,"Failed to create tab.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.closePtyTab){Sa(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("close PTY tab",j,"Failed to close tab.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.refreshPullRequestChecks){Ta(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("refresh PR checks",j,"Failed to refresh PR checks.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.closeTask){Pa(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("close task",j,"Failed to close task.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.removeWorkspace){Ca(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("remove workspace",j,"Failed to remove workspace.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.attachTerminal){Je(O.state);return}if(O.refreshInspection){n={mode:"main",shell:T(O.state)},l(n.shell),B(),Re(n.shell).catch(j=>{let q=C("refresh inspection",j,"Failed to refresh inspection.");n={mode:"main",shell:Q(T({...n.shell,actionMessage:q}),q)},B()});return}O.changed&&(n={mode:"main",shell:T(O.state)},ve(n.shell).catch(()=>{}),l(n.shell),B());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:2,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:T(n.shell)},V=!0,B();return}if(n.variant==="options"){La(L);return}if(n.variant==="runners"){Oa(L);return}if(n.variant==="error-log"){if(L==="ESCAPE"||Qe(L)){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B()}return}if(n.optionsMessage){(L==="ESCAPE"||Qe(L))&&(n={...n,optionsMessage:null},B());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},B();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},B();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:T(n.shell)},V=!0,B());return}if(Qe(L)){if(n.menuIndex===0){let O=n.variant==="boot";n={mode:"main",shell:T({...n.shell,inputMode:"control"})},V=!0,B(),O?Fa.then(()=>{n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},B())}):H();return}if(n.menuIndex===1){let O=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}Or(0)}};function La(M){if(n.mode!=="overlay"||n.variant!=="options")return;let L=pa(n.menuIndex,M);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},B();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},V=!0,B());return}if(L.kind==="help"){let O=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="runners"){let O=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="error-log"){let O=n.parentVariant;Ma(O)}}}async function Ma(M){let L;try{L=await Ii(r)}catch(O){let j=C("open error log",O,"Failed to read Craig error log.");L={path:r.errorLogFile,lines:[`Unable to read error log: ${j}`],empty:!1}}n.mode==="overlay"&&(n={mode:"overlay",variant:"error-log",menuIndex:0,optionsMessage:null,shell:n.shell,errorLog:L,...M!==void 0?{parentVariant:M}:{}},V=!0,B())}function Oa(M){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ga(Kt(n),s,M,o);if(L.kind!=="noop"){if(L.kind==="back"){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},B();return}ye(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},B())}).catch(O=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=C("save runner option",O,"Failed to save runner option."),q=Q(T(n.shell),j);n={...n,shell:q,runnerOptions:{...Kt(n),message:j}},B()})}}let Js=M=>{let L=$f(M);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){v.detach(),f=!1,u=null,n={mode:"main",shell:T({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),B();return}let O=Wf(L);if(O!==0){Br(O);return}let j=jf(L);if(j){f=!1,u={key:j,at:Date.now()},v.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
178
|
+
`);if(d===-1)return;let w=p.slice(0,d);i(),o.end();try{r(JSON.parse(w))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function Ho(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await Sr(e))return;await Ns(50)}}function Xo(e){return new Promise((t,r)=>{let s=Uo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Bh(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function vr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
|
|
179
|
+
`)}catch{}}function Qo(e){try{return process.kill(e,0),!0}catch{return!1}}function Ns(e){return new Promise(t=>setTimeout(t,e))}function $h(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Fh=[" \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 Ws(){return[...Fh]}var Nh=["Start","Options","Exit"],Wh=["Resume","Options","Exit"],Pr=2,Cr=2,Ir=2,jh=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Hh=new RegExp("\x1B\\[(?:0)?m","g"),Uh=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),qh=/https?:\/\/[^\s<>"']+/g,js="\x1B[0m",ea="\x1B]8;;\x1B\\",re={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function ta(e,t={}){return Us(e,{subtitle:"crAIg is that you?",menuItems:Nh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}function ra(e,t={}){return Us(e,{subtitle:"Control mode is paused.",menuItems:Wh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}var Tr=[" 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."],Kh=["Help"];function Hs(e,t={}){return Us(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Kh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function sa(e,t={}){let r=t.color??!0,s=re.overlay,o=new Array(e.height).fill(de(" ".repeat(e.width),r,s)),p=Ws(),y=Math.max(1,Math.floor((e.height-p.length-2-Tr.length)/2));for(let w=0;w<p.length&&!(y+w>=e.height);w+=1)o[y+w]=de(ca(p[w]??"",e.width),r,re.overlayLogo);let i=Math.max(...Tr.map(w=>w.length)),c=Math.max(0,Math.floor((e.width-i)/2)),d=y+p.length+2;for(let w=0;w<Tr.length;w+=1){let a=d+w;if(a>=e.height)break;let b=Tr[w]??"";o[a]=de(Ve(" ".repeat(c)+b,e.width),r,s)}return o.join(`
|
|
180
|
+
`)}function na(e,t={}){let r=t.color??!0,s=re.overlay,o=new Array(e.height).fill(de(" ".repeat(e.width),r,s)),p="Error Log",y=t.errorLogPath??"",i=t.errorLogLines??[],c=Math.max(20,e.width-8),d=Math.max(0,Math.floor((e.width-c)/2)),w=[{text:p,tone:"selected"},{text:y,tone:"muted"},Te(),...i.length>0?i.map(l=>({text:l})):[{text:"No Craig errors have been logged.",tone:"muted"}],Te(),{text:"Esc returns to Options.",tone:"muted"}],a=Ht(w,e.height-2),b=Math.max(1,Math.floor((e.height-a.length)/2));for(let l=0;l<a.length;l+=1){let m=b+l;if(m>=e.height)break;let _=a[l]??Te(),n=`${" ".repeat(d)}${Er(_.text,c)}`,g=_.tone==="selected"?re.overlayMenuSelected:_.tone==="muted"?re.overlay:re.panelBg;o[m]=de(Ve(n,e.width),r,g)}return o.join(`
|
|
181
|
+
`)}function ia(e,t,r={}){let s=r.color??!0,o=$e.leftWidth,p=$e.rightWidth,y=$e.dividerWidth,i=r.centerOnly??!1,c=i?e.width:e.width-o-p-y*2,d=e.height-$e.topRailHeight-1,w=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent}`,a=de(Ve(w,e.width),s,re.rail),b=zh(t,o-Pr-Cr,d,s),l=Gh(t,c,d,s),m=Xh(t,p,d,s),_=t.inputMode==="terminal",n=[];for(let u=0;u<d;u+=1){if(i){n.push(Rr(l[u]??Te(),c,s,"center"));continue}let h=Rr(b[u]??Te(),o,s,"left"),k=de("\u2502",s,re.divider),S=Rr(l[u]??Te(),c,s,"center"),C=de("\u2502",s,re.divider),x=Rr(m[u]??Te(),p,s,"right");n.push(`${h}${k}${S}${C}${x}`)}let g=_||t.modalInput?re.panelBg:re.panelMuted,f=Vh(t.footerText,t.footerToast,e.width,s,g);return[a,...n,f].join(`
|
|
182
|
+
`)}function Vh(e,t,r,s,o){let p=` ${e}`;if(!t)return de(Ve(p,r),s,o);let y=`${t.tone==="error"?"\u2717":"\u2713"} ${t.message}`,i=ke(y),c=ke(p),d=Math.max(1,r-c-i-2),w=c+d+i+2>r?Er(p,Math.max(0,r-i-3)):p,a=Math.max(1,r-ke(w)-i-2),b=t.tone==="error"?mf(y,s,o):St(y,s,o),l=`${w}${" ".repeat(a)}${b} `;return de(Ve(l,r),s,o)}function Us(e,t){let r=new Array(e.height).fill(de(" ".repeat(e.width),t.color,re.overlay)),s=Ws(),o=Math.max(...t.menuItems.map(d=>d.length)),p=t.menuItems.map((d,w)=>`${w===t.menuIndex?">":" "} ${d.padEnd(o)}`),y=t.optionsMessage?["",t.optionsMessage]:[],i=[...s,"",t.subtitle,"",...p,...y],c=Math.max(1,Math.floor((e.height-i.length)/2));for(let d=0;d<i.length;d+=1){let w=ca(i[d]??"",e.width);if(d<s.length){r[c+d]=de(w,t.color,re.overlayLogo);continue}if(d===s.length+1){r[c+d]=de(w,t.color,re.overlaySubtitle);continue}let a=d-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?re.overlayMenuSelected:re.overlay;r[c+d]=de(w,t.color,l)}if(t.versionText){let d=t.updateText?" (update available)":"",w=`${t.versionText}${d} `,a=" ".repeat(Math.max(0,e.width-ke(w)));r[e.height-1]=de(`${a}${qs(w,t.color,re.overlay)}`,t.color,re.overlay)}return r.join(`
|
|
183
|
+
`)}function zh(e,t,r,s){let o=Zh(e.runners),p=1,y=e.leftTree.map(c=>Jh(c,t,s));return[...Ht(y,r-p),o]}function Gh(e,t,r,s){let o=t-2,p=e.tabs.find(h=>h.active)?.label??"AGENT",y=e.inputMode==="terminal"?0:ff(e.tabs),i=e.inputMode==="terminal"?o:p.length+1,c="\u2500".repeat(Math.max(0,i)),d=`${" ".repeat(y)}${e.inputMode==="terminal"?St(c,s,re.panelBg):xr(c,s,re.panelMuted)}`,w=[`${xr(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),a=e.tabs.find(h=>h.active)?.id??"agent",b=e.centerHeader.tabLabel==="BROWSER"||!uo(a)?e.centerTranscript.map(h=>({...h})):Yh(e),l=ef(e.tabs,s,e.focusedRegion==="center"),m=" engaged ",_=m.length+2,n=e.inputMode==="terminal"?St(`${m}\u25CF `,s,re.panelBg):"",g=e.inputMode==="terminal"?" ".repeat(Math.max(0,o-ke(l)-_)):"",u=[{text:e.inputMode==="terminal"?`${l}${g}${n}`:l},{text:d,tone:"muted"},{text:w},Te(),...b];return Ht(u,r)}function Yh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},Te(),{text:e.terminal.error},Te(),{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:ua(s.segments),segments:s.segments,fullBleed:!0}))}function Xh(e,t,r,s){let o=e.rightInspection?Qh(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):Ht([{text:"CONTEXT"},Te(),...e.rightContext.map(p=>tf(p,s)),...e.actionMessage?[Te(),{text:e.actionMessage}]:[]],r);return Ht(o,r)}function Qh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),y=p===-1?0:gf(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Jo(i)),...s.slice(y,y+o).map(i=>Jo(i))]}function Jo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),y=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,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 Jh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",y=e.accentDot?` ${St("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+ke(m.text),0):0,c=t-ke(p)-ke(o)-i,d=e.selected?e.text:e.focused?St(e.text,r,re.panelBg):e.panelHeader?xr(e.text,r,re.panelMuted):e.text,w=Ve(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${w}${p}${y}`},...e.prBadge];return{text:`${w}${p}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${w}${p}${y}`,tone:a}}function Zh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),y=p>1?` (${p})`:"";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:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function ef(e,t,r){return e.map(s=>s.active?r?St(s.label,t,re.panelBg):xr(s.label,t,re.panelBg):qs(s.label,t,re.panelBg)).join(" ")}function tf(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?qs(e.value,t,re.panelBg):e.value}`}}function Rr(e,t,r,s){let o=rf(s,e.tone??"default"),p=sf(e,r,o);if(s==="left"){if(e.fullBleed)return de(Ve(p,t),r,o);let i=t-Pr-Cr;if(e.rightAlign){let d=ke(p),w=Math.max(0,i-d),a=`${" ".repeat(Pr)}${" ".repeat(w)}${p}${" ".repeat(Cr)}`;return de(a,r,o)}let c=`${" ".repeat(Pr)}${Ve(p,i)}${" ".repeat(Cr)}`;return de(c,r,o)}return s==="center"&&e.fullBleed?nf(e,t,r,o):de(Ve(` ${p}`,t),r,o)}function rf(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Ht(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Te());return r}function Te(){return{text:""}}function sf(e,t,r){return e.segments?e.segments.map(s=>oa(s,t,r)).join(""):e.text}function nf(e,t,r,s){let o=" ".repeat(Ir),p=Math.max(0,t-Ir*2);if(!e.segments)return de(`${o}${Ve(e.text,p)}${o}`,r,s);let y=cf(e.segments,p),i=`${o}${y.map(c=>oa(c,r,s)).join("")}${o}`;return de(i,r,s)}function oa(e,t,r){let s=e.href?`${aa(e.href)}${e.text}${ea}`:of(e.text);return!t||!e.style?s:`${Ut(uf(e.style,r))}${hf(e.style)}${s}${js}${Ut(r)}`}function of(e){return e.replace(qh,t=>{let[r,s]=af(t);return`${aa(r)}${r}${ea}${s}`})}function af(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function aa(e){return`\x1B]8;;${e}\x1B\\`}function cf(e,t){let r=lf(e,t);return df(r,t)}function lf(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=ke(o.text);if(p<=s){r.push(o),s-=p;continue}let y=Er(o.text,s);y.length>0&&r.push({...o,text:y}),s=0}return r}function df(e,t){let r=ke(ua(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 uf(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,y=s??t.bg;return p&&(o.fg=p),y&&(o.bg=y),o}function hf(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 ff(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function ca(e,t){let r=Math.max(0,t-ke(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function Ve(e,t){let r=ke(e);return r>=t?pf(e,t):e+" ".repeat(t-r)}function pf(e,t){if(t<=0)return"";if(ke(e)<=t)return e;let r=da(e);return Er(r,Math.max(0,t-1))+"\u2026"}function ke(e){let t=0;for(let r of Array.from(da(e)))t+=la(r);return t}function Er(e,t){let r="",s=0;for(let o of Array.from(e)){let p=la(o);if(s+p>t)break;r+=o,s+=p}return r}function la(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 gf(e,t,r){return Math.min(Math.max(e,t),r)}function da(e){return e.replace(Uh,"").replace(jh,"")}function ua(e){return e.map(t=>t.text).join("")}function de(e,t,r){if(!t)return e;let s=Ut(r),o=e.replace(Hh,`${js}${s}`);return`${s}${o}${js}`}function Ut(e){let t=[];return e.fg&&t.push(`38;2;${Zo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Zo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Zo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function St(e,t,r){return Ar(e,t,re.success.fg,r)}function mf(e,t,r){return Ar(e,t,re.error.fg,r)}function xr(e,t,r){return Ar(e,t,re.accent.fg,r)}function qs(e,t,r){return Ar(e,t,re.mutedfg.fg,r)}function Ar(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Ut(o)}${e}${Ut(s)}`}var _f="https://registry.npmjs.org/craig-cli/latest";var Dr=null;function Ks(){try{return"0.6.4"}catch{return"unknown"}}async function ha(){let e=Ks(),t=Date.now();if(Dr&&t-Dr.cachedAt<36e5)return Dr.result;let r=null;try{let o=await fetch(_f,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&wf(r,e)};return Dr={result:s,cachedAt:t},s}function wf(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[y=0,i=0,c=0]=r(t);return s!==y?s>y:o!==i?o>i:p>c}De();var Vs=["Runners","Error Log","Help"];function zs(e,t){return ue.map(r=>{let s=Se(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),y=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${y}`})}function pa(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 ga(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Vs.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Gs(t)?e===0?{kind:"runners"}:e===1?{kind:"error-log"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ma(e,t,r,s){if(e.pathEdit)return bf({...e,pathEdit:e.pathEdit},t,r);let o=zs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=ue[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!Gs(r))return{kind:"noop",state:e};let p=ue[e.menuIndex]??"codex",y=t.runners?.[p]?.enabled!==!1;return y&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:yf(t,p,!y),state:{...e,message:`${Se(p).displayName} ${y?"disabled":"enabled"}.`}}}function bf(e,t,r){if(r==="ESCAPE")return{kind:"render",state:fa({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Gs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:kf(t,s,o.length>0?o:null),state:fa({...e,message:o.length>0?`${Se(s).displayName} executable saved.`:`${Se(s).displayName} executable reset to default.`})}}return vf(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function yf(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function kf(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function fa(e){let t={...e};return delete t.pathEdit,t}function Gs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
184
|
+
`}function vf(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Pf=Sf(import.meta.url),Cf=Pf("terminal-kit"),If=Cf.terminal;async function ba(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ge(t);await kt(t);let s=await je(r),o=gt(s),p=e.uiStateFile?await Le({uiStateFile:e.uiStateFile}):null,y=Promise.resolve(),i=Promise.resolve(),c=await qt(t,void 0,o),d=_r(io(p,s),c);c=await qt(t,d,o);let w=()=>{},a={workspaceRoot:t,onUpdate:()=>w(),resolveSessionSpec:(m,_)=>Df(c,_,t)},b=e.ptyRuntime??await qo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=oo(p,m);let _=p;y=y.then(()=>Ie({uiStateFile:e.uiStateFile},_),()=>Ie({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(m=>{let _=e.terminal??If,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:_r(d,c)},g=!1,f=!1,u=null,h=0,k=0,S=null,C=null,x=null,N=null,F=null,D=!1,A=null,E=`Craig v${Ks()}`,q=null,G=0,z=!0,Y=null,B=()=>{},v=b;w=()=>{n.mode==="main"&&(n={mode:"main",shell:P(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&B()},50)))};function P(O){return ft(O,v.getViewState(R(O)))}function R(O){let L=$(O);return L?L.ptyTabs.some(M=>M.id===O.activeTab)?O.activeTab:O.activeTab==="agent"||O.activeTab==="terminal"?L.ptyTabs.find(M=>M.kind===O.activeTab)?.id??O.selectedPtyTabId:O.selectedPtyTabId:O.selectedPtyTabId}function T(O){return P(xf(O,c))}function $(O){return c.tasks.find(L=>L.id===O.selectedTaskId)??null}async function W(){let O=c.tasks.flatMap(L=>L.ptyTabs.map(M=>M.id));await v.pruneStale?.(O),await v.hydrateSessions?.(O)}function H(){W().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},B())})}async function V(O){let L=T(O),M=$(L),j=R(L);if(!M||!j||!M.ptyTabs.some(le=>le.id===j))return L;let U=v.getViewState(j);if(U.status!=="idle"||U.rows.length>0||U.error)return ft(L,U);let Z=await v.ensureSession(M.id,j,Vt(st(_.width,_.height)));return ft({...L,inputMode:"control"},Z)}function te(O,L){return N&&(clearTimeout(N),N=null),L?(N=setTimeout(()=>{N=null,!(n.mode!=="main"||n.shell.footerToast!==L)&&(n={mode:"main",shell:T({...n.shell,footerToast:null})},B())},3e3),{...O,footerToast:L}):{...O,footerToast:null}}function I(O,L){return te(O,L?{tone:"success",message:L}:null)}function X(O,L,M){let j=L instanceof Error?L.message:M,U=L instanceof Error?L.stack??L.message:String(L);return ps(r,{context:O,message:j,details:U}),j}function K(O,L){return te(O,{tone:"error",message:L})}function J(O){let L=i.then(O,O);return i=L.then(()=>{},()=>{}),L}function _e(O){let L=$(O),M=c.inspection,j=M&&M.taskId===L?.id?M:null,U=Ef(j?.fileRows??[],O.collapsedFileTreePaths);return{leftItemIds:Af(c),centerTabIds:fo(L,O),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:U.map(Z=>Z.path),fileTreeFileIds:U.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:U.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,reviewRowCount:Io(O,L),pageRows:Math.max(5,st(_.width,_.height).height-$e.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function ve(O){await an(r,O),s=O,o=gt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:nt(s)})}:n={...n,shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:nt(s)})}}async function Je(O){let L=O.selectedTaskId;L&&await J(async()=>{let M=await fe(r,L);!M.ptyTabs.some(j=>j.id===O.activeTab)||M.selectedPtyTabId===O.activeTab||await se(r,{...M,selectedPtyTabId:O.activeTab})})}async function ce(){let O=(n.mode==="main",n.shell);c=await qt(t,O,o),n.mode==="main"?n={mode:"main",shell:T(n.shell)}:n={...n,shell:T(n.shell)}}async function Fe(O){let L=++G,M=ya(c.tasks,O),j=c.inspection,U;if(M&&j?.taskId===M.id){let Z={selectedFilePath:O.selectedFilePath,selectedDiffPath:O.selectedDiffPath},le=await Ai(M,j,Z);if(L!==G)return;U={...c,inspection:le}}else if(U=await qt(t,O,o),L!==G)return;c=U,n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},l(n.shell),B())}async function ze(O){let L=await qf(O);n.mode==="main"&&(n={mode:"main",shell:T({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},B())}async function Xs(O){try{let L=T(O),M=$(L),j=L.selectedPtyTabId;if(M&&L.focusedRegion==="tasks"){let le=M.ptyTabs.find(Ae=>Ae.kind==="agent")??null;le?j=le.id:(M=await Qs(M),await ce(),j=M.selectedPtyTabId)}M&&!j&&(M=await Qs(M),await ce(),j=M.selectedPtyTabId);let U=T({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!U.selectedTaskId||!j){n={mode:"main",shell:U},B();return}n={mode:"main",shell:ft({...U,inputMode:"terminal"},v.getViewState(j))},l(n.shell);let Z=await v.ensureSession(U.selectedTaskId,j,Vt(st(_.width,_.height)));f=Ys(j),u=null,n={mode:"main",shell:ft({...U,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let M=X("attach PTY",L,"Failed to start PTY.");O.selectedTaskId&&O.selectedPtyTabId&&Ys(O.selectedPtyTabId)&&(await va(O.selectedTaskId,M).catch(()=>{}),await ce().catch(()=>{})),n={mode:"main",shell:K(co(T(O),M),M)},l(n.shell)}B()}async function va(O,L){await J(async()=>{let M=await fe(r,O);await se(r,{...M,status:M.status==="running"?"draft":M.status,runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function Sa(O,L,M){let j=T(O);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let U=await J(async()=>{let Z=await fe(r,j.selectedTaskId),le=L??Of(Z,j.activeTab,j.preferredPtyTabKind),Ae=_a(Z,le,M??void 0,s),Rt={...Z,ptyTabs:[...Z.ptyTabs,Ae],selectedPtyTabId:Ae.id};return await se(r,Rt),Rt});return await ce(),T({...j,activeTab:U.selectedPtyTabId??j.activeTab,selectedPtyTabId:U.selectedPtyTabId,preferredPtyTabKind:U.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${U.ptyTabs.at(-1)?.title??"tab"}`})}async function Ta(O){let L=T(O);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:M,nextSelectedTab:j}=await J(async()=>{let U=await fe(r,L.selectedTaskId),Z=U.ptyTabs.findIndex($r=>$r.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let le=U.ptyTabs[Z],Ae=U.ptyTabs.filter($r=>$r.id!==le.id),Rt=Ae[Math.min(Z,Ae.length-1)]??Ae[Z-1]??null;return await se(r,{...U,ptyTabs:Ae,selectedPtyTabId:Rt?.id??null}),{closedTab:le,nextSelectedTab:Rt}});return v.disposeSession(M.id),await ce(),T({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${M.title}`})}async function Ra(O){let L=T(O);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let M=$(L),j=null,U=null;if(M?.type==="project"&&M.repoTargets?.length){let Z=await lr(r,L.selectedTaskId);await ce();let le=Z.synced+Z.discovered+Z.notFound;U=`Refreshed ${Z.synced}/${le} targets`}else{let{disposition:Z,task:le}=await ns(r,L.selectedTaskId);await ce(),j=Z==="not_found"?`No PR found for ${le.branch}`:null,Z!=="not_found"&&(U=`Refreshed checks: ${ge(le)?.requiredChecks.length??0} reported`)}return T({...I(L,U),focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Pa(){if(D||n.mode!=="main")return;let O=c.tasks;D=!0;try{if(await di(r,O),A=null,n.mode!=="main")return;c=await qt(t,n.shell,o),n={mode:"main",shell:T(n.shell)},B()}catch(L){let M=L instanceof Error?L.message:"Background PR discovery failed.";M!==A&&(A=M,ps(r,{context:"background PR polling",message:M,details:L instanceof Error?L.stack??L.message:String(L)}))}finally{D=!1}}async function Ca(O){let L=T(O);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:M,task:j}=await J(async()=>{let U=await fe(r,L.selectedTaskId),Z=await ji(r,L.selectedTaskId);return{taskBeforeClose:U,task:Z}});for(let U of M.ptyTabs)v.disposeSession(U.id);return await ce(),T({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function Ia(O){let L=T(O);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await qe(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Ot(r,L.selectedWorkspaceId);let j=await Bt(r,L.selectedWorkspaceId);return await ce(),T({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function Qs(O){let L=O.ptyTabs.find(U=>U.kind==="agent")??null;if(L){let U={...O,selectedPtyTabId:L.id};return await J(async()=>{let Z=await fe(r,O.id),le=Z.ptyTabs.find(Ae=>Ae.kind==="agent")??null;le&&await se(r,{...Z,selectedPtyTabId:le.id})}),U}let M=_a(O,"agent",void 0,s),j={...O,ptyTabs:[...O.ptyTabs,M],selectedPtyTabId:M.id};return await J(async()=>{let U=await fe(r,O.id),Z=U.ptyTabs.find(le=>le.kind==="agent")??null;if(Z){await se(r,{...U,selectedPtyTabId:Z.id});return}await se(r,{...U,ptyTabs:[...U.ptyTabs,M],selectedPtyTabId:M.id})}),j}B=()=>{xa();let O=st(_.width,_.height),L=n.mode==="main"?ia(O,ko(T(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?ta(O,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:q}):n.variant==="pause"?ra(O,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:q}):n.variant==="options"?Hs(O,{menuIndex:n.menuIndex,optionsMenuItems:Vs}):n.variant==="runners"?Hs(O,{menuIndex:Kt(n).menuIndex,optionsMenuItems:zs(s,Kt(n)),optionsMessage:pa(Kt(n)),optionsSubtitle:"Runners"}):n.variant==="error-log"?na(O,{errorLogPath:n.errorLog?.path??r.errorLogFile,errorLogLines:n.errorLog?.lines??[]}):sa(O);z&&(_.moveTo(1,1),_.eraseDisplayBelow(),z=!1),_.noFormat($f(L)),_.hideCursor(!0)};function xa(){let O=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";O!==Y&&(Y=O,_.grabInput(O==="terminal"?{mouse:"button"}:!0))}let Ea=()=>{process.stdout.off("resize",rn),process.off("SIGCONT",sn),_.removeListener("key",Js),_.removeListener("unknown",Zs),_.removeListener("mouse",en),S&&(clearTimeout(S),S=null),C&&(clearTimeout(C),C=null),x&&(clearTimeout(x),x=null),N&&(clearTimeout(N),N=null),F&&(clearInterval(F),F=null),v.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Or=O=>{Ea(),m(O)},Aa=async()=>{if(n.mode!=="main"||g)return;let O=n.shell,L=O.taskPromptInput?.trim()??"";if(!O.selectedRepoId&&!O.selectedWorkspaceId){n={mode:"main",shell:T({...O,taskPromptError:"Select a workspace first."})},B();return}if(L.length===0){n={mode:"main",shell:T({...O,taskPromptError:"Task prompt cannot be empty."})},B();return}g=!0,n={mode:"main",shell:T({...O,actionMessage:`Creating ${O.selectedRunner} task in ${O.selectedWorkspaceId??O.selectedRepoId}...`})},B();let M=null;try{M=await Bf(r,O.selectedRepoId,O.selectedWorkspaceId,L,O.selectedRunner),await ce();let j=T({...n.shell,selectedRepoId:M.repoId,selectedWorkspaceId:M.workspaceId,selectedTaskId:M.id,selectedPtyTabId:M.selectedPtyTabId,selectedLeftItemId:`task:${M.id}`,activeTab:M.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),U=await v.ensureSession(M.id,j.selectedPtyTabId??ka(M,"agent"),Vt(st(_.width,_.height)));f=Ys(j.selectedPtyTabId),n={mode:"main",shell:ft(j,U)},l(n.shell)}catch(j){j instanceof Lr&&(M=j.task);let U=X("create task",j,"Failed to create task.");M&&(await se(r,{...M,status:"draft",runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:U}).catch(()=>{}),await ce().catch(()=>{})),n={mode:"main",shell:K(T({...n.shell,inputMode:"control",selectedTaskId:M?.id??n.shell.selectedTaskId,selectedPtyTabId:M?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:M?`task:${M.id}`:n.shell.selectedLeftItemId,activeTab:M?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:M?null:"",taskPromptError:U,actionMessage:null}),U)}}finally{g=!1,B()}},Da=O=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(O==="ESCAPE"){n={mode:"main",shell:T({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},B();return}if(Qe(O)){Aa();return}if(O==="BACKSPACE"){n={mode:"main",shell:T({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},B();return}if(O==="CTRL_R"){n={mode:"main",shell:T({...L,selectedRunner:Rs(L.selectedRunner,o),taskPromptError:null})},B();return}lo(O)&&(n={mode:"main",shell:T({...L,taskPromptInput:`${L.taskPromptInput}${O}`,taskPromptError:null})},B())}},La=O=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(O==="ESCAPE"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,actionMessage:null})},B();return}if(O==="UP"||O==="k"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},B();return}if(O==="DOWN"||O==="j"){let M=Math.max(0,L.entries.length-1);n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(M,L.selectedIndex+1),error:null}})},B();return}if(O==="LEFT"||O==="h"){ze(Tt.dirname(L.cwd)).catch(M=>{let j=X("open parent workspace directory",M,"Failed to open parent directory.");n={mode:"main",shell:K(T({...n.shell,workspaceBrowser:{...L,error:j}}),j)},B()});return}if(O==="RIGHT"||O==="l"||Qe(O)){let M=L.entries[L.selectedIndex]??null;if(!M)return;if((O==="RIGHT"||O==="l")&&(M.kind==="directory"||M.kind==="repo")){ze(M.path).catch(j=>{let U=X("open workspace directory",j,"Failed to open directory.");n={mode:"main",shell:K(T({...n.shell,workspaceBrowser:{...L,error:U}}),U)},B()});return}Mt(r,M.path).then(async j=>{await ce();let U=j.repos[0]??null;n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:U?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),B()}).catch(j=>{let U=X("add workspace",j,"Failed to add workspace.");n={mode:"main",shell:K(T({...n.shell,workspaceBrowser:{...L,error:U}}),U)},B()})}}},Js=O=>{let L=typeof O=="string"?O:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){Da(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){La(L);return}if(n.mode==="main"){let M=ao(n.shell,L,_e(n.shell));if(M.exit){Or(0);return}if(M.detachTerminal){v.detach(),n={mode:"main",shell:T(M.state)},l(n.shell),B();return}if(n.shell.inputMode==="terminal"){if(M.changed){n={mode:"main",shell:T(M.state)},l(n.shell),B();return}if(f&&Qe(L)){f=!1;return}f&&(f=!1),u=Nf(L)?{key:L,at:Date.now()}:null;let j=Wf(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Br(j);return}v.writeKey(L);return}if(L==="CTRL_C"){Or(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},z=!0,B();return}if(M.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:T(M.state)},z=!0,B();return}if(M.beginTaskPrompt){n={mode:"main",shell:T(M.state)},l(n.shell),B();return}if(M.openWorkspaceBrowser){ze(t).catch(j=>{let U=X("browse workspaces",j,"Failed to browse workspaces.");n={mode:"main",shell:K(T({...M.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:U}}),U)},B()});return}if(M.createPtyTab){Sa(M.state,M.createPtyTabKind,M.createPtyTabRunner).then(j=>{Xs(j)}).catch(j=>{let U=X("create PTY tab",j,"Failed to create tab.");n={mode:"main",shell:K(T({...M.state,actionMessage:U}),U)},B()});return}if(M.closePtyTab){Ta(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let U=X("close PTY tab",j,"Failed to close tab.");n={mode:"main",shell:K(T({...M.state,actionMessage:U}),U)},B()});return}if(M.refreshPullRequestChecks){Ra(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let U=X("refresh PR checks",j,"Failed to refresh PR checks.");n={mode:"main",shell:K(T({...M.state,actionMessage:U}),U)},B()});return}if(M.closeTask){Ca(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let U=X("close task",j,"Failed to close task.");n={mode:"main",shell:K(T({...M.state,actionMessage:U}),U)},B()});return}if(M.removeWorkspace){Ia(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let U=X("remove workspace",j,"Failed to remove workspace.");n={mode:"main",shell:K(T({...M.state,actionMessage:U}),U)},B()});return}if(M.attachTerminal){Xs(M.state);return}if(M.refreshInspection){n={mode:"main",shell:T(M.state)},l(n.shell),B(),Fe(n.shell).catch(j=>{let U=X("refresh inspection",j,"Failed to refresh inspection.");n={mode:"main",shell:K(T({...n.shell,actionMessage:U}),U)},B()});return}M.changed&&(n={mode:"main",shell:T(M.state)},Je(n.shell).catch(()=>{}),l(n.shell),B());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:2,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:T(n.shell)},z=!0,B();return}if(n.variant==="options"){Ma(L);return}if(n.variant==="runners"){Ba(L);return}if(n.variant==="error-log"){if(L==="ESCAPE"||Qe(L)){let M=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},z=!0,B()}return}if(n.optionsMessage){(L==="ESCAPE"||Qe(L))&&(n={...n,optionsMessage:null},B());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},B();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},B();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:T(n.shell)},z=!0,B());return}if(Qe(L)){if(n.menuIndex===0){let M=n.variant==="boot";n={mode:"main",shell:T({...n.shell,inputMode:"control"})},z=!0,B(),M?Na.then(()=>{if(n.mode!=="main")return;let j=n.shell;V(j).then(U=>{n.mode!=="main"||n.shell!==j||(n={mode:"main",shell:U},l(n.shell),B())}).catch(U=>{if(n.mode!=="main"||n.shell!==j)return;let Z=X("warm selected PTY",U,"Failed to start selected PTY.");n={mode:"main",shell:K(T(n.shell),Z)},l(n.shell),B()})}):H();return}if(n.menuIndex===1){let M=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},z=!0,B();return}Or(0)}};function Ma(O){if(n.mode!=="overlay"||n.variant!=="options")return;let L=ga(n.menuIndex,O);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},B();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},z=!0,B());return}if(L.kind==="help"){let M=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...M!==void 0?{parentVariant:M}:{}},z=!0,B();return}if(L.kind==="runners"){let M=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},z=!0,B();return}if(L.kind==="error-log"){let M=n.parentVariant;Oa(M)}}}async function Oa(O){let L;try{L=await xi(r)}catch(M){let j=X("open error log",M,"Failed to read Craig error log.");L={path:r.errorLogFile,lines:[`Unable to read error log: ${j}`],empty:!1}}n.mode==="overlay"&&(n={mode:"overlay",variant:"error-log",menuIndex:0,optionsMessage:null,shell:n.shell,errorLog:L,...O!==void 0?{parentVariant:O}:{}},z=!0,B())}function Ba(O){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ma(Kt(n),s,O,o);if(L.kind!=="noop"){if(L.kind==="back"){let M=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},z=!0,B();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},B();return}ve(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},B())}).catch(M=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=X("save runner option",M,"Failed to save runner option."),U=K(T(n.shell),j);n={...n,shell:U,runnerOptions:{...Kt(n),message:j}},B()})}}let Zs=O=>{let L=Ff(O);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){v.detach(),f=!1,u=null,n={mode:"main",shell:T({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),B();return}let M=jf(L);if(M!==0){Br(M);return}let j=Hf(L);if(j){f=!1,u={key:j,at:Date.now()},v.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
185
185
|
`&&L!==`\r
|
|
186
|
-
`&&(f=!1),
|
|
187
|
-
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function
|
|
186
|
+
`&&(f=!1),Uf(f,u,L)){f=!1;return}v.write(L)},en=O=>{if(n.mode!=="main")return;if(n.shell.inputMode==="control"){Fa(wa(O));return}let L=wa(O);L!==0&&Br(L)};function Br(O){h+=O,!S&&(S=setTimeout(()=>{S=null;let L=h;h=0,L!==0&&($a(L),B())},16))}function $a(O){v.scrollViewport(O),n={mode:"main",shell:P(n.shell)}}function tn(){z=!0,_.fullscreen(!0)}function Fa(O){O!==0&&(k+=O,!C&&(C=setTimeout(()=>{C=null;let L=k;if(k=0,L===0||n.mode!=="main"||n.shell.inputMode!=="control")return;let M=rt(n.shell,L,_e(n.shell));if(M.changed){if(M.refreshInspection){n={mode:"main",shell:T(M.state)},l(n.shell),B(),Fe(n.shell).catch(j=>{let U=X("refresh inspection",j,"Failed to refresh inspection.");n={mode:"main",shell:K(T({...n.shell,actionMessage:U}),U)},B()});return}n={mode:"main",shell:T(M.state)},l(n.shell),B()}},16)))}let rn=()=>{tn(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(v.resize(Vt(st(_.width,_.height))),n={mode:"main",shell:P(n.shell)}),B()},sn=()=>{tn(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(v.resize(Vt(st(_.width,_.height))),n={mode:"main",shell:P(n.shell)}),B()};process.stdout.on("resize",rn),process.on("SIGCONT",sn),_.grabInput(!0),Y="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Js),_.on("unknown",Zs),_.on("mouse",en),F=setInterval(()=>{Pa()},(s.github?.watchIntervalSeconds??5)*1e3),ha().then(O=>{O.updateAvailable&&O.latest&&(q=`Update available: v${O.latest}`,B())});let Na=W().catch(()=>{});B()})}async function qt(e,t,r){let s=Ge(e),[o,p,y]=await Promise.all([dt(s),Oe(s),qe(s)]),i=ya(y.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},d=i?await Di(i,c):null;return{workspaceRoot:e,workspaces:p.filter(w=>w.status==="active"),repos:o,tasks:y.tasks,inspection:d,...r?{enabledRunnerIds:r}:{}}}function ya(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function xf(e,t){return _r(e,t)}function Ef(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Af(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 Df(e,t,r){let s=e.tasks.find(i=>i.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(i=>i.id===t)??null,p=s?.worktreePath??r,y=o?.kind==="agent"?Mf(o):[];return s?.type==="project"?{cwd:p,command:y,env:{GIT_CEILING_DIRECTORIES:Lf(process.env.GIT_CEILING_DIRECTORIES,p)}}:{cwd:p,command:y}}function Lf(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 Mf(e){return e.command.length>0?e.command:["codex"]}function Kt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Of(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function _a(e,t,r,s={}){let o=r??e.runner,p=Se(o),y=t==="agent"?p.defaultAgentTitle:"Terminal",i=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),d=1,w=i;for(;c.has(w);)d+=1,w=`${i}-${d}`;let a=new Date().toISOString(),b=r&&r!==e.runner?r:void 0;return{id:w,kind:t,...b?{runner:b}:{},title:d===1?y:`${y} ${d}`,command:t==="agent"?we(o,void 0,s):[],createdAt:a,updatedAt:a}}async function Bf(e,t,r,s,o){let p=await je(e);zt(o,p);let y=r?await sr(e,r,s,{runner:o,config:p}):await Et(e,t??"",s,{runner:o,config:p});try{let d=ct();await ee(lt(Nr(o,p).executable,{cwd:y.repoRoot,env:d}),["--help"],{cwd:y.repoRoot,env:d})}catch(d){let w=d instanceof Error?d.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:w};throw await se(e,a),new Lr(w,a)}let i=ka(y.task,"agent"),c={...y.task,status:"running",selectedPtyTabId:i,runnerSession:{...y.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await se(e,c),await Ie({uiStateFile:e.uiStateFile},{...await Le({uiStateFile:e.uiStateFile})??Ue(),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 Lr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function ka(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 Vt(e){return{columns:Math.max(20,e.width-$e.leftWidth-$e.rightWidth-$e.dividerWidth-Ir*2),rows:Math.max(5,e.height-$e.topRailHeight-5)}}function $f(e){return e.split(`
|
|
187
|
+
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function Ff(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Nf(e){return e.length===1||Qe(e)||e==="BACKSPACE"||e==="TAB"}function Ys(e){return typeof e=="string"&&new RegExp(`:(?:agent|${ue.join("|")})(?:-\\d+)?$`).test(e)}function Wf(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 wa(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function jf(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 Hf(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function Uf(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
|
|
188
188
|
`||r===`\r
|
|
189
|
-
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function
|
|
189
|
+
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function qf(e){let t=await Tf(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 Kf(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 Kf(e){let t=Tt.join(e,".git");return await Rf(t).catch(()=>null)!==null}function Mr(){return process.cwd()}async function Vf(){try{if(process.argv[2]==="__craig-daemon"){let i=process.argv[3]??Mr(),c=Ge(i);return await kt(i),await Ko(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let i=process.argv[3]??Mr(),c=Ge(i);return await kt(i),await Vo(c),0}let e=on(process.argv.slice(2)),t=Mr(),r=Ge(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await ba({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let p=await Ci(e.command,o),y=Ii(p);return y.length>0&&process.stdout.write(`${y}
|
|
190
190
|
`),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
|
|
191
|
-
`),1}}var
|
|
191
|
+
`),1}}var zf=await Vf();process.exit(zf);
|