craig-cli 0.5.6 → 0.6.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 +67 -61
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
3
|
-
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await Ga(s,e)}catch(p){throw await o.close().catch(()=>{}),await Xa(s,{force:!0}).catch(()=>{}),p}}var We=$e(()=>{"use strict"});import{readFile as rc}from"node:fs/promises";async function Te(e){let t=await rc(e.indexFile,"utf8"),r=JSON.parse(t);return jr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await ue(e.indexFile,r)}function jr(e,t,r){if(!sc(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 sc(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 nc}from"node:fs/promises";async function he(e,t){let r=await nc(Hr(e,t),"utf8"),s=JSON.parse(r);return ic(s,Hr(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await ue(Hr(e,t.id),r)}async function Ur(e,t){let r=await Te(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function Hr(e,t){return`${e.tasksDir}/${t}.json`}function ic(e,t){let r=oc(e);if(!cc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function oc(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:qr(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:uc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:lc(t.repoTargets),runnerSession:t.runnerSession??ac(t),checks:wc(t),lastCommit:t.lastCommit??null,prs:bc(t),artifacts:Sc(t),cleanup:Tc(t)}}function ac(e){if(typeof e.title!="string")return null;let t=qr(e.runner);return{command:we(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function cc(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"&&cn(t.ptyTabs)&&(t.bundlePath===void 0||t.bundlePath===null||typeof t.bundlePath=="string")&&(t.selectedRepoTargetId===void 0||t.selectedRepoTargetId===null||typeof t.selectedRepoTargetId=="string")&&(t.repoTargets===void 0||dc(t.repoTargets))&&fc(t.runnerSession)&&pc(t.prompt)&&ln(t.checks)&&dn(t.lastCommit)&&mc(t.prs)&&_c(t.artifacts)&&hn(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function lc(e){if(Array.isArray(e))return e.filter(an)}function dc(e){return Array.isArray(e)&&e.every(an)}function an(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.repoId=="string"&&typeof t.branch=="string"&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&(t.status==="ready"||t.status==="unavailable"||t.status==="merged"||t.status==="closed")&&(typeof t.failureReason=="string"||t.failureReason===null)&&ln(t.checks)&&dn(t.lastCommit)&&un(t.pullRequest)&&hn(t.cleanup)}function uc(e){if(cn(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return hc(e.id,e.title,t,qr(e.runner))}function hc(e,t,r,s){let o=ye(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:we(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function qr(e){return e&>(e)?e:"codex"}function cn(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&(t.kind==="agent"||t.kind==="terminal")&&typeof t.title=="string"&&Array.isArray(t.command)&&t.command.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string")}function fc(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 pc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function ln(e){return typeof e=="object"&&e!==null&&typeof e.source=="object"&&e.source!==null&&e.source.type==="repo_config"&&typeof e.source.path=="string"&&(typeof e.lastRunAt=="string"||e.lastRunAt===null)&&(e.status==="not_run"||e.status==="running"||e.status==="passed"||e.status==="failed")&&Array.isArray(e.commands)&&e.commands.every(t=>typeof t=="string")&&Array.isArray(e.results)&&e.results.every(t=>typeof t=="object"&&t!==null&&typeof t.command=="string"&&typeof t.startedAt=="string"&&typeof t.finishedAt=="string"&&typeof t.exitCode=="number")}function dn(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function un(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&gc(e.requiredChecks)}function gc(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 mc(e){return Array.isArray(e)&&e.every(un)}function _c(e){return typeof e=="object"&&e!==null&&(typeof e.logPath=="string"||e.logPath===null)&&(typeof e.checkSummaryPath=="string"||e.checkSummaryPath===null)&&(typeof e.prDraftPath=="string"||e.prDraftPath===null)&&(typeof e.prStatusPath=="string"||e.prStatusPath===null)}function hn(e){return typeof e=="object"&&e!==null&&(typeof e.paneClosedAt=="string"||e.paneClosedAt===null)&&(typeof e.worktreeRemovedAt=="string"||e.worktreeRemovedAt===null)&&typeof e.preservedWorktree=="boolean"&&(typeof e.warning=="string"||e.warning===null)}function wc(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 bc(e){if(Array.isArray(e.prs))return e.prs.map(kc);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:fn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:null,requiredChecks:pn(t.requiredChecks),comments:[],createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function kc(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:fn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:yc(t.reviewDecision),requiredChecks:pn(t.requiredChecks),comments:vc(t.comments),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function fn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function yc(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function vc(e){return Array.isArray(e)?e.flatMap(t=>{if(typeof t!="object"||t===null)return[];let r=t;return typeof r.body!="string"||!r.body.trim()?[]:[{author:typeof r.author=="string"?r.author:null,body:r.body,createdAt:typeof r.createdAt=="string"?r.createdAt:null,url:typeof r.url=="string"?r.url:null}]}):[]}function pn(e){return Array.isArray(e)?e.map(t=>({...t,status:t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown"?t.status:"unknown",conclusion:t.conclusion??null})):[]}function Sc(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Tc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Re=$e(()=>{"use strict";We();ot();Ae()});import{readFile as Rc}from"node:fs/promises";async function De(e){try{let t=await Rc(e.uiStateFile,"utf8"),r=JSON.parse(t);return Pc(r,e.uiStateFile)}catch(t){if(Ic(t))return null;throw t}}async function Pe(e,t){await ue(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function je(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function Pc(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")||!Vt(e,"openInspectionKind")||!Vt(e,"selectedFileTreePath")||!Vt(e,"selectedFilePath")||!Vt(e,"selectedDiffPath")||!Cc(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 Vt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Cc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Ic(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 xc}from"node:child_process";import{promisify as Ec}from"node:util";async function ee(e,t,r={}){try{let s=await gn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(mn(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await gn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(mn(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function mn(e){return e instanceof Error}var gn,Ce=$e(()=>{"use strict";gn=Ec(xc)});import{readFile as zc,readdir as Gc,rm as Xc}from"node:fs/promises";import Pn from"node:path";async function Le(e,t){let r=await zc(Xt(e,t),"utf8"),s=JSON.parse(r);return Yc(s,Xt(e,t))}async function Yt(e,t){await ue(Xt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await Gc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Le(e,Pn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function Cn(e,t){await Xc(Xt(e,t),{force:!0})}function Xt(e,t){return Pn.join(e.reposDir,`${t}.json`)}function Yc(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 Qc,readdir as Jc,rm as Zc}from"node:fs/promises";import In from"node:path";async function Pt(e,t){let r=await Qc(Qt(e,t),"utf8"),s=JSON.parse(r);return el(s,Qt(e,t))}async function bt(e,t){await ue(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Me(e){let t=await Jc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,In.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function xn(e,t){await Zc(Qt(e,t),{force:!0})}function Qt(e,t){return In.join(e.workspacesDir,`${t}.json`)}function el(e,t){let r=tl(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 tl(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=$e(()=>{"use strict";We()});async function He(e,t){let r=await Te(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await he(e,i))}catch(c){if(ll(c)){o.push(i);return}throw c}}));let k=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return k.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:k,missingTaskIds:o,repoId:t?.repoId??null}}function ll(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Et=$e(()=>{"use strict";ot();Re()});var bi={};Ba(bi,{addWorkspace:()=>Lt,archiveWorkspace:()=>Mt,listWorkspaces:()=>us,removeWorkspace:()=>Ot,removeWorkspaceRecord:()=>cr,restoreWorkspace:()=>hs});import{readdir as zl,realpath as ui,stat as Gl}from"node:fs/promises";import Je from"node:path";async function Lt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await Gl(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await mi(r)?Xl(e,r):Yl(e,r)}async function us(e,t){return{kind:"listWorkspaces",workspaces:(await Me(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Mt(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await wi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function hs(e,t){let s={...await Pt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await De({uiStateFile:e.uiStateFile})??null;return await Pe({uiStateFile:e.uiStateFile},{...o??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 Ot(e,t){let r=await Pt(e,t),s=await He(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await cr(e,t),await wi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function Xl(e,t){let r=await _i(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?fi(o,r):hi(s,t,r),k=`workspace_${p.id}`,c=(await Me(e)).find(a=>a.id===k)??null,d=new Date().toISOString(),_=c??{id:k,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Yt(e,p),c||await bt(e,_),await pi(e,{repoIds:[p.id],workspaceIds:[_.id]}),await gi(e,_,p.id),{kind:"createWorkspace",workspace:_,repos:[p],created:!c}}async function Yl(e,t){let r=await Ql(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await Me(e),o=Zl(s,Je.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,k=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:k,updatedAt:k};return await Promise.all(r.map(d=>Yt(e,d))),await bt(e,c),await pi(e,{repoIds:i,workspaceIds:[c.id]}),await gi(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function Ql(e,t){let r=await zl(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let k=Je.join(t,p.name);if(!await mi(k))continue;let i=s.find(d=>d.rootPath===k)??o.find(d=>d.rootPath===k),c=await _i(k);o.push(i?fi(i,c):hi([...s,...o],k,c))}return o.sort((p,k)=>p.name.localeCompare(k.name)||p.id.localeCompare(k.id))}function hi(e,t,r){let s=new Date().toISOString();return{id:Jl(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function fi(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function Jl(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 Zl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function pi(e,t){let r=await Te(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function gi(e,t,r){await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??je(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function mi(e){try{let r=(await ee("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([ui(r).catch(()=>Je.resolve(r)),ui(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function _i(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await ee("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function cr(e,t){await xn(e,t);let r=await Te(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function wi(e,t){let r=await De({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Pe({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Bt=$e(()=>{"use strict";ot();dt();Ct();wt();Ce();Et()});var Eo=Oa(xo=>{(()=>{"use strict";var e={5639:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new _.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new _.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new _.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let w=0;w<Math.min(l,this.length);w++)m[w]=this._array[this._getCyclicIndex(w)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,...w){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+w.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<w.length;n++)this._array[this._getCyclicIndex(l+n)]=w[n];if(w.length&&this.onInsertEmitter.fire({index:l,amount:w.length}),this._length+w.length>this._maxLength){let n=this._length+w.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=w.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,w){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(let g=m-1;g>=0;g--)this.set(l+g+w,this.get(l+g));let n=l+m+w-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+w,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,_=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let b in d)a[b]=_<=1?d[b]:d[b]&&c(d[b],_-1);return a}},5777:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),_=c(6025),a=c(7276),b=c(9640),l=c(56),m=c(4071),w=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),T=c(802),C=c(7150),x=!1;class N extends C.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new T.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new C.MutableDisposable),this._onBinary=this._register(new T.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new T.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new T.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new T.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new T.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new T.Emitter),this._instantiationService=new _.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(b.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(w.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(T.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(T.Event.forward(this._bufferService.onResize,this._onResize)),this._register(T.Event.forward(this.coreService.onData,this._onData)),this._register(T.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(T.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,b.MINIMUM_COLS),A=Math.max(A,b.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,C.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=N},2486:function(k,i,c){var d=this&&this.__decorate||function(H,v,P,S){var R,$=arguments.length,W=$<3?v:S===null?S=Object.getOwnPropertyDescriptor(v,P):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(H,v,P,S);else for(var U=H.length-1;U>=0;U--)(R=H[U])&&(W=($<3?R(W):$>3?R(v,P,W):R(v,P))||W);return $>3&&W&&Object.defineProperty(v,P,W),W},_=this&&this.__param||function(H,v){return function(P,S){v(P,S,H)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=F;let a=c(3534),b=c(6760),l=c(6717),m=c(7150),w=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),T=c(1346),C=c(9823),x=c(8693),N=c(802),B={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(H,v){if(H>24)return v.setWinLines||!1;switch(H){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var E;(function(H){H[H.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",H[H.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let q=0;class K extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,P,S,R,$,W,U,V,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=P,this._coreService=S,this._logService=R,this._optionsService=$,this._oscLinkService=W,this._coreMouseService=U,this._unicodeService=V,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new w.StringToUtf32,this._utf8Decoder=new w.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new Y(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:Q.toArray()})})),this._parser.setEscHandlerFallback((I=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(I)})})),this._parser.setExecuteHandlerFallback((I=>{this._logService.debug("Unknown EXECUTE code: ",{code:I})})),this._parser.setOscHandlerFallback(((I,Q,z)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:Q,data:z})})),this._parser.setDcsHandlerFallback(((I,Q,z)=>{Q==="HOOK"&&(z=z.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:Q,payload:z})})),this._parser.setPrintHandler(((I,Q,z)=>this.print(I,Q,z))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new T.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new T.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new T.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new T.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new T.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new T.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new T.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new T.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new T.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new T.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new T.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new T.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in b.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new C.DcsHandler(((I,Q)=>this.requestStatusString(I,Q))))}_preserveStack(v,P,S,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=P,this._parseStack.decodedLength=S,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([v,new Promise(((P,S)=>setTimeout((()=>S("#SLOW_TIMEOUT")),5e3)))]).catch((P=>{if(P!=="#SLOW_TIMEOUT")throw P;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,P){let S,R=this._activeBuffer.x,$=this._activeBuffer.y,W=0,U=this._parseStack.paused;if(U){if(S=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,P))return this._logSlowResolvingAsync(S),S;R=this._parseStack.cursorStartX,$=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(W=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((I=>I.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),U||this._dirtyRowTracker.clearRange(),v.length>D)for(let I=W;I<v.length;I+=D){let Q=I+D<v.length?I+D:v.length,z=typeof v=="string"?this._stringDecoder.decode(v.substring(I,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,Q),this._parseBuffer);if(S=this._parser.parse(this._parseBuffer,z))return this._preserveStack(R,$,z,I),this._logSlowResolvingAsync(S),S}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(S=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,$,I,0),this._logSlowResolvingAsync(S),S}this._activeBuffer.x===R&&this._activeBuffer.y===$||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),te=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);te<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(te,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(v,P,S){let R,$,W=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,Q=this._curAttrData,z=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&S-P>0&&z.getWidth(this._activeBuffer.x-1)===2&&z.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let J=this._parser.precedingJoinState;for(let ge=P;ge<S;++ge){if(R=v[ge],R<127&&W){let Ke=W[String.fromCharCode(R)];Ke&&(R=Ke.charCodeAt(0))}let _e=this._unicodeService.charProperties(R,J);$=y.UnicodeService.extractWidth(_e);let Ye=y.UnicodeService.extractShouldJoin(_e),xe=Ye?y.UnicodeService.extractWidth(J):0;if(J=_e,U&&this._onA11yChar.fire((0,w.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+$-xe>V){if(te){let Ke=z,rt=this._activeBuffer.x-xe;for(this._activeBuffer.x=xe,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),z=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),xe>0&&z instanceof n.BufferLine&&z.copyCellsFrom(Ke,rt,0,xe,!1);rt<V;)Ke.setCellFromCodepoint(rt++,0,1,Q)}else if(this._activeBuffer.x=V-1,$===2)continue}if(Ye&&this._activeBuffer.x){let Ke=z.getWidth(this._activeBuffer.x-1)?1:2;z.addCodepointToCell(this._activeBuffer.x-Ke,R,$);for(let rt=$-xe;--rt>=0;)z.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(I&&(z.insertCells(this._activeBuffer.x,$-xe,this._activeBuffer.getNullCell(Q)),z.getWidth(V-1)===2&&z.setCellFromCodepoint(V-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),z.setCellFromCodepoint(this._activeBuffer.x++,R,$,Q),$>0)for(;--$;)z.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=J,this._activeBuffer.x<V&&S-P>0&&z.getWidth(this._activeBuffer.x)===0&&!z.hasContent(this._activeBuffer.x)&&z.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,P){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,P):this._parser.registerCsiHandler(v,(S=>!A(S.params[0],this._optionsService.rawOptions.windowOptions)||P(S)))}registerDcsHandler(v,P){return this._parser.registerDcsHandler(v,new C.DcsHandler(P))}registerEscHandler(v,P){return this._parser.registerEscHandler(v,P)}registerOscHandler(v,P){return this._parser.registerOscHandler(v,new T.OscHandler(P))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let v=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);v.hasWidth(this._activeBuffer.x)&&!v.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let v=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-v),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(v=this._bufferService.cols-1){this._activeBuffer.x=Math.min(v,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(v,P){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+P):(this._activeBuffer.x=v,this._activeBuffer.y=P),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,P){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+P)}cursorUp(v){let P=this._activeBuffer.y-this._activeBuffer.scrollTop;return P>=0?this._moveCursor(0,-Math.min(P,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let P=this._activeBuffer.scrollBottom-this._activeBuffer.y;return P>=0?this._moveCursor(0,Math.min(P,v.params[0]||1)):this._moveCursor(0,v.params[0]||1),!0}cursorForward(v){return this._moveCursor(v.params[0]||1,0),!0}cursorBackward(v){return this._moveCursor(-(v.params[0]||1),0),!0}cursorNextLine(v){return this.cursorDown(v),this._activeBuffer.x=0,!0}cursorPrecedingLine(v){return this.cursorUp(v),this._activeBuffer.x=0,!0}cursorCharAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(v){return this._setCursor(v.length>=2?(v.params[1]||1)-1:0,(v.params[0]||1)-1),!0}charPosAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(v){return this._moveCursor(v.params[0]||1,0),!0}linePosAbsolute(v){return this._setCursor(this._activeBuffer.x,(v.params[0]||1)-1),!0}vPositionRelative(v){return this._moveCursor(0,v.params[0]||1),!0}hVPosition(v){return this.cursorPosition(v),!0}tabClear(v){let P=v.params[0];return P===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:P===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let P=v.params[0];return P===1&&(this._curAttrData.bg|=536870912),P!==2&&P!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,P,S,R=!1,$=!1){let W=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);W.replaceCells(P,S,this._activeBuffer.getNullCell(this._eraseAttrData()),$),R&&(W.isWrapped=!1)}_resetBufferLine(v,P=!1){let S=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);S&&(S.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),P),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),S.isWrapped=!1)}eraseInDisplay(v,P=!1){let S;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(S=this._activeBuffer.y,this._dirtyRowTracker.markDirty(S),this._eraseInBufferLine(S++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);S<this._bufferService.rows;S++)this._resetBufferLine(S,P);this._dirtyRowTracker.markDirty(S);break;case 1:for(S=this._activeBuffer.y,this._dirtyRowTracker.markDirty(S),this._eraseInBufferLine(S,0,this._activeBuffer.x+1,!0,P),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(S+1).isWrapped=!1);S--;)this._resetBufferLine(S,P);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(S=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,S-1);S--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+S)?.getTrimmedLength(););for(;S>=0;S--)this._bufferService.scroll(this._eraseAttrData())}else{for(S=this._bufferService.rows,this._dirtyRowTracker.markDirty(S-1);S--;)this._resetBufferLine(S,P);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(v,P=!1){switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,P);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,P)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let S=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,$=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;P--;)this._activeBuffer.lines.splice($-1,1),this._activeBuffer.lines.splice(S,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let S=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;P--;)this._activeBuffer.lines.splice(S,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.insertCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(v){let P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.deleteCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.insertCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.insertCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let S=this._activeBuffer.scrollTop;S<=this._activeBuffer.scrollBottom;++S){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+S);R.deleteCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(v.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(v){let P=this._parser.precedingJoinState;if(!P)return!0;let S=v.params[0]||1,R=y.UnicodeService.extractWidth(P),$=this._activeBuffer.x-R,W=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString($),U=new Uint32Array(W.length*S),V=0;for(let I=0;I<W.length;){let Q=W.codePointAt(I)||0;U[V++]=Q,I+=Q>65535?2:1}let te=V;for(let I=1;I<S;++I)U.copyWithin(te,0,V),te+=V;return this.print(U,0,te),!0}sendDeviceAttributesPrimary(v){return v.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(v){return v.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(v.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(v){return(this._optionsService.rawOptions.termName+"").indexOf(v)===0}setMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),this._charsetService.setgCharset(1,b.DEFAULT_CHARSET),this._charsetService.setgCharset(2,b.DEFAULT_CHARSET),this._charsetService.setgCharset(3,b.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),v.params[P]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(v,P){let S=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:$}=this._coreMouseService,W=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:te,alt:I}=U,Q=this._optionsService.rawOptions,z=Ye=>Ye?1:2,J=v.params[0];return ge=J,_e=P?J===2?4:J===4?z(W.modes.insertMode):J===12?3:J===20?z(Q.convertEol):0:J===1?z(S.applicationCursorKeys):J===3?Q.windowOptions.setWinLines?V===80?2:V===132?1:0:0:J===6?z(S.origin):J===7?z(S.wraparound):J===8?3:J===9?z(R==="X10"):J===12?z(Q.cursorBlink):J===25?z(!W.isCursorHidden):J===45?z(S.reverseWraparound):J===66?z(S.applicationKeypad):J===67?4:J===1e3?z(R==="VT200"):J===1002?z(R==="DRAG"):J===1003?z(R==="ANY"):J===1004?z(S.sendFocus):J===1005?4:J===1006?z($==="SGR"):J===1015?4:J===1016?z($==="SGR_PIXELS"):J===1048?1:J===47||J===1047||J===1049?z(te===I):J===2004?z(S.bracketedPasteMode):J===2026?z(S.synchronizedOutput):0,W.triggerDataEvent(`${a.C0.ESC}[${P?"":"?"}${ge};${_e}$y`),!0;var ge,_e}_updateAttrColor(v,P,S,R,$){return P===2?(v|=50331648,v&=-16777216,v|=u.AttributeData.fromColorRGB([S,R,$])):P===5&&(v&=-50331904,v|=33554432|255&S),v}_extractColor(v,P,S){let R=[0,0,-1,0,0,0],$=0,W=0;do{if(R[W+$]=v.params[P+W],v.hasSubParams(P+W)){let U=v.getSubParams(P+W),V=0;do R[1]===5&&($=1),R[W+V+1+$]=U[V];while(++V<U.length&&V+W+1+$<R.length);break}if(R[1]===5&&W+$>=2||R[1]===2&&W+$>=5)break;R[1]&&($=1)}while(++W+P<v.length&&W+$<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:S.fg=this._updateAttrColor(S.fg,R[1],R[3],R[4],R[5]);break;case 48:S.bg=this._updateAttrColor(S.bg,R[1],R[3],R[4],R[5]);break;case 58:S.extended=S.extended.clone(),S.extended.underlineColor=this._updateAttrColor(S.extended.underlineColor,R[1],R[3],R[4],R[5])}return W}_processUnderline(v,P){P.extended=P.extended.clone(),(!~v||v>5)&&(v=1),P.extended.underlineStyle=v,P.fg|=268435456,v===0&&(P.fg&=-268435457),P.updateExtended()}_processSGR0(v){v.fg=n.DEFAULT_ATTR_DATA.fg,v.bg=n.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let P=v.length,S,R=this._curAttrData;for(let $=0;$<P;$++)S=v.params[$],S>=30&&S<=37?(R.fg&=-50331904,R.fg|=16777216|S-30):S>=40&&S<=47?(R.bg&=-50331904,R.bg|=16777216|S-40):S>=90&&S<=97?(R.fg&=-50331904,R.fg|=16777224|S-90):S>=100&&S<=107?(R.bg&=-50331904,R.bg|=16777224|S-100):S===0?this._processSGR0(R):S===1?R.fg|=134217728:S===3?R.bg|=67108864:S===4?(R.fg|=268435456,this._processUnderline(v.hasSubParams($)?v.getSubParams($)[0]:1,R)):S===5?R.fg|=536870912:S===7?R.fg|=67108864:S===8?R.fg|=1073741824:S===9?R.fg|=2147483648:S===2?R.bg|=134217728:S===21?this._processUnderline(2,R):S===22?(R.fg&=-134217729,R.bg&=-134217729):S===23?R.bg&=-67108865:S===24?(R.fg&=-268435457,this._processUnderline(0,R)):S===25?R.fg&=-536870913:S===27?R.fg&=-67108865:S===28?R.fg&=-1073741825:S===29?R.fg&=2147483647:S===39?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):S===49?(R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):S===38||S===48||S===58?$+=this._extractColor(v,$,R):S===53?R.bg|=1073741824:S===55?R.bg&=-1073741825:S===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):S===100?(R.fg&=-67108864,R.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",S);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let P=this._activeBuffer.y+1,S=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${P};${S}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let P=this._activeBuffer.y+1,S=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${P};${S}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let P=v.length===0?1:v.params[0];if(P===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(P){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let S=P%2==1;this._coreService.decPrivateModes.cursorBlink=S}return!0}setScrollRegion(v){let P=v.params[0]||1,S;return(v.length<2||(S=v.params[1])>this._bufferService.rows||S===0)&&(S=this._bufferService.rows),S>P&&(this._activeBuffer.scrollTop=P-1,this._activeBuffer.scrollBottom=S-1,this._setCursor(0,0)),!0}windowOptions(v){if(!A(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let P=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:P!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:P!==0&&P!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),P!==0&&P!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:P!==0&&P!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),P!==0&&P!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(v){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(v){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(v){return this._windowTitle=v,this._onTitleChange.fire(v),!0}setIconName(v){return this._iconName=v,!0}setOrReportIndexedColor(v){let P=[],S=v.split(";");for(;S.length>1;){let R=S.shift(),$=S.shift();if(/^\d+$/.exec(R)){let W=parseInt(R);if(F(W))if($==="?")P.push({type:0,index:W});else{let U=(0,x.parseColor)($);U&&P.push({type:1,index:W,color:U})}}}return P.length&&this._onColor.fire(P),!0}setHyperlink(v){let P=v.indexOf(";");if(P===-1)return!0;let S=v.slice(0,P).trim(),R=v.slice(P+1);return R?this._createHyperlink(S,R):!S.trim()&&this._finishHyperlink()}_createHyperlink(v,P){this._getCurrentLinkId()&&this._finishHyperlink();let S=v.split(":"),R,$=S.findIndex((W=>W.startsWith("id=")));return $!==-1&&(R=S[$].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:P}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,P){let S=v.split(";");for(let R=0;R<S.length&&!(P>=this._specialColors.length);++R,++P)if(S[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[P]}]);else{let $=(0,x.parseColor)(S[R]);$&&this._onColor.fire([{type:1,index:this._specialColors[P],color:$}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let P=[],S=v.split(";");for(let R=0;R<S.length;++R)if(/^\d+$/.exec(S[R])){let $=parseInt(S[R]);F($)&&P.push({type:2,index:$})}return P.length&&this._onColor.fire(P),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset(B[v[0]],b.CHARSETS[v[1]]||b.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new f.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let P=0;P<this._bufferService.rows;++P){let S=this._activeBuffer.ybase+this._activeBuffer.y+P,R=this._activeBuffer.lines.get(S);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,P){let S=this._bufferService.buffer,R=this._optionsService.rawOptions;return($=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${$}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${S.scrollTop+1};${S.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,P){this._dirtyRowTracker.markRangeDirty(v,P)}}i.InputHandler=K;let Y=class{constructor(H){this._bufferService=H,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(H){H<this.start?this.start=H:H>this.end&&(this.end=H)}markRangeDirty(H,v){H>v&&(q=H,H=v,v=q),H<this.start&&(this.start=H),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function F(H){return 0<=H&&H<256}Y=d([_(0,h.IBufferService)],Y)},701:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let _=c.match(/Version\/(\d+)/);return _===null||_.length<2?0:parseInt(_[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class _{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,w=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),w=Math.max(m,w),g=l.timeRemaining(),1.5*w>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends _{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends _{_requestCallback(b){return requestIdleCallback(b)}_cancelCallback(b){cancelIdleCallback(b)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(b){this._queue.clear(),this._queue.enqueue(b)}flush(){this._queue.flush()}}},5882:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(_){let a=_.buffer.lines.get(_.buffer.ybase+_.buffer.y-1),b=a?.get(_.cols-1),l=_.buffer.lines.get(_.buffer.ybase+_.buffer.y);l&&b&&(l.isWrapped=b[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&b[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,b=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=b}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),_=c(6168),a=c(5451),b=c(6107),l=c(732),m=c(3055),w=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=b.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,w.NULL_CELL_CHAR,w.NULL_CELL_WIDTH,w.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,w.WHITESPACE_CELL_CHAR,w.WHITESPACE_CELL_WIDTH,w.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new _.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new b.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=b.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(b.DEFAULT_ATTR_DATA),y=0,T=this._getCorrectBufferLength(u);if(T>this.lines.maxLength&&(this.lines.maxLength=T),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let C=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new b.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+C+1?(this.ybase--,C++,this.ydisp>0&&this.ydisp--):this.lines.push(new b.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(T<this.lines.maxLength){let x=this.lines.length-T;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=T}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),C&&(this.y+=C),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let C=0;C<this.lines.length;C++)y+=+this.lines.get(C).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(b.DEFAULT_ATTR_DATA),h);if(y.length>0){let T=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,T.layout),this._reflowLargerAdjustViewport(f,u,T.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(b.DEFAULT_ATTR_DATA),T=h;for(;T-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new b.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(b.DEFAULT_ATTR_DATA),T=[],C=0;for(let x=this.lines.length-1;x>=0;x--){let N=this.lines.get(x);if(!N||!N.isWrapped&&N.getTrimmedLength()<=f)continue;let B=[N];for(;N.isWrapped&&x>0;)N=this.lines.get(--x),B.unshift(N);if(!h){let S=this.ybase+this.y;if(S>=x&&S<x+B.length)continue}let D=B[B.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)(B,this._cols,f),E=A.length-B.length,q;q=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let K=[];for(let S=0;S<E;S++){let R=this.getBlankLine(b.DEFAULT_ATTR_DATA,!0);K.push(R)}K.length>0&&(T.push({start:x+B.length+C,newLines:K}),C+=K.length),B.push(...K);let Y=A.length-1,F=A[Y];F===0&&(Y--,F=A[Y]);let H=B.length-E-1,v=D;for(;H>=0;){let S=Math.min(v,F);if(B[Y]===void 0)break;if(B[Y].copyCellsFrom(B[H],v-S,F-S,S,!0),F-=S,F===0&&(Y--,F=A[Y]),v-=S,v===0){H--;let R=Math.max(H,0);v=(0,l.getWrappedLineTrimmedLength)(B,R,this._cols)}}for(let S=0;S<B.length;S++)A[S]<f&&B[S].setCell(A[S],y);let P=E-q;for(;P-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+C)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(T.length>0){let x=[],N=[];for(let F=0;F<this.lines.length;F++)N.push(this.lines.get(F));let B=this.lines.length,D=B-1,A=0,E=T[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+C);let q=0;for(let F=Math.min(this.lines.maxLength-1,B+C-1);F>=0;F--)if(E&&E.start>D+q){for(let H=E.newLines.length-1;H>=0;H--)this.lines.set(F--,E.newLines[H]);F++,x.push({index:D+1,amount:E.newLines.length}),q+=E.newLines.length,E=T[++A]}else this.lines.set(F,N[D--]);let K=0;for(let F=x.length-1;F>=0;F--)x[F].index+=K,this.lines.onInsertEmitter.fire(x[F]),K+=x[F].amount;let Y=Math.max(0,B+C-this.lines.maxLength);Y>0&&this.lines.onTrimEmitter.fire(Y)}}translateBufferLineToString(f,u,h=0,y){let T=this.lines.get(f);return T?T.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),_=c(3055),a=c(8938),b=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||_.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,b.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,b.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,b.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,b.stringFromCodePoint)(2097151&u)+(0,b.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new _.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new _.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let T=parseInt(u[y],10);T>=n&&delete this._combined[T]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let T=parseInt(h[y],10);T>=n&&delete this._extendedAttrs[T]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let C=u-1;C>=0;C--){for(let x=0;x<3;x++)this._data[3*(f+C)+x]=y[3*(g+C)+x];268435456&y[3*(g+C)+2]&&(this._extendedAttrs[f+C]=n._extendedAttrs[g+C])}else for(let C=0;C<u;C++){for(let x=0;x<3;x++)this._data[3*(f+C)+x]=y[3*(g+C)+x];268435456&y[3*(g+C)+2]&&(this._extendedAttrs[f+C]=n._extendedAttrs[g+C])}let T=Object.keys(n._combined);for(let C=0;C<T.length;C++){let x=parseInt(T[C],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],T=2097151&y,C=2097152&y?this._combined[g]:T?(0,b.stringFromCodePoint)(T):a.WHITESPACE_CELL_CHAR;if(h+=C,u)for(let x=0;x<C.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(k,i)=>{function c(d,_,a){if(_===d.length-1)return d[_].getTrimmedLength();let b=!d[_].hasContent(a-1)&&d[_].getWidth(a-1)===1,l=d[_+1].getWidth(0)===2;return b&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,_,a,b,l,m){let w=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&b>=n&&b<g){n+=u.length-1;continue}let h=0,y=c(u,h,_),T=1,C=0;for(;T<u.length;){let N=c(u,T,_),B=N-C,D=a-y,A=Math.min(B,D);u[h].copyCellsFrom(u[T],C,y,A,!1),y+=A,y===a&&(h++,y=0),C+=A,C===N&&(T++,C=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let N=u.length-1;N>0&&(N>h||u[N].getTrimmedLength()===0);N--)x++;x>0&&(w.push(n+u.length-x),w.push(x)),n+=u.length-1}return w},i.reflowLargerCreateNewLayout=function(d,_){let a=[],b=0,l=_[b],m=0;for(let w=0;w<d.length;w++)if(l===w){let n=_[++b];d.onDeleteEmitter.fire({index:w-m,amount:n}),w+=n-1,m+=n,l=_[++b]}else a.push(w);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,_){let a=[];for(let b=0;b<_.length;b++)a.push(d.get(_[b]));for(let b=0;b<a.length;b++)d.set(b,a[b]);d.length=_.length},i.reflowSmallerGetNewLineLengths=function(d,_,a){let b=[],l=d.map(((g,f)=>c(d,f,_))).reduce(((g,f)=>g+f)),m=0,w=0,n=0;for(;n<l;){if(l-n<a){b.push(l-n);break}m+=a;let g=c(d,w,_);m>g&&(m-=g,w++);let f=d[w].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;b.push(u),n+=u}return b},i.getWrappedLineTrimmedLength=c},4097:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),_=c(1073),a=c(802);class b extends d.Disposable{constructor(m,w){super(),this._optionsService=m,this._bufferService=w,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,w){this._normal.resize(m,w),this._alt.resize(m,w),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=b},3055:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),_=c(8938),a=c(5451);class b extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let w=new b;return w.setFromCharData(m),w}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[_.CHAR_DATA_ATTR_INDEX],this.bg=0;let w=!1;if(m[_.CHAR_DATA_CHAR_INDEX].length>2)w=!0;else if(m[_.CHAR_DATA_CHAR_INDEX].length===2){let n=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[_.CHAR_DATA_WIDTH_INDEX]<<22:w=!0}else w=!0}else this.content=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[_.CHAR_DATA_WIDTH_INDEX]<<22;w&&(this.combinedData=m[_.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[_.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=b},8938:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),_=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,_.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(k,i)=>{var c,d,_;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
-
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(_||(i.C1_ESCAPED=_={}))},726:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,_=c.length){let a="";for(let b=d;b<_;++b){let l=c[b];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let _=c.length;if(!_)return 0;let a=0,b=0;if(this._interim){let l=c.charCodeAt(b++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=b;l<_;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=_)return this._interim=m,a;let w=c.charCodeAt(l);56320<=w&&w<=57343?d[a++]=1024*(m-55296)+w-56320+65536:(d[a++]=m,d[a++]=w)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let _=c.length;if(!_)return 0;let a,b,l,m,w=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let T,C=0;for(;(T=63&this.interim[++C])&&C<4;)y<<=6,y|=T;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=x-C;for(;g<N;){if(g>=_)return 0;if(T=c[g++],(192&T)!=128){g--,h=!0;break}this.interim[C++]=T,y<<=6,y|=63&T}h||(x===2?y<128?g--:d[w++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[w++]=y):y<65536||y>1114111||(d[w++]=y)),this.interim.fill(0)}let f=_-4,u=g;for(;u<_;){for(;!(!(u<f)||128&(a=c[u])||128&(b=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[w++]=a,d[w++]=b,d[w++]=l,d[w++]=m,u+=4;if(a=c[u++],a<128)d[w++]=a;else if((224&a)==192){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(n=(31&a)<<6|63&b,n<128){u--;continue}d[w++]=n}else if((240&a)==224){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&b)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[w++]=n}else if((248&a)==240){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,this.interim[2]=l,w;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&b)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[w++]=n}}return w}}},7428:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],b;i.UnicodeV6=class{constructor(){if(this.version="6",!b){b=new Uint8Array(65536),b.fill(1),b[0]=0,b.fill(0,1,32),b.fill(0,127,160),b.fill(2,4352,4448),b[9001]=2,b[9002]=2,b.fill(2,11904,42192),b[12351]=1,b.fill(2,44032,55204),b.fill(2,63744,64256),b.fill(2,65040,65050),b.fill(2,65072,65136),b.fill(2,65280,65377),b.fill(2,65504,65511);for(let l=0;l<_.length;++l)b.fill(0,_[l][0],_[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?b[l]:(function(m,w){let n,g=0,f=w.length-1;if(m<w[0][0]||m>w[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>w[n][1])g=n+1;else{if(!(m<w[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let w=this.wcwidth(l),n=w===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>w&&(w=g)}return d.UnicodeService.createPropertyValue(0,w,n)}}},3562:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new _.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let w;for(this._isSyncWriting=!0;w=this._writeBuffer.shift();){this._action(w);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let w=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-w>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(w,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let b=a.toLowerCase();if(b.indexOf("rgb:")===0){b=b.slice(4);let l=c.exec(b);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(b.indexOf("#")===0&&(b=b.slice(1),d.exec(b)&&[3,6,9,12].includes(b.length))){let l=b.length/3,m=[0,0,0];for(let w=0;w<3;++w){let n=parseInt(b.slice(l*w,l*w+l),16);m[w]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,b=16){let[l,m,w]=a;return`rgb:${_(l,b)}/${_(m,b)}/${_(w,b)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function _(a,b){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(b){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),_=c(7262),a=c(1263),b=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=b,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=b}registerHandler(m,w){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(w),{dispose:()=>{let g=n.indexOf(w);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=b,this._ident=0}hook(m,w){if(this.reset(),this._ident=m,this._active=this._handlers[m]||b,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(w);else this._handlerFb(this._ident,"HOOK",w)}put(m,w,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,w,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,w,n))}unhook(m,w=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=w,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=b,this._ident=0}};let l=new _.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,w,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,w,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let w=!1;if(this._hitLimit)w=!1;else if(m&&(w=this._handler(this._data,this._params),w instanceof Promise))return w.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,w}}},6717:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),_=c(7262),a=c(1346),b=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((C,x)=>x)),f=(C,x)=>g.slice(C,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),T;for(T in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],T,3,0),n.addMany(f(128,144),T,3,0),n.addMany(f(144,152),T,3,0),n.add(156,T,0,0),n.add(27,T,11,1),n.add(157,T,4,8),n.addMany([152,158,159],T,0,7),n.add(155,T,11,3),n.add(144,T,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class w extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new _.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new b.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let T=g.intermediates.charCodeAt(y);if(32>T||T>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=T}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,T=0,C=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,C=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](this._params),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 6:if(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,C=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=C;x<f;++x){switch(y=g[x],T=this._transitions.table[this.currentState<<8|(y<160?y:m)],T>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|y],B=N?N.length-1:-1;for(;B>=0&&(h=N[B](this._params),h!==!0);B--)if(h instanceof Promise)return this._preserveStack(3,N,B,T,x),h;B<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,T,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,T,x),h;y===27&&(T|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,T,x),h;y===27&&(T|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&T}}}i.EscapeSequenceParser=w},1346:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),_=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(b,l){this._handlers[b]===void 0&&(this._handlers[b]=[]);let m=this._handlers[b];return m.push(l),{dispose:()=>{let w=m.indexOf(l);w!==-1&&m.splice(w,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let b=this._active.length-1;b>=0;b--)this._active[b].start();else this._handlerFb(this._id,"START")}_put(b,l,m){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(b,l,m);else this._handlerFb(this._id,"PUT",(0,_.utf32ToString)(b,l,m))}start(){this.reset(),this._state=1}put(b,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let w=b[l++];if(w===59){this._state=2,this._start();break}if(w<48||57<w)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+w-48}this._state===2&&m-l>0&&this._put(b,l,m)}}end(b,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,w=this._active.length-1,n=!1;if(this._stack.paused&&(w=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;w>=0&&(m=this._active[w].end(b),m!==!0);w--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!1,m;w--}for(;w>=0;w--)if(m=this._active[w].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",b);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(b){this._handler=b,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(b,l,m){this._hitLimit||(this._data+=(0,_.utf32ToString)(b,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(b){let l=!1;if(this._hitLimit)l=!1;else if(b&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let b=new d;if(!a.length)return b;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let w=0;w<m.length;++w)b.addSubParam(m[w]);else b.addParam(m)}return b}constructor(a=32,b=32){if(this.maxLength=a,this.maxSubParamsLength=b,b>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(b),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let b=0;b<this.length;++b){a.push(this.params[b]);let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let b=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-b>0?this._subParams.subarray(b,l):null}getSubParamsAll(){let a={};for(let b=0;b<this.length;++b){let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&(a[b]=this._subParams.slice(l,m))}return a}addDigit(a){let b;if(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[b-1];l[b-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let _={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(_),d.dispose=()=>this._wrappedAddonDispose(_),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let _=0;_<this._addons.length;_++)if(this._addons[_]===c){d=_;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),_=c(3055);i.BufferApiView=class{constructor(a,b){this._buffer=a,this.type=b}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let b=this._buffer.lines.get(a);if(b)return new d.BufferLineApiView(b)}getNullCell(){return new _.CellData}}},793:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(_){this._line=_}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(_,a){if(!(_<0||_>=this._line.length))return a?(this._line.loadCell(_,a),a):this._line.loadCell(_,new d.CellData)}translateToString(_,a,b){return this._line.translateToString(_,a,b)}}},5101:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),_=c(7150),a=c(802);class b extends _.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=b},6097:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(_=>d(_.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((_,a)=>d(_,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,T=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(n,g,f,u);else for(var C=n.length-1;C>=0;C--)(h=n[C])&&(T=(y<3?h(T):y>3?h(g,f,T):h(g,f))||T);return y>3&&T&&Object.defineProperty(g,f,T),T},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),b=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let w=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new b.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let T=f.lines.isFull;y===f.lines.length-1?T?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),T?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let T=y-h+1;f.lines.shiftElements(h+1,T-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=w,i.BufferService=w=d([_(0,l.IOptionsService)],w)},5746:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(k,i,c){var d=this&&this.__decorate||function(u,h,y,T){var C,x=arguments.length,N=x<3?h:T===null?T=Object.getOwnPropertyDescriptor(h,y):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(u,h,y,T);else for(var B=u.length-1;B>=0;B--)(C=u[B])&&(N=(x<3?C(N):x>3?C(h,y,N):C(h,y))||N);return x>3&&N&&Object.defineProperty(h,y,N),N},_=this&&this.__param||function(u,h){return function(y,T){h(y,T,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),b=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function w(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[w(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.x};${u.y}${h}`}},f=class extends b.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let T of Object.keys(m))this.addProtocol(T,m[T]);for(let T of Object.keys(g))this.addEncoding(T,g[T]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let T=h/y,C=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(C/=T+0,Math.abs(u.deltaY)<50&&(C*=.3),this._wheelPartialScroll+=C,C=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(C*=this._bufferService.rows),C}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([_(0,a.IBufferService),_(1,a.ICoreService),_(2,a.IOptionsService)],f)},4071:function(k,i,c){var d=this&&this.__decorate||function(f,u,h,y){var T,C=arguments.length,x=C<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var N=f.length-1;N>=0;N--)(T=f[N])&&(x=(C<3?T(x):C>3?T(u,h,x):T(u,h))||x);return C>3&&x&&Object.defineProperty(u,h,x),x},_=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),b=c(7150),l=c(6501),m=c(802),w=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends b.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([_(0,l.IBufferService),_(1,l.ILogService),_(2,l.IOptionsService)],g)},6025:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),_=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,w]of l)this.set(m,w)}set(l,m){let w=this._entries.get(l);return this._entries.set(l,m),w}forEach(l){for(let[m,w]of this._entries.entries())l(m,w)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(b,l){this._services.set(b,l)}getService(b){return this._services.get(b)}createInstance(b,...l){let m=(0,_.getServiceDependencies)(b).sort(((g,f)=>g.index-f.index)),w=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${b.name} depends on UNKNOWN service ${g.id._id}.`);w.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${b.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new b(...l,...w)}}},7276:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,T=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(n,g,f,u);else for(var C=n.length-1;C>=0;C--)(h=n[C])&&(T=(y<3?h(T):y>3?h(g,f,T):h(g,f))||T);return y>3&&T&&Object.defineProperty(g,f,T),T},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==b.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((T=>JSON.stringify(T))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),b=c(6501),l={trace:b.LogLevelEnum.TRACE,debug:b.LogLevelEnum.DEBUG,info:b.LogLevelEnum.INFO,warn:b.LogLevelEnum.WARN,error:b.LogLevelEnum.ERROR,off:b.LogLevelEnum.OFF},m,w=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=b.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=b.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=b.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=b.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=b.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=b.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=w,i.LogService=w=d([_(0,b.IOptionsService)],w)},56:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),_=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:_.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let b=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(w){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in w)if(g in n)try{let f=w[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(w,n){return this.onOptionChange((g=>{g===w&&n(this.rawOptions[w])}))}onMultipleOptionChange(w,n){return this.onOptionChange((g=>{w.indexOf(g)!==-1&&n()}))}_setupOptions(){let w=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:w.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(w,n){switch(w){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[w]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${w}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[w]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=b.includes(n)?n:i.DEFAULT_OPTIONS[w];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${w} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${w} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${w} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${w} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(k,i,c){var d=this&&this.__decorate||function(l,m,w,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,w):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,w,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,w,u):g(m,w))||u);return f>3&&u&&Object.defineProperty(m,w,u),u},_=this&&this.__param||function(l,m){return function(w,n){m(w,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),b=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let w=l,n=this._getEntryIdKey(w),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(w),data:w,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let w=this._dataByLinkId.get(l);if(w&&w.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);w.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(w,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let w=l.lines.indexOf(m);w!==-1&&(l.lines.splice(w,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=b,i.OscLinkService=b=d([_(0,a.IBufferService)],b)},6201:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(_){return _[d]||[]},i.createDecorator=function(_){if(i.serviceRegistry.has(_))return i.serviceRegistry.get(_);let a=function(b,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(w,n,g){n[c]===n?n[d].push({id:w,index:g}):(n[d]=[{id:w,index:g}],n[c]=n)})(a,b,m)};return a._id=_,i.serviceRegistry.set(_,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var _;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(_||(i.LogLevelEnum=_={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),_=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,w=!1){return(16777215&l)<<3|(3&m)<<1|(w?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new _.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,w=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,w),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(w)),m+=h,w=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),_=c(5777),a=c(802);class b extends _.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,w=!0){this.coreService.triggerDataEvent(m,w)}resize(m,w){m===this.cols&&w===this.rows||super.resize(m,w)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=b},3058:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,T=(C,x)=>C===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let C=0,x=h.length;C<x;C++)if(!T(h[C],y[C]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let T=h.length-1;y<T&&(h[y]=h[T]),h.pop()},i.binarySearch=function(h,y,T){return a(h.length,(C=>T(h[C],y)))},i.binarySearch2=a,i.quickSelect=function h(y,T,C){if((y|=0)>=T.length)throw new TypeError("invalid index");let x=T[Math.floor(T.length*Math.random())],N=[],B=[],D=[];for(let A of T){let E=C(A,x);E<0?N.push(A):E>0?B.push(A):D.push(A)}return y<N.length?h(y,N,C):y<N.length+D.length?D[0]:h(y-(N.length+D.length),B,C)},i.groupBy=function(h,y){let T=[],C;for(let x of h.slice(0).sort(y))C&&y(C[0],x)===0?C.push(x):(C=[x],T.push(C));return T},i.groupAdjacentBy=function*(h,y){let T,C;for(let x of h)C!==void 0&&y(C,x)?T.push(x):(T&&(yield T),T=[x]),C=x;T&&(yield T)},i.forEachAdjacent=function(h,y){for(let T=0;T<=h.length;T++)y(T===0?void 0:h[T-1],T===h.length?void 0:h[T])},i.forEachWithNeighbors=function(h,y){for(let T=0;T<h.length;T++)y(T===0?void 0:h[T-1],h[T],T+1===h.length?void 0:h[T+1])},i.sortedDiff=b,i.delta=function(h,y,T){let C=b(h,y,T),x=[],N=[];for(let B of C)x.push(...h.slice(B.start,B.start+B.deleteCount)),N.push(...B.toInsert);return{removed:x,added:N}},i.top=function(h,y,T){if(T===0)return[];let C=h.slice(0,T).sort(y);return l(h,y,C,T,h.length),C},i.topAsync=function(h,y,T,C,x){return T===0?Promise.resolve([]):new Promise(((N,B)=>{(async()=>{let D=h.length,A=h.slice(0,T).sort(y);for(let E=T,q=Math.min(T+C,D);E<D;E=q,q=Math.min(q+C,D)){if(E>T&&await new Promise((K=>setTimeout(K))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,q)}return A})().then(N,B)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let T=0;T<h.length;T++)h[T]&&(h[y]=h[T],y+=1);h.length=y},i.move=function(h,y,T){h.splice(T,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=T=>T){let T=new Set;return h.filter((C=>{let x=y(C);return!T.has(x)&&(T.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return T=>{let C=h(T);return!y.has(C)&&(y.add(C),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,T=(C,x)=>C===x){let C=0;for(let x=0,N=Math.min(h.length,y.length);x<N&&T(h[x],y[x]);x++)C++;return C},i.range=function(h,y){let T=typeof y=="number"?h:0;typeof y=="number"?T=h:(T=0,y=h);let C=[];if(T<=y)for(let x=T;x<y;x++)C.push(x);else for(let x=T;x>y;x--)C.push(x);return C},i.index=function(h,y,T){return h.reduce(((C,x)=>(C[y(x)]=T?T(x):x,C)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,T){let C=h.slice(0,y),x=h.slice(y);return C.concat(T,x)},i.shuffle=function(h,y){let T;if(typeof y=="number"){let C=y;T=()=>{let x=179426549*Math.sin(C++);return x-Math.floor(x)}}else T=Math.random;for(let C=h.length-1;C>0;C-=1){let x=Math.floor(T()*(C+1)),N=h[C];h[C]=h[x],h[x]=N}},i.pushToStart=function(h,y){let T=h.indexOf(y);T>-1&&(h.splice(T,1),h.unshift(y))},i.pushToEnd=function(h,y){let T=h.indexOf(y);T>-1&&(h.splice(T,1),h.push(y))},i.pushMany=function(h,y){for(let T of y)h.push(T)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=w,i.splice=function(h,y,T,C){let x=n(h,y),N=h.splice(x,T);return N===void 0&&(N=[]),w(h,x,C),N},i.compareBy=function(h,y){return(T,C)=>y(h(T),h(C))},i.tieBreakComparators=function(...h){return(y,T)=>{for(let C of h){let x=C(y,T);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,T)=>-h(y,T)};let d=c(9807),_=c(8297);function a(h,y){let T=0,C=h-1;for(;T<=C;){let x=(T+C)/2|0,N=y(x);if(N<0)T=x+1;else{if(!(N>0))return x;C=x-1}}return-(T+1)}function b(h,y,T){let C=[];function x(D,A,E){if(A===0&&E.length===0)return;let q=C[C.length-1];q&&q.start+q.deleteCount===D?(q.deleteCount+=A,q.toInsert.push(...E)):C.push({start:D,deleteCount:A,toInsert:E})}let N=0,B=0;for(;;){if(N===h.length){x(N,0,y.slice(B));break}if(B===y.length){x(N,h.length-N,[]);break}let D=h[N],A=y[B],E=T(D,A);E===0?(N+=1,B+=1):E<0?(x(N,1,[]),N+=1):E>0&&(x(N,0,[A]),B+=1)}return C}function l(h,y,T,C,x){for(let N=T.length;C<x;C++){let B=h[C];if(y(B,T[N-1])<0){T.pop();let D=(0,_.findFirstIdxMonotonousOrArrLen)(T,(A=>y(B,A)<0));T.splice(D,0,B)}}}function m(h,y){let T=h.indexOf(y);if(T>-1)return h.splice(T,1),y}function w(h,y,T){let C=n(h,y),x=h.length,N=T.length;h.length=x+N;for(let B=x-1;B>=C;B--)h[B+N]=h[B];for(let B=0;B<N;B++)h[B+C]=T[B]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let T=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,T}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let T=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,T}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((T=>(y(T),!0)))}toArray(){let y=[];return this.iterate((T=>(y.push(T),!0))),y}filter(y){return new f((T=>this.iterate((C=>!y(C)||T(C)))))}map(y){return new f((T=>this.iterate((C=>T(y(C))))))}some(y){let T=!1;return this.iterate((C=>(T=y(C),!T))),T}findFirst(y){let T;return this.iterate((C=>!y(C)||(T=C,!1))),T}findLast(y){let T;return this.iterate((C=>(y(C)&&(T=C),!0))),T}findLastMaxBy(y){let T,C=!0;return this.iterate((x=>((C||g.isGreaterThan(y(x,T)))&&(C=!1,T=x),!0))),T}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,T){let C=Array.from(y.keys()).sort(((x,N)=>T(y[x],y[N])));return new u(C)}apply(y){return y.map(((T,C)=>y[this._indexMap[C]]))}inverse(){let y=this._indexMap.slice();for(let T=0;T<this._indexMap.length;T++)y[this._indexMap[T]]=T;return new u(y)}}i.Permutation=u},8297:(k,i)=>{function c(l,m,w=l.length-1){for(let n=w;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function _(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let w=c(l,m);if(w!==-1)return l[w]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let w=d(l,m);return w===-1?void 0:l[w]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let w=_(l,m);return w===l.length?void 0:l[w]},i.findFirstIdxMonotonousOrArrLen=_,i.findFirstIdxMonotonous=function(l,m,w=0,n=l.length){let g=_(l,m,w,n);return g===l.length?-1:g},i.findFirstMax=b,i.findLastMax=function(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>=0&&(w=g)}return w},i.findFirstMin=function(l,m){return b(l,((w,n)=>-m(w,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let w=0;for(let n=1;n<l.length;n++)m(l[n],l[w])>0&&(w=n);return w},i.mapFindFirst=function(l,m){for(let w of l){let n=m(w);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let w=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=w+1,w===-1?void 0:this._array[w]}}function b(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>0&&(w=g)}return w}i.MonotonousArray=a},9087:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(_,a){let b=Object.create(null);for(let l of _){let m=a(l),w=b[m];w||(w=b[m]=[]),w.push(l)}return b},i.diffSets=function(_,a){let b=[],l=[];for(let m of _)a.has(m)||b.push(m);for(let m of a)_.has(m)||l.push(m);return{removed:b,added:l}},i.diffMaps=function(_,a){let b=[],l=[];for(let[m,w]of _)a.has(m)||b.push(w);for(let[m,w]of a)_.has(m)||l.push(w);return{removed:b,added:l}},i.intersection=function(_,a){let b=new Set;for(let l of a)_.has(l)&&b.add(l);return b};class d{static{c=Symbol.toStringTag}constructor(a,b){this.toKey=b,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let b=this.toKey(a);return this._map.set(b,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,b){this._map.forEach((l=>a.call(b,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){_(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){_(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=_,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
|
|
2
|
+
var Fa=Object.create;var Fr=Object.defineProperty;var Na=Object.getOwnPropertyDescriptor;var Wa=Object.getOwnPropertyNames;var ja=Object.getPrototypeOf,Ha=Object.prototype.hasOwnProperty;var We=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ua=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qa=(e,t)=>{for(var r in t)Fr(e,r,{get:t[r],enumerable:!0})},Ka=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Wa(t))!Ha.call(e,o)&&o!==r&&Fr(e,o,{get:()=>t[o],enumerable:!(s=Na(t,o))||s.enumerable});return e};var Va=(e,t,r)=>(r=e!=null?Fa(ja(e)):{},Ka(t||!e||!e.__esModule?Fr(r,"default",{value:e,enumerable:!0}):r,e));function Se(e){return za[e]}function Nr(e,t={}){let r=Se(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function pt(e={}){return ue.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 Vt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function gt(e){return ue.includes(e)}function sn(e){if(!e||e.length===0)return"codex";if(!gt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${ue.join(", ")}.`);return e}function Pe(e){return Se(e).displayName}function _e(e,t,r={}){let s=[Nr(e,r).executable];return t&&t.length>0&&s.push(t),s}var ue,za,Me=We(()=>{"use strict";ue=["codex","cursor","claude"],za={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 ec}from"node:crypto";import{open as tc,readFile as rp,rename as rc,rm as sc}from"node:fs/promises";import Wr from"node:path";async function he(e,t){let r=Wr.dirname(e),s=Wr.join(r,`.${Wr.basename(e)}.${process.pid}.${Date.now()}.${ec()}.tmp`),o=await tc(s,"w");try{let p=`${JSON.stringify(t,null,2)}
|
|
3
|
+
`;await o.writeFile(p,"utf8"),await o.sync(),await o.close(),await rc(s,e)}catch(p){throw await o.close().catch(()=>{}),await sc(s,{force:!0}).catch(()=>{}),p}}var Ue=We(()=>{"use strict"});import{readFile as dc}from"node:fs/promises";async function Ce(e){let t=await dc(e.indexFile,"utf8"),r=JSON.parse(t);return Hr(r,e.workspaceRoot,e.indexFile)}async function it(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await he(e.indexFile,r)}function Hr(e,t,r){if(!uc(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 uc(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var ot=We(()=>{"use strict";Ue()});import{readFile as hc}from"node:fs/promises";async function fe(e,t){let r=await hc(Ur(e,t),"utf8"),s=JSON.parse(r);return fc(s,Ur(e,t))}async function se(e,t){let r={...t,updatedAt:new Date().toISOString()};await he(Ur(e,t.id),r)}async function qr(e,t){let r=await Ce(e);r.taskIds.includes(t)||await it(e,{...r,taskIds:[...r.taskIds,t]})}function Ur(e,t){return`${e.tasksDir}/${t}.json`}function fc(e,t){let r=pc(e);if(!mc(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function pc(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Kr(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:bc(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:_c(t.repoTargets),runnerSession:t.runnerSession??gc(t),checks:Pc(t),lastCommit:t.lastCommit??null,prs:Cc(t),artifacts:Ac(t),cleanup:Dc(t)}}function gc(e){if(typeof e.title!="string")return null;let t=Kr(e.runner);return{command:_e(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function mc(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.id=="string"&&typeof t.title=="string"&&typeof t.slug=="string"&&(t.type==="repo"||t.type==="project")&&typeof t.status=="string"&>(t.runner??"")&&typeof t.repoId=="string"&&typeof t.workspaceId=="string"&&(typeof t.sessionId=="string"||t.sessionId===null)&&(typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null)&&Array.isArray(t.linkedRepoIds)&&t.linkedRepoIds.every(r=>typeof r=="string")&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&typeof t.branch=="string"&&ln(t.ptyTabs)&&(t.bundlePath===void 0||t.bundlePath===null||typeof t.bundlePath=="string")&&(t.selectedRepoTargetId===void 0||t.selectedRepoTargetId===null||typeof t.selectedRepoTargetId=="string")&&(t.repoTargets===void 0||wc(t.repoTargets))&&yc(t.runnerSession)&&vc(t.prompt)&&dn(t.checks)&&un(t.lastCommit)&&Tc(t.prs)&&Rc(t.artifacts)&&fn(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function _c(e){if(Array.isArray(e))return e.filter(cn)}function wc(e){return Array.isArray(e)&&e.every(cn)}function cn(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.repoId=="string"&&typeof t.branch=="string"&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&(t.status==="ready"||t.status==="unavailable"||t.status==="merged"||t.status==="closed")&&(typeof t.failureReason=="string"||t.failureReason===null)&&dn(t.checks)&&un(t.lastCommit)&&hn(t.pullRequest)&&fn(t.cleanup)}function bc(e){if(ln(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return kc(e.id,e.title,t,Kr(e.runner))}function kc(e,t,r,s){let o=Se(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:_e(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Kr(e){return e&>(e)?e:"codex"}function ln(e){return Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&(t.kind==="agent"||t.kind==="terminal")&&typeof t.title=="string"&&Array.isArray(t.command)&&t.command.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string")}function yc(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 vc(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function dn(e){return typeof e=="object"&&e!==null&&typeof e.source=="object"&&e.source!==null&&e.source.type==="repo_config"&&typeof e.source.path=="string"&&(typeof e.lastRunAt=="string"||e.lastRunAt===null)&&(e.status==="not_run"||e.status==="running"||e.status==="passed"||e.status==="failed")&&Array.isArray(e.commands)&&e.commands.every(t=>typeof t=="string")&&Array.isArray(e.results)&&e.results.every(t=>typeof t=="object"&&t!==null&&typeof t.command=="string"&&typeof t.startedAt=="string"&&typeof t.finishedAt=="string"&&typeof t.exitCode=="number")}function un(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function hn(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&Sc(e.requiredChecks)}function Sc(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 Tc(e){return Array.isArray(e)&&e.every(hn)}function Rc(e){return typeof e=="object"&&e!==null&&(typeof e.logPath=="string"||e.logPath===null)&&(typeof e.checkSummaryPath=="string"||e.checkSummaryPath===null)&&(typeof e.prDraftPath=="string"||e.prDraftPath===null)&&(typeof e.prStatusPath=="string"||e.prStatusPath===null)}function fn(e){return typeof e=="object"&&e!==null&&(typeof e.paneClosedAt=="string"||e.paneClosedAt===null)&&(typeof e.worktreeRemovedAt=="string"||e.worktreeRemovedAt===null)&&typeof e.preservedWorktree=="boolean"&&(typeof e.warning=="string"||e.warning===null)}function Pc(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 Cc(e){if(Array.isArray(e.prs))return e.prs.map(Ic);let t=e.pullRequest;return!t||!t.number?[]:[{provider:"github",owner:null,repo:null,number:t.number,url:t.url??null,title:null,status:pn(t.status),draft:!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:null,requiredChecks:gn(t.requiredChecks),comments:[],createdAt:null,updatedAt:null,mergedAt:null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}]}function Ic(e){let t=e??{};return{provider:"github",owner:t.owner??null,repo:t.repo??null,number:typeof t.number=="number"?t.number:null,url:t.url??null,title:t.title??null,status:pn(t.status),draft:t.draft??!1,baseBranch:t.baseBranch??null,headBranch:t.headBranch??null,mergeable:t.mergeable??!1,mergeStateStatus:t.mergeStateStatus??null,reviewDecision:xc(t.reviewDecision),requiredChecks:gn(t.requiredChecks),comments:Ec(t.comments),createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,mergedAt:t.mergedAt??null,lastSyncedAt:t.lastSyncedAt??null,lastSyncedHeadSha:t.lastSyncedHeadSha??null}}function pn(e){return e==="open"||e==="closed"||e==="merged"||e==="draft"?e:null}function xc(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function Ec(e){return Array.isArray(e)?e.flatMap(t=>{if(typeof t!="object"||t===null)return[];let r=t;return typeof r.body!="string"||!r.body.trim()?[]:[{author:typeof r.author=="string"?r.author:null,body:r.body,createdAt:typeof r.createdAt=="string"?r.createdAt:null,url:typeof r.url=="string"?r.url:null}]}):[]}function gn(e){return Array.isArray(e)?e.map(t=>({...t,status:t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown"?t.status:"unknown",conclusion:t.conclusion??null})):[]}function Ac(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Dc(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var Ie=We(()=>{"use strict";Ue();ot();Me()});import{readFile as Lc}from"node:fs/promises";async function Oe(e){try{let t=await Lc(e.uiStateFile,"utf8"),r=JSON.parse(t);return Mc(r,e.uiStateFile)}catch(t){if(Bc(t))return null;throw t}}async function xe(e,t){await he(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function qe(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function Mc(e,t){if(typeof e!="object"||e===null||e.version!==1||!(e.selectedRepoId===null||typeof e.selectedRepoId=="string")||!(e.selectedWorkspaceId===null||typeof e.selectedWorkspaceId=="string")||!(e.selectedTaskId===null||typeof e.selectedTaskId=="string")||!(e.selectedPtyTabId===void 0||e.selectedPtyTabId===null||typeof e.selectedPtyTabId=="string")||!_t(e,"inputMode")||!_t(e,"focusedRegion")||!_t(e,"activeTab")||!_t(e,"inspectorSection")||!_t(e,"inspectionMode")||!zt(e,"openInspectionKind")||!zt(e,"selectedFileTreePath")||!zt(e,"selectedFilePath")||!zt(e,"selectedDiffPath")||!Oc(e,"collapsedFileTreePaths")||!_t(e,"selectedActionId")||typeof e.updatedAt!="string")throw new Error(`Craig UI state at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}function _t(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function zt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Oc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Bc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=We(()=>{"use strict";Ue()});import{execFile as $c}from"node:child_process";import{promisify as Fc}from"node:util";async function ee(e,t,r={}){try{let s=await mn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(_n(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function oe(e,t,r={}){try{let s=await mn(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(_n(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function _n(e){return e instanceof Error}var mn,Ee=We(()=>{"use strict";mn=Fc($c)});import{readFile as tl,readdir as rl,rm as sl}from"node:fs/promises";import Cn from"node:path";async function Be(e,t){let r=await tl(Xt(e,t),"utf8"),s=JSON.parse(r);return nl(s,Xt(e,t))}async function Qt(e,t){await he(Xt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function lt(e){let t=await rl(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Be(e,Cn.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function In(e,t){await sl(Xt(e,t),{force:!0})}function Xt(e,t){return Cn.join(e.reposDir,`${t}.json`)}function nl(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var dt=We(()=>{"use strict";Ue()});import{readFile as il,readdir as ol,rm as al}from"node:fs/promises";import xn from"node:path";async function Pt(e,t){let r=await il(Jt(e,t),"utf8"),s=JSON.parse(r);return cl(s,Jt(e,t))}async function bt(e,t){await he(Jt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function $e(e){let t=await ol(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,xn.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function En(e,t){await al(Jt(e,t),{force:!0})}function Jt(e,t){return xn.join(e.workspacesDir,`${t}.json`)}function cl(e,t){let r=ll(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 ll(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var Ct=We(()=>{"use strict";Ue()});async function Ke(e,t){let r=await Ce(e),s=[],o=[];await Promise.all(r.taskIds.map(async i=>{try{s.push(await fe(e,i))}catch(c){if(_l(c)){o.push(i);return}throw c}}));let k=(t?.includeClosed?s:s.filter(i=>i.status!=="closed")).filter(i=>!(t?.workspaceId&&i.workspaceId!==t.workspaceId||t?.repoId&&i.repoId!==t.repoId&&!(i.repoTargets??[]).some(c=>c.repoId===t.repoId)));return k.sort((i,c)=>i.id.localeCompare(c.id)),o.sort(),{kind:"listTasks",tasks:k,missingTaskIds:o,repoId:t?.repoId??null}}function _l(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Et=We(()=>{"use strict";ot();Ie()});var ki={};qa(ki,{addWorkspace:()=>Lt,archiveWorkspace:()=>Mt,listWorkspaces:()=>hs,removeWorkspace:()=>Ot,removeWorkspaceRecord:()=>lr,restoreWorkspace:()=>fs});import{readdir as td,realpath as hi,stat as rd}from"node:fs/promises";import et from"node:path";async function Lt(e,t){let r=et.resolve(e.workspaceRoot,t);if(!(await rd(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await _i(r)?sd(e,r):nd(e,r)}async function hs(e,t){return{kind:"listWorkspaces",workspaces:(await $e(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function Mt(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await bi(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function fs(e,t){let s={...await Pt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await Oe({uiStateFile:e.uiStateFile})??null;return await xe({uiStateFile:e.uiStateFile},{...o??qe(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Ot(e,t){let r=await Pt(e,t),s=await Ke(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await lr(e,t),await bi(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function sd(e,t){let r=await wi(t),s=await lt(e),o=s.find(a=>a.rootPath===t)??null,p=o?pi(o,r):fi(s,t,r),k=`workspace_${p.id}`,c=(await $e(e)).find(a=>a.id===k)??null,d=new Date().toISOString(),_=c??{id:k,kind:"repo",name:p.name,rootPath:t,primaryRepoId:p.id,repoId:p.id,discoveredRepoIds:[p.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:d,updatedAt:d};return await Qt(e,p),c||await bt(e,_),await gi(e,{repoIds:[p.id],workspaceIds:[_.id]}),await mi(e,_,p.id),{kind:"createWorkspace",workspace:_,repos:[p],created:!c}}async function nd(e,t){let r=await id(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await $e(e),o=ad(s,et.basename(t)),p=s.find(d=>d.kind==="project"&&d.rootPath===t)??null,k=new Date().toISOString(),i=r.map(d=>d.id),c=p?{...p,discoveredRepoIds:i,primaryRepoId:i[0]??p.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:et.basename(t),rootPath:t,primaryRepoId:i[0]??"",discoveredRepoIds:i,branch:"project",status:"active",linkedRepoIds:i,archivedAt:null,createdAt:k,updatedAt:k};return await Promise.all(r.map(d=>Qt(e,d))),await bt(e,c),await gi(e,{repoIds:i,workspaceIds:[c.id]}),await mi(e,c,i[0]??null),{kind:"createWorkspace",workspace:c,repos:r,created:!p}}async function id(e,t){let r=await td(t,{withFileTypes:!0}),s=await lt(e),o=[];for(let p of r){if(!p.isDirectory()||p.name.startsWith("."))continue;let k=et.join(t,p.name);if(!await _i(k))continue;let i=s.find(d=>d.rootPath===k)??o.find(d=>d.rootPath===k),c=await wi(k);o.push(i?pi(i,c):fi([...s,...o],k,c))}return o.sort((p,k)=>p.name.localeCompare(k.name)||p.id.localeCompare(k.id))}function fi(e,t,r){let s=new Date().toISOString();return{id:od(e,et.basename(t)),name:et.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function pi(e,t){return e.defaultBranch===t?e:{...e,defaultBranch:t,updatedAt:new Date().toISOString()}}function od(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 ad(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(p=>p.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function gi(e,t){let r=await Ce(e);await it(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function mi(e,t,r){await xe({uiStateFile:e.uiStateFile},{...await Oe({uiStateFile:e.uiStateFile})??qe(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function _i(e){try{let r=(await ee("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([hi(r).catch(()=>et.resolve(r)),hi(e).catch(()=>et.resolve(e))]);return s===o}catch{return!1}}async function wi(e){let t=await oe("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:e}),r=t.stdout.trim().replace(/^origin\//,"");if(t.exitCode===0&&r.length>0)return r;for(let p of["main","master","trunk"])if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${p}`],{cwd:e})).exitCode===0)return p;let o=(await ee("git",["branch","--show-current"],{cwd:e})).stdout.trim();return o.length>0?o:"HEAD"}async function lr(e,t){await En(e,t);let r=await Ce(e);await it(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function bi(e,t){let r=await Oe({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await xe({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Bt=We(()=>{"use strict";ot();dt();Ct();wt();Ee();Et()});var Do=Ua(Ao=>{(()=>{"use strict";var e={5639:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CircularList=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new _.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new _.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new _.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let m=new Array(l);for(let w=0;w<Math.min(l,this.length);w++)m[w]=this._array[this._getCyclicIndex(w)];this._array=m,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let m=this._length;m<l;m++)this._array[m]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,m){this._array[this._getCyclicIndex(l)]=m}push(l){this._array[this._getCyclicIndex(this._length)]=l,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(l,m,...w){if(m){for(let n=l;n<this._length-m;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+m)];this._length-=m,this.onDeleteEmitter.fire({index:l,amount:m})}for(let n=this._length-1;n>=l;n--)this._array[this._getCyclicIndex(n+w.length)]=this._array[this._getCyclicIndex(n)];for(let n=0;n<w.length;n++)this._array[this._getCyclicIndex(l+n)]=w[n];if(w.length&&this.onInsertEmitter.fire({index:l,amount:w.length}),this._length+w.length>this._maxLength){let n=this._length+w.length-this._maxLength;this._startIndex+=n,this._length=this._maxLength,this.onTrimEmitter.fire(n)}else this._length+=w.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,m,w){if(!(m<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(let g=m-1;g>=0;g--)this.set(l+g+w,this.get(l+g));let n=l+m+w-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let n=0;n<m;n++)this.set(l+n+w,this.get(l+n))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}i.CircularList=a},7453:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.clone=function c(d,_=5){if(typeof d!="object")return d;let a=Array.isArray(d)?[]:{};for(let b in d)a[b]=_<=1?d[b]:d[b]&&c(d[b],_-1);return a}},5777:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CoreTerminal=void 0;let d=c(6501),_=c(6025),a=c(7276),b=c(9640),l=c(56),m=c(4071),w=c(7792),n=c(6415),g=c(5746),f=c(5882),u=c(2486),h=c(3562),y=c(8811),S=c(802),I=c(7150),x=!1;class N extends I.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let A in D)this.optionsService.options[A]=D[A]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new I.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new _.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(b.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(m.CoreService)),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(w.CoreMouseService)),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(n.UnicodeService)),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(g.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(y.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new h.WriteBuffer(((A,E)=>this._inputHandler.parse(A,E)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,A){this._writeBuffer.write(D,A)}writeSync(D,A){this._logService.logLevel<=d.LogLevelEnum.WARN&&!x&&(this._logService.warn("writeSync is unreliable and will be removed soon."),x=!0),this._writeBuffer.writeSync(D,A)}input(D,A=!0){this.coreService.triggerDataEvent(D,A)}resize(D,A){isNaN(D)||isNaN(A)||(D=Math.max(D,b.MINIMUM_COLS),A=Math.max(A,b.MINIMUM_ROWS),this._bufferService.resize(D,A))}scroll(D,A=!1){this._bufferService.scroll(D,A)}scrollLines(D,A){this._bufferService.scrollLines(D,A)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let A=D-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(D,A){return this._inputHandler.registerEscHandler(D,A)}registerDcsHandler(D,A){return this._inputHandler.registerDcsHandler(D,A)}registerCsiHandler(D,A){return this._inputHandler.registerCsiHandler(D,A)}registerOscHandler(D,A){return this._inputHandler.registerOscHandler(D,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?D=A.backend==="conpty"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,I.toDisposable)((()=>{for(let A of D)A.dispose()}))}}}i.CoreTerminal=N},2486:function(k,i,c){var d=this&&this.__decorate||function(B,v,P,R){var T,$=arguments.length,W=$<3?v:R===null?R=Object.getOwnPropertyDescriptor(v,P):R;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(B,v,P,R);else for(var H=B.length-1;H>=0;H--)(T=B[H])&&(W=($<3?T(W):$>3?T(v,P,W):T(v,P))||W);return $>3&&W&&Object.defineProperty(v,P,W),W},_=this&&this.__param||function(B,v){return function(P,R){v(P,R,B)}};Object.defineProperty(i,"__esModule",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0,i.isValidColorIndex=G;let a=c(3534),b=c(6760),l=c(6717),m=c(7150),w=c(726),n=c(6107),g=c(8938),f=c(3055),u=c(5451),h=c(6501),y=c(6415),S=c(1346),I=c(9823),x=c(8693),N=c(802),F={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function A(B,v){if(B>24)return v.setWinLines||!1;switch(B){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var E;(function(B){B[B.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",B[B.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(E||(i.WindowsOptionsReportType=E={}));let U=0;class z extends m.Disposable{getAttrData(){return this._curAttrData}constructor(v,P,R,T,$,W,H,K,re=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=P,this._coreService=R,this._logService=T,this._optionsService=$,this._oscLinkService=W,this._coreMouseService=H,this._unicodeService=K,this._parser=re,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new w.StringToUtf32,this._utf8Decoder=new w.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new V(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((C=>this._activeBuffer=C.activeBuffer))),this._parser.setCsiHandlerFallback(((C,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(C),params:Q.toArray()})})),this._parser.setEscHandlerFallback((C=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(C)})})),this._parser.setExecuteHandlerFallback((C=>{this._logService.debug("Unknown EXECUTE code: ",{code:C})})),this._parser.setOscHandlerFallback(((C,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:C,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((C,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(C),action:Q,payload:Y})})),this._parser.setPrintHandler(((C,Q,Y)=>this.print(C,Q,Y))),this._parser.registerCsiHandler({final:"@"},(C=>this.insertChars(C))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(C=>this.scrollLeft(C))),this._parser.registerCsiHandler({final:"A"},(C=>this.cursorUp(C))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(C=>this.scrollRight(C))),this._parser.registerCsiHandler({final:"B"},(C=>this.cursorDown(C))),this._parser.registerCsiHandler({final:"C"},(C=>this.cursorForward(C))),this._parser.registerCsiHandler({final:"D"},(C=>this.cursorBackward(C))),this._parser.registerCsiHandler({final:"E"},(C=>this.cursorNextLine(C))),this._parser.registerCsiHandler({final:"F"},(C=>this.cursorPrecedingLine(C))),this._parser.registerCsiHandler({final:"G"},(C=>this.cursorCharAbsolute(C))),this._parser.registerCsiHandler({final:"H"},(C=>this.cursorPosition(C))),this._parser.registerCsiHandler({final:"I"},(C=>this.cursorForwardTab(C))),this._parser.registerCsiHandler({final:"J"},(C=>this.eraseInDisplay(C,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(C=>this.eraseInDisplay(C,!0))),this._parser.registerCsiHandler({final:"K"},(C=>this.eraseInLine(C,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(C=>this.eraseInLine(C,!0))),this._parser.registerCsiHandler({final:"L"},(C=>this.insertLines(C))),this._parser.registerCsiHandler({final:"M"},(C=>this.deleteLines(C))),this._parser.registerCsiHandler({final:"P"},(C=>this.deleteChars(C))),this._parser.registerCsiHandler({final:"S"},(C=>this.scrollUp(C))),this._parser.registerCsiHandler({final:"T"},(C=>this.scrollDown(C))),this._parser.registerCsiHandler({final:"X"},(C=>this.eraseChars(C))),this._parser.registerCsiHandler({final:"Z"},(C=>this.cursorBackwardTab(C))),this._parser.registerCsiHandler({final:"`"},(C=>this.charPosAbsolute(C))),this._parser.registerCsiHandler({final:"a"},(C=>this.hPositionRelative(C))),this._parser.registerCsiHandler({final:"b"},(C=>this.repeatPrecedingCharacter(C))),this._parser.registerCsiHandler({final:"c"},(C=>this.sendDeviceAttributesPrimary(C))),this._parser.registerCsiHandler({prefix:">",final:"c"},(C=>this.sendDeviceAttributesSecondary(C))),this._parser.registerCsiHandler({final:"d"},(C=>this.linePosAbsolute(C))),this._parser.registerCsiHandler({final:"e"},(C=>this.vPositionRelative(C))),this._parser.registerCsiHandler({final:"f"},(C=>this.hVPosition(C))),this._parser.registerCsiHandler({final:"g"},(C=>this.tabClear(C))),this._parser.registerCsiHandler({final:"h"},(C=>this.setMode(C))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(C=>this.setModePrivate(C))),this._parser.registerCsiHandler({final:"l"},(C=>this.resetMode(C))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(C=>this.resetModePrivate(C))),this._parser.registerCsiHandler({final:"m"},(C=>this.charAttributes(C))),this._parser.registerCsiHandler({final:"n"},(C=>this.deviceStatus(C))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(C=>this.deviceStatusPrivate(C))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(C=>this.softReset(C))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(C=>this.setCursorStyle(C))),this._parser.registerCsiHandler({final:"r"},(C=>this.setScrollRegion(C))),this._parser.registerCsiHandler({final:"s"},(C=>this.saveCursor(C))),this._parser.registerCsiHandler({final:"t"},(C=>this.windowOptions(C))),this._parser.registerCsiHandler({final:"u"},(C=>this.restoreCursor(C))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(C=>this.insertColumns(C))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(C=>this.deleteColumns(C))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(C=>this.selectProtected(C))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(C=>this.requestMode(C,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(C=>this.requestMode(C,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((C=>(this.setTitle(C),this.setIconName(C),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((C=>this.setIconName(C)))),this._parser.registerOscHandler(2,new S.OscHandler((C=>this.setTitle(C)))),this._parser.registerOscHandler(4,new S.OscHandler((C=>this.setOrReportIndexedColor(C)))),this._parser.registerOscHandler(8,new S.OscHandler((C=>this.setHyperlink(C)))),this._parser.registerOscHandler(10,new S.OscHandler((C=>this.setOrReportFgColor(C)))),this._parser.registerOscHandler(11,new S.OscHandler((C=>this.setOrReportBgColor(C)))),this._parser.registerOscHandler(12,new S.OscHandler((C=>this.setOrReportCursorColor(C)))),this._parser.registerOscHandler(104,new S.OscHandler((C=>this.restoreIndexedColor(C)))),this._parser.registerOscHandler(110,new S.OscHandler((C=>this.restoreFgColor(C)))),this._parser.registerOscHandler(111,new S.OscHandler((C=>this.restoreBgColor(C)))),this._parser.registerOscHandler(112,new S.OscHandler((C=>this.restoreCursorColor(C)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let C in b.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:C},(()=>this.selectCharset("("+C))),this._parser.registerEscHandler({intermediates:")",final:C},(()=>this.selectCharset(")"+C))),this._parser.registerEscHandler({intermediates:"*",final:C},(()=>this.selectCharset("*"+C))),this._parser.registerEscHandler({intermediates:"+",final:C},(()=>this.selectCharset("+"+C))),this._parser.registerEscHandler({intermediates:"-",final:C},(()=>this.selectCharset("-"+C))),this._parser.registerEscHandler({intermediates:".",final:C},(()=>this.selectCharset("."+C))),this._parser.registerEscHandler({intermediates:"/",final:C},(()=>this.selectCharset("/"+C)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((C=>(this._logService.error("Parsing error: ",C),C))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new I.DcsHandler(((C,Q)=>this.requestStatusString(C,Q))))}_preserveStack(v,P,R,T){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=P,this._parseStack.decodedLength=R,this._parseStack.position=T}_logSlowResolvingAsync(v){this._logService.logLevel<=h.LogLevelEnum.WARN&&Promise.race([v,new Promise(((P,R)=>setTimeout((()=>R("#SLOW_TIMEOUT")),5e3)))]).catch((P=>{if(P!=="#SLOW_TIMEOUT")throw P;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,P){let R,T=this._activeBuffer.x,$=this._activeBuffer.y,W=0,H=this._parseStack.paused;if(H){if(R=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,P))return this._logSlowResolvingAsync(R),R;T=this._parseStack.cursorStartX,$=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(W=this._parseStack.position+D)}if(this._logService.logLevel<=h.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(C=>String.fromCharCode(C))).join("")}"`)),this._logService.logLevel===h.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((C=>C.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),H||this._dirtyRowTracker.clearRange(),v.length>D)for(let C=W;C<v.length;C+=D){let Q=C+D<v.length?C+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(C,Q),this._parseBuffer):this._utf8Decoder.decode(v.subarray(C,Q),this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(T,$,Y,C),this._logSlowResolvingAsync(R),R}else if(!H){let C=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(R=this._parser.parse(this._parseBuffer,C))return this._preserveStack(T,$,C,0),this._logSlowResolvingAsync(R),R}this._activeBuffer.x===T&&this._activeBuffer.y===$||this._onCursorMove.fire();let K=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),re=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);re<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(re,this._bufferService.rows-1),end:Math.min(K,this._bufferService.rows-1)})}print(v,P,R){let T,$,W=this._charsetService.charset,H=this._optionsService.rawOptions.screenReaderMode,K=this._bufferService.cols,re=this._coreService.decPrivateModes.wraparound,C=this._coreService.modes.insertMode,Q=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&R-P>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let J=this._parser.precedingJoinState;for(let ye=P;ye<R;++ye){if(T=v[ye],T<127&&W){let De=W[String.fromCharCode(T)];De&&(T=De.charCodeAt(0))}let ve=this._unicodeService.charProperties(T,J);$=y.UnicodeService.extractWidth(ve);let le=y.UnicodeService.extractShouldJoin(ve),Re=le?y.UnicodeService.extractWidth(J):0;if(J=ve,H&&this._onA11yChar.fire((0,w.stringFromCodePoint)(T)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+$-Re>K){if(re){let De=Y,Je=this._activeBuffer.x-Re;for(this._activeBuffer.x=Re,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Re>0&&Y instanceof n.BufferLine&&Y.copyCellsFrom(De,Je,0,Re,!1);Je<K;)De.setCellFromCodepoint(Je++,0,1,Q)}else if(this._activeBuffer.x=K-1,$===2)continue}if(le&&this._activeBuffer.x){let De=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-De,T,$);for(let Je=$-Re;--Je>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(C&&(Y.insertCells(this._activeBuffer.x,$-Re,this._activeBuffer.getNullCell(Q)),Y.getWidth(K-1)===2&&Y.setCellFromCodepoint(K-1,g.NULL_CELL_CODE,g.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,T,$,Q),$>0)for(;--$;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=J,this._activeBuffer.x<K&&R-P>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,P){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,P):this._parser.registerCsiHandler(v,(R=>!A(R.params[0],this._optionsService.rawOptions.windowOptions)||P(R)))}registerDcsHandler(v,P){return this._parser.registerDcsHandler(v,new I.DcsHandler(P))}registerEscHandler(v,P){return this._parser.registerEscHandler(v,P)}registerOscHandler(v,P){return this._parser.registerOscHandler(v,new S.OscHandler(P))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let v=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);v.hasWidth(this._activeBuffer.x)&&!v.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let v=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-v),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(v=this._bufferService.cols-1){this._activeBuffer.x=Math.min(v,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(v,P){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+P):(this._activeBuffer.x=v,this._activeBuffer.y=P),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,P){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+P)}cursorUp(v){let P=this._activeBuffer.y-this._activeBuffer.scrollTop;return P>=0?this._moveCursor(0,-Math.min(P,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let P=this._activeBuffer.scrollBottom-this._activeBuffer.y;return P>=0?this._moveCursor(0,Math.min(P,v.params[0]||1)):this._moveCursor(0,v.params[0]||1),!0}cursorForward(v){return this._moveCursor(v.params[0]||1,0),!0}cursorBackward(v){return this._moveCursor(-(v.params[0]||1),0),!0}cursorNextLine(v){return this.cursorDown(v),this._activeBuffer.x=0,!0}cursorPrecedingLine(v){return this.cursorUp(v),this._activeBuffer.x=0,!0}cursorCharAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(v){return this._setCursor(v.length>=2?(v.params[1]||1)-1:0,(v.params[0]||1)-1),!0}charPosAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(v){return this._moveCursor(v.params[0]||1,0),!0}linePosAbsolute(v){return this._setCursor(this._activeBuffer.x,(v.params[0]||1)-1),!0}vPositionRelative(v){return this._moveCursor(0,v.params[0]||1),!0}hVPosition(v){return this.cursorPosition(v),!0}tabClear(v){let P=v.params[0];return P===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:P===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=v.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let P=v.params[0];return P===1&&(this._curAttrData.bg|=536870912),P!==2&&P!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,P,R,T=!1,$=!1){let W=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);W.replaceCells(P,R,this._activeBuffer.getNullCell(this._eraseAttrData()),$),T&&(W.isWrapped=!1)}_resetBufferLine(v,P=!1){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);R&&(R.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),P),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),R.isWrapped=!1)}eraseInDisplay(v,P=!1){let R;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);R<this._bufferService.rows;R++)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(R);break;case 1:for(R=this._activeBuffer.y,this._dirtyRowTracker.markDirty(R),this._eraseInBufferLine(R,0,this._activeBuffer.x+1,!0,P),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(R+1).isWrapped=!1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(R=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,R-1);R--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+R)?.getTrimmedLength(););for(;R>=0;R--)this._bufferService.scroll(this._eraseAttrData())}else{for(R=this._bufferService.rows,this._dirtyRowTracker.markDirty(R-1);R--;)this._resetBufferLine(R,P);this._dirtyRowTracker.markDirty(0)}break;case 3:let T=this._activeBuffer.lines.length-this._bufferService.rows;T>0&&(this._activeBuffer.lines.trimStart(T),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-T,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-T,0),this._onScroll.fire(0))}return!0}eraseInLine(v,P=!1){switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,P);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,P)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,$=this._bufferService.rows-1+this._activeBuffer.ybase-T+1;for(;P--;)this._activeBuffer.lines.splice($-1,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(v){this._restrictCursor();let P=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let R=this._activeBuffer.ybase+this._activeBuffer.y,T;for(T=this._bufferService.rows-1-this._activeBuffer.scrollBottom,T=this._bufferService.rows-1+this._activeBuffer.ybase-T;P--;)this._activeBuffer.lines.splice(R,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.insertCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(v){let P=v.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(n.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.insertCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=v.params[0]||1;for(let R=this._activeBuffer.scrollTop;R<=this._activeBuffer.scrollBottom;++R){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);T.deleteCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),T.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(v.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(v){let P=this._parser.precedingJoinState;if(!P)return!0;let R=v.params[0]||1,T=y.UnicodeService.extractWidth(P),$=this._activeBuffer.x-T,W=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString($),H=new Uint32Array(W.length*R),K=0;for(let C=0;C<W.length;){let Q=W.codePointAt(C)||0;H[K++]=Q,C+=Q>65535?2:1}let re=K;for(let C=1;C<R;++C)H.copyWithin(re,0,K),re+=K;return this.print(H,0,re),!0}sendDeviceAttributesPrimary(v){return v.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(v){return v.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(v.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(v){return(this._optionsService.rawOptions.termName+"").indexOf(v)===0}setMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),this._charsetService.setgCharset(1,b.DEFAULT_CHARSET),this._charsetService.setgCharset(2,b.DEFAULT_CHARSET),this._charsetService.setgCharset(3,b.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let P=0;P<v.length;P++)switch(v.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),v.params[P]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(v,P){let R=this._coreService.decPrivateModes,{activeProtocol:T,activeEncoding:$}=this._coreMouseService,W=this._coreService,{buffers:H,cols:K}=this._bufferService,{active:re,alt:C}=H,Q=this._optionsService.rawOptions,Y=le=>le?1:2,J=v.params[0];return ye=J,ve=P?J===2?4:J===4?Y(W.modes.insertMode):J===12?3:J===20?Y(Q.convertEol):0:J===1?Y(R.applicationCursorKeys):J===3?Q.windowOptions.setWinLines?K===80?2:K===132?1:0:0:J===6?Y(R.origin):J===7?Y(R.wraparound):J===8?3:J===9?Y(T==="X10"):J===12?Y(Q.cursorBlink):J===25?Y(!W.isCursorHidden):J===45?Y(R.reverseWraparound):J===66?Y(R.applicationKeypad):J===67?4:J===1e3?Y(T==="VT200"):J===1002?Y(T==="DRAG"):J===1003?Y(T==="ANY"):J===1004?Y(R.sendFocus):J===1005?4:J===1006?Y($==="SGR"):J===1015?4:J===1016?Y($==="SGR_PIXELS"):J===1048?1:J===47||J===1047||J===1049?Y(re===C):J===2004?Y(R.bracketedPasteMode):J===2026?Y(R.synchronizedOutput):0,W.triggerDataEvent(`${a.C0.ESC}[${P?"":"?"}${ye};${ve}$y`),!0;var ye,ve}_updateAttrColor(v,P,R,T,$){return P===2?(v|=50331648,v&=-16777216,v|=u.AttributeData.fromColorRGB([R,T,$])):P===5&&(v&=-50331904,v|=33554432|255&R),v}_extractColor(v,P,R){let T=[0,0,-1,0,0,0],$=0,W=0;do{if(T[W+$]=v.params[P+W],v.hasSubParams(P+W)){let H=v.getSubParams(P+W),K=0;do T[1]===5&&($=1),T[W+K+1+$]=H[K];while(++K<H.length&&K+W+1+$<T.length);break}if(T[1]===5&&W+$>=2||T[1]===2&&W+$>=5)break;T[1]&&($=1)}while(++W+P<v.length&&W+$<T.length);for(let H=2;H<T.length;++H)T[H]===-1&&(T[H]=0);switch(T[0]){case 38:R.fg=this._updateAttrColor(R.fg,T[1],T[3],T[4],T[5]);break;case 48:R.bg=this._updateAttrColor(R.bg,T[1],T[3],T[4],T[5]);break;case 58:R.extended=R.extended.clone(),R.extended.underlineColor=this._updateAttrColor(R.extended.underlineColor,T[1],T[3],T[4],T[5])}return W}_processUnderline(v,P){P.extended=P.extended.clone(),(!~v||v>5)&&(v=1),P.extended.underlineStyle=v,P.fg|=268435456,v===0&&(P.fg&=-268435457),P.updateExtended()}_processSGR0(v){v.fg=n.DEFAULT_ATTR_DATA.fg,v.bg=n.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let P=v.length,R,T=this._curAttrData;for(let $=0;$<P;$++)R=v.params[$],R>=30&&R<=37?(T.fg&=-50331904,T.fg|=16777216|R-30):R>=40&&R<=47?(T.bg&=-50331904,T.bg|=16777216|R-40):R>=90&&R<=97?(T.fg&=-50331904,T.fg|=16777224|R-90):R>=100&&R<=107?(T.bg&=-50331904,T.bg|=16777224|R-100):R===0?this._processSGR0(T):R===1?T.fg|=134217728:R===3?T.bg|=67108864:R===4?(T.fg|=268435456,this._processUnderline(v.hasSubParams($)?v.getSubParams($)[0]:1,T)):R===5?T.fg|=536870912:R===7?T.fg|=67108864:R===8?T.fg|=1073741824:R===9?T.fg|=2147483648:R===2?T.bg|=134217728:R===21?this._processUnderline(2,T):R===22?(T.fg&=-134217729,T.bg&=-134217729):R===23?T.bg&=-67108865:R===24?(T.fg&=-268435457,this._processUnderline(0,T)):R===25?T.fg&=-536870913:R===27?T.fg&=-67108865:R===28?T.fg&=-1073741825:R===29?T.fg&=2147483647:R===39?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg):R===49?(T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):R===38||R===48||R===58?$+=this._extractColor(v,$,T):R===53?T.bg|=1073741824:R===55?T.bg&=-1073741825:R===59?(T.extended=T.extended.clone(),T.extended.underlineColor=-1,T.updateExtended()):R===100?(T.fg&=-67108864,T.fg|=16777215&n.DEFAULT_ATTR_DATA.fg,T.bg&=-67108864,T.bg|=16777215&n.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",R);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${P};${R}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let P=this._activeBuffer.y+1,R=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${P};${R}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let P=v.length===0?1:v.params[0];if(P===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(P){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let R=P%2==1;this._coreService.decPrivateModes.cursorBlink=R}return!0}setScrollRegion(v){let P=v.params[0]||1,R;return(v.length<2||(R=v.params[1])>this._bufferService.rows||R===0)&&(R=this._bufferService.rows),R>P&&(this._activeBuffer.scrollTop=P-1,this._activeBuffer.scrollBottom=R-1,this._setCursor(0,0)),!0}windowOptions(v){if(!A(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let P=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:P!==2&&this._onRequestWindowsOptionsReport.fire(E.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(E.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:P!==0&&P!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),P!==0&&P!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:P!==0&&P!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),P!==0&&P!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(v){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(v){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(v){return this._windowTitle=v,this._onTitleChange.fire(v),!0}setIconName(v){return this._iconName=v,!0}setOrReportIndexedColor(v){let P=[],R=v.split(";");for(;R.length>1;){let T=R.shift(),$=R.shift();if(/^\d+$/.exec(T)){let W=parseInt(T);if(G(W))if($==="?")P.push({type:0,index:W});else{let H=(0,x.parseColor)($);H&&P.push({type:1,index:W,color:H})}}}return P.length&&this._onColor.fire(P),!0}setHyperlink(v){let P=v.indexOf(";");if(P===-1)return!0;let R=v.slice(0,P).trim(),T=v.slice(P+1);return T?this._createHyperlink(R,T):!R.trim()&&this._finishHyperlink()}_createHyperlink(v,P){this._getCurrentLinkId()&&this._finishHyperlink();let R=v.split(":"),T,$=R.findIndex((W=>W.startsWith("id=")));return $!==-1&&(T=R[$].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:T,uri:P}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,P){let R=v.split(";");for(let T=0;T<R.length&&!(P>=this._specialColors.length);++T,++P)if(R[T]==="?")this._onColor.fire([{type:0,index:this._specialColors[P]}]);else{let $=(0,x.parseColor)(R[T]);$&&this._onColor.fire([{type:1,index:this._specialColors[P],color:$}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let P=[],R=v.split(";");for(let T=0;T<R.length;++T)if(/^\d+$/.exec(R[T])){let $=parseInt(R[T]);G($)&&P.push({type:2,index:$})}return P.length&&this._onColor.fire(P),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,b.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset(F[v[0]],b.CHARSETS[v[1]]||b.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=n.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=n.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new f.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let P=0;P<this._bufferService.rows;++P){let R=this._activeBuffer.ybase+this._activeBuffer.y+P,T=this._activeBuffer.lines.get(R);T&&(T.fill(v),T.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,P){let R=this._bufferService.buffer,T=this._optionsService.rawOptions;return($=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${$}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${R.scrollTop+1};${R.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[T.cursorStyle]-(T.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,P){this._dirtyRowTracker.markRangeDirty(v,P)}}i.InputHandler=z;let V=class{constructor(B){this._bufferService=B,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(B){B<this.start?this.start=B:B>this.end&&(this.end=B)}markRangeDirty(B,v){B>v&&(U=B,B=v,v=U),B<this.start&&(this.start=B),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function G(B){return 0<=B&&B<256}V=d([_(0,h.IBufferService)],V)},701:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.getSafariVersion=function(){if(!i.isSafari)return 0;let _=c.match(/Version\/(\d+)/);return _===null||_.length<2?0:parseInt(_[1])},i.isNode=typeof process<"u"&&"title"in process;let c=i.isNode?"node":navigator.userAgent,d=i.isNode?"node":navigator.platform;i.isFirefox=c.includes("Firefox"),i.isLegacyEdge=c.includes("Edge"),i.isSafari=/^((?!chrome|android).)*safari/i.test(c),i.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),i.isIpad=d==="iPad",i.isIphone=d==="iPhone",i.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),i.isLinux=d.indexOf("Linux")>=0,i.isChromeOS=/\bCrOS\b/.test(c)},6168:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;let d=c(701);class _{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let m=0,w=0,n=l.timeRemaining(),g=0;for(;this._i<this._tasks.length;){if(m=performance.now(),this._tasks[this._i]()||this._i++,m=Math.max(1,performance.now()-m),w=Math.max(m,w),g=l.timeRemaining(),1.5*w>g)return n-m<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n-m))}ms`),void this._start();n=g}this.clear()}}class a extends _{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let m=performance.now()+l;return{timeRemaining:()=>Math.max(0,m-performance.now())}}}i.PriorityTaskQueue=a,i.IdleTaskQueue=!d.isNode&&"requestIdleCallback"in window?class extends _{_requestCallback(b){return requestIdleCallback(b)}_cancelCallback(b){cancelIdleCallback(b)}}:a,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(b){this._queue.clear(),this._queue.enqueue(b)}flush(){this._queue.flush()}}},5882:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.updateWindowsModeWrappedState=function(_){let a=_.buffer.lines.get(_.buffer.ybase+_.buffer.y-1),b=a?.get(_.cols-1),l=_.buffer.lines.get(_.buffer.ybase+_.buffer.y);l&&b&&(l.isWrapped=b[d.CHAR_DATA_CODE_INDEX]!==d.NULL_CELL_CODE&&b[d.CHAR_DATA_CODE_INDEX]!==d.WHITESPACE_CELL_CODE)};let d=c(8938)},5451:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class c{constructor(){this.fg=0,this.bg=0,this.extended=new d}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new c;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=c;class d{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,b=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=b}clone(){return new d(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=d},1073:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;let d=c(5639),_=c(6168),a=c(5451),b=c(6107),l=c(732),m=c(3055),w=c(8938),n=c(8158),g=c(6760);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(f,u,h){this._hasScrollback=f,this._optionsService=u,this._bufferService=h,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=b.DEFAULT_ATTR_DATA.clone(),this.savedCharset=g.DEFAULT_CHARSET,this.markers=[],this._nullCell=m.CellData.fromCharData([0,w.NULL_CELL_CHAR,w.NULL_CELL_WIDTH,w.NULL_CELL_CODE]),this._whitespaceCell=m.CellData.fromCharData([0,w.WHITESPACE_CELL_CHAR,w.WHITESPACE_CELL_WIDTH,w.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new _.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(f){return f?(this._nullCell.fg=f.fg,this._nullCell.bg=f.bg,this._nullCell.extended=f.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(f){return f?(this._whitespaceCell.fg=f.fg,this._whitespaceCell.bg=f.bg,this._whitespaceCell.extended=f.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(f,u){return new b.BufferLine(this._bufferService.cols,this.getNullCell(f),u)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let f=this.ybase+this.y-this.ydisp;return f>=0&&f<this._rows}_getCorrectBufferLength(f){if(!this._hasScrollback)return f;let u=f+this._optionsService.rawOptions.scrollback;return u>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:u}fillViewportRows(f){if(this.lines.length===0){f===void 0&&(f=b.DEFAULT_ATTR_DATA);let u=this._rows;for(;u--;)this.lines.push(this.getBlankLine(f))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new d.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(f,u){let h=this.getNullCell(b.DEFAULT_ATTR_DATA),y=0,S=this._getCorrectBufferLength(u);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<f)for(let x=0;x<this.lines.length;x++)y+=+this.lines.get(x).resize(f,h);let I=0;if(this._rows<u)for(let x=this._rows;x<u;x++)this.lines.length<u+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new b.BufferLine(f,h)):this.ybase>0&&this.lines.length<=this.ybase+this.y+I+1?(this.ybase--,I++,this.ydisp>0&&this.ydisp--):this.lines.push(new b.BufferLine(f,h)));else for(let x=this._rows;x>u;x--)this.lines.length>u+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let x=this.lines.length-S;x>0&&(this.lines.trimStart(x),this.ybase=Math.max(this.ybase-x,0),this.ydisp=Math.max(this.ydisp-x,0),this.savedY=Math.max(this.savedY-x,0)),this.lines.maxLength=S}this.x=Math.min(this.x,f-1),this.y=Math.min(this.y,u-1),I&&(this.y+=I),this.savedX=Math.min(this.savedX,f-1),this.scrollTop=0}if(this.scrollBottom=u-1,this._isReflowEnabled&&(this._reflow(f,u),this._cols>f))for(let I=0;I<this.lines.length;I++)y+=+this.lines.get(I).resize(f,h);this._cols=f,this._rows=u,this._memoryCleanupQueue.clear(),y>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let f=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,f=!1);let u=0;for(;this._memoryCleanupPosition<this.lines.length;)if(u+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),u>100)return!0;return f}get _isReflowEnabled(){let f=this._optionsService.rawOptions.windowsPty;return f&&f.buildNumber?this._hasScrollback&&f.backend==="conpty"&&f.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(f,u){this._cols!==f&&(f>this._cols?this._reflowLarger(f,u):this._reflowSmaller(f,u))}_reflowLarger(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,f,this.ybase+this.y,this.getNullCell(b.DEFAULT_ATTR_DATA),h);if(y.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,y);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(f,u,S.countRemoved)}}_reflowLargerAdjustViewport(f,u,h){let y=this.getNullCell(b.DEFAULT_ATTR_DATA),S=h;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<u&&this.lines.push(new b.BufferLine(f,y))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-h,0)}_reflowSmaller(f,u){let h=this._optionsService.rawOptions.reflowCursorLine,y=this.getNullCell(b.DEFAULT_ATTR_DATA),S=[],I=0;for(let x=this.lines.length-1;x>=0;x--){let N=this.lines.get(x);if(!N||!N.isWrapped&&N.getTrimmedLength()<=f)continue;let F=[N];for(;N.isWrapped&&x>0;)N=this.lines.get(--x),F.unshift(N);if(!h){let R=this.ybase+this.y;if(R>=x&&R<x+F.length)continue}let D=F[F.length-1].getTrimmedLength(),A=(0,l.reflowSmallerGetNewLineLengths)(F,this._cols,f),E=A.length-F.length,U;U=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+E):Math.max(0,this.lines.length-this.lines.maxLength+E);let z=[];for(let R=0;R<E;R++){let T=this.getBlankLine(b.DEFAULT_ATTR_DATA,!0);z.push(T)}z.length>0&&(S.push({start:x+F.length+I,newLines:z}),I+=z.length),F.push(...z);let V=A.length-1,G=A[V];G===0&&(V--,G=A[V]);let B=F.length-E-1,v=D;for(;B>=0;){let R=Math.min(v,G);if(F[V]===void 0)break;if(F[V].copyCellsFrom(F[B],v-R,G-R,R,!0),G-=R,G===0&&(V--,G=A[V]),v-=R,v===0){B--;let T=Math.max(B,0);v=(0,l.getWrappedLineTrimmedLength)(F,T,this._cols)}}for(let R=0;R<F.length;R++)A[R]<f&&F[R].setCell(A[R],y);let P=E-U;for(;P-- >0;)this.ybase===0?this.y<u-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+I)-u&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+E,this.ybase+u-1)}if(S.length>0){let x=[],N=[];for(let G=0;G<this.lines.length;G++)N.push(this.lines.get(G));let F=this.lines.length,D=F-1,A=0,E=S[A];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+I);let U=0;for(let G=Math.min(this.lines.maxLength-1,F+I-1);G>=0;G--)if(E&&E.start>D+U){for(let B=E.newLines.length-1;B>=0;B--)this.lines.set(G--,E.newLines[B]);G++,x.push({index:D+1,amount:E.newLines.length}),U+=E.newLines.length,E=S[++A]}else this.lines.set(G,N[D--]);let z=0;for(let G=x.length-1;G>=0;G--)x[G].index+=z,this.lines.onInsertEmitter.fire(x[G]),z+=x[G].amount;let V=Math.max(0,F+I-this.lines.maxLength);V>0&&this.lines.onTrimEmitter.fire(V)}}translateBufferLineToString(f,u,h=0,y){let S=this.lines.get(f);return S?S.translateToString(u,h,y):""}getWrappedRangeForLine(f){let u=f,h=f;for(;u>0&&this.lines.get(u).isWrapped;)u--;for(;h+1<this.lines.length&&this.lines.get(h+1).isWrapped;)h++;return{first:u,last:h}}setupTabStops(f){for(f!=null?this.tabs[f]||(f=this.prevStop(f)):(this.tabs={},f=0);f<this._cols;f+=this._optionsService.rawOptions.tabStopWidth)this.tabs[f]=!0}prevStop(f){for(f==null&&(f=this.x);!this.tabs[--f]&&f>0;);return f>=this._cols?this._cols-1:f<0?0:f}nextStop(f){for(f==null&&(f=this.x);!this.tabs[++f]&&f<this._cols;);return f>=this._cols?this._cols-1:f<0?0:f}clearMarkers(f){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].line===f&&(this.markers[u].dispose(),this.markers.splice(u--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let f=0;f<this.markers.length;f++)this.markers[f].dispose();this.markers.length=0,this._isClearing=!1}addMarker(f){let u=new n.Marker(f);return this.markers.push(u),u.register(this.lines.onTrim((h=>{u.line-=h,u.line<0&&u.dispose()}))),u.register(this.lines.onInsert((h=>{u.line>=h.index&&(u.line+=h.amount)}))),u.register(this.lines.onDelete((h=>{u.line>=h.index&&u.line<h.index+h.amount&&u.dispose(),u.line>h.index&&(u.line-=h.amount)}))),u.register(u.onDispose((()=>this._removeMarker(u)))),u}_removeMarker(f){this._isClearing||this.markers.splice(this.markers.indexOf(f),1)}}},6107:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;let d=c(5451),_=c(3055),a=c(8938),b=c(726);i.DEFAULT_ATTR_DATA=Object.freeze(new d.AttributeData);let l=0;class m{constructor(n,g,f=!1){this.isWrapped=f,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*n);let u=g||_.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let h=0;h<n;++h)this.setCell(h,u);this.length=n}get(n){let g=this._data[3*n+0],f=2097151&g;return[this._data[3*n+1],2097152&g?this._combined[n]:f?(0,b.stringFromCodePoint)(f):"",g>>22,2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):f]}set(n,g){this._data[3*n+1]=g[a.CHAR_DATA_ATTR_INDEX],g[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[n]=g[1],this._data[3*n+0]=2097152|n|g[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*n+0]=g[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(n){return this._data[3*n+0]>>22}hasWidth(n){return 12582912&this._data[3*n+0]}getFg(n){return this._data[3*n+1]}getBg(n){return this._data[3*n+2]}hasContent(n){return 4194303&this._data[3*n+0]}getCodePoint(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n].charCodeAt(this._combined[n].length-1):2097151&g}isCombined(n){return 2097152&this._data[3*n+0]}getString(n){let g=this._data[3*n+0];return 2097152&g?this._combined[n]:2097151&g?(0,b.stringFromCodePoint)(2097151&g):""}isProtected(n){return 536870912&this._data[3*n+2]}loadCell(n,g){return l=3*n,g.content=this._data[l+0],g.fg=this._data[l+1],g.bg=this._data[l+2],2097152&g.content&&(g.combinedData=this._combined[n]),268435456&g.bg&&(g.extended=this._extendedAttrs[n]),g}setCell(n,g){2097152&g.content&&(this._combined[n]=g.combinedData),268435456&g.bg&&(this._extendedAttrs[n]=g.extended),this._data[3*n+0]=g.content,this._data[3*n+1]=g.fg,this._data[3*n+2]=g.bg}setCellFromCodepoint(n,g,f,u){268435456&u.bg&&(this._extendedAttrs[n]=u.extended),this._data[3*n+0]=g|f<<22,this._data[3*n+1]=u.fg,this._data[3*n+2]=u.bg}addCodepointToCell(n,g,f){let u=this._data[3*n+0];2097152&u?this._combined[n]+=(0,b.stringFromCodePoint)(g):2097151&u?(this._combined[n]=(0,b.stringFromCodePoint)(2097151&u)+(0,b.stringFromCodePoint)(g),u&=-2097152,u|=2097152):u=g|4194304,f&&(u&=-12582913,u|=f<<22),this._data[3*n+0]=u}insertCells(n,g,f){if((n%=this.length)&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length-n){let u=new _.CellData;for(let h=this.length-n-g-1;h>=0;--h)this.setCell(n+g+h,this.loadCell(n+h,u));for(let h=0;h<g;++h)this.setCell(n+h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,f)}deleteCells(n,g,f){if(n%=this.length,g<this.length-n){let u=new _.CellData;for(let h=0;h<this.length-n-g;++h)this.setCell(n+h,this.loadCell(n+g+h,u));for(let h=this.length-g;h<this.length;++h)this.setCell(h,f)}else for(let u=n;u<this.length;++u)this.setCell(u,f);n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),this.getWidth(n)!==0||this.hasContent(n)||this.setCellFromCodepoint(n,0,1,f)}replaceCells(n,g,f,u=!1){if(u)for(n&&this.getWidth(n-1)===2&&!this.isProtected(n-1)&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&!this.isProtected(g)&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.isProtected(n)||this.setCell(n,f),n++;else for(n&&this.getWidth(n-1)===2&&this.setCellFromCodepoint(n-1,0,1,f),g<this.length&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g,0,1,f);n<g&&n<this.length;)this.setCell(n++,f)}resize(n,g){if(n===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let f=3*n;if(n>this.length){if(this._data.buffer.byteLength>=4*f)this._data=new Uint32Array(this._data.buffer,0,f);else{let u=new Uint32Array(f);u.set(this._data),this._data=u}for(let u=this.length;u<n;++u)this.setCell(u,g)}else{this._data=this._data.subarray(0,f);let u=Object.keys(this._combined);for(let y=0;y<u.length;y++){let S=parseInt(u[y],10);S>=n&&delete this._combined[S]}let h=Object.keys(this._extendedAttrs);for(let y=0;y<h.length;y++){let S=parseInt(h[y],10);S>=n&&delete this._extendedAttrs[S]}}return this.length=n,4*f*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let n=new Uint32Array(this._data.length);return n.set(this._data),this._data=n,1}return 0}fill(n,g=!1){if(g)for(let f=0;f<this.length;++f)this.isProtected(f)||this.setCell(f,n);else{this._combined={},this._extendedAttrs={};for(let f=0;f<this.length;++f)this.setCell(f,n)}}copyFrom(n){this.length!==n.length?this._data=new Uint32Array(n._data):this._data.set(n._data),this.length=n.length,this._combined={};for(let g in n._combined)this._combined[g]=n._combined[g];this._extendedAttrs={};for(let g in n._extendedAttrs)this._extendedAttrs[g]=n._extendedAttrs[g];this.isWrapped=n.isWrapped}clone(){let n=new m(0);n._data=new Uint32Array(this._data),n.length=this.length;for(let g in this._combined)n._combined[g]=this._combined[g];for(let g in this._extendedAttrs)n._extendedAttrs[g]=this._extendedAttrs[g];return n.isWrapped=this.isWrapped,n}getTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0])return n+(this._data[3*n+0]>>22);return 0}getNoBgTrimmedLength(){for(let n=this.length-1;n>=0;--n)if(4194303&this._data[3*n+0]||50331648&this._data[3*n+2])return n+(this._data[3*n+0]>>22);return 0}copyCellsFrom(n,g,f,u,h){let y=n._data;if(h)for(let I=u-1;I>=0;I--){for(let x=0;x<3;x++)this._data[3*(f+I)+x]=y[3*(g+I)+x];268435456&y[3*(g+I)+2]&&(this._extendedAttrs[f+I]=n._extendedAttrs[g+I])}else for(let I=0;I<u;I++){for(let x=0;x<3;x++)this._data[3*(f+I)+x]=y[3*(g+I)+x];268435456&y[3*(g+I)+2]&&(this._extendedAttrs[f+I]=n._extendedAttrs[g+I])}let S=Object.keys(n._combined);for(let I=0;I<S.length;I++){let x=parseInt(S[I],10);x>=g&&(this._combined[x-g+f]=n._combined[x])}}translateToString(n,g,f,u){g=g??0,f=f??this.length,n&&(f=Math.min(f,this.getTrimmedLength())),u&&(u.length=0);let h="";for(;g<f;){let y=this._data[3*g+0],S=2097151&y,I=2097152&y?this._combined[g]:S?(0,b.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(h+=I,u)for(let x=0;x<I.length;++x)u.push(g);g+=y>>22||1}return u&&u.push(g),h}}i.BufferLine=m},732:(k,i)=>{function c(d,_,a){if(_===d.length-1)return d[_].getTrimmedLength();let b=!d[_].hasContent(a-1)&&d[_].getWidth(a-1)===1,l=d[_+1].getWidth(0)===2;return b&&l?a-1:a}Object.defineProperty(i,"__esModule",{value:!0}),i.reflowLargerGetLinesToRemove=function(d,_,a,b,l,m){let w=[];for(let n=0;n<d.length-1;n++){let g=n,f=d.get(++g);if(!f.isWrapped)continue;let u=[d.get(n)];for(;g<d.length&&f.isWrapped;)u.push(f),f=d.get(++g);if(!m&&b>=n&&b<g){n+=u.length-1;continue}let h=0,y=c(u,h,_),S=1,I=0;for(;S<u.length;){let N=c(u,S,_),F=N-I,D=a-y,A=Math.min(F,D);u[h].copyCellsFrom(u[S],I,y,A,!1),y+=A,y===a&&(h++,y=0),I+=A,I===N&&(S++,I=0),y===0&&h!==0&&u[h-1].getWidth(a-1)===2&&(u[h].copyCellsFrom(u[h-1],a-1,y++,1,!1),u[h-1].setCell(a-1,l))}u[h].replaceCells(y,a,l);let x=0;for(let N=u.length-1;N>0&&(N>h||u[N].getTrimmedLength()===0);N--)x++;x>0&&(w.push(n+u.length-x),w.push(x)),n+=u.length-1}return w},i.reflowLargerCreateNewLayout=function(d,_){let a=[],b=0,l=_[b],m=0;for(let w=0;w<d.length;w++)if(l===w){let n=_[++b];d.onDeleteEmitter.fire({index:w-m,amount:n}),w+=n-1,m+=n,l=_[++b]}else a.push(w);return{layout:a,countRemoved:m}},i.reflowLargerApplyNewLayout=function(d,_){let a=[];for(let b=0;b<_.length;b++)a.push(d.get(_[b]));for(let b=0;b<a.length;b++)d.set(b,a[b]);d.length=_.length},i.reflowSmallerGetNewLineLengths=function(d,_,a){let b=[],l=d.map(((g,f)=>c(d,f,_))).reduce(((g,f)=>g+f)),m=0,w=0,n=0;for(;n<l;){if(l-n<a){b.push(l-n);break}m+=a;let g=c(d,w,_);m>g&&(m-=g,w++);let f=d[w].getWidth(m-1)===2;f&&m--;let u=f?a-1:a;b.push(u),n+=u}return b},i.getWrappedLineTrimmedLength=c},4097:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferSet=void 0;let d=c(7150),_=c(1073),a=c(802);class b extends d.Disposable{constructor(m,w){super(),this._optionsService=m,this._bufferService=w,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(m){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(m),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(m,w){this._normal.resize(m,w),this._alt.resize(m,w),this.setupTabStops(m)}setupTabStops(m){this._normal.setupTabStops(m),this._alt.setupTabStops(m)}}i.BufferSet=b},3055:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CellData=void 0;let d=c(726),_=c(8938),a=c(5451);class b extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(m){let w=new b;return w.setFromCharData(m),w}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,d.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(m){this.fg=m[_.CHAR_DATA_ATTR_INDEX],this.bg=0;let w=!1;if(m[_.CHAR_DATA_CHAR_INDEX].length>2)w=!0;else if(m[_.CHAR_DATA_CHAR_INDEX].length===2){let n=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=n&&n<=56319){let g=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=g&&g<=57343?this.content=1024*(n-55296)+g-56320+65536|m[_.CHAR_DATA_WIDTH_INDEX]<<22:w=!0}else w=!0}else this.content=m[_.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[_.CHAR_DATA_WIDTH_INDEX]<<22;w&&(this.combinedData=m[_.CHAR_DATA_CHAR_INDEX],this.content=2097152|m[_.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=b},8938:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=i.DEFAULT_COLOR<<9|256,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR="",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=" ",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},8158:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Marker=void 0;let d=c(802),_=c(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new d.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,_.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}i.Marker=a,a._nextId=1},6760:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},i.CHARSETS.A={"#":"\xA3"},i.CHARSETS.B=void 0,i.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},i.CHARSETS.C=i.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},i.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},i.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},i.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},i.CHARSETS.E=i.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},i.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},i.CHARSETS.H=i.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},i.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(k,i)=>{var c,d,_;Object.defineProperty(i,"__esModule",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
+
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(c||(i.C0=c={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(d||(i.C1=d={})),(function(a){a.ST=`${c.ESC}\\`})(_||(i.C1_ESCAPED=_={}))},726:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=void 0,i.stringFromCodePoint=function(c){return c>65535?(c-=65536,String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):String.fromCharCode(c)},i.utf32ToString=function(c,d=0,_=c.length){let a="";for(let b=d;b<_;++b){let l=c[b];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(c,d){let _=c.length;if(!_)return 0;let a=0,b=0;if(this._interim){let l=c.charCodeAt(b++);56320<=l&&l<=57343?d[a++]=1024*(this._interim-55296)+l-56320+65536:(d[a++]=this._interim,d[a++]=l),this._interim=0}for(let l=b;l<_;++l){let m=c.charCodeAt(l);if(55296<=m&&m<=56319){if(++l>=_)return this._interim=m,a;let w=c.charCodeAt(l);56320<=w&&w<=57343?d[a++]=1024*(m-55296)+w-56320+65536:(d[a++]=m,d[a++]=w)}else m!==65279&&(d[a++]=m)}return a}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(c,d){let _=c.length;if(!_)return 0;let a,b,l,m,w=0,n=0,g=0;if(this.interim[0]){let h=!1,y=this.interim[0];y&=(224&y)==192?31:(240&y)==224?15:7;let S,I=0;for(;(S=63&this.interim[++I])&&I<4;)y<<=6,y|=S;let x=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=x-I;for(;g<N;){if(g>=_)return 0;if(S=c[g++],(192&S)!=128){g--,h=!0;break}this.interim[I++]=S,y<<=6,y|=63&S}h||(x===2?y<128?g--:d[w++]=y:x===3?y<2048||y>=55296&&y<=57343||y===65279||(d[w++]=y):y<65536||y>1114111||(d[w++]=y)),this.interim.fill(0)}let f=_-4,u=g;for(;u<_;){for(;!(!(u<f)||128&(a=c[u])||128&(b=c[u+1])||128&(l=c[u+2])||128&(m=c[u+3]));)d[w++]=a,d[w++]=b,d[w++]=l,d[w++]=m,u+=4;if(a=c[u++],a<128)d[w++]=a;else if((224&a)==192){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(n=(31&a)<<6|63&b,n<128){u--;continue}d[w++]=n}else if((240&a)==224){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(n=(15&a)<<12|(63&b)<<6|63&l,n<2048||n>=55296&&n<=57343||n===65279)continue;d[w++]=n}else if((248&a)==240){if(u>=_)return this.interim[0]=a,w;if(b=c[u++],(192&b)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,w;if(l=c[u++],(192&l)!=128){u--;continue}if(u>=_)return this.interim[0]=a,this.interim[1]=b,this.interim[2]=l,w;if(m=c[u++],(192&m)!=128){u--;continue}if(n=(7&a)<<18|(63&b)<<12|(63&l)<<6|63&m,n<65536||n>1114111)continue;d[w++]=n}}return w}}},7428:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeV6=void 0;let d=c(6415),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],b;i.UnicodeV6=class{constructor(){if(this.version="6",!b){b=new Uint8Array(65536),b.fill(1),b[0]=0,b.fill(0,1,32),b.fill(0,127,160),b.fill(2,4352,4448),b[9001]=2,b[9002]=2,b.fill(2,11904,42192),b[12351]=1,b.fill(2,44032,55204),b.fill(2,63744,64256),b.fill(2,65040,65050),b.fill(2,65072,65136),b.fill(2,65280,65377),b.fill(2,65504,65511);for(let l=0;l<_.length;++l)b.fill(0,_[l][0],_[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?b[l]:(function(m,w){let n,g=0,f=w.length-1;if(m<w[0][0]||m>w[f][1])return!1;for(;f>=g;)if(n=g+f>>1,m>w[n][1])g=n+1;else{if(!(m<w[n][0]))return!0;f=n-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,m){let w=this.wcwidth(l),n=w===0&&m!==0;if(n){let g=d.UnicodeService.extractWidth(m);g===0?n=!1:g>w&&(w=g)}return d.UnicodeService.createPropertyValue(0,w,n)}}},3562:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.WriteBuffer=void 0;let d=c(7150),_=c(802);class a extends d.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new _.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,m){if(m!==void 0&&this._syncCalls>m)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let w;for(this._isSyncWriting=!0;w=this._writeBuffer.shift();){this._action(w);let n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,m){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(m)}_innerWrite(l=0,m=!0){let w=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let n=this._writeBuffer[this._bufferOffset],g=this._action(n,m);if(g){let u=h=>performance.now()-w>=12?setTimeout((()=>this._innerWrite(0,h))):this._innerWrite(w,h);return void g.catch((h=>(queueMicrotask((()=>{throw h})),Promise.resolve(!1)))).then(u)}let f=this._callbacks[this._bufferOffset];if(f&&f(),this._bufferOffset++,this._pendingData-=n.length,performance.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=a},8693:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.parseColor=function(a){if(!a)return;let b=a.toLowerCase();if(b.indexOf("rgb:")===0){b=b.slice(4);let l=c.exec(b);if(l){let m=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/m*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/m*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/m*255)]}}else if(b.indexOf("#")===0&&(b=b.slice(1),d.exec(b)&&[3,6,9,12].includes(b.length))){let l=b.length/3,m=[0,0,0];for(let w=0;w<3;++w){let n=parseInt(b.slice(l*w,l*w+l),16);m[w]=l===1?n<<4:l===2?n:l===3?n>>4:n>>8}return m}},i.toRgbString=function(a,b=16){let[l,m,w]=a;return`rgb:${_(l,b)}/${_(m,b)}/${_(w,b)}`};let c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,d=/^[\da-f]+$/;function _(a,b){let l=a.toString(16),m=l.length<2?"0"+l:l;switch(b){case 4:return l[0];case 8:return m;case 12:return(m+m).slice(0,3);default:return m+m}}},1263:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},9823:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DcsHandler=i.DcsParser=void 0;let d=c(726),_=c(7262),a=c(1263),b=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=b,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=b}registerHandler(m,w){this._handlers[m]===void 0&&(this._handlers[m]=[]);let n=this._handlers[m];return n.push(w),{dispose:()=>{let g=n.indexOf(w);g!==-1&&n.splice(g,1)}}}clearHandler(m){this._handlers[m]&&delete this._handlers[m]}setHandlerFallback(m){this._handlerFb=m}reset(){if(this._active.length)for(let m=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;m>=0;--m)this._active[m].unhook(!1);this._stack.paused=!1,this._active=b,this._ident=0}hook(m,w){if(this.reset(),this._ident=m,this._active=this._handlers[m]||b,this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].hook(w);else this._handlerFb(this._ident,"HOOK",w)}put(m,w,n){if(this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].put(m,w,n);else this._handlerFb(this._ident,"PUT",(0,d.utf32ToString)(m,w,n))}unhook(m,w=!0){if(this._active.length){let n=!1,g=this._active.length-1,f=!1;if(this._stack.paused&&(g=this._stack.loopPosition-1,n=w,f=this._stack.fallThrough,this._stack.paused=!1),!f&&n===!1){for(;g>=0&&(n=this._active[g].unhook(m),n!==!0);g--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!1,n;g--}for(;g>=0;g--)if(n=this._active[g].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=g,this._stack.fallThrough=!0,n}else this._handlerFb(this._ident,"UNHOOK",m);this._active=b,this._ident=0}};let l=new _.Params;l.addParam(0),i.DcsHandler=class{constructor(m){this._handler=m,this._data="",this._params=l,this._hitLimit=!1}hook(m){this._params=m.length>1||m.params[0]?m.clone():l,this._data="",this._hitLimit=!1}put(m,w,n){this._hitLimit||(this._data+=(0,d.utf32ToString)(m,w,n),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(m){let w=!1;if(this._hitLimit)w=!1;else if(m&&(w=this._handler(this._data,this._params),w instanceof Promise))return w.then((n=>(this._params=l,this._data="",this._hitLimit=!1,n)));return this._params=l,this._data="",this._hitLimit=!1,w}}},6717:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;let d=c(7150),_=c(7262),a=c(1346),b=c(9823);class l{constructor(g){this.table=new Uint8Array(g)}setDefault(g,f){this.table.fill(g<<4|f)}add(g,f,u,h){this.table[f<<8|g]=u<<4|h}addMany(g,f,u,h){for(let y=0;y<g.length;y++)this.table[f<<8|g[y]]=u<<4|h}}i.TransitionTable=l;let m=160;i.VT500_TRANSITION_TABLE=(function(){let n=new l(4095),g=Array.apply(null,Array(256)).map(((I,x)=>x)),f=(I,x)=>g.slice(I,x),u=f(32,127),h=f(0,24);h.push(25),h.push.apply(h,f(28,32));let y=f(0,14),S;for(S in n.setDefault(1,0),n.addMany(u,0,2,0),y)n.addMany([24,26,153,154],S,3,0),n.addMany(f(128,144),S,3,0),n.addMany(f(144,152),S,3,0),n.add(156,S,0,0),n.add(27,S,11,1),n.add(157,S,4,8),n.addMany([152,158,159],S,0,7),n.add(155,S,11,3),n.add(144,S,11,9);return n.addMany(h,0,3,0),n.addMany(h,1,3,1),n.add(127,1,0,1),n.addMany(h,8,0,8),n.addMany(h,3,3,3),n.add(127,3,0,3),n.addMany(h,4,3,4),n.add(127,4,0,4),n.addMany(h,6,3,6),n.addMany(h,5,3,5),n.add(127,5,0,5),n.addMany(h,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(u,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(f(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(u,7,0,7),n.addMany(h,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(f(64,127),3,7,0),n.addMany(f(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(f(48,60),4,8,4),n.addMany(f(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(f(32,64),6,0,6),n.add(127,6,0,6),n.addMany(f(64,127),6,0,0),n.addMany(f(32,48),3,9,5),n.addMany(f(32,48),5,9,5),n.addMany(f(48,64),5,0,6),n.addMany(f(64,127),5,7,0),n.addMany(f(32,48),4,9,5),n.addMany(f(32,48),1,9,2),n.addMany(f(32,48),2,9,2),n.addMany(f(48,127),2,10,0),n.addMany(f(48,80),1,10,0),n.addMany(f(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(f(96,127),1,10,0),n.add(80,1,11,9),n.addMany(h,9,0,9),n.add(127,9,0,9),n.addMany(f(28,32),9,0,9),n.addMany(f(32,48),9,9,12),n.addMany(f(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(h,11,0,11),n.addMany(f(32,128),11,0,11),n.addMany(f(28,32),11,0,11),n.addMany(h,10,0,10),n.add(127,10,0,10),n.addMany(f(28,32),10,0,10),n.addMany(f(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(f(32,48),10,9,12),n.addMany(h,12,0,12),n.add(127,12,0,12),n.addMany(f(28,32),12,0,12),n.addMany(f(32,48),12,9,12),n.addMany(f(48,64),12,0,11),n.addMany(f(64,127),12,12,13),n.addMany(f(64,127),10,12,13),n.addMany(f(64,127),9,12,13),n.addMany(h,13,13,13),n.addMany(u,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(m,0,2,0),n.add(m,8,5,8),n.add(m,6,0,6),n.add(m,11,0,11),n.add(m,13,13,13),n})();class w extends d.Disposable{constructor(g=i.VT500_TRANSITION_TABLE){super(),this._transitions=g,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new _.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(f,u,h)=>{},this._executeHandlerFb=f=>{},this._csiHandlerFb=(f,u)=>{},this._escHandlerFb=f=>{},this._errorHandlerFb=f=>f,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,d.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new b.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(g,f=[64,126]){let u=0;if(g.prefix){if(g.prefix.length>1)throw new Error("only one byte as prefix supported");if(u=g.prefix.charCodeAt(0),u&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(g.intermediates){if(g.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let y=0;y<g.intermediates.length;++y){let S=g.intermediates.charCodeAt(y);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=S}}if(g.final.length!==1)throw new Error("final must be a single byte");let h=g.final.charCodeAt(0);if(f[0]>h||h>f[1])throw new Error(`final must be in range ${f[0]} .. ${f[1]}`);return u<<=8,u|=h,u}identToString(g){let f=[];for(;g;)f.push(String.fromCharCode(255&g)),g>>=8;return f.reverse().join("")}setPrintHandler(g){this._printHandler=g}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(g,f){let u=this._identifier(g,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);let h=this._escHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearEscHandler(g){this._escHandlers[this._identifier(g,[48,126])]&&delete this._escHandlers[this._identifier(g,[48,126])]}setEscHandlerFallback(g){this._escHandlerFb=g}setExecuteHandler(g,f){this._executeHandlers[g.charCodeAt(0)]=f}clearExecuteHandler(g){this._executeHandlers[g.charCodeAt(0)]&&delete this._executeHandlers[g.charCodeAt(0)]}setExecuteHandlerFallback(g){this._executeHandlerFb=g}registerCsiHandler(g,f){let u=this._identifier(g);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);let h=this._csiHandlers[u];return h.push(f),{dispose:()=>{let y=h.indexOf(f);y!==-1&&h.splice(y,1)}}}clearCsiHandler(g){this._csiHandlers[this._identifier(g)]&&delete this._csiHandlers[this._identifier(g)]}setCsiHandlerFallback(g){this._csiHandlerFb=g}registerDcsHandler(g,f){return this._dcsParser.registerHandler(this._identifier(g),f)}clearDcsHandler(g){this._dcsParser.clearHandler(this._identifier(g))}setDcsHandlerFallback(g){this._dcsParser.setHandlerFallback(g)}registerOscHandler(g,f){return this._oscParser.registerHandler(g,f)}clearOscHandler(g){this._oscParser.clearHandler(g)}setOscHandlerFallback(g){this._oscParser.setHandlerFallback(g)}setErrorHandler(g){this._errorHandler=g}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(g,f,u,h,y){this._parseStack.state=g,this._parseStack.handlers=f,this._parseStack.handlerPos=u,this._parseStack.transition=h,this._parseStack.chunkPos=y}parse(g,f,u){let h,y=0,S=0,I=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,I=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let x=this._parseStack.handlers,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](this._params),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 4:if(u===!1&&N>-1){for(;N>=0&&(h=x[N](),h!==!0);N--)if(h instanceof Promise)return this._parseStack.handlerPos=N,h}this._parseStack.handlers=[];break;case 6:if(y=g[this._parseStack.chunkPos],h=this._dcsParser.unhook(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(y=g[this._parseStack.chunkPos],h=this._oscParser.end(y!==24&&y!==26,u),h)return h;y===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,I=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let x=I;x<f;++x){switch(y=g[x],S=this._transitions.table[this.currentState<<8|(y<160?y:m)],S>>4){case 2:for(let E=x+1;;++E){if(E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}if(++E>=f||(y=g[E])<32||y>126&&y<m){this._printHandler(g,x,E),x=E-1;break}}break;case 3:this._executeHandlers[y]?this._executeHandlers[y]():this._executeHandlerFb(y),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:x,code:y,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|y],F=N?N.length-1:-1;for(;F>=0&&(h=N[F](this._params),h!==!0);F--)if(h instanceof Promise)return this._preserveStack(3,N,F,S,x),h;F<0&&this._csiHandlerFb(this._collect<<8|y,this._params),this.precedingJoinState=0;break;case 8:do switch(y){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(y-48)}while(++x<f&&(y=g[x])>47&&y<60);x--;break;case 9:this._collect<<=8,this._collect|=y;break;case 10:let D=this._escHandlers[this._collect<<8|y],A=D?D.length-1:-1;for(;A>=0&&(h=D[A](),h!==!0);A--)if(h instanceof Promise)return this._preserveStack(4,D,A,S,x),h;A<0&&this._escHandlerFb(this._collect<<8|y),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|y,this._params);break;case 13:for(let E=x+1;;++E)if(E>=f||(y=g[E])===24||y===26||y===27||y>127&&y<m){this._dcsParser.put(g,x,E),x=E-1;break}break;case 14:if(h=this._dcsParser.unhook(y!==24&&y!==26),h)return this._preserveStack(6,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let E=x+1;;E++)if(E>=f||(y=g[E])<32||y>127&&y<m){this._oscParser.put(g,x,E),x=E-1;break}break;case 6:if(h=this._oscParser.end(y!==24&&y!==26),h)return this._preserveStack(5,[],0,S,x),h;y===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}i.EscapeSequenceParser=w},1346:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OscHandler=i.OscParser=void 0;let d=c(1263),_=c(726),a=[];i.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(b,l){this._handlers[b]===void 0&&(this._handlers[b]=[]);let m=this._handlers[b];return m.push(l),{dispose:()=>{let w=m.indexOf(l);w!==-1&&m.splice(w,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let b=this._active.length-1;b>=0;b--)this._active[b].start();else this._handlerFb(this._id,"START")}_put(b,l,m){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(b,l,m);else this._handlerFb(this._id,"PUT",(0,_.utf32ToString)(b,l,m))}start(){this.reset(),this._state=1}put(b,l,m){if(this._state!==3){if(this._state===1)for(;l<m;){let w=b[l++];if(w===59){this._state=2,this._start();break}if(w<48||57<w)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+w-48}this._state===2&&m-l>0&&this._put(b,l,m)}}end(b,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let m=!1,w=this._active.length-1,n=!1;if(this._stack.paused&&(w=this._stack.loopPosition-1,m=l,n=this._stack.fallThrough,this._stack.paused=!1),!n&&m===!1){for(;w>=0&&(m=this._active[w].end(b),m!==!0);w--)if(m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!1,m;w--}for(;w>=0;w--)if(m=this._active[w].end(!1),m instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!0,m}else this._handlerFb(this._id,"END",b);this._active=a,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(b){this._handler=b,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(b,l,m){this._hitLimit||(this._data+=(0,_.utf32ToString)(b,l,m),this._data.length>d.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(b){let l=!1;if(this._hitLimit)l=!1;else if(b&&(l=this._handler(this._data),l instanceof Promise))return l.then((m=>(this._data="",this._hitLimit=!1,m)));return this._data="",this._hitLimit=!1,l}}},7262:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Params=void 0;let c=2147483647;class d{static fromArray(a){let b=new d;if(!a.length)return b;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let m=a[l];if(Array.isArray(m))for(let w=0;w<m.length;++w)b.addSubParam(m[w]);else b.addParam(m)}return b}constructor(a=32,b=32){if(this.maxLength=a,this.maxSubParamsLength=b,b>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(b),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new d(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let b=0;b<this.length;++b){a.push(this.params[b]);let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,m))}return a}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=a>c?c:a}}addSubParam(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(a<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=a>c?c:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let b=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-b>0?this._subParams.subarray(b,l):null}getSubParamsAll(){let a={};for(let b=0;b<this.length;++b){let l=this._subParamsIdx[b]>>8,m=255&this._subParamsIdx[b];m-l>0&&(a[b]=this._subParams.slice(l,m))}return a}addDigit(a){let b;if(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,m=l[b-1];l[b-1]=~m?Math.min(10*m+a,c):a}}i.Params=d},3027:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let c=this._addons.length-1;c>=0;c--)this._addons[c].instance.dispose()}loadAddon(c,d){let _={instance:d,dispose:d.dispose,isDisposed:!1};this._addons.push(_),d.dispose=()=>this._wrappedAddonDispose(_),d.activate(c)}_wrappedAddonDispose(c){if(c.isDisposed)return;let d=-1;for(let _=0;_<this._addons.length;_++)if(this._addons[_]===c){d=_;break}if(d===-1)throw new Error("Could not dispose an addon that has not been loaded");c.isDisposed=!0,c.dispose.apply(c.instance),this._addons.splice(d,1)}}},3235:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferApiView=void 0;let d=c(793),_=c(3055);i.BufferApiView=class{constructor(a,b){this._buffer=a,this.type=b}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let b=this._buffer.lines.get(a);if(b)return new d.BufferLineApiView(b)}getNullCell(){return new _.CellData}}},793:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferLineApiView=void 0;let d=c(3055);i.BufferLineApiView=class{constructor(_){this._line=_}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(_,a){if(!(_<0||_>=this._line.length))return a?(this._line.loadCell(_,a),a):this._line.loadCell(_,new d.CellData)}translateToString(_,a,b){return this._line.translateToString(_,a,b)}}},5101:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BufferNamespaceApi=void 0;let d=c(3235),_=c(7150),a=c(802);class b extends _.Disposable{constructor(m){super(),this._core=m,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new d.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new d.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=b},6097:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(c){this._core=c}registerCsiHandler(c,d){return this._core.registerCsiHandler(c,(_=>d(_.toArray())))}addCsiHandler(c,d){return this.registerCsiHandler(c,d)}registerDcsHandler(c,d){return this._core.registerDcsHandler(c,((_,a)=>d(_,a.toArray())))}addDcsHandler(c,d){return this.registerDcsHandler(c,d)}registerEscHandler(c,d){return this._core.registerEscHandler(c,d)}addEscHandler(c,d){return this.registerEscHandler(c,d)}registerOscHandler(c,d){return this._core.registerOscHandler(c,d)}addOscHandler(c,d){return this.registerOscHandler(c,d)}}},4335:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(c){this._core=c}register(c){this._core.unicodeService.register(c)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(c){this._core.unicodeService.activeVersion=c}}},9640:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var I=n.length-1;I>=0;I--)(h=n[I])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;let a=c(7150),b=c(4097),l=c(6501),m=c(802);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let w=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(n){super(),this.isUserScrolling=!1,this._onResize=this._register(new m.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new m.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(n.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(n.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this._register(new b.BufferSet(n,this)),this._register(this.buffers.onBufferActivate((g=>{this._onScroll.fire(g.activeBuffer.ydisp)})))}resize(n,g){let f=this.cols!==n,u=this.rows!==g;this.cols=n,this.rows=g,this.buffers.resize(n,g),this._onResize.fire({cols:n,rows:g,colsChanged:f,rowsChanged:u})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(n,g=!1){let f=this.buffer,u;u=this._cachedBlankLine,u&&u.length===this.cols&&u.getFg(0)===n.fg&&u.getBg(0)===n.bg||(u=f.getBlankLine(n,g),this._cachedBlankLine=u),u.isWrapped=g;let h=f.ybase+f.scrollTop,y=f.ybase+f.scrollBottom;if(f.scrollTop===0){let S=f.lines.isFull;y===f.lines.length-1?S?f.lines.recycle().copyFrom(u):f.lines.push(u.clone()):f.lines.splice(y+1,0,u.clone()),S?this.isUserScrolling&&(f.ydisp=Math.max(f.ydisp-1,0)):(f.ybase++,this.isUserScrolling||f.ydisp++)}else{let S=y-h+1;f.lines.shiftElements(h+1,S-1,-1),f.lines.set(y,u.clone())}this.isUserScrolling||(f.ydisp=f.ybase),this._onScroll.fire(f.ydisp)}scrollLines(n,g){let f=this.buffer;if(n<0){if(f.ydisp===0)return;this.isUserScrolling=!0}else n+f.ydisp>=f.ybase&&(this.isUserScrolling=!1);let u=f.ydisp;f.ydisp=Math.max(Math.min(f.ydisp+n,f.ybase),0),u!==f.ydisp&&(g||this._onScroll.fire(f.ydisp))}};i.BufferService=w,i.BufferService=w=d([_(0,l.IOptionsService)],w)},5746:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(c){this.glevel=c,this.charset=this._charsets[c]}setgCharset(c,d){this._charsets[c]=d,this.glevel===c&&(this.charset=d)}}},7792:function(k,i,c){var d=this&&this.__decorate||function(u,h,y,S){var I,x=arguments.length,N=x<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,y):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(u,h,y,S);else for(var F=u.length-1;F>=0;F--)(I=u[F])&&(N=(x<3?I(N):x>3?I(h,y,N):I(h,y))||N);return x>3&&N&&Object.defineProperty(h,y,N),N},_=this&&this.__param||function(u,h){return function(y,S){h(y,S,u)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreMouseService=void 0;let a=c(6501),b=c(7150),l=c(802),m={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:u=>u.button!==4&&u.action===1&&(u.ctrl=!1,u.alt=!1,u.shift=!1,!0)},VT200:{events:19,restrict:u=>u.action!==32},DRAG:{events:23,restrict:u=>u.action!==32||u.button!==3},ANY:{events:31,restrict:u=>!0}};function w(u,h){let y=(u.ctrl?16:0)|(u.shift?4:0)|(u.alt?8:0);return u.button===4?(y|=64,y|=u.action):(y|=3&u.button,4&u.button&&(y|=64),8&u.button&&(y|=128),u.action===32?y|=32:u.action!==0||h||(y|=3)),y}let n=String.fromCharCode,g={DEFAULT:u=>{let h=[w(u,!1)+32,u.col+32,u.row+32];return h[0]>255||h[1]>255||h[2]>255?"":`\x1B[M${n(h[0])}${n(h[1])}${n(h[2])}`},SGR:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.col};${u.row}${h}`},SGR_PIXELS:u=>{let h=u.action===0&&u.button!==4?"m":"M";return`\x1B[<${w(u,!0)};${u.x};${u.y}${h}`}},f=class extends b.Disposable{constructor(u,h,y){super(),this._bufferService=u,this._coreService=h,this._optionsService=y,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(m))this.addProtocol(S,m[S]);for(let S of Object.keys(g))this.addEncoding(S,g[S]);this.reset()}addProtocol(u,h){this._protocols[u]=h}addEncoding(u,h){this._encodings[u]=h}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(u){if(!this._protocols[u])throw new Error(`unknown protocol "${u}"`);this._activeProtocol=u,this._onProtocolChange.fire(this._protocols[u].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(u){if(!this._encodings[u])throw new Error(`unknown encoding "${u}"`);this._activeEncoding=u}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(u,h,y){if(u.deltaY===0||u.shiftKey||h===void 0||y===void 0)return 0;let S=h/y,I=this._applyScrollModifier(u.deltaY,u);return u.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(I/=S+0,Math.abs(u.deltaY)<50&&(I*=.3),this._wheelPartialScroll+=I,I=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):u.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(I*=this._bufferService.rows),I}_applyScrollModifier(u,h){return h.altKey||h.ctrlKey||h.shiftKey?u*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:u*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(u){if(u.col<0||u.col>=this._bufferService.cols||u.row<0||u.row>=this._bufferService.rows||u.button===4&&u.action===32||u.button===3&&u.action!==32||u.button!==4&&(u.action===2||u.action===3)||(u.col++,u.row++,u.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,u,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(u))return!1;let h=this._encodings[this._activeEncoding](u);return h&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(h):this._coreService.triggerDataEvent(h,!0)),this._lastEvent=u,!0}explainEvents(u){return{down:!!(1&u),up:!!(2&u),drag:!!(4&u),move:!!(8&u),wheel:!!(16&u)}}_equalEvents(u,h,y){if(y){if(u.x!==h.x||u.y!==h.y)return!1}else if(u.col!==h.col||u.row!==h.row)return!1;return u.button===h.button&&u.action===h.action&&u.ctrl===h.ctrl&&u.alt===h.alt&&u.shift===h.shift}};i.CoreMouseService=f,i.CoreMouseService=f=d([_(0,a.IBufferService),_(1,a.ICoreService),_(2,a.IOptionsService)],f)},4071:function(k,i,c){var d=this&&this.__decorate||function(f,u,h,y){var S,I=arguments.length,x=I<3?u:y===null?y=Object.getOwnPropertyDescriptor(u,h):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(f,u,h,y);else for(var N=f.length-1;N>=0;N--)(S=f[N])&&(x=(I<3?S(x):I>3?S(u,h,x):S(u,h))||x);return I>3&&x&&Object.defineProperty(u,h,x),x},_=this&&this.__param||function(f,u){return function(h,y){u(h,y,f)}};Object.defineProperty(i,"__esModule",{value:!0}),i.CoreService=void 0;let a=c(7453),b=c(7150),l=c(6501),m=c(802),w=Object.freeze({insertMode:!1}),n=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),g=class extends b.Disposable{constructor(f,u,h){super(),this._bufferService=f,this._logService=u,this._optionsService=h,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new m.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new m.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new m.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new m.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}reset(){this.modes=(0,a.clone)(w),this.decPrivateModes=(0,a.clone)(n)}triggerDataEvent(f,u=!1){if(this._optionsService.rawOptions.disableStdin)return;let h=this._bufferService.buffer;u&&this._optionsService.rawOptions.scrollOnUserInput&&h.ybase!==h.ydisp&&this._onRequestScrollToBottom.fire(),u&&this._onUserInput.fire(),this._logService.debug(`sending data "${f}"`),this._logService.trace("sending data (codes)",(()=>f.split("").map((y=>y.charCodeAt(0))))),this._onData.fire(f)}triggerBinaryEvent(f){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${f}"`),this._logService.trace("sending binary (codes)",(()=>f.split("").map((u=>u.charCodeAt(0))))),this._onBinary.fire(f))}};i.CoreService=g,i.CoreService=g=d([_(0,l.IBufferService),_(1,l.ILogService),_(2,l.IOptionsService)],g)},6025:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;let d=c(6501),_=c(6201);class a{constructor(...l){this._entries=new Map;for(let[m,w]of l)this.set(m,w)}set(l,m){let w=this._entries.get(l);return this._entries.set(l,m),w}forEach(l){for(let[m,w]of this._entries.entries())l(m,w)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}i.ServiceCollection=a,i.InstantiationService=class{constructor(){this._services=new a,this._services.set(d.IInstantiationService,this)}setService(b,l){this._services.set(b,l)}getService(b){return this._services.get(b)}createInstance(b,...l){let m=(0,_.getServiceDependencies)(b).sort(((g,f)=>g.index-f.index)),w=[];for(let g of m){let f=this._services.get(g.id);if(!f)throw new Error(`[createInstance] ${b.name} depends on UNKNOWN service ${g.id._id}.`);w.push(f)}let n=m.length>0?m[0].index:l.length;if(l.length!==n)throw new Error(`[createInstance] First service dependency of ${b.name} at position ${n+1} conflicts with ${l.length} static arguments`);return new b(...l,...w)}}},7276:function(k,i,c){var d=this&&this.__decorate||function(n,g,f,u){var h,y=arguments.length,S=y<3?g:u===null?u=Object.getOwnPropertyDescriptor(g,f):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(n,g,f,u);else for(var I=n.length-1;I>=0;I--)(h=n[I])&&(S=(y<3?h(S):y>3?h(g,f,S):h(g,f))||S);return y>3&&S&&Object.defineProperty(g,f,S),S},_=this&&this.__param||function(n,g){return function(f,u){g(f,u,n)}};Object.defineProperty(i,"__esModule",{value:!0}),i.LogService=void 0,i.setTraceLogger=function(n){m=n},i.traceCall=function(n,g,f){if(typeof f.value!="function")throw new Error("not supported");let u=f.value;f.value=function(...h){if(m.logLevel!==b.LogLevelEnum.TRACE)return u.apply(this,h);m.trace(`GlyphRenderer#${u.name}(${h.map((S=>JSON.stringify(S))).join(", ")})`);let y=u.apply(this,h);return m.trace(`GlyphRenderer#${u.name} return`,y),y}};let a=c(7150),b=c(6501),l={trace:b.LogLevelEnum.TRACE,debug:b.LogLevelEnum.DEBUG,info:b.LogLevelEnum.INFO,warn:b.LogLevelEnum.WARN,error:b.LogLevelEnum.ERROR,off:b.LogLevelEnum.OFF},m,w=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(n){super(),this._optionsService=n,this._logLevel=b.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),m=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(n){for(let g=0;g<n.length;g++)typeof n[g]=="function"&&(n[g]=n[g]())}_log(n,g,f){this._evalLazyOptionalParams(f),n.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+g,...f)}trace(n,...g){this._logLevel<=b.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,n,g)}debug(n,...g){this._logLevel<=b.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,n,g)}info(n,...g){this._logLevel<=b.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,n,g)}warn(n,...g){this._logLevel<=b.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,n,g)}error(n,...g){this._logLevel<=b.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,n,g)}};i.LogService=w,i.LogService=w=d([_(0,b.IOptionsService)],w)},56:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;let d=c(7150),_=c(701),a=c(802);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:_.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let b=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends d.Disposable{constructor(w){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let n={...i.DEFAULT_OPTIONS};for(let g in w)if(g in n)try{let f=w[g];n[g]=this._sanitizeAndValidateOption(g,f)}catch(f){console.error(f)}this.rawOptions=n,this.options={...n},this._setupOptions(),this._register((0,d.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(w,n){return this.onOptionChange((g=>{g===w&&n(this.rawOptions[w])}))}onMultipleOptionChange(w,n){return this.onOptionChange((g=>{w.indexOf(g)!==-1&&n()}))}_setupOptions(){let w=g=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);return this.rawOptions[g]},n=(g,f)=>{if(!(g in i.DEFAULT_OPTIONS))throw new Error(`No option with key "${g}"`);f=this._sanitizeAndValidateOption(g,f),this.rawOptions[g]!==f&&(this.rawOptions[g]=f,this._onOptionChange.fire(g))};for(let g in this.rawOptions){let f={get:w.bind(this,g),set:n.bind(this,g)};Object.defineProperty(this.options,g,f)}}_sanitizeAndValidateOption(w,n){switch(w){case"cursorStyle":if(n||(n=i.DEFAULT_OPTIONS[w]),!(function(g){return g==="block"||g==="underline"||g==="bar"})(n))throw new Error(`"${n}" is not a valid value for ${w}`);break;case"wordSeparator":n||(n=i.DEFAULT_OPTIONS[w]);break;case"fontWeight":case"fontWeightBold":if(typeof n=="number"&&1<=n&&n<=1e3)break;n=b.includes(n)?n:i.DEFAULT_OPTIONS[w];break;case"cursorWidth":n=Math.floor(n);case"lineHeight":case"tabStopWidth":if(n<1)throw new Error(`${w} cannot be less than 1, value: ${n}`);break;case"minimumContrastRatio":n=Math.max(1,Math.min(21,Math.round(10*n)/10));break;case"scrollback":if((n=Math.min(n,4294967295))<0)throw new Error(`${w} cannot be less than 0, value: ${n}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(n<=0)throw new Error(`${w} cannot be less than or equal to 0, value: ${n}`);break;case"rows":case"cols":if(!n&&n!==0)throw new Error(`${w} must be numeric, value: ${n}`);break;case"windowsPty":n=n??{}}return n}}i.OptionsService=l},8811:function(k,i,c){var d=this&&this.__decorate||function(l,m,w,n){var g,f=arguments.length,u=f<3?m:n===null?n=Object.getOwnPropertyDescriptor(m,w):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(l,m,w,n);else for(var h=l.length-1;h>=0;h--)(g=l[h])&&(u=(f<3?g(u):f>3?g(m,w,u):g(m,w))||u);return f>3&&u&&Object.defineProperty(m,w,u),u},_=this&&this.__param||function(l,m){return function(w,n){m(w,n,l)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkService=void 0;let a=c(6501),b=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let m=this._bufferService.buffer;if(l.id===void 0){let h=m.addMarker(m.ybase+m.y),y={data:l,id:this._nextId++,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(y,h))),this._dataByLinkId.set(y.id,y),y.id}let w=l,n=this._getEntryIdKey(w),g=this._entriesWithId.get(n);if(g)return this.addLineToLink(g.id,m.ybase+m.y),g.id;let f=m.addMarker(m.ybase+m.y),u={id:this._nextId++,key:this._getEntryIdKey(w),data:w,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(u,f))),this._entriesWithId.set(u.key,u),this._dataByLinkId.set(u.id,u),u.id}addLineToLink(l,m){let w=this._dataByLinkId.get(l);if(w&&w.lines.every((n=>n.line!==m))){let n=this._bufferService.buffer.addMarker(m);w.lines.push(n),n.onDispose((()=>this._removeMarkerFromLink(w,n)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,m){let w=l.lines.indexOf(m);w!==-1&&(l.lines.splice(w,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};i.OscLinkService=b,i.OscLinkService=b=d([_(0,a.IBufferService)],b)},6201:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.serviceRegistry=void 0,i.getServiceDependencies=function(_){return _[d]||[]},i.createDecorator=function(_){if(i.serviceRegistry.has(_))return i.serviceRegistry.get(_);let a=function(b,l,m){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(w,n,g){n[c]===n?n[d].push({id:w,index:g}):(n[d]=[{id:w,index:g}],n[c]=n)})(a,b,m)};return a._id=_,i.serviceRegistry.set(_,a),a};let c="di$target",d="di$dependencies";i.serviceRegistry=new Map},6501:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;let d=c(6201);var _;i.IBufferService=(0,d.createDecorator)("BufferService"),i.ICoreMouseService=(0,d.createDecorator)("CoreMouseService"),i.ICoreService=(0,d.createDecorator)("CoreService"),i.ICharsetService=(0,d.createDecorator)("CharsetService"),i.IInstantiationService=(0,d.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(_||(i.LogLevelEnum=_={})),i.ILogService=(0,d.createDecorator)("LogService"),i.IOptionsService=(0,d.createDecorator)("OptionsService"),i.IOscLinkService=(0,d.createDecorator)("OscLinkService"),i.IUnicodeService=(0,d.createDecorator)("UnicodeService"),i.IDecorationService=(0,d.createDecorator)("DecorationService")},6415:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.UnicodeService=void 0;let d=c(7428),_=c(802);class a{static extractShouldJoin(l){return!!(1&l)}static extractWidth(l){return l>>1&3}static extractCharKind(l){return l>>3}static createPropertyValue(l,m,w=!1){return(16777215&l)<<3|(3&m)<<1|(w?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new _.Emitter,this.onChange=this._onChange.event;let l=new d.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let m=0,w=0,n=l.length;for(let g=0;g<n;++g){let f=l.charCodeAt(g);if(55296<=f&&f<=56319){if(++g>=n)return m+this.wcwidth(f);let y=l.charCodeAt(g);56320<=y&&y<=57343?f=1024*(f-55296)+y-56320+65536:m+=this.wcwidth(y)}let u=this.charProperties(f,w),h=a.extractWidth(u);a.extractShouldJoin(u)&&(h-=a.extractWidth(w)),m+=h,w=u}return m}charProperties(l,m){return this._activeProvider.charProperties(l,m)}}i.UnicodeService=a},5856:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Terminal=void 0;let d=c(6107),_=c(5777),a=c(802);class b extends _.CoreTerminal{constructor(m={}){super(m),this._onBell=this._register(new a.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new a.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new a.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new a.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new a.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(a.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(a.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(a.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(a.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter))}get buffer(){return this.buffers.active}get markers(){return this.buffer.markers}addMarker(m){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+m)}bell(){this._onBell.fire()}input(m,w=!0){this.coreService.triggerDataEvent(m,w)}resize(m,w){m===this.cols&&w===this.rows||super.resize(m,w)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let m=1;m<this.rows;m++)this.buffer.lines.push(this.buffer.getBlankLine(d.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}i.Terminal=b},3058:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.Permutation=i.CallbackIterable=i.ArrayQueue=i.booleanComparator=i.numberComparator=i.CompareResult=void 0,i.tail=function(h,y=0){return h[h.length-(1+y)]},i.tail2=function(h){if(h.length===0)throw new Error("Invalid tail call");return[h.slice(0,h.length-1),h[h.length-1]]},i.equals=function(h,y,S=(I,x)=>I===x){if(h===y)return!0;if(!h||!y||h.length!==y.length)return!1;for(let I=0,x=h.length;I<x;I++)if(!S(h[I],y[I]))return!1;return!0},i.removeFastWithoutKeepingOrder=function(h,y){let S=h.length-1;y<S&&(h[y]=h[S]),h.pop()},i.binarySearch=function(h,y,S){return a(h.length,(I=>S(h[I],y)))},i.binarySearch2=a,i.quickSelect=function h(y,S,I){if((y|=0)>=S.length)throw new TypeError("invalid index");let x=S[Math.floor(S.length*Math.random())],N=[],F=[],D=[];for(let A of S){let E=I(A,x);E<0?N.push(A):E>0?F.push(A):D.push(A)}return y<N.length?h(y,N,I):y<N.length+D.length?D[0]:h(y-(N.length+D.length),F,I)},i.groupBy=function(h,y){let S=[],I;for(let x of h.slice(0).sort(y))I&&y(I[0],x)===0?I.push(x):(I=[x],S.push(I));return S},i.groupAdjacentBy=function*(h,y){let S,I;for(let x of h)I!==void 0&&y(I,x)?S.push(x):(S&&(yield S),S=[x]),I=x;S&&(yield S)},i.forEachAdjacent=function(h,y){for(let S=0;S<=h.length;S++)y(S===0?void 0:h[S-1],S===h.length?void 0:h[S])},i.forEachWithNeighbors=function(h,y){for(let S=0;S<h.length;S++)y(S===0?void 0:h[S-1],h[S],S+1===h.length?void 0:h[S+1])},i.sortedDiff=b,i.delta=function(h,y,S){let I=b(h,y,S),x=[],N=[];for(let F of I)x.push(...h.slice(F.start,F.start+F.deleteCount)),N.push(...F.toInsert);return{removed:x,added:N}},i.top=function(h,y,S){if(S===0)return[];let I=h.slice(0,S).sort(y);return l(h,y,I,S,h.length),I},i.topAsync=function(h,y,S,I,x){return S===0?Promise.resolve([]):new Promise(((N,F)=>{(async()=>{let D=h.length,A=h.slice(0,S).sort(y);for(let E=S,U=Math.min(S+I,D);E<D;E=U,U=Math.min(U+I,D)){if(E>S&&await new Promise((z=>setTimeout(z))),x&&x.isCancellationRequested)throw new d.CancellationError;l(h,y,A,E,U)}return A})().then(N,F)}))},i.coalesce=function(h){return h.filter((y=>!!y))},i.coalesceInPlace=function(h){let y=0;for(let S=0;S<h.length;S++)h[S]&&(h[y]=h[S],y+=1);h.length=y},i.move=function(h,y,S){h.splice(S,0,h.splice(y,1)[0])},i.isFalsyOrEmpty=function(h){return!Array.isArray(h)||h.length===0},i.isNonEmptyArray=function(h){return Array.isArray(h)&&h.length>0},i.distinct=function(h,y=S=>S){let S=new Set;return h.filter((I=>{let x=y(I);return!S.has(x)&&(S.add(x),!0)}))},i.uniqueFilter=function(h){let y=new Set;return S=>{let I=h(S);return!y.has(I)&&(y.add(I),!0)}},i.firstOrDefault=function(h,y){return h.length>0?h[0]:y},i.lastOrDefault=function(h,y){return h.length>0?h[h.length-1]:y},i.commonPrefixLength=function(h,y,S=(I,x)=>I===x){let I=0;for(let x=0,N=Math.min(h.length,y.length);x<N&&S(h[x],y[x]);x++)I++;return I},i.range=function(h,y){let S=typeof y=="number"?h:0;typeof y=="number"?S=h:(S=0,y=h);let I=[];if(S<=y)for(let x=S;x<y;x++)I.push(x);else for(let x=S;x>y;x--)I.push(x);return I},i.index=function(h,y,S){return h.reduce(((I,x)=>(I[y(x)]=S?S(x):x,I)),Object.create(null))},i.insert=function(h,y){return h.push(y),()=>m(h,y)},i.remove=m,i.arrayInsert=function(h,y,S){let I=h.slice(0,y),x=h.slice(y);return I.concat(S,x)},i.shuffle=function(h,y){let S;if(typeof y=="number"){let I=y;S=()=>{let x=179426549*Math.sin(I++);return x-Math.floor(x)}}else S=Math.random;for(let I=h.length-1;I>0;I-=1){let x=Math.floor(S()*(I+1)),N=h[I];h[I]=h[x],h[x]=N}},i.pushToStart=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.unshift(y))},i.pushToEnd=function(h,y){let S=h.indexOf(y);S>-1&&(h.splice(S,1),h.push(y))},i.pushMany=function(h,y){for(let S of y)h.push(S)},i.mapArrayOrNot=function(h,y){return Array.isArray(h)?h.map(y):y(h)},i.asArray=function(h){return Array.isArray(h)?h:[h]},i.getRandomElement=function(h){return h[Math.floor(Math.random()*h.length)]},i.insertInto=w,i.splice=function(h,y,S,I){let x=n(h,y),N=h.splice(x,S);return N===void 0&&(N=[]),w(h,x,I),N},i.compareBy=function(h,y){return(S,I)=>y(h(S),h(I))},i.tieBreakComparators=function(...h){return(y,S)=>{for(let I of h){let x=I(y,S);if(!g.isNeitherLessOrGreaterThan(x))return x}return g.neitherLessOrGreaterThan}},i.reverseOrder=function(h){return(y,S)=>-h(y,S)};let d=c(9807),_=c(8297);function a(h,y){let S=0,I=h-1;for(;S<=I;){let x=(S+I)/2|0,N=y(x);if(N<0)S=x+1;else{if(!(N>0))return x;I=x-1}}return-(S+1)}function b(h,y,S){let I=[];function x(D,A,E){if(A===0&&E.length===0)return;let U=I[I.length-1];U&&U.start+U.deleteCount===D?(U.deleteCount+=A,U.toInsert.push(...E)):I.push({start:D,deleteCount:A,toInsert:E})}let N=0,F=0;for(;;){if(N===h.length){x(N,0,y.slice(F));break}if(F===y.length){x(N,h.length-N,[]);break}let D=h[N],A=y[F],E=S(D,A);E===0?(N+=1,F+=1):E<0?(x(N,1,[]),N+=1):E>0&&(x(N,0,[A]),F+=1)}return I}function l(h,y,S,I,x){for(let N=S.length;I<x;I++){let F=h[I];if(y(F,S[N-1])<0){S.pop();let D=(0,_.findFirstIdxMonotonousOrArrLen)(S,(A=>y(F,A)<0));S.splice(D,0,F)}}}function m(h,y){let S=h.indexOf(y);if(S>-1)return h.splice(S,1),y}function w(h,y,S){let I=n(h,y),x=h.length,N=S.length;h.length=x+N;for(let F=x-1;F>=I;F--)h[F+N]=h[F];for(let F=0;F<N;F++)h[F+I]=S[F]}function n(h,y){return y<0?Math.max(y+h.length,0):Math.min(y,h.length)}var g;(function(h){h.isLessThan=function(y){return y<0},h.isLessThanOrEqual=function(y){return y<=0},h.isGreaterThan=function(y){return y>0},h.isNeitherLessOrGreaterThan=function(y){return y===0},h.greaterThan=1,h.lessThan=-1,h.neitherLessOrGreaterThan=0})(g||(i.CompareResult=g={})),i.numberComparator=(h,y)=>h-y,i.booleanComparator=(h,y)=>(0,i.numberComparator)(h?1:0,y?1:0),i.ArrayQueue=class{constructor(h){this.items=h,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(h){let y=this.firstIdx;for(;y<this.items.length&&h(this.items[y]);)y++;let S=y===this.firstIdx?null:this.items.slice(this.firstIdx,y);return this.firstIdx=y,S}takeFromEndWhile(h){let y=this.lastIdx;for(;y>=0&&h(this.items[y]);)y--;let S=y===this.lastIdx?null:this.items.slice(y+1,this.lastIdx+1);return this.lastIdx=y,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let h=this.items[this.firstIdx];return this.firstIdx++,h}removeLast(){let h=this.items[this.lastIdx];return this.lastIdx--,h}takeCount(h){let y=this.items.slice(this.firstIdx,this.firstIdx+h);return this.firstIdx+=h,y}};class f{static{this.empty=new f((y=>{}))}constructor(y){this.iterate=y}forEach(y){this.iterate((S=>(y(S),!0)))}toArray(){let y=[];return this.iterate((S=>(y.push(S),!0))),y}filter(y){return new f((S=>this.iterate((I=>!y(I)||S(I)))))}map(y){return new f((S=>this.iterate((I=>S(y(I))))))}some(y){let S=!1;return this.iterate((I=>(S=y(I),!S))),S}findFirst(y){let S;return this.iterate((I=>!y(I)||(S=I,!1))),S}findLast(y){let S;return this.iterate((I=>(y(I)&&(S=I),!0))),S}findLastMaxBy(y){let S,I=!0;return this.iterate((x=>((I||g.isGreaterThan(y(x,S)))&&(I=!1,S=x),!0))),S}}i.CallbackIterable=f;class u{constructor(y){this._indexMap=y}static createSortPermutation(y,S){let I=Array.from(y.keys()).sort(((x,N)=>S(y[x],y[N])));return new u(I)}apply(y){return y.map(((S,I)=>y[this._indexMap[I]]))}inverse(){let y=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)y[this._indexMap[S]]=S;return new u(y)}}i.Permutation=u},8297:(k,i)=>{function c(l,m,w=l.length-1){for(let n=w;n>=0;n--)if(m(l[n]))return n;return-1}function d(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?g=u+1:f=u}return g-1}function _(l,m,w=0,n=l.length){let g=w,f=n;for(;g<f;){let u=Math.floor((g+f)/2);m(l[u])?f=u:g=u+1}return g}Object.defineProperty(i,"__esModule",{value:!0}),i.MonotonousArray=void 0,i.findLast=function(l,m){let w=c(l,m);if(w!==-1)return l[w]},i.findLastIdx=c,i.findLastMonotonous=function(l,m){let w=d(l,m);return w===-1?void 0:l[w]},i.findLastIdxMonotonous=d,i.findFirstMonotonous=function(l,m){let w=_(l,m);return w===l.length?void 0:l[w]},i.findFirstIdxMonotonousOrArrLen=_,i.findFirstIdxMonotonous=function(l,m,w=0,n=l.length){let g=_(l,m,w,n);return g===l.length?-1:g},i.findFirstMax=b,i.findLastMax=function(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>=0&&(w=g)}return w},i.findFirstMin=function(l,m){return b(l,((w,n)=>-m(w,n)))},i.findMaxIdx=function(l,m){if(l.length===0)return-1;let w=0;for(let n=1;n<l.length;n++)m(l[n],l[w])>0&&(w=n);return w},i.mapFindFirst=function(l,m){for(let w of l){let n=m(w);if(n!==void 0)return n}};class a{static{this.assertInvariants=!1}constructor(m){this._array=m,this._findLastMonotonousLastIdx=0}findLastMonotonous(m){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let n of this._array)if(this._prevFindLastPredicate(n)&&!m(n))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=m}let w=d(this._array,m,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=w+1,w===-1?void 0:this._array[w]}}function b(l,m){if(l.length===0)return;let w=l[0];for(let n=1;n<l.length;n++){let g=l[n];m(g,w)>0&&(w=g)}return w}i.MonotonousArray=a},9087:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetWithKey=void 0,i.groupBy=function(_,a){let b=Object.create(null);for(let l of _){let m=a(l),w=b[m];w||(w=b[m]=[]),w.push(l)}return b},i.diffSets=function(_,a){let b=[],l=[];for(let m of _)a.has(m)||b.push(m);for(let m of a)_.has(m)||l.push(m);return{removed:b,added:l}},i.diffMaps=function(_,a){let b=[],l=[];for(let[m,w]of _)a.has(m)||b.push(w);for(let[m,w]of a)_.has(m)||l.push(w);return{removed:b,added:l}},i.intersection=function(_,a){let b=new Set;for(let l of a)_.has(l)&&b.add(l);return b};class d{static{c=Symbol.toStringTag}constructor(a,b){this.toKey=b,this._map=new Map,this[c]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let b=this.toKey(a);return this._map.set(b,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,b){this._map.forEach((l=>a.call(b,l,l,this)))}[Symbol.iterator](){return this.values()}}i.SetWithKey=d},9807:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.BugIndicatingError=i.ErrorNoTelemetry=i.ExpectedError=i.NotSupportedError=i.NotImplementedError=i.ReadonlyError=i.CancellationError=i.errorHandler=i.ErrorHandler=void 0,i.setUnexpectedErrorHandler=function(f){i.errorHandler.setUnexpectedErrorHandler(f)},i.isSigPipeError=function(f){if(!f||typeof f!="object")return!1;let u=f;return u.code==="EPIPE"&&u.syscall?.toUpperCase()==="WRITE"},i.onUnexpectedError=function(f){_(f)||i.errorHandler.onUnexpectedError(f)},i.onUnexpectedExternalError=function(f){_(f)||i.errorHandler.onUnexpectedExternalError(f)},i.transformErrorForSerialization=function(f){if(f instanceof Error){let{name:u,message:h}=f;return{$isError:!0,name:u,message:h,stack:f.stacktrace||f.stack,noTelemetry:n.isErrorNoTelemetry(f)}}return f},i.transformErrorFromSerialization=function(f){let u;return f.noTelemetry?u=new n:(u=new Error,u.name=f.name),u.message=f.message,u.stack=f.stack,u},i.isCancellationError=_,i.canceled=function(){let f=new Error(d);return f.name=f.message,f},i.illegalArgument=function(f){return f?new Error(`Illegal argument: ${f}`):new Error("Illegal argument")},i.illegalState=function(f){return f?new Error(`Illegal state: ${f}`):new Error("Illegal state")},i.getErrorMessage=function(f){return f?f.message?f.message:f.stack?f.stack.split(`
|
|
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 _(f){return f instanceof a||f instanceof Error&&f.name===d&&f.message===d}class a extends Error{constructor(){super(d),this.name=this.message}}i.CancellationError=a;class b extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=b;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class w extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=w;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),_=c(8841),a=c(7150),b=c(6317),l=c(9725);var m;(function(A){function E(
|
|
9
|
+
`+u.stack):u}),0)}}addListener(u){return this.listeners.push(u),()=>{this._removeListener(u)}}emit(u){this.listeners.forEach((h=>{h(u)}))}_removeListener(u){this.listeners.splice(this.listeners.indexOf(u),1)}setUnexpectedErrorHandler(u){this.unexpectedErrorHandler=u}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}i.ErrorHandler=c,i.errorHandler=new c;let d="Canceled";function _(f){return f instanceof a||f instanceof Error&&f.name===d&&f.message===d}class a extends Error{constructor(){super(d),this.name=this.message}}i.CancellationError=a;class b extends TypeError{constructor(u){super(u?`${u} is read-only and cannot be changed`:"Cannot change read-only property")}}i.ReadonlyError=b;class l extends Error{constructor(u){super("NotImplemented"),u&&(this.message=u)}}i.NotImplementedError=l;class m extends Error{constructor(u){super("NotSupported"),u&&(this.message=u)}}i.NotSupportedError=m;class w extends Error{constructor(){super(...arguments),this.isExpected=!0}}i.ExpectedError=w;class n extends Error{constructor(u){super(u),this.name="CodeExpectedError"}static fromError(u){if(u instanceof n)return u;let h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name==="CodeExpectedError"}}i.ErrorNoTelemetry=n;class g extends Error{constructor(u){super(u||"An unexpected bug occurred."),Object.setPrototypeOf(this,g.prototype)}}i.BugIndicatingError=g},802:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ValueWithChangeEvent=i.Relay=i.EventBufferer=i.DynamicListEventMultiplexer=i.EventMultiplexer=i.MicrotaskEmitter=i.DebounceEmitter=i.PauseableEmitter=i.AsyncEmitter=i.createEventDeliveryQueue=i.Emitter=i.ListenerRefusalError=i.ListenerLeakError=i.EventProfiling=i.Event=void 0,i.setGlobalLeakWarningThreshold=function(A){let E=n;return n=A,{dispose(){n=E}}};let d=c(9807),_=c(8841),a=c(7150),b=c(6317),l=c(9725);var m;(function(A){function E(R){return(T,$=null,W)=>{let H,K=!1;return H=R((re=>{if(!K)return H?H.dispose():K=!0,T.call($,re)}),null,W),K&&H.dispose(),H}}function U(R,T,$){return V(((W,H=null,K)=>R((re=>W.call(H,T(re))),null,K)),$)}function z(R,T,$){return V(((W,H=null,K)=>R((re=>T(re)&&W.call(H,re)),null,K)),$)}function V(R,T){let $,W=new I({onWillAddFirstListener(){$=R(W.fire,W)},onDidRemoveLastListener(){$?.dispose()}});return T?.add(W),W.event}function G(R,T,$=100,W=!1,H=!1,K,re){let C,Q,Y,J,ye=0,ve=new I({leakWarningThreshold:K,onWillAddFirstListener(){C=R((le=>{ye++,Q=T(Q,le),W&&!Y&&(ve.fire(Q),Q=void 0),J=()=>{let Re=Q;Q=void 0,Y=void 0,(!W||ye>1)&&ve.fire(Re),ye=0},typeof $=="number"?(clearTimeout(Y),Y=setTimeout(J,$)):Y===void 0&&(Y=0,queueMicrotask(J))}))},onWillRemoveListener(){H&&ye>0&&J?.()},onDidRemoveLastListener(){J=void 0,C.dispose()}});return re?.add(ve),ve.event}A.None=()=>a.Disposable.None,A.defer=function(R,T){return G(R,(()=>{}),0,void 0,!0,void 0,T)},A.once=E,A.map=U,A.forEach=function(R,T,$){return V(((W,H=null,K)=>R((re=>{T(re),W.call(H,re)}),null,K)),$)},A.filter=z,A.signal=function(R){return R},A.any=function(...R){return(T,$=null,W)=>{return H=(0,a.combinedDisposable)(...R.map((re=>re((C=>T.call($,C)))))),(K=W)instanceof Array?K.push(H):K&&K.add(H),H;var H,K}},A.reduce=function(R,T,$,W){let H=$;return U(R,(K=>(H=T(H,K),H)),W)},A.debounce=G,A.accumulate=function(R,T=0,$){return A.debounce(R,((W,H)=>W?(W.push(H),W):[H]),T,void 0,!0,void 0,$)},A.latch=function(R,T=(W,H)=>W===H,$){let W,H=!0;return z(R,(K=>{let re=H||!T(K,W);return H=!1,W=K,re}),$)},A.split=function(R,T,$){return[A.filter(R,T,$),A.filter(R,(W=>!T(W)),$)]},A.buffer=function(R,T=!1,$=[],W){let H=$.slice(),K=R((Q=>{H?H.push(Q):C.fire(Q)}));W&&W.add(K);let re=()=>{H?.forEach((Q=>C.fire(Q))),H=null},C=new I({onWillAddFirstListener(){K||(K=R((Q=>C.fire(Q))),W&&W.add(K))},onDidAddFirstListener(){H&&(T?setTimeout(re):re())},onDidRemoveLastListener(){K&&K.dispose(),K=null}});return W&&W.add(C),C.event},A.chain=function(R,T){return($,W,H)=>{let K=T(new v);return R((function(re){let C=K.evaluate(re);C!==B&&$.call(W,C)}),void 0,H)}};let B=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(T){return this.steps.push(T),this}forEach(T){return this.steps.push(($=>(T($),$))),this}filter(T){return this.steps.push(($=>T($)?$:B)),this}reduce(T,$){let W=$;return this.steps.push((H=>(W=T(W,H),W))),this}latch(T=($,W)=>$===W){let $,W=!0;return this.steps.push((H=>{let K=W||!T(H,$);return W=!1,$=H,K?H:B})),this}evaluate(T){for(let $ of this.steps)if((T=$(T))===B)break;return T}}A.fromNodeEventEmitter=function(R,T,$=W=>W){let W=(...K)=>H.fire($(...K)),H=new I({onWillAddFirstListener:()=>R.on(T,W),onDidRemoveLastListener:()=>R.removeListener(T,W)});return H.event},A.fromDOMEventEmitter=function(R,T,$=W=>W){let W=(...K)=>H.fire($(...K)),H=new I({onWillAddFirstListener:()=>R.addEventListener(T,W),onDidRemoveLastListener:()=>R.removeEventListener(T,W)});return H.event},A.toPromise=function(R){return new Promise((T=>E(R)(T)))},A.fromPromise=function(R){let T=new I;return R.then(($=>{T.fire($)}),(()=>{T.fire(void 0)})).finally((()=>{T.dispose()})),T.event},A.forward=function(R,T){return R(($=>T.fire($)))},A.runAndSubscribe=function(R,T,$){return T($),R((W=>T(W)))};class P{constructor(T,$){this._observable=T,this._counter=0,this._hasChanged=!1;let W={onWillAddFirstListener:()=>{T.addObserver(this)},onDidRemoveLastListener:()=>{T.removeObserver(this)}};this.emitter=new I(W),$&&$.add(this.emitter)}beginUpdate(T){this._counter++}handlePossibleChange(T){}handleChange(T,$){this._hasChanged=!0}endUpdate(T){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}A.fromObservable=function(R,T){return new P(R,T).emitter.event},A.fromObservableLight=function(R){return(T,$,W)=>{let H=0,K=!1,re={beginUpdate(){H++},endUpdate(){H--,H===0&&(R.reportChanges(),K&&(K=!1,T.call($)))},handlePossibleChange(){},handleChange(){K=!0}};R.addObserver(re),R.reportChanges();let C={dispose(){R.removeObserver(re)}};return W instanceof a.DisposableStore?W.add(C):Array.isArray(W)&&W.push(C),C}}})(m||(i.Event=m={}));class w{static{this.all=new Set}static{this._idPool=0}constructor(E){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${E}_${w._idPool++}`,w.all.add(this)}start(E){this._stopWatch=new l.StopWatch,this.listenerCount=E}stop(){if(this._stopWatch){let E=this._stopWatch.elapsed();this.durations.push(E),this.elapsedOverall+=E,this.invocationCount+=1,this._stopWatch=void 0}}}i.EventProfiling=w;let n=-1;class g{static{this._idPool=1}constructor(E,U,z=(g._idPool++).toString(16).padStart(3,"0")){this._errorHandler=E,this.threshold=U,this.name=z,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(E,U){let z=this.threshold;if(z<=0||U<z)return;this._stacks||(this._stacks=new Map);let V=this._stacks.get(E.value)||0;if(this._stacks.set(E.value,V+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*z;let[G,B]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${U} listeners already. MOST frequent listener (${B}):`;console.warn(v),console.warn(G);let P=new u(v,G);this._errorHandler(P)}return()=>{let G=this._stacks.get(E.value)||0;this._stacks.set(E.value,G-1)}}getMostFrequentStack(){if(!this._stacks)return;let E,U=0;for(let[z,V]of this._stacks)(!E||U<V)&&(E=[z,V],U=V);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,q){super(E),this.name="ListenerLeakError",this.stack=q}}i.ListenerLeakError=u;class h extends Error{constructor(E,q){super(E),this.name="ListenerRefusalError",this.stack=q}}i.ListenerRefusalError=h;let y=0;class T{constructor(E){this.value=E,this.id=y++}}class C{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new w(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,q,K)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let P=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],S=new h(`${v}. HINT: Stack shows most frequent listener (${P[1]}-times)`,P[0]);return(this._options?.onListenerError||d.onUnexpectedError)(S),a.Disposable.None}if(this._disposed)return a.Disposable.None;q&&(E=E.bind(q));let Y=new T(E),F;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(Y.stack=f.create(),F=this._leakageMon.check(Y.stack,this._size+1)),this._listeners?this._listeners instanceof T?(this._deliveryQueue??=new x,this._listeners=[this._listeners,Y]):this._listeners.push(Y):(this._options?.onWillAddFirstListener?.(this),this._listeners=Y,this._options?.onDidAddFirstListener?.(this)),this._size++;let H=(0,a.toDisposable)((()=>{F?.(),this._removeListener(Y)}));return K instanceof a.DisposableStore?K.add(H):Array.isArray(K)&&K.push(H),H},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let q=this._listeners,K=q.indexOf(E);if(K===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,q[K]=void 0;let Y=this._deliveryQueue.current===this;if(2*this._size<=q.length){let F=0;for(let H=0;H<q.length;H++)q[H]?q[F++]=q[H]:Y&&(this._deliveryQueue.end--,F<this._deliveryQueue.i&&this._deliveryQueue.i--);q.length=F}}_deliver(E,q){if(!E)return;let K=this._options?.onListenerError||d.onUnexpectedError;if(K)try{E.value(q)}catch(Y){K(Y)}else E.value(q)}_deliverQueue(E){let q=E.current._listeners;for(;E.i<E.end;)this._deliver(q[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof T)this._deliver(this._listeners,E);else{let q=this._deliveryQueue;q.enqueue(this,E,this._listeners.length),this._deliverQueue(q)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=C,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,q,K){this.i=0,this.end=K,this.current=E,this.value=q}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends C{async fireAsync(A,E,q){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new b.LinkedList),((K,Y)=>{if(K instanceof T)Y(K);else for(let F=0;F<K.length;F++){let H=K[F];H&&Y(H)}})(this._listeners,(K=>this._asyncDeliveryQueue.push([K.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[K,Y]=this._asyncDeliveryQueue.shift(),F=[],H={...Y,token:E,waitUntil:v=>{if(Object.isFrozen(F))throw new Error("waitUntil can NOT be called asynchronous");q&&(v=q(v,K)),F.push(v)}};try{K(H)}catch(v){(0,d.onUnexpectedError)(v);continue}Object.freeze(F),await Promise.allSettled(F).then((v=>{for(let P of v)P.status==="rejected"&&(0,d.onUnexpectedError)(P.reason)}))}}};class N extends C{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new b.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=N,i.DebounceEmitter=class extends N{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends C{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class B{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new C({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let q={event:E,listener:null};return this.events.push(q),this.hasListeners&&this.hook(q),(0,a.toDisposable)((0,_.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(q);let K=this.events.indexOf(q);this.events.splice(K,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((q=>this.emitter.fire(q)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=B,i.DynamicListEventMultiplexer=class{constructor(A,E,q,K){this._store=new a.DisposableStore;let Y=this._store.add(new B),F=this._store.add(new a.DisposableMap);function H(v){F.set(v,Y.add(K(v)))}for(let v of A)H(v);this._store.add(E((v=>{H(v)}))),this._store.add(q((v=>{F.deleteAndDispose(v)}))),this.event=Y.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,q){return(K,Y,F)=>A((H=>{let v=this.data[this.data.length-1];if(!E)return void(v?v.buffers.push((()=>K.call(Y,H))):K.call(Y,H));let P=v;P?(P.items??=[],P.items.push(H),P.buffers.length===0&&v.buffers.push((()=>{P.reducedResult??=q?P.items.reduce(E,q):P.items.reduce(E),K.call(Y,P.reducedResult)}))):K.call(Y,E(q,H))}),void 0,F)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let q=A();return this.data.pop(),E.buffers.forEach((K=>K())),q}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new C({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new C,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let _=this,a,b=!1;return function(){if(b)return a;if(b=!0,d)try{a=c.apply(_,arguments)}finally{d()}else a=c.apply(_,arguments);return a}}},4218:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function _(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=_;let a=Object.freeze([]);function*b(l){yield l}d.empty=function(){return a},d.single=b,d.wrap=function(l){return _(l)?l:b(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let w=0;for(let n of l)if(m(n,w++))return!0;return!1},d.find=function(l,m){for(let w of l)if(m(w))return w},d.filter=function*(l,m){for(let w of l)m(w)&&(yield w)},d.map=function*(l,m){let w=0;for(let n of l)yield m(n,w++)},d.flatMap=function*(l,m){let w=0;for(let n of l)yield*m(n,w++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,w){let n=w;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,w=l.length){for(m<0&&(m+=l.length),w<0?w+=l.length:w>l.length&&(w=l.length);m<w;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let w=[];if(m===0)return[w,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[w,d.empty()];w.push(f.value)}return[w,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let w of l)m.push(w);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function(B){m=B},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function(B){return m?.markAsSingleton(B),B},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function(B){for(let D of B)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...B){let D=y((()=>h(B)));return(function(A,E){if(m)for(let q of A)m.setParent(q,E)})(B,D),D},i.toDisposable=y,i.disposeOnReturn=function(B){let D=new T;try{B(D)}finally{D.dispose()}};let d=c(3058),_=c(9087),a=c(2608),b=c(8841),l=c(4218),m=null;class w{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:w.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let q=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,q),q}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let H=new Map,v=[...this.livingDisposables.values()].filter((S=>S.source!==null&&!this.getRootParent(S,H).isSingleton));if(v.length===0)return;let P=new Set(v.map((S=>S.value)));if(E=v.filter((S=>!(S.parent&&P.has(S.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function q(H){let v=H.source.split(`
|
|
12
|
-
`).map((P=>P.trim().replace("at ",""))).filter((P=>P!==""));return(function(P,
|
|
13
|
-
`),
|
|
14
|
-
`)).size}/${E.length} leaks) at ${
|
|
15
|
-
`)),W=(0,_.groupBy)([...$].map((U
|
|
11
|
+
`))}}class u extends Error{constructor(E,U){super(E),this.name="ListenerLeakError",this.stack=U}}i.ListenerLeakError=u;class h extends Error{constructor(E,U){super(E),this.name="ListenerRefusalError",this.stack=U}}i.ListenerRefusalError=h;let y=0;class S{constructor(E){this.value=E,this.id=y++}}class I{constructor(E){this._size=0,this._options=E,this._leakageMon=n>0||this._options?.leakWarningThreshold?new g(E?.onListenerError??d.onUnexpectedError,this._options?.leakWarningThreshold??n):void 0,this._perfMon=this._options?._profName?new w(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(E,U,z)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let P=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],R=new h(`${v}. HINT: Stack shows most frequent listener (${P[1]}-times)`,P[0]);return(this._options?.onListenerError||d.onUnexpectedError)(R),a.Disposable.None}if(this._disposed)return a.Disposable.None;U&&(E=E.bind(U));let V=new S(E),G;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(V.stack=f.create(),G=this._leakageMon.check(V.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new x,this._listeners=[this._listeners,V]):this._listeners.push(V):(this._options?.onWillAddFirstListener?.(this),this._listeners=V,this._options?.onDidAddFirstListener?.(this)),this._size++;let B=(0,a.toDisposable)((()=>{G?.(),this._removeListener(V)}));return z instanceof a.DisposableStore?z.add(B):Array.isArray(z)&&z.push(B),B},this._event}_removeListener(E){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let U=this._listeners,z=U.indexOf(E);if(z===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,U[z]=void 0;let V=this._deliveryQueue.current===this;if(2*this._size<=U.length){let G=0;for(let B=0;B<U.length;B++)U[B]?U[G++]=U[B]:V&&(this._deliveryQueue.end--,G<this._deliveryQueue.i&&this._deliveryQueue.i--);U.length=G}}_deliver(E,U){if(!E)return;let z=this._options?.onListenerError||d.onUnexpectedError;if(z)try{E.value(U)}catch(V){z(V)}else E.value(U)}_deliverQueue(E){let U=E.current._listeners;for(;E.i<E.end;)this._deliver(U[E.i++],E.value);E.reset()}fire(E){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,E);else{let U=this._deliveryQueue;U.enqueue(this,E,this._listeners.length),this._deliverQueue(U)}this._perfMon?.stop()}hasListeners(){return this._size>0}}i.Emitter=I,i.createEventDeliveryQueue=()=>new x;class x{constructor(){this.i=-1,this.end=0}enqueue(E,U,z){this.i=0,this.end=z,this.current=E,this.value=U}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}i.AsyncEmitter=class extends I{async fireAsync(A,E,U){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new b.LinkedList),((z,V)=>{if(z instanceof S)V(z);else for(let G=0;G<z.length;G++){let B=z[G];B&&V(B)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,A])));this._asyncDeliveryQueue.size>0&&!E.isCancellationRequested;){let[z,V]=this._asyncDeliveryQueue.shift(),G=[],B={...V,token:E,waitUntil:v=>{if(Object.isFrozen(G))throw new Error("waitUntil can NOT be called asynchronous");U&&(v=U(v,z)),G.push(v)}};try{z(B)}catch(v){(0,d.onUnexpectedError)(v);continue}Object.freeze(G),await Promise.allSettled(G).then((v=>{for(let P of v)P.status==="rejected"&&(0,d.onUnexpectedError)(P.reason)}))}}};class N extends I{get isPaused(){return this._isPaused!==0}constructor(E){super(E),this._isPaused=0,this._eventQueue=new b.LinkedList,this._mergeFn=E?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let E=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(E))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(E){this._size&&(this._isPaused!==0?this._eventQueue.push(E):super.fire(E))}}i.PauseableEmitter=N,i.DebounceEmitter=class extends N{constructor(A){super(A),this._delay=A.delay??100}fire(A){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(A)}},i.MicrotaskEmitter=class extends I{constructor(A){super(A),this._queuedEvents=[],this._mergeFn=A?.merge}fire(A){this.hasListeners()&&(this._queuedEvents.push(A),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((E=>super.fire(E))),this._queuedEvents=[]})))}};class F{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new I({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(E){let U={event:E,listener:null};return this.events.push(U),this.hasListeners&&this.hook(U),(0,a.toDisposable)((0,_.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(U);let z=this.events.indexOf(U);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((E=>this.hook(E)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((E=>this.unhook(E)))}hook(E){E.listener=E.event((U=>this.emitter.fire(U)))}unhook(E){E.listener?.dispose(),E.listener=null}dispose(){this.emitter.dispose();for(let E of this.events)E.listener?.dispose();this.events=[]}}i.EventMultiplexer=F,i.DynamicListEventMultiplexer=class{constructor(A,E,U,z){this._store=new a.DisposableStore;let V=this._store.add(new F),G=this._store.add(new a.DisposableMap);function B(v){G.set(v,V.add(z(v)))}for(let v of A)B(v);this._store.add(E((v=>{B(v)}))),this._store.add(U((v=>{G.deleteAndDispose(v)}))),this.event=V.event}dispose(){this._store.dispose()}},i.EventBufferer=class{constructor(){this.data=[]}wrapEvent(A,E,U){return(z,V,G)=>A((B=>{let v=this.data[this.data.length-1];if(!E)return void(v?v.buffers.push((()=>z.call(V,B))):z.call(V,B));let P=v;P?(P.items??=[],P.items.push(B),P.buffers.length===0&&v.buffers.push((()=>{P.reducedResult??=U?P.items.reduce(E,U):P.items.reduce(E),z.call(V,P.reducedResult)}))):z.call(V,E(U,B))}),void 0,G)}bufferEvents(A){let E={buffers:new Array};this.data.push(E);let U=A();return this.data.pop(),E.buffers.forEach((z=>z())),U}},i.Relay=class{constructor(){this.listening=!1,this.inputEvent=m.None,this.inputEventListener=a.Disposable.None,this.emitter=new I({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(A){this.inputEvent=A,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=A(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},i.ValueWithChangeEvent=class{static const(A){return new D(A)}constructor(A){this._value=A,this._onDidChange=new I,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(A){A!==this._value&&(this._value=A,this._onDidChange.fire(void 0))}};class D{constructor(E){this.value=E,this.onDidChange=m.None}}},8841:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.createSingleCallFunction=function(c,d){let _=this,a,b=!1;return function(){if(b)return a;if(b=!0,d)try{a=c.apply(_,arguments)}finally{d()}else a=c.apply(_,arguments);return a}}},4218:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.Iterable=void 0,(function(d){function _(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}d.is=_;let a=Object.freeze([]);function*b(l){yield l}d.empty=function(){return a},d.single=b,d.wrap=function(l){return _(l)?l:b(l)},d.from=function(l){return l||a},d.reverse=function*(l){for(let m=l.length-1;m>=0;m--)yield l[m]},d.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},d.first=function(l){return l[Symbol.iterator]().next().value},d.some=function(l,m){let w=0;for(let n of l)if(m(n,w++))return!0;return!1},d.find=function(l,m){for(let w of l)if(m(w))return w},d.filter=function*(l,m){for(let w of l)m(w)&&(yield w)},d.map=function*(l,m){let w=0;for(let n of l)yield m(n,w++)},d.flatMap=function*(l,m){let w=0;for(let n of l)yield*m(n,w++)},d.concat=function*(...l){for(let m of l)yield*m},d.reduce=function(l,m,w){let n=w;for(let g of l)n=m(n,g);return n},d.slice=function*(l,m,w=l.length){for(m<0&&(m+=l.length),w<0?w+=l.length:w>l.length&&(w=l.length);m<w;m++)yield l[m]},d.consume=function(l,m=Number.POSITIVE_INFINITY){let w=[];if(m===0)return[w,l];let n=l[Symbol.iterator]();for(let g=0;g<m;g++){let f=n.next();if(f.done)return[w,d.empty()];w.push(f.value)}return[w,{[Symbol.iterator]:()=>n}]},d.asyncToArray=async function(l){let m=[];for await(let w of l)m.push(w);return Promise.resolve(m)}})(c||(i.Iterable=c={}))},7150:(k,i,c)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.DisposableMap=i.ImmortalReference=i.AsyncReferenceCollection=i.ReferenceCollection=i.SafeDisposable=i.RefCountedDisposable=i.MandatoryMutableDisposable=i.MutableDisposable=i.Disposable=i.DisposableStore=i.DisposableTracker=void 0,i.setDisposableTracker=function(F){m=F},i.trackDisposable=n,i.markAsDisposed=g,i.markAsSingleton=function(F){return m?.markAsSingleton(F),F},i.isDisposable=u,i.dispose=h,i.disposeIfDisposable=function(F){for(let D of F)u(D)&&D.dispose();return[]},i.combinedDisposable=function(...F){let D=y((()=>h(F)));return(function(A,E){if(m)for(let U of A)m.setParent(U,E)})(F,D),D},i.toDisposable=y,i.disposeOnReturn=function(F){let D=new S;try{F(D)}finally{D.dispose()}};let d=c(3058),_=c(9087),a=c(2608),b=c(8841),l=c(4218),m=null;class w{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let A=this.livingDisposables.get(D);return A||(A={parent:null,source:null,isSingleton:!1,value:D,idx:w.idx++},this.livingDisposables.set(D,A)),A}trackDisposable(D){let A=this.getDisposableData(D);A.source||(A.source=new Error().stack)}setParent(D,A){this.getDisposableData(D).parent=A}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,A){let E=A.get(D);if(E)return E;let U=D.parent?this.getRootParent(this.getDisposableData(D.parent),A):D;return A.set(D,U),U}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,A])=>A.source!==null&&!this.getRootParent(A,D).isSingleton)).flatMap((([A])=>A))}computeLeakingDisposables(D=10,A){let E;if(A)E=A;else{let B=new Map,v=[...this.livingDisposables.values()].filter((R=>R.source!==null&&!this.getRootParent(R,B).isSingleton));if(v.length===0)return;let P=new Set(v.map((R=>R.value)));if(E=v.filter((R=>!(R.parent&&P.has(R.parent)))),E.length===0)throw new Error("There are cyclic diposable chains!")}if(!E)return;function U(B){let v=B.source.split(`
|
|
12
|
+
`).map((P=>P.trim().replace("at ",""))).filter((P=>P!==""));return(function(P,R){for(;P.length>0&&R.some((T=>typeof T=="string"?T===P[0]:P[0].match(T)));)P.shift()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let z=new a.SetMap;for(let B of E){let v=U(B);for(let P=0;P<=v.length;P++)z.add(v.slice(0,P).join(`
|
|
13
|
+
`),B)}E.sort((0,d.compareBy)((B=>B.idx),d.numberComparator));let V="",G=0;for(let B of E.slice(0,D)){G++;let v=U(B),P=[];for(let R=0;R<v.length;R++){let T=v[R];T=`(shared with ${z.get(v.slice(0,R+1).join(`
|
|
14
|
+
`)).size}/${E.length} leaks) at ${T}`;let $=z.get(v.slice(0,R).join(`
|
|
15
|
+
`)),W=(0,_.groupBy)([...$].map((H=>U(H)[R])),(H=>H));delete W[v[R]];for(let[H,K]of Object.entries(W))P.unshift(` - stacktraces of ${K.length} other leaks continue with ${H}`);P.unshift(T)}V+=`
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
==================== Leaking disposable ${
|
|
18
|
+
==================== Leaking disposable ${G}/${E.length}: ${B.value.constructor.name} ====================
|
|
19
19
|
${P.join(`
|
|
20
20
|
`)}
|
|
21
21
|
============================================================
|
|
22
22
|
|
|
23
|
-
`}return E.length>D&&(
|
|
23
|
+
`}return E.length>D&&(V+=`
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
... and ${E.length-D} more leaking disposables
|
|
27
27
|
|
|
28
|
-
`),{leaks:E,details:Y}}}function n(B){return m?.trackDisposable(B),B}function g(B){m?.markAsDisposed(B)}function f(B,D){m?.setParent(B,D)}function u(B){return typeof B=="object"&&B!==null&&typeof B.dispose=="function"&&B.dispose.length===0}function h(B){if(l.Iterable.is(B)){let D=[];for(let A of B)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray(B)?[]:B}if(B)return B.dispose(),B}function y(B){let D=n({dispose:(0,b.createSingleCallFunction)((()=>{g(D),B()}))});return D}i.DisposableTracker=w;class T{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?T.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=T;class C{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new T,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=C;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor(B){this._disposable=new x,this._isDisposed=!1,this._disposable.value=B}get value(){return this._disposable.value}set value(B){this._isDisposed||B===this._disposable.value||(this._disposable.value=B)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor(B){this._disposable=B,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set(B){let D=B;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire(B,...D){let A=this.references.get(B);A||(A={counter:0,object:this.createReferencedObject(B,...D)},this.references.set(B,A));let{object:E}=A,q=(0,b.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject(B,A.object),this.references.delete(B))}));return A.counter++,{object:E,dispose:q}}},i.AsyncReferenceCollection=class{constructor(B){this.referenceCollection=B}async acquire(B,...D){let A=this.referenceCollection.acquire(B,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor(B){this.object=B}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=N},6317:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let b=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=b}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,b){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(b){let w=this._last;this._last=l,l.prev=w,w.next=l}else{let w=this._first;this._first=l,l.next=w,w.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let b=a.prev;b.next=a.next,a.next.prev=b}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,_,a){let b=d.get(_);return b===void 0&&(b=a,d.set(_,b)),b},i.mapToString=function(d){let _=[];return d.forEach(((a,b)=>{_.push(`${b} => ${a}`)})),`Map(${d.size}) {${_.join(", ")}}`},i.setToString=function(d){let _=[];return d.forEach((a=>{_.push(a)})),`Set(${d.size}) {${_.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,_){if(d===_)return!0;if(d.size!==_.size)return!1;for(let[a,b]of d)if(!_.has(a)||_.get(a)!==b)return!1;for(let[a]of _)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let _=this.map.get(d)||0;return _!==0&&(_--,_===0?this.map.delete(d):this.map.set(d,_),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[_,a]of d)this.set(_,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,_){this._m1.set(d,_),this._m2.set(_,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let _=this._m1.get(d);return _!==void 0&&(this._m1.delete(d),this._m2.delete(_),!0)}forEach(d,_){this._m1.forEach(((a,b)=>{d.call(_,a,b,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,_){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(_)}delete(d,_){let a=this.map.get(d);a&&(a.delete(_),a.size===0&&this.map.delete(d))}forEach(d,_){let a=this.map.get(d);a&&a.forEach(_)}get(d){return this.map.get(d)||new Set}}},9725:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(k){var i=t[k];if(i!==void 0)return i.exports;var c=t[k]={exports:{}};return e[k].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var k=s;Object.defineProperty(k,"__esModule",{value:!0}),k.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),_=r(5856),a=r(3027),b=r(7150),l=["cols","rows"];class m extends b.Disposable{constructor(n){super(),this._core=this._register(new _.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
|
|
29
|
-
`,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}k.Terminal=m})();var o=
|
|
28
|
+
`),{leaks:E,details:V}}}function n(F){return m?.trackDisposable(F),F}function g(F){m?.markAsDisposed(F)}function f(F,D){m?.setParent(F,D)}function u(F){return typeof F=="object"&&F!==null&&typeof F.dispose=="function"&&F.dispose.length===0}function h(F){if(l.Iterable.is(F)){let D=[];for(let A of F)if(A)try{A.dispose()}catch(E){D.push(E)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray(F)?[]:F}if(F)return F.dispose(),F}function y(F){let D=n({dispose:(0,b.createSingleCallFunction)((()=>{g(D),F()}))});return D}i.DisposableTracker=w;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,n(this)}dispose(){this._isDisposed||(g(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return f(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),f(D,null))}}i.DisposableStore=S;class I{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,n(this),f(this._store,this)}dispose(){g(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}i.Disposable=I;class x{constructor(){this._isDisposed=!1,n(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&f(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,g(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&f(D,null),D}}i.MutableDisposable=x,i.MandatoryMutableDisposable=class{constructor(F){this._disposable=new x,this._isDisposed=!1,this._disposable.value=F}get value(){return this._disposable.value}set value(F){this._isDisposed||F===this._disposable.value||(this._disposable.value=F)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},i.RefCountedDisposable=class{constructor(F){this._disposable=F,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},i.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,n(this)}set(F){let D=F;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,g(this))},this}},i.ReferenceCollection=class{constructor(){this.references=new Map}acquire(F,...D){let A=this.references.get(F);A||(A={counter:0,object:this.createReferencedObject(F,...D)},this.references.set(F,A));let{object:E}=A,U=(0,b.createSingleCallFunction)((()=>{--A.counter==0&&(this.destroyReferencedObject(F,A.object),this.references.delete(F))}));return A.counter++,{object:E,dispose:U}}},i.AsyncReferenceCollection=class{constructor(F){this.referenceCollection=F}async acquire(F,...D){let A=this.referenceCollection.acquire(F,...D);try{return{object:await A.object,dispose:()=>A.dispose()}}catch(E){throw A.dispose(),E}}},i.ImmortalReference=class{constructor(F){this.object=F}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,n(this)}dispose(){g(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,A,E=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),E||this._store.get(D)?.dispose(),this._store.set(D,A)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let A=this._store.get(D);return this._store.delete(D),A}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}i.DisposableMap=N},6317:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.LinkedList=void 0;class c{static{this.Undefined=new c(void 0)}constructor(a){this.element=a,this.next=c.Undefined,this.prev=c.Undefined}}class d{constructor(){this._first=c.Undefined,this._last=c.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===c.Undefined}clear(){let a=this._first;for(;a!==c.Undefined;){let b=a.next;a.prev=c.Undefined,a.next=c.Undefined,a=b}this._first=c.Undefined,this._last=c.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,b){let l=new c(a);if(this._first===c.Undefined)this._first=l,this._last=l;else if(b){let w=this._last;this._last=l,l.prev=w,w.next=l}else{let w=this._first;this._first=l,l.next=w,w.prev=l}this._size+=1;let m=!1;return()=>{m||(m=!0,this._remove(l))}}shift(){if(this._first!==c.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==c.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==c.Undefined&&a.next!==c.Undefined){let b=a.prev;b.next=a.next,a.next.prev=b}else a.prev===c.Undefined&&a.next===c.Undefined?(this._first=c.Undefined,this._last=c.Undefined):a.next===c.Undefined?(this._last=this._last.prev,this._last.next=c.Undefined):a.prev===c.Undefined&&(this._first=this._first.next,this._first.prev=c.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==c.Undefined;)yield a.element,a=a.next}}i.LinkedList=d},2608:(k,i)=>{var c;Object.defineProperty(i,"__esModule",{value:!0}),i.SetMap=i.BidirectionalMap=i.CounterSet=i.Touch=void 0,i.getOrSet=function(d,_,a){let b=d.get(_);return b===void 0&&(b=a,d.set(_,b)),b},i.mapToString=function(d){let _=[];return d.forEach(((a,b)=>{_.push(`${b} => ${a}`)})),`Map(${d.size}) {${_.join(", ")}}`},i.setToString=function(d){let _=[];return d.forEach((a=>{_.push(a)})),`Set(${d.size}) {${_.join(", ")}}`},i.mapsStrictEqualIgnoreOrder=function(d,_){if(d===_)return!0;if(d.size!==_.size)return!1;for(let[a,b]of d)if(!_.has(a)||_.get(a)!==b)return!1;for(let[a]of _)if(!d.has(a))return!1;return!0},(function(d){d[d.None=0]="None",d[d.AsOld=1]="AsOld",d[d.AsNew=2]="AsNew"})(c||(i.Touch=c={})),i.CounterSet=class{constructor(){this.map=new Map}add(d){return this.map.set(d,(this.map.get(d)||0)+1),this}delete(d){let _=this.map.get(d)||0;return _!==0&&(_--,_===0?this.map.delete(d):this.map.set(d,_),!0)}has(d){return this.map.has(d)}},i.BidirectionalMap=class{constructor(d){if(this._m1=new Map,this._m2=new Map,d)for(let[_,a]of d)this.set(_,a)}clear(){this._m1.clear(),this._m2.clear()}set(d,_){this._m1.set(d,_),this._m2.set(_,d)}get(d){return this._m1.get(d)}getKey(d){return this._m2.get(d)}delete(d){let _=this._m1.get(d);return _!==void 0&&(this._m1.delete(d),this._m2.delete(_),!0)}forEach(d,_){this._m1.forEach(((a,b)=>{d.call(_,a,b,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},i.SetMap=class{constructor(){this.map=new Map}add(d,_){let a=this.map.get(d);a||(a=new Set,this.map.set(d,a)),a.add(_)}delete(d,_){let a=this.map.get(d);a&&(a.delete(_),a.size===0&&this.map.delete(d))}forEach(d,_){let a=this.map.get(d);a&&a.forEach(_)}get(d){return this.map.get(d)||new Set}}},9725:(k,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.StopWatch=void 0;let c=globalThis.performance&&typeof globalThis.performance.now=="function";class d{static create(a){return new d(a)}constructor(a){this._now=c&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}i.StopWatch=d}},t={};function r(k){var i=t[k];if(i!==void 0)return i.exports;var c=t[k]={exports:{}};return e[k].call(c.exports,c,c.exports,r),c.exports}var s={};(()=>{var k=s;Object.defineProperty(k,"__esModule",{value:!0}),k.Terminal=void 0;let i=r(5101),c=r(6097),d=r(4335),_=r(5856),a=r(3027),b=r(7150),l=["cols","rows"];class m extends b.Disposable{constructor(n){super(),this._core=this._register(new _.Terminal(n)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let g=u=>this._core.options[u],f=(u,h)=>{this._checkReadonlyOptions(u),this._core.options[u]=h};for(let u in this._core.options){Object.defineProperty(this._publicOptions,u,{get:()=>this._core.options[u],set:y=>{this._checkReadonlyOptions(u),this._core.options[u]=y}});let h={get:g.bind(this,u),set:f.bind(this,u)};Object.defineProperty(this._publicOptions,u,h)}}_checkReadonlyOptions(n){if(l.includes(n))throw new Error(`Option "${n}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new c.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new i.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let n=this._core.coreService.decPrivateModes,g="none";switch(this._core.coreMouseService.activeProtocol){case"X10":g="x10";break;case"VT200":g="vt200";break;case"DRAG":g="drag";break;case"ANY":g="any"}return{applicationCursorKeysMode:n.applicationCursorKeys,applicationKeypadMode:n.applicationKeypad,bracketedPasteMode:n.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:g,originMode:n.origin,reverseWraparoundMode:n.reverseWraparound,sendFocusMode:n.sendFocus,synchronizedOutputMode:n.synchronizedOutput,wraparoundMode:n.wraparound}}get options(){return this._publicOptions}set options(n){for(let g in n)this._publicOptions[g]=n[g]}input(n,g=!0){this._core.input(n,g)}resize(n,g){this._verifyIntegers(n,g),this._core.resize(n,g)}registerMarker(n=0){return this._checkProposedApi(),this._verifyIntegers(n),this._core.addMarker(n)}addMarker(n){return this.registerMarker(n)}dispose(){super.dispose()}scrollLines(n){this._verifyIntegers(n),this._core.scrollLines(n)}scrollPages(n){this._verifyIntegers(n),this._core.scrollPages(n)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(n){this._verifyIntegers(n),this._core.scrollToLine(n)}clear(){this._core.clear()}write(n,g){this._core.write(n,g)}writeln(n,g){this._core.write(n),this._core.write(`\r
|
|
29
|
+
`,g)}reset(){this._core.reset()}loadAddon(n){this._addonManager.loadAddon(this,n)}_verifyIntegers(...n){for(let g of n)if(g===1/0||isNaN(g)||g%1!=0)throw new Error("This API only accepts integers")}}k.Terminal=m})();var o=Ao;for(var p in s)o[p]=s[p];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Me();function nn(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
|
+
`+we());return{mode:"command",command:{kind:"addRepo",path:r}}}if(t.length>=3&&t[0]==="workspace"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Workspace path cannot be empty.
|
|
32
32
|
|
|
33
|
-
`+
|
|
33
|
+
`+we());return{mode:"command",command:{kind:"addWorkspace",path:r}}}if(t.length===2&&t[0]==="repo"&&t[1]==="list")return{mode:"command",command:{kind:"listRepos"}};if(t.length===3&&t[0]==="repo"&&t[1]==="remove")return{mode:"command",command:{kind:"removeRepo",repoId:t[2].trim()}};if(t.length>=2&&t.length<=3&&t[0]==="workspace"&&t[1]==="list"){let r=t[2]==="--archived";if(t.length===3&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
|
|
34
34
|
|
|
35
|
-
${
|
|
35
|
+
${we()}`);return{mode:"command",command:{kind:"listWorkspaces",archived:r}}}if(t.length===3&&t[0]==="workspace"&&t[1]==="archive")return{mode:"command",command:{kind:"archiveWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="restore")return{mode:"command",command:{kind:"restoreWorkspace",workspaceId:t[2].trim()}};if(t.length===3&&t[0]==="workspace"&&t[1]==="remove")return{mode:"command",command:{kind:"removeWorkspace",workspaceId:t[2].trim()}};if(t.length>=2&&t[0]==="task"&&t[1]==="new"){let r=t.indexOf("--repo"),s=t.indexOf("--workspace"),o=t.indexOf("--runner");if(r===-1&&s===-1)throw new Error(`Task creation now requires '--repo <repo-id>' or '--workspace <workspace-id>'.
|
|
36
36
|
|
|
37
|
-
`+
|
|
37
|
+
`+we());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
|
|
38
38
|
|
|
39
|
-
`+
|
|
39
|
+
`+we());let p=r===-1?void 0:t[r+1]?.trim()??"",k=s===-1?void 0:t[s+1]?.trim()??"",i=o===-1?void 0:sn(t[o+1]?.trim()??""),d=t.filter((_,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(p!==void 0&&p.length===0)throw new Error(`Repo id cannot be empty.
|
|
40
40
|
|
|
41
|
-
`+
|
|
41
|
+
`+we());if(k!==void 0&&k.length===0)throw new Error(`Workspace id cannot be empty.
|
|
42
42
|
|
|
43
|
-
`+
|
|
43
|
+
`+we());if(d.length===0)throw new Error(`Task prompt cannot be empty.
|
|
44
44
|
|
|
45
|
-
`+
|
|
45
|
+
`+we());return{mode:"command",command:{kind:"createTask",...p?{repoId:p}:{},...k?{workspaceId:k}:{},prompt:d,...i?{runner:i}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
46
46
|
|
|
47
|
-
${
|
|
47
|
+
${we()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:je(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:je(t[2])}};if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:je(t[2]),repoId:Ga(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:je(t[2])}};throw new Error(`Unsupported command: ${t.join(" ")}
|
|
48
48
|
|
|
49
|
-
${
|
|
50
|
-
`)}function
|
|
49
|
+
${we()}`)}function we(){return["Craig commands:"," craig Show the Craig phase 0 placeholder"," craig repo add Register a repo in the current Craig workspace"," craig workspace add <path> Register a repo or parent-directory workspace"," craig repo list List registered repos"," craig repo remove Remove a registered repo"," craig workspace list List active workspaces"," craig workspace list --archived List archived workspaces"," craig workspace archive Archive a workspace"," craig workspace restore Restore an archived workspace"," craig workspace remove Remove an archived workspace"," craig task new --repo <repo-id> [--runner codex|cursor|claude] <prompt> Create a new Craig repo task"," craig task new --workspace <workspace-id> [--runner codex|cursor|claude] <prompt> Create a new Craig workspace task"," craig task list [--repo <repo-id>] List known Craig tasks"," craig task show Show details for a Craig task"," craig task logs Stream Craig-managed logs for a task"," craig task diff Show the current worktree diff for a task"," craig task attach Attach to a live task session"," craig task focus Focus the tmux pane for a task"," craig task open Open the task worktree or print its path"," craig task check Run configured checks for a task"," craig task commit Commit all task worktree changes"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
|
|
50
|
+
`)}function je(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
|
|
51
51
|
|
|
52
|
-
${
|
|
52
|
+
${we()}`);return t}function Ga(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
|
|
53
53
|
|
|
54
|
-
${
|
|
55
|
-
`,"utf8")}function on(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!de.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${de.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function Ka(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}We();import{readFile as Ya,readdir as Uf,rm as qf}from"node:fs/promises";import Qa from"node:path";async function mt(e,t){let r=await Ya(Wr(e,t),"utf8"),s=JSON.parse(r);return Ja(s,Wr(e,t))}async function nt(e,t){await ue(Wr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Wr(e,t){return Qa.join(e.sessionsDir,`${t}.json`)}function Ja(e,t){let r=tc(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")||!ec(r.attach)||!Za(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 Za(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 ec(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 tc(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Re();wt();Ce();function zt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as Ac,constants as Dc}from"node:fs";import{homedir as _n}from"node:os";import Qe from"node:path";var Lc=[Qe.join(_n(),".local","bin"),Qe.join(_n(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function bn(e=process.env){return Oc([...(e.PATH??"").split(Qe.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Lc])}function at(e=process.env){return{...e,PATH:bn(e).join(Qe.delimiter)}}function Mc(e,t={}){if(e.includes(Qe.sep)){let r=Qe.isAbsolute(e)?e:Qe.resolve(t.cwd??process.cwd(),e);return wn(r)?r:null}for(let r of bn(t.env)){let s=Qe.join(r,e);if(wn(s))return s}return null}function ct(e,t={}){let r=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 wn(e){try{return Ac(e,Dc.X_OK),!0}catch{return!1}}function Oc(e){return[...new Set(e)]}Ae();Ce();import{spawn as Bc}from"node:child_process";import{createHash as $c}from"node:crypto";import Fc from"node:path";var Nc="craig";async function kn(e,t,r){let s=Kr(e,t),o=jc(),p=await ee("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),k=Uc(p.stdout);return await Wc(e,s),k}async function Wc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await ee("tmux",s,{cwd:e})}async function yn(e,t,r){await ee("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function vn(e,t,r){await ee("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Sn(e,t,r){await ee("tmux",["pipe-pane","-o","-t",e,`cat >> ${zt(t)}`],{cwd:r})}async function Gt(e,t,r,s){let o=s??Tn(e);if(r?await ee("tmux",["select-window","-t",r],{cwd:e}):await ee("tmux",["select-window","-t",t],{cwd:e}),await ee("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await ee("tmux",["switch-client","-t",o],{cwd:e});return}await Kc(e,["attach-session","-t",o])}function Tn(e){let r=Fc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=$c("sha1").update(e).digest("hex").slice(0,8);return`${Nc}-${r}-${s}`}function Kr(e,t){return`${Tn(e)}-${t.toLowerCase()}`}function jc(){let e=Hc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Hc(){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 Uc(e){let t=qc(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 qc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Kc(e,t){await new Promise((r,s)=>{let o=Bc("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 Vr={async prepare(e,t){let r=e.runnerSession.command[0]??we(e.runner)[0],s=at();await ee(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:we(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await vn(t.session.paneId,[s,...r.slice(1)].map(o=>zt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ae();Ce();var Rt={async create(e,t){let r=await kn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Sn(r.paneId,t.logPath,t.repoRoot);let s=await Rn({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),o={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||Kr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Rt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Gt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await yn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return Vc(e,t)}};async function Vc(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return Rn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function Rn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Re();Ct();import{mkdir as It,rm as sl,writeFile as Zt}from"node:fs/promises";import ie from"node:path";Ce();async function En(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function 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 k=await rl(e,o);await ee("git",["worktree","add","-b",t,r,k],{cwd:e})}async function rl(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Jt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function An(e){await ee("git",["add","-A"],{cwd:e})}async function Dn(e,t){await ee("git",["commit","-m",t],{cwd:e})}async function Ln(e){let t=await ee("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
-
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}
|
|
54
|
+
${we()}`);return t}import Un from"node:path";Me();import{mkdir as Ya,readFile as Xa,writeFile as Qa}from"node:fs/promises";import Ja from"node:path";async function He(e){try{let t=await Xa(e.configFile,"utf8"),r=JSON.parse(t);return an(r,e.configFile)}catch(t){if(Za(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 on(e,t){an(t,e.configFile),await Ya(Ja.dirname(e.configFile),{recursive:!0}),await Qa(e.configFile,`${JSON.stringify(t,null,2)}
|
|
55
|
+
`,"utf8")}function an(e,t){if(typeof e!="object"||e===null)throw new Error(`Craig config at ${t} is invalid. Expected a JSON object.`);let r=e;if(r.runners!==void 0){if(typeof r.runners!="object"||r.runners===null||Array.isArray(r.runners))throw new Error(`Craig config at ${t} is invalid. "runners" must be an object.`);for(let[s,o]of Object.entries(r.runners)){if(!ue.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${ue.join(", ")}.`);if(typeof o!="object"||o===null||Array.isArray(o))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" must be an object.`);let p=o;if(p.enabled!==void 0&&typeof p.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(p.path!==void 0&&(typeof p.path!="string"||p.path.trim().length===0))throw new Error(`Craig config at ${t} is invalid. "runners.${s}.path" must be a non-empty string.`)}}if(r.checks!==void 0&&(typeof r.checks!="object"||r.checks===null||!Array.isArray(r.checks.commands)||!r.checks.commands.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "checks.commands" must be an array of strings.`);if(r.open!==void 0&&(typeof r.open!="object"||r.open===null||!Array.isArray(r.open.command)||!r.open.command.every(s=>typeof s=="string")))throw new Error(`Craig config at ${t} is invalid. "open.command" must be an array of strings.`);if(r.github!==void 0){if(typeof r.github!="object"||r.github===null)throw new Error(`Craig config at ${t} is invalid. "github" must be an object.`);if(r.github.mergeMethod!==void 0&&r.github.mergeMethod!=="merge"&&r.github.mergeMethod!=="rebase"&&r.github.mergeMethod!=="squash")throw new Error(`Craig config at ${t} is invalid. "github.mergeMethod" must be "merge", "rebase", or "squash".`);if(r.github.watchIntervalSeconds!==void 0&&(!Number.isInteger(r.github.watchIntervalSeconds)||r.github.watchIntervalSeconds<=0))throw new Error(`Craig config at ${t} is invalid. "github.watchIntervalSeconds" must be a positive integer.`)}return r}function Za(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Ue();import{readFile as nc,readdir as op,rm as ap}from"node:fs/promises";import ic from"node:path";async function mt(e,t){let r=await nc(jr(e,t),"utf8"),s=JSON.parse(r);return oc(s,jr(e,t))}async function nt(e,t){await he(jr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function jr(e,t){return ic.join(e.sessionsDir,`${t}.json`)}function oc(e,t){let r=lc(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")||!cc(r.attach)||!ac(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 ac(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 cc(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 lc(e){let t=typeof e=="object"&&e!==null?e:{};return{id:t.id??"",taskId:t.taskId??"",repoId:t.repoId??"",workspaceId:t.workspaceId??"",substrate:t.substrate??"tmux",sessionName:t.sessionName??"",paneId:t.paneId??"",windowTarget:typeof t.windowTarget=="string"?t.windowTarget:null,worktreePath:t.worktreePath??"",logPath:typeof t.logPath=="string"?t.logPath:null,command:Array.isArray(t.command)?t.command.filter(r=>typeof r=="string"):[],status:t.status??"starting",startedAt:typeof t.startedAt=="string"?t.startedAt:null,exitedAt:typeof t.exitedAt=="string"?t.exitedAt:null,exitCode:typeof t.exitCode=="number"?t.exitCode:null,lastAttachedAt:typeof t.lastAttachedAt=="string"?t.lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:typeof t.attach=="object"&&t.attach!==null&&t.attach.lastSize&&typeof t.attach.lastSize.columns=="number"&&typeof t.attach.lastSize.rows=="number"?t.attach.lastSize:null},snapshot:t.snapshot&&typeof t.snapshot=="object"?{paneId:typeof t.snapshot.paneId=="string"?t.snapshot.paneId:t.paneId??"",windowTarget:typeof t.snapshot.windowTarget=="string"?t.snapshot.windowTarget:null,alive:!!t.snapshot.alive,capturedAt:typeof t.snapshot.capturedAt=="string"?t.snapshot.capturedAt:new Date().toISOString()}:null,createdAt:t.createdAt??"",updatedAt:t.updatedAt??""}}Ie();wt();Ee();function Gt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as Nc,constants as Wc}from"node:fs";import{homedir as wn}from"node:os";import Ze from"node:path";var jc=[Ze.join(wn(),".local","bin"),Ze.join(wn(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function kn(e=process.env){return Uc([...(e.PATH??"").split(Ze.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:jc])}function at(e=process.env){return{...e,PATH:kn(e).join(Ze.delimiter)}}function Hc(e,t={}){if(e.includes(Ze.sep)){let r=Ze.isAbsolute(e)?e:Ze.resolve(t.cwd??process.cwd(),e);return bn(r)?r:null}for(let r of kn(t.env)){let s=Ze.join(r,e);if(bn(s))return s}return null}function ct(e,t={}){let r=Hc(e,t);if(r)return r;throw new Error(`Command not found: ${e}. Install it or add its directory to PATH. Craig also checks ~/.local/bin, /opt/homebrew/bin, and /usr/local/bin.`)}function bn(e){try{return Nc(e,Wc.X_OK),!0}catch{return!1}}function Uc(e){return[...new Set(e)]}Me();Ee();import{spawn as qc}from"node:child_process";import{createHash as Kc}from"node:crypto";import Vc from"node:path";var zc="craig";async function yn(e,t,r){let s=Vr(e,t),o=Yc(),p=await ee("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),k=Qc(p.stdout);return await Gc(e,s),k}async function Gc(e,t){let r=[["set-option","-t",t,"status","off"],["set-option","-t",t,"detach-on-destroy","off"],["set-window-option","-t",t,"pane-border-status","off"],["set-window-option","-t",t,"aggressive-resize","on"]];for(let s of r)await ee("tmux",s,{cwd:e})}async function vn(e,t,r){await ee("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function Sn(e,t,r){await ee("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Tn(e,t,r){await ee("tmux",["pipe-pane","-o","-t",e,`cat >> ${Gt(t)}`],{cwd:r})}async function Yt(e,t,r,s){let o=s??Rn(e);if(r?await ee("tmux",["select-window","-t",r],{cwd:e}):await ee("tmux",["select-window","-t",t],{cwd:e}),await ee("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await ee("tmux",["switch-client","-t",o],{cwd:e});return}await Zc(e,["attach-session","-t",o])}function Rn(e){let r=Vc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=Kc("sha1").update(e).digest("hex").slice(0,8);return`${zc}-${r}-${s}`}function Vr(e,t){return`${Rn(e)}-${t.toLowerCase()}`}function Yc(){let e=Xc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function Xc(){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 Qc(e){let t=Jc(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 Jc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function Zc(e,t){await new Promise((r,s)=>{let o=qc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",p=>{if(p===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${p??"unknown"}.`))})})}var zr={async prepare(e,t){let r=e.runnerSession.command[0]??_e(e.runner)[0],s=at();await ee(ct(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:_e(e.runner,e.prompt.value),s=ct(r[0],{cwd:e.worktreePath,env:at()});await Sn(t.session.paneId,[s,...r.slice(1)].map(o=>Gt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Me();Ee();var Rt={async create(e,t){let r=await yn(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Tn(r.paneId,t.logPath,t.repoRoot);let s=await Pn({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),o={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||Vr(t.repoRoot,t.taskId),paneId:r.paneId,windowTarget:r.windowTarget,worktreePath:t.worktreePath,logPath:t.logPath,command:t.command,status:"starting",startedAt:null,exitedAt:null,exitCode:null,lastAttachedAt:null,attach:{detachChord:"ctrl+]",lastSize:null},snapshot:s,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await nt(e,o),o},async attach(e,t,r){let s=await Rt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Yt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await nt(e,o),o},async resize(e,t,r,s){await vn(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await nt(e,o),o},async write(){throw new Error("Direct session writes are owned by the terminal bridge.")},async read(){throw new Error("Direct session reads are owned by the terminal bridge.")},async terminate(e,t,r){let s={...t,status:"failed",exitedAt:new Date().toISOString(),snapshot:{...t.snapshot??{paneId:t.paneId,windowTarget:t.windowTarget,alive:!1,capturedAt:new Date().toISOString()},alive:!1,capturedAt:new Date().toISOString()},command:(r.length>0,t.command)};return await nt(e,s),s},async snapshot(e,t){return el(e,t)}};async function el(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return Pn({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function Pn(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}dt();Ie();Ct();import{mkdir as It,rm as ul,writeFile as er}from"node:fs/promises";import ie from"node:path";Ee();async function An(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Gr(e,t,r,s="main"){let o=s.trim()||"main";if((await oe("git",["show-ref","--verify","--quiet",`refs/heads/${o}`],{cwd:e})).exitCode!==0)throw new Error(`Base branch '${o}' does not exist locally.`);let k=await dl(e,o);await ee("git",["worktree","add","-b",t,r,k],{cwd:e})}async function dl(e,t){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin",t],{cwd:e})).exitCode!==0?t:(await oe("git",["show-ref","--verify","--quiet",`refs/remotes/origin/${t}`],{cwd:e})).exitCode===0?`refs/remotes/origin/${t}`:t}async function Zt(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function Dn(e){await ee("git",["add","-A"],{cwd:e})}async function Ln(e,t){await ee("git",["commit","-m",t],{cwd:e})}async function Mn(e){let t=await ee("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
|
|
56
|
+
`);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}Me();ot();async function On(e,t){let r=await Ce(e),s=$n(new Date),o=Fn(r.taskIds,s);for(;;){let p=`task_${s}_${String(o).padStart(2,"0")}`,k=`craig/${p}`;if(!await An(t,k))return p;o+=1}}async function Bn(e){let t=await Ce(e),r=$n(new Date),s=Fn(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function $n(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 Fn(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 Wn=["AGENTS","md"].join(".");async function xt(e,t,r,s={}){let o=await Be(e,t),p=await ml(e,o.id),k=await On(e,o.rootPath),i=s.sessionId??null,c=`craig/${k}`,d=ie.join(e.worktreesDir,o.id,k),_=ie.join(e.logsDir,`${k}.log`),a=ie.join(e.artifactsDir,k);await It(ie.dirname(d),{recursive:!0}),await It(a,{recursive:!0}),await er(_,"","utf8");let b=hl(e,{taskId:k,repoId:o.id,workspaceId:p.id,sessionId:i,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:c,worktreePath:d});return await se(e,b),await qr(e,k),await Gr(o.rootPath,c,d,o.defaultBranch),{repoId:o.id,repoRoot:o.rootPath,sessionId:i,workspaceId:p.id,task:b}}async function rr(e,t,r,s={}){let o=(await $e(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 xt(e,o.primaryRepoId,r,s);return{...h,bundlePath:h.task.worktreePath,repoTargets:[]}}let p=o.discoveredRepoIds??[];if(p.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let k=await Bn(e),i=new Date().toISOString(),c=s.runner??"codex",d=s.sessionId??null,_=`craig/${k}`,a=ie.join(e.craigDir,"task-bundles",k),b=ie.join(e.logsDir,`${k}.log`),l=ie.join(e.artifactsDir,k);await It(a,{recursive:!0}),await It(l,{recursive:!0}),await er(b,"","utf8");let m=await Promise.all(p.map(h=>Be(e,h))),w=pl(m),n=await Promise.all(m.map(h=>fl(e,h,k,_,ie.join(a,w.get(h.id))))),g=n.find(h=>h.status==="ready")??n[0];if(!n.some(h=>h.status==="ready"))throw await ul(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 er(ie.join(a,"manifest.json"),JSON.stringify({taskId:k,workspaceId:t,prompt:r,repos:n.map(h=>({repoId:h.repoId,repoName:m.find(y=>y.id===h.repoId)?.name??h.repoId,path:ie.relative(a,h.worktreePath),status:h.status,worktreePath:h.worktreePath,failureReason:h.failureReason}))},null,2),"utf8"),await er(ie.join(a,Wn),gl({taskId:k,workspaceId:t,prompt:r,repos:m,repoTargets:n,bundlePath:a}),"utf8");let f=jn(k,r,i,c,s.config??{}),u={id:k,title:r,slug:Hn(r),type:"project",status:"draft",runner:c,repoId:g.repoId,workspaceId:o.id,sessionId:d,selectedPtyTabId:f[0]?.id??null,linkedRepoIds:p.filter(h=>h!==g.repoId),repoRoot:a,worktreePath:a,branch:_,bundlePath:a,selectedRepoTargetId:g.repoId,repoTargets:n,ptyTabs:f,runnerSession:{command:_e(c,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:g.checks,lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,b),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(l,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(l,"pr-status.json"))},cleanup:tr(),lastFailureReason:n.every(h=>h.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:i,updatedAt:i};return await se(e,u),await qr(e,k),{repoId:g.repoId,repoRoot:a,sessionId:d,workspaceId:o.id,task:u,bundlePath:a,repoTargets:n}}function jn(e,t,r,s="codex",o={}){let p=Se(s);return[{id:`${e}:agent`,kind:"agent",title:p.defaultAgentTitle,command:_e(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function hl(e,t){let r=new Date().toISOString(),s=jn(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Hn(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:_e(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Yr(ie.relative(e.workspaceRoot,e.configFile))},lastCommit:null,prs:[],artifacts:{logPath:ie.relative(e.workspaceRoot,ie.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:ie.relative(e.workspaceRoot,ie.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:tr(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function fl(e,t,r,s,o){await It(ie.dirname(o),{recursive:!0});try{return await Gr(t.rootPath,s,o,t.defaultBranch),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Yr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Nn(),cleanup:tr()}}catch(p){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:p instanceof Error?p.message:"Failed to create worktree.",checks:Yr(ie.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Nn(),cleanup:tr()}}}function pl(e){let t=new Set(["manifest.json",Wn]),r=new Map;for(let s of e){let o=t.has(s.name)?`${s.name}-repo`:s.name,p=o,k=2;for(;t.has(p);)p=`${o}-${k}`,k+=1;t.add(p),r.set(s.id,p)}return r}function gl(e){let t=new Map(e.repos.map(s=>[s.id,s.name])),r=e.repoTargets.map(s=>{let o=t.get(s.repoId)??s.repoId,p=ie.relative(e.bundlePath,s.worktreePath),k=s.status==="ready"?"ready":`unavailable: ${s.failureReason??"unknown error"}`;return`- \`${p}/\` - ${o} (${s.repoId}, ${k})`}).join(`
|
|
57
57
|
`);return["# Craig Project Task Bundle","","This directory is a Craig project task bundle. Repo work must happen inside the child repo worktrees listed below.","","Run repo Git commands from a repo worktree directory, not from the bundle root. Use `manifest.json` as the machine-readable source of truth for this bundle.","",`Task: \`${e.taskId}\``,`Workspace: \`${e.workspaceId}\``,`Prompt: ${e.prompt}`,"","## Repo Worktrees","",r,""].join(`
|
|
58
|
-
`)}function
|
|
58
|
+
`)}function Yr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Nn(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,requiredChecks:[],comments:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function tr(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function ml(e,t){let s=(await $e(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 Hn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function qn(e,t,r,s={}){let o=r.trim(),p=await He(e),k=s.runner??st(p);if(Vt(k,p),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let i=s.workspaceId?await rr(e,s.workspaceId,o,{runner:k,config:p}):await xt(e,t,o,{runner:k,config:p}),c=i.task,d=_e(k,o,p),_=`session_${c.id}`,a=c.artifacts.logPath?Un.resolve(e.workspaceRoot,c.artifacts.logPath):Un.join(e.logsDir,`${c.id}.log`);try{await zr.prepare(c,{repoRoot:i.repoRoot});let b=await Rt.create(e,{sessionId:_,taskId:c.id,repoId:i.repoId,workspaceId:i.workspaceId,repoRoot:i.repoRoot,worktreePath:c.worktreePath,logPath:a,command:d});await zr.launch(c,{repoRoot:i.repoRoot,session:b});let l=new Date().toISOString();b={...b,status:"running",startedAt:l,command:d};let m={...c,status:"running",runner:k,sessionId:b.id,selectedPtyTabId:c.selectedPtyTabId,runnerSession:{command:b.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await se(e,m),await nt(e,b),await xe({uiStateFile:e.uiStateFile},{...await Oe({uiStateFile:e.uiStateFile})??qe(),selectedRepoId:m.repoId,selectedWorkspaceId:m.workspaceId,selectedTaskId:m.id,selectedPtyTabId:m.selectedPtyTabId}),{kind:"createTask",taskId:m.id,repoId:m.repoId,workspaceId:m.workspaceId,sessionId:b.id,status:m.status,branch:m.branch,worktreePath:m.worktreePath,runner:m.runner}}catch(b){let l={...c,sessionId:null,status:"draft",runnerSession:{...c.runnerSession,lastKnownState:"failed"},lastFailureReason:b instanceof Error?b.message:"Unknown Craig error"};throw await se(e,l),b}}Et();dt();Ie();import{access as Wl}from"node:fs/promises";import ni from"node:path";Ue();Ie();import{mkdir as wl,readFile as Eg,writeFile as Ag}from"node:fs/promises";import bl from"node:path";Ee();import Kn from"node:path";function sr(e,t){return t?Kn.isAbsolute(t)?t:Kn.join(e.repoRoot,t):null}function ge(e){return e.prs.length===0?null:[...e.prs].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e.prs[e.prs.length-1]??null}function or(e){return e.status==="merged"||e.status==="closed"}function Vn(e,t){let r=e.prs.findIndex(o=>o.number!==null&&o.number===t.number),s=r>=0?e.prs.map((o,p)=>p===r?t:o):[...e.prs,t];return{...e,prs:s}}var zn=3,kl=1e3,yl=1e4;async function At(e){let t=await oe("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Jr(e,t){let r=ge(t),s=r?.number?String(r.number):t.branch,o=await ee("gh",ir(s),{cwd:t.worktreePath}),p=JSON.parse(o.stdout);return es(e,t,p,r)}async function Zr(e,t){let r=await oe("gh",ir(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return{discovered:!0,task:await es(e,t,s,null)}}async function Yn(e){let t=await oe("git",["remote","get-url","origin"],{cwd:e});return t.exitCode!==0?null:xl(t.stdout.trim())}async function Xn(e,t,r){if(r.length===0)return[];let s=El(r),o=await vl(e,["api","graphql","-f",`query=${s}`,"-F",`owner=${t.owner}`,"-F",`name=${t.name}`]),k=JSON.parse(o.stdout).data?.repository??{};return r.map((i,c)=>{let d=k[`item${c}`],_=Al(d);return{id:i.id,found:_!==null,view:_}})}async function vl(e,t){let r;for(let s=0;s<=zn;s+=1)try{return await ee("gh",t,{cwd:e})}catch(o){if(r=o,s===zn||!Sl(o))throw o;await Rl(Tl(s))}throw r}function Sl(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 Tl(e){let t=Number(process.env.CRAIG_GH_RATE_LIMIT_RETRY_BASE_MS)||kl,r=Math.min(t*2**e,yl),s=Math.floor(Math.random()*Math.max(1,Math.floor(r*.25)));return r+s}function Rl(e){return new Promise(t=>setTimeout(t,e))}async function Dt(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let k=await ee("gh",ir(s),{cwd:r.worktreePath}),i=Qr(JSON.parse(k.stdout));return r.pullRequest=i,await Xr(e,t,r.repoId,i),"synced"}let o=await oe("gh",ir(s),{cwd:r.worktreePath});if(o.exitCode!==0)return"not_found";let p=Qr(JSON.parse(o.stdout));return r.pullRequest=p,await Xr(e,t,r.repoId,p),"discovered"}async function Qn(e,t,r){return es(e,t,r,ge(t))}async function Jn(e,t,r,s){return Xr(e,t,r,Qr(s))}async function Zn(e,t){let r=sr(e,t.artifacts.prStatusPath);r&&(await wl(bl.dirname(r),{recursive:!0}),await he(r,{taskId:t.id,prs:t.prs}))}function Pl(e){return e.mergeable&&!Cl(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function Cl(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function Il(e){if(e.length===0)return"checked";let t=[...e].reverse().find(r=>r.status!=="merged"&&r.status!=="closed")??e[e.length-1];return Pl(t)?"merge_ready":t.status==="merged"?"merged":t.status==="open"?"pr_open":"checked"}function ir(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,isDraft,title,createdAt,updatedAt,mergedAt,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,comments"]}function xl(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 El(e){return`
|
|
59
59
|
query CraigPullRequestBatch($owner: String!, $name: String!) {
|
|
60
60
|
repository(owner: $owner, name: $name) {
|
|
61
61
|
${e.map((r,s)=>{let o=`item${s}`;return r.mode==="number"?`${o}: pullRequest(number: ${Number(r.selector)}) { ...PrFields }`:`${o}: pullRequests(headRefName: ${JSON.stringify(r.selector)}, states: OPEN, first: 1, orderBy: { field: UPDATED_AT, direction: DESC }) { nodes { ...PrFields } }`}).join(`
|
|
@@ -134,52 +134,58 @@ fragment PrFields on PullRequest {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
`}function
|
|
137
|
+
`}function Al(e){if(!e||typeof e!="object")return null;let t="nodes"in e?e.nodes?.[0]??null:e;if(!t||typeof t!="object")return null;let r=t,s=r.statusCheckRollup?.contexts?.nodes??r.commits?.nodes?.[0]?.commit?.statusCheckRollup?.contexts?.nodes??[];return{number:r.number,url:r.url,baseRefName:r.baseRefName,headRefName:r.headRefName,headRefOid:r.headRefOid??null,state:r.state,isDraft:r.isDraft??!1,title:r.title??null,createdAt:r.createdAt??null,updatedAt:r.updatedAt??null,mergedAt:r.mergedAt??null,mergeable:r.mergeable,mergeStateStatus:r.mergeStateStatus,reviewDecision:r.reviewDecision??null,statusCheckRollup:s,comments:r.comments?.nodes??[]}}async function es(e,t,r,s){let o=Dl(r,s),p=Vn(t,o),k=Il(p.prs),i={...p,status:k};await Zn(e,i);let c=await fe(e,t.id),d=c.status==="closed"?c.status:k,_=Vn({...c,status:d},o);return await se(e,_),_}async function Xr(e,t,r,s){let o=await fe(e,t.id),p=(o.repoTargets??t.repoTargets??[]).map(i=>i.repoId===r?{...i,pullRequest:s}:i),k={...o,repoTargets:p};return await se(e,k),k}function Dl(e,t){let r=e.isDraft??!1,s=Ll(e.state,r);return{provider:"github",owner:t?.owner??null,repo:t?.repo??null,number:e.number,url:e.url,title:e.title??t?.title??null,status:s,draft:r,baseBranch:e.baseRefName,headBranch:e.headRefName,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ti(e.reviewDecision??null),requiredChecks:ei(e.statusCheckRollup),comments:ri(e.comments),createdAt:e.createdAt??t?.createdAt??null,updatedAt:e.updatedAt??t?.updatedAt??null,mergedAt:e.mergedAt??t?.mergedAt??null,lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Qr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:Ml(e.state),draft:e.isDraft??!1,mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,reviewDecision:ti(e.reviewDecision??null),requiredChecks:ei(e.statusCheckRollup),comments:ri(e.comments),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Ll(e,t){return t?"draft":e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Ml(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function ei(e){let t=e.map(s=>Ol(s)).filter(s=>s!==null),r=new Map;for(let s of t){let o=r.get(s.name);(!o||Bl(o,s))&&r.set(s.name,s)}return[...r.values()].map(s=>({name:s.name,status:s.status,conclusion:s.conclusion}))}function Ol(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:si(s??null,t.conclusion??null),conclusion:t.conclusion??null,sortTime:$l(t)}:null}function Bl(e,t){return e.sortTime!==null||t.sortTime!==null?(t.sortTime??0)>=(e.sortTime??0):nr(e)&&!nr(t)?!0:!nr(e)&&nr(t)?!1:Gn(t.status)>=Gn(e.status)}function nr(e){return e.conclusion?.toUpperCase()==="CANCELLED"}function Gn(e){switch(e){case"pending":return 5;case"failed":return 4;case"success":return 3;case"skipped":return 2;default:return 1}}function $l(e){let t=e.completedAt??e.startedAt??e.createdAt??null;if(!t)return null;let r=new Date(t).getTime();return Number.isFinite(r)?r:null}function ti(e){return e==="APPROVED"||e==="CHANGES_REQUESTED"||e==="REVIEW_REQUIRED"?e:null}function ri(e){let t=Array.isArray(e)?e:e?.nodes;return Array.isArray(t)?t.map(Fl).filter(r=>r!==null).slice(-4):[]}function Fl(e){if(typeof e!="object"||e===null)return null;let t=e,r=Nl(t.bodyText??t.body??"");return r?{author:typeof t.author=="string"?t.author:t.author?.login??null,body:r,createdAt:t.createdAt??null,url:t.url??null}:null}function Nl(e){return e.replace(/\s+/g," ").trim()}function si(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?si(s,s):"unknown"}async function ae(e,t){try{return await fe(e,t)}catch(r){throw Kl(r)?new Error(`Craig task "${t}" was not found.`):r}}async function Ae(e){if(!await ts(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function rs(e,t){return t.artifacts.logPath?ni.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:ni.join(e.workspaceRoot,t.artifacts.logPath):null}async function ii(e,t){let r=await ts(t.worktreePath),s=rs(e,t),o=s?await ts(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:jl(t),lastCommitSummary:Hl(t),prSummary:Ul(t),cleanupSummary:ql(t)}}async function ts(e){try{return await Wl(e),!0}catch{return!1}}function jl(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 Hl(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Ul(e){if(e.type==="project"&&e.repoTargets?.length){let o=e.repoTargets.filter(c=>c.pullRequest.number);if(o.length===0)return"not linked";let p=o.map(c=>` ${c.repoId} #${c.pullRequest.number} ${c.pullRequest.status??"unknown"}`),k=o.reduce((c,d)=>{let _=d.pullRequest.status??"unknown";return c[_]=(c[_]??0)+1,c},{}),i=Object.entries(k).map(([c,d])=>`${d} ${c}`).join(", ");return`${o.length} PR${o.length!==1?"s":""} (${i})
|
|
138
138
|
${p.join(`
|
|
139
|
-
`)}`}let t=
|
|
139
|
+
`)}`}let t=ge(e);if(!t?.number||!t.url)return"not linked";let r=t.requiredChecks.length,s=r===1?"check":"checks";return`#${t.number} ${t.status??"unknown"} mergeable=${t.mergeable} mergeState=${t.mergeStateStatus??"unknown"} (${r} ${s})`}function ql(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 Kl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function oi(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([Be(e,r.repoId),mt(e,r.sessionId)]),p=await Rt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:p.id,disposition:"attached"}}Ie();async function ci(e,t){let r=await ae(e,t),s=ge(r);return s?.number?(await At(r.worktreePath),or(s)?(await Zr(e,r)).task:Jr(e,r)):r}async function cr(e,t){let r=await ae(e,t),s=(r.repoTargets??[]).filter(k=>k.status==="ready"),o={synced:0,discovered:0,notFound:0};for(let k of s){await At(k.worktreePath);let i=k.pullRequest.number?await Dt(e,r,k):await Dt(e,r,k).catch(()=>"not_found");o[i==="not_found"?"notFound":i]++}let p=await fe(e,r.id);return p.status!=="closed"&&(p.status=di(p),await se(e,p)),o}async function li(e,t){let r=new Map,s=new Map;for(let o of t){let p=ss(r,o);if(o.type==="project"&&o.repoTargets?.length){for(let d of o.repoTargets.filter(_=>_.status==="ready")){let _={id:`${o.id}:${d.repoId}`,task:o,targetRepoId:d.repoId,worktreePath:d.worktreePath,selector:d.pullRequest.number?String(d.pullRequest.number):d.branch,mode:d.pullRequest.number?"number":"head"};await ai(s,_).catch(async()=>{try{let a=d.pullRequest.number?await Dt(e,o,d):await Dt(e,o,d).catch(()=>"not_found");ar(p,a,d.pullRequest.number??null,d.pullRequest.url??null)}catch{}})}continue}let k=ge(o),i=k?.number&&!or(k),c={id:o.id,task:o,worktreePath:o.worktreePath,selector:i?String(k.number):o.branch,mode:i?"number":"head"};await ai(s,c).catch(async()=>{try{let{disposition:d,task:_}=await ns(e,o.id),a=ge(_);ar(p,d,a?.number??null,a?.url??null)}catch{}})}for(let o of s.values())try{await At(o.worktreePath);let p=await Xn(o.worktreePath,o.repository,o.items),k=new Map(p.map(i=>[i.id,i]));for(let i of o.items){let c=ss(r,i.task),d=k.get(i.id);if(!d?.found||!d.view){ar(c,"not_found",null,null);continue}i.targetRepoId?await Jn(e,i.task,i.targetRepoId,d.view):await Qn(e,i.task,d.view),ar(c,i.mode==="number"?"synced":"discovered",d.view.number,d.view.url)}}catch{}for(let o of t.filter(p=>p.type==="project"&&p.repoTargets?.length)){let p=await fe(e,o.id);p.status!=="closed"&&(p.status=di(p),await se(e,p))}return t.map(o=>ss(r,o))}async function ns(e,t){let r=await ae(e,t);await Ae(r),await At(r.worktreePath);let s=ge(r);if(s?.number&&!or(s))return{disposition:"synced",task:await Jr(e,r)};let o=await Zr(e,r);return{disposition:o.discovered?"discovered":"not_found",task:o.task}}function di(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(Vl)?"merge_ready":r.some(s=>s.status==="open")?"pr_open":"checked"}async function ai(e,t){let r=await Yn(t.worktreePath);if(!r)throw new Error("GitHub repository remote could not be parsed.");let s=`${r.owner}/${r.name}`,o=e.get(s);if(o){o.items.push(t);return}e.set(s,{worktreePath:t.worktreePath,repository:r,items:[t]})}function ss(e,t){let r=e.get(t.id);if(r)return r;let s={taskId:t.id,synced:0,discovered:0,notFound:0,hadPr:t.type==="project"?!!t.repoTargets?.some(o=>o.pullRequest.number):!!ge(t)?.number,firstDiscoveredPrNumber:null,firstDiscoveredPrUrl:null};return e.set(t.id,s),s}function ar(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 Vl(e){return e.mergeable&&e.reviewDecision!=="REVIEW_REQUIRED"&&e.reviewDecision!=="CHANGES_REQUESTED"&&e.mergeStateStatus!=="REVIEW_REQUIRED"&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}async function is(e,t){let r=await ae(e,t);try{r.type==="project"&&r.repoTargets?.length?(await cr(e,t),r=await ae(e,t)):r.prs.some(p=>p.number)&&(r=await ci(e,t))}catch{}let s=await ii(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 zl}from"node:fs/promises";async function os(e,t){let r=await ae(e,t),s=rs(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await zl(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ee();async function as(e,t){let r=await ae(e,t);if(await Ae(r),(await ee("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Gl(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Gl(e){let t=[],r=await ee("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Yl(e);for(let o of s){let p=await oe("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(p.stdout.trimEnd())}return t.join(`
|
|
140
140
|
|
|
141
|
-
`)}async function
|
|
142
|
-
`).map(r=>r.trim()).filter(r=>r.length>0)}async function
|
|
141
|
+
`)}async function Yl(e){return(await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
|
|
142
|
+
`).map(r=>r.trim()).filter(r=>r.length>0)}async function cs(e,t){let r=await ae(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await mt(e,r.sessionId).catch(o=>{throw Xl(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 Yt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Xl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Ql}from"node:child_process";async function ls(e,t){let r=await ae(e,t);await Ae(r);let o=(await He(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 Jl(p,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:p}}async function Jl(e,t){await new Promise((r,s)=>{let[o,...p]=e,k=Ql(o,p,{cwd:t,stdio:"inherit"});k.on("error",s),k.on("exit",i=>{if(i===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${i??"unknown"}.`))})})}Ue();import{mkdir as Zl}from"node:fs/promises";import ed from"node:path";Ie();Ee();async function ds(e,t){let r=await ae(e,t);if(await Ae(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 Zt(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 He(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await se(e,r);let p=[];for(let k of o){let i=new Date().toISOString(),c=await oe("sh",["-lc",k],{cwd:r.worktreePath}),d=new Date().toISOString(),_=c.exitCode??1;if(p.push({command:k,startedAt:i,finishedAt:d,exitCode:_}),_!==0)return r.checks.results=p,r.checks.status="failed",r.checks.lastRunAt=d,r.status="review",r.lastFailureReason=c.stderr.trim()||c.stdout.trim()||`Check command failed: ${k}`,await ui(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 ui(e,r),await se(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function ui(e,t){let r=sr(e,t.artifacts.checkSummaryPath);r&&(await Zl(ed.dirname(r),{recursive:!0}),await he(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}Ie();async function us(e,t){let r=await ae(e,t);await Ae(r);let s=await Zt(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 Dn(r.worktreePath),await Ln(r.worktreePath,o);let p=await Mn(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();Et();Bt();Ee();import cd from"node:path";import{stat as ld}from"node:fs/promises";async function yi(e,t){let r=cd.resolve(e.workspaceRoot,t);if(!(await ld(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Bt(),ki)).then(({addWorkspace:k})=>k(e,t)),p=o.repos[0];if(!p||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:p,workspaceId:o.workspace.id,created:o.created}}async function vi(e){return{kind:"listRepos",repos:await lt(e)}}async function Si(e,t){let r=await Be(e,t),o=(await $e(e)).filter(d=>d.primaryRepoId===t),p=o.filter(d=>d.status==="active"),k=await Ke(e,{repoId:t});if(p.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(k.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(d=>lr(e,d.id))),await In(e,t);let i=await Ce(e);await it(e,{...i,repoIds:i.repoIds.filter(d=>d!==t)});let c=await Oe({uiStateFile:e.uiStateFile});return c?.selectedRepoId===t&&await xe({uiStateFile:e.uiStateFile},{...c,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}dt();Ie();async function Ti(e,t,r){let[s,o]=await Promise.all([ae(e,t),Be(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 Ri(e,t){let r=await ae(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Be(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Bt();async function Pi(e,t){switch(e.kind){case"addWorkspace":return Lt(t.paths,e.path);case"addRepo":return yi(t.paths,e.path);case"listRepos":return vi(t.paths);case"removeRepo":return Si(t.paths,e.repoId);case"listWorkspaces":return hs(t.paths,{archived:e.archived});case"archiveWorkspace":return Mt(t.paths,e.workspaceId);case"restoreWorkspace":return fs(t.paths,e.workspaceId);case"removeWorkspace":return Ot(t.paths,e.workspaceId);case"createTask":return qn(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?Ke(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):Ke(t.paths);case"attachTask":return oi(t.paths,e.taskId);case"addTaskLink":return Ti(t.paths,e.taskId,e.repoId);case"listTaskLinks":return Ri(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return is(t.paths,e.taskId);case"showSelectedTask":return is(t.paths,ut(t,"show"));case"streamTaskLogs":return os(t.paths,e.taskId);case"streamSelectedTaskLogs":return os(t.paths,ut(t,"logs"));case"showTaskDiff":return as(t.paths,e.taskId);case"showSelectedTaskDiff":return as(t.paths,ut(t,"diff"));case"focusTask":return cs(t.paths,e.taskId);case"focusSelectedTask":return cs(t.paths,ut(t,"focus"));case"openTask":return ls(t.paths,e.taskId);case"openSelectedTask":return ls(t.paths,ut(t,"open"));case"runChecks":return ds(t.paths,e.taskId);case"runSelectedTaskChecks":return ds(t.paths,ut(t,"check"));case"commitTask":return us(t.paths,e.taskId);case"commitSelectedTask":return us(t.paths,ut(t,"commit"));case"help":return{kind:"help",text:we()};case"exit":return{kind:"exit"};default:return dd(e)}}function dd(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>'.`)}Ue();import{mkdir as Ve,readFile as ud}from"node:fs/promises";import be from"node:path";function Ge(e){let t=be.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:be.join(t,"index.json"),reposDir:be.join(t,"repos"),workspacesDir:be.join(t,"workspaces"),sessionsDir:be.join(t,"sessions"),runtimeDir:be.join(t,"runtime"),uiStateFile:be.join(t,"runtime","ui-state.json"),tasksDir:be.join(t,"tasks"),jobsDir:be.join(t,"jobs"),logsDir:be.join(t,"logs"),errorLogFile:be.join(t,"logs","errors.log"),artifactsDir:be.join(t,"artifacts"),worktreesDir:be.join(t,"worktrees"),configFile:be.join(t,"config.json")}}ot();async function kt(e){let t=Ge(e);await Ve(t.craigDir,{recursive:!0}),await Promise.all([Ve(t.reposDir,{recursive:!0}),Ve(t.workspacesDir,{recursive:!0}),Ve(t.sessionsDir,{recursive:!0}),Ve(t.runtimeDir,{recursive:!0}),Ve(t.tasksDir,{recursive:!0}),Ve(t.jobsDir,{recursive:!0}),Ve(t.logsDir,{recursive:!0}),Ve(t.artifactsDir,{recursive:!0}),Ve(t.worktreesDir,{recursive:!0})]);try{let o=await ud(t.indexFile,"utf8"),p=JSON.parse(o);return Hr(p,e,t.indexFile)}catch(o){if(!hd(o))throw o instanceof SyntaxError?new Error(`Craig index at ${t.indexFile} is malformed. Remove or repair the file before rerunning Craig.`):o}let r=new Date().toISOString(),s={version:2,workspaceRoot:e,repoIds:[],workspaceIds:[],taskIds:[],jobIds:[],createdAt:r,updatedAt:r};return await he(t.indexFile,s),s}function hd(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function Ci(e){switch(e.kind){case"createWorkspace":return[`${e.created?"Registered":"Updated"} ${e.workspace.kind??"repo"} workspace ${e.workspace.id}`,`Path: ${e.workspace.rootPath??""}`,`Repos: ${e.repos.map(t=>t.id).join(", ")}`].join(`
|
|
143
143
|
`);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
|
|
144
144
|
`);case"listRepos":return e.repos.length===0?"No repos registered yet. Use 'craig repo add <path>'.":["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
145
145
|
`);case"removeRepo":return`Removed repo ${e.repoId} (${e.rootPath})`;case"listWorkspaces":return e.workspaces.length===0?e.archivedOnly?"No archived workspaces.":"No active workspaces yet. Register one with 'craig workspace add <path>'.":["ID KIND STATUS REPOS PATH",...e.workspaces.map(t=>`${t.id} ${t.kind??"repo"} ${t.status} ${(t.discoveredRepoIds??[t.primaryRepoId]).join(",")} ${t.rootPath??""}`)].join(`
|
|
146
146
|
`);case"archiveWorkspace":return`Archived workspace ${e.workspaceId} on branch ${e.branch}`;case"restoreWorkspace":return`Restored workspace ${e.workspaceId} on branch ${e.branch}`;case"removeWorkspace":return`Removed workspace ${e.workspaceId} (${e.rootPath})`;case"createTask":return[`Created task ${e.taskId}`,`Repo: ${e.repoId}`,`Workspace: ${e.workspaceId}`,`Session: ${e.sessionId}`,`Status: ${e.status}`,`Branch: ${e.branch}`,`Worktree: ${e.worktreePath}`,`Runner: ${e.runner}`].join(`
|
|
147
147
|
`);case"attachTask":return`Attached to task ${e.taskId} via session ${e.sessionId}`;case"addTaskLink":return`Linked repo ${e.repoId} to task ${e.taskId}: ${e.linkedRepoIds.join(", ")}`;case"listTaskLinks":return e.repos.length===0?`Task ${e.taskId} has no linked repos.`:["ID NAME BRANCH PATH",...e.repos.map(t=>`${t.id} ${t.name} ${t.defaultBranch} ${t.rootPath}`)].join(`
|
|
148
|
-
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${
|
|
149
|
-
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...
|
|
148
|
+
`);case"help":return e.text;case"exit":return"";case"listTasks":return e.tasks.length===0?`No Craig tasks yet. Use 'task new --repo <repo-id> <prompt>' to create one.${e.missingTaskIds.length>0?` (${e.missingTaskIds.length} referenced task file(s) missing from .craig/tasks)`:""}`:["ID REPO STATUS CHECKS PR TITLE",...e.tasks.map(t=>`${t.id} ${t.repoId} ${t.status} ${gd(t)} ${md(t)} ${t.title}`)].join(`
|
|
149
|
+
`);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...fd(e)].join(`
|
|
150
150
|
`);case"streamTaskLogs":return`Streaming logs for ${e.taskId} from ${e.logPath}`;case"showTaskDiff":return e.isEmpty?`Task ${e.taskId} has no uncommitted diff.`:e.diffText;case"focusTask":return`Focused task ${e.taskId} on ${e.tmuxTarget}`;case"openTask":return e.launched?`Opened task ${e.taskId} at ${e.worktreePath}`:e.worktreePath;case"runChecks":return`Checks ${e.status} for ${e.taskId}: ${e.commands.join(", ")}`;case"commitTask":return[`Committed task ${e.taskId}`,`Status: ${e.status}`,`Commit: ${e.commitSha}`,`Message: ${e.message}`].join(`
|
|
151
|
-
`);default:return
|
|
152
|
-
`).
|
|
153
|
-
`)
|
|
154
|
-
`)
|
|
155
|
-
|
|
156
|
-
${i.
|
|
157
|
-
|
|
151
|
+
`);default:return pd(e)}}function fd(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 pd(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function gd(e){return e.checks.status}function md(e){if(e.type==="project"&&e.repoTargets?.length){let r=e.repoTargets.filter(o=>o.pullRequest.number);if(r.length===0)return"-";let s=r.reduce((o,p)=>{let k=p.pullRequest.status??"unknown";return o[k]=(o[k]??0)+1,o},{});return Object.entries(s).map(([o,p])=>`${p} ${o}`).join(", ")}let t=e.prs[0];return t?.number?`#${t.number}:${t.status??"unknown"}`:"-"}dt();Ct();wt();import{createRequire as yf}from"node:module";import{readdir as vf,stat as Sf}from"node:fs/promises";import St from"node:path";Ie();Et();import{appendFile as _d,mkdir as wd,readFile as bd}from"node:fs/promises";import kd from"node:path";var yd=80;async function vd(e,t){await wd(kd.dirname(e.errorLogFile),{recursive:!0}),await _d(e.errorLogFile,Sd(t),"utf8")}async function ps(e,t){try{await vd(e,t)}catch{}}async function Ii(e,t=yd){try{let s=(await bd(e.errorLogFile,"utf8")).trimEnd().split(`
|
|
152
|
+
`).filter(o=>o.length>0);return{path:e.errorLogFile,lines:s.slice(Math.max(0,s.length-t)),empty:s.length===0}}catch(r){if(Td(r))return{path:e.errorLogFile,lines:[],empty:!0};throw r}}function Sd(e){let r=[`[${new Date().toISOString()}] ${e.context}`,`message: ${e.message}`];return e.details&&e.details.trim().length>0&&(r.push("details:"),r.push(...e.details.trimEnd().split(`
|
|
153
|
+
`).map(s=>` ${s}`))),`${r.join(`
|
|
154
|
+
`)}
|
|
155
|
+
|
|
156
|
+
`}function Td(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Bt();Ee();import{readFile as Rd,stat as Pd}from"node:fs/promises";import gs from"node:path";var Cd=200*1024,Id=500*1024,dr="100000";async function Ei(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return xd(e,t,r);try{let s=tt(r.selectedFilePath??null,t.filePaths),o=tt(r.selectedDiffPath??null,t.diffPaths),p=o?await $t(e.worktreePath):null,[k,i]=await Promise.all([hr(e.worktreePath,s),o?ms(e.worktreePath,o,t.diffRows,p):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),c=o?{[o]:i}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:c,selectedFile:k,selectedDiff:i,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function xd(e,t,r){let s=tt(r.selectedFilePath??null,t.filePaths),o=tt(r.selectedDiffPath??null,t.diffPaths),[p,k]=await Promise.all([Di(e,s),(async()=>{if(!o)return me("No diff selected","No local changes found.","empty");let c=ur(e,o),d=c?await $t(c.target.worktreePath).catch(()=>null):null;return Li(e,o,t.diffRows,d)})()]),i=o?{[o]:k}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:i,selectedFile:p,selectedDiff:k}}async function Ai(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return Ed(e,t);try{await Ae(e);let r=await $t(e.worktreePath),[s,o]=await Promise.all([Mi(e.worktreePath),Oi(e.worktreePath,r)]),p=[...new Set(o.map(a=>a.path))],k=tt(t.selectedFilePath??null,s),i=tt(t.selectedDiffPath??null,p),[c,d]=await Promise.all([hr(e.worktreePath,k),i?ms(e.worktreePath,i,o,r):Promise.resolve(me("No diff selected","No local changes found.","empty"))]),_=i?{[i]:d}:{};return{taskId:e.id,fileRows:Fi(s),filePaths:s,diffRows:o,diffPaths:p,diffContents:_,selectedFilePath:k,selectedDiffPath:i,selectedFile:c,selectedDiff:d,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:me("Files unavailable",s,"error"),selectedDiff:me("Diff unavailable",s,"error"),error:s}}}async function Ed(e,t){let r=(e.repoTargets??[]).filter(b=>b.status==="ready"),s=await Promise.all(r.map(async b=>{let l=await $t(b.worktreePath).catch(()=>null),[m,w]=await Promise.all([Mi(b.worktreePath).catch(()=>[]),Oi(b.worktreePath,l).catch(()=>[])]);return{target:b,baseRef:l,targetFiles:m,targetDiffRows:w}})),o=[],p=[];for(let{target:b,targetFiles:l,targetDiffRows:m}of s)o.push(...l.map(w=>`${b.repoId}/${w}`)),p.push(...m.map(w=>({...w,path:`${b.repoId}/${w.path}`})));let k=[...new Set(p.map(b=>b.path))].sort(),i=tt(t.selectedFilePath??null,o),c=tt(t.selectedDiffPath??null,k),[d,_]=await Promise.all([Di(e,i),(async()=>{if(!c)return me("No diff selected","No local changes found.","empty");let b=ur(e,c),l=b?s.find(m=>m.target.repoId===b.target.repoId):null;return Li(e,c,p,l?.baseRef??null)})()]),a=c?{[c]:_}:{};return{taskId:e.id,fileRows:Fi(o),filePaths:o,diffRows:p,diffPaths:k,diffContents:a,selectedFilePath:i,selectedDiffPath:c,selectedFile:d,selectedDiff:_,error:null}}async function Di(e,t){let r=ur(e,t);if(!r)return me("No file selected","No Git-visible files found.","empty");let s=await hr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function Li(e,t,r,s=null){let o=ur(e,t);return o?{...await ms(o.target.worktreePath,o.relativePath,r.filter(k=>k.path.startsWith(`${o.target.repoId}/`)).map(k=>({...k,path:k.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:me(t,"Repo target is unavailable.","error",t)}function ur(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),p=(e.repoTargets??[]).find(k=>k.repoId===r&&k.status==="ready")??null;return!p||o.length===0?null:{target:p,relativePath:o}}async function Mi(e){let t=await ee("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return Ni(t.stdout)}async function Oi(e,t){let[r,s,o,p]=await Promise.all([Ad(e,t),xi(e,"staged"),xi(e,"unstaged"),Dd(e)]);return[...r,...s,...o,...p]}async function Ad(e,t){if(!t)return[];let[r,s]=await Promise.all([ee("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),ee("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=Bi(r.stdout),p=$i(s.stdout);return o.map(k=>{let i=p.get(k.path)??{additions:null,deletions:null};return{group:"branch",path:k.path,status:k.status,additions:i.additions,deletions:i.deletions}}).sort((k,i)=>k.path.localeCompare(i.path))}async function xi(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([ee("git",[...r,"--name-status"],{cwd:e}),ee("git",[...r,"--numstat"],{cwd:e})]),p=Bi(s.stdout),k=$i(o.stdout);return p.map(i=>{let c=k.get(i.path)??{additions:null,deletions:null};return{group:t,path:i.path,status:i.status,additions:c.additions,deletions:c.deletions}}).sort((i,c)=>i.path.localeCompare(c.path))}async function Dd(e){let t=await ee("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=Ni(t.stdout);return await Promise.all(r.map(async o=>{let p=await hr(e,o),k=p.status==="ready"?Ld(p.lines):null;return{group:"untracked",path:o,status:"A",additions:k,deletions:0}}))}function Bi(e){return e.split(`
|
|
157
|
+
`).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...s]=t.split(" ");return{status:r,path:s.at(-1)??""}}).filter(t=>t.path.length>0)}function $i(e){let t=new Map;for(let r of e.split(`
|
|
158
|
+
`)){let s=r.trim();if(!s)continue;let[o="-",p="-",...k]=s.split(" "),i=k.join(" ");i&&t.set(i,{additions:o==="-"?null:Number(o),deletions:p==="-"?null:Number(p)})}return t}async function $t(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 hr(e,t){if(!t)return me("No file selected","No Git-visible files found.","empty");let r=Md(e,t);try{let s=await Pd(r);if(s.size>Cd)return me(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await Rd(r);return Od(o)?me(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
|
|
159
|
+
`),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return me(t,o,"missing",t,null)}}async function ms(e,t,r,s=null){if(!t)return me("No diff selected","No local changes found.","empty");let o=[],p=r.filter(i=>i.path===t).map(i=>i.group);if(p.includes("branch")){let i=s??await $t(e);if(i){let c=await ee("git",["diff","--stat","--patch",`--unified=${dr}`,`${i}...HEAD`,"--",t],{cwd:e});c.stdout.trim().length>0&&o.push(`branch
|
|
160
|
+
${c.stdout.trimEnd()}`)}}if(p.includes("staged")){let i=await ee("git",["diff","--cached","--stat","--patch",`--unified=${dr}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`staged
|
|
161
|
+
${i.stdout.trimEnd()}`)}if(p.includes("unstaged")){let i=await ee("git",["diff","--stat","--patch",`--unified=${dr}`,"--",t],{cwd:e});i.stdout.trim().length>0&&o.push(`unstaged
|
|
162
|
+
${i.stdout.trimEnd()}`)}if(p.includes("untracked")){let i=await oe("git",["diff","--no-index","--stat","--patch",`--unified=${dr}`,"--","/dev/null",t],{cwd:e});i.stdout.trim().length>0&&o.push(`untracked
|
|
158
163
|
${i.stdout.trimEnd()}`)}let k=o.join(`
|
|
159
164
|
|
|
160
|
-
`);return k.length>
|
|
161
|
-
`):["No diff for this file."],byteLength:k.length}}function
|
|
162
|
-
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function wd(e,t){let r=fs.resolve(e,t),s=fs.resolve(e);if(r!==s&&!r.startsWith(`${s}${fs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function bd(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function me(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Re();import{access as kd}from"node:fs/promises";async function Fi(e,t){let r=await ae(e,t),s=await yd(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 yd(e){try{return await kd(e),!0}catch{return!1}}Ae();Ce();import jt from"node:path";function Ni(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"\u{F06E6} ";case"js":case"jsx":case"mjs":case"cjs":return"\u{F031E} ";case"json":case"jsonc":return"\u{F0871} ";case"md":case"mdx":return"\u{F0354} ";case"yaml":case"yml":return"\u{F0B10} ";case"sh":case"bash":case"zsh":return"\u{F018D} ";case"css":case"scss":case"sass":return"\u{F031C} ";case"html":case"htm":return"\u{F031D} ";case"py":return"\u{F0320} ";case"go":return"\u{F07D3} ";case"rs":return"\u{F1617} ";case"lock":return"\u{F033E} ";case"png":case"jpg":case"jpeg":case"gif":case"svg":case"webp":return"\u{F02E9} ";default:return"\u{F0214} "}}var Wi="\u{F024B} ",ji="\u{F0DCF} ",Hi="\u25CB",gs="\uEA64",Ui="\uEAFE",qi="\uEBDA",ms="\u25CB",_s="\u25CF",ws="\u2713",bs="\u2715";function Ki(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Ae();wt();Ae();var vd=["tasks","center","inspector","actions"],Qi=["agent","terminal"],Ji=[],ne="inspection",__=[...Qi,...Ji],Zi=["commit","push","refresh-checks","close-task"],Sd=["refresh-checks","close-task"],eo=["task","checks","pr","setup-run","actions","next-action"],to=["diff","files","review"];function ro(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=Nd(e?.openInspectionKind)??r,o=pt(t);return{inputMode:jd(e?.inputMode),focusedRegion:$d(e?.focusedRegion),selectedRepoId:ze(e?.selectedRepoId),selectedWorkspaceId:ze(e?.selectedWorkspaceId),selectedTaskId:ze(e?.selectedTaskId),selectedPtyTabId:ze(e?.selectedPtyTabId),selectedLeftItemId:Yd(ze(e?.selectedTaskId)),activeTab:r?ne:ze(e?.activeTab)??"agent",preferredPtyTabKind:Wd(e?.preferredPtyTabKind),inspectorSection:Ft(e?.inspectorSection,eo,"task"),inspectionMode:Fd(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:ze(e?.selectedFileTreePath),selectedFilePath:ze(e?.selectedFilePath),selectedDiffPath:ze(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0,selectedActionId:Ft(e?.selectedActionId,Zi,"commit"),selectedProjectTargetId:null,selectedRunner:Hd(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,footerToast:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:Td(),centerZoomed:!1}}function Td(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function so(e,t){return{...e??je(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function gr(e,t,r={}){let s=Gd(e,t),o=ho(s),p=(o?.kind==="workspace"?t.workspaces?.find(_=>_.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(_=>_.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(_=>_.id===o.id)??null:o?.kind==="task"?t.repos.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(_=>_.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(_.id))??null:null)??(p?.kind!=="project"?t.repos.find(_=>_.id===p?.primaryRepoId)??null:null)??t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(_=>_.workspaceId===p.id):i?t.tasks.filter(_=>_.repoId===i):[],d=(o?.kind==="task"?c.find(_=>_.id===o.id)??null:null)??c.find(_=>_.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...qd(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:Md(e,t,d?.id??null),...Kd(e,t,d?.id??null),selectedDiffPath:Ld(e,t,d?.id??null),inspectorSection:Ft(e.inspectorSection,eo,"task")}}function no(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"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:Ss(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Vi(e,1);if(t==="SHIFT_TAB"||t==="[")return Vi(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,-1,r):zi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,1,r):zi(e,1,r);if(t==="PAGE_UP")return et(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return et(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return et(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return et(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??de,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Ud(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"&&pr(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"&&Qd(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Yi(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return ks(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Gi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return ks(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Gi(e,1)}if(tt(t)){if(e.focusedRegion==="tasks"&&(ys(e.selectedLeftItemId)||vs(e.selectedLeftItemId))){let s=fo(e.selectedLeftItemId),o=po(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&pr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Nt(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&Yi(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Nt(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:Ed({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Wt(e,t){return{...e,terminal:t}}function io(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Rd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function tt(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
163
|
-
`}function oo(e){return e.length===1&&e>=" "&&e!=="\x7F"}function ao(e){return co(e)||Nt(e)!==null}function Pd(e){return Ji.includes(e)}function co(e){return Qi.includes(e)}function lo(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Cd=["tasks","center","inspector"];function Vi(e,t){return hr(e,"focusedRegion",Cd,t)}function ks(e,t,r){let s=hr(e,"activeTab",r&&r.length>0?r:zd(e),t);return!s.changed||Pd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Nt(s.state.activeTab)??s.state.preferredPtyTabKind}}}function zi(e,t,r){if(e.focusedRegion==="tasks")return Id(e,t,r.leftItemIds);if(e.focusedRegion==="center")return ks(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=fr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}if(r.projectTargetIds?.length){let s=fr(e,"selectedProjectTargetId",r.projectTargetIds,t);return s.changed?{...s,state:{...s.state,reviewScrollOffset:0}}:s}return hr(e,"selectedActionId",Sd,t)}return hr(e,"selectedActionId",Zi,t)}function Id(e,t,r){let s=fr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=ho(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};let p=fo(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let k=po(s.state.selectedLeftItemId);return k?{...s,state:{...s.state,selectedWorkspaceId:k}}:s}function et(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return uo(e,t,r);if(e.inspectionMode==="diff"){let s=fr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return e.inspectionMode==="review"?Xi(e,"reviewScrollOffset",t,r.reviewRowCount??100,r.pageRows):X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Xi(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return Ad(e,t,r)}return X({state:e})}function xd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,reviewScrollOffset:t==="review"?0:e.reviewScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Gi(e,t){return xd(e,Bd(e.inspectionMode,to,t))}function uo(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),k=Ge(p===-1?0:p+t,0,s.length-1),i=s[k]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function Ed(e){if(!e.selectedFileTreePath)return e;let t=new Set(e.collapsedFileTreePaths);return t.has(e.selectedFileTreePath)?t.delete(e.selectedFileTreePath):t.add(e.selectedFileTreePath),{...e,collapsedFileTreePaths:[...t].sort((r,s)=>r.localeCompare(s)),actionMessage:null}}function Xi(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),k=Ge(e[t]+r,0,p);return k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function Ad(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)),k=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let _=Ge(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let _=Ge(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}if(t>0&&k>p){let _=i[c+1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&k<0){let _=i[c-1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Ge(k,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function Dd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=Ge(e.diffScrollOffset+t,0,p),i=Od(r.diffPathRanges??[],k)??e.selectedDiffPath;return k===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:k,selectedDiffPath:i,actionMessage:null},changed:!0})}function Ld(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Md(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Od(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function hr(e,t,r,s){let o=r.indexOf(e[t]),p=Ge(o+s,0,r.length-1),k=r[p];return!k||k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function fr(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),k=Ge(p===-1?0:p+s,0,r.length-1),i=r[k]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function Bd(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 Ft(e,t,r){return t.includes(e??"")?e:r}function $d(e){return e==="tabs"?"center":Ft(e,vd,"tasks")}function Fd(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ft(e,to,t)}function Nd(e){return e==="file"||e==="diff"?e:null}function Wd(e){return e==="terminal"?"terminal":"agent"}function jd(e){return e==="terminal"?"terminal":"control"}function Hd(e,t=[...de],r="codex"){return e&>(e)&&t.includes(e)?e:r}function Ss(e,t=de){let r=t.length>0?t:de,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Nt(e){let t=de.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Ud(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Nt(e.activeTab)??e.preferredPtyTabKind}function qd(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(co(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let k=o??s??e.ptyTabs[0]??null;return{activeTab:k?.id??ne,selectedPtyTabId:k?.id??null}}function Kd(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?Vd(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Vd(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 zd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Yi(e,t){return t.includes(e)}function Gd(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 ho(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function ze(e){return typeof e=="string"?e:null}function Yd(e){return e?`task:${e}`:null}function pr(e){return typeof e=="string"&&e.startsWith("task:")}function ys(e){return typeof e=="string"&&e.startsWith("new-task:")}function vs(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function Qd(e){return typeof e=="string"&&e.startsWith("workspace:")}function fo(e){return ys(e)?e.slice(9):null}function po(e){return vs(e)?e.slice(19):null}function Ge(e,t,r){return Math.min(r,Math.max(t,e))}var _r="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 wo(e,t){let r=eu(t,e),s=t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(w=>w.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(w=>w.repoId===s.id):[],k=p.find(w=>w.id===e.selectedTaskId)??p[0]??null,i=k?.type==="project",c=Bu(t.tasks),d=su(e,k),_=ru(e,k,d),a=_.find(w=>w.id===d)??_[0]??{id:"agent",label:"CODEX"},b=t.inspection?.taskId===k?.id?t.inspection:null,l=s?.name??"no repo",m=k?Se(k.runner):Se(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,footerToast:e.footerToast,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${Se(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${Se(e.selectedRunner)}] Enter create task Esc pause ? help`:pr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?k===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Se(e.centerTabRunner??k?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 targets Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:jt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${jt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:Jd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>$u(w,c[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":k?.id??"no task",repo:l,agent:m},centerTranscript:tu(d,e,s,k,e.workspaceBrowser,b,r),tabs:_,rightContext:Ou(s,k),rightInspection:mu(e,k,b)}}function Jd(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return Zd(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let k=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:k,focused:k&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let _=e.selectedLeftItemId===`task:${d.id}`,a=_?"\u25B8":"\u2022",b=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${b}`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks"},m=ko(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${Se(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${Se(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let _=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${_?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function Zd(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let k=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:k,focused:k&&t.focusedRegion==="tasks"});let i=s.filter(_=>_.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let _ of i){let a=t.selectedLeftItemId===`task:${_.id}`,b=a?"\u25B8":"\u2022",l=_.title.length>28?`${_.title.slice(0,25)}\u2026`:_.title,m={id:`task:${_.id}`,taskId:_.id,text:`${b} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},w=ko(_);w&&(m.prBadge=w),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Se(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function eu(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 tu(e,t,r,s,o,p=null,k=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,_)=>{let a=_===o.selectedIndex?"\u25B8":" ",b=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${b}`});return Oe(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Oe(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=k?.kind==="project",d=c?k.name??"this workspace":r.name,_=c?"Project Task":"Task";return Oe([`No tasks in ${d}.`,"",`Press n or choose + New ${_} to create one with ${Se(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Oe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Oe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?ou(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?au(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Oe(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Oe(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function ru(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:nu(p)}))??[];if(!t)return[{id:_r,label:"EMPTY",active:r===_r,focused:e.focusedRegion==="center"&&r===_r}];let o=e.openInspectionKind||r===ne?[{id:ne,label:iu(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function su(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:_r}function nu(e){return e.title.toUpperCase()}function iu(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?jt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function ou(e,t,r){if(!e)return Oe(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Oe(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=bo(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:""},...cu(s.lines,r,o)]}function au(e,t,r){if(!e)return Oe(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Oe(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=bo(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:""},...lu(s.lines,r,o)]}function Oe(e){return e.map(t=>({text:t}))}function cu(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,k)=>{let i=o+k+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:fe.lineNumber}},{text:" \u2502 ",style:{fg:fe.gutter}},...Ts(p,r)],tone:"default"}})}function lu(e,t,r){let s=du(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>uu(p,r))}function du(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 uu(e,t){let r=go(e.oldNumber),s=go(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:fe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:fe.diffAdd}:null,k=`${o} \u2502 ${e.text}`,i=p?fu(Ts(e.text,t),p.bg,p.fallbackFg):Ts(e.text,t),c=p?{fg:fe.lineNumber,bg:p.bg}:{fg:fe.lineNumber},d=p?{fg:fe.gutter,bg:p.bg}:{fg:fe.gutter};return{text:k,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function go(e){return e===null?" ":String(e).padStart(4," ")}function bo(e){let t=jt.extname(e).toLowerCase();return[".ts",".tsx",".js",".jsx",".mjs",".cjs"].includes(t)?"javascript":[".json",".jsonc"].includes(t)?"json":[".md",".mdx"].includes(t)?"markdown":[".css",".scss"].includes(t)?"css":"plain"}function Ts(e,t){return t==="diff"?hu(e):t==="markdown"?pu(e):t==="json"?Rs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Rs(e,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|\/\/.*$|\/\*.*?\*\/|\b(const|let|var|function|return|if|else|for|while|class|interface|type|import|export|from|async|await|new|extends|implements|switch|case|break|continue|try|catch|throw|true|false|null|undefined)\b|-?\b\d+(?:\.\d+)?\b/g):[{text:e}]}function hu(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 fu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function pu(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:fe.markup,bold:!0}}]:Rs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Rs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],k=o.index??0;k>s&&r.push({text:e.slice(s,k)}),r.push({text:p,style:gu(p)}),s=k+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function gu(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 mu(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?yo(t.repoTargets??[]):o?.pullRequest??(t?pe(t):null),k=[_u(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...k,...To(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...k,...Eu(e,r)]}:{title:"",rows:[...k,...Du(e,r)]}}function _u(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=Ps(t),k=Cs(t);return o.push({text:" "},p,{text:" "},k),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function mo(e){return[{text:" "},Ps(e),{text:" "},Cs(e)]}function ko(e){if(e.type==="project"&&e.repoTargets?.length){let r=yo(e.repoTargets);return r?mo(r):null}let t=pe(e);return t?.number?mo(t):null}function yo(e){let t=e.filter(o=>o.status==="ready"),r=t.map(o=>o.pullRequest).filter(o=>!!o.number);if(r.length===0)return null;let s=bu(r);return{number:-1,status:wu(r),draft:r.some(o=>o.draft),mergeable:r.length===t.length&&r.every(o=>o.mergeable),mergeStateStatus:null,reviewDecision:r.some(o=>o.reviewDecision==="CHANGES_REQUESTED")?"CHANGES_REQUESTED":r.some(o=>o.reviewDecision==="REVIEW_REQUIRED")?"REVIEW_REQUIRED":r.every(o=>o.reviewDecision==="APPROVED")?"APPROVED":null,requiredChecks:r.flatMap(o=>o.requiredChecks),aggregateReadiness:s}}function wu(e){return e.some(t=>t.status==="open")?"open":e.every(t=>t.status==="merged")?"merged":e.some(t=>t.status==="closed")?"closed":e[0]?.status??null}function bu(e){let t=e.map(r=>vo(r));return t.some(r=>r==="failed")?"failed":t.some(r=>r==="pending")?"pending":t.length>0&&t.every(r=>r==="success")?"success":"none"}function Ps(e){return!e||!e.number?{text:Hi,style:{fg:"565f89"}}:e.status==="merged"?{text:Ui,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:qi,style:{fg:"f7768e"}}:e.status==="draft"||e.draft?{text:gs,style:{fg:"565f89"}}:{text:gs,style:{fg:"9ece6a"}}}function Cs(e){return e?.aggregateReadiness?_o(e.aggregateReadiness):_o(vo(e))}function _o(e){return e==="failed"?{text:bs,style:{fg:"f7768e"}}:e==="pending"?{text:_s,style:{fg:"e0af68"}}:e==="success"?{text:ws,style:{fg:"9ece6a"}}:{text:ms,style:{fg:"565f89"}}}function vo(e){let t=e?.requiredChecks??null;return e?.status==="merged"?"success":e?.status==="closed"||!e?.number||!t||t.length===0?"none":t.some(r=>r.status==="failed")||e.reviewDecision==="CHANGES_REQUESTED"?"failed":t.every(r=>r.status==="success"||r.status==="skipped")?So(e)?"failed":ku(e)?"success":"pending":"pending"}function ku(e){return!!(e.mergeable&&!e.draft&&!So(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped"))}function So(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function To(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return yu(e,t);let r=pe(t),s=Po("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,lastSyncedAt:null,requiredChecks:[],comments:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),vu(s,e)}var mr=32;function yu(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let k of s){let i=o===k.repoId,c=e.focusedRegion==="inspector"&&i,d=k.repoId.startsWith("repo_")?k.repoId.slice(5):k.repoId;if(k.status!=="ready"){let a=k.failureReason?k.failureReason.slice(0,14):k.status,b=mr-a.length-1,l=d.length>b?d.slice(0,b-1)+"\u2026":d,m=mr-l.length-a.length;r.push({id:`project-review:${k.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let _=Ps(k.pullRequest),a=Cs(k.pullRequest),b=`${_.text} ${a.text}`,l=mr-b.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,w=mr-m.length-b.length,n=m+" ".repeat(Math.max(1,w));r.push({id:`project-review:${k.repoId}`,text:n+b,selected:i,focused:c,segments:[{text:n},{..._,text:_.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(k=>k.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...Po("target",p.branch,p.pullRequest))),r}function Ro(e,t){return To(e,t).length}function Po(e,t,r){let s=a=>`${e}-${a}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let k=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${k} \u2192 ${i}`,muted:!0});let c=Su(r.reviewDecision,r.mergeStateStatus),d=c&&c!=="review approved"?"merge blocked":r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";c?o.push({id:s("pr-merge"),text:`${d} \xB7 ${c}`,muted:!0,segments:[{text:d},{text:" \xB7 "},{text:c,style:{fg:Tu(r.reviewDecision,r.mergeStateStatus)}}]}):o.push({id:s("pr-merge"),text:d,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${Co(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});let _=r.comments??[];return _.length>0&&(o.push({id:s("comments-spacer"),text:""}),o.push({id:s("comments-header"),text:`Review comments (${_.length})`}),o.push(..._.slice(-4).flatMap((a,b)=>Pu(a,s(`comment:${b}`))))),o}function vu(e,t){if(t.focusedRegion!=="inspector"||t.inspectionMode!=="review"||e.length===0)return e;let r=Math.max(0,Math.min(t.reviewScrollOffset,e.length-1));return e.map((s,o)=>({...s,selected:t.reviewScrollOffset===0&&s.selected||o===r,focused:t.reviewScrollOffset===0&&s.focused||o===r}))}function Su(e,t){return e==="CHANGES_REQUESTED"?"review changes requested":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"review required":e==="APPROVED"?"review approved":null}function Tu(e,t){return e==="CHANGES_REQUESTED"?"f7768e":e==="APPROVED"?"9ece6a":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"e0af68":"565f89"}function Co(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}=Iu(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," ")} ${xu(e.status)}`,color:r,muted:!1}}function Pu(e,t){let r=e.author??"unknown",s=e.createdAt?` \xB7 ${Co(e.createdAt)}`:"",o=Cu(e.body,30),p=o.slice(0,4),k=p.length<o.length,i=[{id:`${t}:author`,text:`${r}${s}`,muted:!0},...p.map((c,d)=>({id:`${t}:body:${d}`,text:` ${k&&d===p.length-1?`${c}\u2026`:c}`,muted:!0}))];return i.push({id:`${t}:spacer`,text:"",muted:!0}),i}function Cu(e,t){let r=e.split(/\s+/).filter(Boolean);if(r.length===0)return[];let s=[],o="";for(let p of r){if(!o){o=p;continue}`${o} ${p}`.length<=t?o=`${o} ${p}`:(s.push(o),o=p)}return o&&s.push(o),s}function Iu(e){switch(e){case"success":return{icon:ws,color:"9ece6a"};case"pending":return{icon:_s,color:"e0af68"};case"failed":return{icon:bs,color:"f7768e"};case"skipped":return{icon:ms,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function xu(e){return e==="success"?"passing":e==="failed"?"failing":e}function Eu(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=Au(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let k=p.kind==="file"?r.get(p.path):void 0,i=k==="A"?"9ece6a":k==="M"?"e0af68":k==="D"?"f7768e":k==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Wi:ji:Ni(p.label),d=p.kind==="file"?Ki(p.label):void 0,_=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},b=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:_},a,b];return{id:p.path,text:`${_}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function Au(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 Du(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(Lu(t))return Mu(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=>Io(p,e,t))))}return r}function Lu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Mu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),k=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:k,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>Io(d,e,t,o.length+1))))}}return r}function Io(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,k=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:k}}function Ou(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Se(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:jt.basename(t.worktreePath)}]:[{label:"Repo",value:e.name},{label:"Branch",value:e.defaultBranch},{label:"Task",value:"none",mutedValue:!0}]:[{label:"Repo",value:"none",mutedValue:!0}]}function Bu(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function $u(e,t){return{name:Se(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var wr={width:120,height:36},Be={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??wr.width,wr.width),height:Math.max(t??wr.height,wr.height)}}import{spawn as ih}from"node:child_process";import{createHash as oh}from"node:crypto";import{createServer as ah,createConnection as Wo}from"node:net";import{openSync as ch}from"node:fs";import{mkdir as lh,readFile as Ms,rm as ft,writeFile as dh}from"node:fs/promises";import{tmpdir as uh}from"node:os";import yt from"node:path";import{createRequire as Vu}from"node:module";var Do=Fa(Eo(),1),Fu=1e3,Nu=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Lo(e){return new Do.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:Fu,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Mo(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function xs(e,t){return new Promise(r=>{e.write(t,r)})}function Oo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,k=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(k+i);if(!c){s.push({segments:[]});continue}let d=[];for(let _=0;_<e.cols;_+=1){let a=c.getCell(_,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:Hu(a,k+i===p&&_===r.cursorX)})}s.push({segments:Wu(ju(d))})}return s}function Wu(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};Bo(r.style)||(o.style=r.style),t.push(o)}return t}function ju(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Bo(r.style))break;t-=1}return e.slice(0,t)}function Hu(e,t){let r={},s=Ao(e,"fg"),o=Ao(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 Ao(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"):Nu[o]??Uu(o)}function Uu(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(qu).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 qu(e){return e===0?0:55+e*40}function Ku(e,t){return Is(e)===Is(t)}function Is(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function Bo(e){return Is(e)===""}var zu=Vu(import.meta.url),Gu=/^CTRL_([A-Z])$/,Xu="\x1B[6n",Yu="\x1B[c",Qu="\x1B[?u",Ju={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
164
|
-
`,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},
|
|
165
|
-
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(b.tabId)})})),b}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function
|
|
165
|
+
`);return k.length>Id?me(t,"Diff is above the 500 KB inline preview limit.","too_large",t,k.length):k.includes("\0")?me(t,"Binary diff preview is not available in Craig.","binary",t,k.length):{path:t,status:k.length>0?"ready":"empty",title:t,lines:k.length>0?k.split(`
|
|
166
|
+
`):["No diff for this file."],byteLength:k.length}}function Fi(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let p=0;p<o.length-1;p+=1){let k=o.slice(0,p+1).join("/");r.has(k)||(r.add(k),t.push({kind:"directory",path:k,depth:p,label:o[p]??k}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function tt(e,t){return e&&t.includes(e)?e:t[0]??null}function Ld(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Ni(e){return[...new Set(e.split(`
|
|
167
|
+
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Md(e,t){let r=gs.resolve(e,t),s=gs.resolve(e);if(r!==s&&!r.startsWith(`${s}${gs.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Od(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function me(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}Ie();import{access as Bd}from"node:fs/promises";async function Wi(e,t){let r=await ae(e,t),s=await $d(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 $d(e){try{return await Bd(e),!0}catch{return!1}}Me();Ee();import jt from"node:path";function ji(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"\u{F06E6} ";case"js":case"jsx":case"mjs":case"cjs":return"\u{F031E} ";case"json":case"jsonc":return"\u{F0871} ";case"md":case"mdx":return"\u{F0354} ";case"yaml":case"yml":return"\u{F0B10} ";case"sh":case"bash":case"zsh":return"\u{F018D} ";case"css":case"scss":case"sass":return"\u{F031C} ";case"html":case"htm":return"\u{F031D} ";case"py":return"\u{F0320} ";case"go":return"\u{F07D3} ";case"rs":return"\u{F1617} ";case"lock":return"\u{F033E} ";case"png":case"jpg":case"jpeg":case"gif":case"svg":case"webp":return"\u{F02E9} ";default:return"\u{F0214} "}}var Hi="\u{F024B} ",Ui="\u{F0DCF} ",qi="\u25CB",_s="\uEA64",Ki="\uEAFE",Vi="\uEBDA",ws="\u25CB",bs="\u25CF",ks="\u2713",ys="\u2715";function zi(e){switch(e.toLowerCase().split(".").pop()??""){case"ts":case"tsx":return"4fc1ff";case"js":case"jsx":case"mjs":case"cjs":return"f7df1e";case"json":case"jsonc":return"fbc02d";case"md":case"mdx":return"519aba";case"yaml":case"yml":return"e06c75";case"sh":case"bash":case"zsh":return"89e051";case"css":case"scss":case"sass":return"c792ea";case"html":case"htm":return"e06c75";case"py":return"3572a5";case"go":return"00add8";case"rs":return"dea584";case"lock":return"565f89";default:return}}Me();wt();Me();var Fd=["tasks","center","inspector","actions"],Zi=["agent","terminal"],eo=[],ne="inspection",$_=[...Zi,...eo],to=["commit","push","refresh-checks","close-task"],Nd=["refresh-checks","close-task"],ro=["task","checks","pr","setup-run","actions","next-action"],so=["diff","files","review"];function no(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=tu(e?.openInspectionKind)??r,o=pt(t);return{inputMode:su(e?.inputMode),focusedRegion:Zd(e?.focusedRegion),selectedRepoId:Ye(e?.selectedRepoId),selectedWorkspaceId:Ye(e?.selectedWorkspaceId),selectedTaskId:Ye(e?.selectedTaskId),selectedPtyTabId:Ye(e?.selectedPtyTabId),selectedLeftItemId:hu(Ye(e?.selectedTaskId)),activeTab:r?ne:Ye(e?.activeTab)??"agent",preferredPtyTabKind:ru(e?.preferredPtyTabKind),inspectorSection:Ft(e?.inspectorSection,ro,"task"),inspectionMode:eu(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:Ye(e?.selectedFileTreePath),selectedFilePath:Ye(e?.selectedFilePath),selectedDiffPath:Ye(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0,selectedActionId:Ft(e?.selectedActionId,to,"commit"),selectedProjectTargetId:null,selectedRunner:nu(e?.selectedRunner,o,st(t)),centerTabRunner:null,actionMessage:null,footerToast:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:Wd(),centerZoomed:!1}}function Wd(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function io(e,t){return{...e??qe(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function mr(e,t,r={}){let s=du(e,t),o=po(s),p=(o?.kind==="workspace"?t.workspaces?.find(_=>_.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(_=>_.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,i=((o?.kind==="repo"?t.repos.find(_=>_.id===o.id)??null:o?.kind==="task"?t.repos.find(_=>_.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(p?.kind==="project"?t.repos.find(_=>_.id===e.selectedRepoId&&p.discoveredRepoIds?.includes(_.id))??null:null)??(p?.kind!=="project"?t.repos.find(_=>_.id===p?.primaryRepoId)??null:null)??t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,c=p?t.tasks.filter(_=>_.workspaceId===p.id):i?t.tasks.filter(_=>_.repoId===i):[],d=(o?.kind==="task"?c.find(_=>_.id===o.id)??null:null)??c.find(_=>_.id===e.selectedTaskId)??c[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:p?.id??null,selectedRepoId:i,selectedTaskId:d?.id??null,...ou(d,e.activeTab,e.selectedPtyTabId),selectedFilePath:Xd(e,t,d?.id??null),...au(e,t,d?.id??null),selectedDiffPath:Yd(e,t,d?.id??null),inspectorSection:Ft(e.inspectorSection,ro,"task")}}function oo(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return jd(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null,focusedRegion:"center"},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId)))return X({state:{...e,selectedRunner:Rs(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Gi(e,1);if(t==="SHIFT_TAB"||t==="[")return Gi(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,-1,r):Yi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?rt(e,1,r):Yi(e,1,r);if(t==="PAGE_UP")return rt(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return rt(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return rt(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return rt(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??ue,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,p=o===s.length-1?null:s[o+1];return X({state:{...e,centerTabRunner:p,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=iu(e,t);return X({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&gr(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&fu(e.selectedLeftItemId)&&e.selectedWorkspaceId)return X({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Ji(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return vs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return vs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Xi(e,1)}if(Qe(t)){if(e.focusedRegion==="tasks"&&(Ss(e.selectedLeftItemId)||Ts(e.selectedLeftItemId))){let s=go(e.selectedLeftItemId),o=mo(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&gr(e.selectedLeftItemId)&&e.selectedTaskId){let s=e.selectedPtyTabId??e.activeTab;return X({state:{...e,inputMode:"terminal",focusedRegion:"center",activeTab:s,selectedPtyTabId:s,preferredPtyTabKind:Nt(s)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0})}if(e.focusedRegion==="center"&&Ji(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Nt(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return X({state:Vd({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function Wt(e,t){return{...e,terminal:t}}function ao(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function jd(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Qe(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
168
|
+
`}function co(e){return e.length===1&&e>=" "&&e!=="\x7F"}function lo(e){return uo(e)||Nt(e)!==null}function Hd(e){return eo.includes(e)}function uo(e){return Zi.includes(e)}function ho(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Ud=["tasks","center","inspector"];function Gi(e,t){return fr(e,"focusedRegion",Ud,t)}function vs(e,t,r){let s=fr(e,"activeTab",r&&r.length>0?r:lu(e),t);return!s.changed||Hd(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:Nt(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Yi(e,t,r){if(e.focusedRegion==="tasks")return qd(e,t,r.leftItemIds);if(e.focusedRegion==="center")return vs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return fo(e,t,r);if(e.inspectionMode==="diff"){let s=pr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}if(r.projectTargetIds?.length){let s=pr(e,"selectedProjectTargetId",r.projectTargetIds,t);return s.changed?{...s,state:{...s.state,reviewScrollOffset:0}}:s}return fr(e,"selectedActionId",Nd,t)}return fr(e,"selectedActionId",to,t)}function qd(e,t,r){let s=pr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=po(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0,reviewScrollOffset:0},refreshInspection:!0};let p=go(s.state.selectedLeftItemId);if(p)return{...s,state:{...s.state,selectedRepoId:p}};let k=mo(s.state.selectedLeftItemId);return k?{...s,state:{...s.state,selectedWorkspaceId:k}}:s}function rt(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return fo(e,t,r);if(e.inspectionMode==="diff"){let s=pr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return e.inspectionMode==="review"?Qi(e,"reviewScrollOffset",t,r.reviewRowCount??100,r.pageRows):X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Qi(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return zd(e,t,r)}return X({state:e})}function Kd(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,reviewScrollOffset:t==="review"?0:e.reviewScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Xi(e,t){return Kd(e,Jd(e.inspectionMode,so,t))}function fo(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return X({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,p=s.indexOf(o??""),k=Xe(p===-1?0:p+t,0,s.length-1),i=s[k]??null;if(i===e.selectedFileTreePath)return X({state:e});let c=i!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(i);return X({state:{...e,selectedFileTreePath:i,selectedFilePath:c?i:e.selectedFilePath,activeTab:c?ne:e.activeTab,openInspectionKind:c?"file":e.openInspectionKind,fileScrollOffset:c?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:c})}function Vd(e){if(!e.selectedFileTreePath)return e;let t=new Set(e.collapsedFileTreePaths);return t.has(e.selectedFileTreePath)?t.delete(e.selectedFileTreePath):t.add(e.selectedFileTreePath),{...e,collapsedFileTreePaths:[...t].sort((r,s)=>r.localeCompare(s)),actionMessage:null}}function Qi(e,t,r,s,o=10){let p=Math.max(0,s-Math.max(1,o)),k=Xe(e[t]+r,0,p);return k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function zd(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Gd(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=e.diffScrollOffset+t,i=r.diffPathIds??[];if(i.length===0||!e.selectedDiffPath){let _=Xe(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}let c=i.indexOf(e.selectedDiffPath);if(c===-1){let _=Xe(k,0,p);return _===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:_,actionMessage:null},changed:!0})}if(t>0&&k>p){let _=i[c+1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===p?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}if(t<0&&k<0){let _=i[c-1]??null;return _?X({state:{...e,selectedDiffPath:_,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let d=Xe(k,0,p);return d===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:d,actionMessage:null},changed:!0})}function Gd(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,p=Math.max(0,s-Math.max(1,o)),k=Xe(e.diffScrollOffset+t,0,p),i=Qd(r.diffPathRanges??[],k)??e.selectedDiffPath;return k===e.diffScrollOffset&&i===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:k,selectedDiffPath:i,actionMessage:null},changed:!0})}function Yd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Xd(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Qd(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function fr(e,t,r,s){let o=r.indexOf(e[t]),p=Xe(o+s,0,r.length-1),k=r[p];return!k||k===e[t]?X({state:e}):X({state:{...e,[t]:k,actionMessage:null},changed:!0})}function pr(e,t,r,s,o=!1){if(r.length===0)return X({state:e});let p=r.indexOf(e[t]??r[0]??""),k=Xe(p===-1?0:p+s,0,r.length-1),i=r[k]??null;return i===e[t]?X({state:e}):X({state:{...e,[t]:i,actionMessage:null},changed:!0,refreshInspection:o})}function Jd(e,t,r){let s=t.indexOf(e);return t[Xe(s+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function Ft(e,t,r){return t.includes(e??"")?e:r}function Zd(e){return e==="tabs"?"center":Ft(e,Fd,"tasks")}function eu(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ft(e,so,t)}function tu(e){return e==="file"||e==="diff"?e:null}function ru(e){return e==="terminal"?"terminal":"agent"}function su(e){return e==="terminal"?"terminal":"control"}function nu(e,t=[...ue],r="codex"){return e&>(e)&&t.includes(e)?e:r}function Rs(e,t=ue){let r=t.length>0?t:ue,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function Nt(e){let t=ue.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function iu(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Nt(e.activeTab)??e.preferredPtyTabKind}function ou(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(i=>i.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(i=>i.id===e.selectedPtyTabId)??null:null,p=e.ptyTabs.find(i=>i.id===t)??null;if(p)return{activeTab:p.id,selectedPtyTabId:p.id};if(uo(t)){let c=e.ptyTabs.find(d=>d.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:c?.id??ne,selectedPtyTabId:c?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let k=o??s??e.ptyTabs[0]??null;return{activeTab:k?.id??ne,selectedPtyTabId:k?.id??null}}function au(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?cu(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function cu(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 lu(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Ji(e,t){return t.includes(e)}function du(e,t){let r=uu(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 uu(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.id}`);r.kind==="project"&&t.push(`new-task-workspace:${r.id}`),r.kind==="repo"&&t.push(`new-task:${r.primaryRepoId}`)}else for(let r of e.repos){t.push(`repo:${r.id}`);for(let s of e.tasks.filter(o=>o.repoId===r.id))t.push(`task:${s.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function po(e){return e?e.startsWith("workspace:")?{kind:"workspace",id:e.slice(10)}:e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ye(e){return typeof e=="string"?e:null}function hu(e){return e?`task:${e}`:null}function gr(e){return typeof e=="string"&&e.startsWith("task:")}function Ss(e){return typeof e=="string"&&e.startsWith("new-task:")}function Ts(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function fu(e){return typeof e=="string"&&e.startsWith("workspace:")}function go(e){return Ss(e)?e.slice(9):null}function mo(e){return Ts(e)?e.slice(19):null}function Xe(e,t,r){return Math.min(r,Math.max(t,e))}var wr="empty",pe={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function ko(e,t){let r=mu(t,e),s=t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(w=>w.workspaceId===r.id):t.tasks,p=r?.kind==="project"?o:s?o.filter(w=>w.repoId===s.id):[],k=p.find(w=>w.id===e.selectedTaskId)??p[0]??null,i=k?.type==="project",c=Ju(t.tasks),d=bu(e,k),_=wu(e,k,d),a=_.find(w=>w.id===d)??_[0]??{id:"agent",label:"CODEX"},b=t.inspection?.taskId===k?.id?t.inspection:null,l=s?.name??"no repo",m=k?Pe(k.runner):Pe(e.selectedRunner);return{inputMode:e.inputMode,modalInput:e.taskPromptInput!==null||e.workspaceBrowser!==null,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,footerToast:e.footerToast,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${Pe(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${Pe(e.selectedRunner)}] Enter create task Esc pause ? help`:gr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?k===null?"n new task Tab tasks Esc pause ? help":d===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Pe(e.centerTabRunner??k?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?i?"\u2191\u2193 targets Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"Wheel/PgUp/PgDn scroll R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:jt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${jt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:m},leftTree:pu(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>Zu(w,c[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":k?.id??"no task",repo:l,agent:m},centerTranscript:_u(d,e,s,k,e.workspaceBrowser,b,r),tabs:_,rightContext:Qu(s,k),rightInspection:Du(e,k,b)}}function pu(e,t){let r=[{text:"WORKSPACES",muted:!0,panelHeader:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return gu(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let p of s){let k=e.selectedLeftItemId===`workspace:${p.id}`;r.push({id:`workspace:${p.id}`,text:`${p.kind==="project"?"\u2261":"\u2013"} ${p.name??p.id}`,selected:k,focused:k&&e.focusedRegion==="tasks"});let i=p.kind==="project"?p.discoveredRepoIds??[]:[p.primaryRepoId],c=t.tasks.filter(d=>d.workspaceId===p.id);if(c.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let d of c){let _=e.selectedLeftItemId===`task:${d.id}`,a=_?"\u25B8":"\u2022",b=d.title.length>28?`${d.title.slice(0,25)}\u2026`:d.title,l={id:`task:${d.id}`,taskId:d.id,text:`${a} ${b}`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks"},m=vo(d);m&&(l.prBadge=m),r.push(l)}if(p.kind==="project"){let d=`new-task-workspace:${p.id}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Project Task [${Pe(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}if(p.kind==="repo"){let d=`new-task:${p.primaryRepoId}`,_=e.selectedLeftItemId===d;r.push({id:d,text:`+ New Task [${Pe(e.selectedRunner)}]`,indent:2,selected:_,focused:_&&e.focusedRegion==="tasks",muted:!_})}else{r.push({text:` Repos (${i.length})`,indent:0,muted:!0});for(let d of i.slice(0,6)){let _=t.repos.find(a=>a.id===d);r.push({text:` \xB7 ${_?.name??d}`,indent:0,muted:!0})}i.length>6&&r.push({text:` \xB7 ${i.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function gu(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let p of r){let k=t.selectedLeftItemId===`repo:${p.id}`;e.push({id:`repo:${p.id}`,text:`\u2013 ${p.name}`,selected:k,focused:k&&t.focusedRegion==="tasks"});let i=s.filter(_=>_.repoId===p.id);if(i.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let _ of i){let a=t.selectedLeftItemId===`task:${_.id}`,b=a?"\u25B8":"\u2022",l=_.title.length>28?`${_.title.slice(0,25)}\u2026`:_.title,m={id:`task:${_.id}`,taskId:_.id,text:`${b} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"},w=vo(_);w&&(m.prBadge=w),e.push(m)}let c=`new-task:${p.id}`,d=t.selectedLeftItemId===c;e.push({id:c,text:`+ New Task [${Pe(t.selectedRunner)}]`,indent:2,selected:d,focused:d&&t.focusedRegion==="tasks",muted:!d})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function mu(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 _u(e,t,r,s,o,p=null,k=null){if(o){let c=o.entries.length===0?["No directories or git repos here."]:o.entries.map((d,_)=>{let a=_===o.selectedIndex?"\u25B8":" ",b=d.kind==="repo"?" [git repo]":"/";return`${a} ${d.name}${b}`});return Fe(["Browse for a workspace to register.",o.cwd,"",...c,"",o.error??"Use \u2191\u2193 to move, \u2192 or Enter to open, \u2190 to go up, Enter on a git repo to add it."])}if(!r)return Fe(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let c=k?.kind==="project",d=c?k.name??"this workspace":r.name,_=c?"Project Task":"Task";return Fe([`No tasks in ${d}.`,"",`Press n or choose + New ${_} to create one with ${Pe(t.selectedRunner)}.`])}let i=s.ptyTabs.find(c=>c.id===e)??null;return i?i.kind==="agent"?Fe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Fe([`${i.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?vu(s,p,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?Su(s,p,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Fe(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Fe(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function wu(e,t,r){let s=t?.ptyTabs.map(p=>({id:p.id,label:ku(p)}))??[];if(!t)return[{id:wr,label:"EMPTY",active:r===wr,focused:e.focusedRegion==="center"&&r===wr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:yu(e)}]:[];return[...s,...o].map(p=>({...p,active:p.id===r,focused:e.focusedRegion==="center"&&p.id===r}))}function bu(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:wr}function ku(e){return e.title.toUpperCase()}function yu(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?jt.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function vu(e,t,r){if(!e)return Fe(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Fe(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=yo(s.path??s.title);return[{text:s.title},{text:`${s.byteLength===null?"size unknown":`${s.byteLength} bytes`} \xB7 ${s.lines.length} lines \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Tu(s.lines,r,o)]}function Su(e,t,r){if(!e)return Fe(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Fe(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=yo(s.path??s.title);return[{text:s.title},{text:`${t.diffPaths.length} changed files \xB7 ${s.lines.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...Ru(s.lines,r,o)]}function Fe(e){return e.map(t=>({text:t}))}function Tu(e,t,r){let s=Math.max(3,String(e.length).length),o=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(o).map((p,k)=>{let i=o+k+1;return{text:`${`${String(i).padStart(s," ")} \u2502 `}${p}`,segments:[{text:String(i).padStart(s," "),style:{fg:pe.lineNumber}},{text:" \u2502 ",style:{fg:pe.gutter}},...Ps(p,r)],tone:"default"}})}function Ru(e,t,r){let s=Pu(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(p=>Cu(p,r))}function Pu(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 Cu(e,t){let r=_o(e.oldNumber),s=_o(e.newNumber),o=e.kind==="delete"?r:s,p=e.kind==="delete"?{bg:"2a1111",fallbackFg:pe.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:pe.diffAdd}:null,k=`${o} \u2502 ${e.text}`,i=p?xu(Ps(e.text,t),p.bg,p.fallbackFg):Ps(e.text,t),c=p?{fg:pe.lineNumber,bg:p.bg}:{fg:pe.lineNumber},d=p?{fg:pe.gutter,bg:p.bg}:{fg:pe.gutter};return{text:k,segments:[{text:o,style:c},{text:" \u2502 ",style:d},...i],fullBleed:p!==null}}function _o(e){return e===null?" ":String(e).padStart(4," ")}function yo(e){let t=jt.extname(e).toLowerCase();return[".ts",".tsx",".js",".jsx",".mjs",".cjs"].includes(t)?"javascript":[".json",".jsonc"].includes(t)?"json":[".md",".mdx"].includes(t)?"markdown":[".css",".scss"].includes(t)?"css":"plain"}function Ps(e,t){return t==="diff"?Iu(e):t==="markdown"?Eu(e):t==="json"?Cs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Cs(e,/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|\/\/.*$|\/\*.*?\*\/|\b(const|let|var|function|return|if|else|for|while|class|interface|type|import|export|from|async|await|new|extends|implements|switch|case|break|continue|try|catch|throw|true|false|null|undefined)\b|-?\b\d+(?:\.\d+)?\b/g):[{text:e}]}function Iu(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:pe.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:pe.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:pe.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:pe.diffMeta}}]:[{text:e}]}function xu(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Eu(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:pe.markup,bold:!0}}]:Cs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Cs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let p=o[0],k=o.index??0;k>s&&r.push({text:e.slice(s,k)}),r.push({text:p,style:Au(p)}),s=k+p.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Au(e){return e.startsWith("//")||e.startsWith("/*")?{fg:pe.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:pe.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:pe.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:pe.markup}:{fg:pe.keyword}}function Du(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,o=t?.type==="project"&&s?t.repoTargets?.find(i=>i.repoId===s)??null:null,p=t?.type==="project"?So(t.repoTargets??[]):o?.pullRequest??(t?ge(t):null),k=[Lu(e,p),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...k,...Po(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...k,...Vu(e,r)]}:{title:"",rows:[...k,...Gu(e,r)]}}function Lu(e,t){let r=e.inspectionMode,s=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],o=[];for(let c=0;c<s.length;c++){let d=s[c];c>0&&o.push({text:" "});let _=d.active?e.focusedRegion==="inspector"||e.focusedRegion==="actions"?"9ece6a":"7aa2f7":"565f89";o.push({text:d.label,style:{fg:_}})}let p=Is(t),k=xs(t);return o.push({text:" "},p,{text:" "},k),{id:"inspection-mode",text:o.map(c=>c.text).join(""),segments:o}}function wo(e){return[{text:" "},Is(e),{text:" "},xs(e)]}function vo(e){if(e.type==="project"&&e.repoTargets?.length){let r=So(e.repoTargets);return r?wo(r):null}let t=ge(e);return t?.number?wo(t):null}function So(e){let t=e.filter(o=>o.status==="ready"),r=t.map(o=>o.pullRequest).filter(o=>!!o.number);if(r.length===0)return null;let s=Ou(r);return{number:-1,status:Mu(r),draft:r.some(o=>o.draft),mergeable:r.length===t.length&&r.every(o=>o.mergeable),mergeStateStatus:null,reviewDecision:r.some(o=>o.reviewDecision==="CHANGES_REQUESTED")?"CHANGES_REQUESTED":r.some(o=>o.reviewDecision==="REVIEW_REQUIRED")?"REVIEW_REQUIRED":r.every(o=>o.reviewDecision==="APPROVED")?"APPROVED":null,requiredChecks:r.flatMap(o=>o.requiredChecks),aggregateReadiness:s}}function Mu(e){return e.some(t=>t.status==="open")?"open":e.every(t=>t.status==="merged")?"merged":e.some(t=>t.status==="closed")?"closed":e[0]?.status??null}function Ou(e){let t=e.map(r=>To(r));return t.some(r=>r==="failed")?"failed":t.some(r=>r==="pending")?"pending":t.length>0&&t.every(r=>r==="success")?"success":"none"}function Is(e){return!e||!e.number?{text:qi,style:{fg:"565f89"}}:e.status==="merged"?{text:Ki,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Vi,style:{fg:"f7768e"}}:e.status==="draft"||e.draft?{text:_s,style:{fg:"565f89"}}:{text:_s,style:{fg:"9ece6a"}}}function xs(e){return e?.aggregateReadiness?bo(e.aggregateReadiness):bo(To(e))}function bo(e){return e==="failed"?{text:ys,style:{fg:"f7768e"}}:e==="pending"?{text:bs,style:{fg:"e0af68"}}:e==="success"?{text:ks,style:{fg:"9ece6a"}}:{text:ws,style:{fg:"565f89"}}}function To(e){let t=e?.requiredChecks??null;return e?.status==="merged"?"success":e?.status==="closed"||!e?.number||!t||t.length===0?"none":t.some(r=>r.status==="failed")||e.reviewDecision==="CHANGES_REQUESTED"?"failed":t.every(r=>r.status==="success"||r.status==="skipped")?Ro(e)?"failed":Bu(e)?"success":"pending":"pending"}function Bu(e){return!!(e.mergeable&&!e.draft&&!Ro(e)&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped"))}function Ro(e){return e.reviewDecision==="REVIEW_REQUIRED"||e.reviewDecision==="CHANGES_REQUESTED"||e.mergeStateStatus==="REVIEW_REQUIRED"}function Po(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];if(t.type==="project"&&t.repoTargets?.length)return $u(e,t);let r=ge(t),s=Io("pr",t.branch,r??{number:null,url:null,baseBranch:null,headBranch:null,draft:!1,mergeable:!1,mergeStateStatus:null,reviewDecision:null,lastSyncedAt:null,requiredChecks:[],comments:[]}),o=t.prs.filter(p=>p!==r&&(p.status==="merged"||p.status==="closed")).length;return o>0&&s.push({id:"pr-history",text:`+ ${o} previous PR${o!==1?"s":""}`,muted:!0}),Fu(s,e)}var _r=32;function $u(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let k of s){let i=o===k.repoId,c=e.focusedRegion==="inspector"&&i,d=k.repoId.startsWith("repo_")?k.repoId.slice(5):k.repoId;if(k.status!=="ready"){let a=k.failureReason?k.failureReason.slice(0,14):k.status,b=_r-a.length-1,l=d.length>b?d.slice(0,b-1)+"\u2026":d,m=_r-l.length-a.length;r.push({id:`project-review:${k.repoId}`,text:l+" ".repeat(Math.max(1,m))+a,selected:i,focused:c,muted:!0})}else{let _=Is(k.pullRequest),a=xs(k.pullRequest),b=`${_.text} ${a.text}`,l=_r-b.length-1,m=d.length>l?d.slice(0,l-1)+"\u2026":d,w=_r-m.length-b.length,n=m+" ".repeat(Math.max(1,w));r.push({id:`project-review:${k.repoId}`,text:n+b,selected:i,focused:c,segments:[{text:n},{..._,text:_.text},{text:" "},{...a,text:a.text}]})}}let p=s.find(k=>k.repoId===o)??null;return p?.status==="ready"&&p.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...Io("target",p.branch,p.pullRequest))),r}function Co(e,t){return Po(e,t).length}function Io(e,t,r){let s=a=>`${e}-${a}`;if(!r.number)return[{id:s("no-pr"),text:t,muted:!0}];let o=[],p=`#${r.number}`;o.push(r.url?{id:s("pr-number"),text:`${p} Open in GitHub \u2197`,segments:[{text:p},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:r.url}]}:{id:s("pr-number"),text:p});let k=r.baseBranch??"?",i=r.headBranch??t;o.push({id:s("pr-branches"),text:`${k} \u2192 ${i}`,muted:!0});let c=Nu(r.reviewDecision,r.mergeStateStatus),d=c&&c!=="review approved"?"merge blocked":r.mergeable?"merge ready":r.mergeStateStatus?`merge ${r.mergeStateStatus}`:"merge unknown";c?o.push({id:s("pr-merge"),text:`${d} \xB7 ${c}`,muted:!0,segments:[{text:d},{text:" \xB7 "},{text:c,style:{fg:Wu(r.reviewDecision,r.mergeStateStatus)}}]}):o.push({id:s("pr-merge"),text:d,muted:!0}),o.push({id:s("pr-synced"),text:`synced ${xo(r.lastSyncedAt)}`,muted:!0}),o.push({id:s("checks-spacer"),text:""}),o.push({id:s("checks-header"),text:"Checks"}),r.requiredChecks.length?o.push(...r.requiredChecks.map(ju)):o.push({id:s("checks-none"),text:r.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0});let _=r.comments??[];return _.length>0&&(o.push({id:s("comments-spacer"),text:""}),o.push({id:s("comments-header"),text:`Review comments (${_.length})`}),o.push(..._.slice(-4).flatMap((a,b)=>Hu(a,s(`comment:${b}`))))),o}function Fu(e,t){if(t.focusedRegion!=="inspector"||t.inspectionMode!=="review"||e.length===0)return e;let r=Math.max(0,Math.min(t.reviewScrollOffset,e.length-1));return e.map((s,o)=>({...s,selected:t.reviewScrollOffset===0&&s.selected||o===r,focused:t.reviewScrollOffset===0&&s.focused||o===r}))}function Nu(e,t){return e==="CHANGES_REQUESTED"?"review changes requested":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"review required":e==="APPROVED"?"review approved":null}function Wu(e,t){return e==="CHANGES_REQUESTED"?"f7768e":e==="APPROVED"?"9ece6a":e==="REVIEW_REQUIRED"||t==="REVIEW_REQUIRED"?"e0af68":"565f89"}function xo(e){if(!e)return"--";let t=Date.now()-new Date(e).getTime(),r=Math.floor(t/1e3);if(r<60)return`${r}s ago`;let s=Math.floor(r/60);if(s<60)return`${s}m ago`;let o=Math.floor(s/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function ju(e){let{icon:t,color:r}=qu(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," ")} ${Ku(e.status)}`,color:r,muted:!1}}function Hu(e,t){let r=e.author??"unknown",s=e.createdAt?` \xB7 ${xo(e.createdAt)}`:"",o=Uu(e.body,30),p=o.slice(0,4),k=p.length<o.length,i=[{id:`${t}:author`,text:`${r}${s}`,muted:!0},...p.map((c,d)=>({id:`${t}:body:${d}`,text:` ${k&&d===p.length-1?`${c}\u2026`:c}`,muted:!0}))];return i.push({id:`${t}:spacer`,text:"",muted:!0}),i}function Uu(e,t){let r=e.split(/\s+/).filter(Boolean);if(r.length===0)return[];let s=[],o="";for(let p of r){if(!o){o=p;continue}`${o} ${p}`.length<=t?o=`${o} ${p}`:(s.push(o),o=p)}return o&&s.push(o),s}function qu(e){switch(e){case"success":return{icon:ks,color:"9ece6a"};case"pending":return{icon:bs,color:"e0af68"};case"failed":return{icon:ys,color:"f7768e"};case"skipped":return{icon:ws,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function Ku(e){return e==="success"?"passing":e==="failed"?"failing":e}function Vu(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=zu(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(p=>{let k=p.kind==="file"?r.get(p.path):void 0,i=k==="A"?"9ece6a":k==="M"?"e0af68":k==="D"?"f7768e":k==="??"?"565f89":void 0,c=p.kind==="directory"?e.collapsedFileTreePaths.includes(p.path)?Hi:Ui:ji(p.label),d=p.kind==="file"?zi(p.label):void 0,_=" ".repeat(p.depth),a=d?{text:c,style:{fg:d}}:{text:c},b=i?{text:p.label,style:{fg:i}}:{text:p.label},l=[{text:_},a,b];return{id:p.path,text:`${_}${c}${p.label}`,selected:p.path===o,focused:p.path===o&&e.focusedRegion==="inspector",muted:p.kind==="directory",segments:l}})}function zu(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 Gu(e,t){if(!t)return[{id:"empty",text:"No task diff index.",muted:!0}];if(t.error)return[{id:"error",text:t.error,muted:!0}];if(t.diffRows.length===0)return[{id:"empty",text:t.filePaths.some(o=>o.startsWith("repo_"))?"No changes in project task worktrees. Edits in the original repos are outside this task.":"No local changes.",muted:!0}];if(Yu(t))return Xu(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(p=>p.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(p=>Eo(p,e,t))))}return r}function Yu(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Xu(e,t){let r=[],s=[...new Set(t.diffRows.map(o=>o.path.split("/")[0]).filter(o=>typeof o=="string"&&o.length>0))].sort();for(let o of s){let p=t.diffRows.filter(i=>i.path.startsWith(`${o}/`)),k=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:k,muted:!0});for(let i of["branch","staged","unstaged","untracked"]){let c=p.filter(d=>d.group===i);c.length!==0&&(r.push({id:`repo-diff:${o}:${i}`,text:` ${i}`,muted:!0}),r.push(...c.map(d=>Eo(d,e,t,o.length+1))))}}return r}function Eo(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,p=e.deletions===null?"-":`-${e.deletions}`,k=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",i=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${i} ${o}/${p}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:k}}function Qu(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:Pe(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:jt.basename(t.worktreePath)}]:[{label:"Repo",value:e.name},{label:"Branch",value:e.defaultBranch},{label:"Task",value:"none",mutedValue:!0}]:[{label:"Repo",value:"none",mutedValue:!0}]}function Ju(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function Zu(e,t){return{name:Pe(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var br={width:120,height:36},Ne={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ht(e,t){return{width:Math.max(e??br.width,br.width),height:Math.max(t??br.height,br.height)}}import{spawn as yh}from"node:child_process";import{createHash as vh}from"node:crypto";import{createServer as Sh,createConnection as Ho}from"node:net";import{openSync as Th}from"node:fs";import{mkdir as Rh,readFile as Bs,rm as ft,writeFile as Ph}from"node:fs/promises";import{tmpdir as Ch}from"node:os";import yt from"node:path";import{createRequire as ch}from"node:module";var Mo=Va(Do(),1),eh=1e3,th=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function Oo(e){return new Mo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:eh,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function Bo(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function As(e,t){return new Promise(r=>{e.write(t,r)})}function $o(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),p=r.baseY+r.cursorY,k=Math.max(0,r.baseY-t);for(let i=0;i<e.rows;i+=1){let c=r.getLine(k+i);if(!c){s.push({segments:[]});continue}let d=[];for(let _=0;_<e.cols;_+=1){let a=c.getCell(_,o);!a||a.getWidth()===0||d.push({text:a.getChars()||" ",style:nh(a,k+i===p&&_===r.cursorX)})}s.push({segments:rh(sh(d))})}return s}function rh(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&ah(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};Fo(r.style)||(o.style=r.style),t.push(o)}return t}function sh(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!Fo(r.style))break;t-=1}return e.slice(0,t)}function nh(e,t){let r={},s=Lo(e,"fg"),o=Lo(e,"bg");return s&&(r.fg=s),o&&(r.bg=o),e.isBold()&&(r.bold=!0),e.isDim()&&(r.dim=!0),e.isItalic()&&(r.italic=!0),e.isUnderline()&&(r.underline=!0),(e.isInverse()||t)&&(r.inverse=!0),r}function Lo(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let s=t==="fg"?e.isFgRGB():e.isBgRGB(),o=t==="fg"?e.getFgColor():e.getBgColor();return s?o.toString(16).padStart(6,"0"):th[o]??ih(o)}function ih(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(oh).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 oh(e){return e===0?0:55+e*40}function ah(e,t){return Es(e)===Es(t)}function Es(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function Fo(e){return Es(e)===""}var lh=ch(import.meta.url),dh=/^CTRL_([A-Z])$/,uh="\x1B[6n",hh="\x1B[c",fh="\x1B[?u",ph={ENTER:"\r",KP_ENTER:"\r",SHIFT_ENTER:`
|
|
169
|
+
`,TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},kr=class{sessions=new Map;shell;env;spawn;onUpdate;resolveSessionSpec;attachedTabId=null;constructor(t){this.shell=t.shell??process.env.SHELL??"/bin/zsh",this.env=t.env??process.env,this.spawn=t.spawn,this.onUpdate=t.onUpdate,this.resolveSessionSpec=t.resolveSessionSpec??(()=>({cwd:t.workspaceRoot,command:[]}))}ensureSession(t,r,s,o){let p=this.sessions.get(r);if(p)if(p.status!=="running")Ds(p),this.sessions.delete(r);else return this.attachedTabId=r,p.scrollbackLines=0,No(p,s),this.getViewState(r);let k=this.createSession(t,r,s,o);return this.sessions.set(r,k),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=gh(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&&No(r,t)}detach(){this.attachedTabId=null}sessionTabIds(){return[...this.sessions.keys()]}disposeSession(t){let r=this.sessions.get(t);r&&(Ds(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Ds(t);this.sessions.clear(),this.attachedTabId=null}getViewState(t){if(!t)return{status:"idle",rows:[],error:null,scrolledBack:!1};let r=this.sessions.get(t);return r?{status:r.status,rows:$o(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??_h().spawn,k=Oo(s),i=o??this.resolveSessionSpec(t,r),c=at({...this.env,...i.env??{}}),{executable:d,args:_}=wh(this.shell,i.command,{cwd:i.cwd,env:c}),a=p(d,_,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:i.cwd,env:bh(c)}),b={taskId:t,tabId:r,pty:a,terminal:k,status:"running",error:null,disposables:[],scrollbackLines:0};return b.disposables.push(a.onData(l=>{kh(a,l),As(b.terminal,l).then(()=>{this.onUpdate?.(b.tabId)})})),b.disposables.push(a.onExit(l=>{b.status="exited",As(b.terminal,`\r
|
|
170
|
+
[process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(b.tabId)})})),b}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function gh(e){if(e.length===1)return e;let t=ph[e];if(t!==void 0)return t;let r=dh.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function No(e,t){mh(e.pty,t),Bo(e.terminal,t)}function Ds(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function mh(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function _h(){return lh("node-pty")}function wh(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ct(t[0],r),...t.slice(1)].map(Wo).join(" ")}; exec ${Wo(e)} -l`;return{executable:e,args:["-lc",o]}}function Wo(e){return`'${e.replaceAll("'","'\\''")}'`}function bh(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 kh(e,t){for(let r=0;r<Ls(t,uh);r+=1)e.write("\x1B[1;1R");for(let r=0;r<Ls(t,hh);r+=1)e.write("\x1B[?1;2c");for(let r=0;r<Ls(t,fh);r+=1)e.write("\x1B[?0u")}function Ls(e,t){if(t.length===0)return 0;let r=0,s=e.indexOf(t);for(;s!==-1;)r+=1,s=e.indexOf(t,s+t.length);return r}var $s=3;async function Uo(e){let t=Fs(e.paths);await Ih(t,e.paths,e.spawnDaemon);let r=await Yo(t.socketPath),s=new Ms(r,e);return await s.ready(),s}async function qo(e,t={}){let r=Fs(e);await Rh(e.runtimeDir,{recursive:!0}),await ft(r.socketPath,{force:!0});let s=new Os(e,t),o=Sh(p=>s.handleConnection(p));await Mh(o,r.socketPath),await Ph(r.pidPath,String(process.pid),"utf8"),await new Promise(p=>{let k=()=>{s.closeClients(),o.close(()=>p())};s.onShutdown=k,process.once("SIGTERM",k),process.once("SIGINT",k)}),await ft(r.socketPath,{force:!0}),await ft(r.pidPath,{force:!0}),s.disposeAll()}async function Ko(e){let t=Fs(e);return await vr(t.socketPath)?(await zo(t.socketPath),!0):!1}var Ms=class{constructor(t,r){this.socket=t;this.options=r,t.setEncoding("utf8"),t.on("data",s=>this.handleData(String(s))),t.on("error",s=>this.rejectAll(s instanceof Error?s:new Error(String(s)))),t.on("close",()=>{this.closed=!0,this.rejectAll(new Error("Craig PTY daemon connection closed."))})}socket;nextRequestId=1;pending=new Map;viewCache=new Map;attachedTabId=null;buffer="";closed=!1;options;async ready(){if((await this.send({type:"ping"})).protocolVersion!==$s)throw new Error("Craig PTY daemon protocol mismatch.")}async ensureSession(t,r,s){let o=await this.send({type:"ensureSession",taskId:t,tabId:r,size:s,spec:this.options.resolveSessionSpec?.(t,r)??{cwd:this.options.workspaceRoot,command:[]}});this.attachedTabId=r;let p=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,p),p}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}async pruneStale(t){await this.send({type:"pruneStale",keepTabIds:t})}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((k,i)=>{this.pending.set(r,{resolve:k,reject:i})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
|
|
166
171
|
`);let p=await o;if(!p.ok)throw new Error(p.error);return p}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
|
|
167
172
|
`);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
|
|
168
|
-
`)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},
|
|
173
|
+
`)}}handleMessage(t){if(t.trim().length===0)return;let r;try{r=JSON.parse(t)}catch{return}if("id"in r){let s=this.pending.get(r.id);if(!s)return;this.pending.delete(r.id),s.resolve(r);return}r.type==="update"&&(r.tabId&&this.viewCache.set(r.tabId,r.view),this.options.onUpdate?.(r.tabId??""))}rejectAll(t){for(let r of this.pending.values())r.reject(t);this.pending.clear()}},Os=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new kr({...r,workspaceRoot:t.workspaceRoot,onUpdate:s=>this.broadcastUpdate(s)})}handleConnection(t){let r="";this.clients.add(t),t.setEncoding("utf8"),t.on("data",s=>{r+=String(s);let o=r.indexOf(`
|
|
169
174
|
`);for(;o!==-1;){let p=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,p),o=r.indexOf(`
|
|
170
|
-
`)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{
|
|
171
|
-
${p.slice(-2e3)}`:""}`)}async function
|
|
175
|
+
`)}}),t.on("close",()=>this.clients.delete(t)),t.on("error",()=>this.clients.delete(t))}disposeAll(){this.runtime.disposeAll()}closeClients(){for(let t of this.clients)t.destroy();this.clients.clear()}async handleLine(t,r){if(r.trim().length===0)return;let s;try{s=JSON.parse(r)}catch{yr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);yr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:$s}:{},...o?{view:o}:{}})}catch(o){let p=o instanceof Error?o.message:String(o);yr(t,{id:s.id,ok:!1,error:p})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"pruneStale":{let r=new Set(t.keepTabIds);for(let s of this.runtime.sessionTabIds())r.has(s)||(this.runtime.disposeSession(s),this.attachedTabId===s&&(this.attachedTabId=null));return null}case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return Oh(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)yr(s,{type:"update",tabId:t,view:r})}};function Fs(e){let t=vh("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:yt.join(Ch(),`craig-${t}.sock`),pidPath:yt.join(e.runtimeDir,"pty-daemon.pid")}}async function Ih(e,t,r){if(await xh(e.socketPath,1e3))return;await vr(e.socketPath)&&(await zo(e.socketPath),await jo(e.socketPath,1e3)),await vr(e.socketPath)&&(await Dh(e),await jo(e.socketPath,1e3)),await Ah(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:k,args:i}=Eh(s),c=Th(yt.join(t.runtimeDir,"pty-daemon.log"),"a");yh(k,i,{cwd:s,detached:!0,stdio:["ignore",c,c],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await Vo(e.socketPath))return;await Ns(50)}let p=await Bs(yt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${p?`
|
|
176
|
+
${p.slice(-2e3)}`:""}`)}async function Vo(e){let t=await Lh(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===$s}async function xh(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await Vo(e))return!0;await Ns(50)}return!1}function Eh(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 Ah(e){let t=await Bs(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Xo(r))return}await ft(e.socketPath,{force:!0}),await ft(e.pidPath,{force:!0})}async function vr(e){let t=await Yo(e).catch(()=>null);return t?(t.end(),!0):!1}async function zo(e){await Go(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Dh(e){let t=await Bs(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Xo(r)){await ft(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await ft(e.socketPath,{force:!0})}}async function Lh(e){return Go(e,{id:1,type:"ping"})}function Go(e,t){return new Promise((r,s)=>{let o=Ho(e),p="",k=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),i=()=>clearTimeout(k);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
|
|
172
177
|
`)),o.once("error",c=>{i(),s(c)}),o.on("data",c=>{p+=String(c);let d=p.indexOf(`
|
|
173
|
-
`);if(d===-1)return;let _=p.slice(0,d);i(),o.end();try{r(JSON.parse(_))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function
|
|
174
|
-
`)}catch{}}function
|
|
175
|
-
`)}function
|
|
176
|
-
`)}function
|
|
177
|
-
`)}function xh(e,t,r,s){let o=Oh(e.runners),p=1,k=e.leftTree.map(c=>Mh(c,t,s));return[...Cr(k,r-p),o]}function Eh(e,t,r,s){let o=e.tabs.find(u=>u.active)?.label??"AGENT",p=Gh(e.tabs),k="\u2500".repeat(o.length+1),i=`${" ".repeat(p)}${e.inputMode==="terminal"?vt(k,s,re.panelBg):Ir(k,s,re.panelMuted)}`,c=[`${Ir(e.centerHeader.tabLabel,s,re.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),d=e.tabs.find(u=>u.active)?.id??"agent",_=e.centerHeader.tabLabel==="BROWSER"||!ao(d)?e.centerTranscript.map(u=>({...u})):Ah(e),a=Bh(e.tabs,s,e.focusedRegion==="center"),b=" engaged ",l=b.length+2,m=e.inputMode==="terminal"?`${xr(b,s,re.panelBg)}${vt("\u25CF",s,re.panelBg)} `:"",w=t-2,n=e.inputMode==="terminal"?" ".repeat(Math.max(0,w-ke(a)-l)):"",f=[{text:e.inputMode==="terminal"?`${a}${n}${m}`:a},{text:i,tone:"muted"},{text:c},qe(),..._];return Cr(f,r)}function Ah(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:aa(s.segments),segments:s.segments,fullBleed:!0}))}function Dh(e,t,r,s){let o=e.rightInspection?Lh(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):Cr([{text:"CONTEXT"},qe(),...e.rightContext.map(p=>$h(p,s)),...e.actionMessage?[qe(),{text:e.actionMessage}]:[]],r);return Cr(o,r)}function Lh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),k=p===-1?0:Yh(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Xo(i)),...s.slice(k,k+o).map(i=>Xo(i))]}function Xo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),k=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:k}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Mh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",k=e.accentDot?` ${vt("\u25CF",r,e.selected?re.panelSelected:re.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+ke(m.text),0):0,c=t-ke(p)-ke(o)-i,d=e.selected?e.text:e.focused?vt(e.text,r,re.panelBg):e.panelHeader?Ir(e.text,r,re.panelMuted):e.text,_=Xe(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${_}${p}${k}`},...e.prBadge];return{text:`${_}${p}${e.prBadge.map(w=>w.text).join("")}`,segments:l,tone:a}}return{text:`${_}${p}${k}`,tone:a}}function Oh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),k=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${k}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:re.success.fg}}):r.push({text:o.text,style:{fg:re.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function Bh(e,t,r){return e.map(s=>s.active?r?vt(s.label,t,re.panelBg):Ir(s.label,t,re.panelBg):xr(s.label,t,re.panelBg)).join(" ")}function $h(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?xr(e.value,t,re.panelBg):e.value}`}}function Sr(e,t,r,s){let o=Fh(s,e.tone??"default"),p=Nh(e,r,o);if(s==="left"){if(e.fullBleed)return le(Xe(p,t),r,o);let i=t-Tr-Rr;if(e.rightAlign){let d=ke(p),_=Math.max(0,i-d),a=`${" ".repeat(Tr)}${" ".repeat(_)}${p}${" ".repeat(Rr)}`;return le(a,r,o)}let c=`${" ".repeat(Tr)}${Xe(p,i)}${" ".repeat(Rr)}`;return le(c,r,o)}return s==="center"&&e.fullBleed?Wh(e,t,r,o):le(Xe(` ${p}`,t),r,o)}function Fh(e,t){return t==="selected"||t==="focused"?re.panelSelected:t==="muted"?re.panelMuted:re.panelBg}function Cr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(qe());return r}function qe(){return{text:""}}function Nh(e,t,r){return e.segments?e.segments.map(s=>ra(s,t,r)).join(""):e.text}function Wh(e,t,r,s){let o=" ".repeat(Pr),p=Math.max(0,t-Pr*2);if(!e.segments)return le(`${o}${Xe(e.text,p)}${o}`,r,s);let k=Uh(e.segments,p),i=`${o}${k.map(c=>ra(c,r,s)).join("")}${o}`;return le(i,r,s)}function ra(e,t,r){let s=e.href?`${sa(e.href)}${e.text}${Qo}`:jh(e.text);return!t||!e.style?s:`${Ht(Vh(e.style,r))}${zh(e.style)}${s}${Ns}${Ht(r)}`}function jh(e){return e.replace(Ph,t=>{let[r,s]=Hh(t);return`${sa(r)}${r}${Qo}${s}`})}function Hh(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function sa(e){return`\x1B]8;;${e}\x1B\\`}function Uh(e,t){let r=qh(e,t);return Kh(r,t)}function qh(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=ke(o.text);if(p<=s){r.push(o),s-=p;continue}let k=Hs(o.text,s);k.length>0&&r.push({...o,text:k}),s=0}return r}function Kh(e,t){let r=ke(aa(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 Vh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,k=s??t.bg;return p&&(o.fg=p),k&&(o.bg=k),o}function zh(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 Gh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function na(e,t){let r=Math.max(0,t-ke(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function Xe(e,t){let r=ke(e);return r>=t?Xh(e,t):e+" ".repeat(t-r)}function Xh(e,t){if(t<=0)return"";if(ke(e)<=t)return e;let r=oa(e);return Hs(r,Math.max(0,t-1))+"\u2026"}function ke(e){let t=0;for(let r of Array.from(oa(e)))t+=ia(r);return t}function Hs(e,t){let r="",s=0;for(let o of Array.from(e)){let p=ia(o);if(s+p>t)break;r+=o,s+=p}return r}function ia(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 Yh(e,t,r){return Math.min(Math.max(e,t),r)}function oa(e){return e.replace(Rh,"").replace(Sh,"")}function aa(e){return e.map(t=>t.text).join("")}function le(e,t,r){if(!t)return e;let s=Ht(r),o=e.replace(Th,`${Ns}${s}`);return`${s}${o}${Ns}`}function Ht(e){let t=[];return e.fg&&t.push(`38;2;${Yo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Yo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Yo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function vt(e,t,r){return Us(e,t,re.success.fg,r)}function Ir(e,t,r){return Us(e,t,re.accent.fg,r)}function xr(e,t,r){return Us(e,t,re.mutedfg.fg,r)}function Us(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Ht(o)}${e}${Ht(s)}`}var Qh="https://registry.npmjs.org/craig-cli/latest";var Er=null;function qs(){try{return"0.5.6"}catch{return"unknown"}}async function ca(){let e=qs(),t=Date.now();if(Er&&t-Er.cachedAt<36e5)return Er.result;let r=null;try{let o=await fetch(Qh,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&Jh(r,e)};return Er={result:s,cachedAt:t},s}function Jh(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[k=0,i=0,c=0]=r(t);return s!==k?s>k:o!==i?o>i:p>c}Ae();var Ks=["Runners","Help"];function Vs(e,t){return de.map(r=>{let s=ye(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),k=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${k}`})}function da(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 ua(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Ks.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:zs(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ha(e,t,r,s){if(e.pathEdit)return Zh({...e,pathEdit:e.pathEdit},t,r);let o=Vs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=de[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!zs(r))return{kind:"noop",state:e};let p=de[e.menuIndex]??"codex",k=t.runners?.[p]?.enabled!==!1;return k&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:ef(t,p,!k),state:{...e,message:`${ye(p).displayName} ${k?"disabled":"enabled"}.`}}}function Zh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:la({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(zs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:tf(t,s,o.length>0?o:null),state:la({...e,message:o.length>0?`${ye(s).displayName} executable saved.`:`${ye(s).displayName} executable reset to default.`})}}return rf(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function ef(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function tf(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function la(e){let t={...e};return delete t.pathEdit,t}function zs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
178
|
-
`}function rf(e){return e.length===1&&e>=" "&&e!=="\x7F"}var af=sf(import.meta.url),cf=af("terminal-kit"),lf=cf.terminal;async function ga(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ve(t);await kt(t);let s=await Ne(r),o=pt(s),p=e.uiStateFile?await De({uiStateFile:e.uiStateFile}):null,k=Promise.resolve(),i=Promise.resolve(),c=await Ut(t,void 0,o),d=gr(ro(p,s),c);c=await Ut(t,d,o);let _=()=>{},a={workspaceRoot:t,onUpdate:()=>_(),resolveSessionSpec:(m,w)=>ff(c,w,t)},b=e.ptyRuntime??await jo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=so(p,m);let w=p;k=k.then(()=>Pe({uiStateFile:e.uiStateFile},w),()=>Pe({uiStateFile:e.uiStateFile},w)),k.catch(()=>{})};return new Promise(m=>{let w=e.terminal??lf,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:gr(d,c)},g=!1,f=!1,u=null,h=0,y=0,T=null,C=null,x=null,N=null,B=null,D=!1,A=`Craig v${qs()}`,E=null,q=0,K=!0,Y=null,F=()=>{},H=b;_=()=>{n.mode==="main"&&(n={mode:"main",shell:v(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&F()},50)))};function v(M){return Wt(M,H.getViewState(P(M)))}function P(M){let L=R(M);return L?L.ptyTabs.some(O=>O.id===M.activeTab)?M.activeTab:M.activeTab==="agent"||M.activeTab==="terminal"?L.ptyTabs.find(O=>O.kind===M.activeTab)?.id??M.selectedPtyTabId:M.selectedPtyTabId:M.selectedPtyTabId}function S(M){return v(df(M,c))}function R(M){return c.tasks.find(L=>L.id===M.selectedTaskId)??null}async function $(){let M=c.tasks.flatMap(L=>L.ptyTabs.map(O=>O.id));await H.pruneStale?.(M),await H.hydrateSessions?.(M)}function W(){$().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:S(n.shell)},F())})}function U(M,L){return N&&(clearTimeout(N),N=null),L?(N=setTimeout(()=>{N=null,!(n.mode!=="main"||n.shell.footerToast!==L)&&(n={mode:"main",shell:S({...n.shell,footerToast:null})},F())},3e3),{...M,footerToast:L}):{...M,footerToast:null}}function V(M){let L=i.then(M,M);return i=L.then(()=>{},()=>{}),L}function te(M){let L=R(M),O=c.inspection,j=O&&O.taskId===L?.id?O:null,G=uf(j?.fileRows??[],M.collapsedFileTreePaths);return{leftItemIds:hf(c),centerTabIds:lo(L,M),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:G.map(Z=>Z.path),fileTreeFileIds:G.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:G.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,reviewRowCount:Ro(M,L),pageRows:Math.max(5,ht(w.width,w.height).height-Be.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function I(M){await nn(r,M),s=M,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:S({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:S({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function Q(M){let L=M.selectedTaskId;L&&await V(async()=>{let O=await he(r,L);!O.ptyTabs.some(j=>j.id===M.activeTab)||O.selectedPtyTabId===M.activeTab||await se(r,{...O,selectedPtyTabId:M.activeTab})})}async function z(){let M=(n.mode==="main",n.shell);c=await Ut(t,M,o),n.mode==="main"?n={mode:"main",shell:S(n.shell)}:n={...n,shell:S(n.shell)}}async function J(M){let L=++q,O=ma(c.tasks,M),j=c.inspection,G;if(O&&j?.taskId===O.id){let Z={selectedFilePath:M.selectedFilePath,selectedDiffPath:M.selectedDiffPath},ce=await Ii(O,j,Z);if(L!==q)return;G={...c,inspection:ce}}else if(G=await Ut(t,M,o),L!==q)return;c=G,n.mode==="main"&&(n={mode:"main",shell:S(n.shell)},l(n.shell),F())}async function ge(M){let L=await Rf(M);n.mode==="main"&&(n={mode:"main",shell:S({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},F())}async function _e(M){try{let L=S(M),O=R(L),j=L.selectedPtyTabId;if(O&&L.focusedRegion==="tasks"){let ce=O.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce?j=ce.id:(O=await Xs(O),await z(),j=O.selectedPtyTabId)}O&&!j&&(O=await Xs(O),await z(),j=O.selectedPtyTabId);let G=S({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!G.selectedTaskId||!j){n={mode:"main",shell:G},F();return}n={mode:"main",shell:Wt({...G,inputMode:"terminal"},H.getViewState(j))},l(n.shell);let Z=await H.ensureSession(G.selectedTaskId,j,Ar(ht(w.width,w.height)));f=Gs(j),u=null,n={mode:"main",shell:Wt({...G,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let O=L instanceof Error?L.message:"Failed to start PTY.";M.selectedTaskId&&M.selectedPtyTabId&&Gs(M.selectedPtyTabId)&&(await Ye(M.selectedTaskId,O).catch(()=>{}),await z().catch(()=>{})),n={mode:"main",shell:io(S(M),O)},l(n.shell)}F()}async function Ye(M,L){await V(async()=>{let O=await he(r,M);await se(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function xe(M,L,O){let j=S(M);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let G=await V(async()=>{let Z=await he(r,j.selectedTaskId),ce=L??mf(Z,j.activeTab,j.preferredPtyTabKind),Ee=fa(Z,ce,O??void 0,s),Tt={...Z,ptyTabs:[...Z.ptyTabs,Ee],selectedPtyTabId:Ee.id};return await se(r,Tt),Tt});return await z(),S({...j,activeTab:G.selectedPtyTabId??j.activeTab,selectedPtyTabId:G.selectedPtyTabId,preferredPtyTabKind:G.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${G.ptyTabs.at(-1)?.title??"tab"}`})}async function Ke(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:j}=await V(async()=>{let G=await he(r,L.selectedTaskId),Z=G.ptyTabs.findIndex(Br=>Br.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let ce=G.ptyTabs[Z],Ee=G.ptyTabs.filter(Br=>Br.id!==ce.id),Tt=Ee[Math.min(Z,Ee.length-1)]??Ee[Z-1]??null;return await se(r,{...G,ptyTabs:Ee,selectedPtyTabId:Tt?.id??null}),{closedTab:ce,nextSelectedTab:Tt}});return H.disposeSession(O.id),await z(),S({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function rt(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=R(L),j=null,G=null;if(O?.type==="project"&&O.repoTargets?.length){let Z=await ar(r,L.selectedTaskId);await z();let ce=Z.synced+Z.discovered+Z.notFound;G=`Refreshed ${Z.synced}/${ce} targets`}else{let{disposition:Z,task:ce}=await ss(r,L.selectedTaskId);await z(),j=Z==="not_found"?`No PR found for ${ce.branch}`:null,Z!=="not_found"&&(G=`Refreshed checks: ${pe(ce)?.requiredChecks.length??0} reported`)}return S({...U(L,G),focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function wa(){if(D||n.mode!=="main")return;let M=c.tasks;D=!0;try{if(await ci(r,M),n.mode!=="main")return;c=await Ut(t,n.shell,o),n={mode:"main",shell:S(n.shell)},F()}catch{}finally{D=!1}}async function ba(M){let L=S(M);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:j}=await V(async()=>{let G=await he(r,L.selectedTaskId),Z=await Fi(r,L.selectedTaskId);return{taskBeforeClose:G,task:Z}});for(let G of O.ptyTabs)H.disposeSession(G.id);return await z(),S({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function ka(M){let L=S(M);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await He(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Mt(r,L.selectedWorkspaceId);let j=await Ot(r,L.selectedWorkspaceId);return await z(),S({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function Xs(M){let L=M.ptyTabs.find(G=>G.kind==="agent")??null;if(L){let G={...M,selectedPtyTabId:L.id};return await V(async()=>{let Z=await he(r,M.id),ce=Z.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ce&&await se(r,{...Z,selectedPtyTabId:ce.id})}),G}let O=fa(M,"agent",void 0,s),j={...M,ptyTabs:[...M.ptyTabs,O],selectedPtyTabId:O.id};return await V(async()=>{let G=await he(r,M.id),Z=G.ptyTabs.find(ce=>ce.kind==="agent")??null;if(Z){await se(r,{...G,selectedPtyTabId:Z.id});return}await se(r,{...G,ptyTabs:[...G.ptyTabs,O],selectedPtyTabId:O.id})}),j}F=()=>{ya();let M=ht(w.width,w.height),L=n.mode==="main"?ta(M,wo(S(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?Jo(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:A,updateText:E}):n.variant==="pause"?Zo(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:A,updateText:E}):n.variant==="options"?Ws(M,{menuIndex:n.menuIndex,optionsMenuItems:Ks}):n.variant==="runners"?Ws(M,{menuIndex:qt(n).menuIndex,optionsMenuItems:Vs(s,qt(n)),optionsMessage:da(qt(n)),optionsSubtitle:"Runners"}):ea(M);K&&(w.moveTo(1,1),w.eraseDisplayBelow(),K=!1),w.noFormat(wf(L)),w.hideCursor(!0)};function ya(){let M=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";M!==Y&&(Y=M,w.grabInput(M==="terminal"?{mouse:"button"}:!0))}let va=()=>{process.stdout.off("resize",en),process.off("SIGCONT",tn),w.removeListener("key",Ys),w.removeListener("unknown",Qs),w.removeListener("mouse",Js),T&&(clearTimeout(T),T=null),C&&(clearTimeout(C),C=null),x&&(clearTimeout(x),x=null),N&&(clearTimeout(N),N=null),B&&(clearInterval(B),B=null),H.disposeAll(),w.grabInput(!1),w.hideCursor(!1),w.fullscreen(!1)},Mr=M=>{va(),m(M)},Sa=async()=>{if(n.mode!=="main"||g)return;let M=n.shell,L=M.taskPromptInput?.trim()??"";if(!M.selectedRepoId&&!M.selectedWorkspaceId){n={mode:"main",shell:S({...M,taskPromptError:"Select a workspace first."})},F();return}if(L.length===0){n={mode:"main",shell:S({...M,taskPromptError:"Task prompt cannot be empty."})},F();return}g=!0,n={mode:"main",shell:S({...M,actionMessage:`Creating ${M.selectedRunner} task in ${M.selectedWorkspaceId??M.selectedRepoId}...`})},F();let O=null;try{O=await _f(r,M.selectedRepoId,M.selectedWorkspaceId,L,M.selectedRunner),await z();let j=S({...n.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),G=await H.ensureSession(O.id,j.selectedPtyTabId??_a(O,"agent"),Ar(ht(w.width,w.height)));f=Gs(j.selectedPtyTabId),n={mode:"main",shell:Wt(j,G)},l(n.shell)}catch(j){j instanceof Dr&&(O=j.task);let G=j instanceof Error?j.message:"Failed to create task.";O&&(await se(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:G}).catch(()=>{}),await z().catch(()=>{})),n={mode:"main",shell:S({...n.shell,inputMode:"control",selectedTaskId:O?.id??n.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:n.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:G,actionMessage:null})}}finally{g=!1,F()}},Ta=M=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(M==="ESCAPE"){n={mode:"main",shell:S({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},F();return}if(tt(M)){Sa();return}if(M==="BACKSPACE"){n={mode:"main",shell:S({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},F();return}if(M==="CTRL_R"){n={mode:"main",shell:S({...L,selectedRunner:Ss(L.selectedRunner,o),taskPromptError:null})},F();return}oo(M)&&(n={mode:"main",shell:S({...L,taskPromptInput:`${L.taskPromptInput}${M}`,taskPromptError:null})},F())}},Ra=M=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(M==="ESCAPE"){n={mode:"main",shell:S({...n.shell,workspaceBrowser:null,actionMessage:null})},F();return}if(M==="UP"||M==="k"){n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},F();return}if(M==="DOWN"||M==="j"){let O=Math.max(0,L.entries.length-1);n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(O,L.selectedIndex+1),error:null}})},F();return}if(M==="LEFT"||M==="h"){ge(St.dirname(L.cwd)).catch(O=>{let j=O instanceof Error?O.message:"Failed to open parent directory.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:j}})},F()});return}if(M==="RIGHT"||M==="l"||tt(M)){let O=L.entries[L.selectedIndex]??null;if(!O)return;if((M==="RIGHT"||M==="l")&&(O.kind==="directory"||O.kind==="repo")){ge(O.path).catch(j=>{let G=j instanceof Error?j.message:"Failed to open directory.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:G}})},F()});return}Lt(r,O.path).then(async j=>{await z();let G=j.repos[0]??null;n={mode:"main",shell:S({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:G?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to add workspace.";n={mode:"main",shell:S({...n.shell,workspaceBrowser:{...L,error:G}})},F()})}}},Ys=M=>{let L=typeof M=="string"?M:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){Ta(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){Ra(L);return}if(n.mode==="main"){let O=no(n.shell,L,te(n.shell));if(O.exit){Mr(0);return}if(O.detachTerminal){H.detach(),n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(n.shell.inputMode==="terminal"){if(O.changed){n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(f&&tt(L)){f=!1;return}f&&(f=!1),u=kf(L)?{key:L,at:Date.now()}:null;let j=yf(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Or(j);return}H.writeKey(L);return}if(L==="CTRL_C"){Mr(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},K=!0,F();return}if(O.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:S(O.state)},K=!0,F();return}if(O.beginTaskPrompt){n={mode:"main",shell:S(O.state)},l(n.shell),F();return}if(O.openWorkspaceBrowser){ge(t).catch(j=>{let G=j instanceof Error?j.message:"Failed to browse workspaces.";n={mode:"main",shell:S({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:G}})},F()});return}if(O.createPtyTab){xe(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(j=>{_e(j)}).catch(j=>{let G=j instanceof Error?j.message:"Failed to create tab.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.closePtyTab){Ke(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to close tab.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.refreshPullRequestChecks){rt(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to refresh PR checks.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.closeTask){ba(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to close task.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.removeWorkspace){ka(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),F()}).catch(j=>{let G=j instanceof Error?j.message:"Failed to remove workspace.";n={mode:"main",shell:S({...O.state,actionMessage:G})},F()});return}if(O.attachTerminal){_e(O.state);return}if(O.refreshInspection){n={mode:"main",shell:S(O.state)},l(n.shell),F(),J(n.shell).catch(j=>{let G=j instanceof Error?j.message:"Failed to refresh inspection.";n={mode:"main",shell:S({...n.shell,actionMessage:G})},F()});return}O.changed&&(n={mode:"main",shell:S(O.state)},Q(n.shell).catch(()=>{}),l(n.shell),F());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:S(n.shell)},K=!0,F();return}if(n.variant==="options"){Pa(L);return}if(n.variant==="runners"){Ca(L);return}if(n.optionsMessage){(L==="ESCAPE"||tt(L))&&(n={...n,optionsMessage:null},F());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},F();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},F();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:S(n.shell)},K=!0,F());return}if(tt(L)){if(n.menuIndex===0){n={mode:"main",shell:S({...n.shell,inputMode:"control"})},K=!0,F(),W();return}if(n.menuIndex===1){let O=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}Mr(0)}};function Pa(M){if(n.mode!=="overlay"||n.variant!=="options")return;let L=ua(n.menuIndex,M);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},F();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},K=!0,F());return}if(L.kind==="help"){let O=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}if(L.kind==="runners"){let O=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F()}}}function Ca(M){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ha(qt(n),s,M,o);if(L.kind!=="noop"){if(L.kind==="back"){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},K=!0,F();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},F();return}I(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},F())}).catch(O=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=O instanceof Error?O.message:"Failed to save runner option.";n={...n,runnerOptions:{...qt(n),message:j}},F()})}}let Qs=M=>{let L=bf(M);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){H.detach(),f=!1,u=null,n={mode:"main",shell:S({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),F();return}let O=vf(L);if(O!==0){Or(O);return}let j=Sf(L);if(j){f=!1,u={key:j,at:Date.now()},H.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
178
|
+
`);if(d===-1)return;let _=p.slice(0,d);i(),o.end();try{r(JSON.parse(_))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>i())})}async function jo(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await vr(e))return;await Ns(50)}}function Yo(e){return new Promise((t,r)=>{let s=Ho(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Mh(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function yr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
|
|
179
|
+
`)}catch{}}function Xo(e){try{return process.kill(e,0),!0}catch{return!1}}function Ns(e){return new Promise(t=>setTimeout(t,e))}function Oh(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Bh=[" \u2584\u2588\u2588\u2588\u2588\u2584 \u2588\u2588\u2580\u2588\u2588\u2588 \u2584\u2584\u2584 \u2588\u2588\u2593 \u2584\u2588\u2588\u2588\u2588"," \u2592\u2588\u2588\u2580 \u2580\u2588 \u2593\u2588\u2588 \u2592 \u2588\u2588\u2592\u2592\u2588\u2588\u2588\u2588\u2584 \u2593\u2588\u2588\u2592 \u2588\u2588\u2592 \u2580\u2588\u2592"," \u2592\u2593\u2588 \u2584 \u2593\u2588\u2588 \u2591\u2584\u2588 \u2592\u2592\u2588\u2588 \u2580\u2588\u2584 \u2592\u2588\u2588\u2592\u2592\u2588\u2588\u2591\u2584\u2584\u2584\u2591"," \u2592\u2593\u2593\u2584 \u2584\u2588\u2588\u2592\u2592\u2588\u2588\u2580\u2580\u2588\u2584 \u2591\u2588\u2588\u2584\u2584\u2584\u2584\u2588\u2588 \u2591\u2588\u2588\u2591\u2591\u2593\u2588 \u2588\u2588\u2593"," \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591\u2591\u2588\u2588\u2593 \u2592\u2588\u2588\u2592 \u2593\u2588 \u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2591\u2591\u2592\u2593\u2588\u2588\u2588\u2580\u2592"," \u2591 \u2591\u2592 \u2592 \u2591\u2591 \u2592\u2593 \u2591\u2592\u2593\u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591\u2593 \u2591\u2592 \u2592"," \u2591 \u2592 \u2591\u2592 \u2591 \u2592\u2591 \u2592 \u2592\u2592 \u2591 \u2592 \u2591 \u2591 \u2591"," \u2591 \u2591\u2591 \u2591 \u2591 \u2592 \u2592 \u2591\u2591 \u2591 \u2591"," \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591"," \u2591"];function Ws(){return[...Bh]}var $h=["Start","Options","Exit"],Fh=["Resume","Options","Exit"],Rr=2,Pr=2,Cr=2,Nh=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Wh=new RegExp("\x1B\\[(?:0)?m","g"),jh=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),Hh=/https?:\/\/[^\s<>"']+/g,js="\x1B[0m",Zo="\x1B]8;;\x1B\\",te={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 ea(e,t={}){return Us(e,{subtitle:"crAIg is that you?",menuItems:$h,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}function ta(e,t={}){return Us(e,{subtitle:"Control mode is paused.",menuItems:Fh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0,versionText:t.versionText??null,updateText:t.updateText??null})}var Sr=[" 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."],Uh=["Help"];function Hs(e,t={}){return Us(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Uh,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function ra(e,t={}){let r=t.color??!0,s=te.overlay,o=new Array(e.height).fill(ce(" ".repeat(e.width),r,s)),p=Ws(),k=Math.max(1,Math.floor((e.height-p.length-2-Sr.length)/2));for(let _=0;_<p.length&&!(k+_>=e.height);_+=1)o[k+_]=ce(aa(p[_]??"",e.width),r,te.overlayLogo);let i=Math.max(...Sr.map(_=>_.length)),c=Math.max(0,Math.floor((e.width-i)/2)),d=k+p.length+2;for(let _=0;_<Sr.length;_+=1){let a=d+_;if(a>=e.height)break;let b=Sr[_]??"";o[a]=ce(ze(" ".repeat(c)+b,e.width),r,s)}return o.join(`
|
|
180
|
+
`)}function sa(e,t={}){let r=t.color??!0,s=te.overlay,o=new Array(e.height).fill(ce(" ".repeat(e.width),r,s)),p="Error Log",k=t.errorLogPath??"",i=t.errorLogLines??[],c=Math.max(20,e.width-8),d=Math.max(0,Math.floor((e.width-c)/2)),_=[{text:p,tone:"selected"},{text:k,tone:"muted"},Te(),...i.length>0?i.map(l=>({text:l})):[{text:"No Craig errors have been logged.",tone:"muted"}],Te(),{text:"Esc returns to Options.",tone:"muted"}],a=Ht(_,e.height-2),b=Math.max(1,Math.floor((e.height-a.length)/2));for(let l=0;l<a.length;l+=1){let m=b+l;if(m>=e.height)break;let w=a[l]??Te(),n=`${" ".repeat(d)}${xr(w.text,c)}`,g=w.tone==="selected"?te.overlayMenuSelected:w.tone==="muted"?te.overlay:te.panelBg;o[m]=ce(ze(n,e.width),r,g)}return o.join(`
|
|
181
|
+
`)}function na(e,t,r={}){let s=r.color??!0,o=Ne.leftWidth,p=Ne.rightWidth,k=Ne.dividerWidth,i=r.centerOnly??!1,c=i?e.width:e.width-o-p-k*2,d=e.height-Ne.topRailHeight-1,_=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent}`,a=ce(ze(_,e.width),s,te.rail),b=Kh(t,o-Rr-Pr,d,s),l=Vh(t,c,d,s),m=Gh(t,p,d,s),w=t.inputMode==="terminal",n=[];for(let u=0;u<d;u+=1){if(i){n.push(Tr(l[u]??Te(),c,s,"center"));continue}let h=Tr(b[u]??Te(),o,s,"left"),y=ce("\u2502",s,te.divider),S=Tr(l[u]??Te(),c,s,"center"),I=ce("\u2502",s,te.divider),x=Tr(m[u]??Te(),p,s,"right");n.push(`${h}${y}${S}${I}${x}`)}let g=w||t.modalInput?te.panelBg:te.panelMuted,f=qh(t.footerText,t.footerToast,e.width,s,g);return[a,...n,f].join(`
|
|
182
|
+
`)}function qh(e,t,r,s,o){let p=` ${e}`;if(!t)return ce(ze(p,r),s,o);let k=`${t.tone==="error"?"\u2717":"\u2713"} ${t.message}`,i=ke(k),c=ke(p),d=Math.max(1,r-c-i-2),_=c+d+i+2>r?xr(p,Math.max(0,r-i-3)):p,a=Math.max(1,r-ke(_)-i-2),b=t.tone==="error"?pf(k,s,o):vt(k,s,o),l=`${_}${" ".repeat(a)}${b} `;return ce(ze(l,r),s,o)}function Us(e,t){let r=new Array(e.height).fill(ce(" ".repeat(e.width),t.color,te.overlay)),s=Ws(),o=Math.max(...t.menuItems.map(d=>d.length)),p=t.menuItems.map((d,_)=>`${_===t.menuIndex?">":" "} ${d.padEnd(o)}`),k=t.optionsMessage?["",t.optionsMessage]:[],i=[...s,"",t.subtitle,"",...p,...k],c=Math.max(1,Math.floor((e.height-i.length)/2));for(let d=0;d<i.length;d+=1){let _=aa(i[d]??"",e.width);if(d<s.length){r[c+d]=ce(_,t.color,te.overlayLogo);continue}if(d===s.length+1){r[c+d]=ce(_,t.color,te.overlaySubtitle);continue}let a=d-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?te.overlayMenuSelected:te.overlay;r[c+d]=ce(_,t.color,l)}if(t.versionText){let d=t.updateText?" (update available)":"",_=`${t.versionText}${d} `,a=" ".repeat(Math.max(0,e.width-ke(_)));r[e.height-1]=ce(`${a}${qs(_,t.color,te.overlay)}`,t.color,te.overlay)}return r.join(`
|
|
183
|
+
`)}function Kh(e,t,r,s){let o=Qh(e.runners),p=1,k=e.leftTree.map(c=>Xh(c,t,s));return[...Ht(k,r-p),o]}function Vh(e,t,r,s){let o=t-2,p=e.tabs.find(h=>h.active)?.label??"AGENT",k=e.inputMode==="terminal"?0:uf(e.tabs),i=e.inputMode==="terminal"?o:p.length+1,c="\u2500".repeat(Math.max(0,i)),d=`${" ".repeat(k)}${e.inputMode==="terminal"?vt(c,s,te.panelBg):Ir(c,s,te.panelMuted)}`,_=[`${Ir(e.centerHeader.tabLabel,s,te.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),a=e.tabs.find(h=>h.active)?.id??"agent",b=e.centerHeader.tabLabel==="BROWSER"||!lo(a)?e.centerTranscript.map(h=>({...h})):zh(e),l=Jh(e.tabs,s,e.focusedRegion==="center"),m=" engaged ",w=m.length+2,n=e.inputMode==="terminal"?vt(`${m}\u25CF `,s,te.panelBg):"",g=e.inputMode==="terminal"?" ".repeat(Math.max(0,o-ke(l)-w)):"",u=[{text:e.inputMode==="terminal"?`${l}${g}${n}`:l},{text:d,tone:"muted"},{text:_},Te(),...b];return Ht(u,r)}function zh(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},Te(),{text:e.terminal.error},Te(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:da(s.segments),segments:s.segments,fullBleed:!0}))}function Gh(e,t,r,s){let o=e.rightInspection?Yh(e.actionMessage?[...e.rightInspection.rows.slice(0,2),{id:"action-message",text:e.actionMessage},{id:"action-message-spacer",text:""},...e.rightInspection.rows.slice(2)]:e.rightInspection.rows,r):Ht([{text:"CONTEXT"},Te(),...e.rightContext.map(p=>Zh(p,s)),...e.actionMessage?[Te(),{text:e.actionMessage}]:[]],r);return Ht(o,r)}function Yh(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),p=s.findIndex(i=>i.focused||i.selected),k=p===-1?0:ff(p-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(i=>Qo(i)),...s.slice(k,k+o).map(i=>Qo(i))]}function Qo(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",s=`${t}${e.text}`;if(e.segments)return{text:s,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let o=e.text.indexOf(" "),p=o===-1?e.text:e.text.slice(0,o),k=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:p,style:{fg:"7aa2f7"}},{text:k}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Xh(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",p=e.status?` ${e.status}`:"",k=e.accentDot?` ${vt("\u25CF",r,e.selected?te.panelSelected:te.panelBg)}`:"",i=e.prBadge?e.prBadge.reduce((l,m)=>l+ke(m.text),0):0,c=t-ke(p)-ke(o)-i,d=e.selected?e.text:e.focused?vt(e.text,r,te.panelBg):e.panelHeader?Ir(e.text,r,te.panelMuted):e.text,_=ze(`${s}${d}`,Math.max(0,c)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${_}${p}${k}`},...e.prBadge];return{text:`${_}${p}${e.prBadge.map(w=>w.text).join("")}`,segments:l,tone:a}}return{text:`${_}${p}${k}`,tone:a}}function Qh(e){let t=e.map(s=>{let o=s.health>=1,p=parseInt(s.count,10),k=p>1?` (${p})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${k}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:te.success.fg}}):r.push({text:o.text,style:{fg:te.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function Jh(e,t,r){return e.map(s=>s.active?r?vt(s.label,t,te.panelBg):Ir(s.label,t,te.panelBg):qs(s.label,t,te.panelBg)).join(" ")}function Zh(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?qs(e.value,t,te.panelBg):e.value}`}}function Tr(e,t,r,s){let o=ef(s,e.tone??"default"),p=tf(e,r,o);if(s==="left"){if(e.fullBleed)return ce(ze(p,t),r,o);let i=t-Rr-Pr;if(e.rightAlign){let d=ke(p),_=Math.max(0,i-d),a=`${" ".repeat(Rr)}${" ".repeat(_)}${p}${" ".repeat(Pr)}`;return ce(a,r,o)}let c=`${" ".repeat(Rr)}${ze(p,i)}${" ".repeat(Pr)}`;return ce(c,r,o)}return s==="center"&&e.fullBleed?rf(e,t,r,o):ce(ze(` ${p}`,t),r,o)}function ef(e,t){return t==="selected"||t==="focused"?te.panelSelected:t==="muted"?te.panelMuted:te.panelBg}function Ht(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Te());return r}function Te(){return{text:""}}function tf(e,t,r){return e.segments?e.segments.map(s=>ia(s,t,r)).join(""):e.text}function rf(e,t,r,s){let o=" ".repeat(Cr),p=Math.max(0,t-Cr*2);if(!e.segments)return ce(`${o}${ze(e.text,p)}${o}`,r,s);let k=of(e.segments,p),i=`${o}${k.map(c=>ia(c,r,s)).join("")}${o}`;return ce(i,r,s)}function ia(e,t,r){let s=e.href?`${oa(e.href)}${e.text}${Zo}`:sf(e.text);return!t||!e.style?s:`${Ut(lf(e.style,r))}${df(e.style)}${s}${js}${Ut(r)}`}function sf(e){return e.replace(Hh,t=>{let[r,s]=nf(t);return`${oa(r)}${r}${Zo}${s}`})}function nf(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function oa(e){return`\x1B]8;;${e}\x1B\\`}function of(e,t){let r=af(e,t);return cf(r,t)}function af(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let p=ke(o.text);if(p<=s){r.push(o),s-=p;continue}let k=xr(o.text,s);k.length>0&&r.push({...o,text:k}),s=0}return r}function cf(e,t){let r=ke(da(e));if(r>=t)return e;let s=e.at(-1)?.style;return s?.bg?[...e,{text:" ".repeat(t-r),style:s}]:[...e,{text:" ".repeat(t-r)}]}function lf(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},p=r??t.fg,k=s??t.bg;return p&&(o.fg=p),k&&(o.bg=k),o}function df(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 uf(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function aa(e,t){let r=Math.max(0,t-ke(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function ze(e,t){let r=ke(e);return r>=t?hf(e,t):e+" ".repeat(t-r)}function hf(e,t){if(t<=0)return"";if(ke(e)<=t)return e;let r=la(e);return xr(r,Math.max(0,t-1))+"\u2026"}function ke(e){let t=0;for(let r of Array.from(la(e)))t+=ca(r);return t}function xr(e,t){let r="",s=0;for(let o of Array.from(e)){let p=ca(o);if(s+p>t)break;r+=o,s+=p}return r}function ca(e){let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65024&&t<=65039?0:t>=4352&&(t<=4447||t===9001||t===9002||t>=11904&&t<=42191&&t!==12351||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141)?2:1}function ff(e,t,r){return Math.min(Math.max(e,t),r)}function la(e){return e.replace(jh,"").replace(Nh,"")}function da(e){return e.map(t=>t.text).join("")}function ce(e,t,r){if(!t)return e;let s=Ut(r),o=e.replace(Wh,`${js}${s}`);return`${s}${o}${js}`}function Ut(e){let t=[];return e.fg&&t.push(`38;2;${Jo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Jo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Jo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function vt(e,t,r){return Er(e,t,te.success.fg,r)}function pf(e,t,r){return Er(e,t,te.error.fg,r)}function Ir(e,t,r){return Er(e,t,te.accent.fg,r)}function qs(e,t,r){return Er(e,t,te.mutedfg.fg,r)}function Er(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Ut(o)}${e}${Ut(s)}`}var gf="https://registry.npmjs.org/craig-cli/latest";var Ar=null;function Ks(){try{return"0.6.1"}catch{return"unknown"}}async function ua(){let e=Ks(),t=Date.now();if(Ar&&t-Ar.cachedAt<36e5)return Ar.result;let r=null;try{let o=await fetch(gf,{signal:AbortSignal.timeout(5e3)});o.ok&&(r=(await o.json()).version??null)}catch{}let s={current:e,latest:r,updateAvailable:r!==null&&r!==e&&mf(r,e)};return Ar={result:s,cachedAt:t},s}function mf(e,t){let r=d=>d.split(".").map(Number),[s=0,o=0,p=0]=r(e),[k=0,i=0,c=0]=r(t);return s!==k?s>k:o!==i?o>i:p>c}Me();var Vs=["Runners","Error Log","Help"];function zs(e,t){return ue.map(r=>{let s=Se(r),o=e.runners?.[r]?.enabled!==!1,p=e.runners?.[r]?.path?.trim(),k=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:p&&p.length>0?p:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${k}`})}function fa(e){return e.message?e.message:e.pathEdit?"Type an executable path. Enter saves. Empty resets to default. Esc cancels.":"Enter toggles. E edits the executable path."}function pa(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Vs.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Gs(t)?e===0?{kind:"runners"}:e===1?{kind:"error-log"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function ga(e,t,r,s){if(e.pathEdit)return _f({...e,pathEdit:e.pathEdit},t,r);let o=zs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let i=ue[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:i,value:t.runners?.[i]?.path??""}}}}if(!Gs(r))return{kind:"noop",state:e};let p=ue[e.menuIndex]??"codex",k=t.runners?.[p]?.enabled!==!1;return k&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:wf(t,p,!k),state:{...e,message:`${Se(p).displayName} ${k?"disabled":"enabled"}.`}}}function _f(e,t,r){if(r==="ESCAPE")return{kind:"render",state:ha({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Gs(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:bf(t,s,o.length>0?o:null),state:ha({...e,message:o.length>0?`${Se(s).displayName} executable saved.`:`${Se(s).displayName} executable reset to default.`})}}return kf(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function wf(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function bf(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function ha(e){let t={...e};return delete t.pathEdit,t}function Gs(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
184
|
+
`}function kf(e){return e.length===1&&e>=" "&&e!=="\x7F"}var Tf=yf(import.meta.url),Rf=Tf("terminal-kit"),Pf=Rf.terminal;async function wa(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ge(t);await kt(t);let s=await He(r),o=pt(s),p=e.uiStateFile?await Oe({uiStateFile:e.uiStateFile}):null,k=Promise.resolve(),i=Promise.resolve(),c=await qt(t,void 0,o),d=mr(no(p,s),c);c=await qt(t,d,o);let _=()=>{},a={workspaceRoot:t,onUpdate:()=>_(),resolveSessionSpec:(m,w)=>Ef(c,w,t)},b=e.ptyRuntime??await Uo({...a,paths:r}),l=m=>{if(!e.uiStateFile)return;p=io(p,m);let w=p;k=k.then(()=>xe({uiStateFile:e.uiStateFile},w),()=>xe({uiStateFile:e.uiStateFile},w)),k.catch(()=>{})};return new Promise(m=>{let w=e.terminal??Pf,n={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:mr(d,c)},g=!1,f=!1,u=null,h=0,y=0,S=null,I=null,x=null,N=null,F=null,D=!1,A=null,E=`Craig v${Ks()}`,U=null,z=0,V=!0,G=null,B=()=>{},v=b;_=()=>{n.mode==="main"&&(n={mode:"main",shell:P(n.shell)},x||(x=setTimeout(()=>{x=null,n.mode==="main"&&B()},50)))};function P(M){return Wt(M,v.getViewState(R(M)))}function R(M){let L=$(M);return L?L.ptyTabs.some(O=>O.id===M.activeTab)?M.activeTab:M.activeTab==="agent"||M.activeTab==="terminal"?L.ptyTabs.find(O=>O.kind===M.activeTab)?.id??M.selectedPtyTabId:M.selectedPtyTabId:M.selectedPtyTabId}function T(M){return P(Cf(M,c))}function $(M){return c.tasks.find(L=>L.id===M.selectedTaskId)??null}async function W(){let M=c.tasks.flatMap(L=>L.ptyTabs.map(O=>O.id));await v.pruneStale?.(M),await v.hydrateSessions?.(M)}function H(){W().catch(()=>{}).then(()=>{n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},B())})}function K(M,L){return N&&(clearTimeout(N),N=null),L?(N=setTimeout(()=>{N=null,!(n.mode!=="main"||n.shell.footerToast!==L)&&(n={mode:"main",shell:T({...n.shell,footerToast:null})},B())},3e3),{...M,footerToast:L}):{...M,footerToast:null}}function re(M,L){return K(M,L?{tone:"success",message:L}:null)}function C(M,L,O){let j=L instanceof Error?L.message:O,q=L instanceof Error?L.stack??L.message:String(L);return ps(r,{context:M,message:j,details:q}),j}function Q(M,L){return K(M,{tone:"error",message:L})}function Y(M){let L=i.then(M,M);return i=L.then(()=>{},()=>{}),L}function J(M){let L=$(M),O=c.inspection,j=O&&O.taskId===L?.id?O:null,q=If(j?.fileRows??[],M.collapsedFileTreePaths);return{leftItemIds:xf(c),centerTabIds:ho(L,M),ptyTabIds:L?.ptyTabs.map(Z=>Z.id)??[],filePathIds:j?.filePaths??[],fileTreeRowIds:q.map(Z=>Z.path),fileTreeFileIds:q.filter(Z=>Z.kind==="file").map(Z=>Z.path),fileTreeDirectoryIds:q.filter(Z=>Z.kind==="directory").map(Z=>Z.path),diffPathIds:j?.diffPaths??[],diffPathRanges:[],fileLineCount:j?.selectedFile.lines.length??0,diffLineCount:j?.selectedDiff.lines.length??0,reviewRowCount:Co(M,L),pageRows:Math.max(5,ht(w.width,w.height).height-Ne.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:L?.repoTargets?.map(Z=>Z.repoId)??[]}}async function ye(M){await on(r,M),s=M,o=pt(s),c={...c,enabledRunnerIds:o},n.mode==="main"?n={mode:"main",shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}:n={...n,shell:T({...n.shell,selectedRunner:o.includes(n.shell.selectedRunner)?n.shell.selectedRunner:st(s)})}}async function ve(M){let L=M.selectedTaskId;L&&await Y(async()=>{let O=await fe(r,L);!O.ptyTabs.some(j=>j.id===M.activeTab)||O.selectedPtyTabId===M.activeTab||await se(r,{...O,selectedPtyTabId:M.activeTab})})}async function le(){let M=(n.mode==="main",n.shell);c=await qt(t,M,o),n.mode==="main"?n={mode:"main",shell:T(n.shell)}:n={...n,shell:T(n.shell)}}async function Re(M){let L=++z,O=ba(c.tasks,M),j=c.inspection,q;if(O&&j?.taskId===O.id){let Z={selectedFilePath:M.selectedFilePath,selectedDiffPath:M.selectedDiffPath},de=await Ei(O,j,Z);if(L!==z)return;q={...c,inspection:de}}else if(q=await qt(t,M,o),L!==z)return;c=q,n.mode==="main"&&(n={mode:"main",shell:T(n.shell)},l(n.shell),B())}async function De(M){let L=await Hf(M);n.mode==="main"&&(n={mode:"main",shell:T({...n.shell,workspaceBrowser:L,activeTab:n.shell.selectedPtyTabId??n.shell.activeTab,actionMessage:null})},B())}async function Je(M){try{let L=T(M),O=$(L),j=L.selectedPtyTabId;if(O&&L.focusedRegion==="tasks"){let de=O.ptyTabs.find(Le=>Le.kind==="agent")??null;de?j=de.id:(O=await Xs(O),await le(),j=O.selectedPtyTabId)}O&&!j&&(O=await Xs(O),await le(),j=O.selectedPtyTabId);let q=T({...L,activeTab:j??L.activeTab,selectedPtyTabId:j,focusedRegion:j?"center":L.focusedRegion});if(!q.selectedTaskId||!j){n={mode:"main",shell:q},B();return}n={mode:"main",shell:Wt({...q,inputMode:"terminal"},v.getViewState(j))},l(n.shell);let Z=await v.ensureSession(q.selectedTaskId,j,Dr(ht(w.width,w.height)));f=Ys(j),u=null,n={mode:"main",shell:Wt({...q,inputMode:"terminal"},Z)},l(n.shell)}catch(L){let O=C("attach PTY",L,"Failed to start PTY.");M.selectedTaskId&&M.selectedPtyTabId&&Ys(M.selectedPtyTabId)&&(await ya(M.selectedTaskId,O).catch(()=>{}),await le().catch(()=>{})),n={mode:"main",shell:Q(ao(T(M),O),O)},l(n.shell)}B()}async function ya(M,L){await Y(async()=>{let O=await fe(r,M);await se(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:L})})}async function va(M,L,O){let j=T(M);if(!j.selectedTaskId)throw new Error("Select a task before creating a tab.");let q=await Y(async()=>{let Z=await fe(r,j.selectedTaskId),de=L??Lf(Z,j.activeTab,j.preferredPtyTabKind),Le=ma(Z,de,O??void 0,s),Tt={...Z,ptyTabs:[...Z.ptyTabs,Le],selectedPtyTabId:Le.id};return await se(r,Tt),Tt});return await le(),T({...j,activeTab:q.selectedPtyTabId??j.activeTab,selectedPtyTabId:q.selectedPtyTabId,preferredPtyTabKind:q.ptyTabs.at(-1)?.kind??j.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${q.ptyTabs.at(-1)?.title??"tab"}`})}async function Sa(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:j}=await Y(async()=>{let q=await fe(r,L.selectedTaskId),Z=q.ptyTabs.findIndex($r=>$r.id===L.activeTab);if(Z===-1)throw new Error("Only PTY tabs can be closed.");let de=q.ptyTabs[Z],Le=q.ptyTabs.filter($r=>$r.id!==de.id),Tt=Le[Math.min(Z,Le.length-1)]??Le[Z-1]??null;return await se(r,{...q,ptyTabs:Le,selectedPtyTabId:Tt?.id??null}),{closedTab:de,nextSelectedTab:Tt}});return v.disposeSession(O.id),await le(),T({...L,activeTab:j?.id??(L.openInspectionKind?"inspection":L.activeTab),selectedPtyTabId:j?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function Ta(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=$(L),j=null,q=null;if(O?.type==="project"&&O.repoTargets?.length){let Z=await cr(r,L.selectedTaskId);await le();let de=Z.synced+Z.discovered+Z.notFound;q=`Refreshed ${Z.synced}/${de} targets`}else{let{disposition:Z,task:de}=await ns(r,L.selectedTaskId);await le(),j=Z==="not_found"?`No PR found for ${de.branch}`:null,Z!=="not_found"&&(q=`Refreshed checks: ${ge(de)?.requiredChecks.length??0} reported`)}return T({...re(L,q),focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:j})}async function Ra(){if(D||n.mode!=="main")return;let M=c.tasks;D=!0;try{if(await li(r,M),A=null,n.mode!=="main")return;c=await qt(t,n.shell,o),n={mode:"main",shell:T(n.shell)},B()}catch(L){let O=L instanceof Error?L.message:"Background PR discovery failed.";O!==A&&(A=O,ps(r,{context:"background PR polling",message:O,details:L instanceof Error?L.stack??L.message:String(L)}))}finally{D=!1}}async function Pa(M){let L=T(M);if(!L.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:j}=await Y(async()=>{let q=await fe(r,L.selectedTaskId),Z=await Wi(r,L.selectedTaskId);return{taskBeforeClose:q,task:Z}});for(let q of O.ptyTabs)v.disposeSession(q.id);return await le(),T({...L,selectedActionId:"close-task",actionMessage:j.cleanup.preservedWorktree?`Archived task ${j.id}; worktree preserved`:`Archived task ${j.id}`})}async function Ca(M){let L=T(M);if(!L.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await Ke(r,{workspaceId:L.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${L.selectedWorkspaceId} while task records still reference it.`);await Mt(r,L.selectedWorkspaceId);let j=await Ot(r,L.selectedWorkspaceId);return await le(),T({...L,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${j.workspaceId}`})}async function Xs(M){let L=M.ptyTabs.find(q=>q.kind==="agent")??null;if(L){let q={...M,selectedPtyTabId:L.id};return await Y(async()=>{let Z=await fe(r,M.id),de=Z.ptyTabs.find(Le=>Le.kind==="agent")??null;de&&await se(r,{...Z,selectedPtyTabId:de.id})}),q}let O=ma(M,"agent",void 0,s),j={...M,ptyTabs:[...M.ptyTabs,O],selectedPtyTabId:O.id};return await Y(async()=>{let q=await fe(r,M.id),Z=q.ptyTabs.find(de=>de.kind==="agent")??null;if(Z){await se(r,{...q,selectedPtyTabId:Z.id});return}await se(r,{...q,ptyTabs:[...q.ptyTabs,O],selectedPtyTabId:O.id})}),j}B=()=>{Ia();let M=ht(w.width,w.height),L=n.mode==="main"?na(M,ko(T(n.shell),c),{centerOnly:n.shell.centerZoomed}):n.variant==="boot"?ea(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:U}):n.variant==="pause"?ta(M,{menuIndex:n.menuIndex,optionsMessage:n.optionsMessage,versionText:E,updateText:U}):n.variant==="options"?Hs(M,{menuIndex:n.menuIndex,optionsMenuItems:Vs}):n.variant==="runners"?Hs(M,{menuIndex:Kt(n).menuIndex,optionsMenuItems:zs(s,Kt(n)),optionsMessage:fa(Kt(n)),optionsSubtitle:"Runners"}):n.variant==="error-log"?sa(M,{errorLogPath:n.errorLog?.path??r.errorLogFile,errorLogLines:n.errorLog?.lines??[]}):ra(M);V&&(w.moveTo(1,1),w.eraseDisplayBelow(),V=!1),w.noFormat(Of(L)),w.hideCursor(!0)};function Ia(){let M=n.mode==="main"&&n.shell.inputMode==="terminal"?"terminal":"control";M!==G&&(G=M,w.grabInput(M==="terminal"?{mouse:"button"}:!0))}let xa=()=>{process.stdout.off("resize",tn),process.off("SIGCONT",rn),w.removeListener("key",Qs),w.removeListener("unknown",Js),w.removeListener("mouse",Zs),S&&(clearTimeout(S),S=null),I&&(clearTimeout(I),I=null),x&&(clearTimeout(x),x=null),N&&(clearTimeout(N),N=null),F&&(clearInterval(F),F=null),v.disposeAll(),w.grabInput(!1),w.hideCursor(!1),w.fullscreen(!1)},Or=M=>{xa(),m(M)},Ea=async()=>{if(n.mode!=="main"||g)return;let M=n.shell,L=M.taskPromptInput?.trim()??"";if(!M.selectedRepoId&&!M.selectedWorkspaceId){n={mode:"main",shell:T({...M,taskPromptError:"Select a workspace first."})},B();return}if(L.length===0){n={mode:"main",shell:T({...M,taskPromptError:"Task prompt cannot be empty."})},B();return}g=!0,n={mode:"main",shell:T({...M,actionMessage:`Creating ${M.selectedRunner} task in ${M.selectedWorkspaceId??M.selectedRepoId}...`})},B();let O=null;try{O=await Mf(r,M.selectedRepoId,M.selectedWorkspaceId,L,M.selectedRunner),await le();let j=T({...n.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",focusedRegion:"center",taskPromptInput:null,taskPromptError:null,actionMessage:null}),q=await v.ensureSession(O.id,j.selectedPtyTabId??ka(O,"agent"),Dr(ht(w.width,w.height)));f=Ys(j.selectedPtyTabId),n={mode:"main",shell:Wt(j,q)},l(n.shell)}catch(j){j instanceof Lr&&(O=j.task);let q=C("create task",j,"Failed to create task.");O&&(await se(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:q}).catch(()=>{}),await le().catch(()=>{})),n={mode:"main",shell:Q(T({...n.shell,inputMode:"control",selectedTaskId:O?.id??n.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??n.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:n.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??n.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:q,actionMessage:null}),q)}}finally{g=!1,B()}},Aa=M=>{if(n.mode!=="main")return;let L=n.shell;if(L.taskPromptInput!==null){if(M==="ESCAPE"){n={mode:"main",shell:T({...L,taskPromptInput:null,taskPromptError:null,actionMessage:null})},B();return}if(Qe(M)){Ea();return}if(M==="BACKSPACE"){n={mode:"main",shell:T({...L,taskPromptInput:L.taskPromptInput.slice(0,-1),taskPromptError:null})},B();return}if(M==="CTRL_R"){n={mode:"main",shell:T({...L,selectedRunner:Rs(L.selectedRunner,o),taskPromptError:null})},B();return}co(M)&&(n={mode:"main",shell:T({...L,taskPromptInput:`${L.taskPromptInput}${M}`,taskPromptError:null})},B())}},Da=M=>{if(n.mode!=="main")return;let L=n.shell.workspaceBrowser;if(L){if(M==="ESCAPE"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,actionMessage:null})},B();return}if(M==="UP"||M==="k"){n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.max(0,L.selectedIndex-1),error:null}})},B();return}if(M==="DOWN"||M==="j"){let O=Math.max(0,L.entries.length-1);n={mode:"main",shell:T({...n.shell,workspaceBrowser:{...L,selectedIndex:Math.min(O,L.selectedIndex+1),error:null}})},B();return}if(M==="LEFT"||M==="h"){De(St.dirname(L.cwd)).catch(O=>{let j=C("open parent workspace directory",O,"Failed to open parent directory.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:j}}),j)},B()});return}if(M==="RIGHT"||M==="l"||Qe(M)){let O=L.entries[L.selectedIndex]??null;if(!O)return;if((M==="RIGHT"||M==="l")&&(O.kind==="directory"||O.kind==="repo")){De(O.path).catch(j=>{let q=C("open workspace directory",j,"Failed to open directory.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:q}}),q)},B()});return}Lt(r,O.path).then(async j=>{await le();let q=j.repos[0]??null;n={mode:"main",shell:T({...n.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${j.workspace.id}`,selectedWorkspaceId:j.workspace.id,selectedRepoId:q?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${j.workspace.name??j.workspace.id}`})},l(n.shell),B()}).catch(j=>{let q=C("add workspace",j,"Failed to add workspace.");n={mode:"main",shell:Q(T({...n.shell,workspaceBrowser:{...L,error:q}}),q)},B()})}}},Qs=M=>{let L=typeof M=="string"?M:"";if(n.mode==="main"&&n.shell.taskPromptInput!==null){Aa(L);return}if(n.mode==="main"&&n.shell.workspaceBrowser!==null){Da(L);return}if(n.mode==="main"){let O=oo(n.shell,L,J(n.shell));if(O.exit){Or(0);return}if(O.detachTerminal){v.detach(),n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(n.shell.inputMode==="terminal"){if(O.changed){n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(f&&Qe(L)){f=!1;return}f&&(f=!1),u=$f(L)?{key:L,at:Date.now()}:null;let j=Ff(L,n.shell.terminal.scrolledBack??!1);if(j!==0){Br(j);return}v.writeKey(L);return}if(L==="CTRL_C"){Or(0);return}if(L==="?"&&n.shell.inputMode==="control"){n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell},V=!0,B();return}if(O.pause){n={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:T(O.state)},V=!0,B();return}if(O.beginTaskPrompt){n={mode:"main",shell:T(O.state)},l(n.shell),B();return}if(O.openWorkspaceBrowser){De(t).catch(j=>{let q=C("browse workspaces",j,"Failed to browse workspaces.");n={mode:"main",shell:Q(T({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:q}}),q)},B()});return}if(O.createPtyTab){va(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(j=>{Je(j)}).catch(j=>{let q=C("create PTY tab",j,"Failed to create tab.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.closePtyTab){Sa(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("close PTY tab",j,"Failed to close tab.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.refreshPullRequestChecks){Ta(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("refresh PR checks",j,"Failed to refresh PR checks.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.closeTask){Pa(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("close task",j,"Failed to close task.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.removeWorkspace){Ca(O.state).then(j=>{n={mode:"main",shell:j},l(n.shell),B()}).catch(j=>{let q=C("remove workspace",j,"Failed to remove workspace.");n={mode:"main",shell:Q(T({...O.state,actionMessage:q}),q)},B()});return}if(O.attachTerminal){Je(O.state);return}if(O.refreshInspection){n={mode:"main",shell:T(O.state)},l(n.shell),B(),Re(n.shell).catch(j=>{let q=C("refresh inspection",j,"Failed to refresh inspection.");n={mode:"main",shell:Q(T({...n.shell,actionMessage:q}),q)},B()});return}O.changed&&(n={mode:"main",shell:T(O.state)},ve(n.shell).catch(()=>{}),l(n.shell),B());return}if(n.variant==="help"){n.viaOptions&&n.parentVariant?n={mode:"overlay",variant:"options",menuIndex:2,optionsMessage:null,shell:n.shell,parentVariant:n.parentVariant}:n.parentVariant?n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell}:n={mode:"main",shell:T(n.shell)},V=!0,B();return}if(n.variant==="options"){La(L);return}if(n.variant==="runners"){Oa(L);return}if(n.variant==="error-log"){if(L==="ESCAPE"||Qe(L)){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B()}return}if(n.optionsMessage){(L==="ESCAPE"||Qe(L))&&(n={...n,optionsMessage:null},B());return}if(L==="UP"||L==="k"){n={...n,menuIndex:Math.max(0,n.menuIndex-1)},B();return}if(L==="DOWN"||L==="j"){n={...n,menuIndex:Math.min(2,n.menuIndex+1)},B();return}if(L==="ESCAPE"){n.variant==="pause"&&(n={mode:"main",shell:T(n.shell)},V=!0,B());return}if(Qe(L)){if(n.menuIndex===0){n={mode:"main",shell:T({...n.shell,inputMode:"control"})},V=!0,B(),H();return}if(n.menuIndex===1){let O=n.variant==="boot"||n.variant==="pause"?n.variant:void 0;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}Or(0)}};function La(M){if(n.mode!=="overlay"||n.variant!=="options")return;let L=pa(n.menuIndex,M);if(L.kind!=="noop"){if(L.kind==="render"){n={...n,menuIndex:L.menuIndex},B();return}if(L.kind==="back"){n.parentVariant&&(n={mode:"overlay",variant:n.parentVariant,menuIndex:1,optionsMessage:null,shell:n.shell},V=!0,B());return}if(L.kind==="help"){let O=n.parentVariant;n={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:n.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="runners"){let O=n.parentVariant;n={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="error-log"){let O=n.parentVariant;Ma(O)}}}async function Ma(M){let L;try{L=await Ii(r)}catch(O){let j=C("open error log",O,"Failed to read Craig error log.");L={path:r.errorLogFile,lines:[`Unable to read error log: ${j}`],empty:!1}}n.mode==="overlay"&&(n={mode:"overlay",variant:"error-log",menuIndex:0,optionsMessage:null,shell:n.shell,errorLog:L,...M!==void 0?{parentVariant:M}:{}},V=!0,B())}function Oa(M){if(n.mode!=="overlay"||n.variant!=="runners")return;let L=ga(Kt(n),s,M,o);if(L.kind!=="noop"){if(L.kind==="back"){let O=n.parentVariant;n={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:n.shell,...O!==void 0?{parentVariant:O}:{}},V=!0,B();return}if(L.kind==="render"){n={...n,runnerOptions:L.state},B();return}ye(L.config).then(()=>{n.mode!=="overlay"||n.variant!=="runners"||(n={...n,runnerOptions:L.state},B())}).catch(O=>{if(n.mode!=="overlay"||n.variant!=="runners")return;let j=C("save runner option",O,"Failed to save runner option."),q=Q(T(n.shell),j);n={...n,shell:q,runnerOptions:{...Kt(n),message:j}},B()})}}let Js=M=>{let L=Bf(M);if(n.mode!=="main"||n.shell.inputMode!=="terminal"||L.length===0)return;if(L.includes("")){v.detach(),f=!1,u=null,n={mode:"main",shell:T({...n.shell,inputMode:"control",actionMessage:null,focusedRegion:"center"})},l(n.shell),B();return}let O=Nf(L);if(O!==0){Br(O);return}let j=Wf(L);if(j){f=!1,u={key:j,at:Date.now()},v.writeKey(j);return}if(f&&L!=="\r"&&L!==`
|
|
179
185
|
`&&L!==`\r
|
|
180
|
-
`&&(f=!1),
|
|
181
|
-
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function
|
|
186
|
+
`&&(f=!1),jf(f,u,L)){f=!1;return}v.write(L)},Zs=M=>{if(n.mode!=="main")return;if(n.shell.inputMode==="control"){$a(_a(M));return}let L=_a(M);L!==0&&Br(L)};function Br(M){h+=M,!S&&(S=setTimeout(()=>{S=null;let L=h;h=0,L!==0&&(Ba(L),B())},16))}function Ba(M){v.scrollViewport(M),n={mode:"main",shell:P(n.shell)}}function en(){V=!0,w.fullscreen(!0)}function $a(M){M!==0&&(y+=M,!I&&(I=setTimeout(()=>{I=null;let L=y;if(y=0,L===0||n.mode!=="main"||n.shell.inputMode!=="control")return;let O=rt(n.shell,L,J(n.shell));if(O.changed){if(O.refreshInspection){n={mode:"main",shell:T(O.state)},l(n.shell),B(),Re(n.shell).catch(j=>{let q=C("refresh inspection",j,"Failed to refresh inspection.");n={mode:"main",shell:Q(T({...n.shell,actionMessage:q}),q)},B()});return}n={mode:"main",shell:T(O.state)},l(n.shell),B()}},16)))}let tn=()=>{en(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(v.resize(Dr(ht(w.width,w.height))),n={mode:"main",shell:P(n.shell)}),B()},rn=()=>{en(),n.mode==="main"&&n.shell.inputMode==="terminal"&&(v.resize(Dr(ht(w.width,w.height))),n={mode:"main",shell:P(n.shell)}),B()};process.stdout.on("resize",tn),process.on("SIGCONT",rn),w.grabInput(!0),G="control",w.hideCursor(!0),w.fullscreen(!0),w.on("key",Qs),w.on("unknown",Js),w.on("mouse",Zs),F=setInterval(()=>{Ra()},(s.github?.watchIntervalSeconds??5)*1e3),ua().then(M=>{M.updateAvailable&&M.latest&&(U=`Update available: v${M.latest}`,B())}),W().catch(()=>{}),B()})}async function qt(e,t,r){let s=Ge(e),[o,p,k]=await Promise.all([lt(s),$e(s),Ke(s)]),i=ba(k.tasks,t),c=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},d=i?await Ai(i,c):null;return{workspaceRoot:e,workspaces:p.filter(_=>_.status==="active"),repos:o,tasks:k.tasks,inspection:d,...r?{enabledRunnerIds:r}:{}}}function ba(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function Cf(e,t){return mr(e,t)}function If(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 xf(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 Ef(e,t,r){let s=e.tasks.find(i=>i.ptyTabs.some(c=>c.id===t))??null,o=s?.ptyTabs.find(i=>i.id===t)??null,p=s?.worktreePath??r,k=o?.kind==="agent"?Df(o):[];return s?.type==="project"?{cwd:p,command:k,env:{GIT_CEILING_DIRECTORIES:Af(process.env.GIT_CEILING_DIRECTORIES,p)}}:{cwd:p,command:k}}function Af(e,t){let r=(e??"").split(St.delimiter).filter(s=>s.length>0);return r.includes(t)?r.join(St.delimiter):[...r,t].join(St.delimiter)}function Df(e){return e.command.length>0?e.command:["codex"]}function Kt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Lf(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function ma(e,t,r,s={}){let o=r??e.runner,p=Se(o),k=t==="agent"?p.defaultAgentTitle:"Terminal",i=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,c=new Set(e.ptyTabs.map(l=>l.id)),d=1,_=i;for(;c.has(_);)d+=1,_=`${i}-${d}`;let a=new Date().toISOString(),b=r&&r!==e.runner?r:void 0;return{id:_,kind:t,...b?{runner:b}:{},title:d===1?k:`${k} ${d}`,command:t==="agent"?_e(o,void 0,s):[],createdAt:a,updatedAt:a}}async function Mf(e,t,r,s,o){let p=await He(e);Vt(o,p);let k=r?await rr(e,r,s,{runner:o,config:p}):await xt(e,t??"",s,{runner:o,config:p});try{let d=at();await ee(ct(Nr(o,p).executable,{cwd:k.repoRoot,env:d}),["--help"],{cwd:k.repoRoot,env:d})}catch(d){let _=d instanceof Error?d.message:"Failed to start runner.",a={...k.task,status:"draft",runnerSession:{...k.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:_};throw await se(e,a),new Lr(_,a)}let i=ka(k.task,"agent"),c={...k.task,status:"running",selectedPtyTabId:i,runnerSession:{...k.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await se(e,c),await xe({uiStateFile:e.uiStateFile},{...await Oe({uiStateFile:e.uiStateFile})??qe(),version:1,selectedRepoId:c.repoId,selectedWorkspaceId:c.workspaceId,selectedTaskId:c.id,selectedPtyTabId:c.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:c.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),c}var Lr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function ka(e,t){let r=e.ptyTabs.find(s=>s.kind===t);if(!r)throw new Error(`Task ${e.id} is missing its ${t} PTY tab.`);return r.id}function Dr(e){return{columns:Math.max(20,e.width-Ne.leftWidth-Ne.rightWidth-Ne.dividerWidth-Cr*2),rows:Math.max(5,e.height-Ne.topRailHeight-5)}}function Of(e){return e.split(`
|
|
187
|
+
`).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function Bf(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function $f(e){return e.length===1||Qe(e)||e==="BACKSPACE"||e==="TAB"}function Ys(e){return typeof e=="string"&&new RegExp(`:(?:agent|${ue.join("|")})(?:-\\d+)?$`).test(e)}function Ff(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 _a(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function Nf(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 Wf(e){return e==="\x1B[13;2u"?"SHIFT_ENTER":null}function jf(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
|
|
182
188
|
`||r===`\r
|
|
183
|
-
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function
|
|
189
|
+
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function Hf(e){let t=await vf(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=St.join(e,s.name);r.push({name:s.name,path:o,kind:await Uf(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 Uf(e){let t=St.join(e,".git");return await Sf(t).catch(()=>null)!==null}function Mr(){return process.cwd()}async function qf(){try{if(process.argv[2]==="__craig-daemon"){let i=process.argv[3]??Mr(),c=Ge(i);return await kt(i),await qo(c),0}if(process.argv[2]==="__craig-daemon-shutdown"){let i=process.argv[3]??Mr(),c=Ge(i);return await kt(i),await Ko(c),0}let e=nn(process.argv.slice(2)),t=Mr(),r=Ge(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await wa({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let p=await Pi(e.command,o),k=Ci(p);return k.length>0&&process.stdout.write(`${k}
|
|
184
190
|
`),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
|
|
185
|
-
`),1}}var
|
|
191
|
+
`),1}}var Kf=await qf();process.exit(Kf);
|