craig-cli 0.5.0 → 0.5.1
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 +47 -47
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
3
|
-
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await Da(s,e)}catch(p){throw await o.close().catch(()=>{}),await La(s,{force:!0}).catch(()=>{}),p}}var We=$e(()=>{"use strict"});import{readFile as Wa}from"node:fs/promises";async function Se(e){let t=await Wa(e.indexFile,"utf8"),r=JSON.parse(t);return Nr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await de(e.indexFile,r)}function Nr(e,t,r){if(!ja(e))throw new Error(`Craig index at ${r} is invalid. Remove or repair the file before rerunning Craig.`);if(e.workspaceRoot!==t)throw new Error(`Craig index at ${r} belongs to ${e.workspaceRoot}, not ${t}. Remove or repair the file before rerunning Craig.`);return e}function ja(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=$e(()=>{"use strict";We()});import{readFile as Ha}from"node:fs/promises";async function ue(e,t){let r=await Ha(Wr(e,t),"utf8"),s=JSON.parse(r);return Ua(s,Wr(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await de(Wr(e,t.id),r)}async function jr(e,t){let r=await Se(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function Wr(e,t){return`${e.tasksDir}/${t}.json`}function Ua(e,t){let r=qa(e);if(!za(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function qa(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Hr(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:Xa(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:Va(t.repoTargets),runnerSession:t.runnerSession??Ka(t),checks:rc(t),lastCommit:t.lastCommit??null,prs:sc(t),artifacts:ic(t),cleanup:oc(t)}}function Ka(e){if(typeof e.title!="string")return null;let t=Hr(e.runner);return{command:me(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function za(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"&&pt(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"&&rn(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||Ga(t.repoTargets))&&Ja(t.runnerSession)&&Qa(t.prompt)&&sn(t.checks)&&nn(t.lastCommit)&&ec(t.prs)&&tc(t.artifacts)&&an(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Va(e){if(Array.isArray(e))return e.filter(tn)}function Ga(e){return Array.isArray(e)&&e.every(tn)}function tn(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)&&sn(t.checks)&&nn(t.lastCommit)&&on(t.pullRequest)&&an(t.cleanup)}function Xa(e){if(rn(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 Ya(e.id,e.title,t,Hr(e.runner))}function Ya(e,t,r,s){let o=ke(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Hr(e){return e&&pt(e)?e:"codex"}function rn(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 Ja(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 Qa(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function sn(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 nn(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function on(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&Za(e.requiredChecks)}function Za(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 ec(e){return Array.isArray(e)&&e.every(on)}function tc(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 an(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 rc(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 sc(e){if(Array.isArray(e.prs))return e.prs.map(nc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:cn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:ln(t.requiredChecks),createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function nc(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:cn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:ln(t.requiredChecks),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function cn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function ln(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 ic(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function oc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Te=$e(()=>{"use strict";We();ot();Ee()});import{readFile as ac}from"node:fs/promises";async function Ae(e){try{let t=await ac(e.uiStateFile,"utf8"),r=JSON.parse(t);return cc(r,e.uiStateFile)}catch(t){if(dc(t))return null;throw t}}async function Re(e,t){await de(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function je(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function cc(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")||!mt(e,"inputMode")||!mt(e,"focusedRegion")||!mt(e,"activeTab")||!mt(e,"inspectorSection")||!mt(e,"inspectionMode")||!qt(e,"openInspectionKind")||!qt(e,"selectedFileTreePath")||!qt(e,"selectedFilePath")||!qt(e,"selectedDiffPath")||!lc(e,"collapsedFileTreePaths")||!mt(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 mt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function qt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function lc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function dc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var _t=$e(()=>{"use strict";We()});import{execFile as uc}from"node:child_process";import{promisify as hc}from"node:util";async function te(e,t,r={}){try{let s=await dn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(un(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 dn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(un(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function un(e){return e instanceof Error}var dn,Ce=$e(()=>{"use strict";dn=hc(uc)});import{readFile as xc,readdir as Ec,rm as Ac}from"node:fs/promises";import yn from"node:path";async function De(e,t){let r=await xc(Vt(e,t),"utf8"),s=JSON.parse(r);return Dc(s,Vt(e,t))}async function Gt(e,t){await de(Vt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await Ec(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>De(e,yn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function vn(e,t){await Ac(Vt(e,t),{force:!0})}function Vt(e,t){return yn.join(e.reposDir,`${t}.json`)}function Dc(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=$e(()=>{"use strict";We()});import{readFile as Lc,readdir as Mc,rm as Oc}from"node:fs/promises";import Sn from"node:path";async function Rt(e,t){let r=await Lc(Xt(e,t),"utf8"),s=JSON.parse(r);return Bc(s,Xt(e,t))}async function wt(e,t){await de(Xt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Le(e){let t=await Mc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Rt(e,Sn.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function Tn(e,t){await Oc(Xt(e,t),{force:!0})}function Xt(e,t){return Sn.join(e.workspacesDir,`${t}.json`)}function Bc(e,t){let r=$c(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 $c(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=$e(()=>{"use strict";We()});async function He(e,t){let r=await Se(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await ue(e,i))}catch(c){if(Kc(c)){o.push(i);return}throw c}}));let v=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return v.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:v,missingTaskIds:o,repoId:t?.repoId??null}}function Kc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var xt=$e(()=>{"use strict";ot();Te()});var ui={};ka(ui,{addWorkspace:()=>Dt,archiveWorkspace:()=>Lt,listWorkspaces:()=>ls,removeWorkspace:()=>Mt,removeWorkspaceRecord:()=>ir,restoreWorkspace:()=>ds});import{readdir as Tl,realpath as si,stat as Rl}from"node:fs/promises";import Je from"node:path";async function Dt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await Rl(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await ci(r)?Cl(e,r):Pl(e,r)}async function ls(e,t){return{kind:"listWorkspaces",workspaces:(await Le(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Lt(e,t){let s={...await Rt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await wt(e,s),await di(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function ds(e,t){let s={...await Rt(e,t),status:"active",archivedAt:null};await wt(e,s);let o=await Ae({uiStateFile:e.uiStateFile})??null;return await Re({uiStateFile:e.uiStateFile},{...o??je(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Mt(e,t){let r=await Rt(e,t),s=await He(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await ir(e,t),await di(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Cl(e,t){let r=await li(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?ii(o,r):ni(s,t,r),v=`workspace_${p.id}`,c=(await Le(e)).find(a=>a.id===v)??null,d=new Date().toISOString(),_=c??{id:v,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Gt(e,p),c||await wt(e,_),await oi(e,{repoIds:[p.id],workspaceIds:[_.id]}),await ai(e,_,p.id),{kind:"createWorkspace",workspace:_,repos:[p],created:!c}}async function Pl(e,t){let r=await Il(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Le(e),o=El(s,Je.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,v=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:v,updatedAt:v};return await Promise.all(r.map(d=>Gt(e,d))),await wt(e,c),await oi(e,{repoIds:i,workspaceIds:[c.id]}),await ai(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function Il(e,t){let r=await Tl(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let v=Je.join(t,p.name);if(!await ci(v))continue;let i=s.find(d=>d.rootPath===v)??o.find(d=>d.rootPath===v),c=await li(v);o.push(i?ii(i,c):ni([...s,...o],v,c))}return o.sort((p,v)=>p.name.localeCompare(v.name)||p.id.localeCompare(v.id))}function ni(e,t,r){let s=new Date().toISOString();return{id:xl(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function ii(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function xl(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 El(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 oi(e,t){let r=await Se(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function ai(e,t,r){await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function ci(e){try{let r=(await te("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([si(r).catch(()=>Je.resolve(r)),si(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function li(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await te("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function ir(e,t){await Tn(e,t);let r=await Se(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function di(e,t){let r=await Ae({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Re({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Ot=$e(()=>{"use strict";ot();dt();Ct();_t();Ce();xt()});var mo=ba(go=>{(()=>{"use strict";var e={5639:(v,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:(v,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 k in d)a[k]=_<=1?d[k]:d[k]&&c(d[k],_-1);return a}},5777:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),_=c(6025),a=c(7276),k=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),P=c(7150),x=!1;class W extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new _.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(k.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(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,k.MINIMUM_COLS),A=Math.max(A,k.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=W},2486:function(v,i,c){var d=this&&this.__decorate||function(q,b,C,T){var R,O=arguments.length,F=O<3?b:T===null?T=Object.getOwnPropertyDescriptor(b,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")F=Reflect.decorate(q,b,C,T);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(F=(O<3?R(F):O>3?R(b,C,F):R(b,C))||F);return O>3&&F&&Object.defineProperty(b,C,F),F},_=this&&this.__param||function(q,b){return function(C,T){b(C,T,q)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=z;let a=c(3534),k=c(6760),l=c(6717),m=c(7150),w=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),S=c(1346),P=c(9823),x=c(8693),W=c(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(q,b){if(q>24)return b.setWinLines||!1;switch(q){case 1:return!!b.restoreWin;case 2:return!!b.minimizeWin;case 3:return!!b.setWinPosition;case 4:return!!b.setWinSizePixels;case 5:return!!b.raiseWin;case 6:return!!b.lowerWin;case 7:return!!b.refreshWin;case 8:return!!b.setWinSizeChars;case 9:return!!b.maximizeWin;case 10:return!!b.fullscreenWin;case 11:return!!b.getWinState;case 13:return!!b.getWinPosition;case 14:return!!b.getWinSizePixels;case 15:return!!b.getScreenSizePixels;case 16:return!!b.getCellSizePixels;case 18:return!!b.getWinSizeChars;case 19:return!!b.getScreenSizeChars;case 20:return!!b.getIconTitle;case 21:return!!b.getWinTitle;case 22:return!!b.pushTitle;case 23:return!!b.popTitle;case 24:return!!b.setWinLines}return!1}var E;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let H=0;class G extends m.Disposable{getAttrData(){return this._curAttrData}constructor(b,C,T,R,O,F,U,V,J=new l.EscapeSequenceParser){super(),this._bufferService=b,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=O,this._oscLinkService=F,this._coreMouseService=U,this._unicodeService=V,this._parser=J,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new 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 W.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new W.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new W.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new W.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new W.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new W.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new W.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new W.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new W.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new W.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new W.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new W.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new W.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new N(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:Q.toArray()})})),this._parser.setEscHandlerFallback((I=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(I)})})),this._parser.setExecuteHandlerFallback((I=>{this._logService.debug("Unknown EXECUTE code: ",{code:I})})),this._parser.setOscHandlerFallback(((I,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((I,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:Q,payload:Y})})),this._parser.setPrintHandler(((I,Q,Y)=>this.print(I,Q,Y))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new S.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new S.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new S.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new S.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new S.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new S.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new S.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new S.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new S.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new S.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in k.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,Q)=>this.requestStatusString(I,Q))))}_preserveStack(b,C,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=b,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(b){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([b,new Promise(((C,T)=>setTimeout((()=>T("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(b,C){let T,R=this._activeBuffer.x,O=this._activeBuffer.y,F=0,U=this._parseStack.paused;if(U){if(T=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(T),T;R=this._parseStack.cursorStartX,O=this._parseStack.cursorStartY,this._parseStack.paused=!1,b.length>D&&(F=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof b=="string"?` "${b}"`:` "${Array.prototype.map.call(b,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof b=="string"?b.split("").map((I=>I.charCodeAt(0))):b),this._parseBuffer.length<b.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(b.length,D))),U||this._dirtyRowTracker.clearRange(),b.length>D)for(let I=F;I<b.length;I+=D){let Q=I+D<b.length?I+D:b.length,Y=typeof b=="string"?this._stringDecoder.decode(b.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(b.subarray(I,Q),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,O,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof b=="string"?this._stringDecoder.decode(b,this._parseBuffer):this._utf8Decoder.decode(b,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,O,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===O||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),J=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);J<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(J,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(b,C,T){let R,O,F=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,J=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,Q=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&T-C>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let ee=this._parser.precedingJoinState;for(let we=C;we<T;++we){if(R=b[we],R<127&&F){let Ke=F[String.fromCharCode(R)];Ke&&(R=Ke.charCodeAt(0))}let be=this._unicodeService.charProperties(R,ee);O=y.UnicodeService.extractWidth(be);let Xe=y.UnicodeService.extractShouldJoin(be),Ie=Xe?y.UnicodeService.extractWidth(ee):0;if(ee=be,U&&this._onA11yChar.fire((0,w.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+O-Ie>V){if(J){let Ke=Y,rt=this._activeBuffer.x-Ie;for(this._activeBuffer.x=Ie,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Ie>0&&Y instanceof n.BufferLine&&Y.copyCellsFrom(Ke,rt,0,Ie,!1);rt<V;)Ke.setCellFromCodepoint(rt++,0,1,Q)}else if(this._activeBuffer.x=V-1,O===2)continue}if(Xe&&this._activeBuffer.x){let Ke=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ke,R,O);for(let rt=O-Ie;--rt>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(Y.insertCells(this._activeBuffer.x,O-Ie,this._activeBuffer.getNullCell(Q)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,O,Q),O>0)for(;--O;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=ee,this._activeBuffer.x<V&&T-C>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(b,C){return b.final!=="t"||b.prefix||b.intermediates?this._parser.registerCsiHandler(b,C):this._parser.registerCsiHandler(b,(T=>!A(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}registerDcsHandler(b,C){return this._parser.registerDcsHandler(b,new P.DcsHandler(C))}registerEscHandler(b,C){return this._parser.registerEscHandler(b,C)}registerOscHandler(b,C){return this._parser.registerOscHandler(b,new S.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let b=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);b.hasWidth(this._activeBuffer.x)&&!b.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let b=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-b),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(b=this._bufferService.cols-1){this._activeBuffer.x=Math.min(b,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(b,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=b,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=b,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(b,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+b,this._activeBuffer.y+C)}cursorUp(b){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,b.params[0]||1)):this._moveCursor(0,-(b.params[0]||1)),!0}cursorDown(b){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,b.params[0]||1)):this._moveCursor(0,b.params[0]||1),!0}cursorForward(b){return this._moveCursor(b.params[0]||1,0),!0}cursorBackward(b){return this._moveCursor(-(b.params[0]||1),0),!0}cursorNextLine(b){return this.cursorDown(b),this._activeBuffer.x=0,!0}cursorPrecedingLine(b){return this.cursorUp(b),this._activeBuffer.x=0,!0}cursorCharAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(b){return this._setCursor(b.length>=2?(b.params[1]||1)-1:0,(b.params[0]||1)-1),!0}charPosAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(b){return this._moveCursor(b.params[0]||1,0),!0}linePosAbsolute(b){return this._setCursor(this._activeBuffer.x,(b.params[0]||1)-1),!0}vPositionRelative(b){return this._moveCursor(0,b.params[0]||1),!0}hVPosition(b){return this.cursorPosition(b),!0}tabClear(b){let C=b.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(b){let C=b.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(b,C,T,R=!1,O=!1){let F=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);F.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),O),R&&(F.isWrapped=!1)}_resetBufferLine(b,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+b),T.isWrapped=!1)}eraseInDisplay(b,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);T<this._bufferService.rows;T++)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(T);break;case 1:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(T+1).isWrapped=!1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(T=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,T-1);T--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+T)?.getTrimmedLength(););for(;T>=0;T--)this._bufferService.scroll(this._eraseAttrData())}else{for(T=this._bufferService.rows,this._dirtyRowTracker.markDirty(T-1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(b,C=!1){switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,O=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(O-1,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(T,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(b.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(b){let C=this._parser.precedingJoinState;if(!C)return!0;let T=b.params[0]||1,R=y.UnicodeService.extractWidth(C),O=this._activeBuffer.x-R,F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(O),U=new Uint32Array(F.length*T),V=0;for(let I=0;I<F.length;){let Q=F.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let J=V;for(let I=1;I<T;++I)U.copyWithin(J,0,V),J+=V;return this.print(U,0,J),!0}sendDeviceAttributesPrimary(b){return b.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(b){return b.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(b.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(b){return(this._optionsService.rawOptions.termName+"").indexOf(b)===0}setMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),this._charsetService.setgCharset(1,k.DEFAULT_CHARSET),this._charsetService.setgCharset(2,k.DEFAULT_CHARSET),this._charsetService.setgCharset(3,k.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),b.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(b,C){let T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:O}=this._coreMouseService,F=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:J,alt:I}=U,Q=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,ee=b.params[0];return we=ee,be=C?ee===2?4:ee===4?Y(F.modes.insertMode):ee===12?3:ee===20?Y(Q.convertEol):0:ee===1?Y(T.applicationCursorKeys):ee===3?Q.windowOptions.setWinLines?V===80?2:V===132?1:0:0:ee===6?Y(T.origin):ee===7?Y(T.wraparound):ee===8?3:ee===9?Y(R==="X10"):ee===12?Y(Q.cursorBlink):ee===25?Y(!F.isCursorHidden):ee===45?Y(T.reverseWraparound):ee===66?Y(T.applicationKeypad):ee===67?4:ee===1e3?Y(R==="VT200"):ee===1002?Y(R==="DRAG"):ee===1003?Y(R==="ANY"):ee===1004?Y(T.sendFocus):ee===1005?4:ee===1006?Y(O==="SGR"):ee===1015?4:ee===1016?Y(O==="SGR_PIXELS"):ee===1048?1:ee===47||ee===1047||ee===1049?Y(J===I):ee===2004?Y(T.bracketedPasteMode):ee===2026?Y(T.synchronizedOutput):0,F.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${we};${be}$y`),!0;var we,be}_updateAttrColor(b,C,T,R,O){return C===2?(b|=50331648,b&=-16777216,b|=u.AttributeData.fromColorRGB([T,R,O])):C===5&&(b&=-50331904,b|=33554432|255&T),b}_extractColor(b,C,T){let R=[0,0,-1,0,0,0],O=0,F=0;do{if(R[F+O]=b.params[C+F],b.hasSubParams(C+F)){let U=b.getSubParams(C+F),V=0;do R[1]===5&&(O=1),R[F+V+1+O]=U[V];while(++V<U.length&&V+F+1+O<R.length);break}if(R[1]===5&&F+O>=2||R[1]===2&&F+O>=5)break;R[1]&&(O=1)}while(++F+C<b.length&&F+O<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:T.fg=this._updateAttrColor(T.fg,R[1],R[3],R[4],R[5]);break;case 48:T.bg=this._updateAttrColor(T.bg,R[1],R[3],R[4],R[5]);break;case 58:T.extended=T.extended.clone(),T.extended.underlineColor=this._updateAttrColor(T.extended.underlineColor,R[1],R[3],R[4],R[5])}return F}_processUnderline(b,C){C.extended=C.extended.clone(),(!~b||b>5)&&(b=1),C.extended.underlineStyle=b,C.fg|=268435456,b===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(b){b.fg=n.DEFAULT_ATTR_DATA.fg,b.bg=n.DEFAULT_ATTR_DATA.bg,b.extended=b.extended.clone(),b.extended.underlineStyle=0,b.extended.underlineColor&=-67108864,b.updateExtended()}charAttributes(b){if(b.length===1&&b.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=b.length,T,R=this._curAttrData;for(let O=0;O<C;O++)T=b.params[O],T>=30&&T<=37?(R.fg&=-50331904,R.fg|=16777216|T-30):T>=40&&T<=47?(R.bg&=-50331904,R.bg|=16777216|T-40):T>=90&&T<=97?(R.fg&=-50331904,R.fg|=16777224|T-90):T>=100&&T<=107?(R.bg&=-50331904,R.bg|=16777224|T-100):T===0?this._processSGR0(R):T===1?R.fg|=134217728:T===3?R.bg|=67108864:T===4?(R.fg|=268435456,this._processUnderline(b.hasSubParams(O)?b.getSubParams(O)[0]:1,R)):T===5?R.fg|=536870912:T===7?R.fg|=67108864:T===8?R.fg|=1073741824:T===9?R.fg|=2147483648:T===2?R.bg|=134217728:T===21?this._processUnderline(2,R):T===22?(R.fg&=-134217729,R.bg&=-134217729):T===23?R.bg&=-67108865:T===24?(R.fg&=-268435457,this._processUnderline(0,R)):T===25?R.fg&=-536870913:T===27?R.fg&=-67108865:T===28?R.fg&=-1073741825:T===29?R.fg&=2147483647:T===39?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?O+=this._extractColor(b,O,R):T===53?R.bg|=1073741824:T===55?R.bg&=-1073741825:T===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):T===100?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);return!0}deviceStatus(b){switch(b.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(b){if(b.params[0]===6){let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${T}R`)}return!0}softReset(b){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(b){let C=b.length===0?1:b.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(b){let C=b.params[0]||1,T;return(b.length<2||(T=b.params[1])>this._bufferService.rows||T===0)&&(T=this._bufferService.rows),T>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=T-1,this._setCursor(0,0)),!0}windowOptions(b){if(!A(b.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=b.length>1?b.params[1]:0;switch(b.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(b){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(b){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(b){return this._windowTitle=b,this._onTitleChange.fire(b),!0}setIconName(b){return this._iconName=b,!0}setOrReportIndexedColor(b){let C=[],T=b.split(";");for(;T.length>1;){let R=T.shift(),O=T.shift();if(/^\d+$/.exec(R)){let F=parseInt(R);if(z(F))if(O==="?")C.push({type:0,index:F});else{let U=(0,x.parseColor)(O);U&&C.push({type:1,index:F,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(b){let C=b.indexOf(";");if(C===-1)return!0;let T=b.slice(0,C).trim(),R=b.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(b,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=b.split(":"),R,O=T.findIndex((F=>F.startsWith("id=")));return O!==-1&&(R=T[O].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(b,C){let T=b.split(";");for(let R=0;R<T.length&&!(C>=this._specialColors.length);++R,++C)if(T[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let O=(0,x.parseColor)(T[R]);O&&this._onColor.fire([{type:1,index:this._specialColors[C],color:O}])}return!0}setOrReportFgColor(b){return this._setOrReportSpecialColor(b,0)}setOrReportBgColor(b){return this._setOrReportSpecialColor(b,1)}setOrReportCursorColor(b){return this._setOrReportSpecialColor(b,2)}restoreIndexedColor(b){if(!b)return this._onColor.fire([{type:2}]),!0;let C=[],T=b.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let O=parseInt(T[R]);z(O)&&C.push({type:2,index:O})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(b){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(b){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(b){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),!0}selectCharset(b){return b.length!==2?(this.selectDefaultCharset(),!0):(b[0]==="/"||this._charsetService.setgCharset($[b[0]],k.CHARSETS[b[1]]||k.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let b=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,b,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(b){return this._charsetService.setgLevel(b),!0}screenAlignmentPattern(){let b=new f.CellData;b.content=4194373,b.fg=this._curAttrData.fg,b.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(b),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(b,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(O=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${O}${a.C0.ESC}\\`),!0))(b==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:b==='"p'?'P1$r61;1"p':b==="r"?`P1$r${T.scrollTop+1};${T.scrollBottom+1}r`:b==="m"?"P1$r0m":b===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(b,C){this._dirtyRowTracker.markRangeDirty(b,C)}}i.InputHandler=G;let N=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,b){q>b&&(H=q,q=b,b=H),q<this.start&&(this.start=q),b>this.end&&(this.end=b)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function z(q){return 0<=q&&q<256}N=d([_(0,h.IBufferService)],N)},701:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let _=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:(v,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(k){return requestIdleCallback(k)}_cancelCallback(k){cancelIdleCallback(k)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(k){this._queue.clear(),this._queue.enqueue(k)}flush(){this._queue.flush()}}},5882:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(_){let a=_.buffer.lines.get(_.buffer.ybase+_.buffer.y-1),k=a?.get(_.cols-1),l=_.buffer.lines.get(_.buffer.ybase+_.buffer.y);l&&k&&(l.isWrapped=k[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&k[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,k=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=k}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),_=c(6168),a=c(5451),k=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=k.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 k.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=k.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(k.DEFAULT_ATTR_DATA),y=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let P=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new k.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new k.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let P=0;P<this.lines.length;P++)y+=+this.lines.get(P).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(k.DEFAULT_ATTR_DATA),h);if(y.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new k.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=[],P=0;for(let x=this.lines.length-1;x>=0;x--){let W=this.lines.get(x);if(!W||!W.isWrapped&&W.getTrimmedLength()<=f)continue;let $=[W];for(;W.isWrapped&&x>0;)W=this.lines.get(--x),$.unshift(W);if(!h){let T=this.ybase+this.y;if(T>=x&&T<x+$.length)continue}let D=$[$.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,f),E=A.length-$.length,H;H=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let G=[];for(let T=0;T<E;T++){let R=this.getBlankLine(k.DEFAULT_ATTR_DATA,!0);G.push(R)}G.length>0&&(S.push({start:x+$.length+P,newLines:G}),P+=G.length),$.push(...G);let N=A.length-1,z=A[N];z===0&&(N--,z=A[N]);let q=$.length-E-1,b=D;for(;q>=0;){let T=Math.min(b,z);if($[N]===void 0)break;if($[N].copyCellsFrom($[q],b-T,z-T,T,!0),z-=T,z===0&&(N--,z=A[N]),b-=T,b===0){q--;let R=Math.max(q,0);b=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)A[T]<f&&$[T].setCell(A[T],y);let C=E-H;for(;C-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],W=[];for(let z=0;z<this.lines.length;z++)W.push(this.lines.get(z));let $=this.lines.length,D=$-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let H=0;for(let z=Math.min(this.lines.maxLength-1,$+P-1);z>=0;z--)if(E&&E.start>D+H){for(let q=E.newLines.length-1;q>=0;q--)this.lines.set(z--,E.newLines[q]);z++,x.push({index:D+1,amount:E.newLines.length}),H+=E.newLines.length,E=S[++A]}else this.lines.set(z,W[D--]);let G=0;for(let z=x.length-1;z>=0;z--)x[z].index+=G,this.lines.onInsertEmitter.fire(x[z]),G+=x[z].amount;let N=Math.max(0,$+P-this.lines.maxLength);N>0&&this.lines.onTrimEmitter.fire(N)}}translateBufferLineToString(f,u,h=0,y){let S=this.lines.get(f);return S?S.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),_=c(3055),a=c(8938),k=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||_.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,k.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,k.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,k.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,k.stringFromCodePoint)(2097151&u)+(0,k.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new _.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 P=u-1;P>=0;P--){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}else for(let P=0;P<u;P++){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}let S=Object.keys(n._combined);for(let P=0;P<S.length;P++){let x=parseInt(S[P],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],S=2097151&y,P=2097152&y?this._combined[g]:S?(0,k.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=P,u)for(let x=0;x<P.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(v,i)=>{function c(d,_,a){if(_===d.length-1)return d[_].getTrimmedLength();let k=!d[_].hasContent(a-1)&&d[_].getWidth(a-1)===1,l=d[_+1].getWidth(0)===2;return k&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,_,a,k,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&&k>=n&&k<g){n+=u.length-1;continue}let h=0,y=c(u,h,_),S=1,P=0;for(;S<u.length;){let W=c(u,S,_),$=W-P,D=a-y,A=Math.min($,D);u[h].copyCellsFrom(u[S],P,y,A,!1),y+=A,y===a&&(h++,y=0),P+=A,P===W&&(S++,P=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let W=u.length-1;W>0&&(W>h||u[W].getTrimmedLength()===0);W--)x++;x>0&&(w.push(n+u.length-x),w.push(x)),n+=u.length-1}return w},i.reflowLargerCreateNewLayout=function(d,_){let a=[],k=0,l=_[k],m=0;for(let w=0;w<d.length;w++)if(l===w){let n=_[++k];d.onDeleteEmitter.fire({index:w-m,amount:n}),w+=n-1,m+=n,l=_[++k]}else a.push(w);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,_){let a=[];for(let k=0;k<_.length;k++)a.push(d.get(_[k]));for(let k=0;k<a.length;k++)d.set(k,a[k]);d.length=_.length},i.reflowSmallerGetNewLineLengths=function(d,_,a){let k=[],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){k.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;k.push(u),n+=u}return k},i.getWrappedLineTrimmedLength=c},4097:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),_=c(1073),a=c(802);class k 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=k},3055:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),_=c(8938),a=c(5451);class k extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let w=new k;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=k},8938:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),_=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:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(v,i)=>{var c,d,_;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:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,_=c.length){let a="";for(let k=d;k<_;++k){let l=c[k];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let _=c.length;if(!_)return 0;let a=0,k=0;if(this._interim){let l=c.charCodeAt(k++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=k;l<_;++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,k,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,P=0;for(;(S=63&this.interim[++P])&&P<4;)y<<=6,y|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,W=x-P;for(;g<W;){if(g>=_)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[P++]=S,y<<=6,y|=63&S}h||(x===2?y<128?g--:d[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&(k=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[w++]=a,d[w++]=k,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(k=c[u++],(192&k)!=128){u--;continue}if(n=(31&a)<<6|63&k,n<128){u--;continue}d[w++]=n}else if((240&a)==224){if(u>=_)return this.interim[0]=a,w;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=k,w;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&k)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[w++]=n}else if((248&a)==240){if(u>=_)return this.interim[0]=a,w;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=k,w;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=k,this.interim[2]=l,w;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&k)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[w++]=n}}return w}}},7428:(v,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]],k;i.UnicodeV6=class{constructor(){if(this.version="6",!k){k=new Uint8Array(65536),k.fill(1),k[0]=0,k.fill(0,1,32),k.fill(0,127,160),k.fill(2,4352,4448),k[9001]=2,k[9002]=2,k.fill(2,11904,42192),k[12351]=1,k.fill(2,44032,55204),k.fill(2,63744,64256),k.fill(2,65040,65050),k.fill(2,65072,65136),k.fill(2,65280,65377),k.fill(2,65504,65511);for(let l=0;l<_.length;++l)k.fill(0,_[l][0],_[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?k[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:(v,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:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let k=a.toLowerCase();if(k.indexOf("rgb:")===0){k=k.slice(4);let l=c.exec(k);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(k.indexOf("#")===0&&(k=k.slice(1),d.exec(k)&&[3,6,9,12].includes(k.length))){let l=k.length/3,m=[0,0,0];for(let w=0;w<3;++w){let n=parseInt(k.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,k=16){let[l,m,w]=a;return`rgb:${_(l,k)}/${_(m,k)}/${_(w,k)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function _(a,k){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(k){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),_=c(7262),a=c(1263),k=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=k,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=k}registerHandler(m,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=k,this._ident=0}hook(m,w){if(this.reset(),this._ident=m,this._active=this._handlers[m]||k,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(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=k,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:(v,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),k=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((P,x)=>x)),f=(P,x)=>g.slice(P,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class 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 k.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let S=g.intermediates.charCodeAt(y);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,S=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,W=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](this._params),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=P;x<f;++x){switch(y=g[x],S=this._transitions.table[this.currentState<<8|(y<160?y:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let W=this._csiHandlers[this._collect<<8|y],$=W?W.length-1:-1;for(;$>=0&&(h=W[$](this._params),h!==!0);$--)if(h instanceof Promise)return this._preserveStack(3,W,$,S,x),h;$<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=w},1346:(v,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(k,l){this._handlers[k]===void 0&&(this._handlers[k]=[]);let m=this._handlers[k];return m.push(l),{dispose:()=>{let w=m.indexOf(l);w!==-1&&m.splice(w,1)}}}clearHandler(k){this._handlers[k]&&delete this._handlers[k]}setHandlerFallback(k){this._handlerFb=k}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let k=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;k>=0;--k)this._active[k].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let k=this._active.length-1;k>=0;k--)this._active[k].start();else this._handlerFb(this._id,"START")}_put(k,l,m){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(k,l,m);else this._handlerFb(this._id,"PUT",(0,_.utf32ToString)(k,l,m))}start(){this.reset(),this._state=1}put(k,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let w=k[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(k,l,m)}}end(k,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,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(k),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",k);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(k){this._handler=k,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(k,l,m){this._hitLimit||(this._data+=(0,_.utf32ToString)(k,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(k){let l=!1;if(this._hitLimit)l=!1;else if(k&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let k=new d;if(!a.length)return k;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let w=0;w<m.length;++w)k.addSubParam(m[w]);else k.addParam(m)}return k}constructor(a=32,k=32){if(this.maxLength=a,this.maxSubParamsLength=k,k>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(k),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let k=0;k<this.length;++k){a.push(this.params[k]);let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let k=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-k>0?this._subParams.subarray(k,l):null}getSubParamsAll(){let a={};for(let k=0;k<this.length;++k){let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&(a[k]=this._subParams.slice(l,m))}return a}addDigit(a){let k;if(this._rejectDigits||!(k=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[k-1];l[k-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let _={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:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),_=c(3055);i.BufferApiView=class{constructor(a,k){this._buffer=a,this.type=k}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let k=this._buffer.lines.get(a);if(k)return new d.BufferLineApiView(k)}getNullCell(){return new _.CellData}}},793:(v,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,k){return this._line.translateToString(_,a,k)}}},5101:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),_=c(7150),a=c(802);class k 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=k},6097:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(_=>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:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),k=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let 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 k.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;y===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=y-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=w,i.BufferService=w=d([_(0,l.IOptionsService)],w)},5746:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(v,i,c){var d=this&&this.__decorate||function(u,h,y,S){var P,x=arguments.length,W=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,y):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(u,h,y,S);else for(var $=u.length-1;$>=0;$--)(P=u[$])&&(W=(x<3?P(W):x>3?P(h,y,W):P(h,y))||W);return x>3&&W&&Object.defineProperty(h,y,W),W},_=this&&this.__param||function(u,h){return function(y,S){h(y,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),k=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function 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 k.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let S=h/y,P=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(u.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([_(0,a.IBufferService),_(1,a.ICoreService),_(2,a.IOptionsService)],f)},4071:function(v,i,c){var d=this&&this.__decorate||function(f,u,h,y){var S,P=arguments.length,x=P<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var W=f.length-1;W>=0;W--)(S=f[W])&&(x=(P<3?S(x):P>3?S(u,h,x):S(u,h))||x);return P>3&&x&&Object.defineProperty(u,h,x),x},_=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),k=c(7150),l=c(6501),m=c(802),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 k.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(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:(v,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(k,l){this._services.set(k,l)}getService(k){return this._services.get(k)}createInstance(k,...l){let m=(0,_.getServiceDependencies)(k).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] ${k.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 ${k.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new k(...l,...w)}}},7276:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==k.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),k=c(6501),l={trace:k.LogLevelEnum.TRACE,debug:k.LogLevelEnum.DEBUG,info:k.LogLevelEnum.INFO,warn:k.LogLevelEnum.WARN,error:k.LogLevelEnum.ERROR,off:k.LogLevelEnum.OFF},m,w=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=k.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=k.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=k.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=k.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=k.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=k.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=w,i.LogService=w=d([_(0,k.IOptionsService)],w)},56:(v,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 k=["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=k.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(v,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),k=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let 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=k,i.OscLinkService=k=d([_(0,a.IBufferService)],k)},6201:(v,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(k,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,k,m)};return a._id=_,i.serviceRegistry.set(_,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var _;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:(v,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:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),_=c(5777),a=c(802);class k 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=k},3058:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,S=(P,x)=>P===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let P=0,x=h.length;P<x;P++)if(!S(h[P],y[P]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let S=h.length-1;y<S&&(h[y]=h[S]),h.pop()},i.binarySearch=function(h,y,S){return a(h.length,(P=>S(h[P],y)))},i.binarySearch2=a,i.quickSelect=function h(y,S,P){if((y|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],W=[],$=[],D=[];for(let A of S){let E=P(A,x);E<0?W.push(A):E>0?$.push(A):D.push(A)}return y<W.length?h(y,W,P):y<W.length+D.length?D[0]:h(y-(W.length+D.length),$,P)},i.groupBy=function(h,y){let S=[],P;for(let x of h.slice(0).sort(y))P&&y(P[0],x)===0?P.push(x):(P=[x],S.push(P));return S},i.groupAdjacentBy=function*(h,y){let S,P;for(let x of h)P!==void 0&&y(P,x)?S.push(x):(S&&(yield S),S=[x]),P=x;S&&(yield S)},i.forEachAdjacent=function(h,y){for(let S=0;S<=h.length;S++)y(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,y){for(let S=0;S<h.length;S++)y(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=k,i.delta=function(h,y,S){let P=k(h,y,S),x=[],W=[];for(let $ of P)x.push(...h.slice($.start,$.start+$.deleteCount)),W.push(...$.toInsert);return{removed:x,added:W}},i.top=function(h,y,S){if(S===0)return[];let P=h.slice(0,S).sort(y);return l(h,y,P,S,h.length),P},i.topAsync=function(h,y,S,P,x){return S===0?Promise.resolve([]):new Promise(((W,$)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(y);for(let E=S,H=Math.min(S+P,D);E<D;E=H,H=Math.min(H+P,D)){if(E>S&&await new Promise((G=>setTimeout(G))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,H)}return A})().then(W,$)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let S=0;S<h.length;S++)h[S]&&(h[y]=h[S],y+=1);h.length=y},i.move=function(h,y,S){h.splice(S,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=S=>S){let S=new Set;return h.filter((P=>{let x=y(P);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return S=>{let P=h(S);return!y.has(P)&&(y.add(P),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,S=(P,x)=>P===x){let P=0;for(let x=0,W=Math.min(h.length,y.length);x<W&&S(h[x],y[x]);x++)P++;return P},i.range=function(h,y){let S=typeof y=="number"?h:0;typeof y=="number"?S=h:(S=0,y=h);let P=[];if(S<=y)for(let x=S;x<y;x++)P.push(x);else for(let x=S;x>y;x--)P.push(x);return P},i.index=function(h,y,S){return h.reduce(((P,x)=>(P[y(x)]=S?S(x):x,P)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,S){let P=h.slice(0,y),x=h.slice(y);return P.concat(S,x)},i.shuffle=function(h,y){let S;if(typeof y=="number"){let P=y;S=()=>{let x=179426549*Math.sin(P++);return x-Math.floor(x)}}else S=Math.random;for(let P=h.length-1;P>0;P-=1){let x=Math.floor(S()*(P+1)),W=h[P];h[P]=h[x],h[x]=W}},i.pushToStart=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.unshift(y))},i.pushToEnd=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.push(y))},i.pushMany=function(h,y){for(let S of y)h.push(S)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=w,i.splice=function(h,y,S,P){let x=n(h,y),W=h.splice(x,S);return W===void 0&&(W=[]),w(h,x,P),W},i.compareBy=function(h,y){return(S,P)=>y(h(S),h(P))},i.tieBreakComparators=function(...h){return(y,S)=>{for(let P of h){let x=P(y,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,S)=>-h(y,S)};let d=c(9807),_=c(8297);function a(h,y){let S=0,P=h-1;for(;S<=P;){let x=(S+P)/2|0,W=y(x);if(W<0)S=x+1;else{if(!(W>0))return x;P=x-1}}return-(S+1)}function k(h,y,S){let P=[];function x(D,A,E){if(A===0&&E.length===0)return;let H=P[P.length-1];H&&H.start+H.deleteCount===D?(H.deleteCount+=A,H.toInsert.push(...E)):P.push({start:D,deleteCount:A,toInsert:E})}let W=0,$=0;for(;;){if(W===h.length){x(W,0,y.slice($));break}if($===y.length){x(W,h.length-W,[]);break}let D=h[W],A=y[$],E=S(D,A);E===0?(W+=1,$+=1):E<0?(x(W,1,[]),W+=1):E>0&&(x(W,0,[A]),$+=1)}return P}function l(h,y,S,P,x){for(let W=S.length;P<x;P++){let $=h[P];if(y($,S[W-1])<0){S.pop();let D=(0,_.findFirstIdxMonotonousOrArrLen)(S,(A=>y($,A)<0));S.splice(D,0,$)}}}function m(h,y){let S=h.indexOf(y);if(S>-1)return h.splice(S,1),y}function w(h,y,S){let P=n(h,y),x=h.length,W=S.length;h.length=x+W;for(let $=x-1;$>=P;$--)h[$+W]=h[$];for(let $=0;$<W;$++)h[$+P]=S[$]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let S=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,S}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let S=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((S=>(y(S),!0)))}toArray(){let y=[];return this.iterate((S=>(y.push(S),!0))),y}filter(y){return new f((S=>this.iterate((P=>!y(P)||S(P)))))}map(y){return new f((S=>this.iterate((P=>S(y(P))))))}some(y){let S=!1;return this.iterate((P=>(S=y(P),!S))),S}findFirst(y){let S;return this.iterate((P=>!y(P)||(S=P,!1))),S}findLast(y){let S;return this.iterate((P=>(y(P)&&(S=P),!0))),S}findLastMaxBy(y){let S,P=!0;return this.iterate((x=>((P||g.isGreaterThan(y(x,S)))&&(P=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,S){let P=Array.from(y.keys()).sort(((x,W)=>S(y[x],y[W])));return new u(P)}apply(y){return y.map(((S,P)=>y[this._indexMap[P]]))}inverse(){let y=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)y[this._indexMap[S]]=S;return new u(y)}}i.Permutation=u},8297:(v,i)=>{function c(l,m,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=k,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 k(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 k(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:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(_,a){let k=Object.create(null);for(let l of _){let m=a(l),w=k[m];w||(w=k[m]=[]),w.push(l)}return k},i.diffSets=function(_,a){let k=[],l=[];for(let m of _)a.has(m)||k.push(m);for(let m of a)_.has(m)||l.push(m);return{removed:k,added:l}},i.diffMaps=function(_,a){let k=[],l=[];for(let[m,w]of _)a.has(m)||k.push(w);for(let[m,w]of a)_.has(m)||l.push(w);return{removed:k,added:l}},i.intersection=function(_,a){let k=new Set;for(let l of a)_.has(l)&&k.add(l);return k};class d{static{c=Symbol.toStringTag}constructor(a,k){this.toKey=k,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let k=this.toKey(a);return this._map.set(k,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,k){this._map.forEach((l=>a.call(k,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){_(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 ma=Object.create;var Br=Object.defineProperty;var _a=Object.getOwnPropertyDescriptor;var wa=Object.getOwnPropertyNames;var ba=Object.getPrototypeOf,ka=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var ya=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),va=(e,t)=>{for(var r in t)Br(e,r,{get:t[r],enumerable:!0})},Sa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of wa(t))!ka.call(e,o)&&o!==r&&Br(e,o,{get:()=>t[o],enumerable:!(s=_a(t,o))||s.enumerable});return e};var Ta=(e,t,r)=>(r=e!=null?ma(ba(e)):{},Sa(t||!e||!e.__esModule?Br(r,"default",{value:e,enumerable:!0}):r,e));function ke(e){return Ra[e]}function $r(e,t={}){let r=ke(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function pt(e={}){return le.filter(t=>e.runners?.[t]?.enabled!==!1)}function st(e={}){let t=pt(e);if(t.length===0)throw new Error("No runners are enabled. Enable at least one runner in .craig/config.json.");return t.includes("codex")?"codex":t[0]}function qt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function gt(e){return le.includes(e)}function Zs(e){if(!e||e.length===0)return"codex";if(!gt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${le.join(", ")}.`);return e}function ve(e){return ke(e).displayName}function me(e,t,r={}){let s=[$r(e,r).executable];return t&&t.length>0&&s.push(t),s}var le,Ra,Ee=$e(()=>{"use strict";le=["codex","cursor","claude"],Ra={codex:{id:"codex",displayName:"Codex",executable:"codex",defaultAgentTitle:"Codex"},cursor:{id:"cursor",displayName:"Cursor",executable:"cursor-agent",defaultAgentTitle:"Cursor"},claude:{id:"claude",displayName:"Claude",executable:"claude",defaultAgentTitle:"Claude"}}});import{randomUUID as Da}from"node:crypto";import{open as La,readFile as ff,rename as Ma,rm as Oa}from"node:fs/promises";import Fr from"node:path";async function de(e,t){let r=Fr.dirname(e),s=Fr.join(r,`.${Fr.basename(e)}.${process.pid}.${Date.now()}.${Da()}.tmp`),o=await La(s,"w");try{let p=`${JSON.stringify(t,null,2)}
|
|
3
|
+
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await Ma(s,e)}catch(p){throw await o.close().catch(()=>{}),await Oa(s,{force:!0}).catch(()=>{}),p}}var We=$e(()=>{"use strict"});import{readFile as Ha}from"node:fs/promises";async function Se(e){let t=await Ha(e.indexFile,"utf8"),r=JSON.parse(t);return Wr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await de(e.indexFile,r)}function Wr(e,t,r){if(!Ua(e))throw new Error(`Craig index at ${r} is invalid. Remove or repair the file before rerunning Craig.`);if(e.workspaceRoot!==t)throw new Error(`Craig index at ${r} belongs to ${e.workspaceRoot}, not ${t}. Remove or repair the file before rerunning Craig.`);return e}function Ua(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=$e(()=>{"use strict";We()});import{readFile as qa}from"node:fs/promises";async function ue(e,t){let r=await qa(jr(e,t),"utf8"),s=JSON.parse(r);return Ka(s,jr(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await de(jr(e,t.id),r)}async function Hr(e,t){let r=await Se(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function jr(e,t){return`${e.tasksDir}/${t}.json`}function Ka(e,t){let r=za(e);if(!Ga(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function za(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Ur(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:Ja(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:Xa(t.repoTargets),runnerSession:t.runnerSession??Va(t),checks:nc(t),lastCommit:t.lastCommit??null,prs:ic(t),artifacts:ac(t),cleanup:cc(t)}}function Va(e){if(typeof e.title!="string")return null;let t=Ur(e.runner);return{command:me(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function Ga(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.id=="string"&&typeof t.title=="string"&&typeof t.slug=="string"&&(t.type==="repo"||t.type==="project")&&typeof t.status=="string"&>(t.runner??"")&&typeof t.repoId=="string"&&typeof t.workspaceId=="string"&&(typeof t.sessionId=="string"||t.sessionId===null)&&(typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null)&&Array.isArray(t.linkedRepoIds)&&t.linkedRepoIds.every(r=>typeof r=="string")&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&typeof t.branch=="string"&&nn(t.ptyTabs)&&(t.bundlePath===void 0||t.bundlePath===null||typeof t.bundlePath=="string")&&(t.selectedRepoTargetId===void 0||t.selectedRepoTargetId===null||typeof t.selectedRepoTargetId=="string")&&(t.repoTargets===void 0||Ya(t.repoTargets))&&Za(t.runnerSession)&&ec(t.prompt)&&on(t.checks)&&an(t.lastCommit)&&rc(t.prs)&&sc(t.artifacts)&&ln(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Xa(e){if(Array.isArray(e))return e.filter(sn)}function Ya(e){return Array.isArray(e)&&e.every(sn)}function sn(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.repoId=="string"&&typeof t.branch=="string"&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&(t.status==="ready"||t.status==="unavailable"||t.status==="merged"||t.status==="closed")&&(typeof t.failureReason=="string"||t.failureReason===null)&&on(t.checks)&&an(t.lastCommit)&&cn(t.pullRequest)&&ln(t.cleanup)}function Ja(e){if(nn(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return Qa(e.id,e.title,t,Ur(e.runner))}function Qa(e,t,r,s){let o=ke(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Ur(e){return e&>(e)?e:"codex"}function nn(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&(t.kind==="agent"||t.kind==="terminal")&&typeof t.title=="string"&&Array.isArray(t.command)&&t.command.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string")}function Za(e){return typeof e=="object"&&e!==null&&Array.isArray(e.command)&&e.command.every(t=>typeof t=="string")&&(typeof e.pid=="number"||e.pid===null)&&(typeof e.startedAt=="string"||e.startedAt===null)&&(e.lastKnownState==="starting"||e.lastKnownState==="running"||e.lastKnownState==="exited"||e.lastKnownState==="failed")&&(typeof e.exitCode=="number"||e.exitCode===null)&&(typeof e.exitedAt=="string"||e.exitedAt===null)}function ec(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function on(e){return typeof e=="object"&&e!==null&&typeof e.source=="object"&&e.source!==null&&e.source.type==="repo_config"&&typeof e.source.path=="string"&&(typeof e.lastRunAt=="string"||e.lastRunAt===null)&&(e.status==="not_run"||e.status==="running"||e.status==="passed"||e.status==="failed")&&Array.isArray(e.commands)&&e.commands.every(t=>typeof t=="string")&&Array.isArray(e.results)&&e.results.every(t=>typeof t=="object"&&t!==null&&typeof t.command=="string"&&typeof t.startedAt=="string"&&typeof t.finishedAt=="string"&&typeof t.exitCode=="number")}function an(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function cn(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&tc(e.requiredChecks)}function tc(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))}function rc(e){return Array.isArray(e)&&e.every(cn)}function sc(e){return typeof e=="object"&&e!==null&&(typeof e.logPath=="string"||e.logPath===null)&&(typeof e.checkSummaryPath=="string"||e.checkSummaryPath===null)&&(typeof e.prDraftPath=="string"||e.prDraftPath===null)&&(typeof e.prStatusPath=="string"||e.prStatusPath===null)}function ln(e){return typeof e=="object"&&e!==null&&(typeof e.paneClosedAt=="string"||e.paneClosedAt===null)&&(typeof e.worktreeRemovedAt=="string"||e.worktreeRemovedAt===null)&&typeof e.preservedWorktree=="boolean"&&(typeof e.warning=="string"||e.warning===null)}function nc(e){return e.checks?{...e.checks,results:e.checks.results??[]}:{source:{type:"repo_config",path:".craig/config.json"},lastRunAt:null,status:"not_run",commands:[],results:[]}}function ic(e){if(Array.isArray(e.prs))return e.prs.map(oc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:dn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:un(t.requiredChecks),createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function oc(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:dn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:un(t.requiredChecks),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function dn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function un(e){return Array.isArray(e)?e.map(t=>({...t,status:t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown"?t.status:"unknown",conclusion:t.conclusion??null})):[]}function ac(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function cc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Te=$e(()=>{"use strict";We();ot();Ee()});import{readFile as lc}from"node:fs/promises";async function Ae(e){try{let t=await lc(e.uiStateFile,"utf8"),r=JSON.parse(t);return dc(r,e.uiStateFile)}catch(t){if(hc(t))return null;throw t}}async function Re(e,t){await de(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function je(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function dc(e,t){if(typeof e!="object"||e===null||e.version!==1||!(e.selectedRepoId===null||typeof e.selectedRepoId=="string")||!(e.selectedWorkspaceId===null||typeof e.selectedWorkspaceId=="string")||!(e.selectedTaskId===null||typeof e.selectedTaskId=="string")||!(e.selectedPtyTabId===void 0||e.selectedPtyTabId===null||typeof e.selectedPtyTabId=="string")||!_t(e,"inputMode")||!_t(e,"focusedRegion")||!_t(e,"activeTab")||!_t(e,"inspectorSection")||!_t(e,"inspectionMode")||!Kt(e,"openInspectionKind")||!Kt(e,"selectedFileTreePath")||!Kt(e,"selectedFilePath")||!Kt(e,"selectedDiffPath")||!uc(e,"collapsedFileTreePaths")||!_t(e,"selectedActionId")||typeof e.updatedAt!="string")throw new Error(`Craig UI state at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}function _t(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function Kt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function uc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function hc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=$e(()=>{"use strict";We()});import{execFile as fc}from"node:child_process";import{promisify as pc}from"node:util";async function te(e,t,r={}){try{let s=await hn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(fn(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await hn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(fn(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function fn(e){return e instanceof Error}var hn,Ce=$e(()=>{"use strict";hn=pc(fc)});import{readFile as Ac,readdir as Dc,rm as Lc}from"node:fs/promises";import Sn from"node:path";async function De(e,t){let r=await Ac(Gt(e,t),"utf8"),s=JSON.parse(r);return Mc(s,Gt(e,t))}async function Xt(e,t){await de(Gt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await Dc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>De(e,Sn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function Tn(e,t){await Lc(Gt(e,t),{force:!0})}function Gt(e,t){return Sn.join(e.reposDir,`${t}.json`)}function Mc(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=$e(()=>{"use strict";We()});import{readFile as Oc,readdir as Bc,rm as $c}from"node:fs/promises";import Rn from"node:path";async function Rt(e,t){let r=await Oc(Yt(e,t),"utf8"),s=JSON.parse(r);return Fc(s,Yt(e,t))}async function bt(e,t){await de(Yt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Le(e){let t=await Bc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Rt(e,Rn.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function Cn(e,t){await $c(Yt(e,t),{force:!0})}function Yt(e,t){return Rn.join(e.workspacesDir,`${t}.json`)}function Fc(e,t){let r=Nc(e);if(typeof r!="object"||r===null||typeof r.id!="string"||r.kind!=="repo"&&r.kind!=="project"||typeof r.name!="string"||typeof r.rootPath!="string"||typeof r.primaryRepoId!="string"||typeof r.branch!="string"||r.status!=="active"&&r.status!=="archived"||!Array.isArray(r.linkedRepoIds)||!(r.linkedRepoIds??[]).every(s=>typeof s=="string")||!(r.repoId===void 0||typeof r.repoId=="string")||!Array.isArray(r.discoveredRepoIds)||!(r.discoveredRepoIds??[]).every(s=>typeof s=="string")||!(r.archivedAt===null||typeof r.archivedAt=="string")||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig workspace record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Nc(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=$e(()=>{"use strict";We()});async function He(e,t){let r=await Se(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await ue(e,i))}catch(c){if(Vc(c)){o.push(i);return}throw c}}));let v=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return v.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:v,missingTaskIds:o,repoId:t?.repoId??null}}function Vc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var xt=$e(()=>{"use strict";ot();Te()});var fi={};va(fi,{addWorkspace:()=>Dt,archiveWorkspace:()=>Lt,listWorkspaces:()=>ds,removeWorkspace:()=>Mt,removeWorkspaceRecord:()=>or,restoreWorkspace:()=>us});import{readdir as Cl,realpath as ii,stat as Pl}from"node:fs/promises";import Je from"node:path";async function Dt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await Pl(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await di(r)?Il(e,r):xl(e,r)}async function ds(e,t){return{kind:"listWorkspaces",workspaces:(await Le(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Lt(e,t){let s={...await Rt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await hi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function us(e,t){let s={...await Rt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await Ae({uiStateFile:e.uiStateFile})??null;return await Re({uiStateFile:e.uiStateFile},{...o??je(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Mt(e,t){let r=await Rt(e,t),s=await He(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await or(e,t),await hi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Il(e,t){let r=await ui(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?ai(o,r):oi(s,t,r),v=`workspace_${p.id}`,c=(await Le(e)).find(a=>a.id===v)??null,d=new Date().toISOString(),w=c??{id:v,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Xt(e,p),c||await bt(e,w),await ci(e,{repoIds:[p.id],workspaceIds:[w.id]}),await li(e,w,p.id),{kind:"createWorkspace",workspace:w,repos:[p],created:!c}}async function xl(e,t){let r=await El(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Le(e),o=Dl(s,Je.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,v=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:v,updatedAt:v};return await Promise.all(r.map(d=>Xt(e,d))),await bt(e,c),await ci(e,{repoIds:i,workspaceIds:[c.id]}),await li(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function El(e,t){let r=await Cl(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let v=Je.join(t,p.name);if(!await di(v))continue;let i=s.find(d=>d.rootPath===v)??o.find(d=>d.rootPath===v),c=await ui(v);o.push(i?ai(i,c):oi([...s,...o],v,c))}return o.sort((p,v)=>p.name.localeCompare(v.name)||p.id.localeCompare(v.id))}function oi(e,t,r){let s=new Date().toISOString();return{id:Al(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function ai(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Al(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function Dl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function ci(e,t){let r=await Se(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function li(e,t,r){await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function di(e){try{let r=(await te("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([ii(r).catch(()=>Je.resolve(r)),ii(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function ui(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await te("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function or(e,t){await Cn(e,t);let r=await Se(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function hi(e,t){let r=await Ae({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Re({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Ot=$e(()=>{"use strict";ot();dt();Ct();wt();Ce();xt()});var wo=ya(_o=>{(()=>{"use strict";var e={5639:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new w.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new w.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new w.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let _=0;_<Math.min(l,this.length);_++)m[_]=this._array[this._getCyclicIndex(_)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,..._){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+_.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<_.length;n++)this._array[this._getCyclicIndex(l+n)]=_[n];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let n=this._length+_.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=_.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,_){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let g=m-1;g>=0;g--)this.set(l+g+_,this.get(l+g));let n=l+m+_-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+_,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,w=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let k in d)a[k]=w<=1?d[k]:d[k]&&c(d[k],w-1);return a}},5777:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),w=c(6025),a=c(7276),k=c(9640),l=c(56),m=c(4071),_=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),S=c(802),P=c(7150),x=!1;class W extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new w.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(k.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,k.MINIMUM_COLS),A=Math.max(A,k.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=W},2486:function(v,i,c){var d=this&&this.__decorate||function(q,b,C,T){var R,O=arguments.length,F=O<3?b:T===null?T=Object.getOwnPropertyDescriptor(b,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")F=Reflect.decorate(q,b,C,T);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(F=(O<3?R(F):O>3?R(b,C,F):R(b,C))||F);return O>3&&F&&Object.defineProperty(b,C,F),F},w=this&&this.__param||function(q,b){return function(C,T){b(C,T,q)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=z;let a=c(3534),k=c(6760),l=c(6717),m=c(7150),_=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),S=c(1346),P=c(9823),x=c(8693),W=c(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(q,b){if(q>24)return b.setWinLines||!1;switch(q){case 1:return!!b.restoreWin;case 2:return!!b.minimizeWin;case 3:return!!b.setWinPosition;case 4:return!!b.setWinSizePixels;case 5:return!!b.raiseWin;case 6:return!!b.lowerWin;case 7:return!!b.refreshWin;case 8:return!!b.setWinSizeChars;case 9:return!!b.maximizeWin;case 10:return!!b.fullscreenWin;case 11:return!!b.getWinState;case 13:return!!b.getWinPosition;case 14:return!!b.getWinSizePixels;case 15:return!!b.getScreenSizePixels;case 16:return!!b.getCellSizePixels;case 18:return!!b.getWinSizeChars;case 19:return!!b.getScreenSizeChars;case 20:return!!b.getIconTitle;case 21:return!!b.getWinTitle;case 22:return!!b.pushTitle;case 23:return!!b.popTitle;case 24:return!!b.setWinLines}return!1}var E;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let H=0;class G extends m.Disposable{getAttrData(){return this._curAttrData}constructor(b,C,T,R,O,F,U,V,J=new l.EscapeSequenceParser){super(),this._bufferService=b,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=O,this._oscLinkService=F,this._coreMouseService=U,this._unicodeService=V,this._parser=J,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new W.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new W.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new W.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new W.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new W.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new W.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new W.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new W.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new W.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new W.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new W.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new W.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new W.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new N(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:Q.toArray()})})),this._parser.setEscHandlerFallback((I=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(I)})})),this._parser.setExecuteHandlerFallback((I=>{this._logService.debug("Unknown EXECUTE code: ",{code:I})})),this._parser.setOscHandlerFallback(((I,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((I,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:Q,payload:Y})})),this._parser.setPrintHandler(((I,Q,Y)=>this.print(I,Q,Y))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new S.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new S.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new S.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new S.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new S.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new S.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new S.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new S.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new S.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new S.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in k.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,Q)=>this.requestStatusString(I,Q))))}_preserveStack(b,C,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=b,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(b){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([b,new Promise(((C,T)=>setTimeout((()=>T("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(b,C){let T,R=this._activeBuffer.x,O=this._activeBuffer.y,F=0,U=this._parseStack.paused;if(U){if(T=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(T),T;R=this._parseStack.cursorStartX,O=this._parseStack.cursorStartY,this._parseStack.paused=!1,b.length>D&&(F=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof b=="string"?` "${b}"`:` "${Array.prototype.map.call(b,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof b=="string"?b.split("").map((I=>I.charCodeAt(0))):b),this._parseBuffer.length<b.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(b.length,D))),U||this._dirtyRowTracker.clearRange(),b.length>D)for(let I=F;I<b.length;I+=D){let Q=I+D<b.length?I+D:b.length,Y=typeof b=="string"?this._stringDecoder.decode(b.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(b.subarray(I,Q),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,O,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof b=="string"?this._stringDecoder.decode(b,this._parseBuffer):this._utf8Decoder.decode(b,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,O,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===O||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),J=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);J<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(J,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(b,C,T){let R,O,F=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,J=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,Q=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&T-C>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let ee=this._parser.precedingJoinState;for(let we=C;we<T;++we){if(R=b[we],R<127&&F){let Ke=F[String.fromCharCode(R)];Ke&&(R=Ke.charCodeAt(0))}let be=this._unicodeService.charProperties(R,ee);O=y.UnicodeService.extractWidth(be);let Xe=y.UnicodeService.extractShouldJoin(be),Ie=Xe?y.UnicodeService.extractWidth(ee):0;if(ee=be,U&&this._onA11yChar.fire((0,_.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+O-Ie>V){if(J){let Ke=Y,rt=this._activeBuffer.x-Ie;for(this._activeBuffer.x=Ie,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Ie>0&&Y instanceof n.BufferLine&&Y.copyCellsFrom(Ke,rt,0,Ie,!1);rt<V;)Ke.setCellFromCodepoint(rt++,0,1,Q)}else if(this._activeBuffer.x=V-1,O===2)continue}if(Xe&&this._activeBuffer.x){let Ke=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ke,R,O);for(let rt=O-Ie;--rt>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(Y.insertCells(this._activeBuffer.x,O-Ie,this._activeBuffer.getNullCell(Q)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,O,Q),O>0)for(;--O;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=ee,this._activeBuffer.x<V&&T-C>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(b,C){return b.final!=="t"||b.prefix||b.intermediates?this._parser.registerCsiHandler(b,C):this._parser.registerCsiHandler(b,(T=>!A(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}registerDcsHandler(b,C){return this._parser.registerDcsHandler(b,new P.DcsHandler(C))}registerEscHandler(b,C){return this._parser.registerEscHandler(b,C)}registerOscHandler(b,C){return this._parser.registerOscHandler(b,new S.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let b=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);b.hasWidth(this._activeBuffer.x)&&!b.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let b=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-b),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(b=this._bufferService.cols-1){this._activeBuffer.x=Math.min(b,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(b,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=b,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=b,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(b,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+b,this._activeBuffer.y+C)}cursorUp(b){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,b.params[0]||1)):this._moveCursor(0,-(b.params[0]||1)),!0}cursorDown(b){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,b.params[0]||1)):this._moveCursor(0,b.params[0]||1),!0}cursorForward(b){return this._moveCursor(b.params[0]||1,0),!0}cursorBackward(b){return this._moveCursor(-(b.params[0]||1),0),!0}cursorNextLine(b){return this.cursorDown(b),this._activeBuffer.x=0,!0}cursorPrecedingLine(b){return this.cursorUp(b),this._activeBuffer.x=0,!0}cursorCharAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(b){return this._setCursor(b.length>=2?(b.params[1]||1)-1:0,(b.params[0]||1)-1),!0}charPosAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(b){return this._moveCursor(b.params[0]||1,0),!0}linePosAbsolute(b){return this._setCursor(this._activeBuffer.x,(b.params[0]||1)-1),!0}vPositionRelative(b){return this._moveCursor(0,b.params[0]||1),!0}hVPosition(b){return this.cursorPosition(b),!0}tabClear(b){let C=b.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=b.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(b){let C=b.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(b,C,T,R=!1,O=!1){let F=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);F.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),O),R&&(F.isWrapped=!1)}_resetBufferLine(b,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+b),T.isWrapped=!1)}eraseInDisplay(b,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);T<this._bufferService.rows;T++)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(T);break;case 1:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(T+1).isWrapped=!1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(T=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,T-1);T--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+T)?.getTrimmedLength(););for(;T>=0;T--)this._bufferService.scroll(this._eraseAttrData())}else{for(T=this._bufferService.rows,this._dirtyRowTracker.markDirty(T-1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(b,C=!1){switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,O=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(O-1,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(b){this._restrictCursor();let C=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(T,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(b){let C=b.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=b.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(b){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(b.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(b){let C=this._parser.precedingJoinState;if(!C)return!0;let T=b.params[0]||1,R=y.UnicodeService.extractWidth(C),O=this._activeBuffer.x-R,F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(O),U=new Uint32Array(F.length*T),V=0;for(let I=0;I<F.length;){let Q=F.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let J=V;for(let I=1;I<T;++I)U.copyWithin(J,0,V),J+=V;return this.print(U,0,J),!0}sendDeviceAttributesPrimary(b){return b.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(b){return b.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(b.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(b){return(this._optionsService.rawOptions.termName+"").indexOf(b)===0}setMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),this._charsetService.setgCharset(1,k.DEFAULT_CHARSET),this._charsetService.setgCharset(2,k.DEFAULT_CHARSET),this._charsetService.setgCharset(3,k.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(b){for(let C=0;C<b.length;C++)switch(b.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),b.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(b,C){let T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:O}=this._coreMouseService,F=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:J,alt:I}=U,Q=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,ee=b.params[0];return we=ee,be=C?ee===2?4:ee===4?Y(F.modes.insertMode):ee===12?3:ee===20?Y(Q.convertEol):0:ee===1?Y(T.applicationCursorKeys):ee===3?Q.windowOptions.setWinLines?V===80?2:V===132?1:0:0:ee===6?Y(T.origin):ee===7?Y(T.wraparound):ee===8?3:ee===9?Y(R==="X10"):ee===12?Y(Q.cursorBlink):ee===25?Y(!F.isCursorHidden):ee===45?Y(T.reverseWraparound):ee===66?Y(T.applicationKeypad):ee===67?4:ee===1e3?Y(R==="VT200"):ee===1002?Y(R==="DRAG"):ee===1003?Y(R==="ANY"):ee===1004?Y(T.sendFocus):ee===1005?4:ee===1006?Y(O==="SGR"):ee===1015?4:ee===1016?Y(O==="SGR_PIXELS"):ee===1048?1:ee===47||ee===1047||ee===1049?Y(J===I):ee===2004?Y(T.bracketedPasteMode):ee===2026?Y(T.synchronizedOutput):0,F.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${we};${be}$y`),!0;var we,be}_updateAttrColor(b,C,T,R,O){return C===2?(b|=50331648,b&=-16777216,b|=u.AttributeData.fromColorRGB([T,R,O])):C===5&&(b&=-50331904,b|=33554432|255&T),b}_extractColor(b,C,T){let R=[0,0,-1,0,0,0],O=0,F=0;do{if(R[F+O]=b.params[C+F],b.hasSubParams(C+F)){let U=b.getSubParams(C+F),V=0;do R[1]===5&&(O=1),R[F+V+1+O]=U[V];while(++V<U.length&&V+F+1+O<R.length);break}if(R[1]===5&&F+O>=2||R[1]===2&&F+O>=5)break;R[1]&&(O=1)}while(++F+C<b.length&&F+O<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:T.fg=this._updateAttrColor(T.fg,R[1],R[3],R[4],R[5]);break;case 48:T.bg=this._updateAttrColor(T.bg,R[1],R[3],R[4],R[5]);break;case 58:T.extended=T.extended.clone(),T.extended.underlineColor=this._updateAttrColor(T.extended.underlineColor,R[1],R[3],R[4],R[5])}return F}_processUnderline(b,C){C.extended=C.extended.clone(),(!~b||b>5)&&(b=1),C.extended.underlineStyle=b,C.fg|=268435456,b===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(b){b.fg=n.DEFAULT_ATTR_DATA.fg,b.bg=n.DEFAULT_ATTR_DATA.bg,b.extended=b.extended.clone(),b.extended.underlineStyle=0,b.extended.underlineColor&=-67108864,b.updateExtended()}charAttributes(b){if(b.length===1&&b.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=b.length,T,R=this._curAttrData;for(let O=0;O<C;O++)T=b.params[O],T>=30&&T<=37?(R.fg&=-50331904,R.fg|=16777216|T-30):T>=40&&T<=47?(R.bg&=-50331904,R.bg|=16777216|T-40):T>=90&&T<=97?(R.fg&=-50331904,R.fg|=16777224|T-90):T>=100&&T<=107?(R.bg&=-50331904,R.bg|=16777224|T-100):T===0?this._processSGR0(R):T===1?R.fg|=134217728:T===3?R.bg|=67108864:T===4?(R.fg|=268435456,this._processUnderline(b.hasSubParams(O)?b.getSubParams(O)[0]:1,R)):T===5?R.fg|=536870912:T===7?R.fg|=67108864:T===8?R.fg|=1073741824:T===9?R.fg|=2147483648:T===2?R.bg|=134217728:T===21?this._processUnderline(2,R):T===22?(R.fg&=-134217729,R.bg&=-134217729):T===23?R.bg&=-67108865:T===24?(R.fg&=-268435457,this._processUnderline(0,R)):T===25?R.fg&=-536870913:T===27?R.fg&=-67108865:T===28?R.fg&=-1073741825:T===29?R.fg&=2147483647:T===39?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?O+=this._extractColor(b,O,R):T===53?R.bg|=1073741824:T===55?R.bg&=-1073741825:T===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):T===100?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);return!0}deviceStatus(b){switch(b.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(b){if(b.params[0]===6){let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${T}R`)}return!0}softReset(b){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(b){let C=b.length===0?1:b.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(b){let C=b.params[0]||1,T;return(b.length<2||(T=b.params[1])>this._bufferService.rows||T===0)&&(T=this._bufferService.rows),T>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=T-1,this._setCursor(0,0)),!0}windowOptions(b){if(!A(b.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=b.length>1?b.params[1]:0;switch(b.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(b){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(b){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(b){return this._windowTitle=b,this._onTitleChange.fire(b),!0}setIconName(b){return this._iconName=b,!0}setOrReportIndexedColor(b){let C=[],T=b.split(";");for(;T.length>1;){let R=T.shift(),O=T.shift();if(/^\d+$/.exec(R)){let F=parseInt(R);if(z(F))if(O==="?")C.push({type:0,index:F});else{let U=(0,x.parseColor)(O);U&&C.push({type:1,index:F,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(b){let C=b.indexOf(";");if(C===-1)return!0;let T=b.slice(0,C).trim(),R=b.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(b,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=b.split(":"),R,O=T.findIndex((F=>F.startsWith("id=")));return O!==-1&&(R=T[O].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(b,C){let T=b.split(";");for(let R=0;R<T.length&&!(C>=this._specialColors.length);++R,++C)if(T[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let O=(0,x.parseColor)(T[R]);O&&this._onColor.fire([{type:1,index:this._specialColors[C],color:O}])}return!0}setOrReportFgColor(b){return this._setOrReportSpecialColor(b,0)}setOrReportBgColor(b){return this._setOrReportSpecialColor(b,1)}setOrReportCursorColor(b){return this._setOrReportSpecialColor(b,2)}restoreIndexedColor(b){if(!b)return this._onColor.fire([{type:2}]),!0;let C=[],T=b.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let O=parseInt(T[R]);z(O)&&C.push({type:2,index:O})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(b){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(b){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(b){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,k.DEFAULT_CHARSET),!0}selectCharset(b){return b.length!==2?(this.selectDefaultCharset(),!0):(b[0]==="/"||this._charsetService.setgCharset($[b[0]],k.CHARSETS[b[1]]||k.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let b=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,b,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(b){return this._charsetService.setgLevel(b),!0}screenAlignmentPattern(){let b=new f.CellData;b.content=4194373,b.fg=this._curAttrData.fg,b.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(b),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(b,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(O=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${O}${a.C0.ESC}\\`),!0))(b==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:b==='"p'?'P1$r61;1"p':b==="r"?`P1$r${T.scrollTop+1};${T.scrollBottom+1}r`:b==="m"?"P1$r0m":b===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(b,C){this._dirtyRowTracker.markRangeDirty(b,C)}}i.InputHandler=G;let N=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,b){q>b&&(H=q,q=b,b=H),q<this.start&&(this.start=q),b>this.end&&(this.end=b)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function z(q){return 0<=q&&q<256}N=d([w(0,h.IBufferService)],N)},701:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let w=c.match(/Version\/(\d+)/);return w===null||w.length<2?0:parseInt(w[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class w{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,_=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),_=Math.max(m,_),g=l.timeRemaining(),1.5*_>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends w{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends w{_requestCallback(k){return requestIdleCallback(k)}_cancelCallback(k){cancelIdleCallback(k)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(k){this._queue.clear(),this._queue.enqueue(k)}flush(){this._queue.flush()}}},5882:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(w){let a=w.buffer.lines.get(w.buffer.ybase+w.buffer.y-1),k=a?.get(w.cols-1),l=w.buffer.lines.get(w.buffer.ybase+w.buffer.y);l&&k&&(l.isWrapped=k[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&k[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,k=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=k}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),w=c(6168),a=c(5451),k=c(6107),l=c(732),m=c(3055),_=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=k.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new w.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new k.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=k.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(k.DEFAULT_ATTR_DATA),y=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let P=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new k.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new k.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let P=0;P<this.lines.length;P++)y+=+this.lines.get(P).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(k.DEFAULT_ATTR_DATA),h);if(y.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new k.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(k.DEFAULT_ATTR_DATA),S=[],P=0;for(let x=this.lines.length-1;x>=0;x--){let W=this.lines.get(x);if(!W||!W.isWrapped&&W.getTrimmedLength()<=f)continue;let $=[W];for(;W.isWrapped&&x>0;)W=this.lines.get(--x),$.unshift(W);if(!h){let T=this.ybase+this.y;if(T>=x&&T<x+$.length)continue}let D=$[$.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,f),E=A.length-$.length,H;H=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let G=[];for(let T=0;T<E;T++){let R=this.getBlankLine(k.DEFAULT_ATTR_DATA,!0);G.push(R)}G.length>0&&(S.push({start:x+$.length+P,newLines:G}),P+=G.length),$.push(...G);let N=A.length-1,z=A[N];z===0&&(N--,z=A[N]);let q=$.length-E-1,b=D;for(;q>=0;){let T=Math.min(b,z);if($[N]===void 0)break;if($[N].copyCellsFrom($[q],b-T,z-T,T,!0),z-=T,z===0&&(N--,z=A[N]),b-=T,b===0){q--;let R=Math.max(q,0);b=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)A[T]<f&&$[T].setCell(A[T],y);let C=E-H;for(;C-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],W=[];for(let z=0;z<this.lines.length;z++)W.push(this.lines.get(z));let $=this.lines.length,D=$-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let H=0;for(let z=Math.min(this.lines.maxLength-1,$+P-1);z>=0;z--)if(E&&E.start>D+H){for(let q=E.newLines.length-1;q>=0;q--)this.lines.set(z--,E.newLines[q]);z++,x.push({index:D+1,amount:E.newLines.length}),H+=E.newLines.length,E=S[++A]}else this.lines.set(z,W[D--]);let G=0;for(let z=x.length-1;z>=0;z--)x[z].index+=G,this.lines.onInsertEmitter.fire(x[z]),G+=x[z].amount;let N=Math.max(0,$+P-this.lines.maxLength);N>0&&this.lines.onTrimEmitter.fire(N)}}translateBufferLineToString(f,u,h=0,y){let S=this.lines.get(f);return S?S.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),w=c(3055),a=c(8938),k=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||w.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,k.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,k.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,k.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,k.stringFromCodePoint)(2097151&u)+(0,k.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new w.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new w.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let S=parseInt(u[y],10);S>=n&&delete this._combined[S]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let S=parseInt(h[y],10);S>=n&&delete this._extendedAttrs[S]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let P=u-1;P>=0;P--){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}else for(let P=0;P<u;P++){for(let x=0;x<3;x++)this._data[3*(f+P)+x]=y[3*(g+P)+x];268435456&y[3*(g+P)+2]&&(this._extendedAttrs[f+P]=n._extendedAttrs[g+P])}let S=Object.keys(n._combined);for(let P=0;P<S.length;P++){let x=parseInt(S[P],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],S=2097151&y,P=2097152&y?this._combined[g]:S?(0,k.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=P,u)for(let x=0;x<P.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(v,i)=>{function c(d,w,a){if(w===d.length-1)return d[w].getTrimmedLength();let k=!d[w].hasContent(a-1)&&d[w].getWidth(a-1)===1,l=d[w+1].getWidth(0)===2;return k&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,w,a,k,l,m){let _=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&k>=n&&k<g){n+=u.length-1;continue}let h=0,y=c(u,h,w),S=1,P=0;for(;S<u.length;){let W=c(u,S,w),$=W-P,D=a-y,A=Math.min($,D);u[h].copyCellsFrom(u[S],P,y,A,!1),y+=A,y===a&&(h++,y=0),P+=A,P===W&&(S++,P=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let W=u.length-1;W>0&&(W>h||u[W].getTrimmedLength()===0);W--)x++;x>0&&(_.push(n+u.length-x),_.push(x)),n+=u.length-1}return _},i.reflowLargerCreateNewLayout=function(d,w){let a=[],k=0,l=w[k],m=0;for(let _=0;_<d.length;_++)if(l===_){let n=w[++k];d.onDeleteEmitter.fire({index:_-m,amount:n}),_+=n-1,m+=n,l=w[++k]}else a.push(_);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,w){let a=[];for(let k=0;k<w.length;k++)a.push(d.get(w[k]));for(let k=0;k<a.length;k++)d.set(k,a[k]);d.length=w.length},i.reflowSmallerGetNewLineLengths=function(d,w,a){let k=[],l=d.map(((g,f)=>c(d,f,w))).reduce(((g,f)=>g+f)),m=0,_=0,n=0;for(;n<l;){if(l-n<a){k.push(l-n);break}m+=a;let g=c(d,_,w);m>g&&(m-=g,_++);let f=d[_].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;k.push(u),n+=u}return k},i.getWrappedLineTrimmedLength=c},4097:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),w=c(1073),a=c(802);class k extends d.Disposable{constructor(m,_){super(),this._optionsService=m,this._bufferService=_,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new w.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new w.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,_){this._normal.resize(m,_),this._alt.resize(m,_),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=k},3055:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),w=c(8938),a=c(5451);class k extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let _=new k;return _.setFromCharData(m),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[w.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(m[w.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(m[w.CHAR_DATA_CHAR_INDEX].length===2){let n=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[w.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=m[w.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[w.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=m[w.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[w.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=k},8938:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),w=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,w.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(v,i)=>{var c,d,w;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
+
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(w||(i.C1_ESCAPED=w={}))},726:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,w=c.length){let a="";for(let k=d;k<w;++k){let l=c[k];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let w=c.length;if(!w)return 0;let a=0,k=0;if(this._interim){let l=c.charCodeAt(k++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=k;l<w;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=w)return this._interim=m,a;let _=c.charCodeAt(l);56320<=_&&_<=57343?d[a++]=1024*(m-55296)+_-56320+65536:(d[a++]=m,d[a++]=_)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let w=c.length;if(!w)return 0;let a,k,l,m,_=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)y<<=6,y|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,W=x-P;for(;g<W;){if(g>=w)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[P++]=S,y<<=6,y|=63&S}h||(x===2?y<128?g--:d[_++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[_++]=y):y<65536||y>1114111||(d[_++]=y)),this.interim.fill(0)}let f=w-4,u=g;for(;u<w;){for(;!(!(u<f)||128&(a=c[u])||128&(k=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[_++]=a,d[_++]=k,d[_++]=l,d[_++]=m,u+=4;if(a=c[u++],a<128)d[_++]=a;else if((224&a)==192){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(n=(31&a)<<6|63&k,n<128){u--;continue}d[_++]=n}else if((240&a)==224){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,_;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&k)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[_++]=n}else if((248&a)==240){if(u>=w)return this.interim[0]=a,_;if(k=c[u++],(192&k)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,_;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=w)return this.interim[0]=a,this.interim[1]=k,this.interim[2]=l,_;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&k)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[_++]=n}}return _}}},7428:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),w=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],k;i.UnicodeV6=class{constructor(){if(this.version="6",!k){k=new Uint8Array(65536),k.fill(1),k[0]=0,k.fill(0,1,32),k.fill(0,127,160),k.fill(2,4352,4448),k[9001]=2,k[9002]=2,k.fill(2,11904,42192),k[12351]=1,k.fill(2,44032,55204),k.fill(2,63744,64256),k.fill(2,65040,65050),k.fill(2,65072,65136),k.fill(2,65280,65377),k.fill(2,65504,65511);for(let l=0;l<w.length;++l)k.fill(0,w[l][0],w[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?k[l]:(function(m,_){let n,g=0,f=_.length-1;if(m<_[0][0]||m>_[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>_[n][1])g=n+1;else{if(!(m<_[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let _=this.wcwidth(l),n=_===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>_&&(_=g)}return d.UnicodeService.createPropertyValue(0,_,n)}}},3562:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),w=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new w.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let _;for(this._isSyncWriting=!0;_=this._writeBuffer.shift();){this._action(_);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let _=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(_,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-_>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let k=a.toLowerCase();if(k.indexOf("rgb:")===0){k=k.slice(4);let l=c.exec(k);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(k.indexOf("#")===0&&(k=k.slice(1),d.exec(k)&&[3,6,9,12].includes(k.length))){let l=k.length/3,m=[0,0,0];for(let _=0;_<3;++_){let n=parseInt(k.slice(l*_,l*_+l),16);m[_]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,k=16){let[l,m,_]=a;return`rgb:${w(l,k)}/${w(m,k)}/${w(_,k)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function w(a,k){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(k){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),w=c(7262),a=c(1263),k=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=k,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=k}registerHandler(m,_){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(_),{dispose:()=>{let g=n.indexOf(_);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=k,this._ident=0}hook(m,_){if(this.reset(),this._ident=m,this._active=this._handlers[m]||k,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(m,_,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,_,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,_,n))}unhook(m,_=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=_,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=k,this._ident=0}};let l=new w.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,_,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,_,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let _=!1;if(this._hitLimit)_=!1;else if(m&&(_=this._handler(this._data,this._params),_ instanceof Promise))return _.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),w=c(7262),a=c(1346),k=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((P,x)=>x)),f=(P,x)=>g.slice(P,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class _ extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new w.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new k.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let S=g.intermediates.charCodeAt(y);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,S=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,W=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](this._params),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&W>-1){for(;W>=0&&(h=x[W](),h!==!0);W--)if(h instanceof Promise)return this._parseStack.handlerPos=W,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=P;x<f;++x){switch(y=g[x],S=this._transitions.table[this.currentState<<8|(y<160?y:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let W=this._csiHandlers[this._collect<<8|y],$=W?W.length-1:-1;for(;$>=0&&(h=W[$](this._params),h!==!0);$--)if(h instanceof Promise)return this._preserveStack(3,W,$,S,x),h;$<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=_},1346:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),w=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(k,l){this._handlers[k]===void 0&&(this._handlers[k]=[]);let m=this._handlers[k];return m.push(l),{dispose:()=>{let _=m.indexOf(l);_!==-1&&m.splice(_,1)}}}clearHandler(k){this._handlers[k]&&delete this._handlers[k]}setHandlerFallback(k){this._handlerFb=k}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let k=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;k>=0;--k)this._active[k].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let k=this._active.length-1;k>=0;k--)this._active[k].start();else this._handlerFb(this._id,"START")}_put(k,l,m){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(k,l,m);else this._handlerFb(this._id,"PUT",(0,w.utf32ToString)(k,l,m))}start(){this.reset(),this._state=1}put(k,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let _=k[l++];if(_===59){this._state=2,this._start();break}if(_<48||57<_)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+_-48}this._state===2&&m-l>0&&this._put(k,l,m)}}end(k,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,_=this._active.length-1,n=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;_>=0&&(m=this._active[_].end(k),m!==!0);_--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!1,m;_--}for(;_>=0;_--)if(m=this._active[_].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",k);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(k){this._handler=k,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(k,l,m){this._hitLimit||(this._data+=(0,w.utf32ToString)(k,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(k){let l=!1;if(this._hitLimit)l=!1;else if(k&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let k=new d;if(!a.length)return k;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let _=0;_<m.length;++_)k.addSubParam(m[_]);else k.addParam(m)}return k}constructor(a=32,k=32){if(this.maxLength=a,this.maxSubParamsLength=k,k>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(k),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let k=0;k<this.length;++k){a.push(this.params[k]);let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let k=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-k>0?this._subParams.subarray(k,l):null}getSubParamsAll(){let a={};for(let k=0;k<this.length;++k){let l=this._subParamsIdx[k]>>8,m=255&this._subParamsIdx[k];m-l>0&&(a[k]=this._subParams.slice(l,m))}return a}addDigit(a){let k;if(this._rejectDigits||!(k=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[k-1];l[k-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let w={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(w),d.dispose=()=>this._wrappedAddonDispose(w),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let w=0;w<this._addons.length;w++)if(this._addons[w]===c){d=w;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),w=c(3055);i.BufferApiView=class{constructor(a,k){this._buffer=a,this.type=k}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let k=this._buffer.lines.get(a);if(k)return new d.BufferLineApiView(k)}getNullCell(){return new w.CellData}}},793:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(w){this._line=w}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(w,a){if(!(w<0||w>=this._line.length))return a?(this._line.loadCell(w,a),a):this._line.loadCell(w,new d.CellData)}translateToString(w,a,k){return this._line.translateToString(w,a,k)}}},5101:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),w=c(7150),a=c(802);class k extends w.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=k},6097:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(w=>d(w.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((w,a)=>d(w,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),k=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new k.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;y===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=y-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=_,i.BufferService=_=d([w(0,l.IOptionsService)],_)},5746:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(v,i,c){var d=this&&this.__decorate||function(u,h,y,S){var P,x=arguments.length,W=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,y):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(u,h,y,S);else for(var $=u.length-1;$>=0;$--)(P=u[$])&&(W=(x<3?P(W):x>3?P(h,y,W):P(h,y))||W);return x>3&&W&&Object.defineProperty(h,y,W),W},w=this&&this.__param||function(u,h){return function(y,S){h(y,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),k=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function _(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[_(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${_(u,!0)};${u.x};${u.y}${h}`}},f=class extends k.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let S=h/y,P=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(u.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([w(0,a.IBufferService),w(1,a.ICoreService),w(2,a.IOptionsService)],f)},4071:function(v,i,c){var d=this&&this.__decorate||function(f,u,h,y){var S,P=arguments.length,x=P<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var W=f.length-1;W>=0;W--)(S=f[W])&&(x=(P<3?S(x):P>3?S(u,h,x):S(u,h))||x);return P>3&&x&&Object.defineProperty(u,h,x),x},w=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),k=c(7150),l=c(6501),m=c(802),_=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends k.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([w(0,l.IBufferService),w(1,l.ILogService),w(2,l.IOptionsService)],g)},6025:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),w=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,_]of l)this.set(m,_)}set(l,m){let _=this._entries.get(l);return this._entries.set(l,m),_}forEach(l){for(let[m,_]of this._entries.entries())l(m,_)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(k,l){this._services.set(k,l)}getService(k){return this._services.get(k)}createInstance(k,...l){let m=(0,w.getServiceDependencies)(k).sort(((g,f)=>g.index-f.index)),_=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${k.name} depends on UNKNOWN service ${g.id._id}.`);_.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${k.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new k(...l,..._)}}},7276:function(v,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var P=n.length-1;P>=0;P--)(h=n[P])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},w=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==k.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),k=c(6501),l={trace:k.LogLevelEnum.TRACE,debug:k.LogLevelEnum.DEBUG,info:k.LogLevelEnum.INFO,warn:k.LogLevelEnum.WARN,error:k.LogLevelEnum.ERROR,off:k.LogLevelEnum.OFF},m,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=k.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=k.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=k.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=k.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=k.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=k.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=_,i.LogService=_=d([w(0,k.IOptionsService)],_)},56:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),w=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:w.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let k=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in _)if(g in n)try{let f=_[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,n){return this.onOptionChange((g=>{g===_&&n(this.rawOptions[_])}))}onMultipleOptionChange(_,n){return this.onOptionChange((g=>{_.indexOf(g)!==-1&&n()}))}_setupOptions(){let _=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:_.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(_,n){switch(_){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[_]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${_}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=k.includes(n)?n:i.DEFAULT_OPTIONS[_];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${_} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${_} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(v,i,c){var d=this&&this.__decorate||function(l,m,_,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,_):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,_,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,_,u):g(m,_))||u);return f>3&&u&&Object.defineProperty(m,_,u),u},w=this&&this.__param||function(l,m){return function(_,n){m(_,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),k=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let _=l,n=this._getEntryIdKey(_),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);_.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(_,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let _=l.lines.indexOf(m);_!==-1&&(l.lines.splice(_,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=k,i.OscLinkService=k=d([w(0,a.IBufferService)],k)},6201:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(w){return w[d]||[]},i.createDecorator=function(w){if(i.serviceRegistry.has(w))return i.serviceRegistry.get(w);let a=function(k,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,n,g){n[c]===n?n[d].push({id:_,index:g}):(n[d]=[{id:_,index:g}],n[c]=n)})(a,k,m)};return a._id=w,i.serviceRegistry.set(w,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var w;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(w||(i.LogLevelEnum=w={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),w=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,_=!1){return(16777215&l)<<3|(3&m)<<1|(_?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new w.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,_=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,_),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(_)),m+=h,_=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),w=c(5777),a=c(802);class k extends w.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,_=!0){this.coreService.triggerDataEvent(m,_)}resize(m,_){m===this.cols&&_===this.rows||super.resize(m,_)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=k},3058:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,S=(P,x)=>P===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let P=0,x=h.length;P<x;P++)if(!S(h[P],y[P]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let S=h.length-1;y<S&&(h[y]=h[S]),h.pop()},i.binarySearch=function(h,y,S){return a(h.length,(P=>S(h[P],y)))},i.binarySearch2=a,i.quickSelect=function h(y,S,P){if((y|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],W=[],$=[],D=[];for(let A of S){let E=P(A,x);E<0?W.push(A):E>0?$.push(A):D.push(A)}return y<W.length?h(y,W,P):y<W.length+D.length?D[0]:h(y-(W.length+D.length),$,P)},i.groupBy=function(h,y){let S=[],P;for(let x of h.slice(0).sort(y))P&&y(P[0],x)===0?P.push(x):(P=[x],S.push(P));return S},i.groupAdjacentBy=function*(h,y){let S,P;for(let x of h)P!==void 0&&y(P,x)?S.push(x):(S&&(yield S),S=[x]),P=x;S&&(yield S)},i.forEachAdjacent=function(h,y){for(let S=0;S<=h.length;S++)y(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,y){for(let S=0;S<h.length;S++)y(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=k,i.delta=function(h,y,S){let P=k(h,y,S),x=[],W=[];for(let $ of P)x.push(...h.slice($.start,$.start+$.deleteCount)),W.push(...$.toInsert);return{removed:x,added:W}},i.top=function(h,y,S){if(S===0)return[];let P=h.slice(0,S).sort(y);return l(h,y,P,S,h.length),P},i.topAsync=function(h,y,S,P,x){return S===0?Promise.resolve([]):new Promise(((W,$)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(y);for(let E=S,H=Math.min(S+P,D);E<D;E=H,H=Math.min(H+P,D)){if(E>S&&await new Promise((G=>setTimeout(G))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,H)}return A})().then(W,$)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let S=0;S<h.length;S++)h[S]&&(h[y]=h[S],y+=1);h.length=y},i.move=function(h,y,S){h.splice(S,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=S=>S){let S=new Set;return h.filter((P=>{let x=y(P);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return S=>{let P=h(S);return!y.has(P)&&(y.add(P),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,S=(P,x)=>P===x){let P=0;for(let x=0,W=Math.min(h.length,y.length);x<W&&S(h[x],y[x]);x++)P++;return P},i.range=function(h,y){let S=typeof y=="number"?h:0;typeof y=="number"?S=h:(S=0,y=h);let P=[];if(S<=y)for(let x=S;x<y;x++)P.push(x);else for(let x=S;x>y;x--)P.push(x);return P},i.index=function(h,y,S){return h.reduce(((P,x)=>(P[y(x)]=S?S(x):x,P)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,S){let P=h.slice(0,y),x=h.slice(y);return P.concat(S,x)},i.shuffle=function(h,y){let S;if(typeof y=="number"){let P=y;S=()=>{let x=179426549*Math.sin(P++);return x-Math.floor(x)}}else S=Math.random;for(let P=h.length-1;P>0;P-=1){let x=Math.floor(S()*(P+1)),W=h[P];h[P]=h[x],h[x]=W}},i.pushToStart=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.unshift(y))},i.pushToEnd=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.push(y))},i.pushMany=function(h,y){for(let S of y)h.push(S)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=_,i.splice=function(h,y,S,P){let x=n(h,y),W=h.splice(x,S);return W===void 0&&(W=[]),_(h,x,P),W},i.compareBy=function(h,y){return(S,P)=>y(h(S),h(P))},i.tieBreakComparators=function(...h){return(y,S)=>{for(let P of h){let x=P(y,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,S)=>-h(y,S)};let d=c(9807),w=c(8297);function a(h,y){let S=0,P=h-1;for(;S<=P;){let x=(S+P)/2|0,W=y(x);if(W<0)S=x+1;else{if(!(W>0))return x;P=x-1}}return-(S+1)}function k(h,y,S){let P=[];function x(D,A,E){if(A===0&&E.length===0)return;let H=P[P.length-1];H&&H.start+H.deleteCount===D?(H.deleteCount+=A,H.toInsert.push(...E)):P.push({start:D,deleteCount:A,toInsert:E})}let W=0,$=0;for(;;){if(W===h.length){x(W,0,y.slice($));break}if($===y.length){x(W,h.length-W,[]);break}let D=h[W],A=y[$],E=S(D,A);E===0?(W+=1,$+=1):E<0?(x(W,1,[]),W+=1):E>0&&(x(W,0,[A]),$+=1)}return P}function l(h,y,S,P,x){for(let W=S.length;P<x;P++){let $=h[P];if(y($,S[W-1])<0){S.pop();let D=(0,w.findFirstIdxMonotonousOrArrLen)(S,(A=>y($,A)<0));S.splice(D,0,$)}}}function m(h,y){let S=h.indexOf(y);if(S>-1)return h.splice(S,1),y}function _(h,y,S){let P=n(h,y),x=h.length,W=S.length;h.length=x+W;for(let $=x-1;$>=P;$--)h[$+W]=h[$];for(let $=0;$<W;$++)h[$+P]=S[$]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let S=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,S}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let S=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((S=>(y(S),!0)))}toArray(){let y=[];return this.iterate((S=>(y.push(S),!0))),y}filter(y){return new f((S=>this.iterate((P=>!y(P)||S(P)))))}map(y){return new f((S=>this.iterate((P=>S(y(P))))))}some(y){let S=!1;return this.iterate((P=>(S=y(P),!S))),S}findFirst(y){let S;return this.iterate((P=>!y(P)||(S=P,!1))),S}findLast(y){let S;return this.iterate((P=>(y(P)&&(S=P),!0))),S}findLastMaxBy(y){let S,P=!0;return this.iterate((x=>((P||g.isGreaterThan(y(x,S)))&&(P=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,S){let P=Array.from(y.keys()).sort(((x,W)=>S(y[x],y[W])));return new u(P)}apply(y){return y.map(((S,P)=>y[this._indexMap[P]]))}inverse(){let y=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)y[this._indexMap[S]]=S;return new u(y)}}i.Permutation=u},8297:(v,i)=>{function c(l,m,_=l.length-1){for(let n=_;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function w(l,m,_=0,n=l.length){let g=_,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let _=c(l,m);if(_!==-1)return l[_]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let _=d(l,m);return _===-1?void 0:l[_]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let _=w(l,m);return _===l.length?void 0:l[_]},i.findFirstIdxMonotonousOrArrLen=w,i.findFirstIdxMonotonous=function(l,m,_=0,n=l.length){let g=w(l,m,_,n);return g===l.length?-1:g},i.findFirstMax=k,i.findLastMax=function(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>=0&&(_=g)}return _},i.findFirstMin=function(l,m){return k(l,((_,n)=>-m(_,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let _=0;for(let n=1;n<l.length;n++)m(l[n],l[_])>0&&(_=n);return _},i.mapFindFirst=function(l,m){for(let _ of l){let n=m(_);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let _=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function k(l,m){if(l.length===0)return;let _=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,_)>0&&(_=g)}return _}i.MonotonousArray=a},9087:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(w,a){let k=Object.create(null);for(let l of w){let m=a(l),_=k[m];_||(_=k[m]=[]),_.push(l)}return k},i.diffSets=function(w,a){let k=[],l=[];for(let m of w)a.has(m)||k.push(m);for(let m of a)w.has(m)||l.push(m);return{removed:k,added:l}},i.diffMaps=function(w,a){let k=[],l=[];for(let[m,_]of w)a.has(m)||k.push(_);for(let[m,_]of a)w.has(m)||l.push(_);return{removed:k,added:l}},i.intersection=function(w,a){let k=new Set;for(let l of a)w.has(l)&&k.add(l);return k};class d{static{c=Symbol.toStringTag}constructor(a,k){this.toKey=k,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let k=this.toKey(a);return this._map.set(k,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,k){this._map.forEach((l=>a.call(k,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){w(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){w(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=w,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
|
|
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 k extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=k;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=_;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),w=c(8841),a=c(7150),k=c(6317),l=c(9725);var m;(function(A){function E(T){return(R,O=null,F)=>{let U,V=!1;return U=T((J=>{if(!V)return U?U.dispose():V=!0,R.call(O,J)}),null,F),V&&U.dispose(),U}}function H(T,R,O){return N(((F,U=null,V)=>T((J=>F.call(U,R(J))),null,V)),O)}function G(T,R,O){return N(((F,U=null,V)=>T((J=>R(J)&&F.call(U,J)),null,V)),O)}function N(T,R){let O,F=new P({onWillAddFirstListener(){O=T(F.fire,F)},onDidRemoveLastListener(){O?.dispose()}});return R?.add(F),F.event}function z(T,R,O=100,F=!1,U=!1,V,J){let I,Q,Y,ee,we=0,be=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Xe=>{we++,Q=R(Q,Xe),F&&!Y&&(be.fire(Q),Q=void 0),ee=()=>{let Ie=Q;Q=void 0,Y=void 0,(!F||we>1)&&be.fire(Ie),we=0},typeof O=="number"?(clearTimeout(Y),Y=setTimeout(ee,O)):Y===void 0&&(Y=0,queueMicrotask(ee))}))},onWillRemoveListener(){U&&we>0&&ee?.()},onDidRemoveLastListener(){ee=void 0,I.dispose()}});return J?.add(be),be.event}A.None=()=>a.Disposable.None,A.defer=function(T,R){return z(T,(()=>{}),0,void 0,!0,void 0,R)},A.once=E,A.map=H,A.forEach=function(T,R,O){return N(((F,U=null,V)=>T((J=>{R(J),F.call(U,J)}),null,V)),O)},A.filter=G,A.signal=function(T){return T},A.any=function(...T){return(R,O=null,F)=>{return U=(0,a.combinedDisposable)(...T.map((J=>J((I=>R.call(O,I)))))),(V=F)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},A.reduce=function(T,R,O,F){let U=O;return H(T,(V=>(U=R(U,V),U)),F)},A.debounce=z,A.accumulate=function(T,R=0,O){return A.debounce(T,((F,U)=>F?(F.push(U),F):[U]),R,void 0,!0,void 0,O)},A.latch=function(T,R=(F,U)=>F===U,O){let F,U=!0;return G(T,(V=>{let J=U||!R(V,F);return U=!1,F=V,J}),O)},A.split=function(T,R,O){return[A.filter(T,R,O),A.filter(T,(F=>!R(F)),O)]},A.buffer=function(T,R=!1,O=[],F){let U=O.slice(),V=T((Q=>{U?U.push(Q):I.fire(Q)}));F&&F.add(V);let J=()=>{U?.forEach((Q=>I.fire(Q))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((Q=>I.fire(Q))),F&&F.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(J):J())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return F&&F.add(I),I.event},A.chain=function(T,R){return(O,F,U)=>{let V=R(new b);return T((function(J){let I=V.evaluate(J);I!==q&&O.call(F,I)}),void 0,U)}};let q=Symbol("HaltChainable");class b{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((O=>(R(O),O))),this}filter(R){return this.steps.push((O=>R(O)?O:q)),this}reduce(R,O){let F=O;return this.steps.push((U=>(F=R(F,U),F))),this}latch(R=(O,F)=>O===F){let O,F=!0;return this.steps.push((U=>{let V=F||!R(U,O);return F=!1,O=U,V?U:q})),this}evaluate(R){for(let O of this.steps)if((R=O(R))===q)break;return R}}A.fromNodeEventEmitter=function(T,R,O=F=>F){let F=(...V)=>U.fire(O(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,F),onDidRemoveLastListener:()=>T.removeListener(R,F)});return U.event},A.fromDOMEventEmitter=function(T,R,O=F=>F){let F=(...V)=>U.fire(O(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,F),onDidRemoveLastListener:()=>T.removeEventListener(R,F)});return U.event},A.toPromise=function(T){return new Promise((R=>E(T)(R)))},A.fromPromise=function(T){let R=new P;return T.then((O=>{R.fire(O)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},A.forward=function(T,R){return T((O=>R.fire(O)))},A.runAndSubscribe=function(T,R,O){return R(O),T((F=>R(F)))};class C{constructor(R,O){this._observable=R,this._counter=0,this._hasChanged=!1;let F={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(F),O&&O.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,O){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}A.fromObservable=function(T,R){return new C(T,R).emitter.event},A.fromObservableLight=function(T){return(R,O,F)=>{let U=0,V=!1,J={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(O)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(J),T.reportChanges();let I={dispose(){T.removeObserver(J)}};return F instanceof a.DisposableStore?F.add(I):Array.isArray(F)&&F.push(I),I}}})(m||(i.Event=m={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(E){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${E}_${_._idPool++}`,_.all.add(this)}start(E){this._stopWatch=new l.StopWatch,this.listenerCount=E}stop(){if(this._stopWatch){let E=this._stopWatch.elapsed();this.durations.push(E),this.elapsedOverall+=E,this.invocationCount+=1,this._stopWatch=void 0}}}i.EventProfiling=_;let n=-1;class g{static{this._idPool=1}constructor(E,H,G=(g._idPool++).toString(16).padStart(3,"0")){this._errorHandler=E,this.threshold=H,this.name=G,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(E,H){let G=this.threshold;if(G<=0||H<G)return;this._stacks||(this._stacks=new Map);let N=this._stacks.get(E.value)||0;if(this._stacks.set(E.value,N+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*G;let[z,q]=this.getMostFrequentStack(),b=`[${this.name}] potential listener LEAK detected, having ${H} listeners already. MOST frequent listener (${q}):`;console.warn(b),console.warn(z);let C=new u(b,z);this._errorHandler(C)}return()=>{let z=this._stacks.get(E.value)||0;this._stacks.set(E.value,z-1)}}getMostFrequentStack(){if(!this._stacks)return;let E,H=0;for(let[G,N]of this._stacks)(!E||H<N)&&(E=[G,N],H=N);return E}}class f{static create(){let E=new Error;return new f(E.stack??"")}constructor(E){this.value=E}print(){console.warn(this.value.split(`
|
|
10
10
|
`).slice(2).join(`
|
|
11
|
-
`))}}class u extends Error{constructor(E,H){super(E),this.name="ListenerLeakError",this.stack=H}}i.ListenerLeakError=u;class h extends Error{constructor(E,H){super(E),this.name="ListenerRefusalError",this.stack=H}}i.ListenerRefusalError=h;let y=0;class S{constructor(E){this.value=E,this.id=y++}}class P{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new 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,H,G)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let b=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(b);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new h(`${b}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||d.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;H&&(E=E.bind(H));let N=new S(E),z;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(N.stack=f.create(),z=this._leakageMon.check(N.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,N]):this._listeners.push(N):(this._options?.onWillAddFirstListener?.(this),this._listeners=N,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,a.toDisposable)((()=>{z?.(),this._removeListener(N)}));return G instanceof a.DisposableStore?G.add(q):Array.isArray(G)&&G.push(q),q},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let H=this._listeners,G=H.indexOf(E);if(G===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,H[G]=void 0;let N=this._deliveryQueue.current===this;if(2*this._size<=H.length){let z=0;for(let q=0;q<H.length;q++)H[q]?H[z++]=H[q]:N&&(this._deliveryQueue.end--,z<this._deliveryQueue.i&&this._deliveryQueue.i--);H.length=z}}_deliver(E,H){if(!E)return;let G=this._options?.onListenerError||d.onUnexpectedError;if(G)try{E.value(H)}catch(N){G(N)}else E.value(H)}_deliverQueue(E){let H=E.current._listeners;for(;E.i<E.end;)this._deliver(H[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let H=this._deliveryQueue;H.enqueue(this,E,this._listeners.length),this._deliverQueue(H)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=P,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,H,G){this.i=0,this.end=G,this.current=E,this.value=H}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends P{async fireAsync(A,E,H){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new k.LinkedList),((G,N)=>{if(G instanceof S)N(G);else for(let z=0;z<G.length;z++){let q=G[z];q&&N(q)}})(this._listeners,(G=>this._asyncDeliveryQueue.push([G.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[G,N]=this._asyncDeliveryQueue.shift(),z=[],q={...N,token:E,waitUntil:b=>{if(Object.isFrozen(z))throw new Error("waitUntil can NOT be called asynchronous");H&&(b=H(b,G)),z.push(b)}};try{G(q)}catch(b){(0,d.onUnexpectedError)(b);continue}Object.freeze(z),await Promise.allSettled(z).then((b=>{for(let C of b)C.status==="rejected"&&(0,d.onUnexpectedError)(C.reason)}))}}};class W extends P{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new k.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=W,i.DebounceEmitter=class extends W{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends P{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class ${constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let H={event:E,listener:null};return this.events.push(H),this.hasListeners&&this.hook(H),(0,a.toDisposable)((0,_.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(H);let G=this.events.indexOf(H);this.events.splice(G,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((H=>this.emitter.fire(H)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=$,i.DynamicListEventMultiplexer=class{constructor(A,E,H,G){this._store=new a.DisposableStore;let N=this._store.add(new $),z=this._store.add(new a.DisposableMap);function q(b){z.set(b,N.add(G(b)))}for(let b of A)q(b);this._store.add(E((b=>{q(b)}))),this._store.add(H((b=>{z.deleteAndDispose(b)}))),this.event=N.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,H){return(G,N,z)=>A((q=>{let b=this.data[this.data.length-1];if(!E)return void(b?b.buffers.push((()=>G.call(N,q))):G.call(N,q));let C=b;C?(C.items??=[],C.items.push(q),C.buffers.length===0&&b.buffers.push((()=>{C.reducedResult??=H?C.items.reduce(E,H):C.items.reduce(E),G.call(N,C.reducedResult)}))):G.call(N,E(H,q))}),void 0,z)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let H=A();return this.data.pop(),E.buffers.forEach((G=>G())),H}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let _=this,a,k=!1;return function(){if(k)return a;if(k=!0,d)try{a=c.apply(_,arguments)}finally{d()}else a=c.apply(_,arguments);return a}}},4218:(v,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*k(l){yield l}d.empty=function(){return a},d.single=k,d.wrap=function(l){return _(l)?l:k(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let 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:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function($){m=$},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function($){return m?.markAsSingleton($),$},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function($){for(let D of $)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...$){let D=y((()=>h($)));return(function(A,E){if(m)for(let H of A)m.setParent(H,E)})($,D),D},i.toDisposable=y,i.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let d=c(3058),_=c(9087),a=c(2608),k=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 H=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,H),H}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let q=new Map,b=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,q).isSingleton));if(b.length===0)return;let C=new Set(b.map((T=>T.value)));if(E=b.filter((T=>!(T.parent&&C.has(T.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function H(q){let b=q.source.split(`
|
|
11
|
+
`))}}class u extends Error{constructor(E,H){super(E),this.name="ListenerLeakError",this.stack=H}}i.ListenerLeakError=u;class h extends Error{constructor(E,H){super(E),this.name="ListenerRefusalError",this.stack=H}}i.ListenerRefusalError=h;let y=0;class S{constructor(E){this.value=E,this.id=y++}}class P{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,H,G)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let b=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(b);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new h(`${b}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||d.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;H&&(E=E.bind(H));let N=new S(E),z;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(N.stack=f.create(),z=this._leakageMon.check(N.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,N]):this._listeners.push(N):(this._options?.onWillAddFirstListener?.(this),this._listeners=N,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,a.toDisposable)((()=>{z?.(),this._removeListener(N)}));return G instanceof a.DisposableStore?G.add(q):Array.isArray(G)&&G.push(q),q},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let H=this._listeners,G=H.indexOf(E);if(G===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,H[G]=void 0;let N=this._deliveryQueue.current===this;if(2*this._size<=H.length){let z=0;for(let q=0;q<H.length;q++)H[q]?H[z++]=H[q]:N&&(this._deliveryQueue.end--,z<this._deliveryQueue.i&&this._deliveryQueue.i--);H.length=z}}_deliver(E,H){if(!E)return;let G=this._options?.onListenerError||d.onUnexpectedError;if(G)try{E.value(H)}catch(N){G(N)}else E.value(H)}_deliverQueue(E){let H=E.current._listeners;for(;E.i<E.end;)this._deliver(H[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let H=this._deliveryQueue;H.enqueue(this,E,this._listeners.length),this._deliverQueue(H)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=P,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,H,G){this.i=0,this.end=G,this.current=E,this.value=H}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends P{async fireAsync(A,E,H){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new k.LinkedList),((G,N)=>{if(G instanceof S)N(G);else for(let z=0;z<G.length;z++){let q=G[z];q&&N(q)}})(this._listeners,(G=>this._asyncDeliveryQueue.push([G.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[G,N]=this._asyncDeliveryQueue.shift(),z=[],q={...N,token:E,waitUntil:b=>{if(Object.isFrozen(z))throw new Error("waitUntil can NOT be called asynchronous");H&&(b=H(b,G)),z.push(b)}};try{G(q)}catch(b){(0,d.onUnexpectedError)(b);continue}Object.freeze(z),await Promise.allSettled(z).then((b=>{for(let C of b)C.status==="rejected"&&(0,d.onUnexpectedError)(C.reason)}))}}};class W extends P{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new k.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=W,i.DebounceEmitter=class extends W{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends P{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class ${constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let H={event:E,listener:null};return this.events.push(H),this.hasListeners&&this.hook(H),(0,a.toDisposable)((0,w.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(H);let G=this.events.indexOf(H);this.events.splice(G,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((H=>this.emitter.fire(H)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=$,i.DynamicListEventMultiplexer=class{constructor(A,E,H,G){this._store=new a.DisposableStore;let N=this._store.add(new $),z=this._store.add(new a.DisposableMap);function q(b){z.set(b,N.add(G(b)))}for(let b of A)q(b);this._store.add(E((b=>{q(b)}))),this._store.add(H((b=>{z.deleteAndDispose(b)}))),this.event=N.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,H){return(G,N,z)=>A((q=>{let b=this.data[this.data.length-1];if(!E)return void(b?b.buffers.push((()=>G.call(N,q))):G.call(N,q));let C=b;C?(C.items??=[],C.items.push(q),C.buffers.length===0&&b.buffers.push((()=>{C.reducedResult??=H?C.items.reduce(E,H):C.items.reduce(E),G.call(N,C.reducedResult)}))):G.call(N,E(H,q))}),void 0,z)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let H=A();return this.data.pop(),E.buffers.forEach((G=>G())),H}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let w=this,a,k=!1;return function(){if(k)return a;if(k=!0,d)try{a=c.apply(w,arguments)}finally{d()}else a=c.apply(w,arguments);return a}}},4218:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function w(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=w;let a=Object.freeze([]);function*k(l){yield l}d.empty=function(){return a},d.single=k,d.wrap=function(l){return w(l)?l:k(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let _=0;for(let n of l)if(m(n,_++))return!0;return!1},d.find=function(l,m){for(let _ of l)if(m(_))return _},d.filter=function*(l,m){for(let _ of l)m(_)&&(yield _)},d.map=function*(l,m){let _=0;for(let n of l)yield m(n,_++)},d.flatMap=function*(l,m){let _=0;for(let n of l)yield*m(n,_++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,_){let n=_;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,_=l.length){for(m<0&&(m+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);m<_;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let _=[];if(m===0)return[_,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[_,d.empty()];_.push(f.value)}return[_,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let _ of l)m.push(_);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(v,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function($){m=$},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function($){return m?.markAsSingleton($),$},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function($){for(let D of $)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...$){let D=y((()=>h($)));return(function(A,E){if(m)for(let H of A)m.setParent(H,E)})($,D),D},i.toDisposable=y,i.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let d=c(3058),w=c(9087),a=c(2608),k=c(8841),l=c(4218),m=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let H=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,H),H}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let q=new Map,b=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,q).isSingleton));if(b.length===0)return;let C=new Set(b.map((T=>T.value)));if(E=b.filter((T=>!(T.parent&&C.has(T.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function H(q){let b=q.source.split(`
|
|
12
12
|
`).map((C=>C.trim().replace("at ",""))).filter((C=>C!==""));return(function(C,T){for(;C.length>0&&T.some((R=>typeof R=="string"?R===C[0]:C[0].match(R)));)C.shift()})(b,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),b.reverse()}let G=new a.SetMap;for(let q of E){let b=H(q);for(let C=0;C<=b.length;C++)G.add(b.slice(0,C).join(`
|
|
13
13
|
`),q)}E.sort((0,d.compareBy)((q=>q.idx),d.numberComparator));let N="",z=0;for(let q of E.slice(0,D)){z++;let b=H(q),C=[];for(let T=0;T<b.length;T++){let R=b[T];R=`(shared with ${G.get(b.slice(0,T+1).join(`
|
|
14
14
|
`)).size}/${E.length} leaks) at ${R}`;let O=G.get(b.slice(0,T).join(`
|
|
15
|
-
`)),F=(0,
|
|
15
|
+
`)),F=(0,w.groupBy)([...O].map((U=>H(U)[T])),(U=>U));delete F[b[T]];for(let[U,V]of Object.entries(F))C.unshift(` - stacktraces of ${V.length} other leaks continue with ${U}`);C.unshift(R)}N+=`
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
==================== Leaking disposable ${z}/${E.length}: ${q.value.constructor.name} ====================
|
|
@@ -25,8 +25,8 @@ ${C.join(`
|
|
|
25
25
|
|
|
26
26
|
... and ${E.length-D} more leaking disposables
|
|
27
27
|
|
|
28
|
-
`),{leaks:E,details:N}}}function n($){return m?.trackDisposable($),$}function g($){m?.markAsDisposed($)}function f($,D){m?.setParent($,D)}function u($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function h($){if(l.Iterable.is($)){let D=[];for(let A of $)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray($)?[]:$}if($)return $.dispose(),$}function y($){let D=n({dispose:(0,k.createSingleCallFunction)((()=>{g(D),$()}))});return D}i.DisposableTracker=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 P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=P;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor($){this._disposable=new x,this._isDisposed=!1,this._disposable.value=$}get value(){return this._disposable.value}set value($){this._isDisposed||$===this._disposable.value||(this._disposable.value=$)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let A=this.references.get($);A||(A={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,A));let{object:E}=A,H=(0,k.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject($,A.object),this.references.delete($))}));return A.counter++,{object:E,dispose:H}}},i.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let A=this.referenceCollection.acquire($,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class W{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=W},6317:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let k=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=k}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,k){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(k){let 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 k=a.prev;k.next=a.next,a.next.prev=k}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,_,a){let k=d.get(_);return k===void 0&&(k=a,d.set(_,k)),k},i.mapToString=function(d){let _=[];return d.forEach(((a,k)=>{_.push(`${k} => ${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,k]of d)if(!_.has(a)||_.get(a)!==k)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,k)=>{d.call(_,a,k,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:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(v){var i=t[v];if(i!==void 0)return i.exports;var c=t[v]={exports:{}};return e[v].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var v=s;Object.defineProperty(v,"__esModule",{value:!0}),v.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),_=r(5856),a=r(3027),k=r(7150),l=["cols","rows"];class m extends k.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")}}v.Terminal=m})();var o=
|
|
28
|
+
`),{leaks:E,details:N}}}function n($){return m?.trackDisposable($),$}function g($){m?.markAsDisposed($)}function f($,D){m?.setParent($,D)}function u($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function h($){if(l.Iterable.is($)){let D=[];for(let A of $)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray($)?[]:$}if($)return $.dispose(),$}function y($){let D=n({dispose:(0,k.createSingleCallFunction)((()=>{g(D),$()}))});return D}i.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=P;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor($){this._disposable=new x,this._isDisposed=!1,this._disposable.value=$}get value(){return this._disposable.value}set value($){this._isDisposed||$===this._disposable.value||(this._disposable.value=$)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let A=this.references.get($);A||(A={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,A));let{object:E}=A,H=(0,k.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject($,A.object),this.references.delete($))}));return A.counter++,{object:E,dispose:H}}},i.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let A=this.referenceCollection.acquire($,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class W{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=W},6317:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let k=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=k}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,k){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(k){let _=this._last;this._last=l,l.prev=_,_.next=l}else{let _=this._first;this._first=l,l.next=_,_.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let k=a.prev;k.next=a.next,a.next.prev=k}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(v,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,w,a){let k=d.get(w);return k===void 0&&(k=a,d.set(w,k)),k},i.mapToString=function(d){let w=[];return d.forEach(((a,k)=>{w.push(`${k} => ${a}`)})),`Map(${d.size}) {${w.join(", ")}}`},i.setToString=function(d){let w=[];return d.forEach((a=>{w.push(a)})),`Set(${d.size}) {${w.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,w){if(d===w)return!0;if(d.size!==w.size)return!1;for(let[a,k]of d)if(!w.has(a)||w.get(a)!==k)return!1;for(let[a]of w)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let w=this.map.get(d)||0;return w!==0&&(w--,w===0?this.map.delete(d):this.map.set(d,w),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[w,a]of d)this.set(w,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,w){this._m1.set(d,w),this._m2.set(w,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let w=this._m1.get(d);return w!==void 0&&(this._m1.delete(d),this._m2.delete(w),!0)}forEach(d,w){this._m1.forEach(((a,k)=>{d.call(w,a,k,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,w){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(w)}delete(d,w){let a=this.map.get(d);a&&(a.delete(w),a.size===0&&this.map.delete(d))}forEach(d,w){let a=this.map.get(d);a&&a.forEach(w)}get(d){return this.map.get(d)||new Set}}},9725:(v,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(v){var i=t[v];if(i!==void 0)return i.exports;var c=t[v]={exports:{}};return e[v].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var v=s;Object.defineProperty(v,"__esModule",{value:!0}),v.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),w=r(5856),a=r(3027),k=r(7150),l=["cols","rows"];class m extends k.Disposable{constructor(n){super(),this._core=this._register(new w.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
|
|
29
|
+
`,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}v.Terminal=m})();var o=_o;for(var p in s)o[p]=s[p];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Ee();function en(e){let t=[...e];for(;t[0]==="--";)t.shift();if(t.length===0)return{mode:"interactive"};if(t.length>=3&&t[0]==="repo"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Repo path cannot be empty.
|
|
30
30
|
|
|
31
31
|
`+_e());return{mode:"command",command:{kind:"addRepo",path:r}}}if(t.length>=3&&t[0]==="workspace"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Workspace path cannot be empty.
|
|
32
32
|
|
|
@@ -36,7 +36,7 @@ ${_e()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t
|
|
|
36
36
|
|
|
37
37
|
`+_e());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
|
|
38
38
|
|
|
39
|
-
`+_e());let p=r===-1?void 0:t[r+1]?.trim()??"",v=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:
|
|
39
|
+
`+_e());let p=r===-1?void 0:t[r+1]?.trim()??"",v=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:Zs(t[o+1]?.trim()??""),d=t.filter((w,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(p!==void 0&&p.length===0)throw new Error(`Repo id cannot be empty.
|
|
40
40
|
|
|
41
41
|
`+_e());if(v!==void 0&&v.length===0)throw new Error(`Workspace id cannot be empty.
|
|
42
42
|
|
|
@@ -44,18 +44,18 @@ ${_e()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t
|
|
|
44
44
|
|
|
45
45
|
`+_e());return{mode:"command",command:{kind:"createTask",...p?{repoId:p}:{},...v?{workspaceId:v}:{},prompt:d,...i?{runner:i}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
46
46
|
|
|
47
|
-
${_e()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Fe(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Fe(t[2]),repoId:
|
|
47
|
+
${_e()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Fe(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Fe(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Fe(t[2]),repoId:Ca(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:Fe(t[2])}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
48
48
|
|
|
49
49
|
${_e()}`)}function _e(){return["Craig commands:"," craig Show the Craig phase 0 placeholder"," craig repo add Register a repo in the current Craig workspace"," craig workspace add <path> Register a repo or parent-directory workspace"," craig repo list List registered repos"," craig repo remove Remove a registered repo"," craig workspace list List active workspaces"," craig workspace list --archived List archived workspaces"," craig workspace archive Archive a workspace"," craig workspace restore Restore an archived workspace"," craig workspace remove Remove an archived workspace"," craig task new --repo <repo-id> [--runner codex|cursor|claude] <prompt> Create a new Craig repo task"," craig task new --workspace <workspace-id> [--runner codex|cursor|claude] <prompt> Create a new Craig workspace task"," craig task list [--repo <repo-id>] List known Craig tasks"," craig task show Show details for a Craig task"," craig task logs Stream Craig-managed logs for a task"," craig task diff Show the current worktree diff for a task"," craig task attach Attach to a live task session"," craig task focus Focus the tmux pane for a task"," craig task open Open the task worktree or print its path"," craig task check Run configured checks for a task"," craig task commit Commit all task worktree changes"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
|
|
50
50
|
`)}function Fe(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
|
|
51
51
|
|
|
52
|
-
${_e()}`);return t}function
|
|
52
|
+
${_e()}`);return t}function Ca(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
|
|
53
53
|
|
|
54
|
-
${_e()}`);return t}import
|
|
55
|
-
`,"utf8")}function en(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!le.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${le.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function xa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}We();import{readFile as Ma,readdir as gf,rm as mf}from"node:fs/promises";import Oa from"node:path";async function gt(e,t){let r=await Ma(Fr(e,t),"utf8"),s=JSON.parse(r);return Ba(s,Fr(e,t))}async function nt(e,t){await de(Fr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Fr(e,t){return Oa.join(e.sessionsDir,`${t}.json`)}function Ba(e,t){let r=Na(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")||!Fa(r.attach)||!$a(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 $a(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 Fa(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 Na(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Te();_t();Ce();function Kt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as fc,constants as pc}from"node:fs";import{homedir as hn}from"node:os";import Ye from"node:path";var gc=[Ye.join(hn(),".local","bin"),Ye.join(hn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function pn(e=process.env){return _c([...(e.PATH??"").split(Ye.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:gc])}function at(e=process.env){return{...e,PATH:pn(e).join(Ye.delimiter)}}function mc(e,t={}){if(e.includes(Ye.sep)){let r=Ye.isAbsolute(e)?e:Ye.resolve(t.cwd??process.cwd(),e);return fn(r)?r:null}for(let r of pn(t.env)){let s=Ye.join(r,e);if(fn(s))return s}return null}function ct(e,t={}){let r=mc(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 fn(e){try{return fc(e,pc.X_OK),!0}catch{return!1}}function _c(e){return[...new Set(e)]}Ee();Ce();import{spawn as wc}from"node:child_process";import{createHash as bc}from"node:crypto";import kc from"node:path";var yc="craig";async function gn(e,t,r){let s=Ur(e,t),o=Sc(),p=await te("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),v=Rc(p.stdout);return await vc(e,s),v}async function vc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await te("tmux",s,{cwd:e})}async function mn(e,t,r){await te("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function _n(e,t,r){await te("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function wn(e,t,r){await te("tmux",["pipe-pane","-o","-t",e,`cat >> ${Kt(t)}`],{cwd:r})}async function zt(e,t,r,s){let o=s??bn(e);if(r?await te("tmux",["select-window","-t",r],{cwd:e}):await te("tmux",["select-window","-t",t],{cwd:e}),await te("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await te("tmux",["switch-client","-t",o],{cwd:e});return}await Pc(e,["attach-session","-t",o])}function bn(e){let r=kc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=bc("sha1").update(e).digest("hex").slice(0,8);return`${yc}-${r}-${s}`}function Ur(e,t){return`${bn(e)}-${t.toLowerCase()}`}function Sc(){let e=Tc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Tc(){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 Rc(e){let t=Cc(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 Cc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Pc(e,t){await new Promise((r,s)=>{let o=wc("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 qr={async prepare(e,t){let r=e.runnerSession.command[0]??me(e.runner)[0],s=at();await te(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:me(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await _n(t.session.paneId,[s,...r.slice(1)].map(o=>Kt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ee();Ce();var Tt={async create(e,t){let r=await gn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await wn(r.paneId,t.logPath,t.repoRoot);let s=await kn({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||Ur(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Tt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await zt(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 mn(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 Ic(e,t)}};async function Ic(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return kn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function kn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Te();Ct();import{mkdir as Pt,rm as Nc,writeFile as Jt}from"node:fs/promises";import ie from"node:path";Ce();async function Rn(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 Kr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let v=await Fc(e,o);await te("git",["worktree","add","-b",t,r,v],{cwd:e})}async function Fc(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 Yt(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 Cn(e){await te("git",["add","-A"],{cwd:e})}async function Pn(e,t){await te("git",["commit","-m",t],{cwd:e})}async function In(e){let t=await te("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
-
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}Ee();ot();async function
|
|
54
|
+
${_e()}`);return t}import Nn from"node:path";Ee();import{mkdir as Pa,readFile as Ia,writeFile as xa}from"node:fs/promises";import Ea from"node:path";async function Ne(e){try{let t=await Ia(e.configFile,"utf8"),r=JSON.parse(t);return rn(r,e.configFile)}catch(t){if(Aa(t))return{};throw t instanceof SyntaxError?new Error(`Craig config at ${e.configFile} is malformed. Remove or repair the file before rerunning Craig.`):t}}async function tn(e,t){rn(t,e.configFile),await Pa(Ea.dirname(e.configFile),{recursive:!0}),await xa(e.configFile,`${JSON.stringify(t,null,2)}
|
|
55
|
+
`,"utf8")}function rn(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!le.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${le.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function Aa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}We();import{readFile as Ba,readdir as _f,rm as wf}from"node:fs/promises";import $a from"node:path";async function mt(e,t){let r=await Ba(Nr(e,t),"utf8"),s=JSON.parse(r);return Fa(s,Nr(e,t))}async function nt(e,t){await de(Nr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Nr(e,t){return $a.join(e.sessionsDir,`${t}.json`)}function Fa(e,t){let r=ja(e);if(typeof r!="object"||r===null||typeof r.id!="string"||typeof r.taskId!="string"||typeof r.repoId!="string"||typeof r.workspaceId!="string"||r.substrate!=="tmux"||typeof r.sessionName!="string"||typeof r.paneId!="string"||!(r.windowTarget===null||typeof r.windowTarget=="string")||typeof r.worktreePath!="string"||!(r.logPath===null||typeof r.logPath=="string")||!Array.isArray(r.command)||!r.command.every(s=>typeof s=="string")||!["starting","running","exited","failed"].includes(r.status)||!(r.startedAt===null||typeof r.startedAt=="string")||!(r.exitedAt===null||typeof r.exitedAt=="string")||!(r.exitCode===null||typeof r.exitCode=="number")||!(r.lastAttachedAt===null||typeof r.lastAttachedAt=="string")||!Wa(r.attach)||!Na(r.snapshot)||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig session record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Na(e){return e===null||typeof e=="object"&&e!==null&&typeof e.paneId=="string"&&(typeof e.windowTarget=="string"||e.windowTarget===null)&&typeof e.alive=="boolean"&&typeof e.capturedAt=="string"}function Wa(e){return typeof e=="object"&&e!==null&&e.detachChord==="ctrl+]"&&(e.lastSize===null||typeof e.lastSize=="object"&&e.lastSize!==null&&typeof e.lastSize.columns=="number"&&typeof e.lastSize.rows=="number")}function ja(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Te();wt();Ce();function zt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as gc,constants as mc}from"node:fs";import{homedir as pn}from"node:os";import Ye from"node:path";var _c=[Ye.join(pn(),".local","bin"),Ye.join(pn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function mn(e=process.env){return bc([...(e.PATH??"").split(Ye.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:_c])}function at(e=process.env){return{...e,PATH:mn(e).join(Ye.delimiter)}}function wc(e,t={}){if(e.includes(Ye.sep)){let r=Ye.isAbsolute(e)?e:Ye.resolve(t.cwd??process.cwd(),e);return gn(r)?r:null}for(let r of mn(t.env)){let s=Ye.join(r,e);if(gn(s))return s}return null}function ct(e,t={}){let r=wc(e,t);if(r)return r;throw new Error(`Command not found: ${e}. Install it or add its directory to PATH. Craig also checks ~/.local/bin, /opt/homebrew/bin, and /usr/local/bin.`)}function gn(e){try{return gc(e,mc.X_OK),!0}catch{return!1}}function bc(e){return[...new Set(e)]}Ee();Ce();import{spawn as kc}from"node:child_process";import{createHash as yc}from"node:crypto";import vc from"node:path";var Sc="craig";async function _n(e,t,r){let s=qr(e,t),o=Rc(),p=await te("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),v=Pc(p.stdout);return await Tc(e,s),v}async function Tc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await te("tmux",s,{cwd:e})}async function wn(e,t,r){await te("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function bn(e,t,r){await te("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function kn(e,t,r){await te("tmux",["pipe-pane","-o","-t",e,`cat >> ${zt(t)}`],{cwd:r})}async function Vt(e,t,r,s){let o=s??yn(e);if(r?await te("tmux",["select-window","-t",r],{cwd:e}):await te("tmux",["select-window","-t",t],{cwd:e}),await te("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await te("tmux",["switch-client","-t",o],{cwd:e});return}await xc(e,["attach-session","-t",o])}function yn(e){let r=vc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=yc("sha1").update(e).digest("hex").slice(0,8);return`${Sc}-${r}-${s}`}function qr(e,t){return`${yn(e)}-${t.toLowerCase()}`}function Rc(){let e=Cc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Cc(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,s="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof s=="number"&&s>0)return{columns:r,rows:s}}return null}function Pc(e){let t=Ic(e);if(t.length<3)throw new Error("tmux did not return the expected session, window, and pane targets for the Craig task session.");return{sessionName:t[0],windowTarget:t[1],paneId:t[2]}}function Ic(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function xc(e,t){await new Promise((r,s)=>{let o=kc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var Kr={async prepare(e,t){let r=e.runnerSession.command[0]??me(e.runner)[0],s=at();await te(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:me(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await bn(t.session.paneId,[s,...r.slice(1)].map(o=>zt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ee();Ce();var Tt={async create(e,t){let r=await _n(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await kn(r.paneId,t.logPath,t.repoRoot);let s=await vn({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),o={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||qr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Tt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Vt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await wn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return Ec(e,t)}};async function Ec(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return vn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function vn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Te();Ct();import{mkdir as Pt,rm as jc,writeFile as Qt}from"node:fs/promises";import ie from"node:path";Ce();async function Pn(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function zr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let v=await Wc(e,o);await te("git",["worktree","add","-b",t,r,v],{cwd:e})}async function Wc(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Jt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function In(e){await te("git",["add","-A"],{cwd:e})}async function xn(e,t){await te("git",["commit","-m",t],{cwd:e})}async function En(e){let t=await te("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
+
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}Ee();ot();async function An(e,t){let r=await Se(e),s=Ln(new Date),o=Mn(r.taskIds,s);for(;;){let p=`task_${s}_${String(o).padStart(2,"0")}`,v=`craig/${p}`;if(!await Pn(t,v))return p;o+=1}}async function Dn(e){let t=await Se(e),r=Ln(new Date),s=Mn(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Ln(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}${r}${s}`}function Mn(e,t){let r=e.filter(s=>s.startsWith(`task_${t}_`)).map(s=>Number.parseInt(s.slice(-2),10)).filter(s=>Number.isInteger(s));return r.length===0?1:Math.max(...r)+1}var Bn=["AGENTS","md"].join(".");async function It(e,t,r,s={}){let o=await De(e,t),p=await zc(e,o.id),v=await An(e,o.rootPath),i=s.sessionId??null,c=`craig/${v}`,d=ie.join(e.worktreesDir,o.id,v),w=ie.join(e.logsDir,`${v}.log`),a=ie.join(e.artifactsDir,v);await Pt(ie.dirname(d),{recursive:!0}),await Pt(a,{recursive:!0}),await Qt(w,"","utf8");let k=Hc(e,{taskId:v,repoId:o.id,workspaceId:p.id,sessionId:i,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:d});return await se(e,k),await Hr(e,v),await zr(o.rootPath,c,d,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:i,workspaceId:p.id,task:k}}async function er(e,t,r,s={}){let o=(await Le(e)).find(h=>h.id===t&&h.status==="active");if(!o)throw new Error(`Workspace ${t} does not exist or is archived.`);if(o.kind!=="project"){if(!o.primaryRepoId)throw new Error(`Workspace ${t} is not task-capable.`);let h=await It(e,o.primaryRepoId,r,s);return{...h,bundlePath:h.task.worktreePath,repoTargets:[]}}let p=o.discoveredRepoIds??[];if(p.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let v=await Dn(e),i=new Date().toISOString(),c=s.runner??"codex",d=s.sessionId??null,w=`craig/${v}`,a=ie.join(e.craigDir,"task-bundles",v),k=ie.join(e.logsDir,`${v}.log`),l=ie.join(e.artifactsDir,v);await Pt(a,{recursive:!0}),await Pt(l,{recursive:!0}),await Qt(k,"","utf8");let m=await Promise.all(p.map(h=>De(e,h))),_=qc(m),n=await Promise.all(m.map(h=>Uc(e,h,v,w,ie.join(a,_.get(h.id))))),g=n.find(h=>h.status==="ready")??n[0];if(!n.some(h=>h.status==="ready"))throw await jc(a,{recursive:!0,force:!0}),new Error(`No project repo targets could be provisioned for ${t}: ${n.map(h=>`${h.repoId}: ${h.failureReason??"unknown error"}`).join("; ")}`);await Qt(ie.join(a,"manifest.json"),JSON.stringify({taskId:v,workspaceId:t,prompt:r,repos:n.map(h=>({repoId:h.repoId,repoName:m.find(y=>y.id===h.repoId)?.name??h.repoId,path:ie.relative(a,h.worktreePath),status:h.status,worktreePath:h.worktreePath,failureReason:h.failureReason}))},null,2),"utf8"),await Qt(ie.join(a,Bn),Kc({taskId:v,workspaceId:t,prompt:r,repos:m,repoTargets:n,bundlePath:a}),"utf8");let f=$n(v,r,i,c,s.config??{}),u={id:v,title:r,slug:Fn(r),type:"project",status:"draft",runner:c,repoId:g.repoId,workspaceId:o.id,sessionId:d,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:p.filter(h=>h!==g.repoId),repoRoot:a,worktreePath:a,branch:w,bundlePath:a,selectedRepoTargetId:g.repoId,repoTargets:n,ptyTabs:f,runnerSession:{command:me(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:g.checks,lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,k),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(l,"pr-status.json"))},cleanup:Zt(),lastFailureReason:n.every(h=>h.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:i,updatedAt:i};return await se(e,u),await Hr(e,v),{repoId:g.repoId,repoRoot:a,sessionId:d,workspaceId:o.id,task:u,bundlePath:a,repoTargets:n}}function $n(e,t,r,s="codex",o={}){let p=ke(s);return[{id:`${e}:agent`,kind:"agent",title:p.defaultAgentTitle,command:me(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Hc(e,t){let r=new Date().toISOString(),s=$n(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Fn(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:me(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Vr(ie.relative(e.workspaceRoot,e.configFile))},lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,ie.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:Zt(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Uc(e,t,r,s,o){await Pt(ie.dirname(o),{recursive:!0});try{return await zr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Vr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:On(),cleanup:Zt()}}catch(p){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:p instanceof Error?p.message:"Failed to create worktree.",checks:Vr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:On(),cleanup:Zt()}}}function qc(e){let t=new Set(["manifest.json",Bn]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,p=o,v=2;for(;t.has(p);)p=`${o}-${v}`,v+=1;t.add(p),r.set(s.id,p)}return r}function Kc(e){let t=new Map(e.repos.map(s=>[s.id,s.name])),r=e.repoTargets.map(s=>{let o=t.get(s.repoId)??s.repoId,p=ie.relative(e.bundlePath,s.worktreePath),v=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${p}/\` - ${o} (${s.repoId}, ${v})`}).join(`
|
|
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
|
|
58
|
+
`)}function Vr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function On(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function Zt(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function zc(e,t){let s=(await Le(e)).find(o=>o.kind!=="project"&&o.primaryRepoId===t&&o.status==="active");if(!s)throw new Error(`Repo ${t} does not have an active workspace.`);return s}function Fn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Wn(e,t,r,s={}){let o=r.trim(),p=await Ne(e),v=s.runner??st(p);if(qt(v,p),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let i=s.workspaceId?await er(e,s.workspaceId,o,{runner:v,config:p}):await It(e,t,o,{runner:v,config:p}),c=i.task,d=me(v,o,p),w=`session_${c.id}`,a=c.artifacts.logPath?Nn.resolve(e.workspaceRoot,c.artifacts.logPath):Nn.join(e.logsDir,`${c.id}.log`);try{await Kr.prepare(c,{repoRoot:i.repoRoot});let k=await Tt.create(e,{sessionId:w,taskId:c.id,repoId:i.repoId,workspaceId:i.workspaceId,repoRoot:i.repoRoot,worktreePath:c.worktreePath,logPath:a,command:d});await Kr.launch(c,{repoRoot:i.repoRoot,session:k});let l=new Date().toISOString();k={...k,status:"running",startedAt:l,command:d};let m={...c,status:"running",runner:v,sessionId:k.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:k.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await se(e,m),await nt(e,k),await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:k.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(k){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:k instanceof Error?k.message:"Unknown Craig error"};throw await se(e,l),k}}xt();dt();Te();import{access as ul}from"node:fs/promises";import Jn from"node:path";We();Te();import{mkdir as Gc,readFile as jp,writeFile as Hp}from"node:fs/promises";import Xc from"node:path";Ce();import jn from"node:path";function tr(e,t){return t?jn.isAbsolute(t)?t:jn.join(e.repoRoot,t):null}function he(e){return e.prs.length===0?null:[...e.prs].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e.prs[e.prs.length-1]??null}function sr(e){return e.status==="merged"||e.status==="closed"}function Hn(e,t){let r=e.prs.findIndex(o=>o.number!==null&&o.number===t.number),s=r>=0?e.prs.map((o,p)=>p===r?t:o):[...e.prs,t];return{...e,prs:s}}var Un=3,Yc=1e3,Jc=1e4;async function Et(e){let t=await oe("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Yr(e,t){let r=he(t),s=r?.number?String(r.number):t.branch,o=await te("gh",rr(s),{cwd:t.worktreePath}),p=JSON.parse(o.stdout);return Qr(e,t,p,r)}async function Jr(e,t){let r=await oe("gh",rr(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return{discovered:!0,task:await Qr(e,t,s,null)}}async function qn(e){let t=await oe("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:nl(t.stdout.trim())}async function Kn(e,t,r){if(r.length===0)return[];let s=il(r),o=await Qc(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),v=JSON.parse(o.stdout).data?.repository??{};return r.map((i,c)=>{let d=v[`item${c}`],w=ol(d);return{id:i.id,found:w!==null,view:w}})}async function Qc(e,t){let r;for(let s=0;s<=Un;s+=1)try{return await te("gh",t,{cwd:e})}catch(o){if(r=o,s===Un||!Zc(o))throw o;await tl(el(s))}throw r}function Zc(e){let t=e instanceof Error?e.message.toLowerCase():String(e).toLowerCase();return t.includes("rate limit")||t.includes("secondary rate limit")||t.includes("abuse detection")||t.includes("api rate limit exceeded")||t.includes("you have exceeded")}function el(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||Yc,r=Math.min(t*2**e,Jc),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function tl(e){return new Promise(t=>setTimeout(t,e))}async function At(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let v=await te("gh",rr(s),{cwd:r.worktreePath}),i=Xr(JSON.parse(v.stdout));return r.pullRequest=i,await Gr(e,t,r.repoId,i),"synced"}let o=await oe("gh",rr(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let p=Xr(JSON.parse(o.stdout));return r.pullRequest=p,await Gr(e,t,r.repoId,p),"discovered"}async function zn(e,t,r){return Qr(e,t,r,he(t))}async function Vn(e,t,r,s){return Gr(e,t,r,Xr(s))}async function Gn(e,t){let r=tr(e,t.artifacts.prStatusPath);r&&(await Gc(Xc.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,prs:t.prs}))}function rl(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function sl(e){if(e.length===0)return"checked";let t=[...e].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e[e.length-1];return rl(t)?"merge_ready":t.status==="merged"?"merged":t.status==="open"?"pr_open":"checked"}function rr(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,isDraft,title,createdAt,updatedAt,mergedAt,mergeable,mergeStateStatus,statusCheckRollup"]}function nl(e){let t=e.replace(/\.git$/,""),r=t.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)$/);if(r?.[1]&&r[2])return{owner:r[1],name:r[2]};let s=t.match(/^git@github\.com:([^/]+)\/([^/]+)$/);if(s?.[1]&&s[2])return{owner:s[1],name:s[2]};let o=t.match(/^ssh:\/\/git@github\.com\/([^/]+)\/([^/]+)$/);return o?.[1]&&o[2]?{owner:o[1],name:o[2]}:null}function il(e){return`
|
|
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(`
|
|
@@ -116,52 +116,52 @@ fragment PrFields on PullRequest {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
`}function
|
|
119
|
+
`}function ol(e){if(!e||typeof e!="object")return null;let t="nodes"in e?e.nodes?.[0]??null:e;if(!t||typeof t!="object")return null;let r=t,s=r.statusCheckRollup?.contexts?.nodes??r.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[];return{number:r.number,url:r.url,baseRefName:r.baseRefName,headRefName:r.headRefName,headRefOid:r.headRefOid??null,state:r.state,isDraft:r.isDraft??!1,title:r.title??null,createdAt:r.createdAt??null,updatedAt:r.updatedAt??null,mergedAt:r.mergedAt??null,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,statusCheckRollup:s}}async function Qr(e,t,r,s){let o=al(r,s),p=Hn(t,o),v=sl(p.prs),i={...p,status:v};await Gn(e,i);let c=await ue(e,t.id),d=c.status==="closed"?c.status:v,w=Hn({...c,status:d},o);return await se(e,w),w}async function Gr(e,t,r,s){let o=await ue(e,t.id),p=(o.repoTargets??t.repoTargets??[]).map(i=>i.repoId===r?{...i,pullRequest:s}:i),v={...o,repoTargets:p};return await se(e,v),v}function al(e,t){let r=e.isDraft??!1,s=cl(e.state,r);return{provider:"github",owner:t?.owner??null,repo:t?.repo??null,number:e.number,url:e.url,title:e.title??t?.title??null,status:s,draft:r,baseBranch:e.baseRefName,headBranch:e.headRefName,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Xn(e.statusCheckRollup),createdAt:e.createdAt??t?.createdAt??null,updatedAt:e.updatedAt??t?.updatedAt??null,mergedAt:e.mergedAt??t?.mergedAt??null,lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Xr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:ll(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Xn(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function cl(e,t){return t?"draft":e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function ll(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Xn(e){return e.map(t=>dl(t)).filter(t=>t!==null)}function dl(e){if(typeof e!="object"||e===null)return null;let t=e,r=t.name??t.context,s=t.state??t.status??t.conclusion;return r?{name:r,status:Yn(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function Yn(e,t){let r=e?.toUpperCase()??null,s=t?.toUpperCase()??null;return s==="SKIPPED"||r==="SKIPPED"?"skipped":r==="SUCCESS"||s==="SUCCESS"||s==="NEUTRAL"?"success":r==="PENDING"||r==="EXPECTED"||r==="IN_PROGRESS"||r==="QUEUED"||r==="REQUESTED"||r==="WAITING"?"pending":r==="FAILURE"||r==="FAILED"||r==="ERROR"||r==="TIMED_OUT"||r==="CANCELLED"||r==="ACTION_REQUIRED"||r==="STARTUP_FAILURE"||s==="FAILURE"||s==="FAILED"||s==="ERROR"||s==="TIMED_OUT"||s==="CANCELLED"||s==="ACTION_REQUIRED"||s==="STARTUP_FAILURE"?"failed":r==="COMPLETED"&&s===null?"unknown":r==="COMPLETED"&&s!==null?Yn(s,s):"unknown"}async function ae(e,t){try{return await ue(e,t)}catch(r){throw ml(r)?new Error(`Craig task "${t}" was not found.`):r}}async function Pe(e){if(!await Zr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function es(e,t){return t.artifacts.logPath?Jn.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Jn.join(e.workspaceRoot,t.artifacts.logPath):null}async function Qn(e,t){let r=await Zr(t.worktreePath),s=es(e,t),o=s?await Zr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:hl(t),lastCommitSummary:fl(t),prSummary:pl(t),cleanupSummary:gl(t)}}async function Zr(e){try{return await ul(e),!0}catch{return!1}}function hl(e){let t=e.checks.commands.length,r=t===1?"command":"commands",s=e.checks.lastRunAt?` at ${e.checks.lastRunAt}`:"";return`${e.checks.status} (${t} ${r})${s}`}function fl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function pl(e){if(e.type==="project"&&e.repoTargets?.length){let o=e.repoTargets.filter(c=>c.pullRequest.number);if(o.length===0)return"not linked";let p=o.map(c=>` ${c.repoId} #${c.pullRequest.number} ${c.pullRequest.status??"unknown"}`),v=o.reduce((c,d)=>{let w=d.pullRequest.status??"unknown";return c[w]=(c[w]??0)+1,c},{}),i=Object.entries(v).map(([c,d])=>`${d} ${c}`).join(", ");return`${o.length} PR${o.length!==1?"s":""} (${i})
|
|
120
120
|
${p.join(`
|
|
121
|
-
`)}`}let t=he(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function
|
|
121
|
+
`)}`}let t=he(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function gl(e){return e.status!=="merged"?"not merged":e.cleanup.warning?`warning: ${e.cleanup.warning}`:e.cleanup.preservedWorktree?"preserved worktree":e.cleanup.worktreeRemovedAt?`worktree removed at ${e.cleanup.worktreeRemovedAt}`:"cleanup pending"}function ml(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Zn(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([De(e,r.repoId),mt(e,r.sessionId)]),p=await Tt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:p.id,disposition:"attached"}}Te();async function ti(e,t){let r=await ae(e,t),s=he(r);return s?.number?(await Et(r.worktreePath),sr(s)?(await Jr(e,r)).task:Yr(e,r)):r}async function ir(e,t){let r=await ae(e,t),s=(r.repoTargets??[]).filter(v=>v.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let v of s){await Et(v.worktreePath);let i=v.pullRequest.number?await At(e,r,v):await At(e,r,v).catch(()=>"not_found");o[i==="not_found"?"notFound":i]++}let p=await ue(e,r.id);return p.status!=="closed"&&(p.status=si(p),await se(e,p)),o}async function ri(e,t){let r=new Map,s=new Map;for(let o of t){let p=ts(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let d of o.repoTargets.filter(w=>w.status==="ready")){let w={id:`${o.id}:${d.repoId}`,task:o,targetRepoId:d.repoId,worktreePath:d.worktreePath,selector:d.pullRequest.number?String(d.pullRequest.number):d.branch,mode:d.pullRequest.number?"number":"head"};await ei(s,w).catch(async()=>{try{let a=d.pullRequest.number?await At(e,o,d):await At(e,o,d).catch(()=>"not_found");nr(p,a,d.pullRequest.number??null,d.pullRequest.url??null)}catch{}})}continue}let v=he(o),i=v?.number&&!sr(v),c={id:o.id,task:o,worktreePath:o.worktreePath,selector:i?String(v.number):o.branch,mode:i?"number":"head"};await ei(s,c).catch(async()=>{try{let{disposition:d,task:w}=await rs(e,o.id),a=he(w);nr(p,d,a?.number??null,a?.url??null)}catch{}})}for(let o of s.values())try{await Et(o.worktreePath);let p=await Kn(o.worktreePath,o.repository,o.items),v=new Map(p.map(i=>[i.id,i]));for(let i of o.items){let c=ts(r,i.task),d=v.get(i.id);if(!d?.found||!d.view){nr(c,"not_found",null,null);continue}i.targetRepoId?await Vn(e,i.task,i.targetRepoId,d.view):await zn(e,i.task,d.view),nr(c,i.mode==="number"?"synced":"discovered",d.view.number,d.view.url)}}catch{}for(let o of t.filter(p=>p.type==="project"&&p.repoTargets?.length)){let p=await ue(e,o.id);p.status!=="closed"&&(p.status=si(p),await se(e,p))}return t.map(o=>ts(r,o))}async function rs(e,t){let r=await ae(e,t);await Pe(r),await Et(r.worktreePath);let s=he(r);if(s?.number&&!sr(s))return{disposition:"synced",task:await Yr(e,r)};let o=await Jr(e,r);return{disposition:o.discovered?"discovered":"not_found",task:o.task}}function si(e){let t=(e.repoTargets??[]).filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?e.status:r.every(s=>s.status==="merged")?"merged":r.length===t.length&&r.every(_l)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function ei(e,t){let r=await qn(t.worktreePath);if(!r)throw new Error("GitHub repository remote could not be parsed.");let s=`${r.owner}/${r.name}`,o=e.get(s);if(o){o.items.push(t);return}e.set(s,{worktreePath:t.worktreePath,repository:r,items:[t]})}function ts(e,t){let r=e.get(t.id);if(r)return r;let s={taskId:t.id,synced:0,discovered:0,notFound:0,hadPr:t.type==="project"?!!t.repoTargets?.some(o=>o.pullRequest.number):!!he(t)?.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function nr(e,t,r,s){if(t==="synced"){e.synced+=1;return}if(t==="discovered"){e.discovered+=1,e.firstDiscoveredPrNumber??=r,e.firstDiscoveredPrUrl??=s;return}e.notFound+=1}function _l(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function ss(e,t){let r=await ae(e,t);try{r.type==="project"&&r.repoTargets?.length?(await ir(e,t),r=await ae(e,t)):r.prs.some(p=>p.number)&&(r=await ti(e,t))}catch{}let s=await Qn(e,r),o=r.sessionId?await mt(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as wl}from"node:fs/promises";async function ns(e,t){let r=await ae(e,t),s=es(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await wl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ce();async function is(e,t){let r=await ae(e,t);if(await Pe(r),(await te("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await bl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function bl(e){let t=[],r=await te("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await kl(e);for(let o of s){let p=await oe("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(p.stdout.trimEnd())}return t.join(`
|
|
122
122
|
|
|
123
|
-
`)}async function
|
|
124
|
-
`).map(r=>r.trim()).filter(r=>r.length>0)}async function
|
|
123
|
+
`)}async function kl(e){return(await te("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
|
|
124
|
+
`).map(r=>r.trim()).filter(r=>r.length>0)}async function os(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await mt(e,r.sessionId).catch(o=>{throw yl(o)?new Error(`Task ${r.id} does not have a Craig session.`):o});if(!s.paneId)throw new Error(`Task ${r.id} does not have a tmux target.`);return await Vt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function yl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as vl}from"node:child_process";async function as(e,t){let r=await ae(e,t);await Pe(r);let o=(await Ne(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let p=[...o,r.worktreePath];return await Sl(p,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:p}}async function Sl(e,t){await new Promise((r,s)=>{let[o,...p]=e,v=vl(o,p,{cwd:t,stdio:"inherit"});v.on("error",s),v.on("exit",i=>{if(i===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${i??"unknown"}.`))})})}We();import{mkdir as Tl}from"node:fs/promises";import Rl from"node:path";Te();Ce();async function cs(e,t){let r=await ae(e,t);if(await Pe(r),r.status==="draft"||r.status==="merged")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);if(r.status==="running"&&await Jt(r.worktreePath)&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);let o=(await Ne(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await se(e,r);let p=[];for(let v of o){let i=new Date().toISOString(),c=await oe("sh",["-lc",v],{cwd:r.worktreePath}),d=new Date().toISOString(),w=c.exitCode??1;if(p.push({command:v,startedAt:i,finishedAt:d,exitCode:w}),w!==0)return r.checks.results=p,r.checks.status="failed",r.checks.lastRunAt=d,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${v}`,await ni(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=p,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await ni(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function ni(e,t){let r=tr(e,t.artifacts.checkSummaryPath);r&&(await Tl(Rl.dirname(r),{recursive:!0}),await de(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}Te();async function ls(e,t){let r=await ae(e,t);await Pe(r);let s=await Jt(r.worktreePath);if(r.status==="running"&&s&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot commit from status "${r.status}".`);if(!s)throw new Error(`Task ${r.id} has no uncommitted diff to commit.`);let o=r.prompt.value.trim();await In(r.worktreePath),await xn(r.worktreePath,o);let p=await En(r.worktreePath);return r.lastCommit={sha:p.sha,message:p.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await se(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:p.sha,message:p.message}}ot();dt();Ct();wt();xt();Ot();Ce();import Ll from"node:path";import{stat as Ml}from"node:fs/promises";async function pi(e,t){let r=Ll.resolve(e.workspaceRoot,t);if(!(await Ml(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Ot(),fi)).then(({addWorkspace:v})=>v(e,t)),p=o.repos[0];if(!p||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:p,workspaceId:o.workspace.id,created:o.created}}async function gi(e){return{kind:"listRepos",repos:await lt(e)}}async function mi(e,t){let r=await De(e,t),o=(await Le(e)).filter(d=>d.primaryRepoId===t),p=o.filter(d=>d.status==="active"),v=await He(e,{repoId:t});if(p.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(v.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(d=>or(e,d.id))),await Tn(e,t);let i=await Se(e);await it(e,{...i,repoIds:i.repoIds.filter(d=>d!==t)});let c=await Ae({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await Re({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}dt();Te();async function _i(e,t,r){let[s,o]=await Promise.all([ae(e,t),De(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let p=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await se(e,{...s,linkedRepoIds:p}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:p}}async function wi(e,t){let r=await ae(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>De(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Ot();async function bi(e,t){switch(e.kind){case"addWorkspace":return Dt(t.paths,e.path);case"addRepo":return pi(t.paths,e.path);case"listRepos":return gi(t.paths);case"removeRepo":return mi(t.paths,e.repoId);case"listWorkspaces":return ds(t.paths,{archived:e.archived});case"archiveWorkspace":return Lt(t.paths,e.workspaceId);case"restoreWorkspace":return us(t.paths,e.workspaceId);case"removeWorkspace":return Mt(t.paths,e.workspaceId);case"createTask":return Wn(t.paths,e.repoId??e.workspaceId??"",e.prompt,{...e.runner?{runner:e.runner}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}});case"listTasks":return e.repoId||e.workspaceId?He(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):He(t.paths);case"attachTask":return Zn(t.paths,e.taskId);case"addTaskLink":return _i(t.paths,e.taskId,e.repoId);case"listTaskLinks":return wi(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return ss(t.paths,e.taskId);case"showSelectedTask":return ss(t.paths,ut(t,"show"));case"streamTaskLogs":return ns(t.paths,e.taskId);case"streamSelectedTaskLogs":return ns(t.paths,ut(t,"logs"));case"showTaskDiff":return is(t.paths,e.taskId);case"showSelectedTaskDiff":return is(t.paths,ut(t,"diff"));case"focusTask":return os(t.paths,e.taskId);case"focusSelectedTask":return os(t.paths,ut(t,"focus"));case"openTask":return as(t.paths,e.taskId);case"openSelectedTask":return as(t.paths,ut(t,"open"));case"runChecks":return cs(t.paths,e.taskId);case"runSelectedTaskChecks":return cs(t.paths,ut(t,"check"));case"commitTask":return ls(t.paths,e.taskId);case"commitSelectedTask":return ls(t.paths,ut(t,"commit"));case"help":return{kind:"help",text:_e()};case"exit":return{kind:"exit"};default:return Ol(e)}}function Ol(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function ut(e,t){if(e.selectedTaskId)return e.selectedTaskId;throw new Error(`No task selected. Create a task with 'task new --repo <repo-id> <prompt>' or use '${t} <id>'.`)}We();import{mkdir as Ue,readFile as Bl}from"node:fs/promises";import ye from"node:path";function ze(e){let t=ye.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ye.join(t,"index.json"),reposDir:ye.join(t,"repos"),workspacesDir:ye.join(t,"workspaces"),sessionsDir:ye.join(t,"sessions"),runtimeDir:ye.join(t,"runtime"),uiStateFile:ye.join(t,"runtime","ui-state.json"),tasksDir:ye.join(t,"tasks"),jobsDir:ye.join(t,"jobs"),logsDir:ye.join(t,"logs"),artifactsDir:ye.join(t,"artifacts"),worktreesDir:ye.join(t,"worktrees"),configFile:ye.join(t,"config.json")}}ot();async function kt(e){let t=ze(e);await Ue(t.craigDir,{recursive:!0}),await Promise.all([Ue(t.reposDir,{recursive:!0}),Ue(t.workspacesDir,{recursive:!0}),Ue(t.sessionsDir,{recursive:!0}),Ue(t.runtimeDir,{recursive:!0}),Ue(t.tasksDir,{recursive:!0}),Ue(t.jobsDir,{recursive:!0}),Ue(t.logsDir,{recursive:!0}),Ue(t.artifactsDir,{recursive:!0}),Ue(t.worktreesDir,{recursive:!0})]);try{let o=await Bl(t.indexFile,"utf8"),p=JSON.parse(o);return Wr(p,e,t.indexFile)}catch(o){if(!$l(o))throw o instanceof SyntaxError?new Error(`Craig index at ${t.indexFile} is malformed. Remove or repair the file before rerunning Craig.`):o}let r=new Date().toISOString(),s={version:2,workspaceRoot:e,repoIds:[],workspaceIds:[],taskIds:[],jobIds:[],createdAt:r,updatedAt:r};return await de(t.indexFile,s),s}function $l(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function ki(e){switch(e.kind){case"createWorkspace":return[`${e.created?"Registered":"Updated"} ${e.workspace.kind??"repo"} workspace ${e.workspace.id}`,`Path: ${e.workspace.rootPath??""}`,`Repos: ${e.repos.map(t=>t.id).join(", ")}`].join(`
|
|
125
125
|
`);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
|
|
126
126
|
`);case"listRepos":return e.repos.length===0?"No repos registered yet. Use 'craig repo add <path>'.":["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
127
127
|
`);case"removeRepo":return`Removed repo ${e.repoId} (${e.rootPath})`;case"listWorkspaces":return e.workspaces.length===0?e.archivedOnly?"No archived workspaces.":"No active workspaces yet. Register one with 'craig workspace add <path>'.":["ID KIND STATUS REPOS PATH",...e.workspaces.map(t=>`${t.id} ${t.kind??"repo"} ${t.status} ${(t.discoveredRepoIds??[t.primaryRepoId]).join(",")} ${t.rootPath??""}`)].join(`
|
|
128
128
|
`);case"archiveWorkspace":return`Archived workspace ${e.workspaceId} on branch ${e.branch}`;case"restoreWorkspace":return`Restored workspace ${e.workspaceId} on branch ${e.branch}`;case"removeWorkspace":return`Removed workspace ${e.workspaceId} (${e.rootPath})`;case"createTask":return[`Created task ${e.taskId}`,`Repo: ${e.repoId}`,`Workspace: ${e.workspaceId}`,`Session: ${e.sessionId}`,`Status: ${e.status}`,`Branch: ${e.branch}`,`Worktree: ${e.worktreePath}`,`Runner: ${e.runner}`].join(`
|
|
129
129
|
`);case"attachTask":return`Attached to task ${e.taskId} via session ${e.sessionId}`;case"addTaskLink":return`Linked repo ${e.repoId} to task ${e.taskId}: ${e.linkedRepoIds.join(", ")}`;case"listTaskLinks":return e.repos.length===0?`Task ${e.taskId} has no linked repos.`:["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
130
|
-
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${
|
|
131
|
-
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...
|
|
130
|
+
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${Wl(t)} ${jl(t)} ${t.title}`)].join(`
|
|
131
|
+
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...Fl(e)].join(`
|
|
132
132
|
`);case"streamTaskLogs":return`Streaming logs for ${e.taskId} from ${e.logPath}`;case"showTaskDiff":return e.isEmpty?`Task ${e.taskId} has no uncommitted diff.`:e.diffText;case"focusTask":return`Focused task ${e.taskId} on ${e.tmuxTarget}`;case"openTask":return e.launched?`Opened task ${e.taskId} at ${e.worktreePath}`:e.worktreePath;case"runChecks":return`Checks ${e.status} for ${e.taskId}: ${e.commands.join(", ")}`;case"commitTask":return[`Committed task ${e.taskId}`,`Status: ${e.status}`,`Commit: ${e.commitSha}`,`Message: ${e.message}`].join(`
|
|
133
|
-
`);default:return
|
|
134
|
-
`).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...s]=t.split(" ");return{status:r,path:s.at(-1)??""}}).filter(t=>t.path.length>0)}function
|
|
135
|
-
`)){let s=r.trim();if(!s)continue;let[o="-",p="-",...v]=s.split(" "),i=v.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function Bt(e){return(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function
|
|
136
|
-
`),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return ge(t,o,"missing",t,null)}}async function
|
|
137
|
-
${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await te("git",["diff","--cached","--stat","--patch",`--unified=${
|
|
138
|
-
${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await te("git",["diff","--stat","--patch",`--unified=${
|
|
139
|
-
${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${
|
|
133
|
+
`);default:return Nl(e)}}function Fl(e){let t=[];return e.inspection.worktreeExists||e.task.status==="merged"&&!e.task.cleanup.preservedWorktree&&e.task.cleanup.worktreeRemovedAt||t.push(`Warning: worktree is missing at ${e.task.worktreePath}`),e.task.cleanup.warning&&!(e.task.status==="merged"&&!e.task.cleanup.worktreeRemovedAt)&&t.push(`Cleanup warning: ${e.task.cleanup.warning}`),e.task.artifacts.logPath&&!e.inspection.logExists&&t.push(`Warning: log file is missing at ${e.task.artifacts.logPath}`),e.inspection.recentFailureReason&&t.push(`Last failure: ${e.inspection.recentFailureReason}`),t}function Nl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function Wl(e){return e.checks.status}function jl(e){if(e.type==="project"&&e.repoTargets?.length){let r=e.repoTargets.filter(o=>o.pullRequest.number);if(r.length===0)return"-";let s=r.reduce((o,p)=>{let v=p.pullRequest.status??"unknown";return o[v]=(o[v]??0)+1,o},{});return Object.entries(s).map(([o,p])=>`${p} ${o}`).join(", ")}let t=e.prs[0];return t?.number?`#${t.number}:${t.status??"unknown"}`:"-"}dt();Ct();wt();import{createRequire as Ah}from"node:module";import{readdir as Dh,stat as Lh}from"node:fs/promises";import vt from"node:path";Te();xt();Ot();Ce();import{readFile as Hl,stat as Ul}from"node:fs/promises";import hs from"node:path";var ql=200*1024,Kl=500*1024,ar="100000";async function vi(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return zl(e,t,r);try{let s=Qe(r.selectedFilePath??null,t.filePaths),o=Qe(r.selectedDiffPath??null,t.diffPaths),p=o?await Bt(e.worktreePath):null,[v,i]=await Promise.all([lr(e.worktreePath,s),o?fs(e.worktreePath,o,t.diffRows,p):Promise.resolve(ge("No diff selected","No local changes found.","empty"))]),c=o?{[o]:i}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:v,selectedDiff:i,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function zl(e,t,r){let s=Qe(r.selectedFilePath??null,t.filePaths),o=Qe(r.selectedDiffPath??null,t.diffPaths),[p,v]=await Promise.all([Ti(e,s),(async()=>{if(!o)return ge("No diff selected","No local changes found.","empty");let c=cr(e,o),d=c?await Bt(c.target.worktreePath).catch(()=>null):null;return Ri(e,o,t.diffRows,d)})()]),i=o?{[o]:v}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:i,selectedFile:p,selectedDiff:v}}async function Si(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return Vl(e,t);try{await Pe(e);let r=await Bt(e.worktreePath),[s,o]=await Promise.all([Ci(e.worktreePath),Pi(e.worktreePath,r)]),p=[...new Set(o.map(a=>a.path))],v=Qe(t.selectedFilePath??null,s),i=Qe(t.selectedDiffPath??null,p),[c,d]=await Promise.all([lr(e.worktreePath,v),i?fs(e.worktreePath,i,o,r):Promise.resolve(ge("No diff selected","No local changes found.","empty"))]),w=i?{[i]:d}:{};return{taskId:e.id,fileRows:Ei(s),filePaths:s,diffRows:o,diffPaths:p,diffContents:w,selectedFilePath:v,selectedDiffPath:i,selectedFile:c,selectedDiff:d,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:ge("Files unavailable",s,"error"),selectedDiff:ge("Diff unavailable",s,"error"),error:s}}}async function Vl(e,t){let r=(e.repoTargets??[]).filter(k=>k.status==="ready"),s=await Promise.all(r.map(async k=>{let l=await Bt(k.worktreePath).catch(()=>null),[m,_]=await Promise.all([Ci(k.worktreePath).catch(()=>[]),Pi(k.worktreePath,l).catch(()=>[])]);return{target:k,baseRef:l,targetFiles:m,targetDiffRows:_}})),o=[],p=[];for(let{target:k,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(_=>`${k.repoId}/${_}`)),p.push(...m.map(_=>({..._,path:`${k.repoId}/${_.path}`})));let v=[...new Set(p.map(k=>k.path))].sort(),i=Qe(t.selectedFilePath??null,o),c=Qe(t.selectedDiffPath??null,v),[d,w]=await Promise.all([Ti(e,i),(async()=>{if(!c)return ge("No diff selected","No local changes found.","empty");let k=cr(e,c),l=k?s.find(m=>m.target.repoId===k.target.repoId):null;return Ri(e,c,p,l?.baseRef??null)})()]),a=c?{[c]:w}:{};return{taskId:e.id,fileRows:Ei(o),filePaths:o,diffRows:p,diffPaths:v,diffContents:a,selectedFilePath:i,selectedDiffPath:c,selectedFile:d,selectedDiff:w,error:null}}async function Ti(e,t){let r=cr(e,t);if(!r)return ge("No file selected","No Git-visible files found.","empty");let s=await lr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function Ri(e,t,r,s=null){let o=cr(e,t);return o?{...await fs(o.target.worktreePath,o.relativePath,r.filter(v=>v.path.startsWith(`${o.target.repoId}/`)).map(v=>({...v,path:v.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:ge(t,"Repo target is unavailable.","error",t)}function cr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),p=(e.repoTargets??[]).find(v=>v.repoId===r&&v.status==="ready")??null;return!p||o.length===0?null:{target:p,relativePath:o}}async function Ci(e){let t=await te("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return Ai(t.stdout)}async function Pi(e,t){let[r,s,o,p]=await Promise.all([Gl(e,t),yi(e,"staged"),yi(e,"unstaged"),Xl(e)]);return[...r,...s,...o,...p]}async function Gl(e,t){if(!t)return[];let[r,s]=await Promise.all([te("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),te("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Ii(r.stdout),p=xi(s.stdout);return o.map(v=>{let i=p.get(v.path)??{additions:null,deletions:null};return{group:"branch",path:v.path,status:v.status,additions:i.additions,deletions:i.deletions}}).sort((v,i)=>v.path.localeCompare(i.path))}async function yi(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([te("git",[...r,"--name-status"],{cwd:e}),te("git",[...r,"--numstat"],{cwd:e})]),p=Ii(s.stdout),v=xi(o.stdout);return p.map(i=>{let c=v.get(i.path)??{additions:null,deletions:null};return{group:t,path:i.path,status:i.status,additions:c.additions,deletions:c.deletions}}).sort((i,c)=>i.path.localeCompare(c.path))}async function Xl(e){let t=await te("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=Ai(t.stdout);return await Promise.all(r.map(async o=>{let p=await lr(e,o),v=p.status==="ready"?Yl(p.lines):null;return{group:"untracked",path:o,status:"A",additions:v,deletions:0}}))}function Ii(e){return e.split(`
|
|
134
|
+
`).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...s]=t.split(" ");return{status:r,path:s.at(-1)??""}}).filter(t=>t.path.length>0)}function xi(e){let t=new Map;for(let r of e.split(`
|
|
135
|
+
`)){let s=r.trim();if(!s)continue;let[o="-",p="-",...v]=s.split(" "),i=v.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function Bt(e){return(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function lr(e,t){if(!t)return ge("No file selected","No Git-visible files found.","empty");let r=Jl(e,t);try{let s=await Ul(r);if(s.size>ql)return ge(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await Hl(r);return Ql(o)?ge(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
|
|
136
|
+
`),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return ge(t,o,"missing",t,null)}}async function fs(e,t,r,s=null){if(!t)return ge("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await Bt(e);if(i){let c=await te("git",["diff","--stat","--patch",`--unified=${ar}`,`${i}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
|
|
137
|
+
${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await te("git",["diff","--cached","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`staged
|
|
138
|
+
${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await te("git",["diff","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`unstaged
|
|
139
|
+
${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${ar}`,"--","/dev/null",t],{cwd:e});i.stdout.trim().length>0&&o.push(`untracked
|
|
140
140
|
${i.stdout.trimEnd()}`)}let v=o.join(`
|
|
141
141
|
|
|
142
|
-
`);return v.length>
|
|
143
|
-
`):["No diff for this file."],byteLength:v.length}}function
|
|
144
|
-
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Xl(e,t){let r=us.resolve(e,t),s=us.resolve(e);if(r!==s&&!r.startsWith(`${s}${us.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Yl(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function ge(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Te();import{access as Jl}from"node:fs/promises";async function Ei(e,t){let r=await ae(e,t),s=await Ql(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 Ql(e){try{return await Jl(e),!0}catch{return!1}}Ee();Ce();import Nt from"node:path";function Ai(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 Di="\u{F024B} ",Li="\u{F0DCF} ",Mi="\u25CB",Oi="\uEA64",Bi="\uEAFE",$i="\uEBDA",fs="\u25CB",ps="\u25CF",gs="\u2713",ms="\u2715";function Fi(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Ee();_t();Ee();var Zl=["tasks","center","inspector","actions"],Ui=["agent","terminal"],qi=[],ne="inspection",Um=[...Ui,...qi],Ki=["commit","push","refresh-checks","close-task"],ed=["refresh-checks","close-task"],zi=["task","checks","pr","setup-run","actions","next-action"],Vi=["diff","files","review"];function Gi(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=_d(e?.openInspectionKind)??r,o=ft(t);return{inputMode:bd(e?.inputMode),focusedRegion:gd(e?.focusedRegion),selectedRepoId:Ve(e?.selectedRepoId),selectedWorkspaceId:Ve(e?.selectedWorkspaceId),selectedTaskId:Ve(e?.selectedTaskId),selectedPtyTabId:Ve(e?.selectedPtyTabId),selectedLeftItemId:Id(Ve(e?.selectedTaskId)),activeTab:r?ne:Ve(e?.activeTab)??"agent",preferredPtyTabKind:wd(e?.preferredPtyTabKind),inspectorSection:$t(e?.inspectorSection,zi,"task"),inspectionMode:md(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ve(e?.selectedFileTreePath),selectedFilePath:Ve(e?.selectedFilePath),selectedDiffPath:Ve(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:$t(e?.selectedActionId,Ki,"commit"),selectedProjectTargetId:null,selectedRunner:kd(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:td(),centerZoomed:!1}}function td(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function Xi(e,t){return{...e??je(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function hr(e,t,r={}){let s=Cd(e,t),o=so(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,...vd(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:hd(e,t,d?.id??null),...Sd(e,t,d?.id??null),selectedDiffPath:ud(e,t,d?.id??null),inspectorSection:$t(e.inspectorSection,zi,"task")}}function Yi(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return rd(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"&&(ws(e.selectedLeftItemId)||bs(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:ks(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Ni(e,1);if(t==="SHIFT_TAB"||t==="[")return Ni(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,-1,r):Wi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,1,r):Wi(e,1,r);if(t==="PAGE_UP")return Ze(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return Ze(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return Ze(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return Ze(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??le,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=yd(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"&&ur(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&xd(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Hi(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return _s(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return ji(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return _s(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return ji(e,1)}if(et(t)){if(e.focusedRegion==="tasks"&&(ws(e.selectedLeftItemId)||bs(e.selectedLeftItemId))){let s=no(e.selectedLeftItemId),o=io(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"&&ur(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&Hi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:fr(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:ad({...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 Ft(e,t){return{...e,terminal:t}}function Ji(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function rd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function et(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
145
|
-
`}function Qi(e){return e.length===1&&e>=" "&&e!=="\x7F"}function Zi(e){return eo(e)||fr(e)!==null}function sd(e){return qi.includes(e)}function eo(e){return Ui.includes(e)}function to(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var nd=["tasks","center","inspector"];function Ni(e,t){return lr(e,"focusedRegion",nd,t)}function _s(e,t,r){let s=lr(e,"activeTab",r&&r.length>0?r:Rd(e),t);return!s.changed||sd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:fr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Wi(e,t,r){if(e.focusedRegion==="tasks")return id(e,t,r.leftItemIds);if(e.focusedRegion==="center")return _s(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return ro(e,t,r);if(e.inspectionMode==="diff"){let s=dr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}return r.projectTargetIds?.length?dr(e,"selectedProjectTargetId",r.projectTargetIds,t):lr(e,"selectedActionId",ed,t)}return lr(e,"selectedActionId",Ki,t)}function id(e,t,r){let s=dr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=so(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let p=no(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let v=io(s.state.selectedLeftItemId);return v?{...s,state:{...s.state,selectedWorkspaceId:v}}:s}function Ze(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return ro(e,t,r);if(e.inspectionMode==="diff"){let s=dr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return cd(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return ld(e,t,r)}return X({state:e})}function od(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function ji(e,t){return od(e,pd(e.inspectionMode,Vi,t))}function ro(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),v=Ge(p===-1?0:p+t,0,s.length-1),i=s[v]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function ad(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 cd(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),v=Ge(e[t]+r,0,p);return v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function ld(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return dd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let _=Ge(v,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let _=Ge(v,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}if(t>0&&v>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&&v<0){let _=i[c-1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Ge(v,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function dd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=Ge(e.diffScrollOffset+t,0,p),i=fd(r.diffPathRanges??[],v)??e.selectedDiffPath;return v===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:v,selectedDiffPath:i,actionMessage:null},changed:!0})}function ud(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function hd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function fd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function lr(e,t,r,s){let o=r.indexOf(e[t]),p=Ge(o+s,0,r.length-1),v=r[p];return!v||v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function dr(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),v=Ge(p===-1?0:p+s,0,r.length-1),i=r[v]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function pd(e,t,r){let s=t.indexOf(e);return t[Ge(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function $t(e,t,r){return t.includes(e??"")?e:r}function gd(e){return e==="tabs"?"center":$t(e,Zl,"tasks")}function md(e,t){return e==="checks"||e==="actions"||e==="review"?"review":$t(e,Vi,t)}function _d(e){return e==="file"||e==="diff"?e:null}function wd(e){return e==="terminal"?"terminal":"agent"}function bd(e){return e==="terminal"?"terminal":"control"}function kd(e,t=[...le],r="codex"){return e&&pt(e)&&t.includes(e)?e:r}function ks(e,t=le){let r=t.length>0?t:le,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function fr(e){let t=le.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function yd(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":fr(e.activeTab)??e.preferredPtyTabKind}function vd(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(eo(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let v=o??s??e.ptyTabs[0]??null;return{activeTab:v?.id??ne,selectedPtyTabId:v?.id??null}}function Sd(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?Td(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Td(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 Rd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Hi(e,t){return t.includes(e)}function Cd(e,t){let r=Pd(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 Pd(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 so(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ve(e){return typeof e=="string"?e:null}function Id(e){return e?`task:${e}`:null}function ur(e){return typeof e=="string"&&e.startsWith("task:")}function ws(e){return typeof e=="string"&&e.startsWith("new-task:")}function bs(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function xd(e){return typeof e=="string"&&e.startsWith("workspace:")}function no(e){return ws(e)?e.slice(9):null}function io(e){return bs(e)?e.slice(19):null}function Ge(e,t,r){return Math.min(r,Math.max(t,e))}var gr="empty",fe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function co(e,t){let r=Dd(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):[],v=p.find(w=>w.id===e.selectedTaskId)??p[0]??null,i=v?.type==="project",c=lu(t.tasks),d=Od(e,v),_=Md(e,v,d),a=_.find(w=>w.id===d)??_[0]??{id:"agent",label:"CODEX"},k=t.inspection?.taskId===v?.id?t.inspection:null,l=s?.name??"no repo",m=v?ve(v.runner):ve(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${ve(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${ve(e.selectedRunner)}] Enter create task Esc pause ? help`:ur(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?v===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${ve(e.centerTabRunner??v?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 navigate targets R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:Nt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${Nt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:Ed(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>du(w,c[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":v?.id??"no task",repo:l,agent:m},centerTranscript:Ld(d,e,s,v,e.workspaceBrowser,k,r),tabs:_,rightContext:cu(s,v),rightInspection:Gd(e,v,k)}}function Ed(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return Ad(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let v=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:v,focused:v&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let _=e.selectedLeftItemId===`task:${d.id}`,a=_?"\u25B8":"\u2022",k=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${k}`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks"},m=uo(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 [${ve(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 [${ve(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 Ad(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let v=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:v,focused:v&&t.focusedRegion==="tasks"});let i=s.filter(_=>_.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}`,k=a?"\u25B8":"\u2022",l=_.title.length>28?`${_.title.slice(0,25)}\u2026`:_.title,m={id:`task:${_.id}`,taskId:_.id,text:`${k} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},w=uo(_);w&&(m.prBadge=w),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${ve(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function Dd(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 Ld(e,t,r,s,o,p=null,v=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,_)=>{let a=_===o.selectedIndex?"\u25B8":" ",k=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${k}`});return Me(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Me(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=v?.kind==="project",d=c?v.name??"this workspace":r.name,_=c?"Project Task":"Task";return Me([`No tasks in ${d}.`,"",`Press n or choose + New ${_} to create one with ${ve(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?Fd(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Nd(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Me(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Me(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function Md(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:Bd(p)}))??[];if(!t)return[{id:gr,label:"EMPTY",active:r===gr,focused:e.focusedRegion==="center"&&r===gr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:$d(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function Od(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:gr}function Bd(e){return e.title.toUpperCase()}function $d(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?Nt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Fd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Me(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=lo(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:""},...Wd(s.lines,r,o)]}function Nd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Me(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=lo(s.path??s.title);return[{text:s.title},{text:`${t.diffPaths.length} changed files \xB7 ${s.lines.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...jd(s.lines,r,o)]}function Me(e){return e.map(t=>({text:t}))}function Wd(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,v)=>{let i=o+v+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:fe.lineNumber}},{text:" \u2502 ",style:{fg:fe.gutter}},...ys(p,r)],tone:"default"}})}function jd(e,t,r){let s=Hd(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>Ud(p,r))}function Hd(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 Ud(e,t){let r=oo(e.oldNumber),s=oo(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:fe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:fe.diffAdd}:null,v=`${o} \u2502 ${e.text}`,i=p?Kd(ys(e.text,t),p.bg,p.fallbackFg):ys(e.text,t),c=p?{fg:fe.lineNumber,bg:p.bg}:{fg:fe.lineNumber},d=p?{fg:fe.gutter,bg:p.bg}:{fg:fe.gutter};return{text:v,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function oo(e){return e===null?" ":String(e).padStart(4," ")}function lo(e){let t=Nt.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 ys(e,t){return t==="diff"?qd(e):t==="markdown"?zd(e):t==="json"?vs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?vs(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 qd(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:fe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:fe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:fe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:fe.diffMeta}}]:[{text:e}]}function Kd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function zd(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:fe.markup,bold:!0}}]:vs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function vs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],v=o.index??0;v>s&&r.push({text:e.slice(s,v)}),r.push({text:p,style:Vd(p)}),s=v+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Vd(e){return e.startsWith("//")||e.startsWith("/*")?{fg:fe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:fe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:fe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:fe.markup}:{fg:fe.keyword}}function Gd(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"?ho(t.repoTargets??[]):o?.pullRequest??(t?he(t):null),v=[Xd(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...v,...Jd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...v,...su(e,r)]}:{title:"",rows:[...v,...iu(e,r)]}}function Xd(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=Ss(t),v=Ts(t?.requiredChecks??null);return o.push({text:" "},p,{text:" "},v),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function ao(e){return[{text:" "},Ss(e),{text:" "},Ts(e.requiredChecks??null)]}function uo(e){if(e.type==="project"&&e.repoTargets?.length){let r=ho(e.repoTargets);return r?ao(r):null}let t=he(e);return t?.number?ao(t):null}function ho(e){let t=e.filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?null:{provider:"github",number:-1,url:null,baseBranch:null,headBranch:null,status:Yd(r),mergeable:r.length===t.length&&r.every(s=>s.mergeable),mergeStateStatus:null,requiredChecks:r.flatMap(s=>s.requiredChecks),lastSyncedAt:r.map(s=>s.lastSyncedAt).filter(s=>!!s).sort().at(-1)??null,lastSyncedHeadSha:null}}function Yd(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 Ss(e){return!e||!e.number?{text:Mi,style:{fg:"565f89"}}:e.status==="merged"?{text:Bi,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:$i,style:{fg:"f7768e"}}:{text:Oi,style:{fg:"9ece6a"}}}function Ts(e){return!e||e.length===0?{text:fs,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:ms,style:{fg:"f7768e"}}:e.every(t=>t.status==="success"||t.status==="skipped")?{text:gs,style:{fg:"9ece6a"}}:{text:ps,style:{fg:"e0af68"}}}function Jd(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return Qd(e,t);let r=he(t),s=fo("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,mergeable:!1,mergeStateStatus:null,lastSyncedAt:null,requiredChecks:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),s}var pr=32;function Qd(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let v of s){let i=o===v.repoId,c=e.focusedRegion==="inspector"&&i,d=v.repoId.startsWith("repo_")?v.repoId.slice(5):v.repoId;if(v.status!=="ready"){let a=v.failureReason?v.failureReason.slice(0,14):v.status,k=pr-a.length-1,l=d.length>k?d.slice(0,k-1)+"\u2026":d,m=pr-l.length-a.length;r.push({id:`project-review:${v.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let _=Ss(v.pullRequest),a=Ts(v.pullRequest.requiredChecks),k=`${_.text} ${a.text}`,l=pr-k.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,w=pr-m.length-k.length,n=m+" ".repeat(Math.max(1,w));r.push({id:`project-review:${v.repoId}`,text:n+k,selected:i,focused:c,segments:[{text:n},{..._,text:_.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(v=>v.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...fo("target",p.branch,p.pullRequest))),r}function fo(e,t,r){let s=d=>`${e}-${d}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let v=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${v} \u2192 ${i}`,muted:!0});let c=r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";return o.push({id:s("pr-merge"),text:c,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${Zd(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(eu)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0}),o}function Zd(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 eu(e){let{icon:t,color:r}=tu(e.status),s=e.name.length>16?`${e.name.slice(0,15)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(16," ")} ${ru(e.status)}`,color:r,muted:!1}}function tu(e){switch(e){case"success":return{icon:gs,color:"9ece6a"};case"pending":return{icon:ps,color:"e0af68"};case"failed":return{icon:ms,color:"f7768e"};case"skipped":return{icon:fs,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function ru(e){return e==="success"?"passing":e==="failed"?"failing":e}function su(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=nu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let v=p.kind==="file"?r.get(p.path):void 0,i=v==="A"?"9ece6a":v==="M"?"e0af68":v==="D"?"f7768e":v==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Di:Li:Ai(p.label),d=p.kind==="file"?Fi(p.label):void 0,_=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},k=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:_},a,k];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 nu(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function iu(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(ou(t))return au(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=>po(p,e,t))))}return r}function ou(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function au(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),v=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:v,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>po(d,e,t,o.length+1))))}}return r}function po(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,v=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:v}}function cu(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:ve(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:Nt.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 lu(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function du(e,t){return{name:ve(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var mr={width:120,height:36},Oe={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function kt(e,t){return{width:Math.max(e??mr.width,mr.width),height:Math.max(t??mr.height,mr.height)}}import{spawn as Du}from"node:child_process";import{createHash as Lu}from"node:crypto";import{createServer as Mu,createConnection as Co}from"node:net";import{openSync as Ou}from"node:fs";import{mkdir as Bu,readFile as As,rm as ht,writeFile as $u}from"node:fs/promises";import{tmpdir as Fu}from"node:os";import yt from"node:path";import{createRequire as bu}from"node:module";var wo=va(mo(),1),uu=1e3,hu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function bo(e){return new wo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:uu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function ko(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Cs(e,t){return new Promise(r=>{e.write(t,r)})}function yo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,v=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(v+i);if(!c){s.push({segments:[]});continue}let d=[];for(let _=0;_<e.cols;_+=1){let a=c.getCell(_,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:gu(a,v+i===p&&_===r.cursorX)})}s.push({segments:fu(pu(d))})}return s}function fu(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&wu(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};vo(r.style)||(o.style=r.style),t.push(o)}return t}function pu(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!vo(r.style))break;t-=1}return e.slice(0,t)}function gu(e,t){let r={},s=_o(e,"fg"),o=_o(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 _o(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"):hu[o]??mu(o)}function mu(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(_u).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 _u(e){return e===0?0:55+e*40}function wu(e,t){return Rs(e)===Rs(t)}function Rs(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function vo(e){return Rs(e)===""}var ku=bu(import.meta.url),yu=/^CTRL_([A-Z])$/,vu="\x1B[6n",Su="\x1B[c",Tu="\x1B[?u",Ru={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
146
|
-
`,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},_r=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")
|
|
147
|
-
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(k.tabId)})})),k}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function
|
|
142
|
+
`);return v.length>Kl?ge(t,"Diff is above the 500 KB inline preview limit.","too_large",t,v.length):v.includes("\0")?ge(t,"Binary diff preview is not available in Craig.","binary",t,v.length):{path:t,status:v.length>0?"ready":"empty",title:t,lines:v.length>0?v.split(`
|
|
143
|
+
`):["No diff for this file."],byteLength:v.length}}function Ei(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let p=0;p<o.length-1;p+=1){let v=o.slice(0,p+1).join("/");r.has(v)||(r.add(v),t.push({kind:"directory",path:v,depth:p,label:o[p]??v}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function Qe(e,t){return e&&t.includes(e)?e:t[0]??null}function Yl(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Ai(e){return[...new Set(e.split(`
|
|
144
|
+
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Jl(e,t){let r=hs.resolve(e,t),s=hs.resolve(e);if(r!==s&&!r.startsWith(`${s}${hs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Ql(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function ge(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Te();import{access as Zl}from"node:fs/promises";async function Di(e,t){let r=await ae(e,t),s=await ed(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await se(e,o),o}async function ed(e){try{return await Zl(e),!0}catch{return!1}}Ee();Ce();import Wt from"node:path";function Li(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"\u{F06E6} ";case"js":case"jsx":case"mjs":case"cjs":return"\u{F031E} ";case"json":case"jsonc":return"\u{F0871} ";case"md":case"mdx":return"\u{F0354} ";case"yaml":case"yml":return"\u{F0B10} ";case"sh":case"bash":case"zsh":return"\u{F018D} ";case"css":case"scss":case"sass":return"\u{F031C} ";case"html":case"htm":return"\u{F031D} ";case"py":return"\u{F0320} ";case"go":return"\u{F07D3} ";case"rs":return"\u{F1617} ";case"lock":return"\u{F033E} ";case"png":case"jpg":case"jpeg":case"gif":case"svg":case"webp":return"\u{F02E9} ";default:return"\u{F0214} "}}var Mi="\u{F024B} ",Oi="\u{F0DCF} ",Bi="\u25CB",$i="\uEA64",Fi="\uEAFE",Ni="\uEBDA",ps="\u25CB",gs="\u25CF",ms="\u2713",_s="\u2715";function Wi(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Ee();wt();Ee();var td=["tasks","center","inspector","actions"],Ki=["agent","terminal"],zi=[],ne="inspection",Km=[...Ki,...zi],Vi=["commit","push","refresh-checks","close-task"],rd=["refresh-checks","close-task"],Gi=["task","checks","pr","setup-run","actions","next-action"],Xi=["diff","files","review"];function Yi(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=bd(e?.openInspectionKind)??r,o=pt(t);return{inputMode:yd(e?.inputMode),focusedRegion:_d(e?.focusedRegion),selectedRepoId:Ve(e?.selectedRepoId),selectedWorkspaceId:Ve(e?.selectedWorkspaceId),selectedTaskId:Ve(e?.selectedTaskId),selectedPtyTabId:Ve(e?.selectedPtyTabId),selectedLeftItemId:Ed(Ve(e?.selectedTaskId)),activeTab:r?ne:Ve(e?.activeTab)??"agent",preferredPtyTabKind:kd(e?.preferredPtyTabKind),inspectorSection:$t(e?.inspectorSection,Gi,"task"),inspectionMode:wd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ve(e?.selectedFileTreePath),selectedFilePath:Ve(e?.selectedFilePath),selectedDiffPath:Ve(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:$t(e?.selectedActionId,Vi,"commit"),selectedProjectTargetId:null,selectedRunner:vd(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:sd(),centerZoomed:!1}}function sd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function Ji(e,t){return{...e??je(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function fr(e,t,r={}){let s=Id(e,t),o=io(s),p=(o?.kind==="workspace"?t.workspaces?.find(w=>w.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(w=>w.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(w=>w.id===o.id)??null:o?.kind==="task"?t.repos.find(w=>w.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(w=>w.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(w.id))??null:null)??(p?.kind!=="project"?t.repos.find(w=>w.id===p?.primaryRepoId)??null:null)??t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(w=>w.workspaceId===p.id):i?t.tasks.filter(w=>w.repoId===i):[],d=(o?.kind==="task"?c.find(w=>w.id===o.id)??null:null)??c.find(w=>w.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...Td(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:pd(e,t,d?.id??null),...Rd(e,t,d?.id??null),selectedDiffPath:fd(e,t,d?.id??null),inspectorSection:$t(e.inspectorSection,Gi,"task")}}function Qi(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return nd(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(bs(e.selectedLeftItemId)||ks(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:ys(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return ji(e,1);if(t==="SHIFT_TAB"||t==="[")return ji(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,-1,r):Hi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?Ze(e,1,r):Hi(e,1,r);if(t==="PAGE_UP")return Ze(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return Ze(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return Ze(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return Ze(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??le,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Sd(e,t);return X({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Ad(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&qi(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return ws(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Ui(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return ws(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Ui(e,1)}if(et(t)){if(e.focusedRegion==="tasks"&&(bs(e.selectedLeftItemId)||ks(e.selectedLeftItemId))){let s=oo(e.selectedLeftItemId),o=ao(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Ft(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&qi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Ft(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:ld({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Nt(e,t){return{...e,terminal:t}}function Zi(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function nd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function et(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
145
|
+
`}function eo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function to(e){return ro(e)||Ft(e)!==null}function id(e){return zi.includes(e)}function ro(e){return Ki.includes(e)}function so(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var od=["tasks","center","inspector"];function ji(e,t){return dr(e,"focusedRegion",od,t)}function ws(e,t,r){let s=dr(e,"activeTab",r&&r.length>0?r:Pd(e),t);return!s.changed||id(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Ft(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Hi(e,t,r){if(e.focusedRegion==="tasks")return ad(e,t,r.leftItemIds);if(e.focusedRegion==="center")return ws(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return no(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}return r.projectTargetIds?.length?ur(e,"selectedProjectTargetId",r.projectTargetIds,t):dr(e,"selectedActionId",rd,t)}return dr(e,"selectedActionId",Vi,t)}function ad(e,t,r){let s=ur(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=io(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let p=oo(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let v=ao(s.state.selectedLeftItemId);return v?{...s,state:{...s.state,selectedWorkspaceId:v}}:s}function Ze(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return no(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return dd(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return ud(e,t,r)}return X({state:e})}function cd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Ui(e,t){return cd(e,md(e.inspectionMode,Xi,t))}function no(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),v=Ge(p===-1?0:p+t,0,s.length-1),i=s[v]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function ld(e){if(!e.selectedFileTreePath)return e;let t=new Set(e.collapsedFileTreePaths);return t.has(e.selectedFileTreePath)?t.delete(e.selectedFileTreePath):t.add(e.selectedFileTreePath),{...e,collapsedFileTreePaths:[...t].sort((r,s)=>r.localeCompare(s)),actionMessage:null}}function dd(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),v=Ge(e[t]+r,0,p);return v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function ud(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return hd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let w=Ge(v,0,p);return w===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let w=Ge(v,0,p);return w===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:w,actionMessage:null},changed:!0})}if(t>0&&v>p){let w=i[c+1]??null;return w?X({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&v<0){let w=i[c-1]??null;return w?X({state:{...e,selectedDiffPath:w,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Ge(v,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function hd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),v=Ge(e.diffScrollOffset+t,0,p),i=gd(r.diffPathRanges??[],v)??e.selectedDiffPath;return v===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:v,selectedDiffPath:i,actionMessage:null},changed:!0})}function fd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function pd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function gd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function dr(e,t,r,s){let o=r.indexOf(e[t]),p=Ge(o+s,0,r.length-1),v=r[p];return!v||v===e[t]?X({state:e}):X({state:{...e,[t]:v,actionMessage:null},changed:!0})}function ur(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),v=Ge(p===-1?0:p+s,0,r.length-1),i=r[v]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function md(e,t,r){let s=t.indexOf(e);return t[Ge(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function $t(e,t,r){return t.includes(e??"")?e:r}function _d(e){return e==="tabs"?"center":$t(e,td,"tasks")}function wd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":$t(e,Xi,t)}function bd(e){return e==="file"||e==="diff"?e:null}function kd(e){return e==="terminal"?"terminal":"agent"}function yd(e){return e==="terminal"?"terminal":"control"}function vd(e,t=[...le],r="codex"){return e&>(e)&&t.includes(e)?e:r}function ys(e,t=le){let r=t.length>0?t:le,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Ft(e){let t=le.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Sd(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Ft(e.activeTab)??e.preferredPtyTabKind}function Td(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(ro(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let v=o??s??e.ptyTabs[0]??null;return{activeTab:v?.id??ne,selectedPtyTabId:v?.id??null}}function Rd(e,t,r){if(!t.inspection||t.inspection.taskId!==r)return{selectedFileTreePath:e.selectedFileTreePath,collapsedFileTreePaths:e.collapsedFileTreePaths};let s=e.selectedFileTreePath??t.inspection.selectedFilePath,o=e.selectedFileTreePath===null&&e.collapsedFileTreePaths.length===0?Cd(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Cd(e,t){let r=new Set;if(t){let s=t.split("/");for(let o=1;o<s.length;o+=1)r.add(s.slice(0,o).join("/"))}return e.filter(s=>s.kind==="directory"&&!s.path.includes("/")&&!r.has(s.path)).map(s=>s.path).sort((s,o)=>s.localeCompare(o))}function Pd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function qi(e,t){return t.includes(e)}function Id(e,t){let r=xd(t);return e.selectedLeftItemId&&r.includes(e.selectedLeftItemId)?e.selectedLeftItemId:e.selectedWorkspaceId&&r.includes(`workspace:${e.selectedWorkspaceId}`)?`workspace:${e.selectedWorkspaceId}`:e.selectedTaskId&&r.includes(`task:${e.selectedTaskId}`)?`task:${e.selectedTaskId}`:e.selectedRepoId&&r.includes(`repo:${e.selectedRepoId}`)?`repo:${e.selectedRepoId}`:r[0]??null}function xd(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function io(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ve(e){return typeof e=="string"?e:null}function Ed(e){return e?`task:${e}`:null}function hr(e){return typeof e=="string"&&e.startsWith("task:")}function bs(e){return typeof e=="string"&&e.startsWith("new-task:")}function ks(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function Ad(e){return typeof e=="string"&&e.startsWith("workspace:")}function oo(e){return bs(e)?e.slice(9):null}function ao(e){return ks(e)?e.slice(19):null}function Ge(e,t,r){return Math.min(r,Math.max(t,e))}var gr="empty",fe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function uo(e,t){let r=Md(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],v=p.find(_=>_.id===e.selectedTaskId)??p[0]??null,i=v?.type==="project",c=uu(t.tasks),d=$d(e,v),w=Bd(e,v,d),a=w.find(_=>_.id===d)??w[0]??{id:"agent",label:"CODEX"},k=t.inspection?.taskId===v?.id?t.inspection:null,l=s?.name??"no repo",m=v?ve(v.runner):ve(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${ve(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${ve(e.selectedRunner)}] Enter create task Esc pause ? help`:hr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?v===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${ve(e.centerTabRunner??v?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 navigate targets R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:Wt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${Wt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:Dd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>hu(_,c[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":v?.id??"no task",repo:l,agent:m},centerTranscript:Od(d,e,s,v,e.workspaceBrowser,k,r),tabs:w,rightContext:du(s,v),rightInspection:Yd(e,v,k)}}function Dd(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return Ld(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let v=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:v,focused:v&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let w=e.selectedLeftItemId===`task:${d.id}`,a=w?"\u25B8":"\u2022",k=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${k}`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks"},m=fo(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${ve(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,w=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${ve(e.selectedRunner)}]`,indent:2,selected:w,focused:w&&e.focusedRegion==="tasks",muted:!w})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let w=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${w?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function Ld(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let v=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:v,focused:v&&t.focusedRegion==="tasks"});let i=s.filter(w=>w.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let w of i){let a=t.selectedLeftItemId===`task:${w.id}`,k=a?"\u25B8":"\u2022",l=w.title.length>28?`${w.title.slice(0,25)}\u2026`:w.title,m={id:`task:${w.id}`,taskId:w.id,text:`${k} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},_=fo(w);_&&(m.prBadge=_),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${ve(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function Md(e,t){let r=e.workspaces??[];if(!e.workspaces)return null;let s=e.tasks.find(o=>o.id===t.selectedTaskId)??null;return s?r.find(o=>o.id===s.workspaceId)??null:t.selectedWorkspaceId?r.find(o=>o.id===t.selectedWorkspaceId)??null:r[0]??null}function Od(e,t,r,s,o,p=null,v=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,w)=>{let a=w===o.selectedIndex?"\u25B8":" ",k=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${k}`});return Me(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Me(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=v?.kind==="project",d=c?v.name??"this workspace":r.name,w=c?"Project Task":"Task";return Me([`No tasks in ${d}.`,"",`Press n or choose + New ${w} to create one with ${ve(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Me([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?Wd(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?jd(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Me(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Me(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function Bd(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:Fd(p)}))??[];if(!t)return[{id:gr,label:"EMPTY",active:r===gr,focused:e.focusedRegion==="center"&&r===gr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:Nd(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function $d(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:gr}function Fd(e){return e.title.toUpperCase()}function Nd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?Wt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function Wd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Me(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=ho(s.path??s.title);return[{text:s.title},{text:`${s.byteLength===null?"size unknown":`${s.byteLength} bytes`} \xB7 ${s.lines.length} lines \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Hd(s.lines,r,o)]}function jd(e,t,r){if(!e)return Me(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Me(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=ho(s.path??s.title);return[{text:s.title},{text:`${t.diffPaths.length} changed files \xB7 ${s.lines.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Ud(s.lines,r,o)]}function Me(e){return e.map(t=>({text:t}))}function Hd(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,v)=>{let i=o+v+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:fe.lineNumber}},{text:" \u2502 ",style:{fg:fe.gutter}},...vs(p,r)],tone:"default"}})}function Ud(e,t,r){let s=qd(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>Kd(p,r))}function qd(e){let t=[],r=0,s=0;for(let o of e){let p=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(p){r=Number.parseInt(p[1]??"0",10),s=Number.parseInt(p[2]??"0",10);continue}if(!(o.startsWith("diff --git")||o.startsWith("index ")||o.startsWith("+++ ")||o.startsWith("--- "))&&!(o==="staged"||o==="unstaged"||o==="untracked")){if(o.startsWith("-")&&!o.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:o.slice(1),kind:"delete"}),r+=1;continue}if(o.startsWith("+")&&!o.startsWith("+++")){t.push({oldNumber:null,newNumber:s,marker:"+",text:o.slice(1),kind:"add"}),s+=1;continue}if(o.startsWith(" ")){if(r===0&&s===0)continue;t.push({oldNumber:r,newNumber:s,marker:" ",text:o.slice(1),kind:"context"}),r+=1,s+=1;continue}}}return t}function Kd(e,t){let r=co(e.oldNumber),s=co(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:fe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:fe.diffAdd}:null,v=`${o} \u2502 ${e.text}`,i=p?Vd(vs(e.text,t),p.bg,p.fallbackFg):vs(e.text,t),c=p?{fg:fe.lineNumber,bg:p.bg}:{fg:fe.lineNumber},d=p?{fg:fe.gutter,bg:p.bg}:{fg:fe.gutter};return{text:v,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function co(e){return e===null?" ":String(e).padStart(4," ")}function ho(e){let t=Wt.extname(e).toLowerCase();return[".ts",".tsx",".js",".jsx",".mjs",".cjs"].includes(t)?"javascript":[".json",".jsonc"].includes(t)?"json":[".md",".mdx"].includes(t)?"markdown":[".css",".scss"].includes(t)?"css":"plain"}function vs(e,t){return t==="diff"?zd(e):t==="markdown"?Gd(e):t==="json"?Ss(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Ss(e,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|\/\/.*$|\/\*.*?\*\/|\b(const|let|var|function|return|if|else|for|while|class|interface|type|import|export|from|async|await|new|extends|implements|switch|case|break|continue|try|catch|throw|true|false|null|undefined)\b|-?\b\d+(?:\.\d+)?\b/g):[{text:e}]}function zd(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:fe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:fe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:fe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:fe.diffMeta}}]:[{text:e}]}function Vd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Gd(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:fe.markup,bold:!0}}]:Ss(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Ss(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],v=o.index??0;v>s&&r.push({text:e.slice(s,v)}),r.push({text:p,style:Xd(p)}),s=v+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Xd(e){return e.startsWith("//")||e.startsWith("/*")?{fg:fe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:fe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:fe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:fe.markup}:{fg:fe.keyword}}function Yd(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?po(t.repoTargets??[]):o?.pullRequest??(t?he(t):null),v=[Jd(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...v,...Zd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...v,...iu(e,r)]}:{title:"",rows:[...v,...au(e,r)]}}function Jd(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let w=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:w}})}let p=Ts(t),v=Rs(t?.requiredChecks??null);return o.push({text:" "},p,{text:" "},v),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function lo(e){return[{text:" "},Ts(e),{text:" "},Rs(e.requiredChecks??null)]}function fo(e){if(e.type==="project"&&e.repoTargets?.length){let r=po(e.repoTargets);return r?lo(r):null}let t=he(e);return t?.number?lo(t):null}function po(e){let t=e.filter(s=>s.status==="ready"),r=t.map(s=>s.pullRequest).filter(s=>!!s.number);return r.length===0?null:{provider:"github",number:-1,url:null,baseBranch:null,headBranch:null,status:Qd(r),mergeable:r.length===t.length&&r.every(s=>s.mergeable),mergeStateStatus:null,requiredChecks:r.flatMap(s=>s.requiredChecks),lastSyncedAt:r.map(s=>s.lastSyncedAt).filter(s=>!!s).sort().at(-1)??null,lastSyncedHeadSha:null}}function Qd(e){return e.some(t=>t.status==="open")?"open":e.every(t=>t.status==="merged")?"merged":e.some(t=>t.status==="closed")?"closed":e[0]?.status??null}function Ts(e){return!e||!e.number?{text:Bi,style:{fg:"565f89"}}:e.status==="merged"?{text:Fi,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Ni,style:{fg:"f7768e"}}:{text:$i,style:{fg:"9ece6a"}}}function Rs(e){return!e||e.length===0?{text:ps,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:_s,style:{fg:"f7768e"}}:e.every(t=>t.status==="success"||t.status==="skipped")?{text:ms,style:{fg:"9ece6a"}}:{text:gs,style:{fg:"e0af68"}}}function Zd(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return eu(e,t);let r=he(t),s=go("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,mergeable:!1,mergeStateStatus:null,lastSyncedAt:null,requiredChecks:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),s}var pr=32;function eu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let v of s){let i=o===v.repoId,c=e.focusedRegion==="inspector"&&i,d=v.repoId.startsWith("repo_")?v.repoId.slice(5):v.repoId;if(v.status!=="ready"){let a=v.failureReason?v.failureReason.slice(0,14):v.status,k=pr-a.length-1,l=d.length>k?d.slice(0,k-1)+"\u2026":d,m=pr-l.length-a.length;r.push({id:`project-review:${v.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let w=Ts(v.pullRequest),a=Rs(v.pullRequest.requiredChecks),k=`${w.text} ${a.text}`,l=pr-k.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,_=pr-m.length-k.length,n=m+" ".repeat(Math.max(1,_));r.push({id:`project-review:${v.repoId}`,text:n+k,selected:i,focused:c,segments:[{text:n},{...w,text:w.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(v=>v.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...go("target",p.branch,p.pullRequest))),r}function go(e,t,r){let s=d=>`${e}-${d}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let v=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${v} \u2192 ${i}`,muted:!0});let c=r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";return o.push({id:s("pr-merge"),text:c,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${tu(r.lastSyncedAt)}`,muted:!0}),o.push({id:s("checks-spacer"),text:""}),o.push({id:s("checks-header"),text:"Checks"}),r.requiredChecks.length?o.push(...r.requiredChecks.map(ru)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0}),o}function tu(e){if(!e)return"--";let t=Date.now()-new Date(e).getTime(),r=Math.floor(t/1e3);if(r<60)return`${r}s ago`;let s=Math.floor(r/60);if(s<60)return`${s}m ago`;let o=Math.floor(s/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function ru(e){let{icon:t,color:r}=su(e.status),s=e.name.length>16?`${e.name.slice(0,15)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(16," ")} ${nu(e.status)}`,color:r,muted:!1}}function su(e){switch(e){case"success":return{icon:ms,color:"9ece6a"};case"pending":return{icon:gs,color:"e0af68"};case"failed":return{icon:_s,color:"f7768e"};case"skipped":return{icon:ps,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function nu(e){return e==="success"?"passing":e==="failed"?"failing":e}function iu(e,t){if(!t)return[{id:"empty",text:"No file index. Select a task with local changes.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.fileRows.length===0)return[{id:"empty",text:"No Git-visible files.",muted:!0}];let r=new Map(t.diffRows.map(p=>[p.path,p.status])),s=ou(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let v=p.kind==="file"?r.get(p.path):void 0,i=v==="A"?"9ece6a":v==="M"?"e0af68":v==="D"?"f7768e":v==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Mi:Oi:Li(p.label),d=p.kind==="file"?Wi(p.label):void 0,w=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},k=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:w},a,k];return{id:p.path,text:`${w}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function ou(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function au(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(cu(t))return lu(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>mo(p,e,t))))}return r}function cu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function lu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),v=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:v,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>mo(d,e,t,o.length+1))))}}return r}function mo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,v=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:v}}function du(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:ve(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:Wt.basename(t.worktreePath)}]:[{label:"Repo",value:e.name},{label:"Branch",value:e.defaultBranch},{label:"Task",value:"none",mutedValue:!0}]:[{label:"Repo",value:"none",mutedValue:!0}]}function uu(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function hu(e,t){return{name:ve(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var mr={width:120,height:36},Oe={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??mr.width,mr.width),height:Math.max(t??mr.height,mr.height)}}import{spawn as Mu}from"node:child_process";import{createHash as Ou}from"node:crypto";import{createServer as Bu,createConnection as Io}from"node:net";import{openSync as $u}from"node:fs";import{mkdir as Fu,readFile as Ds,rm as ft,writeFile as Nu}from"node:fs/promises";import{tmpdir as Wu}from"node:os";import yt from"node:path";import{createRequire as yu}from"node:module";var ko=Ta(wo(),1),fu=1e3,pu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function yo(e){return new ko.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:fu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function vo(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Ps(e,t){return new Promise(r=>{e.write(t,r)})}function So(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,v=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(v+i);if(!c){s.push({segments:[]});continue}let d=[];for(let w=0;w<e.cols;w+=1){let a=c.getCell(w,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:_u(a,v+i===p&&w===r.cursorX)})}s.push({segments:gu(mu(d))})}return s}function gu(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&ku(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};To(r.style)||(o.style=r.style),t.push(o)}return t}function mu(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!To(r.style))break;t-=1}return e.slice(0,t)}function _u(e,t){let r={},s=bo(e,"fg"),o=bo(e,"bg");return s&&(r.fg=s),o&&(r.bg=o),e.isBold()&&(r.bold=!0),e.isDim()&&(r.dim=!0),e.isItalic()&&(r.italic=!0),e.isUnderline()&&(r.underline=!0),(e.isInverse()||t)&&(r.inverse=!0),r}function bo(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let s=t==="fg"?e.isFgRGB():e.isBgRGB(),o=t==="fg"?e.getFgColor():e.getBgColor();return s?o.toString(16).padStart(6,"0"):pu[o]??wu(o)}function wu(e){if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),s=Math.floor(t%36/6),o=t%6;return[r,s,o].map(bu).map(p=>p.toString(16).padStart(2,"0")).join("")}if(e>=232&&e<=255){let t=8+(e-232)*10;return[t,t,t].map(r=>r.toString(16).padStart(2,"0")).join("")}return"e6e6e6"}function bu(e){return e===0?0:55+e*40}function ku(e,t){return Cs(e)===Cs(t)}function Cs(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function To(e){return Cs(e)===""}var vu=yu(import.meta.url),Su=/^CTRL_([A-Z])$/,Tu="\x1B[6n",Ru="\x1B[c",Cu="\x1B[?u",Pu={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
146
|
+
`,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},_r=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Is(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,Ro(p,s),this.getViewState(r);let v=this.createSession(t,r,s,o);return this.sessions.set(r,v),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=Iu(t);r!==null&&this.write(r)}scrollViewport(t){let r=this.getAttachedSession();if(!r||t===0)return;let s=r.terminal.buffer.active.baseY;r.scrollbackLines=Math.max(0,Math.min(s,r.scrollbackLines-t))}resize(t){let r=this.getAttachedSession();r&&Ro(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(Is(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Is(t);this.sessions.clear(),this.attachedTabId=null}getViewState(t){if(!t)return{status:"idle",rows:[],error:null,scrolledBack:!1};let r=this.sessions.get(t);return r?{status:r.status,rows:So(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let p=this.spawn??Eu().spawn,v=yo(s),i=o??this.resolveSessionSpec(t,r),c=at({...this.env,...i.env??{}}),{executable:d,args:w}=Au(this.shell,i.command,{cwd:i.cwd,env:c}),a=p(d,w,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:i.cwd,env:Du(c)}),k={taskId:t,tabId:r,pty:a,terminal:v,status:"running",error:null,disposables:[],scrollbackLines:0};return k.disposables.push(a.onData(l=>{Lu(a,l),Ps(k.terminal,l).then(()=>{this.onUpdate?.(k.tabId)})})),k.disposables.push(a.onExit(l=>{k.status="exited",Ps(k.terminal,`\r
|
|
147
|
+
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(k.tabId)})})),k}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function Iu(e){if(e.length===1)return e;let t=Pu[e];if(t!==void 0)return t;let r=Su.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function Ro(e,t){xu(e.pty,t),vo(e.terminal,t)}function Is(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function xu(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Eu(){return vu("node-pty")}function Au(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ct(t[0],r),...t.slice(1)].map(Co).join(" ")}; exec ${Co(e)} -l`;return{executable:e,args:["-lc",o]}}function Co(e){return`'${e.replaceAll("'","'\\''")}'`}function Du(e){let t={};for(let[r,s]of Object.entries(e))typeof s=="string"&&(t[r]=s);return t.TERM=t.TERM??"xterm-256color",t}function Lu(e,t){for(let r=0;r<xs(t,Tu);r+=1)e.write("\x1B[1;1R");for(let r=0;r<xs(t,Ru);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<xs(t,Cu);r+=1)e.write("\x1B[?0u")}function xs(e,t){if(t.length===0)return 0;let r=0,s=e.indexOf(t);for(;s!==-1;)r+=1,s=e.indexOf(t,s+t.length);return r}var Ls=3;async function xo(e){let t=Ms(e.paths);await ju(t,e.paths,e.spawnDaemon);let r=await Oo(t.socketPath),s=new Es(r,e);return await s.ready(),s}async function Eo(e,t={}){let r=Ms(e);await Fu(e.runtimeDir,{recursive:!0}),await ft(r.socketPath,{force:!0});let s=new As(e,t),o=Bu(p=>s.handleConnection(p));await Vu(o,r.socketPath),await Nu(r.pidPath,String(process.pid),"utf8"),await new Promise(p=>{let v=()=>{s.closeClients(),o.close(()=>p())};s.onShutdown=v,process.once("SIGTERM",v),process.once("SIGINT",v)}),await ft(r.socketPath,{force:!0}),await ft(r.pidPath,{force:!0}),s.disposeAll()}async function Ao(e){let t=Ms(e);return await br(t.socketPath)?(await Lo(t.socketPath),!0):!1}var Es=class{constructor(t,r){this.socket=t;this.options=r,t.setEncoding("utf8"),t.on("data",s=>this.handleData(String(s))),t.on("error",s=>this.rejectAll(s instanceof Error?s:new Error(String(s)))),t.on("close",()=>{this.closed=!0,this.rejectAll(new Error("Craig PTY daemon connection closed."))})}socket;nextRequestId=1;pending=new Map;viewCache=new Map;attachedTabId=null;buffer="";closed=!1;options;async ready(){if((await this.send({type:"ping"})).protocolVersion!==Ls)throw new Error("Craig PTY daemon protocol mismatch.")}async ensureSession(t,r,s){let o=await this.send({type:"ensureSession",taskId:t,tabId:r,size:s,spec:this.options.resolveSessionSpec?.(t,r)??{cwd:this.options.workspaceRoot,command:[]}});this.attachedTabId=r;let p=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,p),p}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((v,i)=>{this.pending.set(r,{resolve:v,reject:i})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
|
|
148
148
|
`);let p=await o;if(!p.ok)throw new Error(p.error);return p}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
|
|
149
149
|
`);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
|
|
150
|
-
`)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},
|
|
150
|
+
`)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},As=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new _r({...r,workspaceRoot:t.workspaceRoot,onUpdate:s=>this.broadcastUpdate(s)})}handleConnection(t){let r="";this.clients.add(t),t.setEncoding("utf8"),t.on("data",s=>{r+=String(s);let o=r.indexOf(`
|
|
151
151
|
`);for(;o!==-1;){let p=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,p),o=r.indexOf(`
|
|
152
|
-
`)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{wr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);wr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:
|
|
153
|
-
${p.slice(-2e3)}`:""}`)}async function
|
|
152
|
+
`)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{wr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);wr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:Ls}:{},...o?{view:o}:{}})}catch(o){let p=o instanceof Error?o.message:String(o);wr(t,{id:s.id,ok:!1,error:p})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return Gu(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)wr(s,{type:"update",tabId:t,view:r})}};function Ms(e){let t=Ou("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:yt.join(Wu(),`craig-${t}.sock`),pidPath:yt.join(e.runtimeDir,"pty-daemon.pid")}}async function ju(e,t,r){if(await Hu(e.socketPath,1e3))return;await br(e.socketPath)&&(await Lo(e.socketPath),await Po(e.socketPath,1e3)),await br(e.socketPath)&&(await Ku(e),await Po(e.socketPath,1e3)),await qu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:v,args:i}=Uu(s),c=$u(yt.join(t.runtimeDir,"pty-daemon.log"),"a");Mu(v,i,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await Do(e.socketPath))return;await Os(50)}let p=await Ds(yt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${p?`
|
|
153
|
+
${p.slice(-2e3)}`:""}`)}async function Do(e){let t=await zu(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Ls}async function Hu(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await Do(e))return!0;await Os(50)}return!1}function Uu(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:yt.resolve(yt.dirname(t),"..","node_modules",".bin","tsx"),args:[t,"__craig-daemon",e]};let r=process.argv.slice(1);return{command:process.execPath,args:[...process.execArgv,...r,"__craig-daemon",e]}}async function qu(e){let t=await Ds(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Bo(r))return}await ft(e.socketPath,{force:!0}),await ft(e.pidPath,{force:!0})}async function br(e){let t=await Oo(e).catch(()=>null);return t?(t.end(),!0):!1}async function Lo(e){await Mo(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Ku(e){let t=await Ds(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Bo(r)){await ft(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await ft(e.socketPath,{force:!0})}}async function zu(e){return Mo(e,{id:1,type:"ping"})}function Mo(e,t){return new Promise((r,s)=>{let o=Io(e),p="",v=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),i=()=>clearTimeout(v);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
|
|
154
154
|
`)),o.once("error",c=>{i(),s(c)}),o.on("data",c=>{p+=String(c);let d=p.indexOf(`
|
|
155
|
-
`);if(d===-1)return;let
|
|
156
|
-
`)}catch{}}function
|
|
157
|
-
`)}function
|
|
158
|
-
`)}function
|
|
159
|
-
`)}function th(e,t,r,s){let o=ah(e.runners),p=1,v=e.leftTree.map(c=>oh(c,t,s));return[...Rr(v,r-p),o]}function rh(e,t,r,s){let o=e.tabs.find(f=>f.active)?.label??"AGENT",p=kh(e.tabs),v=`${" ".repeat(p)}${Pr("\u2500".repeat(o.length+1),s,re.panelMuted)}`,i=[`${Pr(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(f=>f.active)?.id??"agent",d=e.centerHeader.tabLabel==="BROWSER"||!Zi(c)?e.centerTranscript.map(f=>({...f})):sh(e),_=ch(e.tabs,s,e.focusedRegion==="center"),a=" engaged ",k=a.length+2,l=e.inputMode==="terminal"?`${Ir(a,s,re.panelBg)}${Cr("\u25CF",s,re.panelBg)} `:"",m=t-2,w=e.inputMode==="terminal"?" ".repeat(Math.max(0,m-Be(_)-k)):"",g=[{text:e.inputMode==="terminal"?`${_}${w}${l}`:_},{text:v,tone:"muted"},{text:i},qe(),...d];return Rr(g,r)}function sh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},qe(),{text:e.terminal.error},qe(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:Go(s.segments),segments:s.segments,fullBleed:!0}))}function nh(e,t,r,s){let o=e.rightInspection?ih(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Rr([{text:"CONTEXT"},qe(),...e.rightContext.map(p=>lh(p,s)),...e.actionMessage?[qe(),{text:e.actionMessage}]:[]],r);return Rr(o,r)}function ih(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),v=p===-1?0:vh(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Oo(i)),...s.slice(v,v+o).map(i=>Oo(i))]}function Oo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),v=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:v}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function oh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",v=e.accentDot?` ${Cr("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+Be(m.text),0):0,c=t-Be(p)-Be(o)-i,d=e.selected?e.text:e.focused?Cr(e.text,r,re.panelBg):e.panelHeader?Pr(e.text,r,re.panelMuted):e.text,_=tt(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${_}${p}${v}`},...e.prBadge];return{text:`${_}${p}${e.prBadge.map(w=>w.text).join("")}`,segments:l,tone:a}}return{text:`${_}${p}${v}`,tone:a}}function ah(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),v=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${v}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function ch(e,t,r){return e.map(s=>s.active?r?Cr(s.label,t,re.panelBg):Pr(s.label,t,re.panelBg):Ir(s.label,t,re.panelBg)).join(" ")}function lh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Ir(e.value,t,re.panelBg):e.value}`}}function yr(e,t,r,s){let o=dh(s,e.tone??"default"),p=uh(e,r,o);if(s==="left"){if(e.fullBleed)return pe(tt(p,t),r,o);let i=t-vr-Sr;if(e.rightAlign){let d=Be(p),_=Math.max(0,i-d),a=`${" ".repeat(vr)}${" ".repeat(_)}${p}${" ".repeat(Sr)}`;return pe(a,r,o)}let c=`${" ".repeat(vr)}${tt(p,i)}${" ".repeat(Sr)}`;return pe(c,r,o)}return s==="center"&&e.fullBleed?hh(e,t,r,o):pe(tt(` ${p}`,t),r,o)}function dh(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Rr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(qe());return r}function qe(){return{text:""}}function uh(e,t,r){return e.segments?e.segments.map(s=>Ho(s,t,r)).join(""):e.text}function hh(e,t,r,s){let o=" ".repeat(Tr),p=Math.max(0,t-Tr*2);if(!e.segments)return pe(`${o}${tt(e.text,p)}${o}`,r,s);let v=gh(e.segments,p),i=`${o}${v.map(c=>Ho(c,r,s)).join("")}${o}`;return pe(i,r,s)}function Ho(e,t,r){let s=e.href?`${Uo(e.href)}${e.text}${$o}`:fh(e.text);return!t||!e.style?s:`${Wt(wh(e.style,r))}${bh(e.style)}${s}${Bs}${Wt(r)}`}function fh(e){return e.replace(Zu,t=>{let[r,s]=ph(t);return`${Uo(r)}${r}${$o}${s}`})}function ph(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Uo(e){return`\x1B]8;;${e}\x1B\\`}function gh(e,t){let r=mh(e,t);return _h(r,t)}function mh(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=Be(o.text);if(p<=s){r.push(o),s-=p;continue}let v=Ko(o.text,s);v.length>0&&r.push({...o,text:v}),s=0}return r}function _h(e,t){let r=Be(Go(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 wh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,v=s??t.bg;return p&&(o.fg=p),v&&(o.bg=v),o}function bh(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 kh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function qo(e,t){let r=Math.max(0,t-Be(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function tt(e,t){let r=Be(e);return r>=t?yh(e,t):e+" ".repeat(t-r)}function yh(e,t){if(t<=0)return"";if(Be(e)<=t)return e;let r=Vo(e);return Ko(r,Math.max(0,t-1))+"\u2026"}function Be(e){let t=0;for(let r of Array.from(Vo(e)))t+=zo(r);return t}function Ko(e,t){let r="",s=0;for(let o of Array.from(e)){let p=zo(o);if(s+p>t)break;r+=o,s+=p}return r}function zo(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 vh(e,t,r){return Math.min(Math.max(e,t),r)}function Vo(e){return e.replace(Qu,"").replace(Yu,"")}function Go(e){return e.map(t=>t.text).join("")}function pe(e,t,r){if(!t)return e;let s=Wt(r),o=e.replace(Ju,`${Bs}${s}`);return`${s}${o}${Bs}`}function Wt(e){let t=[];return e.fg&&t.push(`38;2;${Bo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Bo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Bo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Cr(e,t,r){return Ns(e,t,re.success.fg,r)}function Pr(e,t,r){return Ns(e,t,re.accent.fg,r)}function Ir(e,t,r){return Ns(e,t,re.mutedfg.fg,r)}function Ns(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Wt(o)}${e}${Wt(s)}`}var Sh="https://registry.npmjs.org/craig/latest";var xr=null;function Ws(){try{return"0.5.0"}catch{return"unknown"}}async function Xo(){let e=Ws(),t=Date.now();if(xr&&t-xr.cachedAt<36e5)return xr.result;let r=null;try{let o=await fetch(Sh,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&Th(r,e)};return xr={result:s,cachedAt:t},s}function Th(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[v=0,i=0,c=0]=r(t);return s!==v?s>v:o!==i?o>i:p>c}Ee();var js=["Runners","Help"];function Hs(e,t){return le.map(r=>{let s=ke(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),v=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${v}`})}function Jo(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 Qo(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(js.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Us(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function Zo(e,t,r,s){if(e.pathEdit)return Rh({...e,pathEdit:e.pathEdit},t,r);let o=Hs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=le[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!Us(r))return{kind:"noop",state:e};let p=le[e.menuIndex]??"codex",v=t.runners?.[p]?.enabled!==!1;return v&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Ch(t,p,!v),state:{...e,message:`${ke(p).displayName} ${v?"disabled":"enabled"}.`}}}function Rh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Yo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Us(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:Ph(t,s,o.length>0?o:null),state:Yo({...e,message:o.length>0?`${ke(s).displayName} executable saved.`:`${ke(s).displayName} executable reset to default.`})}}return Ih(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Ch(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function Ph(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function Yo(e){let t={...e};return delete t.pathEdit,t}function Us(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
160
|
-
`}function Ih(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Dh=xh(import.meta.url),Lh=Dh("terminal-kit"),Mh=Lh.terminal;async function ra(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=ze(t);await bt(t);let s=await Ne(r),o=ft(s),p=e.uiStateFile?await Ae({uiStateFile:e.uiStateFile}):null,v=Promise.resolve(),i=Promise.resolve(),c=await jt(t,void 0,o),d=hr(Gi(p,s),c);c=await jt(t,d,o);let _=()=>{},a={workspaceRoot:t,onUpdate:()=>_(),resolveSessionSpec:(m,w)=>Fh(c,w,t)},k=e.ptyRuntime??await Po({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=Xi(p,m);let w=p;v=v.then(()=>Re({uiStateFile:e.uiStateFile},w),()=>Re({uiStateFile:e.uiStateFile},w)),v.catch(()=>{})};return new Promise(m=>{let w=e.terminal??Mh,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:hr(d,c)},g=!1,f=!1,u=null,h=0,y=0,S=null,P=null,x=null,W=null,$=!1,D=`Craig v${Ws()}`,A=null,E=0,H=!0,G=null,N=()=>{},z=k;_=()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&N()},50)))};function q(B){return Ft(B,z.getViewState(B.selectedPtyTabId))}function b(B){return q(Oh(B,c))}function C(B){return c.tasks.find(L=>L.id===B.selectedTaskId)??null}async function T(){await z.hydrateSessions?.(c.tasks.flatMap(B=>B.ptyTabs.map(L=>L.id)))}function R(){T().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},N())})}function O(B){let L=i.then(B,B);return i=L.then(()=>{},()=>{}),L}function F(B){let L=C(B),M=c.inspection,j=M&&M.taskId===L?.id?M:null,K=Bh(j?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:$h(c),centerTabIds:to(L,B),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:K.map(Z=>Z.path),fileTreeFileIds:K.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:K.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,pageRows:Math.max(5,kt(w.width,w.height).height-Oe.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function U(B){await Zs(r,B),s=B,o=ft(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function V(B){let L=B.selectedTaskId;L&&await O(async()=>{let M=await ue(r,L);!M.ptyTabs.some(j=>j.id===B.activeTab)||M.selectedPtyTabId===B.activeTab||await se(r,{...M,selectedPtyTabId:B.activeTab})})}async function J(){let B=(n.mode==="main",n.shell);c=await jt(t,B,o),n.mode==="main"?n={mode:"main",shell:b(n.shell)}:n={...n,shell:b(n.shell)}}async function I(B){let L=++E,M=sa(c.tasks,B),j=c.inspection,K;if(M&&j?.taskId===M.id){let Z={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ce=await ki(M,j,Z);if(L!==E)return;K={...c,inspection:ce}}else if(K=await jt(t,B,o),L!==E)return;c=K,n.mode==="main"&&(n={mode:"main",shell:b(n.shell)},l(n.shell),N())}async function Q(B){let L=await Yh(B);n.mode==="main"&&(n={mode:"main",shell:b({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},N())}async function Y(B){try{let L=b(B),M=C(L),j=L.selectedPtyTabId;if(M&&L.focusedRegion==="tasks"){let ce=M.ptyTabs.find(xe=>xe.kind==="agent")??null;ce?j=ce.id:(M=await zs(M),await J(),j=M.selectedPtyTabId)}M&&!j&&(M=await zs(M),await J(),j=M.selectedPtyTabId);let K=b({...L,activeTab:j??L.activeTab,selectedPtyTabId:j});if(!K.selectedTaskId||!j){n={mode:"main",shell:K},N();return}n={mode:"main",shell:Ft({...K,inputMode:"terminal"},z.getViewState(j))},l(n.shell);let Z=await z.ensureSession(K.selectedTaskId,j,qs(kt(w.width,w.height)));f=Ks(j),u=null,n={mode:"main",shell:Ft({...K,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let M=L instanceof Error?L.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&Ks(B.selectedPtyTabId)&&(await ee(B.selectedTaskId,M).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:Ji(b(B),M)},l(n.shell)}N()}async function ee(B,L){await O(async()=>{let M=await ue(r,B);await se(r,{...M,status:M.status==="running"?"draft":M.status,runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function we(B,L,M){let j=b(B);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let K=await O(async()=>{let Z=await ue(r,j.selectedTaskId),ce=L??jh(Z,j.activeTab,j.preferredPtyTabKind),xe=ea(Z,ce,M??void 0,s),St={...Z,ptyTabs:[...Z.ptyTabs,xe],selectedPtyTabId:xe.id};return await se(r,St),St});return await J(),b({...j,activeTab:K.selectedPtyTabId??j.activeTab,selectedPtyTabId:K.selectedPtyTabId,preferredPtyTabKind:K.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${K.ptyTabs.at(-1)?.title??"tab"}`})}async function be(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:M,nextSelectedTab:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=K.ptyTabs.findIndex(Mr=>Mr.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=K.ptyTabs[Z],xe=K.ptyTabs.filter(Mr=>Mr.id!==ce.id),St=xe[Math.min(Z,xe.length-1)]??xe[Z-1]??null;return await se(r,{...K,ptyTabs:xe,selectedPtyTabId:St?.id??null}),{closedTab:ce,nextSelectedTab:St}});return z.disposeSession(M.id),await J(),b({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${M.title}`})}async function Xe(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let M=C(L),j;if(M?.type==="project"&&M.repoTargets?.length){let K=await nr(r,L.selectedTaskId);await J();let Z=K.synced+K.discovered+K.notFound;j=K.discovered>0?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""} \xB7 ${K.synced} refreshed`:`Refreshed ${K.synced}/${Z} targets`}else{let{disposition:K,task:Z}=await ts(r,L.selectedTaskId);await J(),j=K==="not_found"?`No PR found for ${Z.branch}`:K==="discovered"?`Discovered PR: #${he(Z)?.number} ${he(Z)?.url??""}`:`Refreshed checks: ${he(Z)?.requiredChecks.length??0} reported`}return b({...L,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Ie(){if($||n.mode!=="main")return;let B=n.shell.selectedTaskId,L=c.tasks;$=!0;try{let M=n.shell.actionMessage,K=(await ei(r,L)).find(ce=>ce.taskId===B),Z=L.find(ce=>ce.id===B);if(K&&!K.hadPr&&K.discovered>0&&(M=Z?.type==="project"?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""}`:`Discovered PR: #${K.firstDiscoveredPrNumber} ${K.firstDiscoveredPrUrl??""}`),n.mode!=="main")return;c=await jt(t,n.shell,o),n={mode:"main",shell:b({...n.shell,actionMessage:M})},N()}catch{}finally{$=!1}}async function Ke(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:M,task:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=await Ei(r,L.selectedTaskId);return{taskBeforeClose:K,task:Z}});for(let K of M.ptyTabs)z.disposeSession(K.id);return await J(),b({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function rt(B){let L=b(B);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await He(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Lt(r,L.selectedWorkspaceId);let j=await Mt(r,L.selectedWorkspaceId);return await J(),b({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function zs(B){let L=B.ptyTabs.find(K=>K.kind==="agent")??null;if(L){let K={...B,selectedPtyTabId:L.id};return await O(async()=>{let Z=await ue(r,B.id),ce=Z.ptyTabs.find(xe=>xe.kind==="agent")??null;ce&&await se(r,{...Z,selectedPtyTabId:ce.id})}),K}let M=ea(B,"agent",void 0,s),j={...B,ptyTabs:[...B.ptyTabs,M],selectedPtyTabId:M.id};return await O(async()=>{let K=await ue(r,B.id),Z=K.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await se(r,{...K,selectedPtyTabId:Z.id});return}await se(r,{...K,ptyTabs:[...K.ptyTabs,M],selectedPtyTabId:M.id})}),j}N=()=>{ia();let B=kt(w.width,w.height),L=n.mode==="main"?jo(B,co(b(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?Fo(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="pause"?No(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="options"?$s(B,{menuIndex:n.menuIndex,optionsMenuItems:js}):n.variant==="runners"?$s(B,{menuIndex:Ht(n).menuIndex,optionsMenuItems:Hs(s,Ht(n)),optionsMessage:Jo(Ht(n)),optionsSubtitle:"Runners"}):Wo(B);H&&(w.moveTo(1,1),w.eraseDisplayBelow(),H=!1),w.noFormat(Uh(L)),w.hideCursor(!0)};function ia(){let B=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";B!==G&&(G=B,w.grabInput(B==="terminal"?{mouse:"button"}:!0))}let oa=()=>{process.stdout.off("resize",Ys),w.removeListener("key",Vs),w.removeListener("unknown",Gs),w.removeListener("mouse",Xs),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),x&&(clearTimeout(x),x=null),W&&(clearInterval(W),W=null),z.disposeAll(),w.grabInput(!1),w.hideCursor(!1),w.fullscreen(!1)},Dr=B=>{oa(),m(B)},aa=async()=>{if(n.mode!=="main"||g)return;let B=n.shell,L=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){n={mode:"main",shell:b({...B,taskPromptError:"Select a workspace first."})},N();return}if(L.length===0){n={mode:"main",shell:b({...B,taskPromptError:"Task prompt cannot be empty."})},N();return}g=!0,n={mode:"main",shell:b({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},N();let M=null;try{M=await Hh(r,B.selectedRepoId,B.selectedWorkspaceId,L,B.selectedRunner),await J();let j=b({...n.shell,selectedRepoId:M.repoId,selectedWorkspaceId:M.workspaceId,selectedTaskId:M.id,selectedPtyTabId:M.selectedPtyTabId,selectedLeftItemId:`task:${M.id}`,activeTab:M.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),K=await z.ensureSession(M.id,j.selectedPtyTabId??na(M,"agent"),qs(kt(w.width,w.height)));f=Ks(j.selectedPtyTabId),n={mode:"main",shell:Ft(j,K)},l(n.shell)}catch(j){j instanceof Er&&(M=j.task);let K=j instanceof Error?j.message:"Failed to create task.";M&&(await se(r,{...M,status:"draft",runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:K}).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:b({...n.shell,inputMode:"control",selectedTaskId:M?.id??n.shell.selectedTaskId,selectedPtyTabId:M?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:M?`task:${M.id}`:n.shell.selectedLeftItemId,activeTab:M?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:M?null:"",taskPromptError:K,actionMessage:null})}}finally{g=!1,N()}},ca=B=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(B==="ESCAPE"){n={mode:"main",shell:b({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},N();return}if(et(B)){aa();return}if(B==="BACKSPACE"){n={mode:"main",shell:b({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},N();return}if(B==="CTRL_R"){n={mode:"main",shell:b({...L,selectedRunner:ks(L.selectedRunner,o),taskPromptError:null})},N();return}Qi(B)&&(n={mode:"main",shell:b({...L,taskPromptInput:`${L.taskPromptInput}${B}`,taskPromptError:null})},N())}},la=B=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(B==="ESCAPE"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,actionMessage:null})},N();return}if(B==="UP"||B==="k"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},N();return}if(B==="DOWN"||B==="j"){let M=Math.max(0,L.entries.length-1);n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(M,L.selectedIndex+1),error:null}})},N();return}if(B==="LEFT"||B==="h"){Q(vt.dirname(L.cwd)).catch(M=>{let j=M instanceof Error?M.message:"Failed to open parent directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:j}})},N()});return}if(B==="RIGHT"||B==="l"||et(B)){let M=L.entries[L.selectedIndex]??null;if(!M)return;if((B==="RIGHT"||B==="l")&&(M.kind==="directory"||M.kind==="repo")){Q(M.path).catch(j=>{let K=j instanceof Error?j.message:"Failed to open directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()});return}Dt(r,M.path).then(async j=>{await J();let K=j.repos[0]??null;n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:K?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to add workspace.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()})}}},Vs=B=>{let L=typeof B=="string"?B:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){ca(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){la(L);return}if(n.mode==="main"){let M=Yi(n.shell,L,F(n.shell));if(M.exit){Dr(0);return}if(M.detachTerminal){z.detach(),n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(n.shell.inputMode==="terminal"){if(M.changed){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(f&&et(L)){f=!1;return}f&&(f=!1),u=Kh(L)?{key:L,at:Date.now()}:null;let j=zh(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Lr(j);return}z.writeKey(L);return}if(L==="CTRL_C"){Dr(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},H=!0,N();return}if(M.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:b(M.state)},H=!0,N();return}if(M.beginTaskPrompt){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(M.openWorkspaceBrowser){Q(t).catch(j=>{let K=j instanceof Error?j.message:"Failed to browse workspaces.";n={mode:"main",shell:b({...M.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:K}})},N()});return}if(M.createPtyTab){we(M.state,M.createPtyTabKind,M.createPtyTabRunner).then(j=>{Y(j)}).catch(j=>{let K=j instanceof Error?j.message:"Failed to create tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closePtyTab){be(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.refreshPullRequestChecks){Xe(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh PR checks.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closeTask){Ke(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close task.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.removeWorkspace){rt(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to remove workspace.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.attachTerminal){Y(M.state);return}if(M.refreshInspection){n={mode:"main",shell:b(M.state)},l(n.shell),N(),I(n.shell).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:b({...n.shell,actionMessage:K})},N()});return}M.changed&&(n={mode:"main",shell:b(M.state)},V(n.shell).catch(()=>{}),l(n.shell),N());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:b(n.shell)},H=!0,N();return}if(n.variant==="options"){da(L);return}if(n.variant==="runners"){ua(L);return}if(n.optionsMessage){(L==="ESCAPE"||et(L))&&(n={...n,optionsMessage:null},N());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},N();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},N();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:b(n.shell)},H=!0,N());return}if(et(L)){if(n.menuIndex===0){n={mode:"main",shell:b({...n.shell,inputMode:"control"})},H=!0,N(),R();return}if(n.menuIndex===1){let M=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}Dr(0)}};function da(B){if(n.mode!=="overlay"||n.variant!=="options")return;let L=Qo(n.menuIndex,B);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},N();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},H=!0,N());return}if(L.kind==="help"){let M=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="runners"){let M=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N()}}}function ua(B){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=Zo(Ht(n),s,B,o);if(L.kind!=="noop"){if(L.kind==="back"){let M=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},N();return}U(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},N())}).catch(M=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=M instanceof Error?M.message:"Failed to save runner option.";n={...n,runnerOptions:{...Ht(n),message:j}},N()})}}let Gs=B=>{let L=qh(B);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){z.detach(),f=!1,u=null,n={mode:"main",shell:b({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),N();return}let M=Vh(L);if(M!==0){Lr(M);return}let j=Gh(L);if(j){f=!1,u={key:j,at:Date.now()},z.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
155
|
+
`);if(d===-1)return;let w=p.slice(0,d);i(),o.end();try{r(JSON.parse(w))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function Po(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await br(e))return;await Os(50)}}function Oo(e){return new Promise((t,r)=>{let s=Io(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Vu(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function wr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
|
|
156
|
+
`)}catch{}}function Bo(e){try{return process.kill(e,0),!0}catch{return!1}}function Os(e){return new Promise(t=>setTimeout(t,e))}function Gu(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Xu=[" \u2584\u2588\u2588\u2588\u2588\u2584 \u2588\u2588\u2580\u2588\u2588\u2588 \u2584\u2584\u2584 \u2588\u2588\u2593 \u2584\u2588\u2588\u2588\u2588"," \u2592\u2588\u2588\u2580 \u2580\u2588 \u2593\u2588\u2588 \u2592 \u2588\u2588\u2592\u2592\u2588\u2588\u2588\u2588\u2584 \u2593\u2588\u2588\u2592 \u2588\u2588\u2592 \u2580\u2588\u2592"," \u2592\u2593\u2588 \u2584 \u2593\u2588\u2588 \u2591\u2584\u2588 \u2592\u2592\u2588\u2588 \u2580\u2588\u2584 \u2592\u2588\u2588\u2592\u2592\u2588\u2588\u2591\u2584\u2584\u2584\u2591"," \u2592\u2593\u2593\u2584 \u2584\u2588\u2588\u2592\u2592\u2588\u2588\u2580\u2580\u2588\u2584 \u2591\u2588\u2588\u2584\u2584\u2584\u2584\u2588\u2588 \u2591\u2588\u2588\u2591\u2591\u2593\u2588 \u2588\u2588\u2593"," \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591\u2591\u2588\u2588\u2593 \u2592\u2588\u2588\u2592 \u2593\u2588 \u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2591\u2591\u2592\u2593\u2588\u2588\u2588\u2580\u2592"," \u2591 \u2591\u2592 \u2592 \u2591\u2591 \u2592\u2593 \u2591\u2592\u2593\u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591\u2593 \u2591\u2592 \u2592"," \u2591 \u2592 \u2591\u2592 \u2591 \u2592\u2591 \u2592 \u2592\u2592 \u2591 \u2592 \u2591 \u2591 \u2591"," \u2591 \u2591\u2591 \u2591 \u2591 \u2592 \u2592 \u2591\u2591 \u2591 \u2591"," \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591"," \u2591"];function Bs(){return[...Xu]}var Yu=["Start","Options","Exit"],Ju=["Resume","Options","Exit"],vr=2,Sr=2,Tr=2,Qu=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Zu=new RegExp("\x1B\\[(?:0)?m","g"),eh=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),th=/https?:\/\/[^\s<>"']+/g,$s="\x1B[0m",No="\x1B]8;;\x1B\\",re={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function Wo(e,t={}){return Ns(e,{subtitle:"crAIg is that you?",menuItems:Yu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}function jo(e,t={}){return Ns(e,{subtitle:"Control mode is paused.",menuItems:Ju,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}var kr=[" GLOBAL CENTER PANEL INSPECTOR"," ? help \u2190\u2192 / hl switch tab \u2191\u2193 / jk navigate"," Esc pause / back + new tab \u2190\u2192 / hl switch mode"," Tab cycle panels a codex tab R sync PR"," q quit t terminal tab R sync PR"," x close tab X close task"," TASKS Enter attach PTY X close task"," \u2191\u2193 / jk navigate"," n new task TERMINAL MODE"," Enter attach Ctrl+] return to control mode"," Wheel / PgUp / PgDn scroll",""," Press Esc to return."],rh=["Help"];function Fs(e,t={}){return Ns(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??rh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Ho(e,t={}){let r=t.color??!0,s=re.overlay,o=new Array(e.height).fill(pe(" ".repeat(e.width),r,s)),p=Bs(),v=Math.max(1,Math.floor((e.height-p.length-2-kr.length)/2));for(let w=0;w<p.length&&!(v+w>=e.height);w+=1)o[v+w]=pe(zo(p[w]??"",e.width),r,re.overlayLogo);let i=Math.max(...kr.map(w=>w.length)),c=Math.max(0,Math.floor((e.width-i)/2)),d=v+p.length+2;for(let w=0;w<kr.length;w+=1){let a=d+w;if(a>=e.height)break;let k=kr[w]??"";o[a]=pe(tt(" ".repeat(c)+k,e.width),r,s)}return o.join(`
|
|
157
|
+
`)}function Uo(e,t,r={}){let s=r.color??!0,o=Oe.leftWidth,p=Oe.rightWidth,v=Oe.dividerWidth,i=r.centerOnly??!1,c=i?e.width:e.width-o-p-v*2,d=e.height-Oe.topRailHeight-1,w=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent}`,a=pe(tt(w,e.width),s,re.rail),k=sh(t,o-vr-Sr,d,s),l=nh(t,c,d,s),m=oh(t,p,d,s),_=t.inputMode==="terminal",n=[];for(let u=0;u<d;u+=1){if(i){n.push(yr(l[u]??qe(),c,s,"center"));continue}let h=yr(k[u]??qe(),o,s,"left"),y=pe("\u2502",s,re.divider),S=yr(l[u]??qe(),c,s,"center"),P=pe("\u2502",s,re.divider),x=yr(m[u]??qe(),p,s,"right");n.push(`${h}${y}${S}${P}${x}`)}let g=_||t.modalInput?re.panelBg:re.panelMuted,f=pe(tt(` ${t.footerText}`,e.width),s,g);return[a,...n,f].join(`
|
|
158
|
+
`)}function Ns(e,t){let r=new Array(e.height).fill(pe(" ".repeat(e.width),t.color,re.overlay)),s=Bs(),o=Math.max(...t.menuItems.map(d=>d.length)),p=t.menuItems.map((d,w)=>`${w===t.menuIndex?">":" "} ${d.padEnd(o)}`),v=t.optionsMessage?["",t.optionsMessage]:[],i=[...s,"",t.subtitle,"",...p,...v],c=Math.max(1,Math.floor((e.height-i.length)/2));for(let d=0;d<i.length;d+=1){let w=zo(i[d]??"",e.width);if(d<s.length){r[c+d]=pe(w,t.color,re.overlayLogo);continue}if(d===s.length+1){r[c+d]=pe(w,t.color,re.overlaySubtitle);continue}let a=d-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?re.overlayMenuSelected:re.overlay;r[c+d]=pe(w,t.color,l)}if(t.versionText){let d=t.updateText?" (update available)":"",w=`${t.versionText}${d} `,a=" ".repeat(Math.max(0,e.width-Be(w)));r[e.height-1]=pe(`${a}${Ir(w,t.color,re.overlay)}`,t.color,re.overlay)}return r.join(`
|
|
159
|
+
`)}function sh(e,t,r,s){let o=lh(e.runners),p=1,v=e.leftTree.map(c=>ch(c,t,s));return[...Rr(v,r-p),o]}function nh(e,t,r,s){let o=e.tabs.find(f=>f.active)?.label??"AGENT",p=vh(e.tabs),v=`${" ".repeat(p)}${Pr("\u2500".repeat(o.length+1),s,re.panelMuted)}`,i=[`${Pr(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),c=e.tabs.find(f=>f.active)?.id??"agent",d=e.centerHeader.tabLabel==="BROWSER"||!to(c)?e.centerTranscript.map(f=>({...f})):ih(e),w=dh(e.tabs,s,e.focusedRegion==="center"),a=" engaged ",k=a.length+2,l=e.inputMode==="terminal"?`${Ir(a,s,re.panelBg)}${Cr("\u25CF",s,re.panelBg)} `:"",m=t-2,_=e.inputMode==="terminal"?" ".repeat(Math.max(0,m-Be(w)-k)):"",g=[{text:e.inputMode==="terminal"?`${w}${_}${l}`:w},{text:v,tone:"muted"},{text:i},qe(),...d];return Rr(g,r)}function ih(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},qe(),{text:e.terminal.error},qe(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:Yo(s.segments),segments:s.segments,fullBleed:!0}))}function oh(e,t,r,s){let o=e.rightInspection?ah(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Rr([{text:"CONTEXT"},qe(),...e.rightContext.map(p=>uh(p,s)),...e.actionMessage?[qe(),{text:e.actionMessage}]:[]],r);return Rr(o,r)}function ah(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),v=p===-1?0:Th(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>$o(i)),...s.slice(v,v+o).map(i=>$o(i))]}function $o(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),v=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:v}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function ch(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",v=e.accentDot?` ${Cr("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+Be(m.text),0):0,c=t-Be(p)-Be(o)-i,d=e.selected?e.text:e.focused?Cr(e.text,r,re.panelBg):e.panelHeader?Pr(e.text,r,re.panelMuted):e.text,w=tt(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${w}${p}${v}`},...e.prBadge];return{text:`${w}${p}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${w}${p}${v}`,tone:a}}function lh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),v=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${v}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function dh(e,t,r){return e.map(s=>s.active?r?Cr(s.label,t,re.panelBg):Pr(s.label,t,re.panelBg):Ir(s.label,t,re.panelBg)).join(" ")}function uh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Ir(e.value,t,re.panelBg):e.value}`}}function yr(e,t,r,s){let o=hh(s,e.tone??"default"),p=fh(e,r,o);if(s==="left"){if(e.fullBleed)return pe(tt(p,t),r,o);let i=t-vr-Sr;if(e.rightAlign){let d=Be(p),w=Math.max(0,i-d),a=`${" ".repeat(vr)}${" ".repeat(w)}${p}${" ".repeat(Sr)}`;return pe(a,r,o)}let c=`${" ".repeat(vr)}${tt(p,i)}${" ".repeat(Sr)}`;return pe(c,r,o)}return s==="center"&&e.fullBleed?ph(e,t,r,o):pe(tt(` ${p}`,t),r,o)}function hh(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Rr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(qe());return r}function qe(){return{text:""}}function fh(e,t,r){return e.segments?e.segments.map(s=>qo(s,t,r)).join(""):e.text}function ph(e,t,r,s){let o=" ".repeat(Tr),p=Math.max(0,t-Tr*2);if(!e.segments)return pe(`${o}${tt(e.text,p)}${o}`,r,s);let v=_h(e.segments,p),i=`${o}${v.map(c=>qo(c,r,s)).join("")}${o}`;return pe(i,r,s)}function qo(e,t,r){let s=e.href?`${Ko(e.href)}${e.text}${No}`:gh(e.text);return!t||!e.style?s:`${jt(kh(e.style,r))}${yh(e.style)}${s}${$s}${jt(r)}`}function gh(e){return e.replace(th,t=>{let[r,s]=mh(t);return`${Ko(r)}${r}${No}${s}`})}function mh(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Ko(e){return`\x1B]8;;${e}\x1B\\`}function _h(e,t){let r=wh(e,t);return bh(r,t)}function wh(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=Be(o.text);if(p<=s){r.push(o),s-=p;continue}let v=Vo(o.text,s);v.length>0&&r.push({...o,text:v}),s=0}return r}function bh(e,t){let r=Be(Yo(e));if(r>=t)return e;let s=e.at(-1)?.style;return s?.bg?[...e,{text:" ".repeat(t-r),style:s}]:[...e,{text:" ".repeat(t-r)}]}function kh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,v=s??t.bg;return p&&(o.fg=p),v&&(o.bg=v),o}function yh(e){let t=[];return e.bold&&t.push("1"),e.dim&&t.push("2"),e.italic&&t.push("3"),e.underline&&t.push("4"),t.length>0?`\x1B[${t.join(";")}m`:""}function vh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function zo(e,t){let r=Math.max(0,t-Be(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function tt(e,t){let r=Be(e);return r>=t?Sh(e,t):e+" ".repeat(t-r)}function Sh(e,t){if(t<=0)return"";if(Be(e)<=t)return e;let r=Xo(e);return Vo(r,Math.max(0,t-1))+"\u2026"}function Be(e){let t=0;for(let r of Array.from(Xo(e)))t+=Go(r);return t}function Vo(e,t){let r="",s=0;for(let o of Array.from(e)){let p=Go(o);if(s+p>t)break;r+=o,s+=p}return r}function Go(e){let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65024&&t<=65039?0:t>=4352&&(t<=4447||t===9001||t===9002||t>=11904&&t<=42191&&t!==12351||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141)?2:1}function Th(e,t,r){return Math.min(Math.max(e,t),r)}function Xo(e){return e.replace(eh,"").replace(Qu,"")}function Yo(e){return e.map(t=>t.text).join("")}function pe(e,t,r){if(!t)return e;let s=jt(r),o=e.replace(Zu,`${$s}${s}`);return`${s}${o}${$s}`}function jt(e){let t=[];return e.fg&&t.push(`38;2;${Fo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Fo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Fo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Cr(e,t,r){return Ws(e,t,re.success.fg,r)}function Pr(e,t,r){return Ws(e,t,re.accent.fg,r)}function Ir(e,t,r){return Ws(e,t,re.mutedfg.fg,r)}function Ws(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${jt(o)}${e}${jt(s)}`}var Rh="https://registry.npmjs.org/craig-cli/latest";var xr=null;function js(){try{return"0.5.1"}catch{return"unknown"}}async function Jo(){let e=js(),t=Date.now();if(xr&&t-xr.cachedAt<36e5)return xr.result;let r=null;try{let o=await fetch(Rh,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&Ch(r,e)};return xr={result:s,cachedAt:t},s}function Ch(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[v=0,i=0,c=0]=r(t);return s!==v?s>v:o!==i?o>i:p>c}Ee();var Hs=["Runners","Help"];function Us(e,t){return le.map(r=>{let s=ke(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),v=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${v}`})}function Zo(e){return e.message?e.message:e.pathEdit?"Type an executable path. Enter saves. Empty resets to default. Esc cancels.":"Enter toggles. E edits the executable path."}function ea(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Hs.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:qs(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ta(e,t,r,s){if(e.pathEdit)return Ph({...e,pathEdit:e.pathEdit},t,r);let o=Us(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=le[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!qs(r))return{kind:"noop",state:e};let p=le[e.menuIndex]??"codex",v=t.runners?.[p]?.enabled!==!1;return v&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:Ih(t,p,!v),state:{...e,message:`${ke(p).displayName} ${v?"disabled":"enabled"}.`}}}function Ph(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Qo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(qs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:xh(t,s,o.length>0?o:null),state:Qo({...e,message:o.length>0?`${ke(s).displayName} executable saved.`:`${ke(s).displayName} executable reset to default.`})}}return Eh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function Ih(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function xh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function Qo(e){let t={...e};return delete t.pathEdit,t}function qs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
160
|
+
`}function Eh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Mh=Ah(import.meta.url),Oh=Mh("terminal-kit"),Bh=Oh.terminal;async function na(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=ze(t);await kt(t);let s=await Ne(r),o=pt(s),p=e.uiStateFile?await Ae({uiStateFile:e.uiStateFile}):null,v=Promise.resolve(),i=Promise.resolve(),c=await Ht(t,void 0,o),d=fr(Yi(p,s),c);c=await Ht(t,d,o);let w=()=>{},a={workspaceRoot:t,onUpdate:()=>w(),resolveSessionSpec:(m,_)=>Wh(c,_,t)},k=e.ptyRuntime??await xo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=Ji(p,m);let _=p;v=v.then(()=>Re({uiStateFile:e.uiStateFile},_),()=>Re({uiStateFile:e.uiStateFile},_)),v.catch(()=>{})};return new Promise(m=>{let _=e.terminal??Bh,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:fr(d,c)},g=!1,f=!1,u=null,h=0,y=0,S=null,P=null,x=null,W=null,$=!1,D=`Craig v${js()}`,A=null,E=0,H=!0,G=null,N=()=>{},z=k;w=()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&N()},50)))};function q(B){return Nt(B,z.getViewState(B.selectedPtyTabId))}function b(B){return q($h(B,c))}function C(B){return c.tasks.find(L=>L.id===B.selectedTaskId)??null}async function T(){await z.hydrateSessions?.(c.tasks.flatMap(B=>B.ptyTabs.map(L=>L.id)))}function R(){T().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:q(n.shell)},N())})}function O(B){let L=i.then(B,B);return i=L.then(()=>{},()=>{}),L}function F(B){let L=C(B),M=c.inspection,j=M&&M.taskId===L?.id?M:null,K=Fh(j?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:Nh(c),centerTabIds:so(L,B),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:K.map(Z=>Z.path),fileTreeFileIds:K.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:K.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,pageRows:Math.max(5,ht(_.width,_.height).height-Oe.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function U(B){await tn(r,B),s=B,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:b({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function V(B){let L=B.selectedTaskId;L&&await O(async()=>{let M=await ue(r,L);!M.ptyTabs.some(j=>j.id===B.activeTab)||M.selectedPtyTabId===B.activeTab||await se(r,{...M,selectedPtyTabId:B.activeTab})})}async function J(){let B=(n.mode==="main",n.shell);c=await Ht(t,B,o),n.mode==="main"?n={mode:"main",shell:b(n.shell)}:n={...n,shell:b(n.shell)}}async function I(B){let L=++E,M=ia(c.tasks,B),j=c.inspection,K;if(M&&j?.taskId===M.id){let Z={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ce=await vi(M,j,Z);if(L!==E)return;K={...c,inspection:ce}}else if(K=await Ht(t,B,o),L!==E)return;c=K,n.mode==="main"&&(n={mode:"main",shell:b(n.shell)},l(n.shell),N())}async function Q(B){let L=await Qh(B);n.mode==="main"&&(n={mode:"main",shell:b({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},N())}async function Y(B){try{let L=b(B),M=C(L),j=L.selectedPtyTabId;if(M&&L.focusedRegion==="tasks"){let ce=M.ptyTabs.find(xe=>xe.kind==="agent")??null;ce?j=ce.id:(M=await zs(M),await J(),j=M.selectedPtyTabId)}M&&!j&&(M=await zs(M),await J(),j=M.selectedPtyTabId);let K=b({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!K.selectedTaskId||!j){n={mode:"main",shell:K},N();return}n={mode:"main",shell:Nt({...K,inputMode:"terminal"},z.getViewState(j))},l(n.shell);let Z=await z.ensureSession(K.selectedTaskId,j,Er(ht(_.width,_.height)));f=Ks(j),u=null,n={mode:"main",shell:Nt({...K,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let M=L instanceof Error?L.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&Ks(B.selectedPtyTabId)&&(await ee(B.selectedTaskId,M).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:Zi(b(B),M)},l(n.shell)}N()}async function ee(B,L){await O(async()=>{let M=await ue(r,B);await se(r,{...M,status:M.status==="running"?"draft":M.status,runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function we(B,L,M){let j=b(B);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let K=await O(async()=>{let Z=await ue(r,j.selectedTaskId),ce=L??Uh(Z,j.activeTab,j.preferredPtyTabKind),xe=ra(Z,ce,M??void 0,s),St={...Z,ptyTabs:[...Z.ptyTabs,xe],selectedPtyTabId:xe.id};return await se(r,St),St});return await J(),b({...j,activeTab:K.selectedPtyTabId??j.activeTab,selectedPtyTabId:K.selectedPtyTabId,preferredPtyTabKind:K.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${K.ptyTabs.at(-1)?.title??"tab"}`})}async function be(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:M,nextSelectedTab:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=K.ptyTabs.findIndex(Or=>Or.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=K.ptyTabs[Z],xe=K.ptyTabs.filter(Or=>Or.id!==ce.id),St=xe[Math.min(Z,xe.length-1)]??xe[Z-1]??null;return await se(r,{...K,ptyTabs:xe,selectedPtyTabId:St?.id??null}),{closedTab:ce,nextSelectedTab:St}});return z.disposeSession(M.id),await J(),b({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${M.title}`})}async function Xe(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let M=C(L),j;if(M?.type==="project"&&M.repoTargets?.length){let K=await ir(r,L.selectedTaskId);await J();let Z=K.synced+K.discovered+K.notFound;j=K.discovered>0?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""} \xB7 ${K.synced} refreshed`:`Refreshed ${K.synced}/${Z} targets`}else{let{disposition:K,task:Z}=await rs(r,L.selectedTaskId);await J(),j=K==="not_found"?`No PR found for ${Z.branch}`:K==="discovered"?`Discovered PR: #${he(Z)?.number} ${he(Z)?.url??""}`:`Refreshed checks: ${he(Z)?.requiredChecks.length??0} reported`}return b({...L,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Ie(){if($||n.mode!=="main")return;let B=n.shell.selectedTaskId,L=c.tasks;$=!0;try{let M=n.shell.actionMessage,K=(await ri(r,L)).find(ce=>ce.taskId===B),Z=L.find(ce=>ce.id===B);if(K&&!K.hadPr&&K.discovered>0&&(M=Z?.type==="project"?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""}`:`Discovered PR: #${K.firstDiscoveredPrNumber} ${K.firstDiscoveredPrUrl??""}`),n.mode!=="main")return;c=await Ht(t,n.shell,o),n={mode:"main",shell:b({...n.shell,actionMessage:M})},N()}catch{}finally{$=!1}}async function Ke(B){let L=b(B);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:M,task:j}=await O(async()=>{let K=await ue(r,L.selectedTaskId),Z=await Di(r,L.selectedTaskId);return{taskBeforeClose:K,task:Z}});for(let K of M.ptyTabs)z.disposeSession(K.id);return await J(),b({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function rt(B){let L=b(B);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await He(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Lt(r,L.selectedWorkspaceId);let j=await Mt(r,L.selectedWorkspaceId);return await J(),b({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function zs(B){let L=B.ptyTabs.find(K=>K.kind==="agent")??null;if(L){let K={...B,selectedPtyTabId:L.id};return await O(async()=>{let Z=await ue(r,B.id),ce=Z.ptyTabs.find(xe=>xe.kind==="agent")??null;ce&&await se(r,{...Z,selectedPtyTabId:ce.id})}),K}let M=ra(B,"agent",void 0,s),j={...B,ptyTabs:[...B.ptyTabs,M],selectedPtyTabId:M.id};return await O(async()=>{let K=await ue(r,B.id),Z=K.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await se(r,{...K,selectedPtyTabId:Z.id});return}await se(r,{...K,ptyTabs:[...K.ptyTabs,M],selectedPtyTabId:M.id})}),j}N=()=>{aa();let B=ht(_.width,_.height),L=n.mode==="main"?Uo(B,uo(b(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?Wo(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="pause"?jo(B,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:D,updateText:A}):n.variant==="options"?Fs(B,{menuIndex:n.menuIndex,optionsMenuItems:Hs}):n.variant==="runners"?Fs(B,{menuIndex:Ut(n).menuIndex,optionsMenuItems:Us(s,Ut(n)),optionsMessage:Zo(Ut(n)),optionsSubtitle:"Runners"}):Ho(B);H&&(_.moveTo(1,1),_.eraseDisplayBelow(),H=!1),_.noFormat(Kh(L)),_.hideCursor(!0)};function aa(){let B=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";B!==G&&(G=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let ca=()=>{process.stdout.off("resize",Js),process.off("SIGCONT",Qs),_.removeListener("key",Vs),_.removeListener("unknown",Gs),_.removeListener("mouse",Xs),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),x&&(clearTimeout(x),x=null),W&&(clearInterval(W),W=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Lr=B=>{ca(),m(B)},la=async()=>{if(n.mode!=="main"||g)return;let B=n.shell,L=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){n={mode:"main",shell:b({...B,taskPromptError:"Select a workspace first."})},N();return}if(L.length===0){n={mode:"main",shell:b({...B,taskPromptError:"Task prompt cannot be empty."})},N();return}g=!0,n={mode:"main",shell:b({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},N();let M=null;try{M=await qh(r,B.selectedRepoId,B.selectedWorkspaceId,L,B.selectedRunner),await J();let j=b({...n.shell,selectedRepoId:M.repoId,selectedWorkspaceId:M.workspaceId,selectedTaskId:M.id,selectedPtyTabId:M.selectedPtyTabId,selectedLeftItemId:`task:${M.id}`,activeTab:M.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),K=await z.ensureSession(M.id,j.selectedPtyTabId??oa(M,"agent"),Er(ht(_.width,_.height)));f=Ks(j.selectedPtyTabId),n={mode:"main",shell:Nt(j,K)},l(n.shell)}catch(j){j instanceof Ar&&(M=j.task);let K=j instanceof Error?j.message:"Failed to create task.";M&&(await se(r,{...M,status:"draft",runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:K}).catch(()=>{}),await J().catch(()=>{})),n={mode:"main",shell:b({...n.shell,inputMode:"control",selectedTaskId:M?.id??n.shell.selectedTaskId,selectedPtyTabId:M?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:M?`task:${M.id}`:n.shell.selectedLeftItemId,activeTab:M?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:M?null:"",taskPromptError:K,actionMessage:null})}}finally{g=!1,N()}},da=B=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(B==="ESCAPE"){n={mode:"main",shell:b({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},N();return}if(et(B)){la();return}if(B==="BACKSPACE"){n={mode:"main",shell:b({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},N();return}if(B==="CTRL_R"){n={mode:"main",shell:b({...L,selectedRunner:ys(L.selectedRunner,o),taskPromptError:null})},N();return}eo(B)&&(n={mode:"main",shell:b({...L,taskPromptInput:`${L.taskPromptInput}${B}`,taskPromptError:null})},N())}},ua=B=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(B==="ESCAPE"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,actionMessage:null})},N();return}if(B==="UP"||B==="k"){n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},N();return}if(B==="DOWN"||B==="j"){let M=Math.max(0,L.entries.length-1);n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(M,L.selectedIndex+1),error:null}})},N();return}if(B==="LEFT"||B==="h"){Q(vt.dirname(L.cwd)).catch(M=>{let j=M instanceof Error?M.message:"Failed to open parent directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:j}})},N()});return}if(B==="RIGHT"||B==="l"||et(B)){let M=L.entries[L.selectedIndex]??null;if(!M)return;if((B==="RIGHT"||B==="l")&&(M.kind==="directory"||M.kind==="repo")){Q(M.path).catch(j=>{let K=j instanceof Error?j.message:"Failed to open directory.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()});return}Dt(r,M.path).then(async j=>{await J();let K=j.repos[0]??null;n={mode:"main",shell:b({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:K?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to add workspace.";n={mode:"main",shell:b({...n.shell,workspaceBrowser:{...L,error:K}})},N()})}}},Vs=B=>{let L=typeof B=="string"?B:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){da(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){ua(L);return}if(n.mode==="main"){let M=Qi(n.shell,L,F(n.shell));if(M.exit){Lr(0);return}if(M.detachTerminal){z.detach(),n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(n.shell.inputMode==="terminal"){if(M.changed){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(f&&et(L)){f=!1;return}f&&(f=!1),u=Vh(L)?{key:L,at:Date.now()}:null;let j=Gh(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Mr(j);return}z.writeKey(L);return}if(L==="CTRL_C"){Lr(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},H=!0,N();return}if(M.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:b(M.state)},H=!0,N();return}if(M.beginTaskPrompt){n={mode:"main",shell:b(M.state)},l(n.shell),N();return}if(M.openWorkspaceBrowser){Q(t).catch(j=>{let K=j instanceof Error?j.message:"Failed to browse workspaces.";n={mode:"main",shell:b({...M.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:K}})},N()});return}if(M.createPtyTab){we(M.state,M.createPtyTabKind,M.createPtyTabRunner).then(j=>{Y(j)}).catch(j=>{let K=j instanceof Error?j.message:"Failed to create tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closePtyTab){be(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close tab.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.refreshPullRequestChecks){Xe(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh PR checks.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.closeTask){Ke(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to close task.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.removeWorkspace){rt(M.state).then(j=>{n={mode:"main",shell:j},l(n.shell),N()}).catch(j=>{let K=j instanceof Error?j.message:"Failed to remove workspace.";n={mode:"main",shell:b({...M.state,actionMessage:K})},N()});return}if(M.attachTerminal){Y(M.state);return}if(M.refreshInspection){n={mode:"main",shell:b(M.state)},l(n.shell),N(),I(n.shell).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:b({...n.shell,actionMessage:K})},N()});return}M.changed&&(n={mode:"main",shell:b(M.state)},V(n.shell).catch(()=>{}),l(n.shell),N());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:b(n.shell)},H=!0,N();return}if(n.variant==="options"){ha(L);return}if(n.variant==="runners"){fa(L);return}if(n.optionsMessage){(L==="ESCAPE"||et(L))&&(n={...n,optionsMessage:null},N());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},N();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},N();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:b(n.shell)},H=!0,N());return}if(et(L)){if(n.menuIndex===0){n={mode:"main",shell:b({...n.shell,inputMode:"control"})},H=!0,N(),R();return}if(n.menuIndex===1){let M=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}Lr(0)}};function ha(B){if(n.mode!=="overlay"||n.variant!=="options")return;let L=ea(n.menuIndex,B);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},N();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},H=!0,N());return}if(L.kind==="help"){let M=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="runners"){let M=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N()}}}function fa(B){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ta(Ut(n),s,B,o);if(L.kind!=="noop"){if(L.kind==="back"){let M=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...M!==void 0?{parentVariant:M}:{}},H=!0,N();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},N();return}U(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},N())}).catch(M=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=M instanceof Error?M.message:"Failed to save runner option.";n={...n,runnerOptions:{...Ut(n),message:j}},N()})}}let Gs=B=>{let L=zh(B);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){z.detach(),f=!1,u=null,n={mode:"main",shell:b({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),N();return}let M=Xh(L);if(M!==0){Mr(M);return}let j=Yh(L);if(j){f=!1,u={key:j,at:Date.now()},z.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
161
161
|
`&&L!==`\r
|
|
162
|
-
`&&(f=!1),
|
|
163
|
-
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function
|
|
162
|
+
`&&(f=!1),Jh(f,u,L)){f=!1;return}z.write(L)},Xs=B=>{if(n.mode!=="main")return;if(n.shell.inputMode==="control"){ga(sa(B));return}let L=sa(B);L!==0&&Mr(L)};function Mr(B){h+=B,!S&&(S=setTimeout(()=>{S=null;let L=h;h=0,L!==0&&(pa(L),N())},16))}function pa(B){z.scrollViewport(B),n={mode:"main",shell:q(n.shell)}}function Ys(){H=!0,_.fullscreen(!0)}function ga(B){B!==0&&(y+=B,!P&&(P=setTimeout(()=>{P=null;let L=y;if(y=0,L===0||n.mode!=="main"||n.shell.inputMode!=="control")return;let M=Ze(n.shell,L,F(n.shell));if(M.changed){if(M.refreshInspection){n={mode:"main",shell:b(M.state)},l(n.shell),N(),I(n.shell).catch(j=>{let K=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:b({...n.shell,actionMessage:K})},N()});return}n={mode:"main",shell:b(M.state)},l(n.shell),N()}},16)))}let Js=()=>{Ys(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(z.resize(Er(ht(_.width,_.height))),n={mode:"main",shell:q(n.shell)}),N()},Qs=()=>{Ys(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(z.resize(Er(ht(_.width,_.height))),n={mode:"main",shell:q(n.shell)}),N()};process.stdout.on("resize",Js),process.on("SIGCONT",Qs),_.grabInput(!0),G="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Vs),_.on("unknown",Gs),_.on("mouse",Xs),W=setInterval(()=>{Ie()},(s.github?.watchIntervalSeconds??5)*1e3),Jo().then(B=>{B.updateAvailable&&B.latest&&(A=`Update available: v${B.latest}`,N())}),N()})}async function Ht(e,t,r){let s=ze(e),[o,p,v]=await Promise.all([lt(s),Le(s),He(s)]),i=ia(v.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},d=i?await Si(i,c):null;return{workspaceRoot:e,workspaces:p.filter(w=>w.status==="active"),repos:o,tasks:v.tasks,inspection:d,...r?{enabledRunnerIds:r}:{}}}function ia(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function $h(e,t){return fr(e,t)}function Fh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let p=1;p<o.length;p+=1)if(r.has(o.slice(0,p).join("/")))return!1;return!0})}function Nh(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function Wh(e,t,r){let s=e.tasks.find(i=>i.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(i=>i.id===t)??null,p=s?.worktreePath??r,v=o?.kind==="agent"?Hh(o):[];return s?.type==="project"?{cwd:p,command:v,env:{GIT_CEILING_DIRECTORIES:jh(process.env.GIT_CEILING_DIRECTORIES,p)}}:{cwd:p,command:v}}function jh(e,t){let r=(e??"").split(vt.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(vt.delimiter):[...r,t].join(vt.delimiter)}function Hh(e){return e.command.length>0?e.command:["codex"]}function Ut(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Uh(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function ra(e,t,r,s={}){let o=r??e.runner,p=ke(o),v=t==="agent"?p.defaultAgentTitle:"Terminal",i=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),d=1,w=i;for(;c.has(w);)d+=1,w=`${i}-${d}`;let a=new Date().toISOString(),k=r&&r!==e.runner?r:void 0;return{id:w,kind:t,...k?{runner:k}:{},title:d===1?v:`${v} ${d}`,command:t==="agent"?me(o,void 0,s):[],createdAt:a,updatedAt:a}}async function qh(e,t,r,s,o){let p=await Ne(e);qt(o,p);let v=r?await er(e,r,s,{runner:o,config:p}):await It(e,t??"",s,{runner:o,config:p});try{let d=at();await te(ct($r(o,p).executable,{cwd:v.repoRoot,env:d}),["--help"],{cwd:v.repoRoot,env:d})}catch(d){let w=d instanceof Error?d.message:"Failed to start runner.",a={...v.task,status:"draft",runnerSession:{...v.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:w};throw await se(e,a),new Ar(w,a)}let i=oa(v.task,"agent"),c={...v.task,status:"running",selectedPtyTabId:i,runnerSession:{...v.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await se(e,c),await Re({uiStateFile:e.uiStateFile},{...await Ae({uiStateFile:e.uiStateFile})??je(),version:1,selectedRepoId:c.repoId,selectedWorkspaceId:c.workspaceId,selectedTaskId:c.id,selectedPtyTabId:c.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:c.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),c}var Ar=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function oa(e,t){let r=e.ptyTabs.find(s=>s.kind===t);if(!r)throw new Error(`Task ${e.id} is missing its ${t} PTY tab.`);return r.id}function Er(e){return{columns:Math.max(20,e.width-Oe.leftWidth-Oe.rightWidth-Oe.dividerWidth-Tr*2),rows:Math.max(5,e.height-Oe.topRailHeight-5)}}function Kh(e){return e.split(`
|
|
163
|
+
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function zh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Vh(e){return e.length===1||et(e)||e==="BACKSPACE"||e==="TAB"}function Ks(e){return typeof e=="string"&&new RegExp(`:(?:agent|${le.join("|")})(?:-\\d+)?$`).test(e)}function Gh(e,t){return e==="UP"&&t?-3:e==="DOWN"&&t?3:e==="PAGE_UP"?-5:e==="PAGE_DOWN"?5:e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function sa(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function Xh(e){let t=new RegExp("\x1B\\[<(\\d+);\\d+;\\d+[mM]").exec(e);if(!t?.[1])return 0;let r=Number.parseInt(t[1],10);return r===64?-3:r===65?3:0}function Yh(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function Jh(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
|
|
164
164
|
`||r===`\r
|
|
165
|
-
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function
|
|
165
|
+
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function Qh(e){let t=await Dh(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=vt.join(e,s.name);r.push({name:s.name,path:o,kind:await Zh(o)?"repo":"directory"})}return r.sort((s,o)=>s.kind!==o.kind?s.kind==="repo"?-1:1:s.name.localeCompare(o.name)),{cwd:e,entries:r,selectedIndex:0,error:null}}async function Zh(e){let t=vt.join(e,".git");return await Lh(t).catch(()=>null)!==null}function Dr(){return process.cwd()}async function ef(){try{if(process.argv[2]==="__craig-daemon"){let i=process.argv[3]??Dr(),c=ze(i);return await kt(i),await Eo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let i=process.argv[3]??Dr(),c=ze(i);return await kt(i),await Ao(c),0}let e=en(process.argv.slice(2)),t=Dr(),r=ze(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await na({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let p=await bi(e.command,o),v=ki(p);return v.length>0&&process.stdout.write(`${v}
|
|
166
166
|
`),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
|
|
167
|
-
`),1}}var
|
|
167
|
+
`),1}}var tf=await ef();process.exit(tf);
|