craig-cli 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +4 -0
  2. package/dist/cli.js +58 -58
  3. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- var ra=Object.create;var Pr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ia=Object.getOwnPropertyNames;var na=Object.getPrototypeOf,oa=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(e&&(t=e(e=0)),t);var aa=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ca=(e,t)=>{for(var r in t)Pr(e,r,{get:t[r],enumerable:!0})},la=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ia(t))!oa.call(e,o)&&o!==r&&Pr(e,o,{get:()=>t[o],enumerable:!(s=sa(t,o))||s.enumerable});return e};var da=(e,t,r)=>(r=e!=null?ra(na(e)):{},la(t||!e||!e.__esModule?Pr(r,"default",{value:e,enumerable:!0}):r,e));import{randomUUID as wa}from"node:crypto";import{open as ba,readFile as Wh,rename as ka,rm as ya}from"node:fs/promises";import xr from"node:path";async function le(e,t){let r=xr.dirname(e),s=xr.join(r,`.${xr.basename(e)}.${process.pid}.${Date.now()}.${wa()}.tmp`),o=await ba(s,"w");try{let m=`${JSON.stringify(t,null,2)}
3
- `;await o.writeFile(m,"utf8"),await o.sync(),await o.close(),await ka(s,e)}catch(m){throw await o.close().catch(()=>{}),await ya(s,{force:!0}).catch(()=>{}),m}}var Oe=et(()=>{"use strict"});import{readFile as Ia}from"node:fs/promises";async function Te(e){let t=await Ia(e.indexFile,"utf8"),r=JSON.parse(t);return Ar(r,e.workspaceRoot,e.indexFile)}async function st(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await le(e.indexFile,r)}function Ar(e,t,r){if(!xa(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 xa(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 it=et(()=>{"use strict";Oe()});import{readFile as Va}from"node:fs/promises";async function Ee(e){try{let t=await Va(e.uiStateFile,"utf8"),r=JSON.parse(t);return Ga(r,e.uiStateFile)}catch(t){if(Ya(t))return null;throw t}}async function Ce(e,t){await le(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function Be(){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 Ga(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")||!Ht(e,"openInspectionKind")||!Ht(e,"selectedFileTreePath")||!Ht(e,"selectedFilePath")||!Ht(e,"selectedDiffPath")||!Xa(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 Ht(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Xa(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Ya(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var wt=et(()=>{"use strict";Oe()});import{execFile as Qa}from"node:child_process";import{promisify as Ja}from"node:util";async function Q(e,t,r={}){try{let s=await Zs(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(ei(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function ae(e,t,r={}){try{let s=await Zs(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(ei(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function ei(e){return e instanceof Error}var Zs,Pe=et(()=>{"use strict";Zs=Ja(Qa)});import{readFile as gc,readdir as mc,rm as _c}from"node:fs/promises";import ui from"node:path";async function Ae(e,t){let r=await gc(Kt(e,t),"utf8"),s=JSON.parse(r);return wc(s,Kt(e,t))}async function zt(e,t){await le(Kt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function at(e){let t=await mc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Ae(e,ui.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function hi(e,t){await _c(Kt(e,t),{force:!0})}function Kt(e,t){return ui.join(e.reposDir,`${t}.json`)}function wc(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 ct=et(()=>{"use strict";Oe()});import{readFile as bc,readdir as kc,rm as yc}from"node:fs/promises";import fi from"node:path";async function Gt(e,t){let r=await bc(Vt(e,t),"utf8"),s=JSON.parse(r);return vc(s,Vt(e,t))}async function bt(e,t){await le(Vt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function De(e){let t=await kc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Gt(e,fi.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function pi(e,t){await yc(Vt(e,t),{force:!0})}function Vt(e,t){return fi.join(e.workspacesDir,`${t}.json`)}function vc(e,t){let r=Sc(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 Sc(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 Rt=et(()=>{"use strict";Oe()});var Ji={};ca(Ji,{addWorkspace:()=>Dt,archiveWorkspace:()=>rs,listWorkspaces:()=>ts,removeWorkspaceRecord:()=>is,restoreWorkspace:()=>ss});import{readdir as Zc,realpath as zi,stat as el}from"node:fs/promises";import Xe from"node:path";async function Dt(e,t){let r=Xe.resolve(e.workspaceRoot,t);if(!(await el(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await Yi(r)?tl(e,r):rl(e,r)}async function ts(e,t){return{kind:"listWorkspaces",workspaces:(await De(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function rs(e,t){let s={...await Gt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await bt(e,s),await ol(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function ss(e,t){let s={...await Gt(e,t),status:"active",archivedAt:null};await bt(e,s);let o=await Ee({uiStateFile:e.uiStateFile})??null;return await Ce({uiStateFile:e.uiStateFile},{...o??Be(),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 tl(e,t){let r=await Qi(t),s=await at(e),o=s.find(a=>a.rootPath===t)??null,m=o??Vi(s,t,r),y=`workspace_${m.id}`,d=(await De(e)).find(a=>a.id===y)??null,h=new Date().toISOString(),b=d??{id:y,kind:"repo",name:m.name,rootPath:t,primaryRepoId:m.id,repoId:m.id,discoveredRepoIds:[m.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:h,updatedAt:h};return o||await zt(e,m),d||await bt(e,b),await Gi(e,{repoIds:[m.id],workspaceIds:[b.id]}),await Xi(e,b,m.id),{kind:"createWorkspace",workspace:b,repos:[m],created:!d}}async function rl(e,t){let r=await sl(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await De(e),o=nl(s,Xe.basename(t)),m=s.find(h=>h.kind==="project"&&h.rootPath===t)??null,y=new Date().toISOString(),n=r.map(h=>h.id),d=m?{...m,discoveredRepoIds:n,primaryRepoId:n[0]??m.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Xe.basename(t),rootPath:t,primaryRepoId:n[0]??"",discoveredRepoIds:n,branch:"project",status:"active",linkedRepoIds:n,archivedAt:null,createdAt:y,updatedAt:y};return await Promise.all(r.map(h=>zt(e,h))),await bt(e,d),await Gi(e,{repoIds:n,workspaceIds:[d.id]}),await Xi(e,d,n[0]??null),{kind:"createWorkspace",workspace:d,repos:r,created:!m}}async function sl(e,t){let r=await Zc(t,{withFileTypes:!0}),s=await at(e),o=[];for(let m of r){if(!m.isDirectory()||m.name.startsWith("."))continue;let y=Xe.join(t,m.name);if(!await Yi(y))continue;let n=s.find(d=>d.rootPath===y)??o.find(d=>d.rootPath===y);o.push(n??Vi([...s,...o],y,await Qi(y)))}return o.sort((m,y)=>m.name.localeCompare(y.name)||m.id.localeCompare(y.id))}function Vi(e,t,r){let s=new Date().toISOString();return{id:il(e,Xe.basename(t)),name:Xe.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function il(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(m=>m.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function nl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(m=>m.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function Gi(e,t){let r=await Te(e);await st(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function Xi(e,t,r){await Ce({uiStateFile:e.uiStateFile},{...await Ee({uiStateFile:e.uiStateFile})??Be(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function Yi(e){try{let r=(await Q("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([zi(r).catch(()=>Xe.resolve(r)),zi(e).catch(()=>Xe.resolve(e))]);return s===o}catch{return!1}}async function Qi(e){let r=(await Q("git",["branch","--show-current"],{cwd:e})).stdout.trim();return r.length>0?r:"HEAD"}async function is(e,t){await pi(e,t);let r=await Te(e);await st(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function ol(e,t){let r=await Ee({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await Ce({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}var Lt=et(()=>{"use strict";it();ct();Rt();wt();Pe()});var to=aa(eo=>{(()=>{"use strict";var e={5639:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let h=d(7150),b=d(802);class a extends h.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new b.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new b.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new b.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 g=new Array(l);for(let _=0;_<Math.min(l,this.length);_++)g[_]=this._array[this._getCyclicIndex(_)];this._array=g,this._maxLength=l,this._startIndex=0}get length(){return this._length}set length(l){if(l>this._length)for(let g=this._length;g<l;g++)this._array[g]=void 0;this._length=l}get(l){return this._array[this._getCyclicIndex(l)]}set(l,g){this._array[this._getCyclicIndex(l)]=g}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,g,..._){if(g){for(let i=l;i<this._length-g;i++)this._array[this._getCyclicIndex(i)]=this._array[this._getCyclicIndex(i+g)];this._length-=g,this.onDeleteEmitter.fire({index:l,amount:g})}for(let i=this._length-1;i>=l;i--)this._array[this._getCyclicIndex(i+_.length)]=this._array[this._getCyclicIndex(i)];for(let i=0;i<_.length;i++)this._array[this._getCyclicIndex(l+i)]=_[i];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let i=this._length+_.length-this._maxLength;this._startIndex+=i,this._length=this._maxLength,this.onTrimEmitter.fire(i)}else this._length+=_.length}trimStart(l){l>this._length&&(l=this._length),this._startIndex+=l,this._length-=l,this.onTrimEmitter.fire(l)}shiftElements(l,g,_){if(!(g<=0)){if(l<0||l>=this._length)throw new Error("start argument out of range");if(l+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let p=g-1;p>=0;p--)this.set(l+p+_,this.get(l+p));let i=l+g+_-this._length;if(i>0)for(this._length+=i;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let i=0;i<g;i++)this.set(l+i+_,this.get(l+i))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}n.CircularList=a},7453:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.clone=function d(h,b=5){if(typeof h!="object")return h;let a=Array.isArray(h)?[]:{};for(let w in h)a[w]=b<=1?h[w]:h[w]&&d(h[w],b-1);return a}},5777:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let h=d(6501),b=d(6025),a=d(7276),w=d(9640),l=d(56),g=d(4071),_=d(7792),i=d(6415),p=d(5746),u=d(5882),c=d(2486),f=d(3562),k=d(8811),S=d(802),P=d(7150),E=!1;class j extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let x in D)this.optionsService.options[x]=D[x]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new b.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(h.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(h.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(h.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(g.CoreService)),this._instantiationService.setService(h.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(h.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(i.UnicodeService)),this._instantiationService.setService(h.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(p.CharsetService),this._instantiationService.setService(h.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(k.OscLinkService),this._instantiationService.setService(h.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new c.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 f.WriteBuffer(((x,A)=>this._inputHandler.parse(x,A)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,x){this._writeBuffer.write(D,x)}writeSync(D,x){this._logService.logLevel<=h.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(D,x)}input(D,x=!0){this.coreService.triggerDataEvent(D,x)}resize(D,x){isNaN(D)||isNaN(x)||(D=Math.max(D,w.MINIMUM_COLS),x=Math.max(x,w.MINIMUM_ROWS),this._bufferService.resize(D,x))}scroll(D,x=!1){this._bufferService.scroll(D,x)}scrollLines(D,x){this._bufferService.scrollLines(D,x)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let x=D-this._bufferService.buffer.ydisp;x!==0&&this.scrollLines(x)}registerEscHandler(D,x){return this._inputHandler.registerEscHandler(D,x)}registerDcsHandler(D,x){return this._inputHandler.registerDcsHandler(D,x)}registerCsiHandler(D,x){return this._inputHandler.registerCsiHandler(D,x)}registerOscHandler(D,x){return this._inputHandler.registerOscHandler(D,x)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,x=this.optionsService.rawOptions.windowsPty;x&&x.buildNumber!==void 0&&x.buildNumber!==void 0?D=x.backend==="conpty"&&x.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(u.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,u.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let x of D)x.dispose()}))}}}n.CoreTerminal=j},2486:function(y,n,d){var h=this&&this.__decorate||function(q,v,C,T){var R,F=arguments.length,N=F<3?v:T===null?T=Object.getOwnPropertyDescriptor(v,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(q,v,C,T);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(N=(F<3?R(N):F>3?R(v,C,N):R(v,C))||N);return F>3&&N&&Object.defineProperty(v,C,N),N},b=this&&this.__param||function(q,v){return function(C,T){v(C,T,q)}};Object.defineProperty(n,"__esModule",{value:!0}),n.InputHandler=n.WindowsOptionsReportType=void 0,n.isValidColorIndex=W;let a=d(3534),w=d(6760),l=d(6717),g=d(7150),_=d(726),i=d(6107),p=d(8938),u=d(3055),c=d(5451),f=d(6501),k=d(6415),S=d(1346),P=d(9823),E=d(8693),j=d(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function x(q,v){if(q>24)return v.setWinLines||!1;switch(q){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var A;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(A||(n.WindowsOptionsReportType=A={}));let L=0;class z extends g.Disposable{getAttrData(){return this._curAttrData}constructor(v,C,T,R,F,N,U,V,te=new l.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=F,this._oscLinkService=N,this._coreMouseService=U,this._unicodeService=V,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new j.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new j.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new j.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new j.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new j.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new j.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new j.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new j.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new j.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new j.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new j.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new j.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new j.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new X(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,J)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:J.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,J,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:J,data:Y})})),this._parser.setDcsHandlerFallback(((I,J,Y)=>{J==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:J,payload:Y})})),this._parser.setPrintHandler(((I,J,Y)=>this.print(I,J,Y))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new S.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new S.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new S.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new S.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new S.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new S.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new S.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new S.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new S.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new S.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in w.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,J)=>this.requestStatusString(I,J))))}_preserveStack(v,C,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=f.LogLevelEnum.WARN&&Promise.race([v,new Promise(((C,T)=>setTimeout((()=>T("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,C){let T,R=this._activeBuffer.x,F=this._activeBuffer.y,N=0,U=this._parseStack.paused;if(U){if(T=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(T),T;R=this._parseStack.cursorStartX,F=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(N=this._parseStack.position+D)}if(this._logService.logLevel<=f.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===f.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=N;I<v.length;I+=D){let J=I+D<v.length?I+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(I,J),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,J),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,F,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,F,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===F||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),te=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);te<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(te,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(v,C,T){let R,F,N=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,J=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&T-C>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,J);let Z=this._parser.precedingJoinState;for(let _e=C;_e<T;++_e){if(R=v[_e],R<127&&N){let We=N[String.fromCharCode(R)];We&&(R=We.charCodeAt(0))}let we=this._unicodeService.charProperties(R,Z);F=k.UnicodeService.extractWidth(we);let Ke=k.UnicodeService.extractShouldJoin(we),Ie=Ke?k.UnicodeService.extractWidth(Z):0;if(Z=we,U&&this._onA11yChar.fire((0,_.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+F-Ie>V){if(te){let We=Y,ze=this._activeBuffer.x-Ie;for(this._activeBuffer.x=Ie,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Ie>0&&Y instanceof i.BufferLine&&Y.copyCellsFrom(We,ze,0,Ie,!1);ze<V;)We.setCellFromCodepoint(ze++,0,1,J)}else if(this._activeBuffer.x=V-1,F===2)continue}if(Ke&&this._activeBuffer.x){let We=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-We,R,F);for(let ze=F-Ie;--ze>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,J)}else if(I&&(Y.insertCells(this._activeBuffer.x,F-Ie,this._activeBuffer.getNullCell(J)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,p.NULL_CELL_CODE,p.NULL_CELL_WIDTH,J)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,F,J),F>0)for(;--F;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,J)}this._parser.precedingJoinState=Z,this._activeBuffer.x<V&&T-C>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,J),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,C){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,C):this._parser.registerCsiHandler(v,(T=>!x(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}registerDcsHandler(v,C){return this._parser.registerDcsHandler(v,new P.DcsHandler(C))}registerEscHandler(v,C){return this._parser.registerEscHandler(v,C)}registerOscHandler(v,C){return this._parser.registerOscHandler(v,new S.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let v=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);v.hasWidth(this._activeBuffer.x)&&!v.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let v=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-v),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(v=this._bufferService.cols-1){this._activeBuffer.x=Math.min(v,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(v,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=v,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+C)}cursorUp(v){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,v.params[0]||1)):this._moveCursor(0,v.params[0]||1),!0}cursorForward(v){return this._moveCursor(v.params[0]||1,0),!0}cursorBackward(v){return this._moveCursor(-(v.params[0]||1),0),!0}cursorNextLine(v){return this.cursorDown(v),this._activeBuffer.x=0,!0}cursorPrecedingLine(v){return this.cursorUp(v),this._activeBuffer.x=0,!0}cursorCharAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(v){return this._setCursor(v.length>=2?(v.params[1]||1)-1:0,(v.params[0]||1)-1),!0}charPosAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(v){return this._moveCursor(v.params[0]||1,0),!0}linePosAbsolute(v){return this._setCursor(this._activeBuffer.x,(v.params[0]||1)-1),!0}vPositionRelative(v){return this._moveCursor(0,v.params[0]||1),!0}hVPosition(v){return this.cursorPosition(v),!0}tabClear(v){let C=v.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let C=v.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,C,T,R=!1,F=!1){let N=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);N.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),F),R&&(N.isWrapped=!1)}_resetBufferLine(v,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),T.isWrapped=!1)}eraseInDisplay(v,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);T<this._bufferService.rows;T++)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(T);break;case 1:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(T+1).isWrapped=!1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(T=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,T-1);T--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+T)?.getTrimmedLength(););for(;T>=0;T--)this._bufferService.scroll(this._eraseAttrData())}else{for(T=this._bufferService.rows,this._dirtyRowTracker.markDirty(T-1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(v,C=!1){switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,F=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(F-1,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(T,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(i.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(v.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(v){let C=this._parser.precedingJoinState;if(!C)return!0;let T=v.params[0]||1,R=k.UnicodeService.extractWidth(C),F=this._activeBuffer.x-R,N=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(F),U=new Uint32Array(N.length*T),V=0;for(let I=0;I<N.length;){let J=N.codePointAt(I)||0;U[V++]=J,I+=J>65535?2:1}let te=V;for(let I=1;I<T;++I)U.copyWithin(te,0,V),te+=V;return this.print(U,0,te),!0}sendDeviceAttributesPrimary(v){return v.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(v){return v.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(v.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(v){return(this._optionsService.rawOptions.termName+"").indexOf(v)===0}setMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,w.DEFAULT_CHARSET),this._charsetService.setgCharset(1,w.DEFAULT_CHARSET),this._charsetService.setgCharset(2,w.DEFAULT_CHARSET),this._charsetService.setgCharset(3,w.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),v.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(v,C){let T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:F}=this._coreMouseService,N=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:te,alt:I}=U,J=this._optionsService.rawOptions,Y=Ke=>Ke?1:2,Z=v.params[0];return _e=Z,we=C?Z===2?4:Z===4?Y(N.modes.insertMode):Z===12?3:Z===20?Y(J.convertEol):0:Z===1?Y(T.applicationCursorKeys):Z===3?J.windowOptions.setWinLines?V===80?2:V===132?1:0:0:Z===6?Y(T.origin):Z===7?Y(T.wraparound):Z===8?3:Z===9?Y(R==="X10"):Z===12?Y(J.cursorBlink):Z===25?Y(!N.isCursorHidden):Z===45?Y(T.reverseWraparound):Z===66?Y(T.applicationKeypad):Z===67?4:Z===1e3?Y(R==="VT200"):Z===1002?Y(R==="DRAG"):Z===1003?Y(R==="ANY"):Z===1004?Y(T.sendFocus):Z===1005?4:Z===1006?Y(F==="SGR"):Z===1015?4:Z===1016?Y(F==="SGR_PIXELS"):Z===1048?1:Z===47||Z===1047||Z===1049?Y(te===I):Z===2004?Y(T.bracketedPasteMode):Z===2026?Y(T.synchronizedOutput):0,N.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${_e};${we}$y`),!0;var _e,we}_updateAttrColor(v,C,T,R,F){return C===2?(v|=50331648,v&=-16777216,v|=c.AttributeData.fromColorRGB([T,R,F])):C===5&&(v&=-50331904,v|=33554432|255&T),v}_extractColor(v,C,T){let R=[0,0,-1,0,0,0],F=0,N=0;do{if(R[N+F]=v.params[C+N],v.hasSubParams(C+N)){let U=v.getSubParams(C+N),V=0;do R[1]===5&&(F=1),R[N+V+1+F]=U[V];while(++V<U.length&&V+N+1+F<R.length);break}if(R[1]===5&&N+F>=2||R[1]===2&&N+F>=5)break;R[1]&&(F=1)}while(++N+C<v.length&&N+F<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:T.fg=this._updateAttrColor(T.fg,R[1],R[3],R[4],R[5]);break;case 48:T.bg=this._updateAttrColor(T.bg,R[1],R[3],R[4],R[5]);break;case 58:T.extended=T.extended.clone(),T.extended.underlineColor=this._updateAttrColor(T.extended.underlineColor,R[1],R[3],R[4],R[5])}return N}_processUnderline(v,C){C.extended=C.extended.clone(),(!~v||v>5)&&(v=1),C.extended.underlineStyle=v,C.fg|=268435456,v===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(v){v.fg=i.DEFAULT_ATTR_DATA.fg,v.bg=i.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=v.length,T,R=this._curAttrData;for(let F=0;F<C;F++)T=v.params[F],T>=30&&T<=37?(R.fg&=-50331904,R.fg|=16777216|T-30):T>=40&&T<=47?(R.bg&=-50331904,R.bg|=16777216|T-40):T>=90&&T<=97?(R.fg&=-50331904,R.fg|=16777224|T-90):T>=100&&T<=107?(R.bg&=-50331904,R.bg|=16777224|T-100):T===0?this._processSGR0(R):T===1?R.fg|=134217728:T===3?R.bg|=67108864:T===4?(R.fg|=268435456,this._processUnderline(v.hasSubParams(F)?v.getSubParams(F)[0]:1,R)):T===5?R.fg|=536870912:T===7?R.fg|=67108864:T===8?R.fg|=1073741824:T===9?R.fg|=2147483648:T===2?R.bg|=134217728:T===21?this._processUnderline(2,R):T===22?(R.fg&=-134217729,R.bg&=-134217729):T===23?R.bg&=-67108865:T===24?(R.fg&=-268435457,this._processUnderline(0,R)):T===25?R.fg&=-536870913:T===27?R.fg&=-67108865:T===28?R.fg&=-1073741825:T===29?R.fg&=2147483647:T===39?(R.fg&=-67108864,R.fg|=16777215&i.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?F+=this._extractColor(v,F,R):T===53?R.bg|=1073741824:T===55?R.bg&=-1073741825:T===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):T===100?(R.fg&=-67108864,R.fg|=16777215&i.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${T}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let C=v.length===0?1:v.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(v){let C=v.params[0]||1,T;return(v.length<2||(T=v.params[1])>this._bufferService.rows||T===0)&&(T=this._bufferService.rows),T>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=T-1,this._setCursor(0,0)),!0}windowOptions(v){if(!x(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(A.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(A.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(v){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(v){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(v){return this._windowTitle=v,this._onTitleChange.fire(v),!0}setIconName(v){return this._iconName=v,!0}setOrReportIndexedColor(v){let C=[],T=v.split(";");for(;T.length>1;){let R=T.shift(),F=T.shift();if(/^\d+$/.exec(R)){let N=parseInt(R);if(W(N))if(F==="?")C.push({type:0,index:N});else{let U=(0,E.parseColor)(F);U&&C.push({type:1,index:N,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(v){let C=v.indexOf(";");if(C===-1)return!0;let T=v.slice(0,C).trim(),R=v.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(v,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=v.split(":"),R,F=T.findIndex((N=>N.startsWith("id=")));return F!==-1&&(R=T[F].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,C){let T=v.split(";");for(let R=0;R<T.length&&!(C>=this._specialColors.length);++R,++C)if(T[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let F=(0,E.parseColor)(T[R]);F&&this._onColor.fire([{type:1,index:this._specialColors[C],color:F}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let C=[],T=v.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let F=parseInt(T[R]);W(F)&&C.push({type:2,index:F})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,w.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset($[v[0]],w.CHARSETS[v[1]]||w.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new u.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(F=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${F}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${T.scrollTop+1};${T.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,C){this._dirtyRowTracker.markRangeDirty(v,C)}}n.InputHandler=z;let X=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,v){q>v&&(L=q,q=v,v=L),q<this.start&&(this.start=q),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function W(q){return 0<=q&&q<256}X=h([b(0,f.IBufferService)],X)},701:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isChromeOS=n.isLinux=n.isWindows=n.isIphone=n.isIpad=n.isMac=n.isSafari=n.isLegacyEdge=n.isFirefox=n.isNode=void 0,n.getSafariVersion=function(){if(!n.isSafari)return 0;let b=d.match(/Version\/(\d+)/);return b===null||b.length<2?0:parseInt(b[1])},n.isNode=typeof process<"u"&&"title"in process;let d=n.isNode?"node":navigator.userAgent,h=n.isNode?"node":navigator.platform;n.isFirefox=d.includes("Firefox"),n.isLegacyEdge=d.includes("Edge"),n.isSafari=/^((?!chrome|android).)*safari/i.test(d),n.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(h),n.isIpad=h==="iPad",n.isIphone=h==="iPhone",n.isWindows=["Windows","Win16","Win32","WinCE"].includes(h),n.isLinux=h.indexOf("Linux")>=0,n.isChromeOS=/\bCrOS\b/.test(d)},6168:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DebouncedIdleTask=n.IdleTaskQueue=n.PriorityTaskQueue=void 0;let h=d(701);class b{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 g=0,_=0,i=l.timeRemaining(),p=0;for(;this._i<this._tasks.length;){if(g=performance.now(),this._tasks[this._i]()||this._i++,g=Math.max(1,performance.now()-g),_=Math.max(g,_),p=l.timeRemaining(),1.5*_>p)return i-g<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(i-g))}ms`),void this._start();i=p}this.clear()}}class a extends b{_requestCallback(l){return setTimeout((()=>l(this._createDeadline(16))))}_cancelCallback(l){clearTimeout(l)}_createDeadline(l){let g=performance.now()+l;return{timeRemaining:()=>Math.max(0,g-performance.now())}}}n.PriorityTaskQueue=a,n.IdleTaskQueue=!h.isNode&&"requestIdleCallback"in window?class extends b{_requestCallback(w){return requestIdleCallback(w)}_cancelCallback(w){cancelIdleCallback(w)}}:a,n.DebouncedIdleTask=class{constructor(){this._queue=new n.IdleTaskQueue}set(w){this._queue.clear(),this._queue.enqueue(w)}flush(){this._queue.flush()}}},5882:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(b){let a=b.buffer.lines.get(b.buffer.ybase+b.buffer.y-1),w=a?.get(b.cols-1),l=b.buffer.lines.get(b.buffer.ybase+b.buffer.y);l&&w&&(l.isWrapped=w[h.CHAR_DATA_CODE_INDEX]!==h.NULL_CELL_CODE&&w[h.CHAR_DATA_CODE_INDEX]!==h.WHITESPACE_CELL_CODE)};let h=d(8938)},5451:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ExtendedAttrs=n.AttributeData=void 0;class d{constructor(){this.fg=0,this.bg=0,this.extended=new h}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new d;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}n.AttributeData=d;class h{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,w=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=w}clone(){return new h(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}n.ExtendedAttrs=h},1073:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Buffer=n.MAX_BUFFER_SIZE=void 0;let h=d(5639),b=d(6168),a=d(5451),w=d(6107),l=d(732),g=d(3055),_=d(8938),i=d(8158),p=d(6760);n.MAX_BUFFER_SIZE=4294967295,n.Buffer=class{constructor(u,c,f){this._hasScrollback=u,this._optionsService=c,this._bufferService=f,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=w.DEFAULT_ATTR_DATA.clone(),this.savedCharset=p.DEFAULT_CHARSET,this.markers=[],this._nullCell=g.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=g.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new b.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new h.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(u){return u?(this._nullCell.fg=u.fg,this._nullCell.bg=u.bg,this._nullCell.extended=u.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(u){return u?(this._whitespaceCell.fg=u.fg,this._whitespaceCell.bg=u.bg,this._whitespaceCell.extended=u.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(u,c){return new w.BufferLine(this._bufferService.cols,this.getNullCell(u),c)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let u=this.ybase+this.y-this.ydisp;return u>=0&&u<this._rows}_getCorrectBufferLength(u){if(!this._hasScrollback)return u;let c=u+this._optionsService.rawOptions.scrollback;return c>n.MAX_BUFFER_SIZE?n.MAX_BUFFER_SIZE:c}fillViewportRows(u){if(this.lines.length===0){u===void 0&&(u=w.DEFAULT_ATTR_DATA);let c=this._rows;for(;c--;)this.lines.push(this.getBlankLine(u))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new h.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(u,c){let f=this.getNullCell(w.DEFAULT_ATTR_DATA),k=0,S=this._getCorrectBufferLength(c);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<u)for(let E=0;E<this.lines.length;E++)k+=+this.lines.get(E).resize(u,f);let P=0;if(this._rows<c)for(let E=this._rows;E<c;E++)this.lines.length<c+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new w.BufferLine(u,f)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new w.BufferLine(u,f)));else for(let E=this._rows;E>c;E--)this.lines.length>c+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let E=this.lines.length-S;E>0&&(this.lines.trimStart(E),this.ybase=Math.max(this.ybase-E,0),this.ydisp=Math.max(this.ydisp-E,0),this.savedY=Math.max(this.savedY-E,0)),this.lines.maxLength=S}this.x=Math.min(this.x,u-1),this.y=Math.min(this.y,c-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,u-1),this.scrollTop=0}if(this.scrollBottom=c-1,this._isReflowEnabled&&(this._reflow(u,c),this._cols>u))for(let P=0;P<this.lines.length;P++)k+=+this.lines.get(P).resize(u,f);this._cols=u,this._rows=c,this._memoryCleanupQueue.clear(),k>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let u=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,u=!1);let c=0;for(;this._memoryCleanupPosition<this.lines.length;)if(c+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),c>100)return!0;return u}get _isReflowEnabled(){let u=this._optionsService.rawOptions.windowsPty;return u&&u.buildNumber?this._hasScrollback&&u.backend==="conpty"&&u.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(u,c){this._cols!==u&&(u>this._cols?this._reflowLarger(u,c):this._reflowSmaller(u,c))}_reflowLarger(u,c){let f=this._optionsService.rawOptions.reflowCursorLine,k=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,u,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),f);if(k.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,k);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(u,c,S.countRemoved)}}_reflowLargerAdjustViewport(u,c,f){let k=this.getNullCell(w.DEFAULT_ATTR_DATA),S=f;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<c&&this.lines.push(new w.BufferLine(u,k))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-f,0)}_reflowSmaller(u,c){let f=this._optionsService.rawOptions.reflowCursorLine,k=this.getNullCell(w.DEFAULT_ATTR_DATA),S=[],P=0;for(let E=this.lines.length-1;E>=0;E--){let j=this.lines.get(E);if(!j||!j.isWrapped&&j.getTrimmedLength()<=u)continue;let $=[j];for(;j.isWrapped&&E>0;)j=this.lines.get(--E),$.unshift(j);if(!f){let T=this.ybase+this.y;if(T>=E&&T<E+$.length)continue}let D=$[$.length-1].getTrimmedLength(),x=(0,l.reflowSmallerGetNewLineLengths)($,this._cols,u),A=x.length-$.length,L;L=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+A):Math.max(0,this.lines.length-this.lines.maxLength+A);let z=[];for(let T=0;T<A;T++){let R=this.getBlankLine(w.DEFAULT_ATTR_DATA,!0);z.push(R)}z.length>0&&(S.push({start:E+$.length+P,newLines:z}),P+=z.length),$.push(...z);let X=x.length-1,W=x[X];W===0&&(X--,W=x[X]);let q=$.length-A-1,v=D;for(;q>=0;){let T=Math.min(v,W);if($[X]===void 0)break;if($[X].copyCellsFrom($[q],v-T,W-T,T,!0),W-=T,W===0&&(X--,W=x[X]),v-=T,v===0){q--;let R=Math.max(q,0);v=(0,l.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)x[T]<u&&$[T].setCell(x[T],k);let C=A-L;for(;C-- >0;)this.ybase===0?this.y<c-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-c&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+A,this.ybase+c-1)}if(S.length>0){let E=[],j=[];for(let W=0;W<this.lines.length;W++)j.push(this.lines.get(W));let $=this.lines.length,D=$-1,x=0,A=S[x];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let L=0;for(let W=Math.min(this.lines.maxLength-1,$+P-1);W>=0;W--)if(A&&A.start>D+L){for(let q=A.newLines.length-1;q>=0;q--)this.lines.set(W--,A.newLines[q]);W++,E.push({index:D+1,amount:A.newLines.length}),L+=A.newLines.length,A=S[++x]}else this.lines.set(W,j[D--]);let z=0;for(let W=E.length-1;W>=0;W--)E[W].index+=z,this.lines.onInsertEmitter.fire(E[W]),z+=E[W].amount;let X=Math.max(0,$+P-this.lines.maxLength);X>0&&this.lines.onTrimEmitter.fire(X)}}translateBufferLineToString(u,c,f=0,k){let S=this.lines.get(u);return S?S.translateToString(c,f,k):""}getWrappedRangeForLine(u){let c=u,f=u;for(;c>0&&this.lines.get(c).isWrapped;)c--;for(;f+1<this.lines.length&&this.lines.get(f+1).isWrapped;)f++;return{first:c,last:f}}setupTabStops(u){for(u!=null?this.tabs[u]||(u=this.prevStop(u)):(this.tabs={},u=0);u<this._cols;u+=this._optionsService.rawOptions.tabStopWidth)this.tabs[u]=!0}prevStop(u){for(u==null&&(u=this.x);!this.tabs[--u]&&u>0;);return u>=this._cols?this._cols-1:u<0?0:u}nextStop(u){for(u==null&&(u=this.x);!this.tabs[++u]&&u<this._cols;);return u>=this._cols?this._cols-1:u<0?0:u}clearMarkers(u){this._isClearing=!0;for(let c=0;c<this.markers.length;c++)this.markers[c].line===u&&(this.markers[c].dispose(),this.markers.splice(c--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let u=0;u<this.markers.length;u++)this.markers[u].dispose();this.markers.length=0,this._isClearing=!1}addMarker(u){let c=new i.Marker(u);return this.markers.push(c),c.register(this.lines.onTrim((f=>{c.line-=f,c.line<0&&c.dispose()}))),c.register(this.lines.onInsert((f=>{c.line>=f.index&&(c.line+=f.amount)}))),c.register(this.lines.onDelete((f=>{c.line>=f.index&&c.line<f.index+f.amount&&c.dispose(),c.line>f.index&&(c.line-=f.amount)}))),c.register(c.onDispose((()=>this._removeMarker(c)))),c}_removeMarker(u){this._isClearing||this.markers.splice(this.markers.indexOf(u),1)}}},6107:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLine=n.DEFAULT_ATTR_DATA=void 0;let h=d(5451),b=d(3055),a=d(8938),w=d(726);n.DEFAULT_ATTR_DATA=Object.freeze(new h.AttributeData);let l=0;class g{constructor(i,p,u=!1){this.isWrapped=u,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*i);let c=p||b.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let f=0;f<i;++f)this.setCell(f,c);this.length=i}get(i){let p=this._data[3*i+0],u=2097151&p;return[this._data[3*i+1],2097152&p?this._combined[i]:u?(0,w.stringFromCodePoint)(u):"",p>>22,2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):u]}set(i,p){this._data[3*i+1]=p[a.CHAR_DATA_ATTR_INDEX],p[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[i]=p[1],this._data[3*i+0]=2097152|i|p[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*i+0]=p[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(i){return this._data[3*i+0]>>22}hasWidth(i){return 12582912&this._data[3*i+0]}getFg(i){return this._data[3*i+1]}getBg(i){return this._data[3*i+2]}hasContent(i){return 4194303&this._data[3*i+0]}getCodePoint(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):2097151&p}isCombined(i){return 2097152&this._data[3*i+0]}getString(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i]:2097151&p?(0,w.stringFromCodePoint)(2097151&p):""}isProtected(i){return 536870912&this._data[3*i+2]}loadCell(i,p){return l=3*i,p.content=this._data[l+0],p.fg=this._data[l+1],p.bg=this._data[l+2],2097152&p.content&&(p.combinedData=this._combined[i]),268435456&p.bg&&(p.extended=this._extendedAttrs[i]),p}setCell(i,p){2097152&p.content&&(this._combined[i]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[i]=p.extended),this._data[3*i+0]=p.content,this._data[3*i+1]=p.fg,this._data[3*i+2]=p.bg}setCellFromCodepoint(i,p,u,c){268435456&c.bg&&(this._extendedAttrs[i]=c.extended),this._data[3*i+0]=p|u<<22,this._data[3*i+1]=c.fg,this._data[3*i+2]=c.bg}addCodepointToCell(i,p,u){let c=this._data[3*i+0];2097152&c?this._combined[i]+=(0,w.stringFromCodePoint)(p):2097151&c?(this._combined[i]=(0,w.stringFromCodePoint)(2097151&c)+(0,w.stringFromCodePoint)(p),c&=-2097152,c|=2097152):c=p|4194304,u&&(c&=-12582913,c|=u<<22),this._data[3*i+0]=c}insertCells(i,p,u){if((i%=this.length)&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,u),p<this.length-i){let c=new b.CellData;for(let f=this.length-i-p-1;f>=0;--f)this.setCell(i+p+f,this.loadCell(i+f,c));for(let f=0;f<p;++f)this.setCell(i+f,u)}else for(let c=i;c<this.length;++c)this.setCell(c,u);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,u)}deleteCells(i,p,u){if(i%=this.length,p<this.length-i){let c=new b.CellData;for(let f=0;f<this.length-i-p;++f)this.setCell(i+f,this.loadCell(i+p+f,c));for(let f=this.length-p;f<this.length;++f)this.setCell(f,u)}else for(let c=i;c<this.length;++c)this.setCell(c,u);i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,u),this.getWidth(i)!==0||this.hasContent(i)||this.setCellFromCodepoint(i,0,1,u)}replaceCells(i,p,u,c=!1){if(c)for(i&&this.getWidth(i-1)===2&&!this.isProtected(i-1)&&this.setCellFromCodepoint(i-1,0,1,u),p<this.length&&this.getWidth(p-1)===2&&!this.isProtected(p)&&this.setCellFromCodepoint(p,0,1,u);i<p&&i<this.length;)this.isProtected(i)||this.setCell(i,u),i++;else for(i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,u),p<this.length&&this.getWidth(p-1)===2&&this.setCellFromCodepoint(p,0,1,u);i<p&&i<this.length;)this.setCell(i++,u)}resize(i,p){if(i===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let u=3*i;if(i>this.length){if(this._data.buffer.byteLength>=4*u)this._data=new Uint32Array(this._data.buffer,0,u);else{let c=new Uint32Array(u);c.set(this._data),this._data=c}for(let c=this.length;c<i;++c)this.setCell(c,p)}else{this._data=this._data.subarray(0,u);let c=Object.keys(this._combined);for(let k=0;k<c.length;k++){let S=parseInt(c[k],10);S>=i&&delete this._combined[S]}let f=Object.keys(this._extendedAttrs);for(let k=0;k<f.length;k++){let S=parseInt(f[k],10);S>=i&&delete this._extendedAttrs[S]}}return this.length=i,4*u*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let i=new Uint32Array(this._data.length);return i.set(this._data),this._data=i,1}return 0}fill(i,p=!1){if(p)for(let u=0;u<this.length;++u)this.isProtected(u)||this.setCell(u,i);else{this._combined={},this._extendedAttrs={};for(let u=0;u<this.length;++u)this.setCell(u,i)}}copyFrom(i){this.length!==i.length?this._data=new Uint32Array(i._data):this._data.set(i._data),this.length=i.length,this._combined={};for(let p in i._combined)this._combined[p]=i._combined[p];this._extendedAttrs={};for(let p in i._extendedAttrs)this._extendedAttrs[p]=i._extendedAttrs[p];this.isWrapped=i.isWrapped}clone(){let i=new g(0);i._data=new Uint32Array(this._data),i.length=this.length;for(let p in this._combined)i._combined[p]=this._combined[p];for(let p in this._extendedAttrs)i._extendedAttrs[p]=this._extendedAttrs[p];return i.isWrapped=this.isWrapped,i}getTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0])return i+(this._data[3*i+0]>>22);return 0}getNoBgTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0]||50331648&this._data[3*i+2])return i+(this._data[3*i+0]>>22);return 0}copyCellsFrom(i,p,u,c,f){let k=i._data;if(f)for(let P=c-1;P>=0;P--){for(let E=0;E<3;E++)this._data[3*(u+P)+E]=k[3*(p+P)+E];268435456&k[3*(p+P)+2]&&(this._extendedAttrs[u+P]=i._extendedAttrs[p+P])}else for(let P=0;P<c;P++){for(let E=0;E<3;E++)this._data[3*(u+P)+E]=k[3*(p+P)+E];268435456&k[3*(p+P)+2]&&(this._extendedAttrs[u+P]=i._extendedAttrs[p+P])}let S=Object.keys(i._combined);for(let P=0;P<S.length;P++){let E=parseInt(S[P],10);E>=p&&(this._combined[E-p+u]=i._combined[E])}}translateToString(i,p,u,c){p=p??0,u=u??this.length,i&&(u=Math.min(u,this.getTrimmedLength())),c&&(c.length=0);let f="";for(;p<u;){let k=this._data[3*p+0],S=2097151&k,P=2097152&k?this._combined[p]:S?(0,w.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(f+=P,c)for(let E=0;E<P.length;++E)c.push(p);p+=k>>22||1}return c&&c.push(p),f}}n.BufferLine=g},732:(y,n)=>{function d(h,b,a){if(b===h.length-1)return h[b].getTrimmedLength();let w=!h[b].hasContent(a-1)&&h[b].getWidth(a-1)===1,l=h[b+1].getWidth(0)===2;return w&&l?a-1:a}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(h,b,a,w,l,g){let _=[];for(let i=0;i<h.length-1;i++){let p=i,u=h.get(++p);if(!u.isWrapped)continue;let c=[h.get(i)];for(;p<h.length&&u.isWrapped;)c.push(u),u=h.get(++p);if(!g&&w>=i&&w<p){i+=c.length-1;continue}let f=0,k=d(c,f,b),S=1,P=0;for(;S<c.length;){let j=d(c,S,b),$=j-P,D=a-k,x=Math.min($,D);c[f].copyCellsFrom(c[S],P,k,x,!1),k+=x,k===a&&(f++,k=0),P+=x,P===j&&(S++,P=0),k===0&&f!==0&&c[f-1].getWidth(a-1)===2&&(c[f].copyCellsFrom(c[f-1],a-1,k++,1,!1),c[f-1].setCell(a-1,l))}c[f].replaceCells(k,a,l);let E=0;for(let j=c.length-1;j>0&&(j>f||c[j].getTrimmedLength()===0);j--)E++;E>0&&(_.push(i+c.length-E),_.push(E)),i+=c.length-1}return _},n.reflowLargerCreateNewLayout=function(h,b){let a=[],w=0,l=b[w],g=0;for(let _=0;_<h.length;_++)if(l===_){let i=b[++w];h.onDeleteEmitter.fire({index:_-g,amount:i}),_+=i-1,g+=i,l=b[++w]}else a.push(_);return{layout:a,countRemoved:g}},n.reflowLargerApplyNewLayout=function(h,b){let a=[];for(let w=0;w<b.length;w++)a.push(h.get(b[w]));for(let w=0;w<a.length;w++)h.set(w,a[w]);h.length=b.length},n.reflowSmallerGetNewLineLengths=function(h,b,a){let w=[],l=h.map(((p,u)=>d(h,u,b))).reduce(((p,u)=>p+u)),g=0,_=0,i=0;for(;i<l;){if(l-i<a){w.push(l-i);break}g+=a;let p=d(h,_,b);g>p&&(g-=p,_++);let u=h[_].getWidth(g-1)===2;u&&g--;let c=u?a-1:a;w.push(c),i+=c}return w},n.getWrappedLineTrimmedLength=d},4097:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferSet=void 0;let h=d(7150),b=d(1073),a=d(802);class w extends h.Disposable{constructor(g,_){super(),this._optionsService=g,this._bufferService=_,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new b.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new b.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(g){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(g),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(g,_){this._normal.resize(g,_),this._alt.resize(g,_),this.setupTabStops(g)}setupTabStops(g){this._normal.setupTabStops(g),this._alt.setupTabStops(g)}}n.BufferSet=w},3055:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let h=d(726),b=d(8938),a=d(5451);class w extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(g){let _=new w;return _.setFromCharData(g),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,h.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(g){this.fg=g[b.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(g[b.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(g[b.CHAR_DATA_CHAR_INDEX].length===2){let i=g[b.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){let p=g[b.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=p&&p<=57343?this.content=1024*(i-55296)+p-56320+65536|g[b.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=g[b.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[b.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=g[b.CHAR_DATA_CHAR_INDEX],this.content=2097152|g[b.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}n.CellData=w},8938:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WHITESPACE_CELL_CODE=n.WHITESPACE_CELL_WIDTH=n.WHITESPACE_CELL_CHAR=n.NULL_CELL_CODE=n.NULL_CELL_WIDTH=n.NULL_CELL_CHAR=n.CHAR_DATA_CODE_INDEX=n.CHAR_DATA_WIDTH_INDEX=n.CHAR_DATA_CHAR_INDEX=n.CHAR_DATA_ATTR_INDEX=n.DEFAULT_EXT=n.DEFAULT_ATTR=n.DEFAULT_COLOR=void 0,n.DEFAULT_COLOR=0,n.DEFAULT_ATTR=n.DEFAULT_COLOR<<9|256,n.DEFAULT_EXT=0,n.CHAR_DATA_ATTR_INDEX=0,n.CHAR_DATA_CHAR_INDEX=1,n.CHAR_DATA_WIDTH_INDEX=2,n.CHAR_DATA_CODE_INDEX=3,n.NULL_CELL_CHAR="",n.NULL_CELL_WIDTH=1,n.NULL_CELL_CODE=0,n.WHITESPACE_CELL_CHAR=" ",n.WHITESPACE_CELL_WIDTH=1,n.WHITESPACE_CELL_CODE=32},8158:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let h=d(802),b=d(7150);class a{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new h.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,b.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}n.Marker=a,a._nextId=1},6760:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CHARSET=n.CHARSETS=void 0,n.CHARSETS={},n.DEFAULT_CHARSET=n.CHARSETS.B,n.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},n.CHARSETS.A={"#":"\xA3"},n.CHARSETS.B=void 0,n.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},n.CHARSETS.C=n.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},n.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},n.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},n.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},n.CHARSETS.E=n.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},n.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},n.CHARSETS.H=n.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,n)=>{var d,h,b;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
4
- `,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(d||(n.C0=d={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(h||(n.C1=h={})),(function(a){a.ST=`${d.ESC}\\`})(b||(n.C1_ESCAPED=b={}))},726:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Utf8ToUtf32=n.StringToUtf32=void 0,n.stringFromCodePoint=function(d){return d>65535?(d-=65536,String.fromCharCode(55296+(d>>10))+String.fromCharCode(d%1024+56320)):String.fromCharCode(d)},n.utf32ToString=function(d,h=0,b=d.length){let a="";for(let w=h;w<b;++w){let l=d[w];l>65535?(l-=65536,a+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):a+=String.fromCharCode(l)}return a},n.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(d,h){let b=d.length;if(!b)return 0;let a=0,w=0;if(this._interim){let l=d.charCodeAt(w++);56320<=l&&l<=57343?h[a++]=1024*(this._interim-55296)+l-56320+65536:(h[a++]=this._interim,h[a++]=l),this._interim=0}for(let l=w;l<b;++l){let g=d.charCodeAt(l);if(55296<=g&&g<=56319){if(++l>=b)return this._interim=g,a;let _=d.charCodeAt(l);56320<=_&&_<=57343?h[a++]=1024*(g-55296)+_-56320+65536:(h[a++]=g,h[a++]=_)}else g!==65279&&(h[a++]=g)}return a}},n.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(d,h){let b=d.length;if(!b)return 0;let a,w,l,g,_=0,i=0,p=0;if(this.interim[0]){let f=!1,k=this.interim[0];k&=(224&k)==192?31:(240&k)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)k<<=6,k|=S;let E=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,j=E-P;for(;p<j;){if(p>=b)return 0;if(S=d[p++],(192&S)!=128){p--,f=!0;break}this.interim[P++]=S,k<<=6,k|=63&S}f||(E===2?k<128?p--:h[_++]=k:E===3?k<2048||k>=55296&&k<=57343||k===65279||(h[_++]=k):k<65536||k>1114111||(h[_++]=k)),this.interim.fill(0)}let u=b-4,c=p;for(;c<b;){for(;!(!(c<u)||128&(a=d[c])||128&(w=d[c+1])||128&(l=d[c+2])||128&(g=d[c+3]));)h[_++]=a,h[_++]=w,h[_++]=l,h[_++]=g,c+=4;if(a=d[c++],a<128)h[_++]=a;else if((224&a)==192){if(c>=b)return this.interim[0]=a,_;if(w=d[c++],(192&w)!=128){c--;continue}if(i=(31&a)<<6|63&w,i<128){c--;continue}h[_++]=i}else if((240&a)==224){if(c>=b)return this.interim[0]=a,_;if(w=d[c++],(192&w)!=128){c--;continue}if(c>=b)return this.interim[0]=a,this.interim[1]=w,_;if(l=d[c++],(192&l)!=128){c--;continue}if(i=(15&a)<<12|(63&w)<<6|63&l,i<2048||i>=55296&&i<=57343||i===65279)continue;h[_++]=i}else if((248&a)==240){if(c>=b)return this.interim[0]=a,_;if(w=d[c++],(192&w)!=128){c--;continue}if(c>=b)return this.interim[0]=a,this.interim[1]=w,_;if(l=d[c++],(192&l)!=128){c--;continue}if(c>=b)return this.interim[0]=a,this.interim[1]=w,this.interim[2]=l,_;if(g=d[c++],(192&g)!=128){c--;continue}if(i=(7&a)<<18|(63&w)<<12|(63&l)<<6|63&g,i<65536||i>1114111)continue;h[_++]=i}}return _}}},7428:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeV6=void 0;let h=d(6415),b=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],w;n.UnicodeV6=class{constructor(){if(this.version="6",!w){w=new Uint8Array(65536),w.fill(1),w[0]=0,w.fill(0,1,32),w.fill(0,127,160),w.fill(2,4352,4448),w[9001]=2,w[9002]=2,w.fill(2,11904,42192),w[12351]=1,w.fill(2,44032,55204),w.fill(2,63744,64256),w.fill(2,65040,65050),w.fill(2,65072,65136),w.fill(2,65280,65377),w.fill(2,65504,65511);for(let l=0;l<b.length;++l)w.fill(0,b[l][0],b[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?w[l]:(function(g,_){let i,p=0,u=_.length-1;if(g<_[0][0]||g>_[u][1])return!1;for(;u>=p;)if(i=p+u>>1,g>_[i][1])p=i+1;else{if(!(g<_[i][0]))return!0;u=i-1}return!1})(l,a)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,g){let _=this.wcwidth(l),i=_===0&&g!==0;if(i){let p=h.UnicodeService.extractWidth(g);p===0?i=!1:p>_&&(_=p)}return h.UnicodeService.createPropertyValue(0,_,i)}}},3562:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WriteBuffer=void 0;let h=d(7150),b=d(802);class a extends h.Disposable{constructor(l){super(),this._action=l,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new b.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(l,g){if(g!==void 0&&this._syncCalls>g)return void(this._syncCalls=0);if(this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let _;for(this._isSyncWriting=!0;_=this._writeBuffer.shift();){this._action(_);let i=this._callbacks.shift();i&&i()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(l,g){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(g),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=l.length,this._writeBuffer.push(l),this._callbacks.push(g)}_innerWrite(l=0,g=!0){let _=l||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let i=this._writeBuffer[this._bufferOffset],p=this._action(i,g);if(p){let c=f=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,f))):this._innerWrite(_,f);return void p.catch((f=>(queueMicrotask((()=>{throw f})),Promise.resolve(!1)))).then(c)}let u=this._callbacks[this._bufferOffset];if(u&&u(),this._bufferOffset++,this._pendingData-=i.length,performance.now()-_>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}n.WriteBuffer=a},8693:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.parseColor=function(a){if(!a)return;let w=a.toLowerCase();if(w.indexOf("rgb:")===0){w=w.slice(4);let l=d.exec(w);if(l){let g=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/g*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/g*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/g*255)]}}else if(w.indexOf("#")===0&&(w=w.slice(1),h.exec(w)&&[3,6,9,12].includes(w.length))){let l=w.length/3,g=[0,0,0];for(let _=0;_<3;++_){let i=parseInt(w.slice(l*_,l*_+l),16);g[_]=l===1?i<<4:l===2?i:l===3?i>>4:i>>8}return g}},n.toRgbString=function(a,w=16){let[l,g,_]=a;return`rgb:${b(l,w)}/${b(g,w)}/${b(_,w)}`};let d=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,h=/^[\da-f]+$/;function b(a,w){let l=a.toString(16),g=l.length<2?"0"+l:l;switch(w){case 4:return l[0];case 8:return g;case 12:return(g+g).slice(0,3);default:return g+g}}},1263:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.PAYLOAD_LIMIT=void 0,n.PAYLOAD_LIMIT=1e7},9823:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DcsHandler=n.DcsParser=void 0;let h=d(726),b=d(7262),a=d(1263),w=[];n.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=w,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=w}registerHandler(g,_){this._handlers[g]===void 0&&(this._handlers[g]=[]);let i=this._handlers[g];return i.push(_),{dispose:()=>{let p=i.indexOf(_);p!==-1&&i.splice(p,1)}}}clearHandler(g){this._handlers[g]&&delete this._handlers[g]}setHandlerFallback(g){this._handlerFb=g}reset(){if(this._active.length)for(let g=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;g>=0;--g)this._active[g].unhook(!1);this._stack.paused=!1,this._active=w,this._ident=0}hook(g,_){if(this.reset(),this._ident=g,this._active=this._handlers[g]||w,this._active.length)for(let i=this._active.length-1;i>=0;i--)this._active[i].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(g,_,i){if(this._active.length)for(let p=this._active.length-1;p>=0;p--)this._active[p].put(g,_,i);else this._handlerFb(this._ident,"PUT",(0,h.utf32ToString)(g,_,i))}unhook(g,_=!0){if(this._active.length){let i=!1,p=this._active.length-1,u=!1;if(this._stack.paused&&(p=this._stack.loopPosition-1,i=_,u=this._stack.fallThrough,this._stack.paused=!1),!u&&i===!1){for(;p>=0&&(i=this._active[p].unhook(g),i!==!0);p--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!1,i;p--}for(;p>=0;p--)if(i=this._active[p].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",g);this._active=w,this._ident=0}};let l=new b.Params;l.addParam(0),n.DcsHandler=class{constructor(g){this._handler=g,this._data="",this._params=l,this._hitLimit=!1}hook(g){this._params=g.length>1||g.params[0]?g.clone():l,this._data="",this._hitLimit=!1}put(g,_,i){this._hitLimit||(this._data+=(0,h.utf32ToString)(g,_,i),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(g){let _=!1;if(this._hitLimit)_=!1;else if(g&&(_=this._handler(this._data,this._params),_ instanceof Promise))return _.then((i=>(this._params=l,this._data="",this._hitLimit=!1,i)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.EscapeSequenceParser=n.VT500_TRANSITION_TABLE=n.TransitionTable=void 0;let h=d(7150),b=d(7262),a=d(1346),w=d(9823);class l{constructor(p){this.table=new Uint8Array(p)}setDefault(p,u){this.table.fill(p<<4|u)}add(p,u,c,f){this.table[u<<8|p]=c<<4|f}addMany(p,u,c,f){for(let k=0;k<p.length;k++)this.table[u<<8|p[k]]=c<<4|f}}n.TransitionTable=l;let g=160;n.VT500_TRANSITION_TABLE=(function(){let i=new l(4095),p=Array.apply(null,Array(256)).map(((P,E)=>E)),u=(P,E)=>p.slice(P,E),c=u(32,127),f=u(0,24);f.push(25),f.push.apply(f,u(28,32));let k=u(0,14),S;for(S in i.setDefault(1,0),i.addMany(c,0,2,0),k)i.addMany([24,26,153,154],S,3,0),i.addMany(u(128,144),S,3,0),i.addMany(u(144,152),S,3,0),i.add(156,S,0,0),i.add(27,S,11,1),i.add(157,S,4,8),i.addMany([152,158,159],S,0,7),i.add(155,S,11,3),i.add(144,S,11,9);return i.addMany(f,0,3,0),i.addMany(f,1,3,1),i.add(127,1,0,1),i.addMany(f,8,0,8),i.addMany(f,3,3,3),i.add(127,3,0,3),i.addMany(f,4,3,4),i.add(127,4,0,4),i.addMany(f,6,3,6),i.addMany(f,5,3,5),i.add(127,5,0,5),i.addMany(f,2,3,2),i.add(127,2,0,2),i.add(93,1,4,8),i.addMany(c,8,5,8),i.add(127,8,5,8),i.addMany([156,27,24,26,7],8,6,0),i.addMany(u(28,32),8,0,8),i.addMany([88,94,95],1,0,7),i.addMany(c,7,0,7),i.addMany(f,7,0,7),i.add(156,7,0,0),i.add(127,7,0,7),i.add(91,1,11,3),i.addMany(u(64,127),3,7,0),i.addMany(u(48,60),3,8,4),i.addMany([60,61,62,63],3,9,4),i.addMany(u(48,60),4,8,4),i.addMany(u(64,127),4,7,0),i.addMany([60,61,62,63],4,0,6),i.addMany(u(32,64),6,0,6),i.add(127,6,0,6),i.addMany(u(64,127),6,0,0),i.addMany(u(32,48),3,9,5),i.addMany(u(32,48),5,9,5),i.addMany(u(48,64),5,0,6),i.addMany(u(64,127),5,7,0),i.addMany(u(32,48),4,9,5),i.addMany(u(32,48),1,9,2),i.addMany(u(32,48),2,9,2),i.addMany(u(48,127),2,10,0),i.addMany(u(48,80),1,10,0),i.addMany(u(81,88),1,10,0),i.addMany([89,90,92],1,10,0),i.addMany(u(96,127),1,10,0),i.add(80,1,11,9),i.addMany(f,9,0,9),i.add(127,9,0,9),i.addMany(u(28,32),9,0,9),i.addMany(u(32,48),9,9,12),i.addMany(u(48,60),9,8,10),i.addMany([60,61,62,63],9,9,10),i.addMany(f,11,0,11),i.addMany(u(32,128),11,0,11),i.addMany(u(28,32),11,0,11),i.addMany(f,10,0,10),i.add(127,10,0,10),i.addMany(u(28,32),10,0,10),i.addMany(u(48,60),10,8,10),i.addMany([60,61,62,63],10,0,11),i.addMany(u(32,48),10,9,12),i.addMany(f,12,0,12),i.add(127,12,0,12),i.addMany(u(28,32),12,0,12),i.addMany(u(32,48),12,9,12),i.addMany(u(48,64),12,0,11),i.addMany(u(64,127),12,12,13),i.addMany(u(64,127),10,12,13),i.addMany(u(64,127),9,12,13),i.addMany(f,13,13,13),i.addMany(c,13,13,13),i.add(127,13,0,13),i.addMany([27,156,24,26],13,14,0),i.add(g,0,2,0),i.add(g,8,5,8),i.add(g,6,0,6),i.add(g,11,0,11),i.add(g,13,13,13),i})();class _ extends h.Disposable{constructor(p=n.VT500_TRANSITION_TABLE){super(),this._transitions=p,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new b.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(u,c,f)=>{},this._executeHandlerFb=u=>{},this._csiHandlerFb=(u,c)=>{},this._escHandlerFb=u=>{},this._errorHandlerFb=u=>u,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,h.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new w.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(p,u=[64,126]){let c=0;if(p.prefix){if(p.prefix.length>1)throw new Error("only one byte as prefix supported");if(c=p.prefix.charCodeAt(0),c&&60>c||c>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(p.intermediates){if(p.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let k=0;k<p.intermediates.length;++k){let S=p.intermediates.charCodeAt(k);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");c<<=8,c|=S}}if(p.final.length!==1)throw new Error("final must be a single byte");let f=p.final.charCodeAt(0);if(u[0]>f||f>u[1])throw new Error(`final must be in range ${u[0]} .. ${u[1]}`);return c<<=8,c|=f,c}identToString(p){let u=[];for(;p;)u.push(String.fromCharCode(255&p)),p>>=8;return u.reverse().join("")}setPrintHandler(p){this._printHandler=p}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(p,u){let c=this._identifier(p,[48,126]);this._escHandlers[c]===void 0&&(this._escHandlers[c]=[]);let f=this._escHandlers[c];return f.push(u),{dispose:()=>{let k=f.indexOf(u);k!==-1&&f.splice(k,1)}}}clearEscHandler(p){this._escHandlers[this._identifier(p,[48,126])]&&delete this._escHandlers[this._identifier(p,[48,126])]}setEscHandlerFallback(p){this._escHandlerFb=p}setExecuteHandler(p,u){this._executeHandlers[p.charCodeAt(0)]=u}clearExecuteHandler(p){this._executeHandlers[p.charCodeAt(0)]&&delete this._executeHandlers[p.charCodeAt(0)]}setExecuteHandlerFallback(p){this._executeHandlerFb=p}registerCsiHandler(p,u){let c=this._identifier(p);this._csiHandlers[c]===void 0&&(this._csiHandlers[c]=[]);let f=this._csiHandlers[c];return f.push(u),{dispose:()=>{let k=f.indexOf(u);k!==-1&&f.splice(k,1)}}}clearCsiHandler(p){this._csiHandlers[this._identifier(p)]&&delete this._csiHandlers[this._identifier(p)]}setCsiHandlerFallback(p){this._csiHandlerFb=p}registerDcsHandler(p,u){return this._dcsParser.registerHandler(this._identifier(p),u)}clearDcsHandler(p){this._dcsParser.clearHandler(this._identifier(p))}setDcsHandlerFallback(p){this._dcsParser.setHandlerFallback(p)}registerOscHandler(p,u){return this._oscParser.registerHandler(p,u)}clearOscHandler(p){this._oscParser.clearHandler(p)}setOscHandlerFallback(p){this._oscParser.setHandlerFallback(p)}setErrorHandler(p){this._errorHandler=p}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(p,u,c,f,k){this._parseStack.state=p,this._parseStack.handlers=u,this._parseStack.handlerPos=c,this._parseStack.transition=f,this._parseStack.chunkPos=k}parse(p,u,c){let f,k=0,S=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(c===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let E=this._parseStack.handlers,j=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(c===!1&&j>-1){for(;j>=0&&(f=E[j](this._params),f!==!0);j--)if(f instanceof Promise)return this._parseStack.handlerPos=j,f}this._parseStack.handlers=[];break;case 4:if(c===!1&&j>-1){for(;j>=0&&(f=E[j](),f!==!0);j--)if(f instanceof Promise)return this._parseStack.handlerPos=j,f}this._parseStack.handlers=[];break;case 6:if(k=p[this._parseStack.chunkPos],f=this._dcsParser.unhook(k!==24&&k!==26,c),f)return f;k===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(k=p[this._parseStack.chunkPos],f=this._oscParser.end(k!==24&&k!==26,c),f)return f;k===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let E=P;E<u;++E){switch(k=p[E],S=this._transitions.table[this.currentState<<8|(k<160?k:g)],S>>4){case 2:for(let A=E+1;;++A){if(A>=u||(k=p[A])<32||k>126&&k<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(k=p[A])<32||k>126&&k<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(k=p[A])<32||k>126&&k<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(k=p[A])<32||k>126&&k<g){this._printHandler(p,E,A),E=A-1;break}}break;case 3:this._executeHandlers[k]?this._executeHandlers[k]():this._executeHandlerFb(k),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:E,code:k,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let j=this._csiHandlers[this._collect<<8|k],$=j?j.length-1:-1;for(;$>=0&&(f=j[$](this._params),f!==!0);$--)if(f instanceof Promise)return this._preserveStack(3,j,$,S,E),f;$<0&&this._csiHandlerFb(this._collect<<8|k,this._params),this.precedingJoinState=0;break;case 8:do switch(k){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(k-48)}while(++E<u&&(k=p[E])>47&&k<60);E--;break;case 9:this._collect<<=8,this._collect|=k;break;case 10:let D=this._escHandlers[this._collect<<8|k],x=D?D.length-1:-1;for(;x>=0&&(f=D[x](),f!==!0);x--)if(f instanceof Promise)return this._preserveStack(4,D,x,S,E),f;x<0&&this._escHandlerFb(this._collect<<8|k),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|k,this._params);break;case 13:for(let A=E+1;;++A)if(A>=u||(k=p[A])===24||k===26||k===27||k>127&&k<g){this._dcsParser.put(p,E,A),E=A-1;break}break;case 14:if(f=this._dcsParser.unhook(k!==24&&k!==26),f)return this._preserveStack(6,[],0,S,E),f;k===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let A=E+1;;A++)if(A>=u||(k=p[A])<32||k>127&&k<g){this._oscParser.put(p,E,A),E=A-1;break}break;case 6:if(f=this._oscParser.end(k!==24&&k!==26),f)return this._preserveStack(5,[],0,S,E),f;k===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}n.EscapeSequenceParser=_},1346:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let h=d(1263),b=d(726),a=[];n.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(w,l){this._handlers[w]===void 0&&(this._handlers[w]=[]);let g=this._handlers[w];return g.push(l),{dispose:()=>{let _=g.indexOf(l);_!==-1&&g.splice(_,1)}}}clearHandler(w){this._handlers[w]&&delete this._handlers[w]}setHandlerFallback(w){this._handlerFb=w}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let w=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;w>=0;--w)this._active[w].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].start();else this._handlerFb(this._id,"START")}_put(w,l,g){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(w,l,g);else this._handlerFb(this._id,"PUT",(0,b.utf32ToString)(w,l,g))}start(){this.reset(),this._state=1}put(w,l,g){if(this._state!==3){if(this._state===1)for(;l<g;){let _=w[l++];if(_===59){this._state=2,this._start();break}if(_<48||57<_)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+_-48}this._state===2&&g-l>0&&this._put(w,l,g)}}end(w,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let g=!1,_=this._active.length-1,i=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,g=l,i=this._stack.fallThrough,this._stack.paused=!1),!i&&g===!1){for(;_>=0&&(g=this._active[_].end(w),g!==!0);_--)if(g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!1,g;_--}for(;_>=0;_--)if(g=this._active[_].end(!1),g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!0,g}else this._handlerFb(this._id,"END",w);this._active=a,this._id=-1,this._state=0}}},n.OscHandler=class{constructor(w){this._handler=w,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(w,l,g){this._hitLimit||(this._data+=(0,b.utf32ToString)(w,l,g),this._data.length>h.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(w){let l=!1;if(this._hitLimit)l=!1;else if(w&&(l=this._handler(this._data),l instanceof Promise))return l.then((g=>(this._data="",this._hitLimit=!1,g)));return this._data="",this._hitLimit=!1,l}}},7262:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Params=void 0;let d=2147483647;class h{static fromArray(a){let w=new h;if(!a.length)return w;for(let l=Array.isArray(a[0])?1:0;l<a.length;++l){let g=a[l];if(Array.isArray(g))for(let _=0;_<g.length;++_)w.addSubParam(g[_]);else w.addParam(g)}return w}constructor(a=32,w=32){if(this.maxLength=a,this.maxSubParamsLength=w,w>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(w),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new h(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let w=0;w<this.length;++w){a.push(this.params[w]);let l=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-l>0&&a.push(Array.prototype.slice.call(this._subParams,l,g))}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>d?d: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>d?d:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let w=this._subParamsIdx[a]>>8,l=255&this._subParamsIdx[a];return l-w>0?this._subParams.subarray(w,l):null}getSubParamsAll(){let a={};for(let w=0;w<this.length;++w){let l=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-l>0&&(a[w]=this._subParams.slice(l,g))}return a}addDigit(a){let w;if(this._rejectDigits||!(w=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let l=this._digitIsSub?this._subParams:this.params,g=l[w-1];l[w-1]=~g?Math.min(10*g+a,d):a}}n.Params=h},3027:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.AddonManager=void 0,n.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let d=this._addons.length-1;d>=0;d--)this._addons[d].instance.dispose()}loadAddon(d,h){let b={instance:h,dispose:h.dispose,isDisposed:!1};this._addons.push(b),h.dispose=()=>this._wrappedAddonDispose(b),h.activate(d)}_wrappedAddonDispose(d){if(d.isDisposed)return;let h=-1;for(let b=0;b<this._addons.length;b++)if(this._addons[b]===d){h=b;break}if(h===-1)throw new Error("Could not dispose an addon that has not been loaded");d.isDisposed=!0,d.dispose.apply(d.instance),this._addons.splice(h,1)}}},3235:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferApiView=void 0;let h=d(793),b=d(3055);n.BufferApiView=class{constructor(a,w){this._buffer=a,this.type=w}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let w=this._buffer.lines.get(a);if(w)return new h.BufferLineApiView(w)}getNullCell(){return new b.CellData}}},793:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let h=d(3055);n.BufferLineApiView=class{constructor(b){this._line=b}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(b,a){if(!(b<0||b>=this._line.length))return a?(this._line.loadCell(b,a),a):this._line.loadCell(b,new h.CellData)}translateToString(b,a,w){return this._line.translateToString(b,a,w)}}},5101:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let h=d(3235),b=d(7150),a=d(802);class w extends b.Disposable{constructor(g){super(),this._core=g,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new h.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new h.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}n.BufferNamespaceApi=w},6097:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ParserApi=void 0,n.ParserApi=class{constructor(d){this._core=d}registerCsiHandler(d,h){return this._core.registerCsiHandler(d,(b=>h(b.toArray())))}addCsiHandler(d,h){return this.registerCsiHandler(d,h)}registerDcsHandler(d,h){return this._core.registerDcsHandler(d,((b,a)=>h(b,a.toArray())))}addDcsHandler(d,h){return this.registerDcsHandler(d,h)}registerEscHandler(d,h){return this._core.registerEscHandler(d,h)}addEscHandler(d,h){return this.registerEscHandler(d,h)}registerOscHandler(d,h){return this._core.registerOscHandler(d,h)}addOscHandler(d,h){return this.registerOscHandler(d,h)}}},4335:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeApi=void 0,n.UnicodeApi=class{constructor(d){this._core=d}register(d){this._core.unicodeService.register(d)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(d){this._core.unicodeService.activeVersion=d}}},9640:function(y,n,d){var h=this&&this.__decorate||function(i,p,u,c){var f,k=arguments.length,S=k<3?p:c===null?c=Object.getOwnPropertyDescriptor(p,u):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,u,c);else for(var P=i.length-1;P>=0;P--)(f=i[P])&&(S=(k<3?f(S):k>3?f(p,u,S):f(p,u))||S);return k>3&&S&&Object.defineProperty(p,u,S),S},b=this&&this.__param||function(i,p){return function(u,c){p(u,c,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.BufferService=n.MINIMUM_ROWS=n.MINIMUM_COLS=void 0;let a=d(7150),w=d(4097),l=d(6501),g=d(802);n.MINIMUM_COLS=2,n.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(i){super(),this.isUserScrolling=!1,this._onResize=this._register(new g.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new g.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(i.rawOptions.cols||0,n.MINIMUM_COLS),this.rows=Math.max(i.rawOptions.rows||0,n.MINIMUM_ROWS),this.buffers=this._register(new w.BufferSet(i,this)),this._register(this.buffers.onBufferActivate((p=>{this._onScroll.fire(p.activeBuffer.ydisp)})))}resize(i,p){let u=this.cols!==i,c=this.rows!==p;this.cols=i,this.rows=p,this.buffers.resize(i,p),this._onResize.fire({cols:i,rows:p,colsChanged:u,rowsChanged:c})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(i,p=!1){let u=this.buffer,c;c=this._cachedBlankLine,c&&c.length===this.cols&&c.getFg(0)===i.fg&&c.getBg(0)===i.bg||(c=u.getBlankLine(i,p),this._cachedBlankLine=c),c.isWrapped=p;let f=u.ybase+u.scrollTop,k=u.ybase+u.scrollBottom;if(u.scrollTop===0){let S=u.lines.isFull;k===u.lines.length-1?S?u.lines.recycle().copyFrom(c):u.lines.push(c.clone()):u.lines.splice(k+1,0,c.clone()),S?this.isUserScrolling&&(u.ydisp=Math.max(u.ydisp-1,0)):(u.ybase++,this.isUserScrolling||u.ydisp++)}else{let S=k-f+1;u.lines.shiftElements(f+1,S-1,-1),u.lines.set(k,c.clone())}this.isUserScrolling||(u.ydisp=u.ybase),this._onScroll.fire(u.ydisp)}scrollLines(i,p){let u=this.buffer;if(i<0){if(u.ydisp===0)return;this.isUserScrolling=!0}else i+u.ydisp>=u.ybase&&(this.isUserScrolling=!1);let c=u.ydisp;u.ydisp=Math.max(Math.min(u.ydisp+i,u.ybase),0),c!==u.ydisp&&(p||this._onScroll.fire(u.ydisp))}};n.BufferService=_,n.BufferService=_=h([b(0,l.IOptionsService)],_)},5746:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CharsetService=void 0,n.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(d){this.glevel=d,this.charset=this._charsets[d]}setgCharset(d,h){this._charsets[d]=h,this.glevel===d&&(this.charset=h)}}},7792:function(y,n,d){var h=this&&this.__decorate||function(c,f,k,S){var P,E=arguments.length,j=E<3?f:S===null?S=Object.getOwnPropertyDescriptor(f,k):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")j=Reflect.decorate(c,f,k,S);else for(var $=c.length-1;$>=0;$--)(P=c[$])&&(j=(E<3?P(j):E>3?P(f,k,j):P(f,k))||j);return E>3&&j&&Object.defineProperty(f,k,j),j},b=this&&this.__param||function(c,f){return function(k,S){f(k,S,c)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreMouseService=void 0;let a=d(6501),w=d(7150),l=d(802),g={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:c=>c.button!==4&&c.action===1&&(c.ctrl=!1,c.alt=!1,c.shift=!1,!0)},VT200:{events:19,restrict:c=>c.action!==32},DRAG:{events:23,restrict:c=>c.action!==32||c.button!==3},ANY:{events:31,restrict:c=>!0}};function _(c,f){let k=(c.ctrl?16:0)|(c.shift?4:0)|(c.alt?8:0);return c.button===4?(k|=64,k|=c.action):(k|=3&c.button,4&c.button&&(k|=64),8&c.button&&(k|=128),c.action===32?k|=32:c.action!==0||f||(k|=3)),k}let i=String.fromCharCode,p={DEFAULT:c=>{let f=[_(c,!1)+32,c.col+32,c.row+32];return f[0]>255||f[1]>255||f[2]>255?"":`\x1B[M${i(f[0])}${i(f[1])}${i(f[2])}`},SGR:c=>{let f=c.action===0&&c.button!==4?"m":"M";return`\x1B[<${_(c,!0)};${c.col};${c.row}${f}`},SGR_PIXELS:c=>{let f=c.action===0&&c.button!==4?"m":"M";return`\x1B[<${_(c,!0)};${c.x};${c.y}${f}`}},u=class extends w.Disposable{constructor(c,f,k){super(),this._bufferService=c,this._coreService=f,this._optionsService=k,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(g))this.addProtocol(S,g[S]);for(let S of Object.keys(p))this.addEncoding(S,p[S]);this.reset()}addProtocol(c,f){this._protocols[c]=f}addEncoding(c,f){this._encodings[c]=f}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(c){if(!this._protocols[c])throw new Error(`unknown protocol "${c}"`);this._activeProtocol=c,this._onProtocolChange.fire(this._protocols[c].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(c){if(!this._encodings[c])throw new Error(`unknown encoding "${c}"`);this._activeEncoding=c}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(c,f,k){if(c.deltaY===0||c.shiftKey||f===void 0||k===void 0)return 0;let S=f/k,P=this._applyScrollModifier(c.deltaY,c);return c.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(c.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):c.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(c,f){return f.altKey||f.ctrlKey||f.shiftKey?c*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:c*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(c){if(c.col<0||c.col>=this._bufferService.cols||c.row<0||c.row>=this._bufferService.rows||c.button===4&&c.action===32||c.button===3&&c.action!==32||c.button!==4&&(c.action===2||c.action===3)||(c.col++,c.row++,c.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,c,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(c))return!1;let f=this._encodings[this._activeEncoding](c);return f&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(f):this._coreService.triggerDataEvent(f,!0)),this._lastEvent=c,!0}explainEvents(c){return{down:!!(1&c),up:!!(2&c),drag:!!(4&c),move:!!(8&c),wheel:!!(16&c)}}_equalEvents(c,f,k){if(k){if(c.x!==f.x||c.y!==f.y)return!1}else if(c.col!==f.col||c.row!==f.row)return!1;return c.button===f.button&&c.action===f.action&&c.ctrl===f.ctrl&&c.alt===f.alt&&c.shift===f.shift}};n.CoreMouseService=u,n.CoreMouseService=u=h([b(0,a.IBufferService),b(1,a.ICoreService),b(2,a.IOptionsService)],u)},4071:function(y,n,d){var h=this&&this.__decorate||function(u,c,f,k){var S,P=arguments.length,E=P<3?c:k===null?k=Object.getOwnPropertyDescriptor(c,f):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(u,c,f,k);else for(var j=u.length-1;j>=0;j--)(S=u[j])&&(E=(P<3?S(E):P>3?S(c,f,E):S(c,f))||E);return P>3&&E&&Object.defineProperty(c,f,E),E},b=this&&this.__param||function(u,c){return function(f,k){c(f,k,u)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreService=void 0;let a=d(7453),w=d(7150),l=d(6501),g=d(802),_=Object.freeze({insertMode:!1}),i=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),p=class extends w.Disposable{constructor(u,c,f){super(),this._bufferService=u,this._logService=c,this._optionsService=f,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new g.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new g.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new g.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new g.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}triggerDataEvent(u,c=!1){if(this._optionsService.rawOptions.disableStdin)return;let f=this._bufferService.buffer;c&&this._optionsService.rawOptions.scrollOnUserInput&&f.ybase!==f.ydisp&&this._onRequestScrollToBottom.fire(),c&&this._onUserInput.fire(),this._logService.debug(`sending data "${u}"`),this._logService.trace("sending data (codes)",(()=>u.split("").map((k=>k.charCodeAt(0))))),this._onData.fire(u)}triggerBinaryEvent(u){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${u}"`),this._logService.trace("sending binary (codes)",(()=>u.split("").map((c=>c.charCodeAt(0))))),this._onBinary.fire(u))}};n.CoreService=p,n.CoreService=p=h([b(0,l.IBufferService),b(1,l.ILogService),b(2,l.IOptionsService)],p)},6025:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let h=d(6501),b=d(6201);class a{constructor(...l){this._entries=new Map;for(let[g,_]of l)this.set(g,_)}set(l,g){let _=this._entries.get(l);return this._entries.set(l,g),_}forEach(l){for(let[g,_]of this._entries.entries())l(g,_)}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}n.ServiceCollection=a,n.InstantiationService=class{constructor(){this._services=new a,this._services.set(h.IInstantiationService,this)}setService(w,l){this._services.set(w,l)}getService(w){return this._services.get(w)}createInstance(w,...l){let g=(0,b.getServiceDependencies)(w).sort(((p,u)=>p.index-u.index)),_=[];for(let p of g){let u=this._services.get(p.id);if(!u)throw new Error(`[createInstance] ${w.name} depends on UNKNOWN service ${p.id._id}.`);_.push(u)}let i=g.length>0?g[0].index:l.length;if(l.length!==i)throw new Error(`[createInstance] First service dependency of ${w.name} at position ${i+1} conflicts with ${l.length} static arguments`);return new w(...l,..._)}}},7276:function(y,n,d){var h=this&&this.__decorate||function(i,p,u,c){var f,k=arguments.length,S=k<3?p:c===null?c=Object.getOwnPropertyDescriptor(p,u):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,u,c);else for(var P=i.length-1;P>=0;P--)(f=i[P])&&(S=(k<3?f(S):k>3?f(p,u,S):f(p,u))||S);return k>3&&S&&Object.defineProperty(p,u,S),S},b=this&&this.__param||function(i,p){return function(u,c){p(u,c,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.LogService=void 0,n.setTraceLogger=function(i){g=i},n.traceCall=function(i,p,u){if(typeof u.value!="function")throw new Error("not supported");let c=u.value;u.value=function(...f){if(g.logLevel!==w.LogLevelEnum.TRACE)return c.apply(this,f);g.trace(`GlyphRenderer#${c.name}(${f.map((S=>JSON.stringify(S))).join(", ")})`);let k=c.apply(this,f);return g.trace(`GlyphRenderer#${c.name} return`,k),k}};let a=d(7150),w=d(6501),l={trace:w.LogLevelEnum.TRACE,debug:w.LogLevelEnum.DEBUG,info:w.LogLevelEnum.INFO,warn:w.LogLevelEnum.WARN,error:w.LogLevelEnum.ERROR,off:w.LogLevelEnum.OFF},g,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(i){super(),this._optionsService=i,this._logLevel=w.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),g=this}_updateLogLevel(){this._logLevel=l[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(i){for(let p=0;p<i.length;p++)typeof i[p]=="function"&&(i[p]=i[p]())}_log(i,p,u){this._evalLazyOptionalParams(u),i.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+p,...u)}trace(i,...p){this._logLevel<=w.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,i,p)}debug(i,...p){this._logLevel<=w.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,i,p)}info(i,...p){this._logLevel<=w.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,i,p)}warn(i,...p){this._logLevel<=w.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,i,p)}error(i,...p){this._logLevel<=w.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,i,p)}};n.LogService=_,n.LogService=_=h([b(0,w.IOptionsService)],_)},56:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let h=d(7150),b=d(701),a=d(802);n.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:b.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let w=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends h.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let i={...n.DEFAULT_OPTIONS};for(let p in _)if(p in i)try{let u=_[p];i[p]=this._sanitizeAndValidateOption(p,u)}catch(u){console.error(u)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register((0,h.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,i){return this.onOptionChange((p=>{p===_&&i(this.rawOptions[_])}))}onMultipleOptionChange(_,i){return this.onOptionChange((p=>{_.indexOf(p)!==-1&&i()}))}_setupOptions(){let _=p=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);return this.rawOptions[p]},i=(p,u)=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);u=this._sanitizeAndValidateOption(p,u),this.rawOptions[p]!==u&&(this.rawOptions[p]=u,this._onOptionChange.fire(p))};for(let p in this.rawOptions){let u={get:_.bind(this,p),set:i.bind(this,p)};Object.defineProperty(this.options,p,u)}}_sanitizeAndValidateOption(_,i){switch(_){case"cursorStyle":if(i||(i=n.DEFAULT_OPTIONS[_]),!(function(p){return p==="block"||p==="underline"||p==="bar"})(i))throw new Error(`"${i}" is not a valid value for ${_}`);break;case"wordSeparator":i||(i=n.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=w.includes(i)?i:n.DEFAULT_OPTIONS[_];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${_} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${_} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{}}return i}}n.OptionsService=l},8811:function(y,n,d){var h=this&&this.__decorate||function(l,g,_,i){var p,u=arguments.length,c=u<3?g:i===null?i=Object.getOwnPropertyDescriptor(g,_):i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(l,g,_,i);else for(var f=l.length-1;f>=0;f--)(p=l[f])&&(c=(u<3?p(c):u>3?p(g,_,c):p(g,_))||c);return u>3&&c&&Object.defineProperty(g,_,c),c},b=this&&this.__param||function(l,g){return function(_,i){g(_,i,l)}};Object.defineProperty(n,"__esModule",{value:!0}),n.OscLinkService=void 0;let a=d(6501),w=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){let g=this._bufferService.buffer;if(l.id===void 0){let f=g.addMarker(g.ybase+g.y),k={data:l,id:this._nextId++,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(k,f))),this._dataByLinkId.set(k.id,k),k.id}let _=l,i=this._getEntryIdKey(_),p=this._entriesWithId.get(i);if(p)return this.addLineToLink(p.id,g.ybase+g.y),p.id;let u=g.addMarker(g.ybase+g.y),c={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[u]};return u.onDispose((()=>this._removeMarkerFromLink(c,u))),this._entriesWithId.set(c.key,c),this._dataByLinkId.set(c.id,c),c.id}addLineToLink(l,g){let _=this._dataByLinkId.get(l);if(_&&_.lines.every((i=>i.line!==g))){let i=this._bufferService.buffer.addMarker(g);_.lines.push(i),i.onDispose((()=>this._removeMarkerFromLink(_,i)))}}getLinkData(l){return this._dataByLinkId.get(l)?.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,g){let _=l.lines.indexOf(g);_!==-1&&(l.lines.splice(_,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};n.OscLinkService=w,n.OscLinkService=w=h([b(0,a.IBufferService)],w)},6201:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(b){return b[h]||[]},n.createDecorator=function(b){if(n.serviceRegistry.has(b))return n.serviceRegistry.get(b);let a=function(w,l,g){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,i,p){i[d]===i?i[h].push({id:_,index:p}):(i[h]=[{id:_,index:p}],i[d]=i)})(a,w,g)};return a._id=b,n.serviceRegistry.set(b,a),a};let d="di$target",h="di$dependencies";n.serviceRegistry=new Map},6501:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.IDecorationService=n.IUnicodeService=n.IOscLinkService=n.IOptionsService=n.ILogService=n.LogLevelEnum=n.IInstantiationService=n.ICharsetService=n.ICoreService=n.ICoreMouseService=n.IBufferService=void 0;let h=d(6201);var b;n.IBufferService=(0,h.createDecorator)("BufferService"),n.ICoreMouseService=(0,h.createDecorator)("CoreMouseService"),n.ICoreService=(0,h.createDecorator)("CoreService"),n.ICharsetService=(0,h.createDecorator)("CharsetService"),n.IInstantiationService=(0,h.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(b||(n.LogLevelEnum=b={})),n.ILogService=(0,h.createDecorator)("LogService"),n.IOptionsService=(0,h.createDecorator)("OptionsService"),n.IOscLinkService=(0,h.createDecorator)("OscLinkService"),n.IUnicodeService=(0,h.createDecorator)("UnicodeService"),n.IDecorationService=(0,h.createDecorator)("DecorationService")},6415:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let h=d(7428),b=d(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,g,_=!1){return(16777215&l)<<3|(3&g)<<1|(_?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new b.Emitter,this.onChange=this._onChange.event;let l=new h.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let g=0,_=0,i=l.length;for(let p=0;p<i;++p){let u=l.charCodeAt(p);if(55296<=u&&u<=56319){if(++p>=i)return g+this.wcwidth(u);let k=l.charCodeAt(p);56320<=k&&k<=57343?u=1024*(u-55296)+k-56320+65536:g+=this.wcwidth(k)}let c=this.charProperties(u,_),f=a.extractWidth(c);a.extractShouldJoin(c)&&(f-=a.extractWidth(_)),g+=f,_=c}return g}charProperties(l,g){return this._activeProvider.charProperties(l,g)}}n.UnicodeService=a},5856:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Terminal=void 0;let h=d(6107),b=d(5777),a=d(802);class w extends b.CoreTerminal{constructor(g={}){super(g),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(g){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+g)}bell(){this._onBell.fire()}input(g,_=!0){this.coreService.triggerDataEvent(g,_)}resize(g,_){g===this.cols&&_===this.rows||super.resize(g,_)}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 g=1;g<this.rows;g++)this.buffer.lines.push(this.buffer.getBlankLine(h.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}n.Terminal=w},3058:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Permutation=n.CallbackIterable=n.ArrayQueue=n.booleanComparator=n.numberComparator=n.CompareResult=void 0,n.tail=function(f,k=0){return f[f.length-(1+k)]},n.tail2=function(f){if(f.length===0)throw new Error("Invalid tail call");return[f.slice(0,f.length-1),f[f.length-1]]},n.equals=function(f,k,S=(P,E)=>P===E){if(f===k)return!0;if(!f||!k||f.length!==k.length)return!1;for(let P=0,E=f.length;P<E;P++)if(!S(f[P],k[P]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(f,k){let S=f.length-1;k<S&&(f[k]=f[S]),f.pop()},n.binarySearch=function(f,k,S){return a(f.length,(P=>S(f[P],k)))},n.binarySearch2=a,n.quickSelect=function f(k,S,P){if((k|=0)>=S.length)throw new TypeError("invalid index");let E=S[Math.floor(S.length*Math.random())],j=[],$=[],D=[];for(let x of S){let A=P(x,E);A<0?j.push(x):A>0?$.push(x):D.push(x)}return k<j.length?f(k,j,P):k<j.length+D.length?D[0]:f(k-(j.length+D.length),$,P)},n.groupBy=function(f,k){let S=[],P;for(let E of f.slice(0).sort(k))P&&k(P[0],E)===0?P.push(E):(P=[E],S.push(P));return S},n.groupAdjacentBy=function*(f,k){let S,P;for(let E of f)P!==void 0&&k(P,E)?S.push(E):(S&&(yield S),S=[E]),P=E;S&&(yield S)},n.forEachAdjacent=function(f,k){for(let S=0;S<=f.length;S++)k(S===0?void 0:f[S-1],S===f.length?void 0:f[S])},n.forEachWithNeighbors=function(f,k){for(let S=0;S<f.length;S++)k(S===0?void 0:f[S-1],f[S],S+1===f.length?void 0:f[S+1])},n.sortedDiff=w,n.delta=function(f,k,S){let P=w(f,k,S),E=[],j=[];for(let $ of P)E.push(...f.slice($.start,$.start+$.deleteCount)),j.push(...$.toInsert);return{removed:E,added:j}},n.top=function(f,k,S){if(S===0)return[];let P=f.slice(0,S).sort(k);return l(f,k,P,S,f.length),P},n.topAsync=function(f,k,S,P,E){return S===0?Promise.resolve([]):new Promise(((j,$)=>{(async()=>{let D=f.length,x=f.slice(0,S).sort(k);for(let A=S,L=Math.min(S+P,D);A<D;A=L,L=Math.min(L+P,D)){if(A>S&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new h.CancellationError;l(f,k,x,A,L)}return x})().then(j,$)}))},n.coalesce=function(f){return f.filter((k=>!!k))},n.coalesceInPlace=function(f){let k=0;for(let S=0;S<f.length;S++)f[S]&&(f[k]=f[S],k+=1);f.length=k},n.move=function(f,k,S){f.splice(S,0,f.splice(k,1)[0])},n.isFalsyOrEmpty=function(f){return!Array.isArray(f)||f.length===0},n.isNonEmptyArray=function(f){return Array.isArray(f)&&f.length>0},n.distinct=function(f,k=S=>S){let S=new Set;return f.filter((P=>{let E=k(P);return!S.has(E)&&(S.add(E),!0)}))},n.uniqueFilter=function(f){let k=new Set;return S=>{let P=f(S);return!k.has(P)&&(k.add(P),!0)}},n.firstOrDefault=function(f,k){return f.length>0?f[0]:k},n.lastOrDefault=function(f,k){return f.length>0?f[f.length-1]:k},n.commonPrefixLength=function(f,k,S=(P,E)=>P===E){let P=0;for(let E=0,j=Math.min(f.length,k.length);E<j&&S(f[E],k[E]);E++)P++;return P},n.range=function(f,k){let S=typeof k=="number"?f:0;typeof k=="number"?S=f:(S=0,k=f);let P=[];if(S<=k)for(let E=S;E<k;E++)P.push(E);else for(let E=S;E>k;E--)P.push(E);return P},n.index=function(f,k,S){return f.reduce(((P,E)=>(P[k(E)]=S?S(E):E,P)),Object.create(null))},n.insert=function(f,k){return f.push(k),()=>g(f,k)},n.remove=g,n.arrayInsert=function(f,k,S){let P=f.slice(0,k),E=f.slice(k);return P.concat(S,E)},n.shuffle=function(f,k){let S;if(typeof k=="number"){let P=k;S=()=>{let E=179426549*Math.sin(P++);return E-Math.floor(E)}}else S=Math.random;for(let P=f.length-1;P>0;P-=1){let E=Math.floor(S()*(P+1)),j=f[P];f[P]=f[E],f[E]=j}},n.pushToStart=function(f,k){let S=f.indexOf(k);S>-1&&(f.splice(S,1),f.unshift(k))},n.pushToEnd=function(f,k){let S=f.indexOf(k);S>-1&&(f.splice(S,1),f.push(k))},n.pushMany=function(f,k){for(let S of k)f.push(S)},n.mapArrayOrNot=function(f,k){return Array.isArray(f)?f.map(k):k(f)},n.asArray=function(f){return Array.isArray(f)?f:[f]},n.getRandomElement=function(f){return f[Math.floor(Math.random()*f.length)]},n.insertInto=_,n.splice=function(f,k,S,P){let E=i(f,k),j=f.splice(E,S);return j===void 0&&(j=[]),_(f,E,P),j},n.compareBy=function(f,k){return(S,P)=>k(f(S),f(P))},n.tieBreakComparators=function(...f){return(k,S)=>{for(let P of f){let E=P(k,S);if(!p.isNeitherLessOrGreaterThan(E))return E}return p.neitherLessOrGreaterThan}},n.reverseOrder=function(f){return(k,S)=>-f(k,S)};let h=d(9807),b=d(8297);function a(f,k){let S=0,P=f-1;for(;S<=P;){let E=(S+P)/2|0,j=k(E);if(j<0)S=E+1;else{if(!(j>0))return E;P=E-1}}return-(S+1)}function w(f,k,S){let P=[];function E(D,x,A){if(x===0&&A.length===0)return;let L=P[P.length-1];L&&L.start+L.deleteCount===D?(L.deleteCount+=x,L.toInsert.push(...A)):P.push({start:D,deleteCount:x,toInsert:A})}let j=0,$=0;for(;;){if(j===f.length){E(j,0,k.slice($));break}if($===k.length){E(j,f.length-j,[]);break}let D=f[j],x=k[$],A=S(D,x);A===0?(j+=1,$+=1):A<0?(E(j,1,[]),j+=1):A>0&&(E(j,0,[x]),$+=1)}return P}function l(f,k,S,P,E){for(let j=S.length;P<E;P++){let $=f[P];if(k($,S[j-1])<0){S.pop();let D=(0,b.findFirstIdxMonotonousOrArrLen)(S,(x=>k($,x)<0));S.splice(D,0,$)}}}function g(f,k){let S=f.indexOf(k);if(S>-1)return f.splice(S,1),k}function _(f,k,S){let P=i(f,k),E=f.length,j=S.length;f.length=E+j;for(let $=E-1;$>=P;$--)f[$+j]=f[$];for(let $=0;$<j;$++)f[$+P]=S[$]}function i(f,k){return k<0?Math.max(k+f.length,0):Math.min(k,f.length)}var p;(function(f){f.isLessThan=function(k){return k<0},f.isLessThanOrEqual=function(k){return k<=0},f.isGreaterThan=function(k){return k>0},f.isNeitherLessOrGreaterThan=function(k){return k===0},f.greaterThan=1,f.lessThan=-1,f.neitherLessOrGreaterThan=0})(p||(n.CompareResult=p={})),n.numberComparator=(f,k)=>f-k,n.booleanComparator=(f,k)=>(0,n.numberComparator)(f?1:0,k?1:0),n.ArrayQueue=class{constructor(f){this.items=f,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(f){let k=this.firstIdx;for(;k<this.items.length&&f(this.items[k]);)k++;let S=k===this.firstIdx?null:this.items.slice(this.firstIdx,k);return this.firstIdx=k,S}takeFromEndWhile(f){let k=this.lastIdx;for(;k>=0&&f(this.items[k]);)k--;let S=k===this.lastIdx?null:this.items.slice(k+1,this.lastIdx+1);return this.lastIdx=k,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let f=this.items[this.firstIdx];return this.firstIdx++,f}removeLast(){let f=this.items[this.lastIdx];return this.lastIdx--,f}takeCount(f){let k=this.items.slice(this.firstIdx,this.firstIdx+f);return this.firstIdx+=f,k}};class u{static{this.empty=new u((k=>{}))}constructor(k){this.iterate=k}forEach(k){this.iterate((S=>(k(S),!0)))}toArray(){let k=[];return this.iterate((S=>(k.push(S),!0))),k}filter(k){return new u((S=>this.iterate((P=>!k(P)||S(P)))))}map(k){return new u((S=>this.iterate((P=>S(k(P))))))}some(k){let S=!1;return this.iterate((P=>(S=k(P),!S))),S}findFirst(k){let S;return this.iterate((P=>!k(P)||(S=P,!1))),S}findLast(k){let S;return this.iterate((P=>(k(P)&&(S=P),!0))),S}findLastMaxBy(k){let S,P=!0;return this.iterate((E=>((P||p.isGreaterThan(k(E,S)))&&(P=!1,S=E),!0))),S}}n.CallbackIterable=u;class c{constructor(k){this._indexMap=k}static createSortPermutation(k,S){let P=Array.from(k.keys()).sort(((E,j)=>S(k[E],k[j])));return new c(P)}apply(k){return k.map(((S,P)=>k[this._indexMap[P]]))}inverse(){let k=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)k[this._indexMap[S]]=S;return new c(k)}}n.Permutation=c},8297:(y,n)=>{function d(l,g,_=l.length-1){for(let i=_;i>=0;i--)if(g(l[i]))return i;return-1}function h(l,g,_=0,i=l.length){let p=_,u=i;for(;p<u;){let c=Math.floor((p+u)/2);g(l[c])?p=c+1:u=c}return p-1}function b(l,g,_=0,i=l.length){let p=_,u=i;for(;p<u;){let c=Math.floor((p+u)/2);g(l[c])?u=c:p=c+1}return p}Object.defineProperty(n,"__esModule",{value:!0}),n.MonotonousArray=void 0,n.findLast=function(l,g){let _=d(l,g);if(_!==-1)return l[_]},n.findLastIdx=d,n.findLastMonotonous=function(l,g){let _=h(l,g);return _===-1?void 0:l[_]},n.findLastIdxMonotonous=h,n.findFirstMonotonous=function(l,g){let _=b(l,g);return _===l.length?void 0:l[_]},n.findFirstIdxMonotonousOrArrLen=b,n.findFirstIdxMonotonous=function(l,g,_=0,i=l.length){let p=b(l,g,_,i);return p===l.length?-1:p},n.findFirstMax=w,n.findLastMax=function(l,g){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];g(p,_)>=0&&(_=p)}return _},n.findFirstMin=function(l,g){return w(l,((_,i)=>-g(_,i)))},n.findMaxIdx=function(l,g){if(l.length===0)return-1;let _=0;for(let i=1;i<l.length;i++)g(l[i],l[_])>0&&(_=i);return _},n.mapFindFirst=function(l,g){for(let _ of l){let i=g(_);if(i!==void 0)return i}};class a{static{this.assertInvariants=!1}constructor(g){this._array=g,this._findLastMonotonousLastIdx=0}findLastMonotonous(g){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let i of this._array)if(this._prevFindLastPredicate(i)&&!g(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=g}let _=h(this._array,g,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function w(l,g){if(l.length===0)return;let _=l[0];for(let i=1;i<l.length;i++){let p=l[i];g(p,_)>0&&(_=p)}return _}n.MonotonousArray=a},9087:(y,n)=>{var d;Object.defineProperty(n,"__esModule",{value:!0}),n.SetWithKey=void 0,n.groupBy=function(b,a){let w=Object.create(null);for(let l of b){let g=a(l),_=w[g];_||(_=w[g]=[]),_.push(l)}return w},n.diffSets=function(b,a){let w=[],l=[];for(let g of b)a.has(g)||w.push(g);for(let g of a)b.has(g)||l.push(g);return{removed:w,added:l}},n.diffMaps=function(b,a){let w=[],l=[];for(let[g,_]of b)a.has(g)||w.push(_);for(let[g,_]of a)b.has(g)||l.push(_);return{removed:w,added:l}},n.intersection=function(b,a){let w=new Set;for(let l of a)b.has(l)&&w.add(l);return w};class h{static{d=Symbol.toStringTag}constructor(a,w){this.toKey=w,this._map=new Map,this[d]="SetWithKey";for(let l of a)this.add(l)}get size(){return this._map.size}add(a){let w=this.toKey(a);return this._map.set(w,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,w){this._map.forEach((l=>a.call(w,l,l,this)))}[Symbol.iterator](){return this.values()}}n.SetWithKey=h},9807:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.ExpectedError=n.NotSupportedError=n.NotImplementedError=n.ReadonlyError=n.CancellationError=n.errorHandler=n.ErrorHandler=void 0,n.setUnexpectedErrorHandler=function(u){n.errorHandler.setUnexpectedErrorHandler(u)},n.isSigPipeError=function(u){if(!u||typeof u!="object")return!1;let c=u;return c.code==="EPIPE"&&c.syscall?.toUpperCase()==="WRITE"},n.onUnexpectedError=function(u){b(u)||n.errorHandler.onUnexpectedError(u)},n.onUnexpectedExternalError=function(u){b(u)||n.errorHandler.onUnexpectedExternalError(u)},n.transformErrorForSerialization=function(u){if(u instanceof Error){let{name:c,message:f}=u;return{$isError:!0,name:c,message:f,stack:u.stacktrace||u.stack,noTelemetry:i.isErrorNoTelemetry(u)}}return u},n.transformErrorFromSerialization=function(u){let c;return u.noTelemetry?c=new i:(c=new Error,c.name=u.name),c.message=u.message,c.stack=u.stack,c},n.isCancellationError=b,n.canceled=function(){let u=new Error(h);return u.name=u.message,u},n.illegalArgument=function(u){return u?new Error(`Illegal argument: ${u}`):new Error("Illegal argument")},n.illegalState=function(u){return u?new Error(`Illegal state: ${u}`):new Error("Illegal state")},n.getErrorMessage=function(u){return u?u.message?u.message:u.stack?u.stack.split(`
5
- `)[0]:String(u):"Error"};class d{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(c){setTimeout((()=>{throw c.stack?i.isErrorNoTelemetry(c)?new i(c.message+`
2
+ var ca=Object.create;var Lr=Object.defineProperty;var la=Object.getOwnPropertyDescriptor;var da=Object.getOwnPropertyNames;var ua=Object.getPrototypeOf,ha=Object.prototype.hasOwnProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var fa=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pa=(e,t)=>{for(var r in t)Lr(e,r,{get:t[r],enumerable:!0})},ga=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of da(t))!ha.call(e,o)&&o!==r&&Lr(e,o,{get:()=>t[o],enumerable:!(s=la(t,o))||s.enumerable});return e};var ma=(e,t,r)=>(r=e!=null?ca(ua(e)):{},ga(t||!e||!e.__esModule?Lr(r,"default",{value:e,enumerable:!0}):r,e));function be(e){return _a[e]}function Mr(e,t={}){let r=be(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function _t(e={}){return ce.filter(t=>e.runners?.[t]?.enabled!==!1)}function it(e={}){let t=_t(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 wt(e){return ce.includes(e)}function Gs(e){if(!e||e.length===0)return"codex";if(!wt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${ce.join(", ")}.`);return e}function Se(e){return be(e).displayName}function me(e,t,r={}){let s=[Mr(e,r).executable];return t&&t.length>0&&s.push(t),s}var ce,_a,Ae=$e(()=>{"use strict";ce=["codex","cursor","claude"],_a={codex:{id:"codex",displayName:"Codex",executable:"codex",defaultAgentTitle:"Codex"},cursor:{id:"cursor",displayName:"Cursor",executable:"cursor-agent",defaultAgentTitle:"Cursor"},claude:{id:"claude",displayName:"Claude",executable:"claude",defaultAgentTitle:"Claude"}}});import{randomUUID as Ta}from"node:crypto";import{open as Ra,readFile as Kh,rename as Ca,rm as Pa}from"node:fs/promises";import Or from"node:path";async function le(e,t){let r=Or.dirname(e),s=Or.join(r,`.${Or.basename(e)}.${process.pid}.${Date.now()}.${Ta()}.tmp`),o=await Ra(s,"w");try{let m=`${JSON.stringify(t,null,2)}
3
+ `;await o.writeFile(m,"utf8"),await o.sync(),await o.close(),await Ca(s,e)}catch(m){throw await o.close().catch(()=>{}),await Pa(s,{force:!0}).catch(()=>{}),m}}var Fe=$e(()=>{"use strict"});import{readFile as Ma}from"node:fs/promises";async function Re(e){let t=await Ma(e.indexFile,"utf8"),r=JSON.parse(t);return $r(r,e.workspaceRoot,e.indexFile)}async function ot(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await le(e.indexFile,r)}function $r(e,t,r){if(!Oa(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 Oa(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.version===2&&typeof t.workspaceRoot=="string"&&Array.isArray(t.repoIds)&&t.repoIds.every(r=>typeof r=="string")&&Array.isArray(t.workspaceIds)&&t.workspaceIds.every(r=>typeof r=="string")&&Array.isArray(t.taskIds)&&t.taskIds.every(r=>typeof r=="string")&&Array.isArray(t.jobIds)&&t.jobIds.every(r=>typeof r=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}var at=$e(()=>{"use strict";Fe()});import{readFile as Ba}from"node:fs/promises";async function Ce(e,t){let r=await Ba(Fr(e,t),"utf8"),s=JSON.parse(r);return $a(s,Fr(e,t))}async function re(e,t){let r={...t,updatedAt:new Date().toISOString()};await le(Fr(e,t.id),r)}async function Wr(e,t){let r=await Re(e);r.taskIds.includes(t)||await ot(e,{...r,taskIds:[...r.taskIds,t]})}function Fr(e,t){return`${e.tasksDir}/${t}.json`}function $a(e,t){let r=Fa(e);if(!Na(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Fa(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Nr(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:Ua(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:ja(t.repoTargets),runnerSession:t.runnerSession??Wa(t),checks:Ga(t),lastCommit:t.lastCommit??null,pullRequest:Xa(t),artifacts:Qa(t),cleanup:Ja(t)}}function Wa(e){if(typeof e.title!="string")return null;let t=Nr(e.runner);return{command:me(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function Na(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"&&wt(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"&&Zs(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||Ha(t.repoTargets))&&Ka(t.runnerSession)&&za(t.prompt)&&ei(t.checks)&&ti(t.lastCommit)&&ri(t.pullRequest)&&Va(t.artifacts)&&si(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function ja(e){if(Array.isArray(e))return e.filter(Js)}function Ha(e){return Array.isArray(e)&&e.every(Js)}function Js(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)&&ei(t.checks)&&ti(t.lastCommit)&&ri(t.pullRequest)&&si(t.cleanup)}function Ua(e){if(Zs(e.ptyTabs))return e.ptyTabs;if(typeof e.id!="string"||typeof e.title!="string")return[];let t=typeof e.updatedAt=="string"?e.updatedAt:new Date().toISOString();return qa(e.id,e.title,t,Nr(e.runner))}function qa(e,t,r,s){let o=be(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Nr(e){return e&&wt(e)?e:"codex"}function Zs(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 Ka(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 za(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function ei(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 ti(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function ri(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&(typeof e.number=="number"||e.number===null)&&(typeof e.url=="string"||e.url===null)&&(typeof e.baseBranch=="string"||e.baseBranch===null)&&(typeof e.headBranch=="string"||e.headBranch===null)&&(e.status==="open"||e.status==="closed"||e.status==="merged"||e.status===null)&&typeof e.mergeable=="boolean"&&(typeof e.mergeStateStatus=="string"||e.mergeStateStatus===null)&&Array.isArray(e.requiredChecks)&&e.requiredChecks.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))&&(typeof e.lastSyncedAt=="string"||e.lastSyncedAt===null)&&(typeof e.lastSyncedHeadSha=="string"||e.lastSyncedHeadSha===null||e.lastSyncedHeadSha===void 0)}function Va(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 si(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 Ga(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 Xa(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:Ya(t.requiredChecks),lastSyncedHeadSha:t.lastSyncedHeadSha??null}:{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function Ya(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 Qa(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Ja(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}var _e=$e(()=>{"use strict";Fe();at();Ae()});import{readFile as Za}from"node:fs/promises";async function De(e){try{let t=await Za(e.uiStateFile,"utf8"),r=JSON.parse(t);return ec(r,e.uiStateFile)}catch(t){if(rc(t))return null;throw t}}async function Pe(e,t){await le(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function We(){return{version:1,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null,selectedPtyTabId:null,inputMode:"control",focusedRegion:"tasks",activeTab:"agent",inspectorSection:"task",inspectionMode:"files",openInspectionKind:null,selectedFileTreePath:null,selectedFilePath:null,selectedDiffPath:null,collapsedFileTreePaths:[],selectedActionId:"commit",updatedAt:new Date().toISOString()}}function ec(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")||!kt(e,"inputMode")||!kt(e,"focusedRegion")||!kt(e,"activeTab")||!kt(e,"inspectorSection")||!kt(e,"inspectionMode")||!Gt(e,"openInspectionKind")||!Gt(e,"selectedFileTreePath")||!Gt(e,"selectedFilePath")||!Gt(e,"selectedDiffPath")||!tc(e,"collapsedFileTreePaths")||!kt(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 kt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function Gt(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function tc(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function rc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var bt=$e(()=>{"use strict";Fe()});import{execFile as sc}from"node:child_process";import{promisify as ic}from"node:util";async function Q(e,t,r={}){try{let s=await ii(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(ni(s)){let o=s.stderr?.trim()||s.stdout?.trim()||s.message;throw new Error(`${e} ${t.join(" ")} failed: ${o}`)}throw s}}async function ae(e,t,r={}){try{let s=await ii(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(ni(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function ni(e){return e instanceof Error}var ii,Ie=$e(()=>{"use strict";ii=ic(sc)});import{readFile as yc,readdir as vc,rm as Sc}from"node:fs/promises";import mi from"node:path";async function Le(e,t){let r=await yc(Qt(e,t),"utf8"),s=JSON.parse(r);return Tc(s,Qt(e,t))}async function Jt(e,t){await le(Qt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function dt(e){let t=await vc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Le(e,mi.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function _i(e,t){await Sc(Qt(e,t),{force:!0})}function Qt(e,t){return mi.join(e.reposDir,`${t}.json`)}function Tc(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.name!="string"||typeof e.rootPath!="string"||typeof e.defaultBranch!="string"||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig repo record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}var ut=$e(()=>{"use strict";Fe()});import{readFile as Rc,readdir as Cc,rm as Pc}from"node:fs/promises";import wi from"node:path";async function Pt(e,t){let r=await Rc(Zt(e,t),"utf8"),s=JSON.parse(r);return Ic(s,Zt(e,t))}async function yt(e,t){await le(Zt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function Me(e){let t=await Cc(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Pt(e,wi.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function ki(e,t){await Pc(Zt(e,t),{force:!0})}function Zt(e,t){return wi.join(e.workspacesDir,`${t}.json`)}function Ic(e,t){let r=xc(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 xc(e){if(typeof e!="object"||e===null)return e;let t=e,r=t.repoId??t.primaryRepoId;return{...t,kind:t.kind??"repo",name:t.name??r??t.id,rootPath:t.rootPath??"",primaryRepoId:t.primaryRepoId??r??"",repoId:t.kind==="project"?t.repoId:r,discoveredRepoIds:Array.isArray(t.discoveredRepoIds)?t.discoveredRepoIds.filter(s=>typeof s=="string"):t.kind==="project"?[]:r?[r]:[],linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(s=>typeof s=="string"):[]}}var It=$e(()=>{"use strict";Fe()});async function Ne(e,t){let r=await Re(e),s=[],o=[];await Promise.all(r.taskIds.map(async n=>{try{s.push(await Ce(e,n))}catch(l){if(Oc(l)){o.push(n);return}throw l}}));let y=(t?.includeClosed?s:s.filter(n=>n.status!=="closed")).filter(n=>!(t?.workspaceId&&n.workspaceId!==t.workspaceId||t?.repoId&&n.repoId!==t.repoId&&!(n.repoTargets??[]).some(l=>l.repoId===t.repoId)));return y.sort((n,l)=>n.id.localeCompare(l.id)),o.sort(),{kind:"listTasks",tasks:y,missingTaskIds:o,repoId:t?.repoId??null}}function Oc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}var Dt=$e(()=>{"use strict";at();_e()});var nn={};pa(nn,{addWorkspace:()=>Bt,archiveWorkspace:()=>$t,listWorkspaces:()=>as,removeWorkspace:()=>Ft,removeWorkspaceRecord:()=>or,restoreWorkspace:()=>cs});import{readdir as nl,realpath as Qi,stat as ol}from"node:fs/promises";import Je from"node:path";async function Bt(e,t){let r=Je.resolve(e.workspaceRoot,t);if(!(await ol(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await tn(r)?al(e,r):cl(e,r)}async function as(e,t){return{kind:"listWorkspaces",workspaces:(await Me(e)).filter(s=>s.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function $t(e,t){let s={...await Pt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await yt(e,s),await sn(e,t),{kind:"archiveWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function cs(e,t){let s={...await Pt(e,t),status:"active",archivedAt:null};await yt(e,s);let o=await De({uiStateFile:e.uiStateFile})??null;return await Pe({uiStateFile:e.uiStateFile},{...o??We(),selectedWorkspaceId:s.id,selectedRepoId:s.kind==="project"?s.discoveredRepoIds?.[0]??null:s.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:s.id,status:s.status,branch:s.branch}}async function Ft(e,t){let r=await Pt(e,t),s=await Ne(e,{workspaceId:t,includeClosed:!0});if(r.status==="active")throw new Error(`Cannot remove workspace ${t} while it is active. Archive it first.`);if(s.tasks.length>0)throw new Error(`Cannot remove workspace ${t} while task records still reference it.`);return await or(e,t),await sn(e,t),{kind:"removeWorkspace",workspaceId:r.id,rootPath:r.rootPath??""}}async function al(e,t){let r=await rn(t),s=await dt(e),o=s.find(a=>a.rootPath===t)??null,m=o??Ji(s,t,r),y=`workspace_${m.id}`,l=(await Me(e)).find(a=>a.id===y)??null,f=new Date().toISOString(),k=l??{id:y,kind:"repo",name:m.name,rootPath:t,primaryRepoId:m.id,repoId:m.id,discoveredRepoIds:[m.id],branch:r,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:f,updatedAt:f};return o||await Jt(e,m),l||await yt(e,k),await Zi(e,{repoIds:[m.id],workspaceIds:[k.id]}),await en(e,k,m.id),{kind:"createWorkspace",workspace:k,repos:[m],created:!l}}async function cl(e,t){let r=await ll(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=ul(s,Je.basename(t)),m=s.find(f=>f.kind==="project"&&f.rootPath===t)??null,y=new Date().toISOString(),n=r.map(f=>f.id),l=m?{...m,discoveredRepoIds:n,primaryRepoId:n[0]??m.primaryRepoId,status:"active",archivedAt:null}:{id:o,kind:"project",name:Je.basename(t),rootPath:t,primaryRepoId:n[0]??"",discoveredRepoIds:n,branch:"project",status:"active",linkedRepoIds:n,archivedAt:null,createdAt:y,updatedAt:y};return await Promise.all(r.map(f=>Jt(e,f))),await yt(e,l),await Zi(e,{repoIds:n,workspaceIds:[l.id]}),await en(e,l,n[0]??null),{kind:"createWorkspace",workspace:l,repos:r,created:!m}}async function ll(e,t){let r=await nl(t,{withFileTypes:!0}),s=await dt(e),o=[];for(let m of r){if(!m.isDirectory()||m.name.startsWith("."))continue;let y=Je.join(t,m.name);if(!await tn(y))continue;let n=s.find(l=>l.rootPath===y)??o.find(l=>l.rootPath===y);o.push(n??Ji([...s,...o],y,await rn(y)))}return o.sort((m,y)=>m.name.localeCompare(y.name)||m.id.localeCompare(y.id))}function Ji(e,t,r){let s=new Date().toISOString();return{id:dl(e,Je.basename(t)),name:Je.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function dl(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",s=`repo_${r}`,o=2;for(;e.some(m=>m.id===s);)s=`repo_${r}_${o}`,o+=1;return s}function ul(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"workspace",s=`workspace_${r}`,o=2;for(;e.some(m=>m.id===s);)s=`workspace_${r}_${o}`,o+=1;return s}async function Zi(e,t){let r=await Re(e);await ot(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function en(e,t,r){await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function tn(e){try{let r=(await Q("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([Qi(r).catch(()=>Je.resolve(r)),Qi(e).catch(()=>Je.resolve(e))]);return s===o}catch{return!1}}async function rn(e){let r=(await Q("git",["branch","--show-current"],{cwd:e})).stdout.trim();return r.length>0?r:"HEAD"}async function or(e,t){await ki(e,t);let r=await Re(e);await ot(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function sn(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 Wt=$e(()=>{"use strict";at();ut();It();bt();Ie();Dt()});var ao=fa(oo=>{(()=>{"use strict";var e={5639:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let f=l(7150),k=l(802);class a extends f.Disposable{constructor(c){super(),this._maxLength=c,this.onDeleteEmitter=this._register(new k.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new k.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new k.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(c){if(this._maxLength===c)return;let g=new Array(c);for(let _=0;_<Math.min(c,this.length);_++)g[_]=this._array[this._getCyclicIndex(_)];this._array=g,this._maxLength=c,this._startIndex=0}get length(){return this._length}set length(c){if(c>this._length)for(let g=this._length;g<c;g++)this._array[g]=void 0;this._length=c}get(c){return this._array[this._getCyclicIndex(c)]}set(c,g){this._array[this._getCyclicIndex(c)]=g}push(c){this._array[this._getCyclicIndex(this._length)]=c,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(c,g,..._){if(g){for(let i=c;i<this._length-g;i++)this._array[this._getCyclicIndex(i)]=this._array[this._getCyclicIndex(i+g)];this._length-=g,this.onDeleteEmitter.fire({index:c,amount:g})}for(let i=this._length-1;i>=c;i--)this._array[this._getCyclicIndex(i+_.length)]=this._array[this._getCyclicIndex(i)];for(let i=0;i<_.length;i++)this._array[this._getCyclicIndex(c+i)]=_[i];if(_.length&&this.onInsertEmitter.fire({index:c,amount:_.length}),this._length+_.length>this._maxLength){let i=this._length+_.length-this._maxLength;this._startIndex+=i,this._length=this._maxLength,this.onTrimEmitter.fire(i)}else this._length+=_.length}trimStart(c){c>this._length&&(c=this._length),this._startIndex+=c,this._length-=c,this.onTrimEmitter.fire(c)}shiftElements(c,g,_){if(!(g<=0)){if(c<0||c>=this._length)throw new Error("start argument out of range");if(c+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let p=g-1;p>=0;p--)this.set(c+p+_,this.get(c+p));let i=c+g+_-this._length;if(i>0)for(this._length+=i;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let i=0;i<g;i++)this.set(c+i+_,this.get(c+i))}}_getCyclicIndex(c){return(this._startIndex+c)%this._maxLength}}n.CircularList=a},7453:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.clone=function l(f,k=5){if(typeof f!="object")return f;let a=Array.isArray(f)?[]:{};for(let w in f)a[w]=k<=1?f[w]:f[w]&&l(f[w],k-1);return a}},5777:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let f=l(6501),k=l(6025),a=l(7276),w=l(9640),c=l(56),g=l(4071),_=l(7792),i=l(6415),p=l(5746),h=l(5882),d=l(2486),u=l(3562),b=l(8811),S=l(802),P=l(7150),E=!1;class H extends P.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new S.Emitter),this._onScroll.event((D=>{this._onScrollApi?.fire(D.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(D){for(let x in D)this.optionsService.options[x]=D[x]}constructor(D){super(),this._windowsWrappingHeuristics=this._register(new P.MutableDisposable),this._onBinary=this._register(new S.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new S.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new S.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new S.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new S.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new S.Emitter),this._instantiationService=new k.InstantiationService,this.optionsService=this._register(new c.OptionsService(D)),this._instantiationService.setService(f.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(f.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(f.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(g.CoreService)),this._instantiationService.setService(f.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(f.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(i.UnicodeService)),this._instantiationService.setService(f.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(p.CharsetService),this._instantiationService.setService(f.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(b.OscLinkService),this._instantiationService.setService(f.IOscLinkService,this._oscLinkService),this._inputHandler=this._register(new d.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(S.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(S.Event.forward(this._bufferService.onResize,this._onResize)),this._register(S.Event.forward(this.coreService.onData,this._onData)),this._register(S.Event.forward(this.coreService.onBinary,this._onBinary)),this._register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom(!0)))),this._register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this._register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this._register(this._bufferService.onScroll((()=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this._register(new u.WriteBuffer(((x,A)=>this._inputHandler.parse(x,A)))),this._register(S.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(D,x){this._writeBuffer.write(D,x)}writeSync(D,x){this._logService.logLevel<=f.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(D,x)}input(D,x=!0){this.coreService.triggerDataEvent(D,x)}resize(D,x){isNaN(D)||isNaN(x)||(D=Math.max(D,w.MINIMUM_COLS),x=Math.max(x,w.MINIMUM_ROWS),this._bufferService.resize(D,x))}scroll(D,x=!1){this._bufferService.scroll(D,x)}scrollLines(D,x){this._bufferService.scrollLines(D,x)}scrollPages(D){this.scrollLines(D*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(D){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(D){let x=D-this._bufferService.buffer.ydisp;x!==0&&this.scrollLines(x)}registerEscHandler(D,x){return this._inputHandler.registerEscHandler(D,x)}registerDcsHandler(D,x){return this._inputHandler.registerDcsHandler(D,x)}registerCsiHandler(D,x){return this._inputHandler.registerCsiHandler(D,x)}registerOscHandler(D,x){return this._inputHandler.registerOscHandler(D,x)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let D=!1,x=this.optionsService.rawOptions.windowsPty;x&&x.buildNumber!==void 0&&x.buildNumber!==void 0?D=x.backend==="conpty"&&x.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(D=!0),D?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let D=[];D.push(this.onLineFeed(h.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},(()=>((0,h.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,P.toDisposable)((()=>{for(let x of D)x.dispose()}))}}}n.CoreTerminal=H},2486:function(y,n,l){var f=this&&this.__decorate||function(q,v,C,T){var R,F=arguments.length,j=F<3?v:T===null?T=Object.getOwnPropertyDescriptor(v,C):T;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")j=Reflect.decorate(q,v,C,T);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(j=(F<3?R(j):F>3?R(v,C,j):R(v,C))||j);return F>3&&j&&Object.defineProperty(v,C,j),j},k=this&&this.__param||function(q,v){return function(C,T){v(C,T,q)}};Object.defineProperty(n,"__esModule",{value:!0}),n.InputHandler=n.WindowsOptionsReportType=void 0,n.isValidColorIndex=W;let a=l(3534),w=l(6760),c=l(6717),g=l(7150),_=l(726),i=l(6107),p=l(8938),h=l(3055),d=l(5451),u=l(6501),b=l(6415),S=l(1346),P=l(9823),E=l(8693),H=l(802),$={"(":0,")":1,"*":2,"+":3,"-":1,".":2},D=131072;function x(q,v){if(q>24)return v.setWinLines||!1;switch(q){case 1:return!!v.restoreWin;case 2:return!!v.minimizeWin;case 3:return!!v.setWinPosition;case 4:return!!v.setWinSizePixels;case 5:return!!v.raiseWin;case 6:return!!v.lowerWin;case 7:return!!v.refreshWin;case 8:return!!v.setWinSizeChars;case 9:return!!v.maximizeWin;case 10:return!!v.fullscreenWin;case 11:return!!v.getWinState;case 13:return!!v.getWinPosition;case 14:return!!v.getWinSizePixels;case 15:return!!v.getScreenSizePixels;case 16:return!!v.getCellSizePixels;case 18:return!!v.getWinSizeChars;case 19:return!!v.getScreenSizeChars;case 20:return!!v.getIconTitle;case 21:return!!v.getWinTitle;case 22:return!!v.pushTitle;case 23:return!!v.popTitle;case 24:return!!v.setWinLines}return!1}var A;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(A||(n.WindowsOptionsReportType=A={}));let L=0;class z extends g.Disposable{getAttrData(){return this._curAttrData}constructor(v,C,T,R,F,j,U,V,te=new c.EscapeSequenceParser){super(),this._bufferService=v,this._charsetService=C,this._coreService=T,this._logService=R,this._optionsService=F,this._oscLinkService=j,this._coreMouseService=U,this._unicodeService=V,this._parser=te,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new H.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new H.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new H.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new H.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new H.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new H.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new H.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new H.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new H.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new H.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new H.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new H.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new H.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new X(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((I=>this._activeBuffer=I.activeBuffer))),this._parser.setCsiHandlerFallback(((I,J)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(I),params:J.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,J,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:I,action:J,data:Y})})),this._parser.setDcsHandlerFallback(((I,J,Y)=>{J==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(I),action:J,payload:Y})})),this._parser.setPrintHandler(((I,J,Y)=>this.print(I,J,Y))),this._parser.registerCsiHandler({final:"@"},(I=>this.insertChars(I))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(I=>this.scrollLeft(I))),this._parser.registerCsiHandler({final:"A"},(I=>this.cursorUp(I))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(I=>this.scrollRight(I))),this._parser.registerCsiHandler({final:"B"},(I=>this.cursorDown(I))),this._parser.registerCsiHandler({final:"C"},(I=>this.cursorForward(I))),this._parser.registerCsiHandler({final:"D"},(I=>this.cursorBackward(I))),this._parser.registerCsiHandler({final:"E"},(I=>this.cursorNextLine(I))),this._parser.registerCsiHandler({final:"F"},(I=>this.cursorPrecedingLine(I))),this._parser.registerCsiHandler({final:"G"},(I=>this.cursorCharAbsolute(I))),this._parser.registerCsiHandler({final:"H"},(I=>this.cursorPosition(I))),this._parser.registerCsiHandler({final:"I"},(I=>this.cursorForwardTab(I))),this._parser.registerCsiHandler({final:"J"},(I=>this.eraseInDisplay(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(I=>this.eraseInDisplay(I,!0))),this._parser.registerCsiHandler({final:"K"},(I=>this.eraseInLine(I,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(I=>this.eraseInLine(I,!0))),this._parser.registerCsiHandler({final:"L"},(I=>this.insertLines(I))),this._parser.registerCsiHandler({final:"M"},(I=>this.deleteLines(I))),this._parser.registerCsiHandler({final:"P"},(I=>this.deleteChars(I))),this._parser.registerCsiHandler({final:"S"},(I=>this.scrollUp(I))),this._parser.registerCsiHandler({final:"T"},(I=>this.scrollDown(I))),this._parser.registerCsiHandler({final:"X"},(I=>this.eraseChars(I))),this._parser.registerCsiHandler({final:"Z"},(I=>this.cursorBackwardTab(I))),this._parser.registerCsiHandler({final:"`"},(I=>this.charPosAbsolute(I))),this._parser.registerCsiHandler({final:"a"},(I=>this.hPositionRelative(I))),this._parser.registerCsiHandler({final:"b"},(I=>this.repeatPrecedingCharacter(I))),this._parser.registerCsiHandler({final:"c"},(I=>this.sendDeviceAttributesPrimary(I))),this._parser.registerCsiHandler({prefix:">",final:"c"},(I=>this.sendDeviceAttributesSecondary(I))),this._parser.registerCsiHandler({final:"d"},(I=>this.linePosAbsolute(I))),this._parser.registerCsiHandler({final:"e"},(I=>this.vPositionRelative(I))),this._parser.registerCsiHandler({final:"f"},(I=>this.hVPosition(I))),this._parser.registerCsiHandler({final:"g"},(I=>this.tabClear(I))),this._parser.registerCsiHandler({final:"h"},(I=>this.setMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(I=>this.setModePrivate(I))),this._parser.registerCsiHandler({final:"l"},(I=>this.resetMode(I))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(I=>this.resetModePrivate(I))),this._parser.registerCsiHandler({final:"m"},(I=>this.charAttributes(I))),this._parser.registerCsiHandler({final:"n"},(I=>this.deviceStatus(I))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(I=>this.deviceStatusPrivate(I))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(I=>this.softReset(I))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(I=>this.setCursorStyle(I))),this._parser.registerCsiHandler({final:"r"},(I=>this.setScrollRegion(I))),this._parser.registerCsiHandler({final:"s"},(I=>this.saveCursor(I))),this._parser.registerCsiHandler({final:"t"},(I=>this.windowOptions(I))),this._parser.registerCsiHandler({final:"u"},(I=>this.restoreCursor(I))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(I=>this.insertColumns(I))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(I=>this.deleteColumns(I))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(I=>this.selectProtected(I))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(I=>this.requestMode(I,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(I=>this.requestMode(I,!1))),this._parser.setExecuteHandler(a.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(a.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(a.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(a.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(a.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(a.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(a.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(a.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(a.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(a.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new S.OscHandler((I=>(this.setTitle(I),this.setIconName(I),!0)))),this._parser.registerOscHandler(1,new S.OscHandler((I=>this.setIconName(I)))),this._parser.registerOscHandler(2,new S.OscHandler((I=>this.setTitle(I)))),this._parser.registerOscHandler(4,new S.OscHandler((I=>this.setOrReportIndexedColor(I)))),this._parser.registerOscHandler(8,new S.OscHandler((I=>this.setHyperlink(I)))),this._parser.registerOscHandler(10,new S.OscHandler((I=>this.setOrReportFgColor(I)))),this._parser.registerOscHandler(11,new S.OscHandler((I=>this.setOrReportBgColor(I)))),this._parser.registerOscHandler(12,new S.OscHandler((I=>this.setOrReportCursorColor(I)))),this._parser.registerOscHandler(104,new S.OscHandler((I=>this.restoreIndexedColor(I)))),this._parser.registerOscHandler(110,new S.OscHandler((I=>this.restoreFgColor(I)))),this._parser.registerOscHandler(111,new S.OscHandler((I=>this.restoreBgColor(I)))),this._parser.registerOscHandler(112,new S.OscHandler((I=>this.restoreCursorColor(I)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(let I in w.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:I},(()=>this.selectCharset("("+I))),this._parser.registerEscHandler({intermediates:")",final:I},(()=>this.selectCharset(")"+I))),this._parser.registerEscHandler({intermediates:"*",final:I},(()=>this.selectCharset("*"+I))),this._parser.registerEscHandler({intermediates:"+",final:I},(()=>this.selectCharset("+"+I))),this._parser.registerEscHandler({intermediates:"-",final:I},(()=>this.selectCharset("-"+I))),this._parser.registerEscHandler({intermediates:".",final:I},(()=>this.selectCharset("."+I))),this._parser.registerEscHandler({intermediates:"/",final:I},(()=>this.selectCharset("/"+I)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((I=>(this._logService.error("Parsing error: ",I),I))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new P.DcsHandler(((I,J)=>this.requestStatusString(I,J))))}_preserveStack(v,C,T,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=v,this._parseStack.cursorStartY=C,this._parseStack.decodedLength=T,this._parseStack.position=R}_logSlowResolvingAsync(v){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([v,new Promise(((C,T)=>setTimeout((()=>T("#SLOW_TIMEOUT")),5e3)))]).catch((C=>{if(C!=="#SLOW_TIMEOUT")throw C;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(v,C){let T,R=this._activeBuffer.x,F=this._activeBuffer.y,j=0,U=this._parseStack.paused;if(U){if(T=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,C))return this._logSlowResolvingAsync(T),T;R=this._parseStack.cursorStartX,F=this._parseStack.cursorStartY,this._parseStack.paused=!1,v.length>D&&(j=this._parseStack.position+D)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof v=="string"?` "${v}"`:` "${Array.prototype.map.call(v,(I=>String.fromCharCode(I))).join("")}"`)),this._logService.logLevel===u.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof v=="string"?v.split("").map((I=>I.charCodeAt(0))):v),this._parseBuffer.length<v.length&&this._parseBuffer.length<D&&(this._parseBuffer=new Uint32Array(Math.min(v.length,D))),U||this._dirtyRowTracker.clearRange(),v.length>D)for(let I=j;I<v.length;I+=D){let J=I+D<v.length?I+D:v.length,Y=typeof v=="string"?this._stringDecoder.decode(v.substring(I,J),this._parseBuffer):this._utf8Decoder.decode(v.subarray(I,J),this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,F,Y,I),this._logSlowResolvingAsync(T),T}else if(!U){let I=typeof v=="string"?this._stringDecoder.decode(v,this._parseBuffer):this._utf8Decoder.decode(v,this._parseBuffer);if(T=this._parser.parse(this._parseBuffer,I))return this._preserveStack(R,F,I,0),this._logSlowResolvingAsync(T),T}this._activeBuffer.x===R&&this._activeBuffer.y===F||this._onCursorMove.fire();let V=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),te=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);te<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(te,this._bufferService.rows-1),end:Math.min(V,this._bufferService.rows-1)})}print(v,C,T){let R,F,j=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,V=this._bufferService.cols,te=this._coreService.decPrivateModes.wraparound,I=this._coreService.modes.insertMode,J=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&T-C>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,J);let Z=this._parser.precedingJoinState;for(let we=C;we<T;++we){if(R=v[we],R<127&&j){let Ue=j[String.fromCharCode(R)];Ue&&(R=Ue.charCodeAt(0))}let ke=this._unicodeService.charProperties(R,Z);F=b.UnicodeService.extractWidth(ke);let Xe=b.UnicodeService.extractShouldJoin(ke),xe=Xe?b.UnicodeService.extractWidth(Z):0;if(Z=ke,U&&this._onA11yChar.fire((0,_.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+F-xe>V){if(te){let Ue=Y,st=this._activeBuffer.x-xe;for(this._activeBuffer.x=xe,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),xe>0&&Y instanceof i.BufferLine&&Y.copyCellsFrom(Ue,st,0,xe,!1);st<V;)Ue.setCellFromCodepoint(st++,0,1,J)}else if(this._activeBuffer.x=V-1,F===2)continue}if(Xe&&this._activeBuffer.x){let Ue=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ue,R,F);for(let st=F-xe;--st>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,J)}else if(I&&(Y.insertCells(this._activeBuffer.x,F-xe,this._activeBuffer.getNullCell(J)),Y.getWidth(V-1)===2&&Y.setCellFromCodepoint(V-1,p.NULL_CELL_CODE,p.NULL_CELL_WIDTH,J)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,F,J),F>0)for(;--F;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,J)}this._parser.precedingJoinState=Z,this._activeBuffer.x<V&&T-C>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,J),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(v,C){return v.final!=="t"||v.prefix||v.intermediates?this._parser.registerCsiHandler(v,C):this._parser.registerCsiHandler(v,(T=>!x(T.params[0],this._optionsService.rawOptions.windowOptions)||C(T)))}registerDcsHandler(v,C){return this._parser.registerDcsHandler(v,new P.DcsHandler(C))}registerEscHandler(v,C){return this._parser.registerEscHandler(v,C)}registerOscHandler(v,C){return this._parser.registerOscHandler(v,new S.OscHandler(C))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let v=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);v.hasWidth(this._activeBuffer.x)&&!v.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let v=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-v),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(v=this._bufferService.cols-1){this._activeBuffer.x=Math.min(v,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(v,C){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=v,this._activeBuffer.y=this._activeBuffer.scrollTop+C):(this._activeBuffer.x=v,this._activeBuffer.y=C),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(v,C){this._restrictCursor(),this._setCursor(this._activeBuffer.x+v,this._activeBuffer.y+C)}cursorUp(v){let C=this._activeBuffer.y-this._activeBuffer.scrollTop;return C>=0?this._moveCursor(0,-Math.min(C,v.params[0]||1)):this._moveCursor(0,-(v.params[0]||1)),!0}cursorDown(v){let C=this._activeBuffer.scrollBottom-this._activeBuffer.y;return C>=0?this._moveCursor(0,Math.min(C,v.params[0]||1)):this._moveCursor(0,v.params[0]||1),!0}cursorForward(v){return this._moveCursor(v.params[0]||1,0),!0}cursorBackward(v){return this._moveCursor(-(v.params[0]||1),0),!0}cursorNextLine(v){return this.cursorDown(v),this._activeBuffer.x=0,!0}cursorPrecedingLine(v){return this.cursorUp(v),this._activeBuffer.x=0,!0}cursorCharAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(v){return this._setCursor(v.length>=2?(v.params[1]||1)-1:0,(v.params[0]||1)-1),!0}charPosAbsolute(v){return this._setCursor((v.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(v){return this._moveCursor(v.params[0]||1,0),!0}linePosAbsolute(v){return this._setCursor(this._activeBuffer.x,(v.params[0]||1)-1),!0}vPositionRelative(v){return this._moveCursor(0,v.params[0]||1),!0}hVPosition(v){return this.cursorPosition(v),!0}tabClear(v){let C=v.params[0];return C===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:C===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(v){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let C=v.params[0]||1;for(;C--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(v){let C=v.params[0];return C===1&&(this._curAttrData.bg|=536870912),C!==2&&C!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(v,C,T,R=!1,F=!1){let j=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);j.replaceCells(C,T,this._activeBuffer.getNullCell(this._eraseAttrData()),F),R&&(j.isWrapped=!1)}_resetBufferLine(v,C=!1){let T=this._activeBuffer.lines.get(this._activeBuffer.ybase+v);T&&(T.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),C),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+v),T.isWrapped=!1)}eraseInDisplay(v,C=!1){let T;switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);T<this._bufferService.rows;T++)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(T);break;case 1:for(T=this._activeBuffer.y,this._dirtyRowTracker.markDirty(T),this._eraseInBufferLine(T,0,this._activeBuffer.x+1,!0,C),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(T+1).isWrapped=!1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(T=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,T-1);T--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+T)?.getTrimmedLength(););for(;T>=0;T--)this._bufferService.scroll(this._eraseAttrData())}else{for(T=this._bufferService.rows,this._dirtyRowTracker.markDirty(T-1);T--;)this._resetBufferLine(T,C);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(v,C=!1){switch(this._restrictCursor(this._bufferService.cols),v.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,C);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,C);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,C)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,F=this._bufferService.rows-1+this._activeBuffer.ybase-R+1;for(;C--;)this._activeBuffer.lines.splice(F-1,1),this._activeBuffer.lines.splice(T,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(v){this._restrictCursor();let C=v.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let T=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;C--;)this._activeBuffer.lines.splice(T,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.insertCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.deleteCells(this._activeBuffer.x,v.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(v){let C=v.params[0]||1;for(;C--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(i.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(0,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.insertCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(v){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let C=v.params[0]||1;for(let T=this._activeBuffer.scrollTop;T<=this._activeBuffer.scrollBottom;++T){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+T);R.deleteCells(this._activeBuffer.x,C,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(v){this._restrictCursor();let C=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return C&&(C.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(v.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(v){let C=this._parser.precedingJoinState;if(!C)return!0;let T=v.params[0]||1,R=b.UnicodeService.extractWidth(C),F=this._activeBuffer.x-R,j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(F),U=new Uint32Array(j.length*T),V=0;for(let I=0;I<j.length;){let J=j.codePointAt(I)||0;U[V++]=J,I+=J>65535?2:1}let te=V;for(let I=1;I<T;++I)U.copyWithin(te,0,V),te+=V;return this.print(U,0,te),!0}sendDeviceAttributesPrimary(v){return v.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(a.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(a.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(v){return v.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(a.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(a.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(v.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(a.C0.ESC+"[>83;40003;0c")),!0}_is(v){return(this._optionsService.rawOptions.termName+"").indexOf(v)===0}setMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,w.DEFAULT_CHARSET),this._charsetService.setgCharset(1,w.DEFAULT_CHARSET),this._charsetService.setgCharset(2,w.DEFAULT_CHARSET),this._charsetService.setgCharset(3,w.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!0}return!0}resetMode(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(v){for(let C=0;C<v.length;C++)switch(v.params[C]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),v.params[C]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(v,C){let T=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:F}=this._coreMouseService,j=this._coreService,{buffers:U,cols:V}=this._bufferService,{active:te,alt:I}=U,J=this._optionsService.rawOptions,Y=Xe=>Xe?1:2,Z=v.params[0];return we=Z,ke=C?Z===2?4:Z===4?Y(j.modes.insertMode):Z===12?3:Z===20?Y(J.convertEol):0:Z===1?Y(T.applicationCursorKeys):Z===3?J.windowOptions.setWinLines?V===80?2:V===132?1:0:0:Z===6?Y(T.origin):Z===7?Y(T.wraparound):Z===8?3:Z===9?Y(R==="X10"):Z===12?Y(J.cursorBlink):Z===25?Y(!j.isCursorHidden):Z===45?Y(T.reverseWraparound):Z===66?Y(T.applicationKeypad):Z===67?4:Z===1e3?Y(R==="VT200"):Z===1002?Y(R==="DRAG"):Z===1003?Y(R==="ANY"):Z===1004?Y(T.sendFocus):Z===1005?4:Z===1006?Y(F==="SGR"):Z===1015?4:Z===1016?Y(F==="SGR_PIXELS"):Z===1048?1:Z===47||Z===1047||Z===1049?Y(te===I):Z===2004?Y(T.bracketedPasteMode):Z===2026?Y(T.synchronizedOutput):0,j.triggerDataEvent(`${a.C0.ESC}[${C?"":"?"}${we};${ke}$y`),!0;var we,ke}_updateAttrColor(v,C,T,R,F){return C===2?(v|=50331648,v&=-16777216,v|=d.AttributeData.fromColorRGB([T,R,F])):C===5&&(v&=-50331904,v|=33554432|255&T),v}_extractColor(v,C,T){let R=[0,0,-1,0,0,0],F=0,j=0;do{if(R[j+F]=v.params[C+j],v.hasSubParams(C+j)){let U=v.getSubParams(C+j),V=0;do R[1]===5&&(F=1),R[j+V+1+F]=U[V];while(++V<U.length&&V+j+1+F<R.length);break}if(R[1]===5&&j+F>=2||R[1]===2&&j+F>=5)break;R[1]&&(F=1)}while(++j+C<v.length&&j+F<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:T.fg=this._updateAttrColor(T.fg,R[1],R[3],R[4],R[5]);break;case 48:T.bg=this._updateAttrColor(T.bg,R[1],R[3],R[4],R[5]);break;case 58:T.extended=T.extended.clone(),T.extended.underlineColor=this._updateAttrColor(T.extended.underlineColor,R[1],R[3],R[4],R[5])}return j}_processUnderline(v,C){C.extended=C.extended.clone(),(!~v||v>5)&&(v=1),C.extended.underlineStyle=v,C.fg|=268435456,v===0&&(C.fg&=-268435457),C.updateExtended()}_processSGR0(v){v.fg=i.DEFAULT_ATTR_DATA.fg,v.bg=i.DEFAULT_ATTR_DATA.bg,v.extended=v.extended.clone(),v.extended.underlineStyle=0,v.extended.underlineColor&=-67108864,v.updateExtended()}charAttributes(v){if(v.length===1&&v.params[0]===0)return this._processSGR0(this._curAttrData),!0;let C=v.length,T,R=this._curAttrData;for(let F=0;F<C;F++)T=v.params[F],T>=30&&T<=37?(R.fg&=-50331904,R.fg|=16777216|T-30):T>=40&&T<=47?(R.bg&=-50331904,R.bg|=16777216|T-40):T>=90&&T<=97?(R.fg&=-50331904,R.fg|=16777224|T-90):T>=100&&T<=107?(R.bg&=-50331904,R.bg|=16777224|T-100):T===0?this._processSGR0(R):T===1?R.fg|=134217728:T===3?R.bg|=67108864:T===4?(R.fg|=268435456,this._processUnderline(v.hasSubParams(F)?v.getSubParams(F)[0]:1,R)):T===5?R.fg|=536870912:T===7?R.fg|=67108864:T===8?R.fg|=1073741824:T===9?R.fg|=2147483648:T===2?R.bg|=134217728:T===21?this._processUnderline(2,R):T===22?(R.fg&=-134217729,R.bg&=-134217729):T===23?R.bg&=-67108865:T===24?(R.fg&=-268435457,this._processUnderline(0,R)):T===25?R.fg&=-536870913:T===27?R.fg&=-67108865:T===28?R.fg&=-1073741825:T===29?R.fg&=2147483647:T===39?(R.fg&=-67108864,R.fg|=16777215&i.DEFAULT_ATTR_DATA.fg):T===49?(R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):T===38||T===48||T===58?F+=this._extractColor(v,F,R):T===53?R.bg|=1073741824:T===55?R.bg&=-1073741825:T===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):T===100?(R.fg&=-67108864,R.fg|=16777215&i.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&i.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",T);return!0}deviceStatus(v){switch(v.params[0]){case 5:this._coreService.triggerDataEvent(`${a.C0.ESC}[0n`);break;case 6:let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[${C};${T}R`)}return!0}deviceStatusPrivate(v){if(v.params[0]===6){let C=this._activeBuffer.y+1,T=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${a.C0.ESC}[?${C};${T}R`)}return!0}softReset(v){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(v){let C=v.length===0?1:v.params[0];if(C===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(C){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let T=C%2==1;this._coreService.decPrivateModes.cursorBlink=T}return!0}setScrollRegion(v){let C=v.params[0]||1,T;return(v.length<2||(T=v.params[1])>this._bufferService.rows||T===0)&&(T=this._bufferService.rows),T>C&&(this._activeBuffer.scrollTop=C-1,this._activeBuffer.scrollBottom=T-1,this._setCursor(0,0)),!0}windowOptions(v){if(!x(v.params[0],this._optionsService.rawOptions.windowOptions))return!0;let C=v.length>1?v.params[1]:0;switch(v.params[0]){case 14:C!==2&&this._onRequestWindowsOptionsReport.fire(A.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(A.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${a.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:C!==0&&C!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),C!==0&&C!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:C!==0&&C!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),C!==0&&C!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(v){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(v){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(v){return this._windowTitle=v,this._onTitleChange.fire(v),!0}setIconName(v){return this._iconName=v,!0}setOrReportIndexedColor(v){let C=[],T=v.split(";");for(;T.length>1;){let R=T.shift(),F=T.shift();if(/^\d+$/.exec(R)){let j=parseInt(R);if(W(j))if(F==="?")C.push({type:0,index:j});else{let U=(0,E.parseColor)(F);U&&C.push({type:1,index:j,color:U})}}}return C.length&&this._onColor.fire(C),!0}setHyperlink(v){let C=v.indexOf(";");if(C===-1)return!0;let T=v.slice(0,C).trim(),R=v.slice(C+1);return R?this._createHyperlink(T,R):!T.trim()&&this._finishHyperlink()}_createHyperlink(v,C){this._getCurrentLinkId()&&this._finishHyperlink();let T=v.split(":"),R,F=T.findIndex((j=>j.startsWith("id=")));return F!==-1&&(R=T[F].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:C}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(v,C){let T=v.split(";");for(let R=0;R<T.length&&!(C>=this._specialColors.length);++R,++C)if(T[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[C]}]);else{let F=(0,E.parseColor)(T[R]);F&&this._onColor.fire([{type:1,index:this._specialColors[C],color:F}])}return!0}setOrReportFgColor(v){return this._setOrReportSpecialColor(v,0)}setOrReportBgColor(v){return this._setOrReportSpecialColor(v,1)}setOrReportCursorColor(v){return this._setOrReportSpecialColor(v,2)}restoreIndexedColor(v){if(!v)return this._onColor.fire([{type:2}]),!0;let C=[],T=v.split(";");for(let R=0;R<T.length;++R)if(/^\d+$/.exec(T[R])){let F=parseInt(T[R]);W(F)&&C.push({type:2,index:F})}return C.length&&this._onColor.fire(C),!0}restoreFgColor(v){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(v){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(v){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,w.DEFAULT_CHARSET),!0}selectCharset(v){return v.length!==2?(this.selectDefaultCharset(),!0):(v[0]==="/"||this._charsetService.setgCharset($[v[0]],w.CHARSETS[v[1]]||w.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let v=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,v,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=i.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=i.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(v){return this._charsetService.setgLevel(v),!0}screenAlignmentPattern(){let v=new h.CellData;v.content=4194373,v.fg=this._curAttrData.fg,v.bg=this._curAttrData.bg,this._setCursor(0,0);for(let C=0;C<this._bufferService.rows;++C){let T=this._activeBuffer.ybase+this._activeBuffer.y+C,R=this._activeBuffer.lines.get(T);R&&(R.fill(v),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(v,C){let T=this._bufferService.buffer,R=this._optionsService.rawOptions;return(F=>(this._coreService.triggerDataEvent(`${a.C0.ESC}${F}${a.C0.ESC}\\`),!0))(v==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:v==='"p'?'P1$r61;1"p':v==="r"?`P1$r${T.scrollTop+1};${T.scrollBottom+1}r`:v==="m"?"P1$r0m":v===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(v,C){this._dirtyRowTracker.markRangeDirty(v,C)}}n.InputHandler=z;let X=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,v){q>v&&(L=q,q=v,v=L),q<this.start&&(this.start=q),v>this.end&&(this.end=v)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function W(q){return 0<=q&&q<256}X=f([k(0,u.IBufferService)],X)},701:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isChromeOS=n.isLinux=n.isWindows=n.isIphone=n.isIpad=n.isMac=n.isSafari=n.isLegacyEdge=n.isFirefox=n.isNode=void 0,n.getSafariVersion=function(){if(!n.isSafari)return 0;let k=l.match(/Version\/(\d+)/);return k===null||k.length<2?0:parseInt(k[1])},n.isNode=typeof process<"u"&&"title"in process;let l=n.isNode?"node":navigator.userAgent,f=n.isNode?"node":navigator.platform;n.isFirefox=l.includes("Firefox"),n.isLegacyEdge=l.includes("Edge"),n.isSafari=/^((?!chrome|android).)*safari/i.test(l),n.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(f),n.isIpad=f==="iPad",n.isIphone=f==="iPhone",n.isWindows=["Windows","Win16","Win32","WinCE"].includes(f),n.isLinux=f.indexOf("Linux")>=0,n.isChromeOS=/\bCrOS\b/.test(l)},6168:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DebouncedIdleTask=n.IdleTaskQueue=n.PriorityTaskQueue=void 0;let f=l(701);class k{constructor(){this._tasks=[],this._i=0}enqueue(c){this._tasks.push(c),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(c){this._idleCallback=void 0;let g=0,_=0,i=c.timeRemaining(),p=0;for(;this._i<this._tasks.length;){if(g=performance.now(),this._tasks[this._i]()||this._i++,g=Math.max(1,performance.now()-g),_=Math.max(g,_),p=c.timeRemaining(),1.5*_>p)return i-g<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(i-g))}ms`),void this._start();i=p}this.clear()}}class a extends k{_requestCallback(c){return setTimeout((()=>c(this._createDeadline(16))))}_cancelCallback(c){clearTimeout(c)}_createDeadline(c){let g=performance.now()+c;return{timeRemaining:()=>Math.max(0,g-performance.now())}}}n.PriorityTaskQueue=a,n.IdleTaskQueue=!f.isNode&&"requestIdleCallback"in window?class extends k{_requestCallback(w){return requestIdleCallback(w)}_cancelCallback(w){cancelIdleCallback(w)}}:a,n.DebouncedIdleTask=class{constructor(){this._queue=new n.IdleTaskQueue}set(w){this._queue.clear(),this._queue.enqueue(w)}flush(){this._queue.flush()}}},5882:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(k){let a=k.buffer.lines.get(k.buffer.ybase+k.buffer.y-1),w=a?.get(k.cols-1),c=k.buffer.lines.get(k.buffer.ybase+k.buffer.y);c&&w&&(c.isWrapped=w[f.CHAR_DATA_CODE_INDEX]!==f.NULL_CELL_CODE&&w[f.CHAR_DATA_CODE_INDEX]!==f.WHITESPACE_CELL_CODE)};let f=l(8938)},5451:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ExtendedAttrs=n.AttributeData=void 0;class l{constructor(){this.fg=0,this.bg=0,this.extended=new f}static toColorRGB(a){return[a>>>16&255,a>>>8&255,255&a]}static fromColorRGB(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]}clone(){let a=new l;return a.fg=this.fg,a.bg=this.bg,a.extended=this.extended.clone(),a}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return!(50331648&~this.fg)}isBgRGB(){return!(50331648&~this.bg)}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return!(50331648&this.fg)}isBgDefault(){return!(50331648&this.bg)}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&~this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?!(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}n.AttributeData=l;class f{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(a){this._ext=a}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(a){this._ext&=-469762049,this._ext|=a<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(a){this._ext&=-67108864,this._ext|=67108863&a}get urlId(){return this._urlId}set urlId(a){this._urlId=a}get underlineVariantOffset(){let a=(3758096384&this._ext)>>29;return a<0?4294967288^a:a}set underlineVariantOffset(a){this._ext&=536870911,this._ext|=a<<29&3758096384}constructor(a=0,w=0){this._ext=0,this._urlId=0,this._ext=a,this._urlId=w}clone(){return new f(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}n.ExtendedAttrs=f},1073:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Buffer=n.MAX_BUFFER_SIZE=void 0;let f=l(5639),k=l(6168),a=l(5451),w=l(6107),c=l(732),g=l(3055),_=l(8938),i=l(8158),p=l(6760);n.MAX_BUFFER_SIZE=4294967295,n.Buffer=class{constructor(h,d,u){this._hasScrollback=h,this._optionsService=d,this._bufferService=u,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=w.DEFAULT_ATTR_DATA.clone(),this.savedCharset=p.DEFAULT_CHARSET,this.markers=[],this._nullCell=g.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=g.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new k.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new f.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(h){return h?(this._nullCell.fg=h.fg,this._nullCell.bg=h.bg,this._nullCell.extended=h.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new a.ExtendedAttrs),this._nullCell}getWhitespaceCell(h){return h?(this._whitespaceCell.fg=h.fg,this._whitespaceCell.bg=h.bg,this._whitespaceCell.extended=h.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new a.ExtendedAttrs),this._whitespaceCell}getBlankLine(h,d){return new w.BufferLine(this._bufferService.cols,this.getNullCell(h),d)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let h=this.ybase+this.y-this.ydisp;return h>=0&&h<this._rows}_getCorrectBufferLength(h){if(!this._hasScrollback)return h;let d=h+this._optionsService.rawOptions.scrollback;return d>n.MAX_BUFFER_SIZE?n.MAX_BUFFER_SIZE:d}fillViewportRows(h){if(this.lines.length===0){h===void 0&&(h=w.DEFAULT_ATTR_DATA);let d=this._rows;for(;d--;)this.lines.push(this.getBlankLine(h))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new f.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(h,d){let u=this.getNullCell(w.DEFAULT_ATTR_DATA),b=0,S=this._getCorrectBufferLength(d);if(S>this.lines.maxLength&&(this.lines.maxLength=S),this.lines.length>0){if(this._cols<h)for(let E=0;E<this.lines.length;E++)b+=+this.lines.get(E).resize(h,u);let P=0;if(this._rows<d)for(let E=this._rows;E<d;E++)this.lines.length<d+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new w.BufferLine(h,u)):this.ybase>0&&this.lines.length<=this.ybase+this.y+P+1?(this.ybase--,P++,this.ydisp>0&&this.ydisp--):this.lines.push(new w.BufferLine(h,u)));else for(let E=this._rows;E>d;E--)this.lines.length>d+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(S<this.lines.maxLength){let E=this.lines.length-S;E>0&&(this.lines.trimStart(E),this.ybase=Math.max(this.ybase-E,0),this.ydisp=Math.max(this.ydisp-E,0),this.savedY=Math.max(this.savedY-E,0)),this.lines.maxLength=S}this.x=Math.min(this.x,h-1),this.y=Math.min(this.y,d-1),P&&(this.y+=P),this.savedX=Math.min(this.savedX,h-1),this.scrollTop=0}if(this.scrollBottom=d-1,this._isReflowEnabled&&(this._reflow(h,d),this._cols>h))for(let P=0;P<this.lines.length;P++)b+=+this.lines.get(P).resize(h,u);this._cols=h,this._rows=d,this._memoryCleanupQueue.clear(),b>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let h=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,h=!1);let d=0;for(;this._memoryCleanupPosition<this.lines.length;)if(d+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),d>100)return!0;return h}get _isReflowEnabled(){let h=this._optionsService.rawOptions.windowsPty;return h&&h.buildNumber?this._hasScrollback&&h.backend==="conpty"&&h.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(h,d){this._cols!==h&&(h>this._cols?this._reflowLarger(h,d):this._reflowSmaller(h,d))}_reflowLarger(h,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=(0,c.reflowLargerGetLinesToRemove)(this.lines,this._cols,h,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),u);if(b.length>0){let S=(0,c.reflowLargerCreateNewLayout)(this.lines,b);(0,c.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(h,d,S.countRemoved)}}_reflowLargerAdjustViewport(h,d,u){let b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=u;for(;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<d&&this.lines.push(new w.BufferLine(h,b))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-u,0)}_reflowSmaller(h,d){let u=this._optionsService.rawOptions.reflowCursorLine,b=this.getNullCell(w.DEFAULT_ATTR_DATA),S=[],P=0;for(let E=this.lines.length-1;E>=0;E--){let H=this.lines.get(E);if(!H||!H.isWrapped&&H.getTrimmedLength()<=h)continue;let $=[H];for(;H.isWrapped&&E>0;)H=this.lines.get(--E),$.unshift(H);if(!u){let T=this.ybase+this.y;if(T>=E&&T<E+$.length)continue}let D=$[$.length-1].getTrimmedLength(),x=(0,c.reflowSmallerGetNewLineLengths)($,this._cols,h),A=x.length-$.length,L;L=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+A):Math.max(0,this.lines.length-this.lines.maxLength+A);let z=[];for(let T=0;T<A;T++){let R=this.getBlankLine(w.DEFAULT_ATTR_DATA,!0);z.push(R)}z.length>0&&(S.push({start:E+$.length+P,newLines:z}),P+=z.length),$.push(...z);let X=x.length-1,W=x[X];W===0&&(X--,W=x[X]);let q=$.length-A-1,v=D;for(;q>=0;){let T=Math.min(v,W);if($[X]===void 0)break;if($[X].copyCellsFrom($[q],v-T,W-T,T,!0),W-=T,W===0&&(X--,W=x[X]),v-=T,v===0){q--;let R=Math.max(q,0);v=(0,c.getWrappedLineTrimmedLength)($,R,this._cols)}}for(let T=0;T<$.length;T++)x[T]<h&&$[T].setCell(x[T],b);let C=A-L;for(;C-- >0;)this.ybase===0?this.y<d-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+P)-d&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+A,this.ybase+d-1)}if(S.length>0){let E=[],H=[];for(let W=0;W<this.lines.length;W++)H.push(this.lines.get(W));let $=this.lines.length,D=$-1,x=0,A=S[x];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+P);let L=0;for(let W=Math.min(this.lines.maxLength-1,$+P-1);W>=0;W--)if(A&&A.start>D+L){for(let q=A.newLines.length-1;q>=0;q--)this.lines.set(W--,A.newLines[q]);W++,E.push({index:D+1,amount:A.newLines.length}),L+=A.newLines.length,A=S[++x]}else this.lines.set(W,H[D--]);let z=0;for(let W=E.length-1;W>=0;W--)E[W].index+=z,this.lines.onInsertEmitter.fire(E[W]),z+=E[W].amount;let X=Math.max(0,$+P-this.lines.maxLength);X>0&&this.lines.onTrimEmitter.fire(X)}}translateBufferLineToString(h,d,u=0,b){let S=this.lines.get(h);return S?S.translateToString(d,u,b):""}getWrappedRangeForLine(h){let d=h,u=h;for(;d>0&&this.lines.get(d).isWrapped;)d--;for(;u+1<this.lines.length&&this.lines.get(u+1).isWrapped;)u++;return{first:d,last:u}}setupTabStops(h){for(h!=null?this.tabs[h]||(h=this.prevStop(h)):(this.tabs={},h=0);h<this._cols;h+=this._optionsService.rawOptions.tabStopWidth)this.tabs[h]=!0}prevStop(h){for(h==null&&(h=this.x);!this.tabs[--h]&&h>0;);return h>=this._cols?this._cols-1:h<0?0:h}nextStop(h){for(h==null&&(h=this.x);!this.tabs[++h]&&h<this._cols;);return h>=this._cols?this._cols-1:h<0?0:h}clearMarkers(h){this._isClearing=!0;for(let d=0;d<this.markers.length;d++)this.markers[d].line===h&&(this.markers[d].dispose(),this.markers.splice(d--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let h=0;h<this.markers.length;h++)this.markers[h].dispose();this.markers.length=0,this._isClearing=!1}addMarker(h){let d=new i.Marker(h);return this.markers.push(d),d.register(this.lines.onTrim((u=>{d.line-=u,d.line<0&&d.dispose()}))),d.register(this.lines.onInsert((u=>{d.line>=u.index&&(d.line+=u.amount)}))),d.register(this.lines.onDelete((u=>{d.line>=u.index&&d.line<u.index+u.amount&&d.dispose(),d.line>u.index&&(d.line-=u.amount)}))),d.register(d.onDispose((()=>this._removeMarker(d)))),d}_removeMarker(h){this._isClearing||this.markers.splice(this.markers.indexOf(h),1)}}},6107:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLine=n.DEFAULT_ATTR_DATA=void 0;let f=l(5451),k=l(3055),a=l(8938),w=l(726);n.DEFAULT_ATTR_DATA=Object.freeze(new f.AttributeData);let c=0;class g{constructor(i,p,h=!1){this.isWrapped=h,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*i);let d=p||k.CellData.fromCharData([0,a.NULL_CELL_CHAR,a.NULL_CELL_WIDTH,a.NULL_CELL_CODE]);for(let u=0;u<i;++u)this.setCell(u,d);this.length=i}get(i){let p=this._data[3*i+0],h=2097151&p;return[this._data[3*i+1],2097152&p?this._combined[i]:h?(0,w.stringFromCodePoint)(h):"",p>>22,2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):h]}set(i,p){this._data[3*i+1]=p[a.CHAR_DATA_ATTR_INDEX],p[a.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[i]=p[1],this._data[3*i+0]=2097152|i|p[a.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*i+0]=p[a.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[a.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(i){return this._data[3*i+0]>>22}hasWidth(i){return 12582912&this._data[3*i+0]}getFg(i){return this._data[3*i+1]}getBg(i){return this._data[3*i+2]}hasContent(i){return 4194303&this._data[3*i+0]}getCodePoint(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i].charCodeAt(this._combined[i].length-1):2097151&p}isCombined(i){return 2097152&this._data[3*i+0]}getString(i){let p=this._data[3*i+0];return 2097152&p?this._combined[i]:2097151&p?(0,w.stringFromCodePoint)(2097151&p):""}isProtected(i){return 536870912&this._data[3*i+2]}loadCell(i,p){return c=3*i,p.content=this._data[c+0],p.fg=this._data[c+1],p.bg=this._data[c+2],2097152&p.content&&(p.combinedData=this._combined[i]),268435456&p.bg&&(p.extended=this._extendedAttrs[i]),p}setCell(i,p){2097152&p.content&&(this._combined[i]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[i]=p.extended),this._data[3*i+0]=p.content,this._data[3*i+1]=p.fg,this._data[3*i+2]=p.bg}setCellFromCodepoint(i,p,h,d){268435456&d.bg&&(this._extendedAttrs[i]=d.extended),this._data[3*i+0]=p|h<<22,this._data[3*i+1]=d.fg,this._data[3*i+2]=d.bg}addCodepointToCell(i,p,h){let d=this._data[3*i+0];2097152&d?this._combined[i]+=(0,w.stringFromCodePoint)(p):2097151&d?(this._combined[i]=(0,w.stringFromCodePoint)(2097151&d)+(0,w.stringFromCodePoint)(p),d&=-2097152,d|=2097152):d=p|4194304,h&&(d&=-12582913,d|=h<<22),this._data[3*i+0]=d}insertCells(i,p,h){if((i%=this.length)&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length-i){let d=new k.CellData;for(let u=this.length-i-p-1;u>=0;--u)this.setCell(i+p+u,this.loadCell(i+u,d));for(let u=0;u<p;++u)this.setCell(i+u,h)}else for(let d=i;d<this.length;++d)this.setCell(d,h);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,h)}deleteCells(i,p,h){if(i%=this.length,p<this.length-i){let d=new k.CellData;for(let u=0;u<this.length-i-p;++u)this.setCell(i+u,this.loadCell(i+p+u,d));for(let u=this.length-p;u<this.length;++u)this.setCell(u,h)}else for(let d=i;d<this.length;++d)this.setCell(d,h);i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),this.getWidth(i)!==0||this.hasContent(i)||this.setCellFromCodepoint(i,0,1,h)}replaceCells(i,p,h,d=!1){if(d)for(i&&this.getWidth(i-1)===2&&!this.isProtected(i-1)&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length&&this.getWidth(p-1)===2&&!this.isProtected(p)&&this.setCellFromCodepoint(p,0,1,h);i<p&&i<this.length;)this.isProtected(i)||this.setCell(i,h),i++;else for(i&&this.getWidth(i-1)===2&&this.setCellFromCodepoint(i-1,0,1,h),p<this.length&&this.getWidth(p-1)===2&&this.setCellFromCodepoint(p,0,1,h);i<p&&i<this.length;)this.setCell(i++,h)}resize(i,p){if(i===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let h=3*i;if(i>this.length){if(this._data.buffer.byteLength>=4*h)this._data=new Uint32Array(this._data.buffer,0,h);else{let d=new Uint32Array(h);d.set(this._data),this._data=d}for(let d=this.length;d<i;++d)this.setCell(d,p)}else{this._data=this._data.subarray(0,h);let d=Object.keys(this._combined);for(let b=0;b<d.length;b++){let S=parseInt(d[b],10);S>=i&&delete this._combined[S]}let u=Object.keys(this._extendedAttrs);for(let b=0;b<u.length;b++){let S=parseInt(u[b],10);S>=i&&delete this._extendedAttrs[S]}}return this.length=i,4*h*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let i=new Uint32Array(this._data.length);return i.set(this._data),this._data=i,1}return 0}fill(i,p=!1){if(p)for(let h=0;h<this.length;++h)this.isProtected(h)||this.setCell(h,i);else{this._combined={},this._extendedAttrs={};for(let h=0;h<this.length;++h)this.setCell(h,i)}}copyFrom(i){this.length!==i.length?this._data=new Uint32Array(i._data):this._data.set(i._data),this.length=i.length,this._combined={};for(let p in i._combined)this._combined[p]=i._combined[p];this._extendedAttrs={};for(let p in i._extendedAttrs)this._extendedAttrs[p]=i._extendedAttrs[p];this.isWrapped=i.isWrapped}clone(){let i=new g(0);i._data=new Uint32Array(this._data),i.length=this.length;for(let p in this._combined)i._combined[p]=this._combined[p];for(let p in this._extendedAttrs)i._extendedAttrs[p]=this._extendedAttrs[p];return i.isWrapped=this.isWrapped,i}getTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0])return i+(this._data[3*i+0]>>22);return 0}getNoBgTrimmedLength(){for(let i=this.length-1;i>=0;--i)if(4194303&this._data[3*i+0]||50331648&this._data[3*i+2])return i+(this._data[3*i+0]>>22);return 0}copyCellsFrom(i,p,h,d,u){let b=i._data;if(u)for(let P=d-1;P>=0;P--){for(let E=0;E<3;E++)this._data[3*(h+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[h+P]=i._extendedAttrs[p+P])}else for(let P=0;P<d;P++){for(let E=0;E<3;E++)this._data[3*(h+P)+E]=b[3*(p+P)+E];268435456&b[3*(p+P)+2]&&(this._extendedAttrs[h+P]=i._extendedAttrs[p+P])}let S=Object.keys(i._combined);for(let P=0;P<S.length;P++){let E=parseInt(S[P],10);E>=p&&(this._combined[E-p+h]=i._combined[E])}}translateToString(i,p,h,d){p=p??0,h=h??this.length,i&&(h=Math.min(h,this.getTrimmedLength())),d&&(d.length=0);let u="";for(;p<h;){let b=this._data[3*p+0],S=2097151&b,P=2097152&b?this._combined[p]:S?(0,w.stringFromCodePoint)(S):a.WHITESPACE_CELL_CHAR;if(u+=P,d)for(let E=0;E<P.length;++E)d.push(p);p+=b>>22||1}return d&&d.push(p),u}}n.BufferLine=g},732:(y,n)=>{function l(f,k,a){if(k===f.length-1)return f[k].getTrimmedLength();let w=!f[k].hasContent(a-1)&&f[k].getWidth(a-1)===1,c=f[k+1].getWidth(0)===2;return w&&c?a-1:a}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(f,k,a,w,c,g){let _=[];for(let i=0;i<f.length-1;i++){let p=i,h=f.get(++p);if(!h.isWrapped)continue;let d=[f.get(i)];for(;p<f.length&&h.isWrapped;)d.push(h),h=f.get(++p);if(!g&&w>=i&&w<p){i+=d.length-1;continue}let u=0,b=l(d,u,k),S=1,P=0;for(;S<d.length;){let H=l(d,S,k),$=H-P,D=a-b,x=Math.min($,D);d[u].copyCellsFrom(d[S],P,b,x,!1),b+=x,b===a&&(u++,b=0),P+=x,P===H&&(S++,P=0),b===0&&u!==0&&d[u-1].getWidth(a-1)===2&&(d[u].copyCellsFrom(d[u-1],a-1,b++,1,!1),d[u-1].setCell(a-1,c))}d[u].replaceCells(b,a,c);let E=0;for(let H=d.length-1;H>0&&(H>u||d[H].getTrimmedLength()===0);H--)E++;E>0&&(_.push(i+d.length-E),_.push(E)),i+=d.length-1}return _},n.reflowLargerCreateNewLayout=function(f,k){let a=[],w=0,c=k[w],g=0;for(let _=0;_<f.length;_++)if(c===_){let i=k[++w];f.onDeleteEmitter.fire({index:_-g,amount:i}),_+=i-1,g+=i,c=k[++w]}else a.push(_);return{layout:a,countRemoved:g}},n.reflowLargerApplyNewLayout=function(f,k){let a=[];for(let w=0;w<k.length;w++)a.push(f.get(k[w]));for(let w=0;w<a.length;w++)f.set(w,a[w]);f.length=k.length},n.reflowSmallerGetNewLineLengths=function(f,k,a){let w=[],c=f.map(((p,h)=>l(f,h,k))).reduce(((p,h)=>p+h)),g=0,_=0,i=0;for(;i<c;){if(c-i<a){w.push(c-i);break}g+=a;let p=l(f,_,k);g>p&&(g-=p,_++);let h=f[_].getWidth(g-1)===2;h&&g--;let d=h?a-1:a;w.push(d),i+=d}return w},n.getWrappedLineTrimmedLength=l},4097:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferSet=void 0;let f=l(7150),k=l(1073),a=l(802);class w extends f.Disposable{constructor(g,_){super(),this._optionsService=g,this._bufferService=_,this._onBufferActivate=this._register(new a.Emitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this._register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this._register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new k.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new k.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(g){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(g),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(g,_){this._normal.resize(g,_),this._alt.resize(g,_),this.setupTabStops(g)}setupTabStops(g){this._normal.setupTabStops(g),this._alt.setupTabStops(g)}}n.BufferSet=w},3055:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let f=l(726),k=l(8938),a=l(5451);class w extends a.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new a.ExtendedAttrs,this.combinedData=""}static fromCharData(g){let _=new w;return _.setFromCharData(g),_}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,f.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(g){this.fg=g[k.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(g[k.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(g[k.CHAR_DATA_CHAR_INDEX].length===2){let i=g[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){let p=g[k.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=p&&p<=57343?this.content=1024*(i-55296)+p-56320+65536|g[k.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=g[k.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[k.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=g[k.CHAR_DATA_CHAR_INDEX],this.content=2097152|g[k.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}n.CellData=w},8938:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WHITESPACE_CELL_CODE=n.WHITESPACE_CELL_WIDTH=n.WHITESPACE_CELL_CHAR=n.NULL_CELL_CODE=n.NULL_CELL_WIDTH=n.NULL_CELL_CHAR=n.CHAR_DATA_CODE_INDEX=n.CHAR_DATA_WIDTH_INDEX=n.CHAR_DATA_CHAR_INDEX=n.CHAR_DATA_ATTR_INDEX=n.DEFAULT_EXT=n.DEFAULT_ATTR=n.DEFAULT_COLOR=void 0,n.DEFAULT_COLOR=0,n.DEFAULT_ATTR=n.DEFAULT_COLOR<<9|256,n.DEFAULT_EXT=0,n.CHAR_DATA_ATTR_INDEX=0,n.CHAR_DATA_CHAR_INDEX=1,n.CHAR_DATA_WIDTH_INDEX=2,n.CHAR_DATA_CODE_INDEX=3,n.NULL_CELL_CHAR="",n.NULL_CELL_WIDTH=1,n.NULL_CELL_CODE=0,n.WHITESPACE_CELL_CHAR=" ",n.WHITESPACE_CELL_WIDTH=1,n.WHITESPACE_CELL_CODE=32},8158:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let f=l(802),k=l(7150);class a{get id(){return this._id}constructor(c){this.line=c,this.isDisposed=!1,this._disposables=[],this._id=a._nextId++,this._onDispose=this.register(new f.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,k.dispose)(this._disposables),this._disposables.length=0)}register(c){return this._disposables.push(c),c}}n.Marker=a,a._nextId=1},6760:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CHARSET=n.CHARSETS=void 0,n.CHARSETS={},n.DEFAULT_CHARSET=n.CHARSETS.B,n.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},n.CHARSETS.A={"#":"\xA3"},n.CHARSETS.B=void 0,n.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},n.CHARSETS.C=n.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},n.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},n.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},n.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},n.CHARSETS.E=n.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},n.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},n.CHARSETS.H=n.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,n)=>{var l,f,k;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
4
+ `,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(l||(n.C0=l={})),(function(a){a.PAD="\x80",a.HOP="\x81",a.BPH="\x82",a.NBH="\x83",a.IND="\x84",a.NEL="\x85",a.SSA="\x86",a.ESA="\x87",a.HTS="\x88",a.HTJ="\x89",a.VTS="\x8A",a.PLD="\x8B",a.PLU="\x8C",a.RI="\x8D",a.SS2="\x8E",a.SS3="\x8F",a.DCS="\x90",a.PU1="\x91",a.PU2="\x92",a.STS="\x93",a.CCH="\x94",a.MW="\x95",a.SPA="\x96",a.EPA="\x97",a.SOS="\x98",a.SGCI="\x99",a.SCI="\x9A",a.CSI="\x9B",a.ST="\x9C",a.OSC="\x9D",a.PM="\x9E",a.APC="\x9F"})(f||(n.C1=f={})),(function(a){a.ST=`${l.ESC}\\`})(k||(n.C1_ESCAPED=k={}))},726:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Utf8ToUtf32=n.StringToUtf32=void 0,n.stringFromCodePoint=function(l){return l>65535?(l-=65536,String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):String.fromCharCode(l)},n.utf32ToString=function(l,f=0,k=l.length){let a="";for(let w=f;w<k;++w){let c=l[w];c>65535?(c-=65536,a+=String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):a+=String.fromCharCode(c)}return a},n.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(l,f){let k=l.length;if(!k)return 0;let a=0,w=0;if(this._interim){let c=l.charCodeAt(w++);56320<=c&&c<=57343?f[a++]=1024*(this._interim-55296)+c-56320+65536:(f[a++]=this._interim,f[a++]=c),this._interim=0}for(let c=w;c<k;++c){let g=l.charCodeAt(c);if(55296<=g&&g<=56319){if(++c>=k)return this._interim=g,a;let _=l.charCodeAt(c);56320<=_&&_<=57343?f[a++]=1024*(g-55296)+_-56320+65536:(f[a++]=g,f[a++]=_)}else g!==65279&&(f[a++]=g)}return a}},n.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(l,f){let k=l.length;if(!k)return 0;let a,w,c,g,_=0,i=0,p=0;if(this.interim[0]){let u=!1,b=this.interim[0];b&=(224&b)==192?31:(240&b)==224?15:7;let S,P=0;for(;(S=63&this.interim[++P])&&P<4;)b<<=6,b|=S;let E=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,H=E-P;for(;p<H;){if(p>=k)return 0;if(S=l[p++],(192&S)!=128){p--,u=!0;break}this.interim[P++]=S,b<<=6,b|=63&S}u||(E===2?b<128?p--:f[_++]=b:E===3?b<2048||b>=55296&&b<=57343||b===65279||(f[_++]=b):b<65536||b>1114111||(f[_++]=b)),this.interim.fill(0)}let h=k-4,d=p;for(;d<k;){for(;!(!(d<h)||128&(a=l[d])||128&(w=l[d+1])||128&(c=l[d+2])||128&(g=l[d+3]));)f[_++]=a,f[_++]=w,f[_++]=c,f[_++]=g,d+=4;if(a=l[d++],a<128)f[_++]=a;else if((224&a)==192){if(d>=k)return this.interim[0]=a,_;if(w=l[d++],(192&w)!=128){d--;continue}if(i=(31&a)<<6|63&w,i<128){d--;continue}f[_++]=i}else if((240&a)==224){if(d>=k)return this.interim[0]=a,_;if(w=l[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(c=l[d++],(192&c)!=128){d--;continue}if(i=(15&a)<<12|(63&w)<<6|63&c,i<2048||i>=55296&&i<=57343||i===65279)continue;f[_++]=i}else if((248&a)==240){if(d>=k)return this.interim[0]=a,_;if(w=l[d++],(192&w)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,_;if(c=l[d++],(192&c)!=128){d--;continue}if(d>=k)return this.interim[0]=a,this.interim[1]=w,this.interim[2]=c,_;if(g=l[d++],(192&g)!=128){d--;continue}if(i=(7&a)<<18|(63&w)<<12|(63&c)<<6|63&g,i<65536||i>1114111)continue;f[_++]=i}}return _}}},7428:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeV6=void 0;let f=l(6415),k=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],w;n.UnicodeV6=class{constructor(){if(this.version="6",!w){w=new Uint8Array(65536),w.fill(1),w[0]=0,w.fill(0,1,32),w.fill(0,127,160),w.fill(2,4352,4448),w[9001]=2,w[9002]=2,w.fill(2,11904,42192),w[12351]=1,w.fill(2,44032,55204),w.fill(2,63744,64256),w.fill(2,65040,65050),w.fill(2,65072,65136),w.fill(2,65280,65377),w.fill(2,65504,65511);for(let c=0;c<k.length;++c)w.fill(0,k[c][0],k[c][1]+1)}}wcwidth(c){return c<32?0:c<127?1:c<65536?w[c]:(function(g,_){let i,p=0,h=_.length-1;if(g<_[0][0]||g>_[h][1])return!1;for(;h>=p;)if(i=p+h>>1,g>_[i][1])p=i+1;else{if(!(g<_[i][0]))return!0;h=i-1}return!1})(c,a)?0:c>=131072&&c<=196605||c>=196608&&c<=262141?2:1}charProperties(c,g){let _=this.wcwidth(c),i=_===0&&g!==0;if(i){let p=f.UnicodeService.extractWidth(g);p===0?i=!1:p>_&&(_=p)}return f.UnicodeService.createPropertyValue(0,_,i)}}},3562:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WriteBuffer=void 0;let f=l(7150),k=l(802);class a extends f.Disposable{constructor(c){super(),this._action=c,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this._register(new k.Emitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(c,g){if(g!==void 0&&this._syncCalls>g)return void(this._syncCalls=0);if(this._pendingData+=c.length,this._writeBuffer.push(c),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let _;for(this._isSyncWriting=!0;_=this._writeBuffer.shift();){this._action(_);let i=this._callbacks.shift();i&&i()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(c,g){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+=c.length,this._writeBuffer.push(c),this._callbacks.push(g),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=c.length,this._writeBuffer.push(c),this._callbacks.push(g)}_innerWrite(c=0,g=!0){let _=c||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let i=this._writeBuffer[this._bufferOffset],p=this._action(i,g);if(p){let d=u=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,u))):this._innerWrite(_,u);return void p.catch((u=>(queueMicrotask((()=>{throw u})),Promise.resolve(!1)))).then(d)}let h=this._callbacks[this._bufferOffset];if(h&&h(),this._bufferOffset++,this._pendingData-=i.length,performance.now()-_>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}n.WriteBuffer=a},8693:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.parseColor=function(a){if(!a)return;let w=a.toLowerCase();if(w.indexOf("rgb:")===0){w=w.slice(4);let c=l.exec(w);if(c){let g=c[1]?15:c[4]?255:c[7]?4095:65535;return[Math.round(parseInt(c[1]||c[4]||c[7]||c[10],16)/g*255),Math.round(parseInt(c[2]||c[5]||c[8]||c[11],16)/g*255),Math.round(parseInt(c[3]||c[6]||c[9]||c[12],16)/g*255)]}}else if(w.indexOf("#")===0&&(w=w.slice(1),f.exec(w)&&[3,6,9,12].includes(w.length))){let c=w.length/3,g=[0,0,0];for(let _=0;_<3;++_){let i=parseInt(w.slice(c*_,c*_+c),16);g[_]=c===1?i<<4:c===2?i:c===3?i>>4:i>>8}return g}},n.toRgbString=function(a,w=16){let[c,g,_]=a;return`rgb:${k(c,w)}/${k(g,w)}/${k(_,w)}`};let l=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,f=/^[\da-f]+$/;function k(a,w){let c=a.toString(16),g=c.length<2?"0"+c:c;switch(w){case 4:return c[0];case 8:return g;case 12:return(g+g).slice(0,3);default:return g+g}}},1263:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.PAYLOAD_LIMIT=void 0,n.PAYLOAD_LIMIT=1e7},9823:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DcsHandler=n.DcsParser=void 0;let f=l(726),k=l(7262),a=l(1263),w=[];n.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=w,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=w}registerHandler(g,_){this._handlers[g]===void 0&&(this._handlers[g]=[]);let i=this._handlers[g];return i.push(_),{dispose:()=>{let p=i.indexOf(_);p!==-1&&i.splice(p,1)}}}clearHandler(g){this._handlers[g]&&delete this._handlers[g]}setHandlerFallback(g){this._handlerFb=g}reset(){if(this._active.length)for(let g=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;g>=0;--g)this._active[g].unhook(!1);this._stack.paused=!1,this._active=w,this._ident=0}hook(g,_){if(this.reset(),this._ident=g,this._active=this._handlers[g]||w,this._active.length)for(let i=this._active.length-1;i>=0;i--)this._active[i].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(g,_,i){if(this._active.length)for(let p=this._active.length-1;p>=0;p--)this._active[p].put(g,_,i);else this._handlerFb(this._ident,"PUT",(0,f.utf32ToString)(g,_,i))}unhook(g,_=!0){if(this._active.length){let i=!1,p=this._active.length-1,h=!1;if(this._stack.paused&&(p=this._stack.loopPosition-1,i=_,h=this._stack.fallThrough,this._stack.paused=!1),!h&&i===!1){for(;p>=0&&(i=this._active[p].unhook(g),i!==!0);p--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!1,i;p--}for(;p>=0;p--)if(i=this._active[p].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",g);this._active=w,this._ident=0}};let c=new k.Params;c.addParam(0),n.DcsHandler=class{constructor(g){this._handler=g,this._data="",this._params=c,this._hitLimit=!1}hook(g){this._params=g.length>1||g.params[0]?g.clone():c,this._data="",this._hitLimit=!1}put(g,_,i){this._hitLimit||(this._data+=(0,f.utf32ToString)(g,_,i),this._data.length>a.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(g){let _=!1;if(this._hitLimit)_=!1;else if(g&&(_=this._handler(this._data,this._params),_ instanceof Promise))return _.then((i=>(this._params=c,this._data="",this._hitLimit=!1,i)));return this._params=c,this._data="",this._hitLimit=!1,_}}},6717:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.EscapeSequenceParser=n.VT500_TRANSITION_TABLE=n.TransitionTable=void 0;let f=l(7150),k=l(7262),a=l(1346),w=l(9823);class c{constructor(p){this.table=new Uint8Array(p)}setDefault(p,h){this.table.fill(p<<4|h)}add(p,h,d,u){this.table[h<<8|p]=d<<4|u}addMany(p,h,d,u){for(let b=0;b<p.length;b++)this.table[h<<8|p[b]]=d<<4|u}}n.TransitionTable=c;let g=160;n.VT500_TRANSITION_TABLE=(function(){let i=new c(4095),p=Array.apply(null,Array(256)).map(((P,E)=>E)),h=(P,E)=>p.slice(P,E),d=h(32,127),u=h(0,24);u.push(25),u.push.apply(u,h(28,32));let b=h(0,14),S;for(S in i.setDefault(1,0),i.addMany(d,0,2,0),b)i.addMany([24,26,153,154],S,3,0),i.addMany(h(128,144),S,3,0),i.addMany(h(144,152),S,3,0),i.add(156,S,0,0),i.add(27,S,11,1),i.add(157,S,4,8),i.addMany([152,158,159],S,0,7),i.add(155,S,11,3),i.add(144,S,11,9);return i.addMany(u,0,3,0),i.addMany(u,1,3,1),i.add(127,1,0,1),i.addMany(u,8,0,8),i.addMany(u,3,3,3),i.add(127,3,0,3),i.addMany(u,4,3,4),i.add(127,4,0,4),i.addMany(u,6,3,6),i.addMany(u,5,3,5),i.add(127,5,0,5),i.addMany(u,2,3,2),i.add(127,2,0,2),i.add(93,1,4,8),i.addMany(d,8,5,8),i.add(127,8,5,8),i.addMany([156,27,24,26,7],8,6,0),i.addMany(h(28,32),8,0,8),i.addMany([88,94,95],1,0,7),i.addMany(d,7,0,7),i.addMany(u,7,0,7),i.add(156,7,0,0),i.add(127,7,0,7),i.add(91,1,11,3),i.addMany(h(64,127),3,7,0),i.addMany(h(48,60),3,8,4),i.addMany([60,61,62,63],3,9,4),i.addMany(h(48,60),4,8,4),i.addMany(h(64,127),4,7,0),i.addMany([60,61,62,63],4,0,6),i.addMany(h(32,64),6,0,6),i.add(127,6,0,6),i.addMany(h(64,127),6,0,0),i.addMany(h(32,48),3,9,5),i.addMany(h(32,48),5,9,5),i.addMany(h(48,64),5,0,6),i.addMany(h(64,127),5,7,0),i.addMany(h(32,48),4,9,5),i.addMany(h(32,48),1,9,2),i.addMany(h(32,48),2,9,2),i.addMany(h(48,127),2,10,0),i.addMany(h(48,80),1,10,0),i.addMany(h(81,88),1,10,0),i.addMany([89,90,92],1,10,0),i.addMany(h(96,127),1,10,0),i.add(80,1,11,9),i.addMany(u,9,0,9),i.add(127,9,0,9),i.addMany(h(28,32),9,0,9),i.addMany(h(32,48),9,9,12),i.addMany(h(48,60),9,8,10),i.addMany([60,61,62,63],9,9,10),i.addMany(u,11,0,11),i.addMany(h(32,128),11,0,11),i.addMany(h(28,32),11,0,11),i.addMany(u,10,0,10),i.add(127,10,0,10),i.addMany(h(28,32),10,0,10),i.addMany(h(48,60),10,8,10),i.addMany([60,61,62,63],10,0,11),i.addMany(h(32,48),10,9,12),i.addMany(u,12,0,12),i.add(127,12,0,12),i.addMany(h(28,32),12,0,12),i.addMany(h(32,48),12,9,12),i.addMany(h(48,64),12,0,11),i.addMany(h(64,127),12,12,13),i.addMany(h(64,127),10,12,13),i.addMany(h(64,127),9,12,13),i.addMany(u,13,13,13),i.addMany(d,13,13,13),i.add(127,13,0,13),i.addMany([27,156,24,26],13,14,0),i.add(g,0,2,0),i.add(g,8,5,8),i.add(g,6,0,6),i.add(g,11,0,11),i.add(g,13,13,13),i})();class _ extends f.Disposable{constructor(p=n.VT500_TRANSITION_TABLE){super(),this._transitions=p,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new k.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(h,d,u)=>{},this._executeHandlerFb=h=>{},this._csiHandlerFb=(h,d)=>{},this._escHandlerFb=h=>{},this._errorHandlerFb=h=>h,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,f.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new a.OscParser),this._dcsParser=this._register(new w.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(p,h=[64,126]){let d=0;if(p.prefix){if(p.prefix.length>1)throw new Error("only one byte as prefix supported");if(d=p.prefix.charCodeAt(0),d&&60>d||d>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(p.intermediates){if(p.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let b=0;b<p.intermediates.length;++b){let S=p.intermediates.charCodeAt(b);if(32>S||S>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");d<<=8,d|=S}}if(p.final.length!==1)throw new Error("final must be a single byte");let u=p.final.charCodeAt(0);if(h[0]>u||u>h[1])throw new Error(`final must be in range ${h[0]} .. ${h[1]}`);return d<<=8,d|=u,d}identToString(p){let h=[];for(;p;)h.push(String.fromCharCode(255&p)),p>>=8;return h.reverse().join("")}setPrintHandler(p){this._printHandler=p}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(p,h){let d=this._identifier(p,[48,126]);this._escHandlers[d]===void 0&&(this._escHandlers[d]=[]);let u=this._escHandlers[d];return u.push(h),{dispose:()=>{let b=u.indexOf(h);b!==-1&&u.splice(b,1)}}}clearEscHandler(p){this._escHandlers[this._identifier(p,[48,126])]&&delete this._escHandlers[this._identifier(p,[48,126])]}setEscHandlerFallback(p){this._escHandlerFb=p}setExecuteHandler(p,h){this._executeHandlers[p.charCodeAt(0)]=h}clearExecuteHandler(p){this._executeHandlers[p.charCodeAt(0)]&&delete this._executeHandlers[p.charCodeAt(0)]}setExecuteHandlerFallback(p){this._executeHandlerFb=p}registerCsiHandler(p,h){let d=this._identifier(p);this._csiHandlers[d]===void 0&&(this._csiHandlers[d]=[]);let u=this._csiHandlers[d];return u.push(h),{dispose:()=>{let b=u.indexOf(h);b!==-1&&u.splice(b,1)}}}clearCsiHandler(p){this._csiHandlers[this._identifier(p)]&&delete this._csiHandlers[this._identifier(p)]}setCsiHandlerFallback(p){this._csiHandlerFb=p}registerDcsHandler(p,h){return this._dcsParser.registerHandler(this._identifier(p),h)}clearDcsHandler(p){this._dcsParser.clearHandler(this._identifier(p))}setDcsHandlerFallback(p){this._dcsParser.setHandlerFallback(p)}registerOscHandler(p,h){return this._oscParser.registerHandler(p,h)}clearOscHandler(p){this._oscParser.clearHandler(p)}setOscHandlerFallback(p){this._oscParser.setHandlerFallback(p)}setErrorHandler(p){this._errorHandler=p}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(p,h,d,u,b){this._parseStack.state=p,this._parseStack.handlers=h,this._parseStack.handlerPos=d,this._parseStack.transition=u,this._parseStack.chunkPos=b}parse(p,h,d){let u,b=0,S=0,P=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,P=this._parseStack.chunkPos+1;else{if(d===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let E=this._parseStack.handlers,H=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](this._params),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 4:if(d===!1&&H>-1){for(;H>=0&&(u=E[H](),u!==!0);H--)if(u instanceof Promise)return this._parseStack.handlerPos=H,u}this._parseStack.handlers=[];break;case 6:if(b=p[this._parseStack.chunkPos],u=this._dcsParser.unhook(b!==24&&b!==26,d),u)return u;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=p[this._parseStack.chunkPos],u=this._oscParser.end(b!==24&&b!==26,d),u)return u;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,P=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let E=P;E<h;++E){switch(b=p[E],S=this._transitions.table[this.currentState<<8|(b<160?b:g)],S>>4){case 2:for(let A=E+1;;++A){if(A>=h||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=h||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}}break;case 3:this._executeHandlers[b]?this._executeHandlers[b]():this._executeHandlerFb(b),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:E,code:b,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let H=this._csiHandlers[this._collect<<8|b],$=H?H.length-1:-1;for(;$>=0&&(u=H[$](this._params),u!==!0);$--)if(u instanceof Promise)return this._preserveStack(3,H,$,S,E),u;$<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingJoinState=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++E<h&&(b=p[E])>47&&b<60);E--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:let D=this._escHandlers[this._collect<<8|b],x=D?D.length-1:-1;for(;x>=0&&(u=D[x](),u!==!0);x--)if(u instanceof Promise)return this._preserveStack(4,D,x,S,E),u;x<0&&this._escHandlerFb(this._collect<<8|b),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|b,this._params);break;case 13:for(let A=E+1;;++A)if(A>=h||(b=p[A])===24||b===26||b===27||b>127&&b<g){this._dcsParser.put(p,E,A),E=A-1;break}break;case 14:if(u=this._dcsParser.unhook(b!==24&&b!==26),u)return this._preserveStack(6,[],0,S,E),u;b===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let A=E+1;;A++)if(A>=h||(b=p[A])<32||b>127&&b<g){this._oscParser.put(p,E,A),E=A-1;break}break;case 6:if(u=this._oscParser.end(b!==24&&b!==26),u)return this._preserveStack(5,[],0,S,E),u;b===27&&(S|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&S}}}n.EscapeSequenceParser=_},1346:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let f=l(1263),k=l(726),a=[];n.OscParser=class{constructor(){this._state=0,this._active=a,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(w,c){this._handlers[w]===void 0&&(this._handlers[w]=[]);let g=this._handlers[w];return g.push(c),{dispose:()=>{let _=g.indexOf(c);_!==-1&&g.splice(_,1)}}}clearHandler(w){this._handlers[w]&&delete this._handlers[w]}setHandlerFallback(w){this._handlerFb=w}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=a}reset(){if(this._state===2)for(let w=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;w>=0;--w)this._active[w].end(!1);this._stack.paused=!1,this._active=a,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||a,this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].start();else this._handlerFb(this._id,"START")}_put(w,c,g){if(this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].put(w,c,g);else this._handlerFb(this._id,"PUT",(0,k.utf32ToString)(w,c,g))}start(){this.reset(),this._state=1}put(w,c,g){if(this._state!==3){if(this._state===1)for(;c<g;){let _=w[c++];if(_===59){this._state=2,this._start();break}if(_<48||57<_)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+_-48}this._state===2&&g-c>0&&this._put(w,c,g)}}end(w,c=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let g=!1,_=this._active.length-1,i=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,g=c,i=this._stack.fallThrough,this._stack.paused=!1),!i&&g===!1){for(;_>=0&&(g=this._active[_].end(w),g!==!0);_--)if(g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!1,g;_--}for(;_>=0;_--)if(g=this._active[_].end(!1),g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=_,this._stack.fallThrough=!0,g}else this._handlerFb(this._id,"END",w);this._active=a,this._id=-1,this._state=0}}},n.OscHandler=class{constructor(w){this._handler=w,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(w,c,g){this._hitLimit||(this._data+=(0,k.utf32ToString)(w,c,g),this._data.length>f.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(w){let c=!1;if(this._hitLimit)c=!1;else if(w&&(c=this._handler(this._data),c instanceof Promise))return c.then((g=>(this._data="",this._hitLimit=!1,g)));return this._data="",this._hitLimit=!1,c}}},7262:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Params=void 0;let l=2147483647;class f{static fromArray(a){let w=new f;if(!a.length)return w;for(let c=Array.isArray(a[0])?1:0;c<a.length;++c){let g=a[c];if(Array.isArray(g))for(let _=0;_<g.length;++_)w.addSubParam(g[_]);else w.addParam(g)}return w}constructor(a=32,w=32){if(this.maxLength=a,this.maxSubParamsLength=w,w>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a),this.length=0,this._subParams=new Int32Array(w),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(a),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let a=new f(this.maxLength,this.maxSubParamsLength);return a.params.set(this.params),a.length=this.length,a._subParams.set(this._subParams),a._subParamsLength=this._subParamsLength,a._subParamsIdx.set(this._subParamsIdx),a._rejectDigits=this._rejectDigits,a._rejectSubDigits=this._rejectSubDigits,a._digitIsSub=this._digitIsSub,a}toArray(){let a=[];for(let w=0;w<this.length;++w){a.push(this.params[w]);let c=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-c>0&&a.push(Array.prototype.slice.call(this._subParams,c,g))}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>l?l: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>l?l:a,this._subParamsIdx[this.length-1]++}}hasSubParams(a){return(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)>0}getSubParams(a){let w=this._subParamsIdx[a]>>8,c=255&this._subParamsIdx[a];return c-w>0?this._subParams.subarray(w,c):null}getSubParamsAll(){let a={};for(let w=0;w<this.length;++w){let c=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-c>0&&(a[w]=this._subParams.slice(c,g))}return a}addDigit(a){let w;if(this._rejectDigits||!(w=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let c=this._digitIsSub?this._subParams:this.params,g=c[w-1];c[w-1]=~g?Math.min(10*g+a,l):a}}n.Params=f},3027:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.AddonManager=void 0,n.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let l=this._addons.length-1;l>=0;l--)this._addons[l].instance.dispose()}loadAddon(l,f){let k={instance:f,dispose:f.dispose,isDisposed:!1};this._addons.push(k),f.dispose=()=>this._wrappedAddonDispose(k),f.activate(l)}_wrappedAddonDispose(l){if(l.isDisposed)return;let f=-1;for(let k=0;k<this._addons.length;k++)if(this._addons[k]===l){f=k;break}if(f===-1)throw new Error("Could not dispose an addon that has not been loaded");l.isDisposed=!0,l.dispose.apply(l.instance),this._addons.splice(f,1)}}},3235:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferApiView=void 0;let f=l(793),k=l(3055);n.BufferApiView=class{constructor(a,w){this._buffer=a,this.type=w}init(a){return this._buffer=a,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(a){let w=this._buffer.lines.get(a);if(w)return new f.BufferLineApiView(w)}getNullCell(){return new k.CellData}}},793:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let f=l(3055);n.BufferLineApiView=class{constructor(k){this._line=k}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(k,a){if(!(k<0||k>=this._line.length))return a?(this._line.loadCell(k,a),a):this._line.loadCell(k,new f.CellData)}translateToString(k,a,w){return this._line.translateToString(k,a,w)}}},5101:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let f=l(3235),k=l(7150),a=l(802);class w extends k.Disposable{constructor(g){super(),this._core=g,this._onBufferChange=this._register(new a.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new f.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new f.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}n.BufferNamespaceApi=w},6097:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ParserApi=void 0,n.ParserApi=class{constructor(l){this._core=l}registerCsiHandler(l,f){return this._core.registerCsiHandler(l,(k=>f(k.toArray())))}addCsiHandler(l,f){return this.registerCsiHandler(l,f)}registerDcsHandler(l,f){return this._core.registerDcsHandler(l,((k,a)=>f(k,a.toArray())))}addDcsHandler(l,f){return this.registerDcsHandler(l,f)}registerEscHandler(l,f){return this._core.registerEscHandler(l,f)}addEscHandler(l,f){return this.registerEscHandler(l,f)}registerOscHandler(l,f){return this._core.registerOscHandler(l,f)}addOscHandler(l,f){return this.registerOscHandler(l,f)}}},4335:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeApi=void 0,n.UnicodeApi=class{constructor(l){this._core=l}register(l){this._core.unicodeService.register(l)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(l){this._core.unicodeService.activeVersion=l}}},9640:function(y,n,l){var f=this&&this.__decorate||function(i,p,h,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,h):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,h,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,h,S):u(p,h))||S);return b>3&&S&&Object.defineProperty(p,h,S),S},k=this&&this.__param||function(i,p){return function(h,d){p(h,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.BufferService=n.MINIMUM_ROWS=n.MINIMUM_COLS=void 0;let a=l(7150),w=l(4097),c=l(6501),g=l(802);n.MINIMUM_COLS=2,n.MINIMUM_ROWS=1;let _=class extends a.Disposable{get buffer(){return this.buffers.active}constructor(i){super(),this.isUserScrolling=!1,this._onResize=this._register(new g.Emitter),this.onResize=this._onResize.event,this._onScroll=this._register(new g.Emitter),this.onScroll=this._onScroll.event,this.cols=Math.max(i.rawOptions.cols||0,n.MINIMUM_COLS),this.rows=Math.max(i.rawOptions.rows||0,n.MINIMUM_ROWS),this.buffers=this._register(new w.BufferSet(i,this)),this._register(this.buffers.onBufferActivate((p=>{this._onScroll.fire(p.activeBuffer.ydisp)})))}resize(i,p){let h=this.cols!==i,d=this.rows!==p;this.cols=i,this.rows=p,this.buffers.resize(i,p),this._onResize.fire({cols:i,rows:p,colsChanged:h,rowsChanged:d})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(i,p=!1){let h=this.buffer,d;d=this._cachedBlankLine,d&&d.length===this.cols&&d.getFg(0)===i.fg&&d.getBg(0)===i.bg||(d=h.getBlankLine(i,p),this._cachedBlankLine=d),d.isWrapped=p;let u=h.ybase+h.scrollTop,b=h.ybase+h.scrollBottom;if(h.scrollTop===0){let S=h.lines.isFull;b===h.lines.length-1?S?h.lines.recycle().copyFrom(d):h.lines.push(d.clone()):h.lines.splice(b+1,0,d.clone()),S?this.isUserScrolling&&(h.ydisp=Math.max(h.ydisp-1,0)):(h.ybase++,this.isUserScrolling||h.ydisp++)}else{let S=b-u+1;h.lines.shiftElements(u+1,S-1,-1),h.lines.set(b,d.clone())}this.isUserScrolling||(h.ydisp=h.ybase),this._onScroll.fire(h.ydisp)}scrollLines(i,p){let h=this.buffer;if(i<0){if(h.ydisp===0)return;this.isUserScrolling=!0}else i+h.ydisp>=h.ybase&&(this.isUserScrolling=!1);let d=h.ydisp;h.ydisp=Math.max(Math.min(h.ydisp+i,h.ybase),0),d!==h.ydisp&&(p||this._onScroll.fire(h.ydisp))}};n.BufferService=_,n.BufferService=_=f([k(0,c.IOptionsService)],_)},5746:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CharsetService=void 0,n.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(l){this.glevel=l,this.charset=this._charsets[l]}setgCharset(l,f){this._charsets[l]=f,this.glevel===l&&(this.charset=f)}}},7792:function(y,n,l){var f=this&&this.__decorate||function(d,u,b,S){var P,E=arguments.length,H=E<3?u:S===null?S=Object.getOwnPropertyDescriptor(u,b):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")H=Reflect.decorate(d,u,b,S);else for(var $=d.length-1;$>=0;$--)(P=d[$])&&(H=(E<3?P(H):E>3?P(u,b,H):P(u,b))||H);return E>3&&H&&Object.defineProperty(u,b,H),H},k=this&&this.__param||function(d,u){return function(b,S){u(b,S,d)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreMouseService=void 0;let a=l(6501),w=l(7150),c=l(802),g={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:d=>d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)},VT200:{events:19,restrict:d=>d.action!==32},DRAG:{events:23,restrict:d=>d.action!==32||d.button!==3},ANY:{events:31,restrict:d=>!0}};function _(d,u){let b=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(b|=64,b|=d.action):(b|=3&d.button,4&d.button&&(b|=64),8&d.button&&(b|=128),d.action===32?b|=32:d.action!==0||u||(b|=3)),b}let i=String.fromCharCode,p={DEFAULT:d=>{let u=[_(d,!1)+32,d.col+32,d.row+32];return u[0]>255||u[1]>255||u[2]>255?"":`\x1B[M${i(u[0])}${i(u[1])}${i(u[2])}`},SGR:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.col};${d.row}${u}`},SGR_PIXELS:d=>{let u=d.action===0&&d.button!==4?"m":"M";return`\x1B[<${_(d,!0)};${d.x};${d.y}${u}`}},h=class extends w.Disposable{constructor(d,u,b){super(),this._bufferService=d,this._coreService=u,this._optionsService=b,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new c.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(g))this.addProtocol(S,g[S]);for(let S of Object.keys(p))this.addEncoding(S,p[S]);this.reset()}addProtocol(d,u){this._protocols[d]=u}addEncoding(d,u){this._encodings[d]=u}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(d){if(!this._protocols[d])throw new Error(`unknown protocol "${d}"`);this._activeProtocol=d,this._onProtocolChange.fire(this._protocols[d].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(d){if(!this._encodings[d])throw new Error(`unknown encoding "${d}"`);this._activeEncoding=d}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(d,u,b){if(d.deltaY===0||d.shiftKey||u===void 0||b===void 0)return 0;let S=u/b,P=this._applyScrollModifier(d.deltaY,d);return d.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(P/=S+0,Math.abs(d.deltaY)<50&&(P*=.3),this._wheelPartialScroll+=P,P=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):d.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(P*=this._bufferService.rows),P}_applyScrollModifier(d,u){return u.altKey||u.ctrlKey||u.shiftKey?d*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:d*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(d){if(d.col<0||d.col>=this._bufferService.cols||d.row<0||d.row>=this._bufferService.rows||d.button===4&&d.action===32||d.button===3&&d.action!==32||d.button!==4&&(d.action===2||d.action===3)||(d.col++,d.row++,d.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,d,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(d))return!1;let u=this._encodings[this._activeEncoding](d);return u&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(u):this._coreService.triggerDataEvent(u,!0)),this._lastEvent=d,!0}explainEvents(d){return{down:!!(1&d),up:!!(2&d),drag:!!(4&d),move:!!(8&d),wheel:!!(16&d)}}_equalEvents(d,u,b){if(b){if(d.x!==u.x||d.y!==u.y)return!1}else if(d.col!==u.col||d.row!==u.row)return!1;return d.button===u.button&&d.action===u.action&&d.ctrl===u.ctrl&&d.alt===u.alt&&d.shift===u.shift}};n.CoreMouseService=h,n.CoreMouseService=h=f([k(0,a.IBufferService),k(1,a.ICoreService),k(2,a.IOptionsService)],h)},4071:function(y,n,l){var f=this&&this.__decorate||function(h,d,u,b){var S,P=arguments.length,E=P<3?d:b===null?b=Object.getOwnPropertyDescriptor(d,u):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(h,d,u,b);else for(var H=h.length-1;H>=0;H--)(S=h[H])&&(E=(P<3?S(E):P>3?S(d,u,E):S(d,u))||E);return P>3&&E&&Object.defineProperty(d,u,E),E},k=this&&this.__param||function(h,d){return function(u,b){d(u,b,h)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreService=void 0;let a=l(7453),w=l(7150),c=l(6501),g=l(802),_=Object.freeze({insertMode:!1}),i=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),p=class extends w.Disposable{constructor(h,d,u){super(),this._bufferService=h,this._logService=d,this._optionsService=u,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new g.Emitter),this.onData=this._onData.event,this._onUserInput=this._register(new g.Emitter),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new g.Emitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new g.Emitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}reset(){this.modes=(0,a.clone)(_),this.decPrivateModes=(0,a.clone)(i)}triggerDataEvent(h,d=!1){if(this._optionsService.rawOptions.disableStdin)return;let u=this._bufferService.buffer;d&&this._optionsService.rawOptions.scrollOnUserInput&&u.ybase!==u.ydisp&&this._onRequestScrollToBottom.fire(),d&&this._onUserInput.fire(),this._logService.debug(`sending data "${h}"`),this._logService.trace("sending data (codes)",(()=>h.split("").map((b=>b.charCodeAt(0))))),this._onData.fire(h)}triggerBinaryEvent(h){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${h}"`),this._logService.trace("sending binary (codes)",(()=>h.split("").map((d=>d.charCodeAt(0))))),this._onBinary.fire(h))}};n.CoreService=p,n.CoreService=p=f([k(0,c.IBufferService),k(1,c.ILogService),k(2,c.IOptionsService)],p)},6025:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let f=l(6501),k=l(6201);class a{constructor(...c){this._entries=new Map;for(let[g,_]of c)this.set(g,_)}set(c,g){let _=this._entries.get(c);return this._entries.set(c,g),_}forEach(c){for(let[g,_]of this._entries.entries())c(g,_)}has(c){return this._entries.has(c)}get(c){return this._entries.get(c)}}n.ServiceCollection=a,n.InstantiationService=class{constructor(){this._services=new a,this._services.set(f.IInstantiationService,this)}setService(w,c){this._services.set(w,c)}getService(w){return this._services.get(w)}createInstance(w,...c){let g=(0,k.getServiceDependencies)(w).sort(((p,h)=>p.index-h.index)),_=[];for(let p of g){let h=this._services.get(p.id);if(!h)throw new Error(`[createInstance] ${w.name} depends on UNKNOWN service ${p.id._id}.`);_.push(h)}let i=g.length>0?g[0].index:c.length;if(c.length!==i)throw new Error(`[createInstance] First service dependency of ${w.name} at position ${i+1} conflicts with ${c.length} static arguments`);return new w(...c,..._)}}},7276:function(y,n,l){var f=this&&this.__decorate||function(i,p,h,d){var u,b=arguments.length,S=b<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,h):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(i,p,h,d);else for(var P=i.length-1;P>=0;P--)(u=i[P])&&(S=(b<3?u(S):b>3?u(p,h,S):u(p,h))||S);return b>3&&S&&Object.defineProperty(p,h,S),S},k=this&&this.__param||function(i,p){return function(h,d){p(h,d,i)}};Object.defineProperty(n,"__esModule",{value:!0}),n.LogService=void 0,n.setTraceLogger=function(i){g=i},n.traceCall=function(i,p,h){if(typeof h.value!="function")throw new Error("not supported");let d=h.value;h.value=function(...u){if(g.logLevel!==w.LogLevelEnum.TRACE)return d.apply(this,u);g.trace(`GlyphRenderer#${d.name}(${u.map((S=>JSON.stringify(S))).join(", ")})`);let b=d.apply(this,u);return g.trace(`GlyphRenderer#${d.name} return`,b),b}};let a=l(7150),w=l(6501),c={trace:w.LogLevelEnum.TRACE,debug:w.LogLevelEnum.DEBUG,info:w.LogLevelEnum.INFO,warn:w.LogLevelEnum.WARN,error:w.LogLevelEnum.ERROR,off:w.LogLevelEnum.OFF},g,_=class extends a.Disposable{get logLevel(){return this._logLevel}constructor(i){super(),this._optionsService=i,this._logLevel=w.LogLevelEnum.OFF,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),g=this}_updateLogLevel(){this._logLevel=c[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(i){for(let p=0;p<i.length;p++)typeof i[p]=="function"&&(i[p]=i[p]())}_log(i,p,h){this._evalLazyOptionalParams(h),i.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+p,...h)}trace(i,...p){this._logLevel<=w.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,i,p)}debug(i,...p){this._logLevel<=w.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,i,p)}info(i,...p){this._logLevel<=w.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,i,p)}warn(i,...p){this._logLevel<=w.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,i,p)}error(i,...p){this._logLevel<=w.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,i,p)}};n.LogService=_,n.LogService=_=f([k(0,w.IOptionsService)],_)},56:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let f=l(7150),k=l(701),a=l(802);n.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnEraseInDisplay:!1,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},reflowCursorLine:!1,rescaleOverlappingGlyphs:!1,rightClickSelectsWord:k.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let w=["normal","bold","100","200","300","400","500","600","700","800","900"];class c extends f.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let i={...n.DEFAULT_OPTIONS};for(let p in _)if(p in i)try{let h=_[p];i[p]=this._sanitizeAndValidateOption(p,h)}catch(h){console.error(h)}this.rawOptions=i,this.options={...i},this._setupOptions(),this._register((0,f.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,i){return this.onOptionChange((p=>{p===_&&i(this.rawOptions[_])}))}onMultipleOptionChange(_,i){return this.onOptionChange((p=>{_.indexOf(p)!==-1&&i()}))}_setupOptions(){let _=p=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);return this.rawOptions[p]},i=(p,h)=>{if(!(p in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${p}"`);h=this._sanitizeAndValidateOption(p,h),this.rawOptions[p]!==h&&(this.rawOptions[p]=h,this._onOptionChange.fire(p))};for(let p in this.rawOptions){let h={get:_.bind(this,p),set:i.bind(this,p)};Object.defineProperty(this.options,p,h)}}_sanitizeAndValidateOption(_,i){switch(_){case"cursorStyle":if(i||(i=n.DEFAULT_OPTIONS[_]),!(function(p){return p==="block"||p==="underline"||p==="bar"})(i))throw new Error(`"${i}" is not a valid value for ${_}`);break;case"wordSeparator":i||(i=n.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof i=="number"&&1<=i&&i<=1e3)break;i=w.includes(i)?i:n.DEFAULT_OPTIONS[_];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${_} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&i!==0)throw new Error(`${_} must be numeric, value: ${i}`);break;case"windowsPty":i=i??{}}return i}}n.OptionsService=c},8811:function(y,n,l){var f=this&&this.__decorate||function(c,g,_,i){var p,h=arguments.length,d=h<3?g:i===null?i=Object.getOwnPropertyDescriptor(g,_):i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(c,g,_,i);else for(var u=c.length-1;u>=0;u--)(p=c[u])&&(d=(h<3?p(d):h>3?p(g,_,d):p(g,_))||d);return h>3&&d&&Object.defineProperty(g,_,d),d},k=this&&this.__param||function(c,g){return function(_,i){g(_,i,c)}};Object.defineProperty(n,"__esModule",{value:!0}),n.OscLinkService=void 0;let a=l(6501),w=class{constructor(c){this._bufferService=c,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(c){let g=this._bufferService.buffer;if(c.id===void 0){let u=g.addMarker(g.ybase+g.y),b={data:c,id:this._nextId++,lines:[u]};return u.onDispose((()=>this._removeMarkerFromLink(b,u))),this._dataByLinkId.set(b.id,b),b.id}let _=c,i=this._getEntryIdKey(_),p=this._entriesWithId.get(i);if(p)return this.addLineToLink(p.id,g.ybase+g.y),p.id;let h=g.addMarker(g.ybase+g.y),d={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[h]};return h.onDispose((()=>this._removeMarkerFromLink(d,h))),this._entriesWithId.set(d.key,d),this._dataByLinkId.set(d.id,d),d.id}addLineToLink(c,g){let _=this._dataByLinkId.get(c);if(_&&_.lines.every((i=>i.line!==g))){let i=this._bufferService.buffer.addMarker(g);_.lines.push(i),i.onDispose((()=>this._removeMarkerFromLink(_,i)))}}getLinkData(c){return this._dataByLinkId.get(c)?.data}_getEntryIdKey(c){return`${c.id};;${c.uri}`}_removeMarkerFromLink(c,g){let _=c.lines.indexOf(g);_!==-1&&(c.lines.splice(_,1),c.lines.length===0&&(c.data.id!==void 0&&this._entriesWithId.delete(c.key),this._dataByLinkId.delete(c.id)))}};n.OscLinkService=w,n.OscLinkService=w=f([k(0,a.IBufferService)],w)},6201:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(k){return k[f]||[]},n.createDecorator=function(k){if(n.serviceRegistry.has(k))return n.serviceRegistry.get(k);let a=function(w,c,g){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,i,p){i[l]===i?i[f].push({id:_,index:p}):(i[f]=[{id:_,index:p}],i[l]=i)})(a,w,g)};return a._id=k,n.serviceRegistry.set(k,a),a};let l="di$target",f="di$dependencies";n.serviceRegistry=new Map},6501:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.IDecorationService=n.IUnicodeService=n.IOscLinkService=n.IOptionsService=n.ILogService=n.LogLevelEnum=n.IInstantiationService=n.ICharsetService=n.ICoreService=n.ICoreMouseService=n.IBufferService=void 0;let f=l(6201);var k;n.IBufferService=(0,f.createDecorator)("BufferService"),n.ICoreMouseService=(0,f.createDecorator)("CoreMouseService"),n.ICoreService=(0,f.createDecorator)("CoreService"),n.ICharsetService=(0,f.createDecorator)("CharsetService"),n.IInstantiationService=(0,f.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(k||(n.LogLevelEnum=k={})),n.ILogService=(0,f.createDecorator)("LogService"),n.IOptionsService=(0,f.createDecorator)("OptionsService"),n.IOscLinkService=(0,f.createDecorator)("OscLinkService"),n.IUnicodeService=(0,f.createDecorator)("UnicodeService"),n.IDecorationService=(0,f.createDecorator)("DecorationService")},6415:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let f=l(7428),k=l(802);class a{static extractShouldJoin(c){return!!(1&c)}static extractWidth(c){return c>>1&3}static extractCharKind(c){return c>>3}static createPropertyValue(c,g,_=!1){return(16777215&c)<<3|(3&g)<<1|(_?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new k.Emitter,this.onChange=this._onChange.event;let c=new f.UnicodeV6;this.register(c),this._active=c.version,this._activeProvider=c}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(c){if(!this._providers[c])throw new Error(`unknown Unicode version "${c}"`);this._active=c,this._activeProvider=this._providers[c],this._onChange.fire(c)}register(c){this._providers[c.version]=c}wcwidth(c){return this._activeProvider.wcwidth(c)}getStringCellWidth(c){let g=0,_=0,i=c.length;for(let p=0;p<i;++p){let h=c.charCodeAt(p);if(55296<=h&&h<=56319){if(++p>=i)return g+this.wcwidth(h);let b=c.charCodeAt(p);56320<=b&&b<=57343?h=1024*(h-55296)+b-56320+65536:g+=this.wcwidth(b)}let d=this.charProperties(h,_),u=a.extractWidth(d);a.extractShouldJoin(d)&&(u-=a.extractWidth(_)),g+=u,_=d}return g}charProperties(c,g){return this._activeProvider.charProperties(c,g)}}n.UnicodeService=a},5856:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Terminal=void 0;let f=l(6107),k=l(5777),a=l(802);class w extends k.CoreTerminal{constructor(g={}){super(g),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(g){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+g)}bell(){this._onBell.fire()}input(g,_=!0){this.coreService.triggerDataEvent(g,_)}resize(g,_){g===this.cols&&_===this.rows||super.resize(g,_)}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 g=1;g<this.rows;g++)this.buffer.lines.push(this.buffer.getBlankLine(f.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp})}}reset(){this.options.rows=this.rows,this.options.cols=this.cols,this._setup(),super.reset()}}n.Terminal=w},3058:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Permutation=n.CallbackIterable=n.ArrayQueue=n.booleanComparator=n.numberComparator=n.CompareResult=void 0,n.tail=function(u,b=0){return u[u.length-(1+b)]},n.tail2=function(u){if(u.length===0)throw new Error("Invalid tail call");return[u.slice(0,u.length-1),u[u.length-1]]},n.equals=function(u,b,S=(P,E)=>P===E){if(u===b)return!0;if(!u||!b||u.length!==b.length)return!1;for(let P=0,E=u.length;P<E;P++)if(!S(u[P],b[P]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(u,b){let S=u.length-1;b<S&&(u[b]=u[S]),u.pop()},n.binarySearch=function(u,b,S){return a(u.length,(P=>S(u[P],b)))},n.binarySearch2=a,n.quickSelect=function u(b,S,P){if((b|=0)>=S.length)throw new TypeError("invalid index");let E=S[Math.floor(S.length*Math.random())],H=[],$=[],D=[];for(let x of S){let A=P(x,E);A<0?H.push(x):A>0?$.push(x):D.push(x)}return b<H.length?u(b,H,P):b<H.length+D.length?D[0]:u(b-(H.length+D.length),$,P)},n.groupBy=function(u,b){let S=[],P;for(let E of u.slice(0).sort(b))P&&b(P[0],E)===0?P.push(E):(P=[E],S.push(P));return S},n.groupAdjacentBy=function*(u,b){let S,P;for(let E of u)P!==void 0&&b(P,E)?S.push(E):(S&&(yield S),S=[E]),P=E;S&&(yield S)},n.forEachAdjacent=function(u,b){for(let S=0;S<=u.length;S++)b(S===0?void 0:u[S-1],S===u.length?void 0:u[S])},n.forEachWithNeighbors=function(u,b){for(let S=0;S<u.length;S++)b(S===0?void 0:u[S-1],u[S],S+1===u.length?void 0:u[S+1])},n.sortedDiff=w,n.delta=function(u,b,S){let P=w(u,b,S),E=[],H=[];for(let $ of P)E.push(...u.slice($.start,$.start+$.deleteCount)),H.push(...$.toInsert);return{removed:E,added:H}},n.top=function(u,b,S){if(S===0)return[];let P=u.slice(0,S).sort(b);return c(u,b,P,S,u.length),P},n.topAsync=function(u,b,S,P,E){return S===0?Promise.resolve([]):new Promise(((H,$)=>{(async()=>{let D=u.length,x=u.slice(0,S).sort(b);for(let A=S,L=Math.min(S+P,D);A<D;A=L,L=Math.min(L+P,D)){if(A>S&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new f.CancellationError;c(u,b,x,A,L)}return x})().then(H,$)}))},n.coalesce=function(u){return u.filter((b=>!!b))},n.coalesceInPlace=function(u){let b=0;for(let S=0;S<u.length;S++)u[S]&&(u[b]=u[S],b+=1);u.length=b},n.move=function(u,b,S){u.splice(S,0,u.splice(b,1)[0])},n.isFalsyOrEmpty=function(u){return!Array.isArray(u)||u.length===0},n.isNonEmptyArray=function(u){return Array.isArray(u)&&u.length>0},n.distinct=function(u,b=S=>S){let S=new Set;return u.filter((P=>{let E=b(P);return!S.has(E)&&(S.add(E),!0)}))},n.uniqueFilter=function(u){let b=new Set;return S=>{let P=u(S);return!b.has(P)&&(b.add(P),!0)}},n.firstOrDefault=function(u,b){return u.length>0?u[0]:b},n.lastOrDefault=function(u,b){return u.length>0?u[u.length-1]:b},n.commonPrefixLength=function(u,b,S=(P,E)=>P===E){let P=0;for(let E=0,H=Math.min(u.length,b.length);E<H&&S(u[E],b[E]);E++)P++;return P},n.range=function(u,b){let S=typeof b=="number"?u:0;typeof b=="number"?S=u:(S=0,b=u);let P=[];if(S<=b)for(let E=S;E<b;E++)P.push(E);else for(let E=S;E>b;E--)P.push(E);return P},n.index=function(u,b,S){return u.reduce(((P,E)=>(P[b(E)]=S?S(E):E,P)),Object.create(null))},n.insert=function(u,b){return u.push(b),()=>g(u,b)},n.remove=g,n.arrayInsert=function(u,b,S){let P=u.slice(0,b),E=u.slice(b);return P.concat(S,E)},n.shuffle=function(u,b){let S;if(typeof b=="number"){let P=b;S=()=>{let E=179426549*Math.sin(P++);return E-Math.floor(E)}}else S=Math.random;for(let P=u.length-1;P>0;P-=1){let E=Math.floor(S()*(P+1)),H=u[P];u[P]=u[E],u[E]=H}},n.pushToStart=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.unshift(b))},n.pushToEnd=function(u,b){let S=u.indexOf(b);S>-1&&(u.splice(S,1),u.push(b))},n.pushMany=function(u,b){for(let S of b)u.push(S)},n.mapArrayOrNot=function(u,b){return Array.isArray(u)?u.map(b):b(u)},n.asArray=function(u){return Array.isArray(u)?u:[u]},n.getRandomElement=function(u){return u[Math.floor(Math.random()*u.length)]},n.insertInto=_,n.splice=function(u,b,S,P){let E=i(u,b),H=u.splice(E,S);return H===void 0&&(H=[]),_(u,E,P),H},n.compareBy=function(u,b){return(S,P)=>b(u(S),u(P))},n.tieBreakComparators=function(...u){return(b,S)=>{for(let P of u){let E=P(b,S);if(!p.isNeitherLessOrGreaterThan(E))return E}return p.neitherLessOrGreaterThan}},n.reverseOrder=function(u){return(b,S)=>-u(b,S)};let f=l(9807),k=l(8297);function a(u,b){let S=0,P=u-1;for(;S<=P;){let E=(S+P)/2|0,H=b(E);if(H<0)S=E+1;else{if(!(H>0))return E;P=E-1}}return-(S+1)}function w(u,b,S){let P=[];function E(D,x,A){if(x===0&&A.length===0)return;let L=P[P.length-1];L&&L.start+L.deleteCount===D?(L.deleteCount+=x,L.toInsert.push(...A)):P.push({start:D,deleteCount:x,toInsert:A})}let H=0,$=0;for(;;){if(H===u.length){E(H,0,b.slice($));break}if($===b.length){E(H,u.length-H,[]);break}let D=u[H],x=b[$],A=S(D,x);A===0?(H+=1,$+=1):A<0?(E(H,1,[]),H+=1):A>0&&(E(H,0,[x]),$+=1)}return P}function c(u,b,S,P,E){for(let H=S.length;P<E;P++){let $=u[P];if(b($,S[H-1])<0){S.pop();let D=(0,k.findFirstIdxMonotonousOrArrLen)(S,(x=>b($,x)<0));S.splice(D,0,$)}}}function g(u,b){let S=u.indexOf(b);if(S>-1)return u.splice(S,1),b}function _(u,b,S){let P=i(u,b),E=u.length,H=S.length;u.length=E+H;for(let $=E-1;$>=P;$--)u[$+H]=u[$];for(let $=0;$<H;$++)u[$+P]=S[$]}function i(u,b){return b<0?Math.max(b+u.length,0):Math.min(b,u.length)}var p;(function(u){u.isLessThan=function(b){return b<0},u.isLessThanOrEqual=function(b){return b<=0},u.isGreaterThan=function(b){return b>0},u.isNeitherLessOrGreaterThan=function(b){return b===0},u.greaterThan=1,u.lessThan=-1,u.neitherLessOrGreaterThan=0})(p||(n.CompareResult=p={})),n.numberComparator=(u,b)=>u-b,n.booleanComparator=(u,b)=>(0,n.numberComparator)(u?1:0,b?1:0),n.ArrayQueue=class{constructor(u){this.items=u,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(u){let b=this.firstIdx;for(;b<this.items.length&&u(this.items[b]);)b++;let S=b===this.firstIdx?null:this.items.slice(this.firstIdx,b);return this.firstIdx=b,S}takeFromEndWhile(u){let b=this.lastIdx;for(;b>=0&&u(this.items[b]);)b--;let S=b===this.lastIdx?null:this.items.slice(b+1,this.lastIdx+1);return this.lastIdx=b,S}peek(){if(this.length!==0)return this.items[this.firstIdx]}peekLast(){if(this.length!==0)return this.items[this.lastIdx]}dequeue(){let u=this.items[this.firstIdx];return this.firstIdx++,u}removeLast(){let u=this.items[this.lastIdx];return this.lastIdx--,u}takeCount(u){let b=this.items.slice(this.firstIdx,this.firstIdx+u);return this.firstIdx+=u,b}};class h{static{this.empty=new h((b=>{}))}constructor(b){this.iterate=b}forEach(b){this.iterate((S=>(b(S),!0)))}toArray(){let b=[];return this.iterate((S=>(b.push(S),!0))),b}filter(b){return new h((S=>this.iterate((P=>!b(P)||S(P)))))}map(b){return new h((S=>this.iterate((P=>S(b(P))))))}some(b){let S=!1;return this.iterate((P=>(S=b(P),!S))),S}findFirst(b){let S;return this.iterate((P=>!b(P)||(S=P,!1))),S}findLast(b){let S;return this.iterate((P=>(b(P)&&(S=P),!0))),S}findLastMaxBy(b){let S,P=!0;return this.iterate((E=>((P||p.isGreaterThan(b(E,S)))&&(P=!1,S=E),!0))),S}}n.CallbackIterable=h;class d{constructor(b){this._indexMap=b}static createSortPermutation(b,S){let P=Array.from(b.keys()).sort(((E,H)=>S(b[E],b[H])));return new d(P)}apply(b){return b.map(((S,P)=>b[this._indexMap[P]]))}inverse(){let b=this._indexMap.slice();for(let S=0;S<this._indexMap.length;S++)b[this._indexMap[S]]=S;return new d(b)}}n.Permutation=d},8297:(y,n)=>{function l(c,g,_=c.length-1){for(let i=_;i>=0;i--)if(g(c[i]))return i;return-1}function f(c,g,_=0,i=c.length){let p=_,h=i;for(;p<h;){let d=Math.floor((p+h)/2);g(c[d])?p=d+1:h=d}return p-1}function k(c,g,_=0,i=c.length){let p=_,h=i;for(;p<h;){let d=Math.floor((p+h)/2);g(c[d])?h=d:p=d+1}return p}Object.defineProperty(n,"__esModule",{value:!0}),n.MonotonousArray=void 0,n.findLast=function(c,g){let _=l(c,g);if(_!==-1)return c[_]},n.findLastIdx=l,n.findLastMonotonous=function(c,g){let _=f(c,g);return _===-1?void 0:c[_]},n.findLastIdxMonotonous=f,n.findFirstMonotonous=function(c,g){let _=k(c,g);return _===c.length?void 0:c[_]},n.findFirstIdxMonotonousOrArrLen=k,n.findFirstIdxMonotonous=function(c,g,_=0,i=c.length){let p=k(c,g,_,i);return p===c.length?-1:p},n.findFirstMax=w,n.findLastMax=function(c,g){if(c.length===0)return;let _=c[0];for(let i=1;i<c.length;i++){let p=c[i];g(p,_)>=0&&(_=p)}return _},n.findFirstMin=function(c,g){return w(c,((_,i)=>-g(_,i)))},n.findMaxIdx=function(c,g){if(c.length===0)return-1;let _=0;for(let i=1;i<c.length;i++)g(c[i],c[_])>0&&(_=i);return _},n.mapFindFirst=function(c,g){for(let _ of c){let i=g(_);if(i!==void 0)return i}};class a{static{this.assertInvariants=!1}constructor(g){this._array=g,this._findLastMonotonousLastIdx=0}findLastMonotonous(g){if(a.assertInvariants){if(this._prevFindLastPredicate){for(let i of this._array)if(this._prevFindLastPredicate(i)&&!g(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=g}let _=f(this._array,g,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=_+1,_===-1?void 0:this._array[_]}}function w(c,g){if(c.length===0)return;let _=c[0];for(let i=1;i<c.length;i++){let p=c[i];g(p,_)>0&&(_=p)}return _}n.MonotonousArray=a},9087:(y,n)=>{var l;Object.defineProperty(n,"__esModule",{value:!0}),n.SetWithKey=void 0,n.groupBy=function(k,a){let w=Object.create(null);for(let c of k){let g=a(c),_=w[g];_||(_=w[g]=[]),_.push(c)}return w},n.diffSets=function(k,a){let w=[],c=[];for(let g of k)a.has(g)||w.push(g);for(let g of a)k.has(g)||c.push(g);return{removed:w,added:c}},n.diffMaps=function(k,a){let w=[],c=[];for(let[g,_]of k)a.has(g)||w.push(_);for(let[g,_]of a)k.has(g)||c.push(_);return{removed:w,added:c}},n.intersection=function(k,a){let w=new Set;for(let c of a)k.has(c)&&w.add(c);return w};class f{static{l=Symbol.toStringTag}constructor(a,w){this.toKey=w,this._map=new Map,this[l]="SetWithKey";for(let c of a)this.add(c)}get size(){return this._map.size}add(a){let w=this.toKey(a);return this._map.set(w,a),this}delete(a){return this._map.delete(this.toKey(a))}has(a){return this._map.has(this.toKey(a))}*entries(){for(let a of this._map.values())yield[a,a]}keys(){return this.values()}*values(){for(let a of this._map.values())yield a}clear(){this._map.clear()}forEach(a,w){this._map.forEach((c=>a.call(w,c,c,this)))}[Symbol.iterator](){return this.values()}}n.SetWithKey=f},9807:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.ExpectedError=n.NotSupportedError=n.NotImplementedError=n.ReadonlyError=n.CancellationError=n.errorHandler=n.ErrorHandler=void 0,n.setUnexpectedErrorHandler=function(h){n.errorHandler.setUnexpectedErrorHandler(h)},n.isSigPipeError=function(h){if(!h||typeof h!="object")return!1;let d=h;return d.code==="EPIPE"&&d.syscall?.toUpperCase()==="WRITE"},n.onUnexpectedError=function(h){k(h)||n.errorHandler.onUnexpectedError(h)},n.onUnexpectedExternalError=function(h){k(h)||n.errorHandler.onUnexpectedExternalError(h)},n.transformErrorForSerialization=function(h){if(h instanceof Error){let{name:d,message:u}=h;return{$isError:!0,name:d,message:u,stack:h.stacktrace||h.stack,noTelemetry:i.isErrorNoTelemetry(h)}}return h},n.transformErrorFromSerialization=function(h){let d;return h.noTelemetry?d=new i:(d=new Error,d.name=h.name),d.message=h.message,d.stack=h.stack,d},n.isCancellationError=k,n.canceled=function(){let h=new Error(f);return h.name=h.message,h},n.illegalArgument=function(h){return h?new Error(`Illegal argument: ${h}`):new Error("Illegal argument")},n.illegalState=function(h){return h?new Error(`Illegal state: ${h}`):new Error("Illegal state")},n.getErrorMessage=function(h){return h?h.message?h.message:h.stack?h.stack.split(`
5
+ `)[0]:String(h):"Error"};class l{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(d){setTimeout((()=>{throw d.stack?i.isErrorNoTelemetry(d)?new i(d.message+`
6
6
 
7
- `+c.stack):new Error(c.message+`
7
+ `+d.stack):new Error(d.message+`
8
8
 
9
- `+c.stack):c}),0)}}addListener(c){return this.listeners.push(c),()=>{this._removeListener(c)}}emit(c){this.listeners.forEach((f=>{f(c)}))}_removeListener(c){this.listeners.splice(this.listeners.indexOf(c),1)}setUnexpectedErrorHandler(c){this.unexpectedErrorHandler=c}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(c){this.unexpectedErrorHandler(c),this.emit(c)}onUnexpectedExternalError(c){this.unexpectedErrorHandler(c)}}n.ErrorHandler=d,n.errorHandler=new d;let h="Canceled";function b(u){return u instanceof a||u instanceof Error&&u.name===h&&u.message===h}class a extends Error{constructor(){super(h),this.name=this.message}}n.CancellationError=a;class w extends TypeError{constructor(c){super(c?`${c} is read-only and cannot be changed`:"Cannot change read-only property")}}n.ReadonlyError=w;class l extends Error{constructor(c){super("NotImplemented"),c&&(this.message=c)}}n.NotImplementedError=l;class g extends Error{constructor(c){super("NotSupported"),c&&(this.message=c)}}n.NotSupportedError=g;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}n.ExpectedError=_;class i extends Error{constructor(c){super(c),this.name="CodeExpectedError"}static fromError(c){if(c instanceof i)return c;let f=new i;return f.message=c.message,f.stack=c.stack,f}static isErrorNoTelemetry(c){return c.name==="CodeExpectedError"}}n.ErrorNoTelemetry=i;class p extends Error{constructor(c){super(c||"An unexpected bug occurred."),Object.setPrototypeOf(this,p.prototype)}}n.BugIndicatingError=p},802:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ValueWithChangeEvent=n.Relay=n.EventBufferer=n.DynamicListEventMultiplexer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.AsyncEmitter=n.createEventDeliveryQueue=n.Emitter=n.ListenerRefusalError=n.ListenerLeakError=n.EventProfiling=n.Event=void 0,n.setGlobalLeakWarningThreshold=function(x){let A=i;return i=x,{dispose(){i=A}}};let h=d(9807),b=d(8841),a=d(7150),w=d(6317),l=d(9725);var g;(function(x){function A(T){return(R,F=null,N)=>{let U,V=!1;return U=T((te=>{if(!V)return U?U.dispose():V=!0,R.call(F,te)}),null,N),V&&U.dispose(),U}}function L(T,R,F){return X(((N,U=null,V)=>T((te=>N.call(U,R(te))),null,V)),F)}function z(T,R,F){return X(((N,U=null,V)=>T((te=>R(te)&&N.call(U,te)),null,V)),F)}function X(T,R){let F,N=new P({onWillAddFirstListener(){F=T(N.fire,N)},onDidRemoveLastListener(){F?.dispose()}});return R?.add(N),N.event}function W(T,R,F=100,N=!1,U=!1,V,te){let I,J,Y,Z,_e=0,we=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Ke=>{_e++,J=R(J,Ke),N&&!Y&&(we.fire(J),J=void 0),Z=()=>{let Ie=J;J=void 0,Y=void 0,(!N||_e>1)&&we.fire(Ie),_e=0},typeof F=="number"?(clearTimeout(Y),Y=setTimeout(Z,F)):Y===void 0&&(Y=0,queueMicrotask(Z))}))},onWillRemoveListener(){U&&_e>0&&Z?.()},onDidRemoveLastListener(){Z=void 0,I.dispose()}});return te?.add(we),we.event}x.None=()=>a.Disposable.None,x.defer=function(T,R){return W(T,(()=>{}),0,void 0,!0,void 0,R)},x.once=A,x.map=L,x.forEach=function(T,R,F){return X(((N,U=null,V)=>T((te=>{R(te),N.call(U,te)}),null,V)),F)},x.filter=z,x.signal=function(T){return T},x.any=function(...T){return(R,F=null,N)=>{return U=(0,a.combinedDisposable)(...T.map((te=>te((I=>R.call(F,I)))))),(V=N)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},x.reduce=function(T,R,F,N){let U=F;return L(T,(V=>(U=R(U,V),U)),N)},x.debounce=W,x.accumulate=function(T,R=0,F){return x.debounce(T,((N,U)=>N?(N.push(U),N):[U]),R,void 0,!0,void 0,F)},x.latch=function(T,R=(N,U)=>N===U,F){let N,U=!0;return z(T,(V=>{let te=U||!R(V,N);return U=!1,N=V,te}),F)},x.split=function(T,R,F){return[x.filter(T,R,F),x.filter(T,(N=>!R(N)),F)]},x.buffer=function(T,R=!1,F=[],N){let U=F.slice(),V=T((J=>{U?U.push(J):I.fire(J)}));N&&N.add(V);let te=()=>{U?.forEach((J=>I.fire(J))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((J=>I.fire(J))),N&&N.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(te):te())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return N&&N.add(I),I.event},x.chain=function(T,R){return(F,N,U)=>{let V=R(new v);return T((function(te){let I=V.evaluate(te);I!==q&&F.call(N,I)}),void 0,U)}};let q=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((F=>(R(F),F))),this}filter(R){return this.steps.push((F=>R(F)?F:q)),this}reduce(R,F){let N=F;return this.steps.push((U=>(N=R(N,U),N))),this}latch(R=(F,N)=>F===N){let F,N=!0;return this.steps.push((U=>{let V=N||!R(U,F);return N=!1,F=U,V?U:q})),this}evaluate(R){for(let F of this.steps)if((R=F(R))===q)break;return R}}x.fromNodeEventEmitter=function(T,R,F=N=>N){let N=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,N),onDidRemoveLastListener:()=>T.removeListener(R,N)});return U.event},x.fromDOMEventEmitter=function(T,R,F=N=>N){let N=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,N),onDidRemoveLastListener:()=>T.removeEventListener(R,N)});return U.event},x.toPromise=function(T){return new Promise((R=>A(T)(R)))},x.fromPromise=function(T){let R=new P;return T.then((F=>{R.fire(F)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},x.forward=function(T,R){return T((F=>R.fire(F)))},x.runAndSubscribe=function(T,R,F){return R(F),T((N=>R(N)))};class C{constructor(R,F){this._observable=R,this._counter=0,this._hasChanged=!1;let N={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(N),F&&F.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,F){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}x.fromObservable=function(T,R){return new C(T,R).emitter.event},x.fromObservableLight=function(T){return(R,F,N)=>{let U=0,V=!1,te={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(F)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(te),T.reportChanges();let I={dispose(){T.removeObserver(te)}};return N instanceof a.DisposableStore?N.add(I):Array.isArray(N)&&N.push(I),I}}})(g||(n.Event=g={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(A){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${A}_${_._idPool++}`,_.all.add(this)}start(A){this._stopWatch=new l.StopWatch,this.listenerCount=A}stop(){if(this._stopWatch){let A=this._stopWatch.elapsed();this.durations.push(A),this.elapsedOverall+=A,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_;let i=-1;class p{static{this._idPool=1}constructor(A,L,z=(p._idPool++).toString(16).padStart(3,"0")){this._errorHandler=A,this.threshold=L,this.name=z,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(A,L){let z=this.threshold;if(z<=0||L<z)return;this._stacks||(this._stacks=new Map);let X=this._stacks.get(A.value)||0;if(this._stacks.set(A.value,X+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*z;let[W,q]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${L} listeners already. MOST frequent listener (${q}):`;console.warn(v),console.warn(W);let C=new c(v,W);this._errorHandler(C)}return()=>{let W=this._stacks.get(A.value)||0;this._stacks.set(A.value,W-1)}}getMostFrequentStack(){if(!this._stacks)return;let A,L=0;for(let[z,X]of this._stacks)(!A||L<X)&&(A=[z,X],L=X);return A}}class u{static create(){let A=new Error;return new u(A.stack??"")}constructor(A){this.value=A}print(){console.warn(this.value.split(`
9
+ `+d.stack):d}),0)}}addListener(d){return this.listeners.push(d),()=>{this._removeListener(d)}}emit(d){this.listeners.forEach((u=>{u(d)}))}_removeListener(d){this.listeners.splice(this.listeners.indexOf(d),1)}setUnexpectedErrorHandler(d){this.unexpectedErrorHandler=d}getUnexpectedErrorHandler(){return this.unexpectedErrorHandler}onUnexpectedError(d){this.unexpectedErrorHandler(d),this.emit(d)}onUnexpectedExternalError(d){this.unexpectedErrorHandler(d)}}n.ErrorHandler=l,n.errorHandler=new l;let f="Canceled";function k(h){return h instanceof a||h instanceof Error&&h.name===f&&h.message===f}class a extends Error{constructor(){super(f),this.name=this.message}}n.CancellationError=a;class w extends TypeError{constructor(d){super(d?`${d} is read-only and cannot be changed`:"Cannot change read-only property")}}n.ReadonlyError=w;class c extends Error{constructor(d){super("NotImplemented"),d&&(this.message=d)}}n.NotImplementedError=c;class g extends Error{constructor(d){super("NotSupported"),d&&(this.message=d)}}n.NotSupportedError=g;class _ extends Error{constructor(){super(...arguments),this.isExpected=!0}}n.ExpectedError=_;class i extends Error{constructor(d){super(d),this.name="CodeExpectedError"}static fromError(d){if(d instanceof i)return d;let u=new i;return u.message=d.message,u.stack=d.stack,u}static isErrorNoTelemetry(d){return d.name==="CodeExpectedError"}}n.ErrorNoTelemetry=i;class p extends Error{constructor(d){super(d||"An unexpected bug occurred."),Object.setPrototypeOf(this,p.prototype)}}n.BugIndicatingError=p},802:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ValueWithChangeEvent=n.Relay=n.EventBufferer=n.DynamicListEventMultiplexer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.AsyncEmitter=n.createEventDeliveryQueue=n.Emitter=n.ListenerRefusalError=n.ListenerLeakError=n.EventProfiling=n.Event=void 0,n.setGlobalLeakWarningThreshold=function(x){let A=i;return i=x,{dispose(){i=A}}};let f=l(9807),k=l(8841),a=l(7150),w=l(6317),c=l(9725);var g;(function(x){function A(T){return(R,F=null,j)=>{let U,V=!1;return U=T((te=>{if(!V)return U?U.dispose():V=!0,R.call(F,te)}),null,j),V&&U.dispose(),U}}function L(T,R,F){return X(((j,U=null,V)=>T((te=>j.call(U,R(te))),null,V)),F)}function z(T,R,F){return X(((j,U=null,V)=>T((te=>R(te)&&j.call(U,te)),null,V)),F)}function X(T,R){let F,j=new P({onWillAddFirstListener(){F=T(j.fire,j)},onDidRemoveLastListener(){F?.dispose()}});return R?.add(j),j.event}function W(T,R,F=100,j=!1,U=!1,V,te){let I,J,Y,Z,we=0,ke=new P({leakWarningThreshold:V,onWillAddFirstListener(){I=T((Xe=>{we++,J=R(J,Xe),j&&!Y&&(ke.fire(J),J=void 0),Z=()=>{let xe=J;J=void 0,Y=void 0,(!j||we>1)&&ke.fire(xe),we=0},typeof F=="number"?(clearTimeout(Y),Y=setTimeout(Z,F)):Y===void 0&&(Y=0,queueMicrotask(Z))}))},onWillRemoveListener(){U&&we>0&&Z?.()},onDidRemoveLastListener(){Z=void 0,I.dispose()}});return te?.add(ke),ke.event}x.None=()=>a.Disposable.None,x.defer=function(T,R){return W(T,(()=>{}),0,void 0,!0,void 0,R)},x.once=A,x.map=L,x.forEach=function(T,R,F){return X(((j,U=null,V)=>T((te=>{R(te),j.call(U,te)}),null,V)),F)},x.filter=z,x.signal=function(T){return T},x.any=function(...T){return(R,F=null,j)=>{return U=(0,a.combinedDisposable)(...T.map((te=>te((I=>R.call(F,I)))))),(V=j)instanceof Array?V.push(U):V&&V.add(U),U;var U,V}},x.reduce=function(T,R,F,j){let U=F;return L(T,(V=>(U=R(U,V),U)),j)},x.debounce=W,x.accumulate=function(T,R=0,F){return x.debounce(T,((j,U)=>j?(j.push(U),j):[U]),R,void 0,!0,void 0,F)},x.latch=function(T,R=(j,U)=>j===U,F){let j,U=!0;return z(T,(V=>{let te=U||!R(V,j);return U=!1,j=V,te}),F)},x.split=function(T,R,F){return[x.filter(T,R,F),x.filter(T,(j=>!R(j)),F)]},x.buffer=function(T,R=!1,F=[],j){let U=F.slice(),V=T((J=>{U?U.push(J):I.fire(J)}));j&&j.add(V);let te=()=>{U?.forEach((J=>I.fire(J))),U=null},I=new P({onWillAddFirstListener(){V||(V=T((J=>I.fire(J))),j&&j.add(V))},onDidAddFirstListener(){U&&(R?setTimeout(te):te())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return j&&j.add(I),I.event},x.chain=function(T,R){return(F,j,U)=>{let V=R(new v);return T((function(te){let I=V.evaluate(te);I!==q&&F.call(j,I)}),void 0,U)}};let q=Symbol("HaltChainable");class v{constructor(){this.steps=[]}map(R){return this.steps.push(R),this}forEach(R){return this.steps.push((F=>(R(F),F))),this}filter(R){return this.steps.push((F=>R(F)?F:q)),this}reduce(R,F){let j=F;return this.steps.push((U=>(j=R(j,U),j))),this}latch(R=(F,j)=>F===j){let F,j=!0;return this.steps.push((U=>{let V=j||!R(U,F);return j=!1,F=U,V?U:q})),this}evaluate(R){for(let F of this.steps)if((R=F(R))===q)break;return R}}x.fromNodeEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.on(R,j),onDidRemoveLastListener:()=>T.removeListener(R,j)});return U.event},x.fromDOMEventEmitter=function(T,R,F=j=>j){let j=(...V)=>U.fire(F(...V)),U=new P({onWillAddFirstListener:()=>T.addEventListener(R,j),onDidRemoveLastListener:()=>T.removeEventListener(R,j)});return U.event},x.toPromise=function(T){return new Promise((R=>A(T)(R)))},x.fromPromise=function(T){let R=new P;return T.then((F=>{R.fire(F)}),(()=>{R.fire(void 0)})).finally((()=>{R.dispose()})),R.event},x.forward=function(T,R){return T((F=>R.fire(F)))},x.runAndSubscribe=function(T,R,F){return R(F),T((j=>R(j)))};class C{constructor(R,F){this._observable=R,this._counter=0,this._hasChanged=!1;let j={onWillAddFirstListener:()=>{R.addObserver(this)},onDidRemoveLastListener:()=>{R.removeObserver(this)}};this.emitter=new P(j),F&&F.add(this.emitter)}beginUpdate(R){this._counter++}handlePossibleChange(R){}handleChange(R,F){this._hasChanged=!0}endUpdate(R){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}x.fromObservable=function(T,R){return new C(T,R).emitter.event},x.fromObservableLight=function(T){return(R,F,j)=>{let U=0,V=!1,te={beginUpdate(){U++},endUpdate(){U--,U===0&&(T.reportChanges(),V&&(V=!1,R.call(F)))},handlePossibleChange(){},handleChange(){V=!0}};T.addObserver(te),T.reportChanges();let I={dispose(){T.removeObserver(te)}};return j instanceof a.DisposableStore?j.add(I):Array.isArray(j)&&j.push(I),I}}})(g||(n.Event=g={}));class _{static{this.all=new Set}static{this._idPool=0}constructor(A){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${A}_${_._idPool++}`,_.all.add(this)}start(A){this._stopWatch=new c.StopWatch,this.listenerCount=A}stop(){if(this._stopWatch){let A=this._stopWatch.elapsed();this.durations.push(A),this.elapsedOverall+=A,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_;let i=-1;class p{static{this._idPool=1}constructor(A,L,z=(p._idPool++).toString(16).padStart(3,"0")){this._errorHandler=A,this.threshold=L,this.name=z,this._warnCountdown=0}dispose(){this._stacks?.clear()}check(A,L){let z=this.threshold;if(z<=0||L<z)return;this._stacks||(this._stacks=new Map);let X=this._stacks.get(A.value)||0;if(this._stacks.set(A.value,X+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=.5*z;let[W,q]=this.getMostFrequentStack(),v=`[${this.name}] potential listener LEAK detected, having ${L} listeners already. MOST frequent listener (${q}):`;console.warn(v),console.warn(W);let C=new d(v,W);this._errorHandler(C)}return()=>{let W=this._stacks.get(A.value)||0;this._stacks.set(A.value,W-1)}}getMostFrequentStack(){if(!this._stacks)return;let A,L=0;for(let[z,X]of this._stacks)(!A||L<X)&&(A=[z,X],L=X);return A}}class h{static create(){let A=new Error;return new h(A.stack??"")}constructor(A){this.value=A}print(){console.warn(this.value.split(`
10
10
  `).slice(2).join(`
11
- `))}}class c extends Error{constructor(A,L){super(A),this.name="ListenerLeakError",this.stack=L}}n.ListenerLeakError=c;class f extends Error{constructor(A,L){super(A),this.name="ListenerRefusalError",this.stack=L}}n.ListenerRefusalError=f;let k=0;class S{constructor(A){this.value=A,this.id=k++}}class P{constructor(A){this._size=0,this._options=A,this._leakageMon=i>0||this._options?.leakWarningThreshold?new p(A?.onListenerError??h.onUnexpectedError,this._options?.leakWarningThreshold??i):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(A,L,z)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new f(`${v}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||h.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;L&&(A=A.bind(L));let X=new S(A),W;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(X.stack=u.create(),W=this._leakageMon.check(X.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new E,this._listeners=[this._listeners,X]):this._listeners.push(X):(this._options?.onWillAddFirstListener?.(this),this._listeners=X,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,a.toDisposable)((()=>{W?.(),this._removeListener(X)}));return z instanceof a.DisposableStore?z.add(q):Array.isArray(z)&&z.push(q),q},this._event}_removeListener(A){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let L=this._listeners,z=L.indexOf(A);if(z===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,L[z]=void 0;let X=this._deliveryQueue.current===this;if(2*this._size<=L.length){let W=0;for(let q=0;q<L.length;q++)L[q]?L[W++]=L[q]:X&&(this._deliveryQueue.end--,W<this._deliveryQueue.i&&this._deliveryQueue.i--);L.length=W}}_deliver(A,L){if(!A)return;let z=this._options?.onListenerError||h.onUnexpectedError;if(z)try{A.value(L)}catch(X){z(X)}else A.value(L)}_deliverQueue(A){let L=A.current._listeners;for(;A.i<A.end;)this._deliver(L[A.i++],A.value);A.reset()}fire(A){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,A);else{let L=this._deliveryQueue;L.enqueue(this,A,this._listeners.length),this._deliverQueue(L)}this._perfMon?.stop()}hasListeners(){return this._size>0}}n.Emitter=P,n.createEventDeliveryQueue=()=>new E;class E{constructor(){this.i=-1,this.end=0}enqueue(A,L,z){this.i=0,this.end=z,this.current=A,this.value=L}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}n.AsyncEmitter=class extends P{async fireAsync(x,A,L){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new w.LinkedList),((z,X)=>{if(z instanceof S)X(z);else for(let W=0;W<z.length;W++){let q=z[W];q&&X(q)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,x])));this._asyncDeliveryQueue.size>0&&!A.isCancellationRequested;){let[z,X]=this._asyncDeliveryQueue.shift(),W=[],q={...X,token:A,waitUntil:v=>{if(Object.isFrozen(W))throw new Error("waitUntil can NOT be called asynchronous");L&&(v=L(v,z)),W.push(v)}};try{z(q)}catch(v){(0,h.onUnexpectedError)(v);continue}Object.freeze(W),await Promise.allSettled(W).then((v=>{for(let C of v)C.status==="rejected"&&(0,h.onUnexpectedError)(C.reason)}))}}};class j extends P{get isPaused(){return this._isPaused!==0}constructor(A){super(A),this._isPaused=0,this._eventQueue=new w.LinkedList,this._mergeFn=A?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let A=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(A))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(A){this._size&&(this._isPaused!==0?this._eventQueue.push(A):super.fire(A))}}n.PauseableEmitter=j,n.DebounceEmitter=class extends j{constructor(x){super(x),this._delay=x.delay??100}fire(x){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(x)}},n.MicrotaskEmitter=class extends P{constructor(x){super(x),this._queuedEvents=[],this._mergeFn=x?.merge}fire(x){this.hasListeners()&&(this._queuedEvents.push(x),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((A=>super.fire(A))),this._queuedEvents=[]})))}};class ${constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(A){let L={event:A,listener:null};return this.events.push(L),this.hasListeners&&this.hook(L),(0,a.toDisposable)((0,b.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(L);let z=this.events.indexOf(L);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((A=>this.hook(A)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((A=>this.unhook(A)))}hook(A){A.listener=A.event((L=>this.emitter.fire(L)))}unhook(A){A.listener?.dispose(),A.listener=null}dispose(){this.emitter.dispose();for(let A of this.events)A.listener?.dispose();this.events=[]}}n.EventMultiplexer=$,n.DynamicListEventMultiplexer=class{constructor(x,A,L,z){this._store=new a.DisposableStore;let X=this._store.add(new $),W=this._store.add(new a.DisposableMap);function q(v){W.set(v,X.add(z(v)))}for(let v of x)q(v);this._store.add(A((v=>{q(v)}))),this._store.add(L((v=>{W.deleteAndDispose(v)}))),this.event=X.event}dispose(){this._store.dispose()}},n.EventBufferer=class{constructor(){this.data=[]}wrapEvent(x,A,L){return(z,X,W)=>x((q=>{let v=this.data[this.data.length-1];if(!A)return void(v?v.buffers.push((()=>z.call(X,q))):z.call(X,q));let C=v;C?(C.items??=[],C.items.push(q),C.buffers.length===0&&v.buffers.push((()=>{C.reducedResult??=L?C.items.reduce(A,L):C.items.reduce(A),z.call(X,C.reducedResult)}))):z.call(X,A(L,q))}),void 0,W)}bufferEvents(x){let A={buffers:new Array};this.data.push(A);let L=x();return this.data.pop(),A.buffers.forEach((z=>z())),L}},n.Relay=class{constructor(){this.listening=!1,this.inputEvent=g.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(x){this.inputEvent=x,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=x(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},n.ValueWithChangeEvent=class{static const(x){return new D(x)}constructor(x){this._value=x,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(x){x!==this._value&&(this._value=x,this._onDidChange.fire(void 0))}};class D{constructor(A){this.value=A,this.onDidChange=g.None}}},8841:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createSingleCallFunction=function(d,h){let b=this,a,w=!1;return function(){if(w)return a;if(w=!0,h)try{a=d.apply(b,arguments)}finally{h()}else a=d.apply(b,arguments);return a}}},4218:(y,n)=>{var d;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(h){function b(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}h.is=b;let a=Object.freeze([]);function*w(l){yield l}h.empty=function(){return a},h.single=w,h.wrap=function(l){return b(l)?l:w(l)},h.from=function(l){return l||a},h.reverse=function*(l){for(let g=l.length-1;g>=0;g--)yield l[g]},h.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},h.first=function(l){return l[Symbol.iterator]().next().value},h.some=function(l,g){let _=0;for(let i of l)if(g(i,_++))return!0;return!1},h.find=function(l,g){for(let _ of l)if(g(_))return _},h.filter=function*(l,g){for(let _ of l)g(_)&&(yield _)},h.map=function*(l,g){let _=0;for(let i of l)yield g(i,_++)},h.flatMap=function*(l,g){let _=0;for(let i of l)yield*g(i,_++)},h.concat=function*(...l){for(let g of l)yield*g},h.reduce=function(l,g,_){let i=_;for(let p of l)i=g(i,p);return i},h.slice=function*(l,g,_=l.length){for(g<0&&(g+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);g<_;g++)yield l[g]},h.consume=function(l,g=Number.POSITIVE_INFINITY){let _=[];if(g===0)return[_,l];let i=l[Symbol.iterator]();for(let p=0;p<g;p++){let u=i.next();if(u.done)return[_,h.empty()];_.push(u.value)}return[_,{[Symbol.iterator]:()=>i}]},h.asyncToArray=async function(l){let g=[];for await(let _ of l)g.push(_);return Promise.resolve(g)}})(d||(n.Iterable=d={}))},7150:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DisposableMap=n.ImmortalReference=n.AsyncReferenceCollection=n.ReferenceCollection=n.SafeDisposable=n.RefCountedDisposable=n.MandatoryMutableDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.DisposableTracker=void 0,n.setDisposableTracker=function($){g=$},n.trackDisposable=i,n.markAsDisposed=p,n.markAsSingleton=function($){return g?.markAsSingleton($),$},n.isDisposable=c,n.dispose=f,n.disposeIfDisposable=function($){for(let D of $)c(D)&&D.dispose();return[]},n.combinedDisposable=function(...$){let D=k((()=>f($)));return(function(x,A){if(g)for(let L of x)g.setParent(L,A)})($,D),D},n.toDisposable=k,n.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let h=d(3058),b=d(9087),a=d(2608),w=d(8841),l=d(4218),g=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let x=this.livingDisposables.get(D);return x||(x={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,x)),x}trackDisposable(D){let x=this.getDisposableData(D);x.source||(x.source=new Error().stack)}setParent(D,x){this.getDisposableData(D).parent=x}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,x){let A=x.get(D);if(A)return A;let L=D.parent?this.getRootParent(this.getDisposableData(D.parent),x):D;return x.set(D,L),L}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,x])=>x.source!==null&&!this.getRootParent(x,D).isSingleton)).flatMap((([x])=>x))}computeLeakingDisposables(D=10,x){let A;if(x)A=x;else{let q=new Map,v=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,q).isSingleton));if(v.length===0)return;let C=new Set(v.map((T=>T.value)));if(A=v.filter((T=>!(T.parent&&C.has(T.parent)))),A.length===0)throw new Error("There are cyclic diposable chains!")}if(!A)return;function L(q){let v=q.source.split(`
11
+ `))}}class d extends Error{constructor(A,L){super(A),this.name="ListenerLeakError",this.stack=L}}n.ListenerLeakError=d;class u extends Error{constructor(A,L){super(A),this.name="ListenerRefusalError",this.stack=L}}n.ListenerRefusalError=u;let b=0;class S{constructor(A){this.value=A,this.id=b++}}class P{constructor(A){this._size=0,this._options=A,this._leakageMon=i>0||this._options?.leakWarningThreshold?new p(A?.onListenerError??f.onUnexpectedError,this._options?.leakWarningThreshold??i):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(A,L,z)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new u(`${v}. HINT: Stack shows most frequent listener (${C[1]}-times)`,C[0]);return(this._options?.onListenerError||f.onUnexpectedError)(T),a.Disposable.None}if(this._disposed)return a.Disposable.None;L&&(A=A.bind(L));let X=new S(A),W;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(X.stack=h.create(),W=this._leakageMon.check(X.stack,this._size+1)),this._listeners?this._listeners instanceof S?(this._deliveryQueue??=new E,this._listeners=[this._listeners,X]):this._listeners.push(X):(this._options?.onWillAddFirstListener?.(this),this._listeners=X,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,a.toDisposable)((()=>{W?.(),this._removeListener(X)}));return z instanceof a.DisposableStore?z.add(q):Array.isArray(z)&&z.push(q),q},this._event}_removeListener(A){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1)return this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),void(this._size=0);let L=this._listeners,z=L.indexOf(A);if(z===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,L[z]=void 0;let X=this._deliveryQueue.current===this;if(2*this._size<=L.length){let W=0;for(let q=0;q<L.length;q++)L[q]?L[W++]=L[q]:X&&(this._deliveryQueue.end--,W<this._deliveryQueue.i&&this._deliveryQueue.i--);L.length=W}}_deliver(A,L){if(!A)return;let z=this._options?.onListenerError||f.onUnexpectedError;if(z)try{A.value(L)}catch(X){z(X)}else A.value(L)}_deliverQueue(A){let L=A.current._listeners;for(;A.i<A.end;)this._deliver(L[A.i++],A.value);A.reset()}fire(A){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof S)this._deliver(this._listeners,A);else{let L=this._deliveryQueue;L.enqueue(this,A,this._listeners.length),this._deliverQueue(L)}this._perfMon?.stop()}hasListeners(){return this._size>0}}n.Emitter=P,n.createEventDeliveryQueue=()=>new E;class E{constructor(){this.i=-1,this.end=0}enqueue(A,L,z){this.i=0,this.end=z,this.current=A,this.value=L}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}n.AsyncEmitter=class extends P{async fireAsync(x,A,L){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new w.LinkedList),((z,X)=>{if(z instanceof S)X(z);else for(let W=0;W<z.length;W++){let q=z[W];q&&X(q)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,x])));this._asyncDeliveryQueue.size>0&&!A.isCancellationRequested;){let[z,X]=this._asyncDeliveryQueue.shift(),W=[],q={...X,token:A,waitUntil:v=>{if(Object.isFrozen(W))throw new Error("waitUntil can NOT be called asynchronous");L&&(v=L(v,z)),W.push(v)}};try{z(q)}catch(v){(0,f.onUnexpectedError)(v);continue}Object.freeze(W),await Promise.allSettled(W).then((v=>{for(let C of v)C.status==="rejected"&&(0,f.onUnexpectedError)(C.reason)}))}}};class H extends P{get isPaused(){return this._isPaused!==0}constructor(A){super(A),this._isPaused=0,this._eventQueue=new w.LinkedList,this._mergeFn=A?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let A=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(A))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(A){this._size&&(this._isPaused!==0?this._eventQueue.push(A):super.fire(A))}}n.PauseableEmitter=H,n.DebounceEmitter=class extends H{constructor(x){super(x),this._delay=x.delay??100}fire(x){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(x)}},n.MicrotaskEmitter=class extends P{constructor(x){super(x),this._queuedEvents=[],this._mergeFn=x?.merge}fire(x){this.hasListeners()&&(this._queuedEvents.push(x),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((A=>super.fire(A))),this._queuedEvents=[]})))}};class ${constructor(){this.hasListeners=!1,this.events=[],this.emitter=new P({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(A){let L={event:A,listener:null};return this.events.push(L),this.hasListeners&&this.hook(L),(0,a.toDisposable)((0,k.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(L);let z=this.events.indexOf(L);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((A=>this.hook(A)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((A=>this.unhook(A)))}hook(A){A.listener=A.event((L=>this.emitter.fire(L)))}unhook(A){A.listener?.dispose(),A.listener=null}dispose(){this.emitter.dispose();for(let A of this.events)A.listener?.dispose();this.events=[]}}n.EventMultiplexer=$,n.DynamicListEventMultiplexer=class{constructor(x,A,L,z){this._store=new a.DisposableStore;let X=this._store.add(new $),W=this._store.add(new a.DisposableMap);function q(v){W.set(v,X.add(z(v)))}for(let v of x)q(v);this._store.add(A((v=>{q(v)}))),this._store.add(L((v=>{W.deleteAndDispose(v)}))),this.event=X.event}dispose(){this._store.dispose()}},n.EventBufferer=class{constructor(){this.data=[]}wrapEvent(x,A,L){return(z,X,W)=>x((q=>{let v=this.data[this.data.length-1];if(!A)return void(v?v.buffers.push((()=>z.call(X,q))):z.call(X,q));let C=v;C?(C.items??=[],C.items.push(q),C.buffers.length===0&&v.buffers.push((()=>{C.reducedResult??=L?C.items.reduce(A,L):C.items.reduce(A),z.call(X,C.reducedResult)}))):z.call(X,A(L,q))}),void 0,W)}bufferEvents(x){let A={buffers:new Array};this.data.push(A);let L=x();return this.data.pop(),A.buffers.forEach((z=>z())),L}},n.Relay=class{constructor(){this.listening=!1,this.inputEvent=g.None,this.inputEventListener=a.Disposable.None,this.emitter=new P({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(x){this.inputEvent=x,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=x(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},n.ValueWithChangeEvent=class{static const(x){return new D(x)}constructor(x){this._value=x,this._onDidChange=new P,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(x){x!==this._value&&(this._value=x,this._onDidChange.fire(void 0))}};class D{constructor(A){this.value=A,this.onDidChange=g.None}}},8841:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createSingleCallFunction=function(l,f){let k=this,a,w=!1;return function(){if(w)return a;if(w=!0,f)try{a=l.apply(k,arguments)}finally{f()}else a=l.apply(k,arguments);return a}}},4218:(y,n)=>{var l;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(f){function k(c){return c&&typeof c=="object"&&typeof c[Symbol.iterator]=="function"}f.is=k;let a=Object.freeze([]);function*w(c){yield c}f.empty=function(){return a},f.single=w,f.wrap=function(c){return k(c)?c:w(c)},f.from=function(c){return c||a},f.reverse=function*(c){for(let g=c.length-1;g>=0;g--)yield c[g]},f.isEmpty=function(c){return!c||c[Symbol.iterator]().next().done===!0},f.first=function(c){return c[Symbol.iterator]().next().value},f.some=function(c,g){let _=0;for(let i of c)if(g(i,_++))return!0;return!1},f.find=function(c,g){for(let _ of c)if(g(_))return _},f.filter=function*(c,g){for(let _ of c)g(_)&&(yield _)},f.map=function*(c,g){let _=0;for(let i of c)yield g(i,_++)},f.flatMap=function*(c,g){let _=0;for(let i of c)yield*g(i,_++)},f.concat=function*(...c){for(let g of c)yield*g},f.reduce=function(c,g,_){let i=_;for(let p of c)i=g(i,p);return i},f.slice=function*(c,g,_=c.length){for(g<0&&(g+=c.length),_<0?_+=c.length:_>c.length&&(_=c.length);g<_;g++)yield c[g]},f.consume=function(c,g=Number.POSITIVE_INFINITY){let _=[];if(g===0)return[_,c];let i=c[Symbol.iterator]();for(let p=0;p<g;p++){let h=i.next();if(h.done)return[_,f.empty()];_.push(h.value)}return[_,{[Symbol.iterator]:()=>i}]},f.asyncToArray=async function(c){let g=[];for await(let _ of c)g.push(_);return Promise.resolve(g)}})(l||(n.Iterable=l={}))},7150:(y,n,l)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DisposableMap=n.ImmortalReference=n.AsyncReferenceCollection=n.ReferenceCollection=n.SafeDisposable=n.RefCountedDisposable=n.MandatoryMutableDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.DisposableTracker=void 0,n.setDisposableTracker=function($){g=$},n.trackDisposable=i,n.markAsDisposed=p,n.markAsSingleton=function($){return g?.markAsSingleton($),$},n.isDisposable=d,n.dispose=u,n.disposeIfDisposable=function($){for(let D of $)d(D)&&D.dispose();return[]},n.combinedDisposable=function(...$){let D=b((()=>u($)));return(function(x,A){if(g)for(let L of x)g.setParent(L,A)})($,D),D},n.toDisposable=b,n.disposeOnReturn=function($){let D=new S;try{$(D)}finally{D.dispose()}};let f=l(3058),k=l(9087),a=l(2608),w=l(8841),c=l(4218),g=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(D){let x=this.livingDisposables.get(D);return x||(x={parent:null,source:null,isSingleton:!1,value:D,idx:_.idx++},this.livingDisposables.set(D,x)),x}trackDisposable(D){let x=this.getDisposableData(D);x.source||(x.source=new Error().stack)}setParent(D,x){this.getDisposableData(D).parent=x}markAsDisposed(D){this.livingDisposables.delete(D)}markAsSingleton(D){this.getDisposableData(D).isSingleton=!0}getRootParent(D,x){let A=x.get(D);if(A)return A;let L=D.parent?this.getRootParent(this.getDisposableData(D.parent),x):D;return x.set(D,L),L}getTrackedDisposables(){let D=new Map;return[...this.livingDisposables.entries()].filter((([,x])=>x.source!==null&&!this.getRootParent(x,D).isSingleton)).flatMap((([x])=>x))}computeLeakingDisposables(D=10,x){let A;if(x)A=x;else{let q=new Map,v=[...this.livingDisposables.values()].filter((T=>T.source!==null&&!this.getRootParent(T,q).isSingleton));if(v.length===0)return;let C=new Set(v.map((T=>T.value)));if(A=v.filter((T=>!(T.parent&&C.has(T.parent)))),A.length===0)throw new Error("There are cyclic diposable chains!")}if(!A)return;function L(q){let v=q.source.split(`
12
12
  `).map((C=>C.trim().replace("at ",""))).filter((C=>C!==""));return(function(C,T){for(;C.length>0&&T.some((R=>typeof R=="string"?R===C[0]:C[0].match(R)));)C.shift()})(v,["Error",/^trackDisposable \(.*\)$/,/^DisposableTracker.trackDisposable \(.*\)$/]),v.reverse()}let z=new a.SetMap;for(let q of A){let v=L(q);for(let C=0;C<=v.length;C++)z.add(v.slice(0,C).join(`
13
- `),q)}A.sort((0,h.compareBy)((q=>q.idx),h.numberComparator));let X="",W=0;for(let q of A.slice(0,D)){W++;let v=L(q),C=[];for(let T=0;T<v.length;T++){let R=v[T];R=`(shared with ${z.get(v.slice(0,T+1).join(`
13
+ `),q)}A.sort((0,f.compareBy)((q=>q.idx),f.numberComparator));let X="",W=0;for(let q of A.slice(0,D)){W++;let v=L(q),C=[];for(let T=0;T<v.length;T++){let R=v[T];R=`(shared with ${z.get(v.slice(0,T+1).join(`
14
14
  `)).size}/${A.length} leaks) at ${R}`;let F=z.get(v.slice(0,T).join(`
15
- `)),N=(0,b.groupBy)([...F].map((U=>L(U)[T])),(U=>U));delete N[v[T]];for(let[U,V]of Object.entries(N))C.unshift(` - stacktraces of ${V.length} other leaks continue with ${U}`);C.unshift(R)}X+=`
15
+ `)),j=(0,k.groupBy)([...F].map((U=>L(U)[T])),(U=>U));delete j[v[T]];for(let[U,V]of Object.entries(j))C.unshift(` - stacktraces of ${V.length} other leaks continue with ${U}`);C.unshift(R)}X+=`
16
16
 
17
17
 
18
18
  ==================== Leaking disposable ${W}/${A.length}: ${q.value.constructor.name} ====================
@@ -25,86 +25,86 @@ ${C.join(`
25
25
 
26
26
  ... and ${A.length-D} more leaking disposables
27
27
 
28
- `),{leaks:A,details:X}}}function i($){return g?.trackDisposable($),$}function p($){g?.markAsDisposed($)}function u($,D){g?.setParent($,D)}function c($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function f($){if(l.Iterable.is($)){let D=[];for(let x of $)if(x)try{x.dispose()}catch(A){D.push(A)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray($)?[]:$}if($)return $.dispose(),$}function k($){let D=i({dispose:(0,w.createSingleCallFunction)((()=>{p(D),$()}))});return D}n.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,i(this)}dispose(){this._isDisposed||(p(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{f(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 u(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),u(D,null))}}n.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,i(this),u(this._store,this)}dispose(){p(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}n.Disposable=P;class E{constructor(){this._isDisposed=!1,i(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&u(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,p(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&u(D,null),D}}n.MutableDisposable=E,n.MandatoryMutableDisposable=class{constructor($){this._disposable=new E,this._isDisposed=!1,this._disposable.value=$}get value(){return this._disposable.value}set value($){this._isDisposed||$===this._disposable.value||(this._disposable.value=$)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},n.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},n.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,i(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,p(this))},this}},n.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let x=this.references.get($);x||(x={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,x));let{object:A}=x,L=(0,w.createSingleCallFunction)((()=>{--x.counter==0&&(this.destroyReferencedObject($,x.object),this.references.delete($))}));return x.counter++,{object:A,dispose:L}}},n.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let x=this.referenceCollection.acquire($,...D);try{return{object:await x.object,dispose:()=>x.dispose()}}catch(A){throw x.dispose(),A}}},n.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class j{constructor(){this._store=new Map,this._isDisposed=!1,i(this)}dispose(){p(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{f(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,x,A=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),A||this._store.get(D)?.dispose(),this._store.set(D,x)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let x=this._store.get(D);return this._store.delete(D),x}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=j},6317:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.LinkedList=void 0;class d{static{this.Undefined=new d(void 0)}constructor(a){this.element=a,this.next=d.Undefined,this.prev=d.Undefined}}class h{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let a=this._first;for(;a!==d.Undefined;){let w=a.next;a.prev=d.Undefined,a.next=d.Undefined,a=w}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,w){let l=new d(a);if(this._first===d.Undefined)this._first=l,this._last=l;else if(w){let _=this._last;this._last=l,l.prev=_,_.next=l}else{let _=this._first;this._first=l,l.next=_,_.prev=l}this._size+=1;let g=!1;return()=>{g||(g=!0,this._remove(l))}}shift(){if(this._first!==d.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==d.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==d.Undefined&&a.next!==d.Undefined){let w=a.prev;w.next=a.next,a.next.prev=w}else a.prev===d.Undefined&&a.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):a.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):a.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==d.Undefined;)yield a.element,a=a.next}}n.LinkedList=h},2608:(y,n)=>{var d;Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=n.BidirectionalMap=n.CounterSet=n.Touch=void 0,n.getOrSet=function(h,b,a){let w=h.get(b);return w===void 0&&(w=a,h.set(b,w)),w},n.mapToString=function(h){let b=[];return h.forEach(((a,w)=>{b.push(`${w} => ${a}`)})),`Map(${h.size}) {${b.join(", ")}}`},n.setToString=function(h){let b=[];return h.forEach((a=>{b.push(a)})),`Set(${h.size}) {${b.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(h,b){if(h===b)return!0;if(h.size!==b.size)return!1;for(let[a,w]of h)if(!b.has(a)||b.get(a)!==w)return!1;for(let[a]of b)if(!h.has(a))return!1;return!0},(function(h){h[h.None=0]="None",h[h.AsOld=1]="AsOld",h[h.AsNew=2]="AsNew"})(d||(n.Touch=d={})),n.CounterSet=class{constructor(){this.map=new Map}add(h){return this.map.set(h,(this.map.get(h)||0)+1),this}delete(h){let b=this.map.get(h)||0;return b!==0&&(b--,b===0?this.map.delete(h):this.map.set(h,b),!0)}has(h){return this.map.has(h)}},n.BidirectionalMap=class{constructor(h){if(this._m1=new Map,this._m2=new Map,h)for(let[b,a]of h)this.set(b,a)}clear(){this._m1.clear(),this._m2.clear()}set(h,b){this._m1.set(h,b),this._m2.set(b,h)}get(h){return this._m1.get(h)}getKey(h){return this._m2.get(h)}delete(h){let b=this._m1.get(h);return b!==void 0&&(this._m1.delete(h),this._m2.delete(b),!0)}forEach(h,b){this._m1.forEach(((a,w)=>{h.call(b,a,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(h,b){let a=this.map.get(h);a||(a=new Set,this.map.set(h,a)),a.add(b)}delete(h,b){let a=this.map.get(h);a&&(a.delete(b),a.size===0&&this.map.delete(h))}forEach(h,b){let a=this.map.get(h);a&&a.forEach(b)}get(h){return this.map.get(h)||new Set}}},9725:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let d=globalThis.performance&&typeof globalThis.performance.now=="function";class h{static create(a){return new h(a)}constructor(a){this._now=d&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}n.StopWatch=h}},t={};function r(y){var n=t[y];if(n!==void 0)return n.exports;var d=t[y]={exports:{}};return e[y].call(d.exports,d,d.exports,r),d.exports}var s={};(()=>{var y=s;Object.defineProperty(y,"__esModule",{value:!0}),y.Terminal=void 0;let n=r(5101),d=r(6097),h=r(4335),b=r(5856),a=r(3027),w=r(7150),l=["cols","rows"];class g extends w.Disposable{constructor(i){super(),this._core=this._register(new b.Terminal(i)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let p=c=>this._core.options[c],u=(c,f)=>{this._checkReadonlyOptions(c),this._core.options[c]=f};for(let c in this._core.options){Object.defineProperty(this._publicOptions,c,{get:()=>this._core.options[c],set:k=>{this._checkReadonlyOptions(c),this._core.options[c]=k}});let f={get:p.bind(this,c),set:u.bind(this,c)};Object.defineProperty(this._publicOptions,c,f)}}_checkReadonlyOptions(i){if(l.includes(i))throw new Error(`Option "${i}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new d.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new h.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new n.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let i=this._core.coreService.decPrivateModes,p="none";switch(this._core.coreMouseService.activeProtocol){case"X10":p="x10";break;case"VT200":p="vt200";break;case"DRAG":p="drag";break;case"ANY":p="any"}return{applicationCursorKeysMode:i.applicationCursorKeys,applicationKeypadMode:i.applicationKeypad,bracketedPasteMode:i.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:p,originMode:i.origin,reverseWraparoundMode:i.reverseWraparound,sendFocusMode:i.sendFocus,synchronizedOutputMode:i.synchronizedOutput,wraparoundMode:i.wraparound}}get options(){return this._publicOptions}set options(i){for(let p in i)this._publicOptions[p]=i[p]}input(i,p=!0){this._core.input(i,p)}resize(i,p){this._verifyIntegers(i,p),this._core.resize(i,p)}registerMarker(i=0){return this._checkProposedApi(),this._verifyIntegers(i),this._core.addMarker(i)}addMarker(i){return this.registerMarker(i)}dispose(){super.dispose()}scrollLines(i){this._verifyIntegers(i),this._core.scrollLines(i)}scrollPages(i){this._verifyIntegers(i),this._core.scrollPages(i)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(i){this._verifyIntegers(i),this._core.scrollToLine(i)}clear(){this._core.clear()}write(i,p){this._core.write(i,p)}writeln(i,p){this._core.write(i),this._core.write(`\r
29
- `,p)}reset(){this._core.reset()}loadAddon(i){this._addonManager.loadAddon(this,i)}_verifyIntegers(...i){for(let p of i)if(p===1/0||isNaN(p)||p%1!=0)throw new Error("This API only accepts integers")}}y.Terminal=g})();var o=eo;for(var m in s)o[m]=s[m];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});var ce=["codex","cursor","claude"],ua={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"}};function be(e){return ua[e]}function Ir(e,t={}){let r=be(e),s=t.runners?.[e]?.path?.trim();return{...r,executable:s&&s.length>0?s:r.executable}}function gt(e={}){return ce.filter(t=>e.runners?.[t]?.enabled!==!1)}function tt(e={}){let t=gt(e);if(t.length===0)throw new Error("No runners are enabled. Enable at least one runner in .craig/config.json.");return t.includes("codex")?"codex":t[0]}function jt(e,t={}){if(t.runners?.[e]?.enabled===!1)throw new Error(`Runner "${e}" is disabled in .craig/config.json.`)}function mt(e){return ce.includes(e)}function Us(e){if(!e||e.length===0)return"codex";if(!mt(e))throw new Error(`Unsupported runner "${e}". Expected one of: ${ce.join(", ")}.`);return e}function ve(e){return be(e).displayName}function me(e,t,r={}){let s=[Ir(e,r).executable];return t&&t.length>0&&s.push(t),s}function qs(e){let t=[...e];for(;t[0]==="--";)t.shift();if(t.length===0)return{mode:"interactive"};if(t.length>=3&&t[0]==="repo"&&t[1]==="add"){let r=t.slice(2).join(" ").trim();if(r.length===0)throw new Error(`Repo path cannot be empty.
28
+ `),{leaks:A,details:X}}}function i($){return g?.trackDisposable($),$}function p($){g?.markAsDisposed($)}function h($,D){g?.setParent($,D)}function d($){return typeof $=="object"&&$!==null&&typeof $.dispose=="function"&&$.dispose.length===0}function u($){if(c.Iterable.is($)){let D=[];for(let x of $)if(x)try{x.dispose()}catch(A){D.push(A)}if(D.length===1)throw D[0];if(D.length>1)throw new AggregateError(D,"Encountered errors while disposing of store");return Array.isArray($)?[]:$}if($)return $.dispose(),$}function b($){let D=i({dispose:(0,w.createSingleCallFunction)((()=>{p(D),$()}))});return D}n.DisposableTracker=_;class S{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,i(this)}dispose(){this._isDisposed||(p(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{u(this._toDispose)}finally{this._toDispose.clear()}}add(D){if(!D)return D;if(D===this)throw new Error("Cannot register a disposable on itself!");return h(D,this),this._isDisposed?S.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(D),D}delete(D){if(D){if(D===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(D),D.dispose()}}deleteAndLeak(D){D&&this._toDispose.has(D)&&(this._toDispose.delete(D),h(D,null))}}n.DisposableStore=S;class P{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new S,i(this),h(this._store,this)}dispose(){p(this),this._store.dispose()}_register(D){if(D===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(D)}}n.Disposable=P;class E{constructor(){this._isDisposed=!1,i(this)}get value(){return this._isDisposed?void 0:this._value}set value(D){this._isDisposed||D===this._value||(this._value?.dispose(),D&&h(D,this),this._value=D)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,p(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let D=this._value;return this._value=void 0,D&&h(D,null),D}}n.MutableDisposable=E,n.MandatoryMutableDisposable=class{constructor($){this._disposable=new E,this._isDisposed=!1,this._disposable.value=$}get value(){return this._disposable.value}set value($){this._isDisposed||$===this._disposable.value||(this._disposable.value=$)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},n.RefCountedDisposable=class{constructor($){this._disposable=$,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter==0&&this._disposable.dispose(),this}},n.SafeDisposable=class{constructor(){this.dispose=()=>{},this.unset=()=>{},this.isset=()=>!1,i(this)}set($){let D=$;return this.unset=()=>D=void 0,this.isset=()=>D!==void 0,this.dispose=()=>{D&&(D(),D=void 0,p(this))},this}},n.ReferenceCollection=class{constructor(){this.references=new Map}acquire($,...D){let x=this.references.get($);x||(x={counter:0,object:this.createReferencedObject($,...D)},this.references.set($,x));let{object:A}=x,L=(0,w.createSingleCallFunction)((()=>{--x.counter==0&&(this.destroyReferencedObject($,x.object),this.references.delete($))}));return x.counter++,{object:A,dispose:L}}},n.AsyncReferenceCollection=class{constructor($){this.referenceCollection=$}async acquire($,...D){let x=this.referenceCollection.acquire($,...D);try{return{object:await x.object,dispose:()=>x.dispose()}}catch(A){throw x.dispose(),A}}},n.ImmortalReference=class{constructor($){this.object=$}dispose(){}};class H{constructor(){this._store=new Map,this._isDisposed=!1,i(this)}dispose(){p(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{u(this._store.values())}finally{this._store.clear()}}has(D){return this._store.has(D)}get size(){return this._store.size}get(D){return this._store.get(D)}set(D,x,A=!1){this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),A||this._store.get(D)?.dispose(),this._store.set(D,x)}deleteAndDispose(D){this._store.get(D)?.dispose(),this._store.delete(D)}deleteAndLeak(D){let x=this._store.get(D);return this._store.delete(D),x}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=H},6317:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.LinkedList=void 0;class l{static{this.Undefined=new l(void 0)}constructor(a){this.element=a,this.next=l.Undefined,this.prev=l.Undefined}}class f{constructor(){this._first=l.Undefined,this._last=l.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===l.Undefined}clear(){let a=this._first;for(;a!==l.Undefined;){let w=a.next;a.prev=l.Undefined,a.next=l.Undefined,a=w}this._first=l.Undefined,this._last=l.Undefined,this._size=0}unshift(a){return this._insert(a,!1)}push(a){return this._insert(a,!0)}_insert(a,w){let c=new l(a);if(this._first===l.Undefined)this._first=c,this._last=c;else if(w){let _=this._last;this._last=c,c.prev=_,_.next=c}else{let _=this._first;this._first=c,c.next=_,_.prev=c}this._size+=1;let g=!1;return()=>{g||(g=!0,this._remove(c))}}shift(){if(this._first!==l.Undefined){let a=this._first.element;return this._remove(this._first),a}}pop(){if(this._last!==l.Undefined){let a=this._last.element;return this._remove(this._last),a}}_remove(a){if(a.prev!==l.Undefined&&a.next!==l.Undefined){let w=a.prev;w.next=a.next,a.next.prev=w}else a.prev===l.Undefined&&a.next===l.Undefined?(this._first=l.Undefined,this._last=l.Undefined):a.next===l.Undefined?(this._last=this._last.prev,this._last.next=l.Undefined):a.prev===l.Undefined&&(this._first=this._first.next,this._first.prev=l.Undefined);this._size-=1}*[Symbol.iterator](){let a=this._first;for(;a!==l.Undefined;)yield a.element,a=a.next}}n.LinkedList=f},2608:(y,n)=>{var l;Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=n.BidirectionalMap=n.CounterSet=n.Touch=void 0,n.getOrSet=function(f,k,a){let w=f.get(k);return w===void 0&&(w=a,f.set(k,w)),w},n.mapToString=function(f){let k=[];return f.forEach(((a,w)=>{k.push(`${w} => ${a}`)})),`Map(${f.size}) {${k.join(", ")}}`},n.setToString=function(f){let k=[];return f.forEach((a=>{k.push(a)})),`Set(${f.size}) {${k.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(f,k){if(f===k)return!0;if(f.size!==k.size)return!1;for(let[a,w]of f)if(!k.has(a)||k.get(a)!==w)return!1;for(let[a]of k)if(!f.has(a))return!1;return!0},(function(f){f[f.None=0]="None",f[f.AsOld=1]="AsOld",f[f.AsNew=2]="AsNew"})(l||(n.Touch=l={})),n.CounterSet=class{constructor(){this.map=new Map}add(f){return this.map.set(f,(this.map.get(f)||0)+1),this}delete(f){let k=this.map.get(f)||0;return k!==0&&(k--,k===0?this.map.delete(f):this.map.set(f,k),!0)}has(f){return this.map.has(f)}},n.BidirectionalMap=class{constructor(f){if(this._m1=new Map,this._m2=new Map,f)for(let[k,a]of f)this.set(k,a)}clear(){this._m1.clear(),this._m2.clear()}set(f,k){this._m1.set(f,k),this._m2.set(k,f)}get(f){return this._m1.get(f)}getKey(f){return this._m2.get(f)}delete(f){let k=this._m1.get(f);return k!==void 0&&(this._m1.delete(f),this._m2.delete(k),!0)}forEach(f,k){this._m1.forEach(((a,w)=>{f.call(k,a,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(f,k){let a=this.map.get(f);a||(a=new Set,this.map.set(f,a)),a.add(k)}delete(f,k){let a=this.map.get(f);a&&(a.delete(k),a.size===0&&this.map.delete(f))}forEach(f,k){let a=this.map.get(f);a&&a.forEach(k)}get(f){return this.map.get(f)||new Set}}},9725:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let l=globalThis.performance&&typeof globalThis.performance.now=="function";class f{static create(a){return new f(a)}constructor(a){this._now=l&&a===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}n.StopWatch=f}},t={};function r(y){var n=t[y];if(n!==void 0)return n.exports;var l=t[y]={exports:{}};return e[y].call(l.exports,l,l.exports,r),l.exports}var s={};(()=>{var y=s;Object.defineProperty(y,"__esModule",{value:!0}),y.Terminal=void 0;let n=r(5101),l=r(6097),f=r(4335),k=r(5856),a=r(3027),w=r(7150),c=["cols","rows"];class g extends w.Disposable{constructor(i){super(),this._core=this._register(new k.Terminal(i)),this._addonManager=this._register(new a.AddonManager),this._publicOptions={...this._core.options};let p=d=>this._core.options[d],h=(d,u)=>{this._checkReadonlyOptions(d),this._core.options[d]=u};for(let d in this._core.options){Object.defineProperty(this._publicOptions,d,{get:()=>this._core.options[d],set:b=>{this._checkReadonlyOptions(d),this._core.options[d]=b}});let u={get:p.bind(this,d),set:h.bind(this,d)};Object.defineProperty(this._publicOptions,d,u)}}_checkReadonlyOptions(i){if(c.includes(i))throw new Error(`Option "${i}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.options.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onLineFeed(){return this._core.onLineFeed}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new l.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new f.UnicodeApi(this._core)}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=this._register(new n.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let i=this._core.coreService.decPrivateModes,p="none";switch(this._core.coreMouseService.activeProtocol){case"X10":p="x10";break;case"VT200":p="vt200";break;case"DRAG":p="drag";break;case"ANY":p="any"}return{applicationCursorKeysMode:i.applicationCursorKeys,applicationKeypadMode:i.applicationKeypad,bracketedPasteMode:i.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:p,originMode:i.origin,reverseWraparoundMode:i.reverseWraparound,sendFocusMode:i.sendFocus,synchronizedOutputMode:i.synchronizedOutput,wraparoundMode:i.wraparound}}get options(){return this._publicOptions}set options(i){for(let p in i)this._publicOptions[p]=i[p]}input(i,p=!0){this._core.input(i,p)}resize(i,p){this._verifyIntegers(i,p),this._core.resize(i,p)}registerMarker(i=0){return this._checkProposedApi(),this._verifyIntegers(i),this._core.addMarker(i)}addMarker(i){return this.registerMarker(i)}dispose(){super.dispose()}scrollLines(i){this._verifyIntegers(i),this._core.scrollLines(i)}scrollPages(i){this._verifyIntegers(i),this._core.scrollPages(i)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(i){this._verifyIntegers(i),this._core.scrollToLine(i)}clear(){this._core.clear()}write(i,p){this._core.write(i,p)}writeln(i,p){this._core.write(i),this._core.write(`\r
29
+ `,p)}reset(){this._core.reset()}loadAddon(i){this._addonManager.loadAddon(this,i)}_verifyIntegers(...i){for(let p of i)if(p===1/0||isNaN(p)||p%1!=0)throw new Error("This API only accepts integers")}}y.Terminal=g})();var o=oo;for(var m in s)o[m]=s[m];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});Ae();function Xs(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
  `+he());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
  `+he());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
- ${he()}`);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>=2&&t[0]==="task"&&t[1]==="new"){let r=t.indexOf("--repo"),s=t.indexOf("--workspace"),o=t.indexOf("--runner");if(r===-1&&s===-1)throw new Error(`Task creation now requires '--repo <repo-id>' or '--workspace <workspace-id>'.
35
+ ${he()}`);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
  `+he());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
38
38
 
39
- `+he());let m=r===-1?void 0:t[r+1]?.trim()??"",y=s===-1?void 0:t[s+1]?.trim()??"",n=o===-1?void 0:Us(t[o+1]?.trim()??""),h=t.filter((b,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(m!==void 0&&m.length===0)throw new Error(`Repo id cannot be empty.
39
+ `+he());let m=r===-1?void 0:t[r+1]?.trim()??"",y=s===-1?void 0:t[s+1]?.trim()??"",n=o===-1?void 0:Gs(t[o+1]?.trim()??""),f=t.filter((k,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(m!==void 0&&m.length===0)throw new Error(`Repo id cannot be empty.
40
40
 
41
41
  `+he());if(y!==void 0&&y.length===0)throw new Error(`Workspace id cannot be empty.
42
42
 
43
- `+he());if(h.length===0)throw new Error(`Task prompt cannot be empty.
43
+ `+he());if(f.length===0)throw new Error(`Task prompt cannot be empty.
44
44
 
45
- `+he());return{mode:"command",command:{kind:"createTask",...m?{repoId:m}:{},...y?{workspaceId:y}:{},prompt:h,...n?{runner:n}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
45
+ `+he());return{mode:"command",command:{kind:"createTask",...m?{repoId:m}:{},...y?{workspaceId:y}:{},prompt:f,...n?{runner:n}:{}}}}if(t.length>=2&&t.length<=4&&t[0]==="task"&&t[1]==="list"){if(t.length===2)return{mode:"command",command:{kind:"listTasks"}};if(t.length===4&&t[2]==="--repo")return{mode:"command",command:{kind:"listTasks",repoId:t[3].trim()}};throw new Error(`Unsupported command: ${t.join(" ")}
46
46
 
47
- ${he()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Se(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Se(t[2])}};if(t.length>=3&&t.length<=4&&t[0]==="task"&&t[1]==="pr"){let r=t[3]==="--watch";if(t.length===4&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
47
+ ${he()}`)}if(t.length===3&&t[0]==="task"&&t[1]==="attach")return{mode:"command",command:{kind:"attachTask",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="show")return{mode:"command",command:{kind:"showTask",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="logs")return{mode:"command",command:{kind:"streamTaskLogs",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="diff")return{mode:"command",command:{kind:"showTaskDiff",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="focus")return{mode:"command",command:{kind:"focusTask",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="open")return{mode:"command",command:{kind:"openTask",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="check")return{mode:"command",command:{kind:"runChecks",taskId:Te(t[2])}};if(t.length===3&&t[0]==="task"&&t[1]==="commit")return{mode:"command",command:{kind:"commitTask",taskId:Te(t[2])}};if(t.length>=3&&t.length<=4&&t[0]==="task"&&t[1]==="pr"){let r=t[3]==="--watch";if(t.length===4&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
48
48
 
49
- ${he()}`);return{mode:"command",command:{kind:"openPullRequest",taskId:Se(t[2]),watch:r}}}if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Se(t[2]),repoId:ha(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:Se(t[2])}};if(t.length>=3&&t.length<=4&&t[0]==="task"&&t[1]==="merge"){let r=t[3]==="--preserve-worktree";if(t.length===4&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
49
+ ${he()}`);return{mode:"command",command:{kind:"openPullRequest",taskId:Te(t[2]),watch:r}}}if(t.length===4&&t[0]==="link"&&t[1]==="add")return{mode:"command",command:{kind:"addTaskLink",taskId:Te(t[2]),repoId:wa(t[3])}};if(t.length===3&&t[0]==="link"&&t[1]==="list")return{mode:"command",command:{kind:"listTaskLinks",taskId:Te(t[2])}};if(t.length>=3&&t.length<=4&&t[0]==="task"&&t[1]==="merge"){let r=t[3]==="--preserve-worktree";if(t.length===4&&!r)throw new Error(`Unsupported command: ${t.join(" ")}
50
50
 
51
- ${he()}`);return{mode:"command",command:{kind:"mergeTask",taskId:Se(t[2]),preserveWorktree:r}}}throw new Error(`Unsupported command: ${t.join(" ")}
51
+ ${he()}`);return{mode:"command",command:{kind:"mergeTask",taskId:Te(t[2]),preserveWorktree:r}}}throw new Error(`Unsupported command: ${t.join(" ")}
52
52
 
53
- ${he()}`)}function he(){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 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 task pr Create or refresh a task pull request"," craig task merge Merge a task pull request and clean up"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
54
- `)}function Se(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
53
+ ${he()}`)}function he(){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 task pr Create or refresh a task pull request"," craig task merge Merge a task pull request and clean up"," craig link add Add a linked repo to a task"," craig link list List linked repos for a task"].join(`
54
+ `)}function Te(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
55
55
 
56
- ${he()}`);return t}function ha(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
56
+ ${he()}`);return t}function wa(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
57
57
 
58
- ${he()}`);return t}import Pi from"node:path";import{mkdir as fa,readFile as pa,writeFile as ga}from"node:fs/promises";import ma from"node:path";async function ke(e){try{let t=await pa(e.configFile,"utf8"),r=JSON.parse(t);return zs(r,e.configFile)}catch(t){if(_a(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 Ks(e,t){zs(t,e.configFile),await fa(ma.dirname(e.configFile),{recursive:!0}),await ga(e.configFile,`${JSON.stringify(t,null,2)}
59
- `,"utf8")}function zs(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(!ce.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${ce.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 m=o;if(m.enabled!==void 0&&typeof m.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(m.path!==void 0&&(typeof m.path!="string"||m.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 _a(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Oe();import{readFile as va,readdir as Uh,rm as qh}from"node:fs/promises";import Sa from"node:path";async function Ve(e,t){let r=await va(Er(e,t),"utf8"),s=JSON.parse(r);return Ta(s,Er(e,t))}async function rt(e,t){await le(Er(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Er(e,t){return Sa.join(e.sessionsDir,`${t}.json`)}function Ta(e,t){let r=Pa(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")||!Ca(r.attach)||!Ra(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 Ra(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 Ca(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 Pa(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??""}}Oe();it();import{readFile as Ea}from"node:fs/promises";async function Re(e,t){let r=await Ea(Dr(e,t),"utf8"),s=JSON.parse(r);return Aa(s,Dr(e,t))}async function re(e,t){let r={...t,updatedAt:new Date().toISOString()};await le(Dr(e,t.id),r)}async function Lr(e,t){let r=await Te(e);r.taskIds.includes(t)||await st(e,{...r,taskIds:[...r.taskIds,t]})}function Dr(e,t){return`${e.tasksDir}/${t}.json`}function Aa(e,t){let r=Da(e);if(!Ma(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Da(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:Mr(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:$a(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:Oa(t.repoTargets),runnerSession:t.runnerSession??La(t),checks:Ha(t),lastCommit:t.lastCommit??null,pullRequest:Ua(t),artifacts:Ka(t),cleanup:za(t)}}function La(e){if(typeof e.title!="string")return null;let t=Mr(e.runner);return{command:me(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function Ma(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.id=="string"&&typeof t.title=="string"&&typeof t.slug=="string"&&(t.type==="repo"||t.type==="project")&&typeof t.status=="string"&&mt(t.runner??"")&&typeof t.repoId=="string"&&typeof t.workspaceId=="string"&&(typeof t.sessionId=="string"||t.sessionId===null)&&(typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null)&&Array.isArray(t.linkedRepoIds)&&t.linkedRepoIds.every(r=>typeof r=="string")&&typeof t.repoRoot=="string"&&typeof t.worktreePath=="string"&&typeof t.branch=="string"&&Gs(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||Ba(t.repoTargets))&&Wa(t.runnerSession)&&Na(t.prompt)&&Xs(t.checks)&&Ys(t.lastCommit)&&Qs(t.pullRequest)&&ja(t.artifacts)&&Js(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Oa(e){if(Array.isArray(e))return e.filter(Vs)}function Ba(e){return Array.isArray(e)&&e.every(Vs)}function Vs(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)&&Xs(t.checks)&&Ys(t.lastCommit)&&Qs(t.pullRequest)&&Js(t.cleanup)}function $a(e){if(Gs(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 Fa(e.id,e.title,t,Mr(e.runner))}function Fa(e,t,r,s){let o=be(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Mr(e){return e&&mt(e)?e:"codex"}function Gs(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 Wa(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 Na(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function Xs(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 Ys(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function Qs(e){return typeof e=="object"&&e!==null&&e.provider==="github"&&(typeof e.number=="number"||e.number===null)&&(typeof e.url=="string"||e.url===null)&&(typeof e.baseBranch=="string"||e.baseBranch===null)&&(typeof e.headBranch=="string"||e.headBranch===null)&&(e.status==="open"||e.status==="closed"||e.status==="merged"||e.status===null)&&typeof e.mergeable=="boolean"&&(typeof e.mergeStateStatus=="string"||e.mergeStateStatus===null)&&Array.isArray(e.requiredChecks)&&e.requiredChecks.every(t=>typeof t=="object"&&t!==null&&typeof t.name=="string"&&(t.status==="pending"||t.status==="success"||t.status==="failed"||t.status==="skipped"||t.status==="unknown")&&(typeof t.conclusion=="string"||t.conclusion===null))&&(typeof e.lastSyncedAt=="string"||e.lastSyncedAt===null)&&(typeof e.lastSyncedHeadSha=="string"||e.lastSyncedHeadSha===null||e.lastSyncedHeadSha===void 0)}function ja(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 Js(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 Ha(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 Ua(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:qa(t.requiredChecks),lastSyncedHeadSha:t.lastSyncedHeadSha??null}:{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function qa(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 Ka(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function za(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}wt();Pe();function Ut(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as Za,constants as ec}from"node:fs";import{homedir as ti}from"node:os";import Ge from"node:path";var tc=[Ge.join(ti(),".local","bin"),Ge.join(ti(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function si(e=process.env){return sc([...(e.PATH??"").split(Ge.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:tc])}function nt(e=process.env){return{...e,PATH:si(e).join(Ge.delimiter)}}function rc(e,t={}){if(e.includes(Ge.sep)){let r=Ge.isAbsolute(e)?e:Ge.resolve(t.cwd??process.cwd(),e);return ri(r)?r:null}for(let r of si(t.env)){let s=Ge.join(r,e);if(ri(s))return s}return null}function ot(e,t={}){let r=rc(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 ri(e){try{return Za(e,ec.X_OK),!0}catch{return!1}}function sc(e){return[...new Set(e)]}Pe();import{spawn as ic}from"node:child_process";import{createHash as nc}from"node:crypto";import oc from"node:path";var ac="craig";async function ii(e,t,r){let s=Or(e,t),o=lc(),m=await Q("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),y=uc(m.stdout);return await cc(e,s),y}async function cc(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 Q("tmux",s,{cwd:e})}async function ni(e,t,r){await Q("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function oi(e,t,r){await Q("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function ai(e,t,r){await Q("tmux",["pipe-pane","-o","-t",e,`cat >> ${Ut(t)}`],{cwd:r})}async function qt(e,t,r,s){let o=s??li(e);if(r?await Q("tmux",["select-window","-t",r],{cwd:e}):await Q("tmux",["select-window","-t",t],{cwd:e}),await Q("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await Q("tmux",["switch-client","-t",o],{cwd:e});return}await fc(e,["attach-session","-t",o])}async function ci(e,t){await Q("tmux",["kill-session","-t",t],{cwd:e})}function li(e){let r=oc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=nc("sha1").update(e).digest("hex").slice(0,8);return`${ac}-${r}-${s}`}function Or(e,t){return`${li(e)}-${t.toLowerCase()}`}function lc(){let e=dc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function dc(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,s="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof s=="number"&&s>0)return{columns:r,rows:s}}return null}function uc(e){let t=hc(e);if(t.length<3)throw new Error("tmux did not return the expected session, window, and pane targets for the Craig task session.");return{sessionName:t[0],windowTarget:t[1],paneId:t[2]}}function hc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function fc(e,t){await new Promise((r,s)=>{let o=ic("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",m=>{if(m===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${m??"unknown"}.`))})})}var Br={async prepare(e,t){let r=e.runnerSession.command[0]??me(e.runner)[0],s=nt();await Q(ot(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:me(e.runner,e.prompt.value),s=ot(r[0],{cwd:e.worktreePath,env:nt()});await oi(t.session.paneId,[s,...r.slice(1)].map(o=>Ut(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Pe();var Tt={async create(e,t){let r=await ii(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await ai(r.paneId,t.logPath,t.repoRoot);let s=await di({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||Or(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 rt(e,o),o},async attach(e,t,r){let s=await Tt.snapshot(t,r);if(!s.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await qt(r,t.paneId,t.windowTarget,t.sessionName);let o={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:s};return await rt(e,o),o},async resize(e,t,r,s){await ni(s,t.sessionName,r);let o={...t,attach:{...t.attach,lastSize:r}};return await rt(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 rt(e,s),s},async snapshot(e,t){return pc(e,t)}};async function pc(e,t){let r=await ae("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return di({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function di(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ct();import{mkdir as Pt,symlink as Rc,writeFile as Fr}from"node:fs/promises";import oe from"node:path";Rt();Pe();async function gi(e,t){let r=await ae("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function $r(e,t,r){if((await ae("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode!==0)throw new Error("Base branch 'main' does not exist locally.");let o=await Tc(e);await Q("git",["worktree","add","-b",t,r,o],{cwd:e})}async function Tc(e){return(await ae("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await ae("git",["fetch","origin","main"],{cwd:e})).exitCode!==0?"main":(await ae("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"refs/remotes/origin/main":"main"}async function Ct(e){let t=await ae("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function mi(e){await Q("git",["add","-A"],{cwd:e})}async function _i(e,t){await Q("git",["commit","-m",t],{cwd:e})}async function Xt(e){let t=await Q("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
60
- `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}async function Yt(e){return!await Ct(e)}async function wi(e){await Q("git",["remote","get-url","origin"],{cwd:e})}async function bi(e,t){await Q("git",["push","-u","origin",t],{cwd:e})}async function ki(e,t){await Q("git",["worktree","remove","--force",t],{cwd:e})}it();async function yi(e,t){let r=await Te(e),s=Si(new Date),o=Ti(r.taskIds,s);for(;;){let m=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${m}`;if(!await gi(t,y))return m;o+=1}}async function vi(e){let t=await Te(e),r=Si(new Date),s=Ti(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Si(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 Ti(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}async function It(e,t,r,s={}){let o=await Ae(e,t),m=await Ic(e,o.id),y=await yi(e,o.rootPath),n=s.sessionId??null,d=`craig/${y}`,h=oe.join(e.worktreesDir,o.id,y),b=oe.join(e.logsDir,`${y}.log`),a=oe.join(e.artifactsDir,y);await Pt(oe.dirname(h),{recursive:!0}),await Pt(a,{recursive:!0}),await Fr(b,"","utf8");let w=Cc(e,{taskId:y,repoId:o.id,workspaceId:m.id,sessionId:n,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:d,worktreePath:h});return await re(e,w),await Lr(e,y),await $r(o.rootPath,d,h),{repoId:o.id,repoRoot:o.rootPath,sessionId:n,workspaceId:m.id,task:w}}async function Jt(e,t,r,s={}){let o=(await De(e)).find(c=>c.id===t&&c.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 c=await It(e,o.primaryRepoId,r,s);return{...c,bundlePath:c.task.worktreePath,repoTargets:[]}}let m=o.discoveredRepoIds??[];if(m.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let y=await vi(e),n=new Date().toISOString(),d=s.runner??"codex",h=s.sessionId??null,b=`craig/${y}`,a=oe.join(e.craigDir,"task-bundles",y),w=oe.join(a,"repos"),l=oe.join(e.logsDir,`${y}.log`),g=oe.join(e.artifactsDir,y);await Pt(w,{recursive:!0}),await Pt(g,{recursive:!0}),await Fr(l,"","utf8");let _=await Promise.all(m.map(c=>Pc(e,c,y,b))),i=_.find(c=>c.status==="ready")??_[0];await Promise.all(_.map(async c=>{if(c.status!=="ready")return;let f=oe.join(w,c.repoId);await Rc(c.worktreePath,f,"dir").catch(()=>{})})),await Fr(oe.join(a,"manifest.json"),JSON.stringify({taskId:y,workspaceId:t,prompt:r,repos:_.map(c=>({repoId:c.repoId,status:c.status,worktreePath:c.worktreePath,failureReason:c.failureReason}))},null,2),"utf8");let p=Ri(y,r,n,d,s.config??{}),u={id:y,title:r,slug:Ci(r),type:"project",status:"draft",runner:d,repoId:i.repoId,workspaceId:o.id,sessionId:h,selectedPtyTabId:p[0]?.id??null,linkedRepoIds:m.filter(c=>c!==i.repoId),repoRoot:a,worktreePath:a,branch:b,bundlePath:a,selectedRepoTargetId:i.repoId,repoTargets:_,ptyTabs:p,runnerSession:{command:me(d,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:i.checks,lastCommit:null,pullRequest:i.pullRequest,artifacts:{logPath:oe.relative(e.workspaceRoot,l),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(g,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(g,"pr-status.json"))},cleanup:Qt(),lastFailureReason:_.every(c=>c.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:n,updatedAt:n};return await re(e,u),await Lr(e,y),{repoId:i.repoId,repoRoot:a,sessionId:h,workspaceId:o.id,task:u,bundlePath:a,repoTargets:_}}function Ri(e,t,r,s="codex",o={}){let m=be(s);return[{id:`${e}:agent`,kind:"agent",title:m.defaultAgentTitle,command:me(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Cc(e,t){let r=new Date().toISOString(),s=Ri(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Ci(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:me(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Wr(oe.relative(e.workspaceRoot,e.configFile))},lastCommit:null,pullRequest:Nr(),artifacts:{logPath:oe.relative(e.workspaceRoot,oe.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:Qt(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Pc(e,t,r,s){let o=await Ae(e,t),m=oe.join(e.worktreesDir,o.id,r);await Pt(oe.dirname(m),{recursive:!0});try{return await $r(o.rootPath,s,m),{repoId:o.id,branch:s,repoRoot:o.rootPath,worktreePath:m,status:"ready",failureReason:null,checks:Wr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Nr(),cleanup:Qt()}}catch(y){return{repoId:o.id,branch:s,repoRoot:o.rootPath,worktreePath:m,status:"unavailable",failureReason:y instanceof Error?y.message:"Failed to create worktree.",checks:Wr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:Nr(),cleanup:Qt()}}}function Wr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function Nr(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function Qt(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function Ic(e,t){let s=(await De(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 Ci(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Ii(e,t,r,s={}){let o=r.trim(),m=await ke(e),y=s.runner??tt(m);if(jt(y,m),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let n=s.workspaceId?await Jt(e,s.workspaceId,o,{runner:y,config:m}):await It(e,t,o,{runner:y,config:m}),d=n.task,h=me(y,o,m),b=`session_${d.id}`,a=d.artifacts.logPath?Pi.resolve(e.workspaceRoot,d.artifacts.logPath):Pi.join(e.logsDir,`${d.id}.log`);try{await Br.prepare(d,{repoRoot:n.repoRoot});let w=await Tt.create(e,{sessionId:b,taskId:d.id,repoId:n.repoId,workspaceId:n.workspaceId,repoRoot:n.repoRoot,worktreePath:d.worktreePath,logPath:a,command:h});await Br.launch(d,{repoRoot:n.repoRoot,session:w});let l=new Date().toISOString();w={...w,status:"running",startedAt:l,command:h};let g={...d,status:"running",runner:y,sessionId:w.id,selectedPtyTabId:d.selectedPtyTabId,runnerSession:{command:w.command,pid:null,startedAt:l,lastKnownState:"running",exitCode:null,exitedAt:null}};return await re(e,g),await rt(e,w),await Ce({uiStateFile:e.uiStateFile},{...await Ee({uiStateFile:e.uiStateFile})??Be(),selectedRepoId:g.repoId,selectedWorkspaceId:g.workspaceId,selectedTaskId:g.id,selectedPtyTabId:g.selectedPtyTabId}),{kind:"createTask",taskId:g.id,repoId:g.repoId,workspaceId:g.workspaceId,sessionId:w.id,status:g.status,branch:g.branch,worktreePath:g.worktreePath,runner:g.runner}}catch(w){let l={...d,sessionId:null,status:"draft",runnerSession:{...d.runnerSession,lastKnownState:"failed"},lastFailureReason:w instanceof Error?w.message:"Unknown Craig error"};throw await re(e,l),w}}it();async function lt(e,t){let r=await Te(e),s=[],o=[];await Promise.all(r.taskIds.map(async n=>{try{s.push(await Re(e,n))}catch(d){if(xc(d)){o.push(n);return}throw d}}));let y=(t?.includeClosed?s:s.filter(n=>n.status!=="closed")).filter(n=>!(t?.workspaceId&&n.workspaceId!==t.workspaceId||t?.repoId&&n.repoId!==t.repoId&&!(n.repoTargets??[]).some(d=>d.repoId===t.repoId)));return y.sort((n,d)=>n.id.localeCompare(d.id)),o.sort(),{kind:"listTasks",tasks:y,missingTaskIds:o,repoId:t?.repoId??null}}function xc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}ct();import{access as Ec}from"node:fs/promises";import xi from"node:path";async function ie(e,t){try{return await Re(e,t)}catch(r){throw Oc(r)?new Error(`Craig task "${t}" was not found.`):r}}async function fe(e){if(!await jr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function Hr(e,t){return t.artifacts.logPath?xi.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:xi.join(e.workspaceRoot,t.artifacts.logPath):null}async function Ei(e,t){let r=await jr(t.worktreePath),s=Hr(e,t),o=s?await jr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:Ac(t),lastCommitSummary:Dc(t),prSummary:Lc(t),cleanupSummary:Mc(t)}}async function jr(e){try{return await Ec(e),!0}catch{return!1}}function Ac(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 Dc(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Lc(e){if(!e.pullRequest.number||!e.pullRequest.url)return"not linked";let t=e.pullRequest.requiredChecks.length,r=t===1?"check":"checks";return`#${e.pullRequest.number} ${e.pullRequest.status??"unknown"} mergeable=${e.pullRequest.mergeable} mergeState=${e.pullRequest.mergeStateStatus??"unknown"} (${t} ${r})`}function Mc(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 Oc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Ai(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([Ae(e,r.repoId),Ve(e,r.sessionId)]),m=await Tt.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:m.id,disposition:"attached"}}Oe();import{mkdir as Li,readFile as Bc,writeFile as $c}from"node:fs/promises";import Zt from"node:path";Pe();import Di from"node:path";function xt(e,t){return t?Di.isAbsolute(t)?t:Di.join(e.repoRoot,t):null}async function dt(e){let t=await ae("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Mi(e,t){let r=xt(t,e.artifacts.prDraftPath??Zt.join(".craig","artifacts",e.id,"pr.md"));if(!r)throw new Error(`Task ${e.id} is missing a PR draft artifact path.`);await Li(Zt.dirname(r),{recursive:!0});try{await Bc(r,"utf8")}catch{await $c(r,`## Summary
58
+ ${he()}`);return t}import Di from"node:path";Ae();import{mkdir as ka,readFile as ba,writeFile as ya}from"node:fs/promises";import va from"node:path";async function ye(e){try{let t=await ba(e.configFile,"utf8"),r=JSON.parse(t);return Qs(r,e.configFile)}catch(t){if(Sa(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 Ys(e,t){Qs(t,e.configFile),await ka(va.dirname(e.configFile),{recursive:!0}),await ya(e.configFile,`${JSON.stringify(t,null,2)}
59
+ `,"utf8")}function Qs(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(!ce.includes(s))throw new Error(`Craig config at ${t} is invalid. "runners.${s}" is not supported. Expected one of: ${ce.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 m=o;if(m.enabled!==void 0&&typeof m.enabled!="boolean")throw new Error(`Craig config at ${t} is invalid. "runners.${s}.enabled" must be a boolean.`);if(m.path!==void 0&&(typeof m.path!="string"||m.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 Sa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Fe();import{readFile as Ia,readdir as Xh,rm as Yh}from"node:fs/promises";import xa from"node:path";async function Ye(e,t){let r=await Ia(Br(e,t),"utf8"),s=JSON.parse(r);return Ea(s,Br(e,t))}async function nt(e,t){await le(Br(e,t.id),{...t,updatedAt:new Date().toISOString()})}function Br(e,t){return xa.join(e.sessionsDir,`${t}.json`)}function Ea(e,t){let r=La(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")||!Da(r.attach)||!Aa(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 Aa(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 Da(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 La(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??""}}_e();bt();Ie();function Xt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as nc,constants as oc}from"node:fs";import{homedir as oi}from"node:os";import Qe from"node:path";var ac=[Qe.join(oi(),".local","bin"),Qe.join(oi(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function ci(e=process.env){return lc([...(e.PATH??"").split(Qe.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:ac])}function ct(e=process.env){return{...e,PATH:ci(e).join(Qe.delimiter)}}function cc(e,t={}){if(e.includes(Qe.sep)){let r=Qe.isAbsolute(e)?e:Qe.resolve(t.cwd??process.cwd(),e);return ai(r)?r:null}for(let r of ci(t.env)){let s=Qe.join(r,e);if(ai(s))return s}return null}function lt(e,t={}){let r=cc(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 ai(e){try{return nc(e,oc.X_OK),!0}catch{return!1}}function lc(e){return[...new Set(e)]}Ae();Ie();import{spawn as dc}from"node:child_process";import{createHash as uc}from"node:crypto";import hc from"node:path";var fc="craig";async function li(e,t,r){let s=jr(e,t),o=gc(),m=await Q("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",s,"-n","runner",...o,"-c",r],{cwd:e}),y=_c(m.stdout);return await pc(e,s),y}async function pc(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 Q("tmux",s,{cwd:e})}async function di(e,t,r){await Q("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function ui(e,t,r){await Q("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function hi(e,t,r){await Q("tmux",["pipe-pane","-o","-t",e,`cat >> ${Xt(t)}`],{cwd:r})}async function Yt(e,t,r,s){let o=s??pi(e);if(r?await Q("tmux",["select-window","-t",r],{cwd:e}):await Q("tmux",["select-window","-t",t],{cwd:e}),await Q("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await Q("tmux",["switch-client","-t",o],{cwd:e});return}await kc(e,["attach-session","-t",o])}async function fi(e,t){await Q("tmux",["kill-session","-t",t],{cwd:e})}function pi(e){let r=hc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=uc("sha1").update(e).digest("hex").slice(0,8);return`${fc}-${r}-${s}`}function jr(e,t){return`${pi(e)}-${t.toLowerCase()}`}function gc(){let e=mc();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function mc(){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 _c(e){let t=wc(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 wc(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=dc("tmux",t,{cwd:e,stdio:"inherit"});o.on("error",s),o.on("exit",m=>{if(m===0){r();return}s(new Error(`tmux ${t.join(" ")} failed with exit code ${m??"unknown"}.`))})})}var Hr={async prepare(e,t){let r=e.runnerSession.command[0]??me(e.runner)[0],s=ct();await Q(lt(r,{cwd:t.repoRoot,env:s}),["--help"],{cwd:t.repoRoot,env:s})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:me(e.runner,e.prompt.value),s=lt(r[0],{cwd:e.worktreePath,env:ct()});await ui(t.session.paneId,[s,...r.slice(1)].map(o=>Xt(o)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};Ae();Ie();var Ct={async create(e,t){let r=await li(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await hi(r.paneId,t.logPath,t.repoRoot);let s=await gi({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||jr(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 Ct.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 di(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 bc(e,t)}};async function bc(e,t){let r=await ae("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return gi({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function gi(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ut();_e();It();import{mkdir as Et,writeFile as qr}from"node:fs/promises";import oe from"node:path";Ie();async function bi(e,t){let r=await ae("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Ur(e,t,r){if((await ae("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode!==0)throw new Error("Base branch 'main' does not exist locally.");let o=await Ec(e);await Q("git",["worktree","add","-b",t,r,o],{cwd:e})}async function Ec(e){return(await ae("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await ae("git",["fetch","origin","main"],{cwd:e})).exitCode!==0?"main":(await ae("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"refs/remotes/origin/main":"main"}async function xt(e){let t=await ae("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function yi(e){await Q("git",["add","-A"],{cwd:e})}async function vi(e,t){await Q("git",["commit","-m",t],{cwd:e})}async function er(e){let t=await Q("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",s=""]=t.stdout.trim().split(`
60
+ `);if(!r||!s)throw new Error("Unable to read git HEAD commit metadata.");return{sha:r,message:s}}async function tr(e){return!await xt(e)}async function Si(e){await Q("git",["remote","get-url","origin"],{cwd:e})}async function Ti(e,t){await Q("git",["push","-u","origin",t],{cwd:e})}async function Ri(e,t){await Q("git",["worktree","remove","--force",t],{cwd:e})}Ae();at();async function Ci(e,t){let r=await Re(e),s=Ii(new Date),o=xi(r.taskIds,s);for(;;){let m=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${m}`;if(!await bi(t,y))return m;o+=1}}async function Pi(e){let t=await Re(e),r=Ii(new Date),s=xi(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function Ii(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 xi(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}async function At(e,t,r,s={}){let o=await Le(e,t),m=await Mc(e,o.id),y=await Ci(e,o.rootPath),n=s.sessionId??null,l=`craig/${y}`,f=oe.join(e.worktreesDir,o.id,y),k=oe.join(e.logsDir,`${y}.log`),a=oe.join(e.artifactsDir,y);await Et(oe.dirname(f),{recursive:!0}),await Et(a,{recursive:!0}),await qr(k,"","utf8");let w=Ac(e,{taskId:y,repoId:o.id,workspaceId:m.id,sessionId:n,repoRoot:o.rootPath,prompt:r,runner:s.runner??"codex",config:s.config??{},branch:l,worktreePath:f});return await re(e,w),await Wr(e,y),await Ur(o.rootPath,l,f),{repoId:o.id,repoRoot:o.rootPath,sessionId:n,workspaceId:m.id,task:w}}async function sr(e,t,r,s={}){let o=(await Me(e)).find(u=>u.id===t&&u.status==="active");if(!o)throw new Error(`Workspace ${t} does not exist or is archived.`);if(o.kind!=="project"){if(!o.primaryRepoId)throw new Error(`Workspace ${t} is not task-capable.`);let u=await At(e,o.primaryRepoId,r,s);return{...u,bundlePath:u.task.worktreePath,repoTargets:[]}}let m=o.discoveredRepoIds??[];if(m.length===0)throw new Error(`Project workspace ${t} has no discovered repos.`);let y=await Pi(e),n=new Date().toISOString(),l=s.runner??"codex",f=s.sessionId??null,k=`craig/${y}`,a=oe.join(e.craigDir,"task-bundles",y),w=oe.join(e.logsDir,`${y}.log`),c=oe.join(e.artifactsDir,y);await Et(a,{recursive:!0}),await Et(c,{recursive:!0}),await qr(w,"","utf8");let g=await Promise.all(m.map(u=>Le(e,u))),_=Lc(g),i=await Promise.all(g.map(u=>Dc(e,u,y,k,oe.join(a,_.get(u.id))))),p=i.find(u=>u.status==="ready")??i[0];await qr(oe.join(a,"manifest.json"),JSON.stringify({taskId:y,workspaceId:t,prompt:r,repos:i.map(u=>({repoId:u.repoId,repoName:g.find(b=>b.id===u.repoId)?.name??u.repoId,path:oe.relative(a,u.worktreePath),status:u.status,worktreePath:u.worktreePath,failureReason:u.failureReason}))},null,2),"utf8");let h=Ei(y,r,n,l,s.config??{}),d={id:y,title:r,slug:Ai(r),type:"project",status:"draft",runner:l,repoId:p.repoId,workspaceId:o.id,sessionId:f,selectedPtyTabId:h[0]?.id??null,linkedRepoIds:m.filter(u=>u!==p.repoId),repoRoot:a,worktreePath:a,branch:k,bundlePath:a,selectedRepoTargetId:p.repoId,repoTargets:i,ptyTabs:h,runnerSession:{command:me(l,r,s.config??{}),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:r},checks:p.checks,lastCommit:null,pullRequest:p.pullRequest,artifacts:{logPath:oe.relative(e.workspaceRoot,w),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(c,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(c,"pr-status.json"))},cleanup:rr(),lastFailureReason:i.every(u=>u.status==="unavailable")?"No project repo targets could be provisioned.":null,createdAt:n,updatedAt:n};return await re(e,d),await Wr(e,y),{repoId:p.repoId,repoRoot:a,sessionId:f,workspaceId:o.id,task:d,bundlePath:a,repoTargets:i}}function Ei(e,t,r,s="codex",o={}){let m=be(s);return[{id:`${e}:agent`,kind:"agent",title:m.defaultAgentTitle,command:me(s,void 0,o),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Ac(e,t){let r=new Date().toISOString(),s=Ei(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Ai(t.prompt),type:"repo",status:"draft",runner:t.runner,repoId:t.repoId,workspaceId:t.workspaceId,sessionId:t.sessionId,selectedPtyTabId:s[0]?.id??null,linkedRepoIds:[],repoRoot:t.repoRoot,worktreePath:t.worktreePath,branch:t.branch,ptyTabs:s,runnerSession:{command:me(t.runner,t.prompt,t.config),pid:null,startedAt:null,lastKnownState:"starting",exitCode:null,exitedAt:null},prompt:{source:"inline",value:t.prompt},checks:{...Kr(oe.relative(e.workspaceRoot,e.configFile))},lastCommit:null,pullRequest:zr(),artifacts:{logPath:oe.relative(e.workspaceRoot,oe.join(e.logsDir,`${t.taskId}.log`)),checkSummaryPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"check-summary.json")),prDraftPath:null,prStatusPath:oe.relative(e.workspaceRoot,oe.join(e.artifactsDir,t.taskId,"pr-status.json"))},cleanup:rr(),lastFailureReason:null,createdAt:r,updatedAt:r}}async function Dc(e,t,r,s,o){await Et(oe.dirname(o),{recursive:!0});try{return await Ur(t.rootPath,s,o),{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"ready",failureReason:null,checks:Kr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:zr(),cleanup:rr()}}catch(m){return{repoId:t.id,branch:s,repoRoot:t.rootPath,worktreePath:o,status:"unavailable",failureReason:m instanceof Error?m.message:"Failed to create worktree.",checks:Kr(oe.relative(e.workspaceRoot,e.configFile)),lastCommit:null,pullRequest:zr(),cleanup:rr()}}}function Lc(e){let t=new Set(["manifest.json"]),r=new Map;for(let s of e){let o=s.name==="manifest.json"?`${s.name}-repo`:s.name,m=o,y=2;for(;t.has(m);)m=`${o}-${y}`,y+=1;t.add(m),r.set(s.id,m)}return r}function Kr(e){return{source:{type:"repo_config",path:e},lastRunAt:null,status:"not_run",commands:[],results:[]}}function zr(){return{provider:"github",number:null,url:null,baseBranch:null,headBranch:null,status:null,mergeable:!1,mergeStateStatus:null,requiredChecks:[],lastSyncedAt:null,lastSyncedHeadSha:null}}function rr(){return{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}async function Mc(e,t){let s=(await Me(e)).find(o=>o.kind!=="project"&&o.primaryRepoId===t&&o.status==="active");if(!s)throw new Error(`Repo ${t} does not have an active workspace.`);return s}function Ai(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Li(e,t,r,s={}){let o=r.trim(),m=await ye(e),y=s.runner??it(m);if(Vt(y,m),t.trim().length===0)throw new Error(s.workspaceId?"Workspace id cannot be empty.":"Repo id cannot be empty.");if(o.length===0)throw new Error("Task prompt cannot be empty.");let n=s.workspaceId?await sr(e,s.workspaceId,o,{runner:y,config:m}):await At(e,t,o,{runner:y,config:m}),l=n.task,f=me(y,o,m),k=`session_${l.id}`,a=l.artifacts.logPath?Di.resolve(e.workspaceRoot,l.artifacts.logPath):Di.join(e.logsDir,`${l.id}.log`);try{await Hr.prepare(l,{repoRoot:n.repoRoot});let w=await Ct.create(e,{sessionId:k,taskId:l.id,repoId:n.repoId,workspaceId:n.workspaceId,repoRoot:n.repoRoot,worktreePath:l.worktreePath,logPath:a,command:f});await Hr.launch(l,{repoRoot:n.repoRoot,session:w});let c=new Date().toISOString();w={...w,status:"running",startedAt:c,command:f};let g={...l,status:"running",runner:y,sessionId:w.id,selectedPtyTabId:l.selectedPtyTabId,runnerSession:{command:w.command,pid:null,startedAt:c,lastKnownState:"running",exitCode:null,exitedAt:null}};return await re(e,g),await nt(e,w),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),selectedRepoId:g.repoId,selectedWorkspaceId:g.workspaceId,selectedTaskId:g.id,selectedPtyTabId:g.selectedPtyTabId}),{kind:"createTask",taskId:g.id,repoId:g.repoId,workspaceId:g.workspaceId,sessionId:w.id,status:g.status,branch:g.branch,worktreePath:g.worktreePath,runner:g.runner}}catch(w){let c={...l,sessionId:null,status:"draft",runnerSession:{...l.runnerSession,lastKnownState:"failed"},lastFailureReason:w instanceof Error?w.message:"Unknown Craig error"};throw await re(e,c),w}}Dt();ut();_e();import{access as Bc}from"node:fs/promises";import Mi from"node:path";async function ie(e,t){try{return await Ce(e,t)}catch(r){throw jc(r)?new Error(`Craig task "${t}" was not found.`):r}}async function fe(e){if(!await Vr(e.worktreePath))throw new Error(`Task ${e.id} worktree does not exist at ${e.worktreePath}. Repair or recreate the task before retrying.`)}function Gr(e,t){return t.artifacts.logPath?Mi.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Mi.join(e.workspaceRoot,t.artifacts.logPath):null}async function Oi(e,t){let r=await Vr(t.worktreePath),s=Gr(e,t),o=s?await Vr(s):!1;return{worktreeExists:r,logExists:o,recentFailureReason:t.lastFailureReason??null,runnerCommandText:t.runnerSession.command.join(" "),checksSummary:$c(t),lastCommitSummary:Fc(t),prSummary:Wc(t),cleanupSummary:Nc(t)}}async function Vr(e){try{return await Bc(e),!0}catch{return!1}}function $c(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 Fc(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Wc(e){if(!e.pullRequest.number||!e.pullRequest.url)return"not linked";let t=e.pullRequest.requiredChecks.length,r=t===1?"check":"checks";return`#${e.pullRequest.number} ${e.pullRequest.status??"unknown"} mergeable=${e.pullRequest.mergeable} mergeState=${e.pullRequest.mergeStateStatus??"unknown"} (${t} ${r})`}function Nc(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 jc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function Bi(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session to attach.`);let[s,o]=await Promise.all([Le(e,r.repoId),Ye(e,r.sessionId)]),m=await Ct.attach(e,o,s.rootPath);return{kind:"attachTask",taskId:r.id,sessionId:m.id,disposition:"attached"}}_e();Fe();_e();import{mkdir as Fi,readFile as Hc,writeFile as Uc}from"node:fs/promises";import ir from"node:path";Ie();import $i from"node:path";function Lt(e,t){return t?$i.isAbsolute(t)?t:$i.join(e.repoRoot,t):null}async function ht(e){let t=await ae("gh",["auth","status"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"GitHub CLI auth is required.")}async function Wi(e,t){let r=Lt(t,e.artifacts.prDraftPath??ir.join(".craig","artifacts",e.id,"pr.md"));if(!r)throw new Error(`Task ${e.id} is missing a PR draft artifact path.`);await Fi(ir.dirname(r),{recursive:!0});try{await Hc(r,"utf8")}catch{await Uc(r,`## Summary
61
61
 
62
62
  - ${e.title}
63
- `,"utf8")}return e.artifacts.prDraftPath=Zt.relative(t.repoRoot,r),r}async function Oi(e,t){await Q("gh",["pr","create","--base","main","--head",e.branch,"--title",e.lastCommit?.message??e.title,"--body-file",t],{cwd:e.worktreePath})}async function Bi(e,t){let r=t==="merge"?"--merge":t==="rebase"?"--rebase":"--squash";await Q("gh",["pr","merge",String(e.pullRequest.number),r,"--delete-branch=false"],{cwd:e.worktreePath})}async function ut(e,t){let r=await Q("gh",er(t.pullRequest.number?String(t.pullRequest.number):t.branch),{cwd:t.worktreePath}),s=JSON.parse(r.stdout);return Wi(e,t,s)}async function qr(e,t){let r=await ae("gh",er(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return await Wi(e,t,s),{discovered:!0,task:t}}async function $i(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let m=await Q("gh",er(s),{cwd:r.worktreePath});return r.pullRequest=Ur(JSON.parse(m.stdout)),await re(e,t),"synced"}let o=await ae("gh",er(s),{cwd:r.worktreePath});return o.exitCode!==0?"not_found":(r.pullRequest=Ur(JSON.parse(o.stdout)),await re(e,t),"discovered")}async function Kr(e,t){let s=((await ke(e)).github?.watchIntervalSeconds??10)*1e3;for(;;){if(await ut(e,t),Wc(t.pullRequest))return t;await new Promise(o=>setTimeout(o,s))}}async function zr(e,t){let r=xt(e,t.artifacts.prStatusPath);r&&(await Li(Zt.dirname(r),{recursive:!0}),await le(r,{taskId:t.id,pullRequest:t.pullRequest}))}function Fi(e){return e.requiredChecks.length===0?"no required checks":e.requiredChecks.map(t=>`${t.name}:${t.status}`).join(", ")}function ht(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function Fc(e){return e.requiredChecks.some(t=>t.status==="failed")}function Wc(e){return ht(e)||Fc(e)||e.status==="closed"||e.status==="merged"}function Nc(e){return ht(e)?"merge_ready":e.status==="merged"?"merged":e.status==="open"?"pr_open":"checked"}function er(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,mergeable,mergeStateStatus,statusCheckRollup"]}async function Wi(e,t,r){let s=Ur(r);return t.pullRequest=s,t.status=Nc(s),await zr(e,t),await re(e,t),t}function Ur(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:jc(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Hc(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function jc(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Hc(e){return e.map(t=>Uc(t)).filter(t=>t!==null)}function Uc(e){if(typeof e!="object"||e===null)return null;let t=e,r=t.name??t.context,s=t.state??t.status??t.conclusion;return r?{name:r,status:Ni(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function Ni(e,t){let r=e?.toUpperCase()??null,s=t?.toUpperCase()??null;return s==="SKIPPED"||r==="SKIPPED"?"skipped":r==="SUCCESS"||s==="SUCCESS"||s==="NEUTRAL"?"success":r==="PENDING"||r==="EXPECTED"||r==="IN_PROGRESS"||r==="QUEUED"||r==="REQUESTED"||r==="WAITING"?"pending":r==="FAILURE"||r==="FAILED"||r==="ERROR"||r==="TIMED_OUT"||r==="CANCELLED"||r==="ACTION_REQUIRED"||r==="STARTUP_FAILURE"||s==="FAILURE"||s==="FAILED"||s==="ERROR"||s==="TIMED_OUT"||s==="CANCELLED"||s==="ACTION_REQUIRED"||s==="STARTUP_FAILURE"?"failed":r==="COMPLETED"&&s===null?"unknown":r==="COMPLETED"&&s!==null?Ni(s,s):"unknown"}async function Et(e,t,r){let s=await ie(e,t);await fe(s),await wi(s.worktreePath),await dt(s.worktreePath);let o=!!s.pullRequest.number;if(!o&&(await qr(e,s)).discovered)return r.watch&&s.pullRequest.status!=="merged"&&!ht(s.pullRequest)&&await Kr(e,s),ji(s,r.watch,"discovered");if(s.status!=="checked"&&s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot open a pull request from status "${s.status}".`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before opening a pull request.`);if(!await Yt(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before opening a pull request.`);let m=await Mi(s,e);return await re(e,s),await bi(s.worktreePath,s.branch),s.pullRequest.number||await Oi(s,m),await ut(e,s),r.watch&&s.pullRequest.status!=="merged"&&!ht(s.pullRequest)&&await Kr(e,s),await zr(e,s),ji(s,r.watch,o?"synced":"created")}async function Hi(e,t){let r=await ie(e,t);return r.pullRequest.number&&(await dt(r.worktreePath),await ut(e,r)),r}async function Ui(e,t){let r=await ie(e,t),s=(r.repoTargets??[]).filter(m=>m.status==="ready");await dt(r.worktreePath);let o={synced:0,discovered:0,notFound:0};for(let m of s){let y=await $i(e,r,m).catch(()=>"not_found");o[y==="not_found"?"notFound":y]++}return o}async function Vr(e,t){let r=await ie(e,t);return await fe(r),await dt(r.worktreePath),r.pullRequest.number?(await ut(e,r),{disposition:"synced",task:r}):{disposition:(await qr(e,r)).discovered?"discovered":"not_found",task:r}}function ji(e,t,r){return{kind:"openPullRequest",taskId:e.id,watch:t,disposition:r,prNumber:e.pullRequest.number??0,url:e.pullRequest.url??"",status:e.status,mergeable:e.pullRequest.mergeable,requiredChecksSummary:Fi(e.pullRequest)}}async function Gr(e,t){let r=await ie(e,t);if(r.pullRequest.number)try{r=await Hi(e,t)}catch{}let s=await Ei(e,r),o=r.sessionId?await Ve(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as qc}from"node:fs/promises";async function Xr(e,t){let r=await ie(e,t),s=Hr(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await qc(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Pe();async function Yr(e,t){let r=await ie(e,t);if(await fe(r),(await Q("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Kc(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Kc(e){let t=[],r=await Q("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await zc(e);for(let o of s){let m=await ae("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(m.stdout.trimEnd())}return t.join(`
63
+ `,"utf8")}return e.artifacts.prDraftPath=ir.relative(t.repoRoot,r),r}async function Ni(e,t){await Q("gh",["pr","create","--base","main","--head",e.branch,"--title",e.lastCommit?.message??e.title,"--body-file",t],{cwd:e.worktreePath})}async function ji(e,t){let r=t==="merge"?"--merge":t==="rebase"?"--rebase":"--squash";await Q("gh",["pr","merge",String(e.pullRequest.number),r,"--delete-branch=false"],{cwd:e.worktreePath})}async function ft(e,t){let r=await Q("gh",nr(t.pullRequest.number?String(t.pullRequest.number):t.branch),{cwd:t.worktreePath}),s=JSON.parse(r.stdout);return qi(e,t,s)}async function Yr(e,t){let r=await ae("gh",nr(t.branch),{cwd:t.worktreePath});if(r.exitCode!==0)return{discovered:!1,task:t};let s=JSON.parse(r.stdout);return await qi(e,t,s),{discovered:!0,task:t}}async function Hi(e,t,r){let s=r.pullRequest.number?String(r.pullRequest.number):r.branch;if(r.pullRequest.number){let m=await Q("gh",nr(s),{cwd:r.worktreePath});return r.pullRequest=Xr(JSON.parse(m.stdout)),await re(e,t),"synced"}let o=await ae("gh",nr(s),{cwd:r.worktreePath});return o.exitCode!==0?"not_found":(r.pullRequest=Xr(JSON.parse(o.stdout)),await re(e,t),"discovered")}async function Qr(e,t){let s=((await ye(e)).github?.watchIntervalSeconds??10)*1e3;for(;;){if(await ft(e,t),Kc(t.pullRequest))return t;await new Promise(o=>setTimeout(o,s))}}async function Jr(e,t){let r=Lt(e,t.artifacts.prStatusPath);r&&(await Fi(ir.dirname(r),{recursive:!0}),await le(r,{taskId:t.id,pullRequest:t.pullRequest}))}function Ui(e){return e.requiredChecks.length===0?"no required checks":e.requiredChecks.map(t=>`${t.name}:${t.status}`).join(", ")}function pt(e){return e.mergeable&&e.requiredChecks.length>0&&e.requiredChecks.every(t=>t.status==="success"||t.status==="skipped")}function qc(e){return e.requiredChecks.some(t=>t.status==="failed")}function Kc(e){return pt(e)||qc(e)||e.status==="closed"||e.status==="merged"}function zc(e){return pt(e)?"merge_ready":e.status==="merged"?"merged":e.status==="open"?"pr_open":"checked"}function nr(e){return["pr","view",e,"--json","number,url,baseRefName,headRefName,headRefOid,state,mergeable,mergeStateStatus,statusCheckRollup"]}async function qi(e,t,r){let s=Xr(r);return t.pullRequest=s,t.status=zc(s),await Jr(e,t),await re(e,t),t}function Xr(e){return{provider:"github",number:e.number,url:e.url,baseBranch:e.baseRefName,headBranch:e.headRefName,status:Vc(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Gc(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Vc(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Gc(e){return e.map(t=>Xc(t)).filter(t=>t!==null)}function Xc(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:Ki(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function Ki(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?Ki(s,s):"unknown"}async function Mt(e,t,r){let s=await ie(e,t);await fe(s),await Si(s.worktreePath),await ht(s.worktreePath);let o=!!s.pullRequest.number;if(!o&&(await Yr(e,s)).discovered)return r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await Qr(e,s),zi(s,r.watch,"discovered");if(s.status!=="checked"&&s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot open a pull request from status "${s.status}".`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before opening a pull request.`);if(!await tr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before opening a pull request.`);let m=await Wi(s,e);return await re(e,s),await Ti(s.worktreePath,s.branch),s.pullRequest.number||await Ni(s,m),await ft(e,s),r.watch&&s.pullRequest.status!=="merged"&&!pt(s.pullRequest)&&await Qr(e,s),await Jr(e,s),zi(s,r.watch,o?"synced":"created")}async function Vi(e,t){let r=await ie(e,t);return r.pullRequest.number&&(await ht(r.worktreePath),await ft(e,r)),r}async function Gi(e,t){let r=await ie(e,t),s=(r.repoTargets??[]).filter(m=>m.status==="ready");await ht(r.worktreePath);let o={synced:0,discovered:0,notFound:0};for(let m of s){let y=await Hi(e,r,m).catch(()=>"not_found");o[y==="not_found"?"notFound":y]++}return o}async function Zr(e,t){let r=await ie(e,t);return await fe(r),await ht(r.worktreePath),r.pullRequest.number?(await ft(e,r),{disposition:"synced",task:r}):{disposition:(await Yr(e,r)).discovered?"discovered":"not_found",task:r}}function zi(e,t,r){return{kind:"openPullRequest",taskId:e.id,watch:t,disposition:r,prNumber:e.pullRequest.number??0,url:e.pullRequest.url??"",status:e.status,mergeable:e.pullRequest.mergeable,requiredChecksSummary:Ui(e.pullRequest)}}async function es(e,t){let r=await ie(e,t);if(r.pullRequest.number)try{r=await Vi(e,t)}catch{}let s=await Oi(e,r),o=r.sessionId?await Ye(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as Yc}from"node:fs/promises";async function ts(e,t){let r=await ie(e,t),s=Gr(e,r);if(!s)throw new Error(`Task ${r.id} does not have a Craig-managed log path.`);try{await Yc(s)}catch{throw new Error(`Task ${r.id} log file does not exist yet at ${s}.`)}return{kind:"streamTaskLogs",taskId:r.id,logPath:s}}Ie();async function rs(e,t){let r=await ie(e,t);if(await fe(r),(await Q("git",["status","--short"],{cwd:r.worktreePath})).stdout.trim().length===0)return{kind:"showTaskDiff",taskId:r.id,diffText:"",isEmpty:!0};let o=await Qc(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Qc(e){let t=[],r=await Q("git",["diff","--stat","--patch","HEAD"],{cwd:e});r.stdout.trim().length>0&&t.push(r.stdout.trimEnd());let s=await Jc(e);for(let o of s){let m=await ae("git",["diff","--no-index","--stat","--patch","--","/dev/null",o],{cwd:e});t.push(m.stdout.trimEnd())}return t.join(`
64
64
 
65
- `)}async function zc(e){return(await Q("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
66
- `).map(r=>r.trim()).filter(r=>r.length>0)}async function Qr(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await Ve(e,r.sessionId).catch(o=>{throw Vc(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 qt(e.repoRoot,s.paneId,s.windowTarget,s.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:s.paneId}}function Vc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Gc}from"node:child_process";async function Jr(e,t){let r=await ie(e,t);await fe(r);let o=(await ke(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let m=[...o,r.worktreePath];return await Xc(m,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:m}}async function Xc(e,t){await new Promise((r,s)=>{let[o,...m]=e,y=Gc(o,m,{cwd:t,stdio:"inherit"});y.on("error",s),y.on("exit",n=>{if(n===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${n??"unknown"}.`))})})}Oe();import{mkdir as Yc}from"node:fs/promises";import Qc from"node:path";Pe();async function Zr(e,t){let r=await ie(e,t);if(await fe(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 Ct(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 ke(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await re(e,r);let m=[];for(let y of o){let n=new Date().toISOString(),d=await ae("sh",["-lc",y],{cwd:r.worktreePath}),h=new Date().toISOString(),b=d.exitCode??1;if(m.push({command:y,startedAt:n,finishedAt:h,exitCode:b}),b!==0)return r.checks.results=m,r.checks.status="failed",r.checks.lastRunAt=h,r.status="review",r.lastFailureReason=d.stderr.trim()||d.stdout.trim()||`Check command failed: ${y}`,await qi(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=m,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await qi(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function qi(e,t){let r=xt(e,t.artifacts.checkSummaryPath);r&&(await Yc(Qc.dirname(r),{recursive:!0}),await le(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}async function es(e,t){let r=await ie(e,t);await fe(r);let s=await Ct(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 mi(r.worktreePath),await _i(r.worktreePath,o);let m=await Xt(r.worktreePath);return r.lastCommit={sha:m.sha,message:m.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await re(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:m.sha,message:m.message}}async function Ki(e,t,r){let s=[];try{if(t.sessionId){let o=await Ve(e,t.sessionId);await ci(e.repoRoot,o.sessionName),t.cleanup.paneClosedAt=new Date().toISOString()}}catch(o){s.push(o instanceof Error?o.message:"Failed to close tmux session.")}if(t.cleanup.preservedWorktree=r.preserveWorktree,!r.preserveWorktree)try{await ki(e.repoRoot,t.worktreePath),t.cleanup.worktreeRemovedAt=new Date().toISOString()}catch(o){s.push(o instanceof Error?o.message:"Failed to remove worktree.")}t.cleanup.warning=s.length>0?s.join(" "):null,await re(e,t)}async function At(e,t,r){let s=await ie(e,t);if(await fe(s),s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot merge from status "${s.status}".`);if(!s.pullRequest.number)throw new Error(`Task ${s.id} does not have a tracked pull request.`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before merging.`);if(!await Yt(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before merging.`);if((await Xt(s.worktreePath)).sha!==s.lastCommit.sha)throw new Error(`Task ${s.id} local HEAD does not match the tracked task commit. Sync or commit before merging.`);await dt(s.worktreePath),await ut(e,s);let m=Jc(s);if(m.length>0)throw new Error(`Task ${s.id} pull request is not merge-ready: ${m.join("; ")}.`);let n=(await ke(e)).github?.mergeMethod??"squash";return await Bi(s,n),s.pullRequest.status="merged",s.status="merged",s.lastFailureReason=null,await re(e,s),await Ki(e,s,r),{kind:"mergeTask",taskId:s.id,status:s.status,prNumber:s.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:s.cleanup.warning}}function Jc(e){let t=[],r=e.pullRequest;r.status!=="open"&&t.push(`PR is ${r.status??"unknown"}`),r.mergeable||t.push(`GitHub reports merge state ${r.mergeStateStatus??"unknown"}`),r.lastSyncedHeadSha!==e.lastCommit?.sha&&t.push("local task commit is not synced to the PR head"),r.requiredChecks.length===0&&t.push("no GitHub checks reported");for(let s of["failed","pending","unknown"]){let o=r.requiredChecks.filter(m=>m.status===s).map(m=>m.name);o.length>0&&t.push(`${s} checks: ${o.join(", ")}`)}return ht(r)||t.push("required checks are not passing"),[...new Set(t)]}it();ct();Rt();wt();import al from"node:path";import{stat as cl}from"node:fs/promises";Lt();Pe();async function Zi(e,t){let r=al.resolve(e.workspaceRoot,t);if(!(await cl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Lt(),Ji)).then(({addWorkspace:y})=>y(e,t)),m=o.repos[0];if(!m||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:m,workspaceId:o.workspace.id,created:o.created}}async function en(e){return{kind:"listRepos",repos:await at(e)}}async function tn(e,t){let r=await Ae(e,t),o=(await De(e)).filter(h=>h.primaryRepoId===t),m=o.filter(h=>h.status==="active"),y=await lt(e,{repoId:t});if(m.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(y.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(h=>is(e,h.id))),await hi(e,t);let n=await Te(e);await st(e,{...n,repoIds:n.repoIds.filter(h=>h!==t)});let d=await Ee({uiStateFile:e.uiStateFile});return d?.selectedRepoId===t&&await Ce({uiStateFile:e.uiStateFile},{...d,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}ct();async function rn(e,t,r){let[s,o]=await Promise.all([ie(e,t),Ae(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let m=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await re(e,{...s,linkedRepoIds:m}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:m}}async function sn(e,t){let r=await ie(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Ae(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Lt();async function nn(e,t){switch(e.kind){case"addWorkspace":return Dt(t.paths,e.path);case"addRepo":return Zi(t.paths,e.path);case"listRepos":return en(t.paths);case"removeRepo":return tn(t.paths,e.repoId);case"listWorkspaces":return ts(t.paths,{archived:e.archived});case"archiveWorkspace":return rs(t.paths,e.workspaceId);case"restoreWorkspace":return ss(t.paths,e.workspaceId);case"createTask":return Ii(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?lt(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):lt(t.paths);case"attachTask":return Ai(t.paths,e.taskId);case"addTaskLink":return rn(t.paths,e.taskId,e.repoId);case"listTaskLinks":return sn(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return Gr(t.paths,e.taskId);case"showSelectedTask":return Gr(t.paths,Ne(t,"show"));case"streamTaskLogs":return Xr(t.paths,e.taskId);case"streamSelectedTaskLogs":return Xr(t.paths,Ne(t,"logs"));case"showTaskDiff":return Yr(t.paths,e.taskId);case"showSelectedTaskDiff":return Yr(t.paths,Ne(t,"diff"));case"focusTask":return Qr(t.paths,e.taskId);case"focusSelectedTask":return Qr(t.paths,Ne(t,"focus"));case"openTask":return Jr(t.paths,e.taskId);case"openSelectedTask":return Jr(t.paths,Ne(t,"open"));case"runChecks":return Zr(t.paths,e.taskId);case"runSelectedTaskChecks":return Zr(t.paths,Ne(t,"check"));case"commitTask":return es(t.paths,e.taskId);case"commitSelectedTask":return es(t.paths,Ne(t,"commit"));case"openPullRequest":return Et(t.paths,e.taskId,{watch:e.watch});case"openSelectedTaskPullRequest":return Et(t.paths,Ne(t,"pr"),{watch:e.watch});case"mergeTask":return At(t.paths,e.taskId,{preserveWorktree:e.preserveWorktree});case"mergeSelectedTask":return At(t.paths,Ne(t,"merge"),{preserveWorktree:e.preserveWorktree});case"help":return{kind:"help",text:he()};case"exit":return{kind:"exit"};default:return ll(e)}}function ll(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function Ne(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>'.`)}Oe();import{mkdir as $e,readFile as dl}from"node:fs/promises";import ye from"node:path";function je(e){let t=ye.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ye.join(t,"index.json"),reposDir:ye.join(t,"repos"),workspacesDir:ye.join(t,"workspaces"),sessionsDir:ye.join(t,"sessions"),runtimeDir:ye.join(t,"runtime"),uiStateFile:ye.join(t,"runtime","ui-state.json"),tasksDir:ye.join(t,"tasks"),jobsDir:ye.join(t,"jobs"),logsDir:ye.join(t,"logs"),artifactsDir:ye.join(t,"artifacts"),worktreesDir:ye.join(t,"worktrees"),configFile:ye.join(t,"config.json")}}it();async function kt(e){let t=je(e);await $e(t.craigDir,{recursive:!0}),await Promise.all([$e(t.reposDir,{recursive:!0}),$e(t.workspacesDir,{recursive:!0}),$e(t.sessionsDir,{recursive:!0}),$e(t.runtimeDir,{recursive:!0}),$e(t.tasksDir,{recursive:!0}),$e(t.jobsDir,{recursive:!0}),$e(t.logsDir,{recursive:!0}),$e(t.artifactsDir,{recursive:!0}),$e(t.worktreesDir,{recursive:!0})]);try{let o=await dl(t.indexFile,"utf8"),m=JSON.parse(o);return Ar(m,e,t.indexFile)}catch(o){if(!ul(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 le(t.indexFile,s),s}function ul(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function on(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(`
65
+ `)}async function Jc(e){return(await Q("git",["ls-files","--others","--exclude-standard"],{cwd:e})).stdout.split(`
66
+ `).map(r=>r.trim()).filter(r=>r.length>0)}async function ss(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let s=await Ye(e,r.sessionId).catch(o=>{throw Zc(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 Zc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as el}from"node:child_process";async function is(e,t){let r=await ie(e,t);await fe(r);let o=(await ye(e)).open?.command??[];if(o.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let m=[...o,r.worktreePath];return await tl(m,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:m}}async function tl(e,t){await new Promise((r,s)=>{let[o,...m]=e,y=el(o,m,{cwd:t,stdio:"inherit"});y.on("error",s),y.on("exit",n=>{if(n===0){r();return}s(new Error(`${e.join(" ")} failed with exit code ${n??"unknown"}.`))})})}Fe();import{mkdir as rl}from"node:fs/promises";import sl from"node:path";_e();Ie();async function ns(e,t){let r=await ie(e,t);if(await fe(r),r.status==="draft"||r.status==="merged")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);if(r.status==="running"&&await xt(r.worktreePath)&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot run checks from status "${r.status}".`);let o=(await ye(e)).checks?.commands??[];if(o.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...o],r.checks.results=[],await re(e,r);let m=[];for(let y of o){let n=new Date().toISOString(),l=await ae("sh",["-lc",y],{cwd:r.worktreePath}),f=new Date().toISOString(),k=l.exitCode??1;if(m.push({command:y,startedAt:n,finishedAt:f,exitCode:k}),k!==0)return r.checks.results=m,r.checks.status="failed",r.checks.lastRunAt=f,r.status="review",r.lastFailureReason=l.stderr.trim()||l.stdout.trim()||`Check command failed: ${y}`,await Xi(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:o}}return r.checks.results=m,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await Xi(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function Xi(e,t){let r=Lt(e,t.artifacts.checkSummaryPath);r&&(await rl(sl.dirname(r),{recursive:!0}),await le(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}_e();async function os(e,t){let r=await ie(e,t);await fe(r);let s=await xt(r.worktreePath);if(r.status==="running"&&s&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot commit from status "${r.status}".`);if(!s)throw new Error(`Task ${r.id} has no uncommitted diff to commit.`);let o=r.prompt.value.trim();await yi(r.worktreePath),await vi(r.worktreePath,o);let m=await er(r.worktreePath);return r.lastCommit={sha:m.sha,message:m.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await re(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:m.sha,message:m.message}}_e();_e();async function Yi(e,t,r){let s=[];try{if(t.sessionId){let o=await Ye(e,t.sessionId);await fi(e.repoRoot,o.sessionName),t.cleanup.paneClosedAt=new Date().toISOString()}}catch(o){s.push(o instanceof Error?o.message:"Failed to close tmux session.")}if(t.cleanup.preservedWorktree=r.preserveWorktree,!r.preserveWorktree)try{await Ri(e.repoRoot,t.worktreePath),t.cleanup.worktreeRemovedAt=new Date().toISOString()}catch(o){s.push(o instanceof Error?o.message:"Failed to remove worktree.")}t.cleanup.warning=s.length>0?s.join(" "):null,await re(e,t)}async function Ot(e,t,r){let s=await ie(e,t);if(await fe(s),s.status!=="pr_open"&&s.status!=="merge_ready")throw new Error(`Task ${s.id} cannot merge from status "${s.status}".`);if(!s.pullRequest.number)throw new Error(`Task ${s.id} does not have a tracked pull request.`);if(!s.lastCommit)throw new Error(`Task ${s.id} must be committed before merging.`);if(!await tr(s.worktreePath))throw new Error(`Task ${s.id} worktree must be clean before merging.`);if((await er(s.worktreePath)).sha!==s.lastCommit.sha)throw new Error(`Task ${s.id} local HEAD does not match the tracked task commit. Sync or commit before merging.`);await ht(s.worktreePath),await ft(e,s);let m=il(s);if(m.length>0)throw new Error(`Task ${s.id} pull request is not merge-ready: ${m.join("; ")}.`);let n=(await ye(e)).github?.mergeMethod??"squash";return await ji(s,n),s.pullRequest.status="merged",s.status="merged",s.lastFailureReason=null,await re(e,s),await Yi(e,s,r),{kind:"mergeTask",taskId:s.id,status:s.status,prNumber:s.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:s.cleanup.warning}}function il(e){let t=[],r=e.pullRequest;r.status!=="open"&&t.push(`PR is ${r.status??"unknown"}`),r.mergeable||t.push(`GitHub reports merge state ${r.mergeStateStatus??"unknown"}`),r.lastSyncedHeadSha!==e.lastCommit?.sha&&t.push("local task commit is not synced to the PR head"),r.requiredChecks.length===0&&t.push("no GitHub checks reported");for(let s of["failed","pending","unknown"]){let o=r.requiredChecks.filter(m=>m.status===s).map(m=>m.name);o.length>0&&t.push(`${s} checks: ${o.join(", ")}`)}return pt(r)||t.push("required checks are not passing"),[...new Set(t)]}at();ut();It();bt();Dt();Wt();Ie();import hl from"node:path";import{stat as fl}from"node:fs/promises";async function on(e,t){let r=hl.resolve(e.workspaceRoot,t);if(!(await fl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Wt(),nn)).then(({addWorkspace:y})=>y(e,t)),m=o.repos[0];if(!m||o.workspace.kind==="project")throw new Error(`Repo path is not a git repository: ${r}`);return{kind:"createRepo",repo:m,workspaceId:o.workspace.id,created:o.created}}async function an(e){return{kind:"listRepos",repos:await dt(e)}}async function cn(e,t){let r=await Le(e,t),o=(await Me(e)).filter(f=>f.primaryRepoId===t),m=o.filter(f=>f.status==="active"),y=await Ne(e,{repoId:t});if(m.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(y.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(o.map(f=>or(e,f.id))),await _i(e,t);let n=await Re(e);await ot(e,{...n,repoIds:n.repoIds.filter(f=>f!==t)});let l=await De({uiStateFile:e.uiStateFile});return l?.selectedRepoId===t&&await Pe({uiStateFile:e.uiStateFile},{...l,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}ut();_e();async function ln(e,t,r){let[s,o]=await Promise.all([ie(e,t),Le(e,r)]);if(s.repoId===o.id)throw new Error(`Repo ${o.id} is already the primary repo for task ${s.id}.`);let m=s.linkedRepoIds.includes(o.id)?s.linkedRepoIds:[...s.linkedRepoIds,o.id];return await re(e,{...s,linkedRepoIds:m}),{kind:"addTaskLink",taskId:s.id,repoId:o.id,linkedRepoIds:m}}async function dn(e,t){let r=await ie(e,t),s=await Promise.all(r.linkedRepoIds.map(o=>Le(e,o)));return{kind:"listTaskLinks",taskId:r.id,repos:s}}Wt();async function un(e,t){switch(e.kind){case"addWorkspace":return Bt(t.paths,e.path);case"addRepo":return on(t.paths,e.path);case"listRepos":return an(t.paths);case"removeRepo":return cn(t.paths,e.repoId);case"listWorkspaces":return as(t.paths,{archived:e.archived});case"archiveWorkspace":return $t(t.paths,e.workspaceId);case"restoreWorkspace":return cs(t.paths,e.workspaceId);case"removeWorkspace":return Ft(t.paths,e.workspaceId);case"createTask":return Li(t.paths,e.repoId??e.workspaceId??"",e.prompt,{...e.runner?{runner:e.runner}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}});case"listTasks":return e.repoId||e.workspaceId?Ne(t.paths,{...e.repoId?{repoId:e.repoId}:{},...e.workspaceId?{workspaceId:e.workspaceId}:{}}):Ne(t.paths);case"attachTask":return Bi(t.paths,e.taskId);case"addTaskLink":return ln(t.paths,e.taskId,e.repoId);case"listTaskLinks":return dn(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return es(t.paths,e.taskId);case"showSelectedTask":return es(t.paths,qe(t,"show"));case"streamTaskLogs":return ts(t.paths,e.taskId);case"streamSelectedTaskLogs":return ts(t.paths,qe(t,"logs"));case"showTaskDiff":return rs(t.paths,e.taskId);case"showSelectedTaskDiff":return rs(t.paths,qe(t,"diff"));case"focusTask":return ss(t.paths,e.taskId);case"focusSelectedTask":return ss(t.paths,qe(t,"focus"));case"openTask":return is(t.paths,e.taskId);case"openSelectedTask":return is(t.paths,qe(t,"open"));case"runChecks":return ns(t.paths,e.taskId);case"runSelectedTaskChecks":return ns(t.paths,qe(t,"check"));case"commitTask":return os(t.paths,e.taskId);case"commitSelectedTask":return os(t.paths,qe(t,"commit"));case"openPullRequest":return Mt(t.paths,e.taskId,{watch:e.watch});case"openSelectedTaskPullRequest":return Mt(t.paths,qe(t,"pr"),{watch:e.watch});case"mergeTask":return Ot(t.paths,e.taskId,{preserveWorktree:e.preserveWorktree});case"mergeSelectedTask":return Ot(t.paths,qe(t,"merge"),{preserveWorktree:e.preserveWorktree});case"help":return{kind:"help",text:he()};case"exit":return{kind:"exit"};default:return pl(e)}}function pl(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function qe(e,t){if(e.selectedTaskId)return e.selectedTaskId;throw new Error(`No task selected. Create a task with 'task new --repo <repo-id> <prompt>' or use '${t} <id>'.`)}Fe();import{mkdir as je,readFile as gl}from"node:fs/promises";import ve from"node:path";function Ke(e){let t=ve.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:ve.join(t,"index.json"),reposDir:ve.join(t,"repos"),workspacesDir:ve.join(t,"workspaces"),sessionsDir:ve.join(t,"sessions"),runtimeDir:ve.join(t,"runtime"),uiStateFile:ve.join(t,"runtime","ui-state.json"),tasksDir:ve.join(t,"tasks"),jobsDir:ve.join(t,"jobs"),logsDir:ve.join(t,"logs"),artifactsDir:ve.join(t,"artifacts"),worktreesDir:ve.join(t,"worktrees"),configFile:ve.join(t,"config.json")}}at();async function vt(e){let t=Ke(e);await je(t.craigDir,{recursive:!0}),await Promise.all([je(t.reposDir,{recursive:!0}),je(t.workspacesDir,{recursive:!0}),je(t.sessionsDir,{recursive:!0}),je(t.runtimeDir,{recursive:!0}),je(t.tasksDir,{recursive:!0}),je(t.jobsDir,{recursive:!0}),je(t.logsDir,{recursive:!0}),je(t.artifactsDir,{recursive:!0}),je(t.worktreesDir,{recursive:!0})]);try{let o=await gl(t.indexFile,"utf8"),m=JSON.parse(o);return $r(m,e,t.indexFile)}catch(o){if(!ml(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 le(t.indexFile,s),s}function ml(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function hn(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(`
67
67
  `);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
68
68
  `);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(`
69
69
  `);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(`
70
- `);case"archiveWorkspace":return`Archived workspace ${e.workspaceId} on branch ${e.branch}`;case"restoreWorkspace":return`Restored workspace ${e.workspaceId} on branch ${e.branch}`;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(`
70
+ `);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(`
71
71
  `);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(`
72
- `);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} ${gl(t)} ${ml(t)} ${t.title}`)].join(`
73
- `);case"showTask":return[`${e.task.id}: ${e.task.title}`,`Status: ${e.task.status}`,`Runner: ${e.task.runner}`,`Repo: ${e.task.repoId}`,`Workspace: ${e.task.workspaceId}`,`Branch: ${e.task.branch}`,`Worktree: ${e.task.worktreePath}`,`Session: ${e.task.sessionId??"<missing>"}`,`tmux: ${e.session?.paneId??"<missing>"}`,`Linked repos: ${e.task.linkedRepoIds.length>0?e.task.linkedRepoIds.join(", "):"none"}`,`Prompt: ${e.task.prompt.source} ${JSON.stringify(e.task.prompt.value)}`,`Runner command: ${e.inspection.runnerCommandText||"<none>"}`,`Runner state: ${e.task.runnerSession.lastKnownState}`,`Started: ${e.task.runnerSession.startedAt??"not started"}`,`Exited: ${e.task.runnerSession.exitedAt??"still running"}`,`Checks: ${e.inspection.checksSummary}`,`Last commit: ${e.inspection.lastCommitSummary}`,`PR: ${e.inspection.prSummary}`,`Cleanup: ${e.inspection.cleanupSummary}`,...fl(e)].join(`
72
+ `);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} ${bl(t)} ${yl(t)} ${t.title}`)].join(`
73
+ `);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}`,...wl(e)].join(`
74
74
  `);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(`
75
- `);case"openPullRequest":return[`${hl(e.disposition,e.watch)} PR for ${e.taskId}`,`PR: #${e.prNumber} ${e.url}`,`Status: ${e.status}`,`Mergeable: ${e.mergeable}`,`Checks: ${e.requiredChecksSummary}`].join(`
75
+ `);case"openPullRequest":return[`${_l(e.disposition,e.watch)} PR for ${e.taskId}`,`PR: #${e.prNumber} ${e.url}`,`Status: ${e.status}`,`Mergeable: ${e.mergeable}`,`Checks: ${e.requiredChecksSummary}`].join(`
76
76
  `);case"mergeTask":return[`Merged task ${e.taskId} from PR #${e.prNumber}`,`Status: ${e.status}`,`Preserved worktree: ${e.preservedWorktree}`,`Cleanup warning: ${e.cleanupWarning??"none"}`].join(`
77
- `);default:return pl(e)}}function hl(e,t){return t?"Watched":e==="created"?"Created":e==="discovered"?"Discovered":"Synced"}function fl(e){let t=[];return e.inspection.worktreeExists||e.task.status==="merged"&&!e.task.cleanup.preservedWorktree&&e.task.cleanup.worktreeRemovedAt||t.push(`Warning: worktree is missing at ${e.task.worktreePath}`),e.task.cleanup.warning&&!(e.task.status==="merged"&&!e.task.cleanup.worktreeRemovedAt)&&t.push(`Cleanup warning: ${e.task.cleanup.warning}`),e.task.artifacts.logPath&&!e.inspection.logExists&&t.push(`Warning: log file is missing at ${e.task.artifacts.logPath}`),e.inspection.recentFailureReason&&t.push(`Last failure: ${e.inspection.recentFailureReason}`),t}function pl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function gl(e){return e.checks.status}function ml(e){return e.pullRequest.number?`#${e.pullRequest.number}:${e.pullRequest.status??"unknown"}`:"-"}ct();Rt();wt();import{createRequire as oh}from"node:module";import{readdir as ah,stat as ch}from"node:fs/promises";import Fs from"node:path";Lt();Pe();import{readFile as _l,stat as wl}from"node:fs/promises";import ns from"node:path";var bl=200*1024,kl=500*1024,tr="100000";async function cn(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return yl(e,t,r);try{let s=Ye(r.selectedFilePath??null,t.filePaths),o=Ye(r.selectedDiffPath??null,t.diffPaths),m=o?await Mt(e.worktreePath):null,[y,n]=await Promise.all([sr(e.worktreePath,s),o?os(e.worktreePath,o,t.diffRows,m):Promise.resolve(pe("No diff selected","No local changes found.","empty"))]),d=o?{[o]:n}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:d,selectedFile:y,selectedDiff:n,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function yl(e,t,r){let s=Ye(r.selectedFilePath??null,t.filePaths),o=Ye(r.selectedDiffPath??null,t.diffPaths),[m,y]=await Promise.all([dn(e,s),(async()=>{if(!o)return pe("No diff selected","No local changes found.","empty");let d=rr(e,o),h=d?await Mt(d.target.worktreePath).catch(()=>null):null;return un(e,o,t.diffRows,h)})()]),n=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:n,selectedFile:m,selectedDiff:y}}async function ln(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return vl(e,t);try{await fe(e);let r=await Mt(e.worktreePath),[s,o]=await Promise.all([hn(e.worktreePath),fn(e.worktreePath,r)]),m=[...new Set(o.map(a=>a.path))],y=Ye(t.selectedFilePath??null,s),n=Ye(t.selectedDiffPath??null,m),[d,h]=await Promise.all([sr(e.worktreePath,y),n?os(e.worktreePath,n,o,r):Promise.resolve(pe("No diff selected","No local changes found.","empty"))]),b=n?{[n]:h}:{};return{taskId:e.id,fileRows:mn(s),filePaths:s,diffRows:o,diffPaths:m,diffContents:b,selectedFilePath:y,selectedDiffPath:n,selectedFile:d,selectedDiff:h,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:pe("Files unavailable",s,"error"),selectedDiff:pe("Diff unavailable",s,"error"),error:s}}}async function vl(e,t){let r=(e.repoTargets??[]).filter(w=>w.status==="ready"),s=await Promise.all(r.map(async w=>{let l=await Mt(w.worktreePath).catch(()=>null),[g,_]=await Promise.all([hn(w.worktreePath).catch(()=>[]),fn(w.worktreePath,l).catch(()=>[])]);return{target:w,baseRef:l,targetFiles:g,targetDiffRows:_}})),o=[],m=[];for(let{target:w,targetFiles:l,targetDiffRows:g}of s)o.push(...l.map(_=>`${w.repoId}/${_}`)),m.push(...g.map(_=>({..._,path:`${w.repoId}/${_.path}`})));let y=[...new Set(m.map(w=>w.path))].sort(),n=Ye(t.selectedFilePath??null,o),d=Ye(t.selectedDiffPath??null,y),[h,b]=await Promise.all([dn(e,n),(async()=>{if(!d)return pe("No diff selected","No local changes found.","empty");let w=rr(e,d),l=w?s.find(g=>g.target.repoId===w.target.repoId):null;return un(e,d,m,l?.baseRef??null)})()]),a=d?{[d]:b}:{};return{taskId:e.id,fileRows:mn(o),filePaths:o,diffRows:m,diffPaths:y,diffContents:a,selectedFilePath:n,selectedDiffPath:d,selectedFile:h,selectedDiff:b,error:null}}async function dn(e,t){let r=rr(e,t);if(!r)return pe("No file selected","No Git-visible files found.","empty");let s=await sr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function un(e,t,r,s=null){let o=rr(e,t);return o?{...await os(o.target.worktreePath,o.relativePath,r.filter(y=>y.path.startsWith(`${o.target.repoId}/`)).map(y=>({...y,path:y.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:pe(t,"Repo target is unavailable.","error",t)}function rr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),m=(e.repoTargets??[]).find(y=>y.repoId===r&&y.status==="ready")??null;return!m||o.length===0?null:{target:m,relativePath:o}}async function hn(e){let t=await Q("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return _n(t.stdout)}async function fn(e,t){let[r,s,o,m]=await Promise.all([Sl(e,t),an(e,"staged"),an(e,"unstaged"),Tl(e)]);return[...r,...s,...o,...m]}async function Sl(e,t){if(!t)return[];let[r,s]=await Promise.all([Q("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),Q("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=pn(r.stdout),m=gn(s.stdout);return o.map(y=>{let n=m.get(y.path)??{additions:null,deletions:null};return{group:"branch",path:y.path,status:y.status,additions:n.additions,deletions:n.deletions}}).sort((y,n)=>y.path.localeCompare(n.path))}async function an(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([Q("git",[...r,"--name-status"],{cwd:e}),Q("git",[...r,"--numstat"],{cwd:e})]),m=pn(s.stdout),y=gn(o.stdout);return m.map(n=>{let d=y.get(n.path)??{additions:null,deletions:null};return{group:t,path:n.path,status:n.status,additions:d.additions,deletions:d.deletions}}).sort((n,d)=>n.path.localeCompare(d.path))}async function Tl(e){let t=await Q("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=_n(t.stdout);return await Promise.all(r.map(async o=>{let m=await sr(e,o),y=m.status==="ready"?Rl(m.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function pn(e){return e.split(`
78
- `).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 gn(e){let t=new Map;for(let r of e.split(`
79
- `)){let s=r.trim();if(!s)continue;let[o="-",m="-",...y]=s.split(" "),n=y.join(" ");n&&t.set(n,{additions:o==="-"?null:Number(o),deletions:m==="-"?null:Number(m)})}return t}async function Mt(e){return(await ae("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await ae("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function sr(e,t){if(!t)return pe("No file selected","No Git-visible files found.","empty");let r=Cl(e,t);try{let s=await wl(r);if(s.size>bl)return pe(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await _l(r);return Pl(o)?pe(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
80
- `),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return pe(t,o,"missing",t,null)}}async function os(e,t,r,s=null){if(!t)return pe("No diff selected","No local changes found.","empty");let o=[],m=r.filter(n=>n.path===t).map(n=>n.group);if(m.includes("branch")){let n=s??await Mt(e);if(n){let d=await Q("git",["diff","--stat","--patch",`--unified=${tr}`,`${n}...HEAD`,"--",t],{cwd:e});d.stdout.trim().length>0&&o.push(`branch
81
- ${d.stdout.trimEnd()}`)}}if(m.includes("staged")){let n=await Q("git",["diff","--cached","--stat","--patch",`--unified=${tr}`,"--",t],{cwd:e});n.stdout.trim().length>0&&o.push(`staged
82
- ${n.stdout.trimEnd()}`)}if(m.includes("unstaged")){let n=await Q("git",["diff","--stat","--patch",`--unified=${tr}`,"--",t],{cwd:e});n.stdout.trim().length>0&&o.push(`unstaged
83
- ${n.stdout.trimEnd()}`)}if(m.includes("untracked")){let n=await ae("git",["diff","--no-index","--stat","--patch",`--unified=${tr}`,"--","/dev/null",t],{cwd:e});n.stdout.trim().length>0&&o.push(`untracked
77
+ `);default:return kl(e)}}function _l(e,t){return t?"Watched":e==="created"?"Created":e==="discovered"?"Discovered":"Synced"}function wl(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 kl(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function bl(e){return e.checks.status}function yl(e){return e.pullRequest.number?`#${e.pullRequest.number}:${e.pullRequest.status??"unknown"}`:"-"}ut();It();bt();import{createRequire as hh}from"node:module";import{readdir as fh,stat as ph}from"node:fs/promises";import Hs from"node:path";_e();Dt();Wt();Ie();import{readFile as vl,stat as Sl}from"node:fs/promises";import ls from"node:path";var Tl=200*1024,Rl=500*1024,ar="100000";async function pn(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return Cl(e,t,r);try{let s=Ze(r.selectedFilePath??null,t.filePaths),o=Ze(r.selectedDiffPath??null,t.diffPaths),m=o?await Nt(e.worktreePath):null,[y,n]=await Promise.all([lr(e.worktreePath,s),o?ds(e.worktreePath,o,t.diffRows,m):Promise.resolve(pe("No diff selected","No local changes found.","empty"))]),l=o?{[o]:n}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:l,selectedFile:y,selectedDiff:n,error:null}}catch(s){let o=s instanceof Error?s.message:"Unable to inspect task worktree.";return{...t,error:o}}}async function Cl(e,t,r){let s=Ze(r.selectedFilePath??null,t.filePaths),o=Ze(r.selectedDiffPath??null,t.diffPaths),[m,y]=await Promise.all([mn(e,s),(async()=>{if(!o)return pe("No diff selected","No local changes found.","empty");let l=cr(e,o),f=l?await Nt(l.target.worktreePath).catch(()=>null):null;return _n(e,o,t.diffRows,f)})()]),n=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:n,selectedFile:m,selectedDiff:y}}async function gn(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return Pl(e,t);try{await fe(e);let r=await Nt(e.worktreePath),[s,o]=await Promise.all([wn(e.worktreePath),kn(e.worktreePath,r)]),m=[...new Set(o.map(a=>a.path))],y=Ze(t.selectedFilePath??null,s),n=Ze(t.selectedDiffPath??null,m),[l,f]=await Promise.all([lr(e.worktreePath,y),n?ds(e.worktreePath,n,o,r):Promise.resolve(pe("No diff selected","No local changes found.","empty"))]),k=n?{[n]:f}:{};return{taskId:e.id,fileRows:vn(s),filePaths:s,diffRows:o,diffPaths:m,diffContents:k,selectedFilePath:y,selectedDiffPath:n,selectedFile:l,selectedDiff:f,error:null}}catch(r){let s=r instanceof Error?r.message:"Unable to inspect task worktree.";return{taskId:e.id,fileRows:[],filePaths:[],diffRows:[],diffPaths:[],diffContents:{},selectedFilePath:null,selectedDiffPath:null,selectedFile:pe("Files unavailable",s,"error"),selectedDiff:pe("Diff unavailable",s,"error"),error:s}}}async function Pl(e,t){let r=(e.repoTargets??[]).filter(w=>w.status==="ready"),s=await Promise.all(r.map(async w=>{let c=await Nt(w.worktreePath).catch(()=>null),[g,_]=await Promise.all([wn(w.worktreePath).catch(()=>[]),kn(w.worktreePath,c).catch(()=>[])]);return{target:w,baseRef:c,targetFiles:g,targetDiffRows:_}})),o=[],m=[];for(let{target:w,targetFiles:c,targetDiffRows:g}of s)o.push(...c.map(_=>`${w.repoId}/${_}`)),m.push(...g.map(_=>({..._,path:`${w.repoId}/${_.path}`})));let y=[...new Set(m.map(w=>w.path))].sort(),n=Ze(t.selectedFilePath??null,o),l=Ze(t.selectedDiffPath??null,y),[f,k]=await Promise.all([mn(e,n),(async()=>{if(!l)return pe("No diff selected","No local changes found.","empty");let w=cr(e,l),c=w?s.find(g=>g.target.repoId===w.target.repoId):null;return _n(e,l,m,c?.baseRef??null)})()]),a=l?{[l]:k}:{};return{taskId:e.id,fileRows:vn(o),filePaths:o,diffRows:m,diffPaths:y,diffContents:a,selectedFilePath:n,selectedDiffPath:l,selectedFile:f,selectedDiff:k,error:null}}async function mn(e,t){let r=cr(e,t);if(!r)return pe("No file selected","No Git-visible files found.","empty");let s=await lr(r.target.worktreePath,r.relativePath);return{...s,path:t,title:t??s.title}}async function _n(e,t,r,s=null){let o=cr(e,t);return o?{...await ds(o.target.worktreePath,o.relativePath,r.filter(y=>y.path.startsWith(`${o.target.repoId}/`)).map(y=>({...y,path:y.path.slice(o.target.repoId.length+1)})),s),path:t,title:t}:pe(t,"Repo target is unavailable.","error",t)}function cr(e,t){if(!t)return null;let[r,...s]=t.split("/"),o=s.join("/"),m=(e.repoTargets??[]).find(y=>y.repoId===r&&y.status==="ready")??null;return!m||o.length===0?null:{target:m,relativePath:o}}async function wn(e){let t=await Q("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return Sn(t.stdout)}async function kn(e,t){let[r,s,o,m]=await Promise.all([Il(e,t),fn(e,"staged"),fn(e,"unstaged"),xl(e)]);return[...r,...s,...o,...m]}async function Il(e,t){if(!t)return[];let[r,s]=await Promise.all([Q("git",["diff","--name-status",`${t}...HEAD`],{cwd:e}),Q("git",["diff","--numstat",`${t}...HEAD`],{cwd:e})]),o=bn(r.stdout),m=yn(s.stdout);return o.map(y=>{let n=m.get(y.path)??{additions:null,deletions:null};return{group:"branch",path:y.path,status:y.status,additions:n.additions,deletions:n.deletions}}).sort((y,n)=>y.path.localeCompare(n.path))}async function fn(e,t){let r=t==="staged"?["diff","--cached"]:["diff"],[s,o]=await Promise.all([Q("git",[...r,"--name-status"],{cwd:e}),Q("git",[...r,"--numstat"],{cwd:e})]),m=bn(s.stdout),y=yn(o.stdout);return m.map(n=>{let l=y.get(n.path)??{additions:null,deletions:null};return{group:t,path:n.path,status:n.status,additions:l.additions,deletions:l.deletions}}).sort((n,l)=>n.path.localeCompare(l.path))}async function xl(e){let t=await Q("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=Sn(t.stdout);return await Promise.all(r.map(async o=>{let m=await lr(e,o),y=m.status==="ready"?El(m.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function bn(e){return e.split(`
78
+ `).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 yn(e){let t=new Map;for(let r of e.split(`
79
+ `)){let s=r.trim();if(!s)continue;let[o="-",m="-",...y]=s.split(" "),n=y.join(" ");n&&t.set(n,{additions:o==="-"?null:Number(o),deletions:m==="-"?null:Number(m)})}return t}async function Nt(e){return(await ae("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"origin/main":(await ae("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode===0?"main":null}async function lr(e,t){if(!t)return pe("No file selected","No Git-visible files found.","empty");let r=Al(e,t);try{let s=await Sl(r);if(s.size>Tl)return pe(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await vl(r);return Dl(o)?pe(t,"Binary file preview is not available in Craig.","binary",t,o.byteLength):{path:t,status:"ready",title:t,lines:o.toString("utf8").split(`
80
+ `),byteLength:o.byteLength}}catch(s){let o=s instanceof Error?s.message:"Unable to read file.";return pe(t,o,"missing",t,null)}}async function ds(e,t,r,s=null){if(!t)return pe("No diff selected","No local changes found.","empty");let o=[],m=r.filter(n=>n.path===t).map(n=>n.group);if(m.includes("branch")){let n=s??await Nt(e);if(n){let l=await Q("git",["diff","--stat","--patch",`--unified=${ar}`,`${n}...HEAD`,"--",t],{cwd:e});l.stdout.trim().length>0&&o.push(`branch
81
+ ${l.stdout.trimEnd()}`)}}if(m.includes("staged")){let n=await Q("git",["diff","--cached","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});n.stdout.trim().length>0&&o.push(`staged
82
+ ${n.stdout.trimEnd()}`)}if(m.includes("unstaged")){let n=await Q("git",["diff","--stat","--patch",`--unified=${ar}`,"--",t],{cwd:e});n.stdout.trim().length>0&&o.push(`unstaged
83
+ ${n.stdout.trimEnd()}`)}if(m.includes("untracked")){let n=await ae("git",["diff","--no-index","--stat","--patch",`--unified=${ar}`,"--","/dev/null",t],{cwd:e});n.stdout.trim().length>0&&o.push(`untracked
84
84
  ${n.stdout.trimEnd()}`)}let y=o.join(`
85
85
 
86
- `);return y.length>kl?pe(t,"Diff is above the 500 KB inline preview limit.","too_large",t,y.length):y.includes("\0")?pe(t,"Binary diff preview is not available in Craig.","binary",t,y.length):{path:t,status:y.length>0?"ready":"empty",title:t,lines:y.length>0?y.split(`
87
- `):["No diff for this file."],byteLength:y.length}}function mn(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let m=0;m<o.length-1;m+=1){let y=o.slice(0,m+1).join("/");r.has(y)||(r.add(y),t.push({kind:"directory",path:y,depth:m,label:o[m]??y}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function Ye(e,t){return e&&t.includes(e)?e:t[0]??null}function Rl(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function _n(e){return[...new Set(e.split(`
88
- `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Cl(e,t){let r=ns.resolve(e,t),s=ns.resolve(e);if(r!==s&&!r.startsWith(`${s}${ns.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Pl(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function pe(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}import{access as Il}from"node:fs/promises";async function wn(e,t){let r=await ie(e,t),s=await xl(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await re(e,o),o}async function xl(e){try{return await Il(e),!0}catch{return!1}}Pe();import $t from"node:path";function bn(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 kn="\u{F024B} ",yn="\u{F0DCF} ",vn="\u25CB",Sn="\uEA64",Tn="\uEAFE",Rn="\uEBDA",as="\u25CB",cs="\u25CF",ls="\u2713",ds="\u2715";function Cn(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}}wt();var El=["tasks","center","inspector","actions"],An=["agent","terminal"],Dn=[],ne="inspection",xm=[...An,...Dn],Ln=["commit","push","create-pr","refresh-checks","merge","close-task"],Al=["refresh-checks","close-task"],Mn=["task","checks","pr","setup-run","actions","next-action"],On=["diff","files","review"];function Bn(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=Gl(e?.openInspectionKind)??r,o=gt(t);return{inputMode:Yl(e?.inputMode),focusedRegion:zl(e?.focusedRegion),selectedRepoId:He(e?.selectedRepoId),selectedWorkspaceId:He(e?.selectedWorkspaceId),selectedTaskId:He(e?.selectedTaskId),selectedPtyTabId:He(e?.selectedPtyTabId),selectedLeftItemId:nd(He(e?.selectedTaskId)),activeTab:r?ne:He(e?.activeTab)??"agent",preferredPtyTabKind:Xl(e?.preferredPtyTabKind),inspectorSection:Ot(e?.inspectorSection,Mn,"task"),inspectionMode:Vl(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:He(e?.selectedFileTreePath),selectedFilePath:He(e?.selectedFilePath),selectedDiffPath:He(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:Ot(e?.selectedActionId,Ln,"commit"),selectedProjectTargetId:null,selectedRunner:Ql(e?.selectedRunner,o,tt(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:Dl(),centerZoomed:!1}}function Dl(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function $n(e,t){return{...e??Be(),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 ar(e,t,r={}){let s=sd(e,t),o=Kn(s),m=(o?.kind==="workspace"?t.workspaces?.find(b=>b.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(b=>b.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(b=>b.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,n=((o?.kind==="repo"?t.repos.find(b=>b.id===o.id)??null:o?.kind==="task"?t.repos.find(b=>b.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(m?.kind==="project"?t.repos.find(b=>b.id===e.selectedRepoId&&m.discoveredRepoIds?.includes(b.id))??null:null)??(m?.kind!=="project"?t.repos.find(b=>b.id===m?.primaryRepoId)??null:null)??t.repos.find(b=>b.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,d=m?t.tasks.filter(b=>b.workspaceId===m.id):n?t.tasks.filter(b=>b.repoId===n):[],h=(o?.kind==="task"?d.find(b=>b.id===o.id)??null:null)??d.find(b=>b.id===e.selectedTaskId)??d[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:m?.id??null,selectedRepoId:n,selectedTaskId:h?.id??null,...Zl(h,e.activeTab,e.selectedPtyTabId),selectedFilePath:Ul(e,t,h?.id??null),...ed(e,t,h?.id??null),selectedDiffPath:Hl(e,t,h?.id??null),inspectorSection:Ot(e.inspectorSection,Mn,"task")}}function Fn(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Ll(t)?G({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null},changed:!0,detachTerminal:!0}):G({state:e});if(t==="q"||t==="Q")return G({state:e,exit:!0});if(t==="ESCAPE")return G({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return G({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(hs(e.selectedLeftItemId)||fs(e.selectedLeftItemId)))return G({state:{...e,selectedRunner:ps(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Pn(e,1);if(t==="SHIFT_TAB"||t==="[")return Pn(e,-1);if(t==="z"||t==="Z")return G({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?Qe(e,-1,r):In(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?Qe(e,1,r):In(e,1,r);if(t==="PAGE_UP")return Qe(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return Qe(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return Qe(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return Qe(e,3,r);if(t==="r"&&e.focusedRegion==="center"&&e.selectedTaskId){let s=r.enabledRunnerIds??ce,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,m=o===s.length-1?null:s[o+1];return G({state:{...e,centerTabRunner:m,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=Jl(e,t);return G({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&or(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if(t==="x"&&e.focusedRegion==="center"&&En(e.activeTab,r.ptyTabIds??[]))return G({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return us(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return xn(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return us(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return xn(e,1)}if(Je(t)){if(e.focusedRegion==="tasks"&&(hs(e.selectedLeftItemId)||fs(e.selectedLeftItemId))){let s=zn(e.selectedLeftItemId),o=Vn(e.selectedLeftItemId);return G({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return G({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&or(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&En(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:cr(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return G({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return G({state:Fl({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return G({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?G({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?G({state:e}):e.selectedActionId==="create-pr"?G({state:{...e,actionMessage:null},changed:!0,syncPullRequest:!0}):e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="merge"?G({state:{...e,actionMessage:null},changed:!0,mergeTask:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return G({state:e})}function Bt(e,t){return{...e,terminal:t}}function Wn(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Ll(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Je(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
89
- `}function Nn(e){return e.length===1&&e>=" "&&e!=="\x7F"}function jn(e){return Hn(e)||cr(e)!==null}function Ml(e){return Dn.includes(e)}function Hn(e){return An.includes(e)}function Un(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Ol=["tasks","center","inspector"];function Pn(e,t){return ir(e,"focusedRegion",Ol,t)}function us(e,t,r){let s=ir(e,"activeTab",r&&r.length>0?r:rd(e),t);return!s.changed||Ml(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:cr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function In(e,t,r){if(e.focusedRegion==="tasks")return Bl(e,t,r.leftItemIds);if(e.focusedRegion==="center")return us(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return qn(e,t,r);if(e.inspectionMode==="diff"){let s=nr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}return r.projectTargetIds?.length?nr(e,"selectedProjectTargetId",r.projectTargetIds,t):ir(e,"selectedActionId",Al,t)}return ir(e,"selectedActionId",Ln,t)}function Bl(e,t,r){let s=nr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=Kn(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let m=zn(s.state.selectedLeftItemId);if(m)return{...s,state:{...s.state,selectedRepoId:m}};let y=Vn(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function Qe(e,t,r){if(t===0)return G({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return qn(e,t,r);if(e.inspectionMode==="diff"){let s=nr(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return G({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Wl(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return Nl(e,t,r)}return G({state:e})}function $l(e,t){if(e.inspectionMode===t)return G({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return G({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function xn(e,t){return $l(e,Kl(e.inspectionMode,On,t))}function qn(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return G({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,m=s.indexOf(o??""),y=Ue(m===-1?0:m+t,0,s.length-1),n=s[y]??null;if(n===e.selectedFileTreePath)return G({state:e});let d=n!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(n);return G({state:{...e,selectedFileTreePath:n,selectedFilePath:d?n:e.selectedFilePath,activeTab:d?ne:e.activeTab,openInspectionKind:d?"file":e.openInspectionKind,fileScrollOffset:d?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:d})}function Fl(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 Wl(e,t,r,s,o=10){let m=Math.max(0,s-Math.max(1,o)),y=Ue(e[t]+r,0,m);return y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function Nl(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return jl(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,m=Math.max(0,s-Math.max(1,o)),y=e.diffScrollOffset+t,n=r.diffPathIds??[];if(n.length===0||!e.selectedDiffPath){let b=Ue(y,0,m);return b===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:b,actionMessage:null},changed:!0})}let d=n.indexOf(e.selectedDiffPath);if(d===-1){let b=Ue(y,0,m);return b===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:b,actionMessage:null},changed:!0})}if(t>0&&y>m){let b=n[d+1]??null;return b?G({state:{...e,selectedDiffPath:b,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===m?G({state:e}):G({state:{...e,diffScrollOffset:m,actionMessage:null},changed:!0})}if(t<0&&y<0){let b=n[d-1]??null;return b?G({state:{...e,selectedDiffPath:b,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?G({state:e}):G({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let h=Ue(y,0,m);return h===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:h,actionMessage:null},changed:!0})}function jl(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,m=Math.max(0,s-Math.max(1,o)),y=Ue(e.diffScrollOffset+t,0,m),n=ql(r.diffPathRanges??[],y)??e.selectedDiffPath;return y===e.diffScrollOffset&&n===e.selectedDiffPath?G({state:e}):G({state:{...e,diffScrollOffset:y,selectedDiffPath:n,actionMessage:null},changed:!0})}function Hl(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Ul(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function ql(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function ir(e,t,r,s){let o=r.indexOf(e[t]),m=Ue(o+s,0,r.length-1),y=r[m];return!y||y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function nr(e,t,r,s,o=!1){if(r.length===0)return G({state:e});let m=r.indexOf(e[t]??r[0]??""),y=Ue(m===-1?0:m+s,0,r.length-1),n=r[y]??null;return n===e[t]?G({state:e}):G({state:{...e,[t]:n,actionMessage:null},changed:!0,refreshInspection:o})}function Kl(e,t,r){let s=t.indexOf(e);return t[Ue(s+r,0,t.length-1)]??e}function G(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,syncPullRequest:e.syncPullRequest??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,mergeTask:e.mergeTask??!1,closeTask:e.closeTask??!1,refreshInspection:e.refreshInspection??!1}}function Ot(e,t,r){return t.includes(e??"")?e:r}function zl(e){return e==="tabs"?"center":Ot(e,El,"tasks")}function Vl(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ot(e,On,t)}function Gl(e){return e==="file"||e==="diff"?e:null}function Xl(e){return e==="terminal"?"terminal":"agent"}function Yl(e){return e==="terminal"?"terminal":"control"}function Ql(e,t=[...ce],r="codex"){return e&&mt(e)&&t.includes(e)?e:r}function ps(e,t=ce){let r=t.length>0?t:ce,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function cr(e){let t=ce.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function Jl(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":cr(e.activeTab)??e.preferredPtyTabKind}function Zl(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(n=>n.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(n=>n.id===e.selectedPtyTabId)??null:null,m=e.ptyTabs.find(n=>n.id===t)??null;if(m)return{activeTab:m.id,selectedPtyTabId:m.id};if(Hn(t)){let d=e.ptyTabs.find(h=>h.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:d?.id??ne,selectedPtyTabId:d?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let y=o??s??e.ptyTabs[0]??null;return{activeTab:y?.id??ne,selectedPtyTabId:y?.id??null}}function ed(e,t,r){if(!t.inspection||t.inspection.taskId!==r)return{selectedFileTreePath:e.selectedFileTreePath,collapsedFileTreePaths:e.collapsedFileTreePaths};let s=e.selectedFileTreePath??t.inspection.selectedFilePath,o=e.selectedFileTreePath===null&&e.collapsedFileTreePaths.length===0?td(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function td(e,t){let r=new Set;if(t){let s=t.split("/");for(let o=1;o<s.length;o+=1)r.add(s.slice(0,o).join("/"))}return e.filter(s=>s.kind==="directory"&&!s.path.includes("/")&&!r.has(s.path)).map(s=>s.path).sort((s,o)=>s.localeCompare(o))}function rd(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function En(e,t){return t.includes(e)}function sd(e,t){let r=id(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 id(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`),r.kind==="project"&&t.push(`new-task-workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.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 Kn(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 He(e){return typeof e=="string"?e:null}function nd(e){return e?`task:${e}`:null}function or(e){return typeof e=="string"&&e.startsWith("task:")}function hs(e){return typeof e=="string"&&e.startsWith("new-task:")}function fs(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function zn(e){return hs(e)?e.slice(9):null}function Vn(e){return fs(e)?e.slice(19):null}function Ue(e,t,r){return Math.min(r,Math.max(t,e))}var dr="empty",de={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function Xn(e,t){let r=cd(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,m=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],y=m.find(_=>_.id===e.selectedTaskId)??m[0]??null,n=y?.type==="project",d=Fd(t.tasks),h=ud(e,y),b=dd(e,y,h),a=b.find(_=>_.id===h)??b[0]??{id:"agent",label:"CODEX"},w=t.inspection?.taskId===y?.id?t.inspection:null,l=s?.name??"no repo",g=y?ve(y.runner):ve(e.selectedRunner);return{inputMode:e.inputMode,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${ve(e.selectedRunner)} Ctrl+R switch runner Enter create Esc cancel \u203A ${e.taskPromptInput}${e.taskPromptError?` \u2717 ${e.taskPromptError}`:""}`:e.inputMode==="terminal"?"TERMINAL \u2191\u2193/PgUp/PgDn scroll Ctrl+] return to control":e.focusedRegion==="tasks"?e.selectedLeftItemId?.startsWith("new-task:")||e.selectedLeftItemId?.startsWith("new-task-workspace:")?`r runner [${ve(e.selectedRunner)}] Enter create task Esc pause ? help`:or(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?y===null?"n new task Tab tasks Esc pause ? help":h===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${ve(e.centerTabRunner??y?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?n?"\u2191\u2193 navigate targets R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:$t.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${$t.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:g,liveLabel:y?.status==="running"?"live":"idle"},leftTree:od(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>Wd(_,d[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:l,agent:g},centerTranscript:ld(h,e,s,y,e.workspaceBrowser,w,r),tabs:b,rightContext:$d(s,y),rightInspection:Td(e,y,w)}}function od(e,t){let r=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return ad(r,e,t.repos,t.tasks);let s=t.workspaces;if(s.length===0)r.push({text:"No workspaces registered.",indent:2,muted:!0});else for(let m of s){let y=e.selectedLeftItemId===`workspace:${m.id}`;r.push({id:`workspace:${m.id}`,text:`${m.kind==="project"?"\u25A6":"\u25BE"} ${m.name??m.id}`,selected:y,focused:y&&e.focusedRegion==="tasks"});let n=m.kind==="project"?m.discoveredRepoIds??[]:[m.primaryRepoId];if(m.kind==="project"){let h=`new-task-workspace:${m.id}`,b=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Project Task [${ve(e.selectedRunner)}]`,indent:2,selected:b,focused:b&&e.focusedRegion==="tasks",muted:!b})}let d=t.tasks.filter(h=>h.workspaceId===m.id);if(d.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let h of d){let b=e.selectedLeftItemId===`task:${h.id}`,a=b?"\u25B8":"\u2022",w=h.title.length>28?`${h.title.slice(0,25)}\u2026`:h.title,l={id:`task:${h.id}`,taskId:h.id,text:`${a} ${w}`,indent:2,selected:b,focused:b&&e.focusedRegion==="tasks"};h.pullRequest.number&&(l.prBadge=Qn(h.pullRequest)),r.push(l)}if(m.kind==="repo"){let h=`new-task:${m.primaryRepoId}`,b=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Task [${ve(e.selectedRunner)}]`,indent:2,selected:b,focused:b&&e.focusedRegion==="tasks",muted:!b})}else{r.push({text:` Repos (${n.length})`,indent:0,muted:!0});for(let h of n.slice(0,6)){let b=t.repos.find(a=>a.id===h);r.push({text:` \xB7 ${b?.name??h}`,indent:0,muted:!0})}n.length>6&&r.push({text:` \xB7 ${n.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function ad(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let m of r){let y=t.selectedLeftItemId===`repo:${m.id}`;e.push({id:`repo:${m.id}`,text:`\u25BE ${m.name}`,selected:y,focused:y&&t.focusedRegion==="tasks"});let n=s.filter(b=>b.repoId===m.id);if(n.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let b of n){let a=t.selectedLeftItemId===`task:${b.id}`,w=a?"\u25B8":"\u2022",l=b.title.length>28?`${b.title.slice(0,25)}\u2026`:b.title,g={id:`task:${b.id}`,taskId:b.id,text:`${w} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"};b.pullRequest.number&&(g.prBadge=Qn(b.pullRequest)),e.push(g)}let d=`new-task:${m.id}`,h=t.selectedLeftItemId===d;e.push({id:d,text:`+ New Task [${ve(t.selectedRunner)}]`,indent:2,selected:h,focused:h&&t.focusedRegion==="tasks",muted:!h})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function cd(e,t){let r=e.workspaces??[];if(!e.workspaces)return null;let s=e.tasks.find(o=>o.id===t.selectedTaskId)??null;return s?r.find(o=>o.id===s.workspaceId)??null:t.selectedWorkspaceId?r.find(o=>o.id===t.selectedWorkspaceId)??null:r[0]??null}function ld(e,t,r,s,o,m=null,y=null){if(o){let d=o.entries.length===0?["No directories or git repos here."]:o.entries.map((h,b)=>{let a=b===o.selectedIndex?"\u25B8":" ",w=h.kind==="repo"?" [git repo]":"/";return`${a} ${h.name}${w}`});return Le(["Browse for a workspace to register.",o.cwd,"",...d,"",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 Le(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!s){let d=y?.kind==="project",h=d?y.name??"this workspace":r.name,b=d?"Project Task":"Task";return Le([`No tasks in ${h}.`,"",`Press n or choose + New ${b} to create one with ${ve(t.selectedRunner)}.`])}let n=s.ptyTabs.find(d=>d.id===e)??null;return n?n.kind==="agent"?Le([`${n.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Le([`${n.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?pd(s,m,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?gd(s,m,t.diffScrollOffset):s.ptyTabs.length===0&&!t.openInspectionKind?Le(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):Le(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function dd(e,t,r){let s=t?.ptyTabs.map(m=>({id:m.id,label:hd(m)}))??[];if(!t)return[{id:dr,label:"EMPTY",active:r===dr,focused:e.focusedRegion==="center"&&r===dr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:fd(e)}]:[];return[...s,...o].map(m=>({...m,active:m.id===r,focused:e.focusedRegion==="center"&&m.id===r}))}function ud(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:dr}function hd(e){return e.title.toUpperCase()}function fd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?$t.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function pd(e,t,r){if(!e)return Le(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return Le(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let s=t.selectedFile,o=Yn(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:""},...md(s.lines,r,o)]}function gd(e,t,r){if(!e)return Le(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return Le(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let s=t.selectedDiff,o=Yn(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:""},..._d(s.lines,r,o)]}function Le(e){return e.map(t=>({text:t}))}function md(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((m,y)=>{let n=o+y+1;return{text:`${`${String(n).padStart(s," ")} \u2502 `}${m}`,segments:[{text:String(n).padStart(s," "),style:{fg:de.lineNumber}},{text:" \u2502 ",style:{fg:de.gutter}},...gs(m,r)],tone:"default"}})}function _d(e,t,r){let s=wd(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(m=>bd(m,r))}function wd(e){let t=[],r=0,s=0;for(let o of e){let m=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(m){r=Number.parseInt(m[1]??"0",10),s=Number.parseInt(m[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 bd(e,t){let r=Gn(e.oldNumber),s=Gn(e.newNumber),o=e.kind==="delete"?r:s,m=e.kind==="delete"?{bg:"2a1111",fallbackFg:de.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:de.diffAdd}:null,y=`${o} \u2502 ${e.text}`,n=m?yd(gs(e.text,t),m.bg,m.fallbackFg):gs(e.text,t),d=m?{fg:de.lineNumber,bg:m.bg}:{fg:de.lineNumber},h=m?{fg:de.gutter,bg:m.bg}:{fg:de.gutter};return{text:y,segments:[{text:o,style:d},{text:" \u2502 ",style:h},...n],fullBleed:m!==null}}function Gn(e){return e===null?" ":String(e).padStart(4," ")}function Yn(e){let t=$t.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 gs(e,t){return t==="diff"?kd(e):t==="markdown"?vd(e):t==="json"?ms(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?ms(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 kd(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:de.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:de.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:de.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:de.diffMeta}}]:[{text:e}]}function yd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function vd(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:de.markup,bold:!0}}]:ms(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function ms(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let m=o[0],y=o.index??0;y>s&&r.push({text:e.slice(s,y)}),r.push({text:m,style:Sd(m)}),s=y+m.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function Sd(e){return e.startsWith("//")||e.startsWith("/*")?{fg:de.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:de.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:de.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:de.markup}:{fg:de.keyword}}function Td(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,m=(t?.type==="project"&&s?t.repoTargets?.find(n=>n.repoId===s)??null:null)?.pullRequest??t?.pullRequest??null,y=[Rd(e,m),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...Cd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...Dd(e,r)]}:{title:"",rows:[...y,...Md(e,r)]}}function Rd(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 d=0;d<s.length;d++){let h=s[d];d>0&&o.push({text:" "}),o.push({text:h.label,style:{fg:h.active?"7aa2f7":"565f89"}})}let m=_s(t),y=ws(t?.requiredChecks??null);return o.push({text:" "},m,{text:" "},y),{id:"inspection-mode",text:o.map(d=>d.text).join(""),segments:o}}function Qn(e){return[{text:" "},_s(e),{text:" "},ws(e.requiredChecks??null)]}function _s(e){return!e||!e.number?{text:vn,style:{fg:"565f89"}}:e.status==="merged"?{text:Tn,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Rn,style:{fg:"f7768e"}}:{text:Sn,style:{fg:"9ece6a"}}}function ws(e){return!e||e.length===0?{text:as,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:ds,style:{fg:"f7768e"}}:e.every(t=>t.status==="success")?{text:ls,style:{fg:"9ece6a"}}:{text:cs,style:{fg:"e0af68"}}}function Cd(e,t){return t?t.type==="project"&&t.repoTargets?.length?Pd(e,t):Jn("pr",t.title,t.branch,t.pullRequest):[{id:"review-empty",text:"No task selected.",muted:!0}]}var lr=32;function Pd(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let y of s){let n=o===y.repoId,d=e.focusedRegion==="inspector"&&n,h=y.repoId.startsWith("repo_")?y.repoId.slice(5):y.repoId;if(y.status!=="ready"){let a=y.failureReason?y.failureReason.slice(0,14):y.status,w=lr-a.length-1,l=h.length>w?h.slice(0,w-1)+"\u2026":h,g=lr-l.length-a.length;r.push({id:`project-review:${y.repoId}`,text:l+" ".repeat(Math.max(1,g))+a,selected:n,focused:d,muted:!0})}else{let b=_s(y.pullRequest),a=ws(y.pullRequest.requiredChecks),w=`${b.text} ${a.text}`,l=lr-w.length-1,g=h.length>l?h.slice(0,l-1)+"\u2026":h,_=lr-g.length-w.length,i=g+" ".repeat(Math.max(1,_));r.push({id:`project-review:${y.repoId}`,text:i+w,selected:n,focused:d,segments:[{text:i},{...b,text:b.text},{text:" "},{...a,text:a.text}]})}}let m=s.find(y=>y.repoId===o)??null;return m?.status==="ready"&&m.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...Jn("target",null,m.branch,m.pullRequest))),r}function Jn(e,t,r,s){let o=b=>`${e}-${b}`;if(!s.number)return[{id:o("no-pr"),text:r,muted:!0}];let m=[],y=`#${s.number} ${s.status??"open"}`;if(m.push(s.url?{id:o("pr-number"),text:`${y} Open in GitHub \u2197`,segments:[{text:y},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:s.url}]}:{id:o("pr-number"),text:y}),t){let b=t.length>34?`${t.slice(0,31)}\u2026`:t;m.push({id:o("pr-title"),text:b})}let n=s.baseBranch??"?",d=s.headBranch??r;m.push({id:o("pr-branches"),text:`\u2190 ${n} \u2192 ${d}`,muted:!0});let h=s.mergeable?"merge ready":s.mergeStateStatus?`merge ${s.mergeStateStatus}`:"merge unknown";return m.push({id:o("pr-meta"),text:`${h} \xB7 synced ${Id(s.lastSyncedAt)}`,muted:!0}),m.push({id:o("checks-spacer"),text:""}),m.push({id:o("checks-header"),text:"Checks",muted:!0}),s.requiredChecks.length?m.push(...s.requiredChecks.map(xd)):m.push({id:o("checks-none"),text:s.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0}),m}function Id(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 xd(e){let{icon:t,color:r}=Ed(e.status),s=e.name.length>22?`${e.name.slice(0,21)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(22," ")} ${Ad(e.status)}`,color:r,muted:!1}}function Ed(e){switch(e){case"success":return{icon:ls,color:"9ece6a"};case"pending":return{icon:cs,color:"e0af68"};case"failed":return{icon:ds,color:"f7768e"};case"skipped":return{icon:as,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function Ad(e){return e==="success"?"passing":e==="failed"?"failing":e}function Dd(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(m=>[m.path,m.status])),s=Ld(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(m=>{let y=m.kind==="file"?r.get(m.path):void 0,n=y==="A"?"9ece6a":y==="M"?"e0af68":y==="D"?"f7768e":y==="??"?"565f89":void 0,d=m.kind==="directory"?e.collapsedFileTreePaths.includes(m.path)?kn:yn:bn(m.label),h=m.kind==="file"?Cn(m.label):void 0,b=" ".repeat(m.depth),a=h?{text:d,style:{fg:h}}:{text:d},w=n?{text:m.label,style:{fg:n}}:{text:m.label},l=[{text:b},a,w];return{id:m.path,text:`${b}${d}${m.label}`,selected:m.path===o,focused:m.path===o&&e.focusedRegion==="inspector",muted:m.kind==="directory",segments:l}})}function Ld(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let m=1;m<o.length;m+=1)if(r.has(o.slice(0,m).join("/")))return!1;return!0})}function Md(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(Od(t))return Bd(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(m=>m.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(m=>Zn(m,e,t))))}return r}function Od(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Bd(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 m=t.diffRows.filter(n=>n.path.startsWith(`${o}/`)),y=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:y,muted:!0});for(let n of["branch","staged","unstaged","untracked"]){let d=m.filter(h=>h.group===n);d.length!==0&&(r.push({id:`repo-diff:${o}:${n}`,text:` ${n}`,muted:!0}),r.push(...d.map(h=>Zn(h,e,t,o.length+1))))}}return r}function Zn(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,m=e.deletions===null?"-":`-${e.deletions}`,y=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",n=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${n} ${o}/${m}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:y}}function $d(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:ve(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:$t.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 Fd(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function Wd(e,t){return{name:ve(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var ur={width:120,height:36},Me={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function yt(e,t){return{width:Math.max(e??ur.width,ur.width),height:Math.max(t??ur.height,ur.height)}}import{spawn as uu}from"node:child_process";import{createHash as hu}from"node:crypto";import{createServer as fu,createConnection as ho}from"node:net";import{openSync as pu}from"node:fs";import{mkdir as gu,readFile as Ts,rm as pt,writeFile as mu}from"node:fs/promises";import{tmpdir as _u}from"node:os";import vt from"node:path";import{createRequire as Gd}from"node:module";var so=da(to(),1),Nd=1e3,jd=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function io(e){return new so.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:Nd,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function no(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function ks(e,t){return new Promise(r=>{e.write(t,r)})}function oo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),m=r.baseY+r.cursorY,y=Math.max(0,r.baseY-t);for(let n=0;n<e.rows;n+=1){let d=r.getLine(y+n);if(!d){s.push({segments:[]});continue}let h=[];for(let b=0;b<e.cols;b+=1){let a=d.getCell(b,o);!a||a.getWidth()===0||h.push({text:a.getChars()||" ",style:qd(a,y+n===m&&b===r.cursorX)})}s.push({segments:Hd(Ud(h))})}return s}function Hd(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&Vd(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};ao(r.style)||(o.style=r.style),t.push(o)}return t}function Ud(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!ao(r.style))break;t-=1}return e.slice(0,t)}function qd(e,t){let r={},s=ro(e,"fg"),o=ro(e,"bg");return s&&(r.fg=s),o&&(r.bg=o),e.isBold()&&(r.bold=!0),e.isDim()&&(r.dim=!0),e.isItalic()&&(r.italic=!0),e.isUnderline()&&(r.underline=!0),(e.isInverse()||t)&&(r.inverse=!0),r}function ro(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let s=t==="fg"?e.isFgRGB():e.isBgRGB(),o=t==="fg"?e.getFgColor():e.getBgColor();return s?o.toString(16).padStart(6,"0"):jd[o]??Kd(o)}function Kd(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(zd).map(m=>m.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 zd(e){return e===0?0:55+e*40}function Vd(e,t){return bs(e)===bs(t)}function bs(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function ao(e){return bs(e)===""}var Xd=Gd(import.meta.url),Yd=/^CTRL_([A-Z])$/,Qd="\x1B[6n",Jd="\x1B[c",Zd="\x1B[?u",eu="\x1B]10;?\x1B\\",tu="\x1B]10;?\x07",ru="\x1B]11;?\x1B\\",su="\x1B]11;?\x07",iu={ENTER:"\r",KP_ENTER:"\r",TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},hr=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 m=this.sessions.get(r);if(m)if(m.status!=="running")ys(m),this.sessions.delete(r);else return this.attachedTabId=r,m.scrollbackLines=0,co(m,s),this.getViewState(r);let y=this.createSession(t,r,s,o);return this.sessions.set(r,y),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=nu(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&&co(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(ys(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())ys(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:oo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let m=this.spawn??au().spawn,y=io(s),n=o??this.resolveSessionSpec(t,r),d=nt(this.env),{executable:h,args:b}=cu(this.shell,n.command,{cwd:n.cwd,env:d}),a=m(h,b,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:n.cwd,env:lu(d)}),w={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(a.onData(l=>{du(a,l),ks(w.terminal,l).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(a.onExit(l=>{w.status="exited",ks(w.terminal,`\r
90
- [process exited ${l.exitCode}]`).then(()=>{this.onUpdate?.(w.tabId)})})),w}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function nu(e){if(e.length===1)return e;let t=iu[e];if(t!==void 0)return t;let r=Yd.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function co(e,t){ou(e.pty,t),no(e.terminal,t)}function ys(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function ou(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function au(){return Xd("node-pty")}function cu(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ot(t[0],r),...t.slice(1)].map(lo).join(" ")}; exec ${lo(e)} -l`;return{executable:e,args:["-lc",o]}}function lo(e){return`'${e.replaceAll("'","'\\''")}'`}function lu(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 du(e,t){for(let o=0;o<ft(t,Qd);o+=1)e.write("\x1B[1;1R");for(let o=0;o<ft(t,Jd);o+=1)e.write("\x1B[?1;2c");for(let o=0;o<ft(t,Zd);o+=1)e.write("\x1B[?0u");let r=ft(t,eu)+ft(t,tu);for(let o=0;o<r;o+=1)e.write("\x1B]10;rgb:e6e6/e6e6/e6e6\x1B\\");let s=ft(t,ru)+ft(t,su);for(let o=0;o<s;o+=1)e.write("\x1B]11;rgb:0a0a/0a0a/0a0a\x1B\\")}function ft(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 Rs=3;async function fo(e){let t=Cs(e.paths);await wu(t,e.paths,e.spawnDaemon);let r=await bo(t.socketPath),s=new vs(r,e);return await s.ready(),s}async function po(e,t={}){let r=Cs(e);await gu(e.runtimeDir,{recursive:!0}),await pt(r.socketPath,{force:!0});let s=new Ss(e,t),o=fu(m=>s.handleConnection(m));await Tu(o,r.socketPath),await mu(r.pidPath,String(process.pid),"utf8"),await new Promise(m=>{let y=()=>{s.closeClients(),o.close(()=>m())};s.onShutdown=y,process.once("SIGTERM",y),process.once("SIGINT",y)}),await pt(r.socketPath,{force:!0}),await pt(r.pidPath,{force:!0}),s.disposeAll()}async function go(e){let t=Cs(e);return await pr(t.socketPath)?(await _o(t.socketPath),!0):!1}var vs=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!==Rs)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 m=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,m),m}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((y,n)=>{this.pending.set(r,{resolve:y,reject:n})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
86
+ `);return y.length>Rl?pe(t,"Diff is above the 500 KB inline preview limit.","too_large",t,y.length):y.includes("\0")?pe(t,"Binary diff preview is not available in Craig.","binary",t,y.length):{path:t,status:y.length>0?"ready":"empty",title:t,lines:y.length>0?y.split(`
87
+ `):["No diff for this file."],byteLength:y.length}}function vn(e){let t=[],r=new Set;for(let s of e){let o=s.split("/");for(let m=0;m<o.length-1;m+=1){let y=o.slice(0,m+1).join("/");r.has(y)||(r.add(y),t.push({kind:"directory",path:y,depth:m,label:o[m]??y}))}t.push({kind:"file",path:s,depth:o.length-1,label:o.at(-1)??s})}return t}function Ze(e,t){return e&&t.includes(e)?e:t[0]??null}function El(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Sn(e){return[...new Set(e.split(`
88
+ `).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Al(e,t){let r=ls.resolve(e,t),s=ls.resolve(e);if(r!==s&&!r.startsWith(`${s}${ls.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Dl(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function pe(e,t,r,s=null,o=null){return{path:s,status:r,title:e,lines:[t],byteLength:o}}_e();import{access as Ll}from"node:fs/promises";async function Tn(e,t){let r=await ie(e,t),s=await Ml(r.worktreePath),o={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:s&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await re(e,o),o}async function Ml(e){try{return await Ll(e),!0}catch{return!1}}Ae();Ie();import Ut from"node:path";function Rn(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 Cn="\u{F024B} ",Pn="\u{F0DCF} ",In="\u25CB",xn="\uEA64",En="\uEAFE",An="\uEBDA",us="\u25CB",hs="\u25CF",fs="\u2713",ps="\u2715";function Dn(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();bt();Ae();var Ol=["tasks","center","inspector","actions"],$n=["agent","terminal"],Fn=[],ne="inspection",Bm=[...$n,...Fn],Wn=["commit","push","create-pr","refresh-checks","merge","close-task"],Bl=["refresh-checks","close-task"],Nn=["task","checks","pr","setup-run","actions","next-action"],jn=["diff","files","review"];function Hn(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=Zl(e?.openInspectionKind)??r,o=_t(t);return{inputMode:td(e?.inputMode),focusedRegion:Ql(e?.focusedRegion),selectedRepoId:ze(e?.selectedRepoId),selectedWorkspaceId:ze(e?.selectedWorkspaceId),selectedTaskId:ze(e?.selectedTaskId),selectedPtyTabId:ze(e?.selectedPtyTabId),selectedLeftItemId:dd(ze(e?.selectedTaskId)),activeTab:r?ne:ze(e?.activeTab)??"agent",preferredPtyTabKind:ed(e?.preferredPtyTabKind),inspectorSection:jt(e?.inspectorSection,Nn,"task"),inspectionMode:Jl(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:s,selectedFileTreePath:ze(e?.selectedFileTreePath),selectedFilePath:ze(e?.selectedFilePath),selectedDiffPath:ze(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:jt(e?.selectedActionId,Wn,"commit"),selectedProjectTargetId:null,selectedRunner:rd(e?.selectedRunner,o,it(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:$l(),centerZoomed:!1}}function $l(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function Un(e,t){return{...e??We(),selectedRepoId:t.selectedRepoId,selectedWorkspaceId:t.selectedWorkspaceId,selectedTaskId:t.selectedTaskId,selectedPtyTabId:t.selectedPtyTabId,inputMode:t.inputMode,focusedRegion:t.focusedRegion,activeTab:t.activeTab,preferredPtyTabKind:t.preferredPtyTabKind,inspectorSection:t.inspectorSection,inspectionMode:t.inspectionMode,openInspectionKind:t.openInspectionKind,selectedFileTreePath:t.selectedFileTreePath,selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath,collapsedFileTreePaths:t.collapsedFileTreePaths,selectedActionId:t.selectedActionId,selectedRunner:t.selectedRunner}}function fr(e,t,r={}){let s=cd(e,t),o=Qn(s),m=(o?.kind==="workspace"?t.workspaces?.find(k=>k.id===o.id)??null:null)??(o?.kind==="task"?t.workspaces?.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.workspaceId)??null:null)??t.workspaces?.find(k=>k.id===e.selectedWorkspaceId)??t.workspaces?.[0]??null,n=((o?.kind==="repo"?t.repos.find(k=>k.id===o.id)??null:o?.kind==="task"?t.repos.find(k=>k.id===t.tasks.find(a=>a.id===o.id)?.repoId)??null:null)??(m?.kind==="project"?t.repos.find(k=>k.id===e.selectedRepoId&&m.discoveredRepoIds?.includes(k.id))??null:null)??(m?.kind!=="project"?t.repos.find(k=>k.id===m?.primaryRepoId)??null:null)??t.repos.find(k=>k.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,l=m?t.tasks.filter(k=>k.workspaceId===m.id):n?t.tasks.filter(k=>k.repoId===n):[],f=(o?.kind==="task"?l.find(k=>k.id===o.id)??null:null)??l.find(k=>k.id===e.selectedTaskId)??l[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:s,selectedWorkspaceId:m?.id??null,selectedRepoId:n,selectedTaskId:f?.id??null,...id(f,e.activeTab,e.selectedPtyTabId),selectedFilePath:Gl(e,t,f?.id??null),...nd(e,t,f?.id??null),selectedDiffPath:Vl(e,t,f?.id??null),inspectorSection:jt(e.inspectorSection,Nn,"task")}}function qn(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Fl(t)?G({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null},changed:!0,detachTerminal:!0}):G({state:e});if(t==="q"||t==="Q")return G({state:e,exit:!0});if(t==="ESCAPE")return G({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return G({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&(ms(e.selectedLeftItemId)||_s(e.selectedLeftItemId)))return G({state:{...e,selectedRunner:ws(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Ln(e,1);if(t==="SHIFT_TAB"||t==="[")return Ln(e,-1);if(t==="z"||t==="Z")return G({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,-1,r):Mn(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?et(e,1,r):Mn(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??ce,o=e.centerTabRunner?s.indexOf(e.centerTabRunner):-1,m=o===s.length-1?null:s[o+1];return G({state:{...e,centerTabRunner:m,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let s=sd(e,t);return G({state:{...e,preferredPtyTabKind:s,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:s,createPtyTabRunner:s==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&ud(e.selectedLeftItemId)&&e.selectedWorkspaceId)return G({state:{...e,actionMessage:null},changed:!0,removeWorkspace:!0});if(t==="x"&&e.focusedRegion==="center"&&Bn(e.activeTab,r.ptyTabIds??[]))return G({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return gs(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return On(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return gs(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return On(e,1)}if(tt(t)){if(e.focusedRegion==="tasks"&&(ms(e.selectedLeftItemId)||_s(e.selectedLeftItemId))){let s=Jn(e.selectedLeftItemId),o=Zn(e.selectedLeftItemId);return G({state:{...e,selectedRepoId:s??e.selectedRepoId,selectedWorkspaceId:o??e.selectedWorkspaceId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return G({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&hr(e.selectedLeftItemId)&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&Bn(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return G({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:pr(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return G({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let s=e.selectedFileTreePath??e.selectedFilePath;if(s&&(r.fileTreeDirectoryIds??[]).includes(s))return G({state:Ul({...e,selectedFileTreePath:s}),changed:!0});let o=s&&(r.fileTreeFileIds??[]).includes(s)?s:e.selectedFilePath;return G({state:{...e,selectedFileTreePath:o,selectedFilePath:o,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?G({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?G({state:e}):e.selectedActionId==="create-pr"?G({state:{...e,actionMessage:null},changed:!0,syncPullRequest:!0}):e.selectedActionId==="refresh-checks"?G({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="merge"?G({state:{...e,actionMessage:null},changed:!0,mergeTask:!0}):e.selectedActionId==="close-task"?G({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):G({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return G({state:e})}function Ht(e,t){return{...e,terminal:t}}function Kn(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Fl(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===`
89
+ `}function zn(e){return e.length===1&&e>=" "&&e!=="\x7F"}function Vn(e){return Gn(e)||pr(e)!==null}function Wl(e){return Fn.includes(e)}function Gn(e){return $n.includes(e)}function Xn(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Nl=["tasks","center","inspector"];function Ln(e,t){return dr(e,"focusedRegion",Nl,t)}function gs(e,t,r){let s=dr(e,"activeTab",r&&r.length>0?r:ad(e),t);return!s.changed||Wl(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:pr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Mn(e,t,r){if(e.focusedRegion==="tasks")return jl(e,t,r.leftItemIds);if(e.focusedRegion==="center")return gs(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Yn(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0},refreshInspection:!0}:s}return r.projectTargetIds?.length?ur(e,"selectedProjectTargetId",r.projectTargetIds,t):dr(e,"selectedActionId",Bl,t)}return dr(e,"selectedActionId",Wn,t)}function jl(e,t,r){let s=ur(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=Qn(s.state.selectedLeftItemId);if(o?.kind==="workspace")return{...s,state:{...s.state,selectedWorkspaceId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="task")return{...s,state:{...s.state,selectedTaskId:o.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(o?.kind==="repo")return{...s,state:{...s.state,selectedRepoId:o.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let m=Jn(s.state.selectedLeftItemId);if(m)return{...s,state:{...s.state,selectedRepoId:m}};let y=Zn(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function et(e,t,r){if(t===0)return G({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Yn(e,t,r);if(e.inspectionMode==="diff"){let s=ur(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return s.changed?{...s,state:{...s.state,diffScrollOffset:0}}:s}return G({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return ql(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return Kl(e,t,r)}return G({state:e})}function Hl(e,t){if(e.inspectionMode===t)return G({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,s=t==="diff"||t==="files"?ne:e.activeTab;return G({state:{...e,inspectionMode:t,activeTab:s,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function On(e,t){return Hl(e,Yl(e.inspectionMode,jn,t))}function Yn(e,t,r){let s=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(s.length===0)return G({state:e});let o=e.selectedFileTreePath??e.selectedFilePath??s[0]??null,m=s.indexOf(o??""),y=Ve(m===-1?0:m+t,0,s.length-1),n=s[y]??null;if(n===e.selectedFileTreePath)return G({state:e});let l=n!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(n);return G({state:{...e,selectedFileTreePath:n,selectedFilePath:l?n:e.selectedFilePath,activeTab:l?ne:e.activeTab,openInspectionKind:l?"file":e.openInspectionKind,fileScrollOffset:l?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:l})}function Ul(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 ql(e,t,r,s,o=10){let m=Math.max(0,s-Math.max(1,o)),y=Ve(e[t]+r,0,m);return y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function Kl(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return zl(e,t,r);let s=r.diffLineCount??0,o=r.pageRows??10,m=Math.max(0,s-Math.max(1,o)),y=e.diffScrollOffset+t,n=r.diffPathIds??[];if(n.length===0||!e.selectedDiffPath){let k=Ve(y,0,m);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}let l=n.indexOf(e.selectedDiffPath);if(l===-1){let k=Ve(y,0,m);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}if(t>0&&y>m){let k=n[l+1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===m?G({state:e}):G({state:{...e,diffScrollOffset:m,actionMessage:null},changed:!0})}if(t<0&&y<0){let k=n[l-1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?G({state:e}):G({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let f=Ve(y,0,m);return f===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:f,actionMessage:null},changed:!0})}function zl(e,t,r){let s=r.diffLineCount??0,o=r.pageRows??10,m=Math.max(0,s-Math.max(1,o)),y=Ve(e.diffScrollOffset+t,0,m),n=Xl(r.diffPathRanges??[],y)??e.selectedDiffPath;return y===e.diffScrollOffset&&n===e.selectedDiffPath?G({state:e}):G({state:{...e,diffScrollOffset:y,selectedDiffPath:n,actionMessage:null},changed:!0})}function Vl(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Gl(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function Xl(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function dr(e,t,r,s){let o=r.indexOf(e[t]),m=Ve(o+s,0,r.length-1),y=r[m];return!y||y===e[t]?G({state:e}):G({state:{...e,[t]:y,actionMessage:null},changed:!0})}function ur(e,t,r,s,o=!1){if(r.length===0)return G({state:e});let m=r.indexOf(e[t]??r[0]??""),y=Ve(m===-1?0:m+s,0,r.length-1),n=r[y]??null;return n===e[t]?G({state:e}):G({state:{...e,[t]:n,actionMessage:null},changed:!0,refreshInspection:o})}function Yl(e,t,r){let s=t.indexOf(e);return t[Ve(s+r,0,t.length-1)]??e}function G(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,createWorkspaceTask:e.createWorkspaceTask??!1,createPtyTab:e.createPtyTab??!1,createPtyTabKind:e.createPtyTabKind??null,createPtyTabRunner:e.createPtyTabRunner??null,closePtyTab:e.closePtyTab??!1,syncPullRequest:e.syncPullRequest??!1,refreshPullRequestChecks:e.refreshPullRequestChecks??!1,mergeTask:e.mergeTask??!1,closeTask:e.closeTask??!1,removeWorkspace:e.removeWorkspace??!1,refreshInspection:e.refreshInspection??!1}}function jt(e,t,r){return t.includes(e??"")?e:r}function Ql(e){return e==="tabs"?"center":jt(e,Ol,"tasks")}function Jl(e,t){return e==="checks"||e==="actions"||e==="review"?"review":jt(e,jn,t)}function Zl(e){return e==="file"||e==="diff"?e:null}function ed(e){return e==="terminal"?"terminal":"agent"}function td(e){return e==="terminal"?"terminal":"control"}function rd(e,t=[...ce],r="codex"){return e&&wt(e)&&t.includes(e)?e:r}function ws(e,t=ce){let r=t.length>0?t:ce,s=r.indexOf(e);return r[(s+1)%r.length]??r[0]??"codex"}function pr(e){let t=ce.join("|");return new RegExp(`:(?:agent|${t})(?:-\\d+)?$`).test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function sd(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":pr(e.activeTab)??e.preferredPtyTabKind}function id(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let s=e.ptyTabs.find(n=>n.id===r)??null,o=e.selectedPtyTabId?e.ptyTabs.find(n=>n.id===e.selectedPtyTabId)??null:null,m=e.ptyTabs.find(n=>n.id===t)??null;if(m)return{activeTab:m.id,selectedPtyTabId:m.id};if(Gn(t)){let l=e.ptyTabs.find(f=>f.kind===t)??null??o??s??e.ptyTabs[0]??null;return{activeTab:l?.id??ne,selectedPtyTabId:l?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:s?.id??o?.id??e.ptyTabs[0]?.id??null};let y=o??s??e.ptyTabs[0]??null;return{activeTab:y?.id??ne,selectedPtyTabId:y?.id??null}}function nd(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?od(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function od(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 ad(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function Bn(e,t){return t.includes(e)}function cd(e,t){let r=ld(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 ld(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`),r.kind==="project"&&t.push(`new-task-workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.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 Qn(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 dd(e){return e?`task:${e}`:null}function hr(e){return typeof e=="string"&&e.startsWith("task:")}function ms(e){return typeof e=="string"&&e.startsWith("new-task:")}function _s(e){return typeof e=="string"&&e.startsWith("new-task-workspace:")}function ud(e){return typeof e=="string"&&e.startsWith("workspace:")}function Jn(e){return ms(e)?e.slice(9):null}function Zn(e){return _s(e)?e.slice(19):null}function Ve(e,t,r){return Math.min(r,Math.max(t,e))}var mr="empty",de={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function to(e,t){let r=pd(t,e),s=t.repos.find(_=>_.id===e.selectedRepoId)??t.repos[0]??null,o=r?t.tasks.filter(_=>_.workspaceId===r.id):t.tasks,m=r?.kind==="project"?o:s?o.filter(_=>_.repoId===s.id):[],y=m.find(_=>_.id===e.selectedTaskId)??m[0]??null,n=y?.type==="project",l=qd(t.tasks),f=_d(e,y),k=md(e,y,f),a=k.find(_=>_.id===f)??k[0]??{id:"agent",label:"CODEX"},w=t.inspection?.taskId===y?.id?t.inspection:null,c=s?.name??"no repo",g=y?Se(y.runner):Se(e.selectedRunner);return{inputMode:e.inputMode,focusedRegion:e.focusedRegion,actionMessage:e.actionMessage,terminal:e.terminal,footerText:e.workspaceBrowser!==null?`BROWSE WORKSPACE ${e.workspaceBrowser.cwd} \u2191\u2193 move \u2192 open \u2190 up Enter add repo Esc cancel`:e.taskPromptInput!==null?`NEW TASK ${s?`[${s.name}]`:"[no repo]"} \xB7 ${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`:hr(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":e.selectedLeftItemId?.startsWith("workspace:")?"n new task Enter select X remove workspace Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?y===null?"n new task Tab tasks Esc pause ? help":f===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${Se(e.centerTabRunner??y?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?n?"\u2191\u2193 navigate targets R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":"R refresh checks X close task \u2190/\u2192 mode Esc pause ? help":e.inspectionMode==="files"?"\u2191\u2193 navigate Enter open file \u2190/\u2192 mode Esc pause ? help":"\u2191\u2193 navigate \u2190/\u2192 mode Esc pause ? help",topRail:{workspacePath:Ut.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${Ut.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:g,liveLabel:y?.status==="running"?"live":"idle"},leftTree:hd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>Kd(_,l[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:c,agent:g},centerTranscript:gd(f,e,s,y,e.workspaceBrowser,w,r),tabs:k,rightContext:Ud(s,y),rightInspection:Ed(e,y,w)}}function hd(e,t){let r=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return fd(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 m of s){let y=e.selectedLeftItemId===`workspace:${m.id}`;r.push({id:`workspace:${m.id}`,text:`${m.kind==="project"?"\u25A6":"\u25BE"} ${m.name??m.id}`,selected:y,focused:y&&e.focusedRegion==="tasks"});let n=m.kind==="project"?m.discoveredRepoIds??[]:[m.primaryRepoId];if(m.kind==="project"){let f=`new-task-workspace:${m.id}`,k=e.selectedLeftItemId===f;r.push({id:f,text:`+ New Project Task [${Se(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}let l=t.tasks.filter(f=>f.workspaceId===m.id);if(l.length===0)r.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let f of l){let k=e.selectedLeftItemId===`task:${f.id}`,a=k?"\u25B8":"\u2022",w=f.title.length>28?`${f.title.slice(0,25)}\u2026`:f.title,c={id:`task:${f.id}`,taskId:f.id,text:`${a} ${w}`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks"};f.pullRequest.number&&(c.prBadge=so(f.pullRequest)),r.push(c)}if(m.kind==="repo"){let f=`new-task:${m.primaryRepoId}`,k=e.selectedLeftItemId===f;r.push({id:f,text:`+ New Task [${Se(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}else{r.push({text:` Repos (${n.length})`,indent:0,muted:!0});for(let f of n.slice(0,6)){let k=t.repos.find(a=>a.id===f);r.push({text:` \xB7 ${k?.name??f}`,indent:0,muted:!0})}n.length>6&&r.push({text:` \xB7 ${n.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function fd(e,t,r,s){if(r.length===0)e.push({text:"No repos registered.",indent:2,muted:!0});else for(let m of r){let y=t.selectedLeftItemId===`repo:${m.id}`;e.push({id:`repo:${m.id}`,text:`\u25BE ${m.name}`,selected:y,focused:y&&t.focusedRegion==="tasks"});let n=s.filter(k=>k.repoId===m.id);if(n.length===0)e.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let k of n){let a=t.selectedLeftItemId===`task:${k.id}`,w=a?"\u25B8":"\u2022",c=k.title.length>28?`${k.title.slice(0,25)}\u2026`:k.title,g={id:`task:${k.id}`,taskId:k.id,text:`${w} ${c}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks"};k.pullRequest.number&&(g.prBadge=so(k.pullRequest)),e.push(g)}let l=`new-task:${m.id}`,f=t.selectedLeftItemId===l;e.push({id:l,text:`+ New Task [${Se(t.selectedRunner)}]`,indent:2,selected:f,focused:f&&t.focusedRegion==="tasks",muted:!f})}let o=t.selectedLeftItemId==="new-workspace";return e.push({text:"",muted:!0}),e.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&t.focusedRegion==="tasks"}),e}function pd(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 gd(e,t,r,s,o,m=null,y=null){if(o){let l=o.entries.length===0?["No directories or git repos here."]:o.entries.map((f,k)=>{let a=k===o.selectedIndex?"\u25B8":" ",w=f.kind==="repo"?" [git repo]":"/";return`${a} ${f.name}${w}`});return Oe(["Browse for a workspace to register.",o.cwd,"",...l,"",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 l=y?.kind==="project",f=l?y.name??"this workspace":r.name,k=l?"Project Task":"Task";return Oe([`No tasks in ${f}.`,"",`Press n or choose + New ${k} to create one with ${Se(t.selectedRunner)}.`])}let n=s.ptyTabs.find(l=>l.id===e)??null;return n?n.kind==="agent"?Oe([`${n.title} tab ready for ${s.id}.`,"","Press Enter to attach this PTY-backed agent session.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):Oe([`${n.title} tab ready for ${s.id}.`,"","Press Enter to attach this plain task shell.","Use + to create another task tab, a/t for a specific kind, or x to close this tab."]):e===ne&&t.openInspectionKind==="file"?bd(s,m,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?yd(s,m,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 md(e,t,r){let s=t?.ptyTabs.map(m=>({id:m.id,label:wd(m)}))??[];if(!t)return[{id:mr,label:"EMPTY",active:r===mr,focused:e.focusedRegion==="center"&&r===mr}];let o=e.openInspectionKind||r===ne?[{id:ne,label:kd(e)}]:[];return[...s,...o].map(m=>({...m,active:m.id===r,focused:e.focusedRegion==="center"&&m.id===r}))}function _d(e,t){return t?t.ptyTabs.some(r=>r.id===e.activeTab)||e.activeTab===ne&&e.openInspectionKind?e.activeTab:e.activeTab==="agent"||e.activeTab==="terminal"?t.ptyTabs.find(r=>r.kind===e.activeTab)?.id??t.ptyTabs[0]?.id??ne:e.selectedPtyTabId&&t.ptyTabs.some(r=>r.id===e.selectedPtyTabId)?e.selectedPtyTabId:t.ptyTabs[0]?.id??ne:mr}function wd(e){return e.title.toUpperCase()}function kd(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?Ut.basename(t):e.inspectionMode.toUpperCase();return e.openInspectionKind==="diff"?`${r} \u0394`:r}function bd(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=ro(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:""},...vd(s.lines,r,o)]}function yd(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=ro(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:""},...Sd(s.lines,r,o)]}function Oe(e){return e.map(t=>({text:t}))}function vd(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((m,y)=>{let n=o+y+1;return{text:`${`${String(n).padStart(s," ")} \u2502 `}${m}`,segments:[{text:String(n).padStart(s," "),style:{fg:de.lineNumber}},{text:" \u2502 ",style:{fg:de.gutter}},...ks(m,r)],tone:"default"}})}function Sd(e,t,r){let s=Td(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(m=>Rd(m,r))}function Td(e){let t=[],r=0,s=0;for(let o of e){let m=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(o);if(m){r=Number.parseInt(m[1]??"0",10),s=Number.parseInt(m[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 Rd(e,t){let r=eo(e.oldNumber),s=eo(e.newNumber),o=e.kind==="delete"?r:s,m=e.kind==="delete"?{bg:"2a1111",fallbackFg:de.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:de.diffAdd}:null,y=`${o} \u2502 ${e.text}`,n=m?Pd(ks(e.text,t),m.bg,m.fallbackFg):ks(e.text,t),l=m?{fg:de.lineNumber,bg:m.bg}:{fg:de.lineNumber},f=m?{fg:de.gutter,bg:m.bg}:{fg:de.gutter};return{text:y,segments:[{text:o,style:l},{text:" \u2502 ",style:f},...n],fullBleed:m!==null}}function eo(e){return e===null?" ":String(e).padStart(4," ")}function ro(e){let t=Ut.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 ks(e,t){return t==="diff"?Cd(e):t==="markdown"?Id(e):t==="json"?bs(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?bs(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 Cd(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:de.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:de.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:de.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:de.diffMeta}}]:[{text:e}]}function Pd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function Id(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:de.markup,bold:!0}}]:bs(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function bs(e,t){let r=[],s=0;for(let o of e.matchAll(t)){let m=o[0],y=o.index??0;y>s&&r.push({text:e.slice(s,y)}),r.push({text:m,style:xd(m)}),s=y+m.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function xd(e){return e.startsWith("//")||e.startsWith("/*")?{fg:de.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:de.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:de.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:de.markup}:{fg:de.keyword}}function Ed(e,t,r){let s=e.selectedProjectTargetId??t?.repoTargets?.[0]?.repoId??null,m=(t?.type==="project"&&s?t.repoTargets?.find(n=>n.repoId===s)??null:null)?.pullRequest??t?.pullRequest??null,y=[Ad(e,m),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...Dd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...Fd(e,r)]}:{title:"",rows:[...y,...Nd(e,r)]}}function Ad(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 l=0;l<s.length;l++){let f=s[l];l>0&&o.push({text:" "}),o.push({text:f.label,style:{fg:f.active?"7aa2f7":"565f89"}})}let m=ys(t),y=vs(t?.requiredChecks??null);return o.push({text:" "},m,{text:" "},y),{id:"inspection-mode",text:o.map(l=>l.text).join(""),segments:o}}function so(e){return[{text:" "},ys(e),{text:" "},vs(e.requiredChecks??null)]}function ys(e){return!e||!e.number?{text:In,style:{fg:"565f89"}}:e.status==="merged"?{text:En,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:An,style:{fg:"f7768e"}}:{text:xn,style:{fg:"9ece6a"}}}function vs(e){return!e||e.length===0?{text:us,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:ps,style:{fg:"f7768e"}}:e.every(t=>t.status==="success")?{text:fs,style:{fg:"9ece6a"}}:{text:hs,style:{fg:"e0af68"}}}function Dd(e,t){return t?t.type==="project"&&t.repoTargets?.length?Ld(e,t):io("pr",t.title,t.branch,t.pullRequest):[{id:"review-empty",text:"No task selected.",muted:!0}]}var gr=32;function Ld(e,t){let r=[],s=t.repoTargets??[],o=e.selectedProjectTargetId??s[0]?.repoId??null;for(let y of s){let n=o===y.repoId,l=e.focusedRegion==="inspector"&&n,f=y.repoId.startsWith("repo_")?y.repoId.slice(5):y.repoId;if(y.status!=="ready"){let a=y.failureReason?y.failureReason.slice(0,14):y.status,w=gr-a.length-1,c=f.length>w?f.slice(0,w-1)+"\u2026":f,g=gr-c.length-a.length;r.push({id:`project-review:${y.repoId}`,text:c+" ".repeat(Math.max(1,g))+a,selected:n,focused:l,muted:!0})}else{let k=ys(y.pullRequest),a=vs(y.pullRequest.requiredChecks),w=`${k.text} ${a.text}`,c=gr-w.length-1,g=f.length>c?f.slice(0,c-1)+"\u2026":f,_=gr-g.length-w.length,i=g+" ".repeat(Math.max(1,_));r.push({id:`project-review:${y.repoId}`,text:i+w,selected:n,focused:l,segments:[{text:i},{...k,text:k.text},{text:" "},{...a,text:a.text}]})}}let m=s.find(y=>y.repoId===o)??null;return m?.status==="ready"&&m.pullRequest.number&&(r.push({id:"target-detail-spacer",text:""}),r.push(...io("target",null,m.branch,m.pullRequest))),r}function io(e,t,r,s){let o=k=>`${e}-${k}`;if(!s.number)return[{id:o("no-pr"),text:r,muted:!0}];let m=[],y=`#${s.number} ${s.status??"open"}`;if(m.push(s.url?{id:o("pr-number"),text:`${y} Open in GitHub \u2197`,segments:[{text:y},{text:" Open in GitHub \u2197",style:{fg:"7aa2f7",underline:!0},href:s.url}]}:{id:o("pr-number"),text:y}),t){let k=t.length>34?`${t.slice(0,31)}\u2026`:t;m.push({id:o("pr-title"),text:k})}let n=s.baseBranch??"?",l=s.headBranch??r;m.push({id:o("pr-branches"),text:`\u2190 ${n} \u2192 ${l}`,muted:!0});let f=s.mergeable?"merge ready":s.mergeStateStatus?`merge ${s.mergeStateStatus}`:"merge unknown";return m.push({id:o("pr-meta"),text:`${f} \xB7 synced ${Md(s.lastSyncedAt)}`,muted:!0}),m.push({id:o("checks-spacer"),text:""}),m.push({id:o("checks-header"),text:"Checks",muted:!0}),s.requiredChecks.length?m.push(...s.requiredChecks.map(Od)):m.push({id:o("checks-none"),text:s.number?"No GitHub checks reported.":"No checks \u2014 sync after creating a PR.",muted:!0}),m}function Md(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 Od(e){let{icon:t,color:r}=Bd(e.status),s=e.name.length>22?`${e.name.slice(0,21)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${s.padEnd(22," ")} ${$d(e.status)}`,color:r,muted:!1}}function Bd(e){switch(e){case"success":return{icon:fs,color:"9ece6a"};case"pending":return{icon:hs,color:"e0af68"};case"failed":return{icon:ps,color:"f7768e"};case"skipped":return{icon:us,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function $d(e){return e==="success"?"passing":e==="failed"?"failing":e}function Fd(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(m=>[m.path,m.status])),s=Wd(t.fileRows,e.collapsedFileTreePaths),o=e.selectedFileTreePath??t.selectedFilePath;return s.map(m=>{let y=m.kind==="file"?r.get(m.path):void 0,n=y==="A"?"9ece6a":y==="M"?"e0af68":y==="D"?"f7768e":y==="??"?"565f89":void 0,l=m.kind==="directory"?e.collapsedFileTreePaths.includes(m.path)?Cn:Pn:Rn(m.label),f=m.kind==="file"?Dn(m.label):void 0,k=" ".repeat(m.depth),a=f?{text:l,style:{fg:f}}:{text:l},w=n?{text:m.label,style:{fg:n}}:{text:m.label},c=[{text:k},a,w];return{id:m.path,text:`${k}${l}${m.label}`,selected:m.path===o,focused:m.path===o&&e.focusedRegion==="inspector",muted:m.kind==="directory",segments:c}})}function Wd(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let m=1;m<o.length;m+=1)if(r.has(o.slice(0,m).join("/")))return!1;return!0})}function Nd(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(jd(t))return Hd(e,t);let r=[];for(let s of["branch","staged","unstaged","untracked"]){let o=t.diffRows.filter(m=>m.group===s);o.length!==0&&(r.push({id:s,text:s.toUpperCase(),muted:!0}),r.push(...o.map(m=>no(m,e,t))))}return r}function jd(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Hd(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 m=t.diffRows.filter(n=>n.path.startsWith(`${o}/`)),y=o.startsWith("repo_")?o.slice(5):o;r.push({id:`repo-diff:${o}`,text:y,muted:!0});for(let n of["branch","staged","unstaged","untracked"]){let l=m.filter(f=>f.group===n);l.length!==0&&(r.push({id:`repo-diff:${o}:${n}`,text:` ${n}`,muted:!0}),r.push(...l.map(f=>no(f,e,t,o.length+1))))}}return r}function no(e,t,r,s=0){let o=e.additions===null?"-":`+${e.additions}`,m=e.deletions===null?"-":`-${e.deletions}`,y=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68",n=s>0?e.path.slice(s):e.path;return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${n} ${o}/${m}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:y}}function Ud(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:Ut.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 qd(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function Kd(e,t){return{name:Se(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var _r={width:120,height:36},Be={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function St(e,t){return{width:Math.max(e??_r.width,_r.width),height:Math.max(t??_r.height,_r.height)}}import{spawn as _u}from"node:child_process";import{createHash as wu}from"node:crypto";import{createServer as ku,createConnection as wo}from"node:net";import{openSync as bu}from"node:fs";import{mkdir as yu,readFile as Is,rm as mt,writeFile as vu}from"node:fs/promises";import{tmpdir as Su}from"node:os";import Tt from"node:path";import{createRequire as eu}from"node:module";var lo=ma(ao(),1),zd=1e3,Vd=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function uo(e){return new lo.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:zd,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function ho(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function Ts(e,t){return new Promise(r=>{e.write(t,r)})}function fo(e,t=0){let r=e.buffer.active,s=[],o=r.getNullCell(),m=r.baseY+r.cursorY,y=Math.max(0,r.baseY-t);for(let n=0;n<e.rows;n+=1){let l=r.getLine(y+n);if(!l){s.push({segments:[]});continue}let f=[];for(let k=0;k<e.cols;k+=1){let a=l.getCell(k,o);!a||a.getWidth()===0||f.push({text:a.getChars()||" ",style:Yd(a,y+n===m&&k===r.cursorX)})}s.push({segments:Gd(Xd(f))})}return s}function Gd(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&Zd(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};po(r.style)||(o.style=r.style),t.push(o)}return t}function Xd(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!po(r.style))break;t-=1}return e.slice(0,t)}function Yd(e,t){let r={},s=co(e,"fg"),o=co(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 co(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"):Vd[o]??Qd(o)}function Qd(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(Jd).map(m=>m.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 Jd(e){return e===0?0:55+e*40}function Zd(e,t){return Ss(e)===Ss(t)}function Ss(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function po(e){return Ss(e)===""}var tu=eu(import.meta.url),ru=/^CTRL_([A-Z])$/,su="\x1B[6n",iu="\x1B[c",nu="\x1B[?u",ou="\x1B]10;?\x1B\\",au="\x1B]10;?\x07",cu="\x1B]11;?\x1B\\",lu="\x1B]11;?\x07",du={ENTER:"\r",KP_ENTER:"\r",TAB:" ",SHIFT_TAB:"\x1B[Z",BACK_TAB:"\x1B[Z",BACKSPACE:"\x7F",DELETE:"\x1B[3~",ESCAPE:"\x1B",UP:"\x1B[A",DOWN:"\x1B[B",RIGHT:"\x1B[C",LEFT:"\x1B[D",HOME:"\x1B[H",END:"\x1B[F",PAGE_UP:"\x1B[5~",PAGE_DOWN:"\x1B[6~",CTRL_C:"",CTRL_D:""},wr=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 m=this.sessions.get(r);if(m)if(m.status!=="running")Rs(m),this.sessions.delete(r);else return this.attachedTabId=r,m.scrollbackLines=0,go(m,s),this.getViewState(r);let y=this.createSession(t,r,s,o);return this.sessions.set(r,y),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=uu(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&&go(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(Rs(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Rs(t);this.sessions.clear(),this.attachedTabId=null}getViewState(t){if(!t)return{status:"idle",rows:[],error:null,scrolledBack:!1};let r=this.sessions.get(t);return r?{status:r.status,rows:fo(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,s,o){let m=this.spawn??fu().spawn,y=uo(s),n=o??this.resolveSessionSpec(t,r),l=ct(this.env),{executable:f,args:k}=pu(this.shell,n.command,{cwd:n.cwd,env:l}),a=m(f,k,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:n.cwd,env:gu(l)}),w={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(a.onData(c=>{mu(a,c),Ts(w.terminal,c).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(a.onExit(c=>{w.status="exited",Ts(w.terminal,`\r
90
+ [process exited ${c.exitCode}]`).then(()=>{this.onUpdate?.(w.tabId)})})),w}getAttachedSession(){return this.attachedTabId?this.sessions.get(this.attachedTabId)??null:null}};function uu(e){if(e.length===1)return e;let t=du[e];if(t!==void 0)return t;let r=ru.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function go(e,t){hu(e.pty,t),ho(e.terminal,t)}function Rs(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function hu(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function fu(){return tu("node-pty")}function pu(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[lt(t[0],r),...t.slice(1)].map(mo).join(" ")}; exec ${mo(e)} -l`;return{executable:e,args:["-lc",o]}}function mo(e){return`'${e.replaceAll("'","'\\''")}'`}function gu(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 mu(e,t){for(let o=0;o<gt(t,su);o+=1)e.write("\x1B[1;1R");for(let o=0;o<gt(t,iu);o+=1)e.write("\x1B[?1;2c");for(let o=0;o<gt(t,nu);o+=1)e.write("\x1B[?0u");let r=gt(t,ou)+gt(t,au);for(let o=0;o<r;o+=1)e.write("\x1B]10;rgb:e6e6/e6e6/e6e6\x1B\\");let s=gt(t,cu)+gt(t,lu);for(let o=0;o<s;o+=1)e.write("\x1B]11;rgb:0a0a/0a0a/0a0a\x1B\\")}function gt(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 xs=3;async function ko(e){let t=Es(e.paths);await Tu(t,e.paths,e.spawnDaemon);let r=await Ro(t.socketPath),s=new Cs(r,e);return await s.ready(),s}async function bo(e,t={}){let r=Es(e);await yu(e.runtimeDir,{recursive:!0}),await mt(r.socketPath,{force:!0});let s=new Ps(e,t),o=ku(m=>s.handleConnection(m));await Eu(o,r.socketPath),await vu(r.pidPath,String(process.pid),"utf8"),await new Promise(m=>{let y=()=>{s.closeClients(),o.close(()=>m())};s.onShutdown=y,process.once("SIGTERM",y),process.once("SIGINT",y)}),await mt(r.socketPath,{force:!0}),await mt(r.pidPath,{force:!0}),s.disposeAll()}async function yo(e){let t=Es(e);return await br(t.socketPath)?(await So(t.socketPath),!0):!1}var Cs=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!==xs)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 m=o.view??{status:"idle",rows:[],error:null};return this.viewCache.set(r,m),m}async hydrateSessions(t){for(let r of t)try{let s=await this.send({type:"hydrateSession",tabId:r});s.view&&this.viewCache.set(r,s.view)}catch(s){let o=s instanceof Error?s.message:String(s);this.viewCache.set(r,{status:"failed",rows:[],error:o})}}write(t){this.send({type:"write",input:t}).catch(()=>{})}writeKey(t){this.send({type:"writeKey",key:t}).catch(()=>{})}scrollViewport(t){this.send({type:"scrollViewport",lines:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}resize(t){this.send({type:"resize",size:t}).then(r=>{this.attachedTabId&&r.view&&this.viewCache.set(this.attachedTabId,r.view)}).catch(()=>{})}detach(){this.attachedTabId=null,this.send({type:"detach"}).catch(()=>{})}disposeSession(t){this.viewCache.delete(t),this.attachedTabId===t&&(this.attachedTabId=null),this.send({type:"disposeSession",tabId:t}).catch(()=>{})}disposeAll(){this.attachedTabId=null,!this.closed&&(this.socket.end(),this.closed=!0)}getViewState(t){return t?this.viewCache.get(t)??{status:"idle",rows:[],error:null,scrolledBack:!1}:{status:"idle",rows:[],error:null,scrolledBack:!1}}async requestShutdown(){await this.send({type:"shutdown"})}async send(t){if(this.closed)throw new Error("Craig PTY daemon connection is closed.");let r=this.nextRequestId;this.nextRequestId+=1;let s={...t,id:r},o=new Promise((y,n)=>{this.pending.set(r,{resolve:y,reject:n})});if(this.socket.destroyed)throw this.pending.delete(r),new Error("Craig PTY daemon connection is closed.");this.socket.write(`${JSON.stringify(s)}
91
91
  `);let m=await o;if(!m.ok)throw new Error(m.error);return m}handleData(t){this.buffer+=t;let r=this.buffer.indexOf(`
92
92
  `);for(;r!==-1;){let s=this.buffer.slice(0,r);this.buffer=this.buffer.slice(r+1),this.handleMessage(s),r=this.buffer.indexOf(`
93
- `)}}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()}},Ss=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new hr({...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(`
93
+ `)}}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()}},Ps=class{onShutdown=null;clients=new Set;runtime;attachedTabId=null;constructor(t,r){this.runtime=new wr({...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(`
94
94
  `);for(;o!==-1;){let m=r.slice(0,o);r=r.slice(o+1),this.handleLine(t,m),o=r.indexOf(`
95
- `)}}),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{fr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);fr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:Rs}:{},...o?{view:o}:{}})}catch(o){let m=o instanceof Error?o.message:String(o);fr(t,{id:s.id,ok:!1,error:m})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return Ru(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)fr(s,{type:"update",tabId:t,view:r})}};function Cs(e){let t=hu("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:vt.join(_u(),`craig-${t}.sock`),pidPath:vt.join(e.runtimeDir,"pty-daemon.pid")}}async function wu(e,t,r){if(await bu(e.socketPath,1e3))return;await pr(e.socketPath)&&(await _o(e.socketPath),await uo(e.socketPath,1e3)),await pr(e.socketPath)&&(await vu(e),await uo(e.socketPath,1e3)),await yu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:y,args:n}=ku(s),d=pu(vt.join(t.runtimeDir,"pty-daemon.log"),"a");uu(y,n,{cwd:s,detached:!0,stdio:["ignore",d,d],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await mo(e.socketPath))return;await Ps(50)}let m=await Ts(vt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${m?`
96
- ${m.slice(-2e3)}`:""}`)}async function mo(e){let t=await Su(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Rs}async function bu(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await mo(e))return!0;await Ps(50)}return!1}function ku(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:vt.resolve(vt.dirname(t),"..","node_modules",".bin","tsx"),args:[t,"__craig-daemon",e]};let r=process.argv.slice(1);return{command:process.execPath,args:[...process.execArgv,...r,"__craig-daemon",e]}}async function yu(e){let t=await Ts(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&ko(r))return}await pt(e.socketPath,{force:!0}),await pt(e.pidPath,{force:!0})}async function pr(e){let t=await bo(e).catch(()=>null);return t?(t.end(),!0):!1}async function _o(e){await wo(e,{id:1,type:"shutdown"}).catch(()=>null)}async function vu(e){let t=await Ts(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!ko(r)){await pt(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await pt(e.socketPath,{force:!0})}}async function Su(e){return wo(e,{id:1,type:"ping"})}function wo(e,t){return new Promise((r,s)=>{let o=ho(e),m="",y=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),n=()=>clearTimeout(y);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
97
- `)),o.once("error",d=>{n(),s(d)}),o.on("data",d=>{m+=String(d);let h=m.indexOf(`
98
- `);if(h===-1)return;let b=m.slice(0,h);n(),o.end();try{r(JSON.parse(b))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>n())})}async function uo(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await pr(e))return;await Ps(50)}}function bo(e){return new Promise((t,r)=>{let s=ho(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Tu(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function fr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
99
- `)}catch{}}function ko(e){try{return process.kill(e,0),!0}catch{return!1}}function Ps(e){return new Promise(t=>setTimeout(t,e))}function Ru(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Cu=[" \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 Is(){return[...Cu]}var Pu=["Start","Options","Exit"],Iu=["Resume","Options","Exit"],_r=2,wr=2,br=2,xu=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Eu=new RegExp("\x1B\\[(?:0)?m","g"),Au=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),Du=/https?:\/\/[^\s<>"']+/g,xs="\x1B[0m",So="\x1B]8;;\x1B\\",se={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function To(e,t={}){return As(e,{subtitle:"crAIg is that you?",menuItems:Pu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Ro(e,t={}){return As(e,{subtitle:"Control mode is paused.",menuItems:Iu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}var gr=[" 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."],Lu=["Help"];function Es(e,t={}){return As(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Lu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Co(e,t={}){let r=t.color??!0,s=se.overlay,o=new Array(e.height).fill(ue(" ".repeat(e.width),r,s)),m=Is(),y=Math.max(1,Math.floor((e.height-m.length-2-gr.length)/2));for(let b=0;b<m.length&&!(y+b>=e.height);b+=1)o[y+b]=ue(Ao(m[b]??"",e.width),r,se.overlayLogo);let n=Math.max(...gr.map(b=>b.length)),d=Math.max(0,Math.floor((e.width-n)/2)),h=y+m.length+2;for(let b=0;b<gr.length;b+=1){let a=h+b;if(a>=e.height)break;let w=gr[b]??"";o[a]=ue(Ze(" ".repeat(d)+w,e.width),r,s)}return o.join(`
100
- `)}function Po(e,t,r={}){let s=r.color??!0,o=Me.leftWidth,m=Me.rightWidth,y=Me.dividerWidth,n=r.centerOnly??!1,d=n?e.width:e.width-o-m-y*2,h=e.height-Me.topRailHeight-1,b=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent} ${Bo(`\u25CF ${t.topRail.liveLabel}`,s,se.rail)}`,a=ue(Ze(b,e.width),s,se.rail),w=Mu(t,o-_r-wr,h,s),l=Ou(t,d,h,s),g=$u(t,m,h,s),_=[];for(let p=0;p<h;p+=1){if(n){_.push(mr(l[p]??Fe(),d,s,"center"));continue}let u=mr(w[p]??Fe(),o,s,"left"),c=ue("\u2502",s,se.divider),f=mr(l[p]??Fe(),d,s,"center"),k=ue("\u2502",s,se.divider),S=mr(g[p]??Fe(),m,s,"right");_.push(`${u}${c}${f}${k}${S}`)}let i=ue(Ze(` ${t.footerText}`,e.width),s,se.panelMuted);return[a,..._,i].join(`
101
- `)}function As(e,t){let r=new Array(e.height).fill(ue(" ".repeat(e.width),t.color,se.overlay)),s=Is(),o=Math.max(...t.menuItems.map(h=>h.length)),m=t.menuItems.map((h,b)=>`${b===t.menuIndex?">":" "} ${h.padEnd(o)}`),y=t.optionsMessage?["",t.optionsMessage]:[],n=[...s,"",t.subtitle,"",...m,...y],d=Math.max(1,Math.floor((e.height-n.length)/2));for(let h=0;h<n.length;h+=1){let b=Ao(n[h]??"",e.width);if(h<s.length){r[d+h]=ue(b,t.color,se.overlayLogo);continue}if(h===s.length+1){r[d+h]=ue(b,t.color,se.overlaySubtitle);continue}let a=h-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?se.overlayMenuSelected:se.overlay;r[d+h]=ue(b,t.color,l)}return r.join(`
102
- `)}function Mu(e,t,r,s){let o=Nu(e.runners),m=1,y=e.leftTree.map(d=>Wu(d,t,s));return[...kr(y,r-m),o]}function Ou(e,t,r,s){let o=e.tabs.find(a=>a.active)?.label??"AGENT",m=Zu(e.tabs),y=`${" ".repeat(m)}${yr("\u2500".repeat(o.length+1),s,se.panelMuted)}`,n=[`${yr(e.centerHeader.tabLabel,s,se.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),d=e.tabs.find(a=>a.active)?.id??"agent",h=e.centerHeader.tabLabel==="BROWSER"||!jn(d)?e.centerTranscript.map(a=>({...a})):Bu(e),b=[{text:ju(e.tabs,s)},{text:y,tone:"muted"},{text:n},Fe(),...h];return kr(b,r)}function Bu(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},Fe(),{text:e.terminal.error},Fe(),{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:Oo(s.segments),segments:s.segments,fullBleed:!0}))}function $u(e,t,r,s){let o=e.rightInspection?Fu(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):kr([{text:Io("CONTEXT",e.focusedRegion==="tasks",s,se.panelBg)},Fe(),...e.rightContext.map(m=>Hu(m,s)),...e.actionMessage?[Fe(),{text:e.actionMessage}]:[]],r);return kr(o,r)}function Fu(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),m=s.findIndex(n=>n.focused||n.selected),y=m===-1?0:th(m-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(n=>yo(n)),...s.slice(y,y+o).map(n=>yo(n))]}function yo(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(" "),m=o===-1?e.text:e.text.slice(0,o),y=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:m,style:{fg:"7aa2f7"}},{text:y}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Wu(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",m=e.status?` ${e.status}`:"",y=e.accentDot?` ${Bo("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=e.prBadge?e.prBadge.reduce((l,g)=>l+qe(g.text),0):0,d=t-qe(m)-qe(o)-n,h=e.focused&&!e.selected?Io(e.text,!0,r,se.panelBg):e.text,b=Ze(`${s}${h}`,Math.max(0,d)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let l=[{text:`${b}${m}${y}`},...e.prBadge];return{text:`${b}${m}${e.prBadge.map(_=>_.text).join("")}`,segments:l,tone:a}}return{text:`${b}${m}${y}`,tone:a}}function Nu(e){let t=e.map(s=>{let o=s.health>=1,m=parseInt(s.count,10),y=m>1?` (${m})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${y}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:se.success.fg}}):r.push({text:o.text,style:{fg:se.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function ju(e,t){return e.map(r=>r.active?yr(r.label,t,se.panelBg):$o(r.label,t,se.panelBg)).join(" ")}function Hu(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?$o(e.value,t,se.panelBg):e.value}`}}function Io(e,t,r,s){return t?yr(e,r,s):e}function mr(e,t,r,s){let o=Uu(s,e.tone??"default"),m=qu(e,r,o);if(s==="left"){if(e.fullBleed)return ue(Ze(m,t),r,o);let n=t-_r-wr;if(e.rightAlign){let h=qe(m),b=Math.max(0,n-h),a=`${" ".repeat(_r)}${" ".repeat(b)}${m}${" ".repeat(wr)}`;return ue(a,r,o)}let d=`${" ".repeat(_r)}${Ze(m,n)}${" ".repeat(wr)}`;return ue(d,r,o)}return s==="center"&&e.fullBleed?Ku(e,t,r,o):ue(Ze(` ${m}`,t),r,o)}function Uu(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function kr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Fe());return r}function Fe(){return{text:""}}function qu(e,t,r){return e.segments?e.segments.map(s=>xo(s,t,r)).join(""):e.text}function Ku(e,t,r,s){let o=" ".repeat(br),m=Math.max(0,t-br*2);if(!e.segments)return ue(`${o}${Ze(e.text,m)}${o}`,r,s);let y=Gu(e.segments,m),n=`${o}${y.map(d=>xo(d,r,s)).join("")}${o}`;return ue(n,r,s)}function xo(e,t,r){let s=e.href?`${Eo(e.href)}${e.text}${So}`:zu(e.text);return!t||!e.style?s:`${Ft(Qu(e.style,r))}${Ju(e.style)}${s}${xs}${Ft(r)}`}function zu(e){return e.replace(Du,t=>{let[r,s]=Vu(t);return`${Eo(r)}${r}${So}${s}`})}function Vu(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Eo(e){return`\x1B]8;;${e}\x1B\\`}function Gu(e,t){let r=Xu(e,t);return Yu(r,t)}function Xu(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let m=qe(o.text);if(m<=s){r.push(o),s-=m;continue}let y=Do(o.text,s);y.length>0&&r.push({...o,text:y}),s=0}return r}function Yu(e,t){let r=qe(Oo(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 Qu(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},m=r??t.fg,y=s??t.bg;return m&&(o.fg=m),y&&(o.bg=y),o}function Ju(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 Zu(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function Ao(e,t){let r=Math.max(0,t-qe(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function Ze(e,t){let r=qe(e);return r>=t?eh(e,t):e+" ".repeat(t-r)}function eh(e,t){if(t<=0)return"";if(qe(e)<=t)return e;let r=Mo(e);return Do(r,Math.max(0,t-1))+"\u2026"}function qe(e){let t=0;for(let r of Array.from(Mo(e)))t+=Lo(r);return t}function Do(e,t){let r="",s=0;for(let o of Array.from(e)){let m=Lo(o);if(s+m>t)break;r+=o,s+=m}return r}function Lo(e){let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65024&&t<=65039?0:t>=4352&&(t<=4447||t===9001||t===9002||t>=11904&&t<=42191&&t!==12351||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129791||t>=131072&&t<=262141)?2:1}function th(e,t,r){return Math.min(Math.max(e,t),r)}function Mo(e){return e.replace(Au,"").replace(xu,"")}function Oo(e){return e.map(t=>t.text).join("")}function ue(e,t,r){if(!t)return e;let s=Ft(r),o=e.replace(Eu,`${xs}${s}`);return`${s}${o}${xs}`}function Ft(e){let t=[];return e.fg&&t.push(`38;2;${vo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${vo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function vo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Bo(e,t,r){return Ds(e,t,se.success.fg,r)}function yr(e,t,r){return Ds(e,t,se.accent.fg,r)}function $o(e,t,r){return Ds(e,t,se.mutedfg.fg,r)}function Ds(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${Ft(o)}${e}${Ft(s)}`}var Ls=["Runners","Help"];function Ms(e,t){return ce.map(r=>{let s=be(r),o=e.runners?.[r]?.enabled!==!1,m=e.runners?.[r]?.path?.trim(),y=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:m&&m.length>0?m:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${y}`})}function Wo(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 No(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(Ls.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Os(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function jo(e,t,r,s){if(e.pathEdit)return rh({...e,pathEdit:e.pathEdit},t,r);let o=Ms(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let n=ce[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:n,value:t.runners?.[n]?.path??""}}}}if(!Os(r))return{kind:"noop",state:e};let m=ce[e.menuIndex]??"codex",y=t.runners?.[m]?.enabled!==!1;return y&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:sh(t,m,!y),state:{...e,message:`${be(m).displayName} ${y?"disabled":"enabled"}.`}}}function rh(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Fo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Os(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:ih(t,s,o.length>0?o:null),state:Fo({...e,message:o.length>0?`${be(s).displayName} executable saved.`:`${be(s).displayName} executable reset to default.`})}}return nh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function sh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function ih(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function Fo(e){let t={...e};return delete t.pathEdit,t}function Os(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
103
- `}function nh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var lh=oh(import.meta.url),dh=lh("terminal-kit"),uh=dh.terminal;async function qo(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=je(t);await kt(t);let s=await ke(r),o=gt(s),m=e.uiStateFile?await Ee({uiStateFile:e.uiStateFile}):null,y=Promise.resolve(),n=Promise.resolve(),d=await Wt(t,void 0,o),h=ar(Bn(m,s),d);d=await Wt(t,h,o);let b=()=>{},a={workspaceRoot:t,onUpdate:()=>b(),resolveSessionSpec:(g,_)=>gh(d,_,t)},w=e.ptyRuntime??await fo({...a,paths:r}),l=g=>{if(!e.uiStateFile)return;m=$n(m,g);let _=m;y=y.then(()=>Ce({uiStateFile:e.uiStateFile},_),()=>Ce({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(g=>{let _=e.terminal??uh,i={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:ar(h,d)},p=!1,u=!1,c=null,f=0,k=0,S=null,P=null,E=null,j=null,$=!1,D=0,x=!0,A=null,L=()=>{},z=w;b=()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},E||(E=setTimeout(()=>{E=null,i.mode==="main"&&L()},50)))};function X(B){return Bt(B,z.getViewState(B.selectedPtyTabId))}function W(B){return X(hh(B,d))}function q(B){return d.tasks.find(O=>O.id===B.selectedTaskId)??null}async function v(){await z.hydrateSessions?.(d.tasks.flatMap(B=>B.ptyTabs.map(O=>O.id)))}function C(){v().catch(()=>{}).then(()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},L())})}function T(B){let O=n.then(B,B);return n=O.then(()=>{},()=>{}),O}function R(B){let O=q(B),M=d.inspection,H=M&&M.taskId===O?.id?M:null,K=fh(H?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:ph(d),centerTabIds:Un(O,B),ptyTabIds:O?.ptyTabs.map(ee=>ee.id)??[],filePathIds:H?.filePaths??[],fileTreeRowIds:K.map(ee=>ee.path),fileTreeFileIds:K.filter(ee=>ee.kind==="file").map(ee=>ee.path),fileTreeDirectoryIds:K.filter(ee=>ee.kind==="directory").map(ee=>ee.path),diffPathIds:H?.diffPaths??[],diffPathRanges:[],fileLineCount:H?.selectedFile.lines.length??0,diffLineCount:H?.selectedDiff.lines.length??0,pageRows:Math.max(5,yt(_.width,_.height).height-Me.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:O?.repoTargets?.map(ee=>ee.repoId)??[]}}async function F(B){await Ks(r,B),s=B,o=gt(s),d={...d,enabledRunnerIds:o},i.mode==="main"?i={mode:"main",shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:tt(s)})}:i={...i,shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:tt(s)})}}async function N(B){let O=B.selectedTaskId;O&&await T(async()=>{let M=await Re(r,O);!M.ptyTabs.some(H=>H.id===B.activeTab)||M.selectedPtyTabId===B.activeTab||await re(r,{...M,selectedPtyTabId:B.activeTab})})}async function U(){let B=(i.mode==="main",i.shell);d=await Wt(t,B,o),i.mode==="main"?i={mode:"main",shell:W(i.shell)}:i={...i,shell:W(i.shell)}}async function V(B){let O=++D,M=Ko(d.tasks,B),H=d.inspection,K;if(M&&H?.taskId===M.id){let ee={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ge=await cn(M,H,ee);if(O!==D)return;K={...d,inspection:ge}}else if(K=await Wt(t,B,o),O!==D)return;d=K,i.mode==="main"&&(i={mode:"main",shell:W(i.shell)},l(i.shell),L())}async function te(B){let O=await Rh(B);i.mode==="main"&&(i={mode:"main",shell:W({...i.shell,workspaceBrowser:O,activeTab:i.shell.selectedPtyTabId??i.shell.activeTab,actionMessage:null})},L())}async function I(B){try{let O=W(B),M=q(O),H=O.selectedPtyTabId;if(M&&O.focusedRegion==="tasks"){let ge=M.ptyTabs.find(xe=>xe.kind==="agent")??null;ge?H=ge.id:(M=await ze(M),await U(),H=M.selectedPtyTabId)}M&&!H&&(M=await ze(M),await U(),H=M.selectedPtyTabId);let K=W({...O,activeTab:H??O.activeTab,selectedPtyTabId:H});if(!K.selectedTaskId||!H){i={mode:"main",shell:K},L();return}i={mode:"main",shell:Bt({...K,inputMode:"terminal"},z.getViewState(H))},l(i.shell);let ee=await z.ensureSession(K.selectedTaskId,H,Bs(yt(_.width,_.height)));u=$s(H),c=null,i={mode:"main",shell:Bt({...K,inputMode:"terminal"},ee)},l(i.shell)}catch(O){let M=O instanceof Error?O.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&$s(B.selectedPtyTabId)&&(await J(B.selectedTaskId,M).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:Wn(W(B),M)},l(i.shell)}L()}async function J(B,O){await T(async()=>{let M=await Re(r,B);await re(r,{...M,status:M.status==="running"?"draft":M.status,runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:O})})}async function Y(B,O,M){let H=W(B);if(!H.selectedTaskId)throw new Error("Select a task before creating a tab.");let K=await T(async()=>{let ee=await Re(r,H.selectedTaskId),ge=O??_h(ee,H.activeTab,H.preferredPtyTabKind),xe=Ho(ee,ge,M??void 0,s),St={...ee,ptyTabs:[...ee.ptyTabs,xe],selectedPtyTabId:xe.id};return await re(r,St),St});return await U(),W({...H,activeTab:K.selectedPtyTabId??H.activeTab,selectedPtyTabId:K.selectedPtyTabId,preferredPtyTabKind:K.ptyTabs.at(-1)?.kind??H.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${K.ptyTabs.at(-1)?.title??"tab"}`})}async function Z(B){let O=W(B);if(!O.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:M,nextSelectedTab:H}=await T(async()=>{let K=await Re(r,O.selectedTaskId),ee=K.ptyTabs.findIndex(Cr=>Cr.id===O.activeTab);if(ee===-1)throw new Error("Only PTY tabs can be closed.");let ge=K.ptyTabs[ee],xe=K.ptyTabs.filter(Cr=>Cr.id!==ge.id),St=xe[Math.min(ee,xe.length-1)]??xe[ee-1]??null;return await re(r,{...K,ptyTabs:xe,selectedPtyTabId:St?.id??null}),{closedTab:ge,nextSelectedTab:St}});return z.disposeSession(M.id),await U(),W({...O,activeTab:H?.id??(O.openInspectionKind?"inspection":O.activeTab),selectedPtyTabId:H?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${M.title}`})}async function _e(B){let O=W(B);if(!O.selectedTaskId)throw new Error("Select a task before creating or syncing a PR.");let M=await Et(r,O.selectedTaskId,{watch:!1});await U();let H=M.disposition==="created"?"Created PR":M.disposition==="discovered"?"Discovered PR":"Synced PR";return W({...O,focusedRegion:"inspector",inspectionMode:"review",actionMessage:`${H}: #${M.prNumber} ${M.url}`})}async function we(B){let O=W(B);if(!O.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let M=q(O),H;if(M?.type==="project"&&M.repoTargets?.length){let K=await Ui(r,O.selectedTaskId);await U();let ee=K.synced+K.discovered+K.notFound;H=K.discovered>0?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""} \xB7 ${K.synced} refreshed`:`Refreshed ${K.synced}/${ee} targets`}else{let{disposition:K,task:ee}=await Vr(r,O.selectedTaskId);await U(),H=K==="not_found"?`No PR found for ${ee.branch}`:K==="discovered"?`Discovered PR: #${ee.pullRequest.number} ${ee.pullRequest.url??""}`:`Refreshed checks: ${ee.pullRequest.requiredChecks.length} reported`}return W({...O,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:H})}async function Ke(){if($||i.mode!=="main"||!i.shell.selectedTaskId)return;let B=i.shell.selectedTaskId,M=!!(d.tasks.find(H=>H.id===B)??null)?.pullRequest.number;$=!0;try{let{disposition:H,task:K}=await Vr(r,B);if(i.mode!=="main"||i.shell.selectedTaskId!==B)return;d=await Wt(t,i.shell,o),i={mode:"main",shell:W({...i.shell,actionMessage:H==="discovered"&&!M?`Discovered PR: #${K.pullRequest.number} ${K.pullRequest.url??""}`:i.shell.actionMessage})},L()}catch{}finally{$=!1}}async function Ie(B){let O=W(B);if(!O.selectedTaskId)throw new Error("Select a task before merging a PR.");let M=await At(r,O.selectedTaskId,{preserveWorktree:!0});return await U(),W({...O,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"merge",actionMessage:`Merged PR #${M.prNumber}; worktree preserved`})}async function We(B){let O=W(B);if(!O.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:M,task:H}=await T(async()=>{let K=await Re(r,O.selectedTaskId),ee=await wn(r,O.selectedTaskId);return{taskBeforeClose:K,task:ee}});for(let K of M.ptyTabs)z.disposeSession(K.id);return await U(),W({...O,selectedActionId:"close-task",actionMessage:H.cleanup.preservedWorktree?`Archived task ${H.id}; worktree preserved`:`Archived task ${H.id}`})}async function ze(B){let O=B.ptyTabs.find(K=>K.kind==="agent")??null;if(O){let K={...B,selectedPtyTabId:O.id};return await T(async()=>{let ee=await Re(r,B.id),ge=ee.ptyTabs.find(xe=>xe.kind==="agent")??null;ge&&await re(r,{...ee,selectedPtyTabId:ge.id})}),K}let M=Ho(B,"agent",void 0,s),H={...B,ptyTabs:[...B.ptyTabs,M],selectedPtyTabId:M.id};return await T(async()=>{let K=await Re(r,B.id),ee=K.ptyTabs.find(ge=>ge.kind==="agent")??null;if(ee){await re(r,{...K,selectedPtyTabId:ee.id});return}await re(r,{...K,ptyTabs:[...K.ptyTabs,M],selectedPtyTabId:M.id})}),H}L=()=>{Vo();let B=yt(_.width,_.height),O=i.mode==="main"?Po(B,Xn(W(i.shell),d),{centerOnly:i.shell.centerZoomed}):i.variant==="boot"?To(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="pause"?Ro(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="options"?Es(B,{menuIndex:i.menuIndex,optionsMenuItems:Ls}):i.variant==="runners"?Es(B,{menuIndex:Nt(i).menuIndex,optionsMenuItems:Ms(s,Nt(i)),optionsMessage:Wo(Nt(i)),optionsSubtitle:"Runners"}):Co(B);x&&(_.moveTo(1,1),_.eraseDisplayBelow(),x=!1),_.noFormat(bh(O)),_.hideCursor(!0)};function Vo(){let B=i.mode==="main"&&i.shell.inputMode==="terminal"?"terminal":"control";B!==A&&(A=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let Go=()=>{process.stdout.off("resize",Hs),_.removeListener("key",Ws),_.removeListener("unknown",Ns),_.removeListener("mouse",js),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),E&&(clearTimeout(E),E=null),j&&(clearInterval(j),j=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Tr=B=>{Go(),g(B)},Xo=async()=>{if(i.mode!=="main"||p)return;let B=i.shell,O=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){i={mode:"main",shell:W({...B,taskPromptError:"Select a workspace first."})},L();return}if(O.length===0){i={mode:"main",shell:W({...B,taskPromptError:"Task prompt cannot be empty."})},L();return}p=!0,i={mode:"main",shell:W({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},L();let M=null;try{M=await wh(r,B.selectedRepoId,B.selectedWorkspaceId,O,B.selectedRunner),await U();let H=W({...i.shell,selectedRepoId:M.repoId,selectedWorkspaceId:M.workspaceId,selectedTaskId:M.id,selectedPtyTabId:M.selectedPtyTabId,selectedLeftItemId:`task:${M.id}`,activeTab:M.selectedPtyTabId??"agent",inputMode:"terminal",taskPromptInput:null,taskPromptError:null,actionMessage:null}),K=await z.ensureSession(M.id,H.selectedPtyTabId??zo(M,"agent"),Bs(yt(_.width,_.height)));u=$s(H.selectedPtyTabId),i={mode:"main",shell:Bt(H,K)},l(i.shell)}catch(H){H instanceof vr&&(M=H.task);let K=H instanceof Error?H.message:"Failed to create task.";M&&(await re(r,{...M,status:"draft",runnerSession:{...M.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:K}).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:W({...i.shell,inputMode:"control",selectedTaskId:M?.id??i.shell.selectedTaskId,selectedPtyTabId:M?.selectedPtyTabId??i.shell.selectedPtyTabId,selectedLeftItemId:M?`task:${M.id}`:i.shell.selectedLeftItemId,activeTab:M?.selectedPtyTabId??i.shell.activeTab,taskPromptInput:M?null:"",taskPromptError:K,actionMessage:null})}}finally{p=!1,L()}},Yo=B=>{if(i.mode!=="main")return;let O=i.shell;if(O.taskPromptInput!==null){if(B==="ESCAPE"){i={mode:"main",shell:W({...O,taskPromptInput:null,taskPromptError:null,actionMessage:null})},L();return}if(Je(B)){Xo();return}if(B==="BACKSPACE"){i={mode:"main",shell:W({...O,taskPromptInput:O.taskPromptInput.slice(0,-1),taskPromptError:null})},L();return}if(B==="CTRL_R"){i={mode:"main",shell:W({...O,selectedRunner:ps(O.selectedRunner,o),taskPromptError:null})},L();return}Nn(B)&&(i={mode:"main",shell:W({...O,taskPromptInput:`${O.taskPromptInput}${B}`,taskPromptError:null})},L())}},Qo=B=>{if(i.mode!=="main")return;let O=i.shell.workspaceBrowser;if(O){if(B==="ESCAPE"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,actionMessage:null})},L();return}if(B==="UP"||B==="k"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...O,selectedIndex:Math.max(0,O.selectedIndex-1),error:null}})},L();return}if(B==="DOWN"||B==="j"){let M=Math.max(0,O.entries.length-1);i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...O,selectedIndex:Math.min(M,O.selectedIndex+1),error:null}})},L();return}if(B==="LEFT"||B==="h"){te(Fs.dirname(O.cwd)).catch(M=>{let H=M instanceof Error?M.message:"Failed to open parent directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...O,error:H}})},L()});return}if(B==="RIGHT"||B==="l"||Je(B)){let M=O.entries[O.selectedIndex]??null;if(!M)return;if((B==="RIGHT"||B==="l")&&(M.kind==="directory"||M.kind==="repo")){te(M.path).catch(H=>{let K=H instanceof Error?H.message:"Failed to open directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...O,error:K}})},L()});return}Dt(r,M.path).then(async H=>{await U();let K=H.repos[0]??null;i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${H.workspace.id}`,selectedWorkspaceId:H.workspace.id,selectedRepoId:K?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${H.workspace.name??H.workspace.id}`})},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to add workspace.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...O,error:K}})},L()})}}},Ws=B=>{let O=typeof B=="string"?B:"";if(i.mode==="main"&&i.shell.taskPromptInput!==null){Yo(O);return}if(i.mode==="main"&&i.shell.workspaceBrowser!==null){Qo(O);return}if(i.mode==="main"){let M=Fn(i.shell,O,R(i.shell));if(M.exit){Tr(0);return}if(M.detachTerminal){z.detach(),i={mode:"main",shell:W(M.state)},l(i.shell),L();return}if(i.shell.inputMode==="terminal"){if(M.changed){i={mode:"main",shell:W(M.state)},l(i.shell),L();return}if(u&&Je(O)){u=!1;return}u&&(u=!1),c=yh(O)?{key:O,at:Date.now()}:null;let H=vh(O,i.shell.terminal.scrolledBack??!1);if(H!==0){Rr(H);return}z.writeKey(O);return}if(O==="CTRL_C"){Tr(0);return}if(O==="?"&&i.shell.inputMode==="control"){i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell},x=!0,L();return}if(M.pause){i={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:W(M.state)},x=!0,L();return}if(M.beginTaskPrompt){i={mode:"main",shell:W(M.state)},l(i.shell),L();return}if(M.openWorkspaceBrowser){te(t).catch(H=>{let K=H instanceof Error?H.message:"Failed to browse workspaces.";i={mode:"main",shell:W({...M.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:K}})},L()});return}if(M.createPtyTab){Y(M.state,M.createPtyTabKind,M.createPtyTabRunner).then(H=>{I(H)}).catch(H=>{let K=H instanceof Error?H.message:"Failed to create tab.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.closePtyTab){Z(M.state).then(H=>{i={mode:"main",shell:H},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to close tab.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.syncPullRequest){_e(M.state).then(H=>{i={mode:"main",shell:H},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to create or sync PR.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.refreshPullRequestChecks){we(M.state).then(H=>{i={mode:"main",shell:H},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to refresh PR checks.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.mergeTask){Ie(M.state).then(H=>{i={mode:"main",shell:H},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to merge PR.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.closeTask){We(M.state).then(H=>{i={mode:"main",shell:H},l(i.shell),L()}).catch(H=>{let K=H instanceof Error?H.message:"Failed to close task.";i={mode:"main",shell:W({...M.state,actionMessage:K})},L()});return}if(M.attachTerminal){I(M.state);return}if(M.refreshInspection){i={mode:"main",shell:W(M.state)},l(i.shell),L(),V(i.shell).catch(H=>{let K=H instanceof Error?H.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:K})},L()});return}M.changed&&(i={mode:"main",shell:W(M.state)},N(i.shell).catch(()=>{}),l(i.shell),L());return}if(i.variant==="help"){i.viaOptions&&i.parentVariant?i={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:i.shell,parentVariant:i.parentVariant}:i.parentVariant?i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell}:i={mode:"main",shell:W(i.shell)},x=!0,L();return}if(i.variant==="options"){Jo(O);return}if(i.variant==="runners"){Zo(O);return}if(i.optionsMessage){(O==="ESCAPE"||Je(O))&&(i={...i,optionsMessage:null},L());return}if(O==="UP"||O==="k"){i={...i,menuIndex:Math.max(0,i.menuIndex-1)},L();return}if(O==="DOWN"||O==="j"){i={...i,menuIndex:Math.min(2,i.menuIndex+1)},L();return}if(O==="ESCAPE"){i.variant==="pause"&&(i={mode:"main",shell:W(i.shell)},x=!0,L());return}if(Je(O)){if(i.menuIndex===0){i={mode:"main",shell:W({...i.shell,inputMode:"control"})},x=!0,L(),C();return}if(i.menuIndex===1){let M=i.variant==="boot"||i.variant==="pause"?i.variant:void 0;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...M!==void 0?{parentVariant:M}:{}},x=!0,L();return}Tr(0)}};function Jo(B){if(i.mode!=="overlay"||i.variant!=="options")return;let O=No(i.menuIndex,B);if(O.kind!=="noop"){if(O.kind==="render"){i={...i,menuIndex:O.menuIndex},L();return}if(O.kind==="back"){i.parentVariant&&(i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell},x=!0,L());return}if(O.kind==="help"){let M=i.parentVariant;i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell,viaOptions:!0,...M!==void 0?{parentVariant:M}:{}},x=!0,L();return}if(O.kind==="runners"){let M=i.parentVariant;i={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:i.shell,...M!==void 0?{parentVariant:M}:{}},x=!0,L()}}}function Zo(B){if(i.mode!=="overlay"||i.variant!=="runners")return;let O=jo(Nt(i),s,B,o);if(O.kind!=="noop"){if(O.kind==="back"){let M=i.parentVariant;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...M!==void 0?{parentVariant:M}:{}},x=!0,L();return}if(O.kind==="render"){i={...i,runnerOptions:O.state},L();return}F(O.config).then(()=>{i.mode!=="overlay"||i.variant!=="runners"||(i={...i,runnerOptions:O.state},L())}).catch(M=>{if(i.mode!=="overlay"||i.variant!=="runners")return;let H=M instanceof Error?M.message:"Failed to save runner option.";i={...i,runnerOptions:{...Nt(i),message:H}},L()})}}let Ns=B=>{let O=kh(B);if(i.mode!=="main"||i.shell.inputMode!=="terminal"||O.length===0)return;if(O.includes("")){z.detach(),u=!1,c=null,i={mode:"main",shell:W({...i.shell,inputMode:"control",actionMessage:null})},l(i.shell),L();return}let M=Sh(O);if(M!==0){Rr(M);return}if(u&&O!=="\r"&&O!==`
104
- `&&O!==`\r
105
- `&&(u=!1),Th(u,c,O)){u=!1;return}z.write(O)},js=B=>{if(i.mode!=="main")return;if(i.shell.inputMode==="control"){ta(Uo(B));return}let O=Uo(B);O!==0&&Rr(O)};function Rr(B){f+=B,!S&&(S=setTimeout(()=>{S=null;let O=f;f=0,O!==0&&(ea(O),L())},16))}function ea(B){z.scrollViewport(B),i={mode:"main",shell:X(i.shell)}}function ta(B){B!==0&&(k+=B,!P&&(P=setTimeout(()=>{P=null;let O=k;if(k=0,O===0||i.mode!=="main"||i.shell.inputMode!=="control")return;let M=Qe(i.shell,O,R(i.shell));if(M.changed){if(M.refreshInspection){i={mode:"main",shell:W(M.state)},l(i.shell),L(),V(i.shell).catch(H=>{let K=H instanceof Error?H.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:K})},L()});return}i={mode:"main",shell:W(M.state)},l(i.shell),L()}},16)))}let Hs=()=>{x=!0,i.mode==="main"&&i.shell.inputMode==="terminal"&&(z.resize(Bs(yt(_.width,_.height))),i={mode:"main",shell:X(i.shell)}),L()};process.stdout.on("resize",Hs),_.grabInput(!0),A="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",Ws),_.on("unknown",Ns),_.on("mouse",js),j=setInterval(()=>{Ke()},(s.github?.watchIntervalSeconds??10)*1e3),L()})}async function Wt(e,t,r){let s=je(e),[o,m,y]=await Promise.all([at(s),De(s),lt(s)]),n=Ko(y.tasks,t),d=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},h=n?await ln(n,d):null;return{workspaceRoot:e,workspaces:m.filter(b=>b.status==="active"),repos:o,tasks:y.tasks,inspection:h,...r?{enabledRunnerIds:r}:{}}}function Ko(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function hh(e,t){return ar(e,t)}function fh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let m=1;m<o.length;m+=1)if(r.has(o.slice(0,m).join("/")))return!1;return!0})}function ph(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`),r.kind==="project"&&t.push(`new-task-workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.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 gh(e,t,r){let s=e.tasks.find(m=>m.ptyTabs.some(y=>y.id===t))??null,o=s?.ptyTabs.find(m=>m.id===t)??null;return{cwd:s?.worktreePath??r,command:o?.kind==="agent"?mh(o):[]}}function mh(e){return e.command.length>0?e.command:["codex"]}function Nt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function _h(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function Ho(e,t,r,s={}){let o=r??e.runner,m=be(o),y=t==="agent"?m.defaultAgentTitle:"Terminal",n=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,d=new Set(e.ptyTabs.map(l=>l.id)),h=1,b=n;for(;d.has(b);)h+=1,b=`${n}-${h}`;let a=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:b,kind:t,...w?{runner:w}:{},title:h===1?y:`${y} ${h}`,command:t==="agent"?me(o,void 0,s):[],createdAt:a,updatedAt:a}}async function wh(e,t,r,s,o){let m=await ke(e);jt(o,m);let y=r?await Jt(e,r,s,{runner:o,config:m}):await It(e,t??"",s,{runner:o,config:m});try{let h=nt();await Q(ot(Ir(o,m).executable,{cwd:y.repoRoot,env:h}),["--help"],{cwd:y.repoRoot,env:h})}catch(h){let b=h instanceof Error?h.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:b};throw await re(e,a),new vr(b,a)}let n=zo(y.task,"agent"),d={...y.task,status:"running",selectedPtyTabId:n,runnerSession:{...y.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await re(e,d),await Ce({uiStateFile:e.uiStateFile},{...await Ee({uiStateFile:e.uiStateFile})??Be(),version:1,selectedRepoId:d.repoId,selectedWorkspaceId:d.workspaceId,selectedTaskId:d.id,selectedPtyTabId:d.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:d.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),d}var vr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function zo(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 Bs(e){return{columns:Math.max(20,e.width-Me.leftWidth-Me.rightWidth-Me.dividerWidth-br*2),rows:Math.max(5,e.height-Me.topRailHeight-5)}}function bh(e){return e.split(`
106
- `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function kh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function yh(e){return e.length===1||Je(e)||e==="BACKSPACE"||e==="TAB"}function $s(e){return typeof e=="string"&&new RegExp(`:(?:agent|${ce.join("|")})(?:-\\d+)?$`).test(e)}function vh(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 Uo(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function Sh(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 Th(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
95
+ `)}}),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{kr(t,{id:-1,ok:!1,error:"Malformed daemon request."});return}try{let o=this.handleRequest(s);kr(t,{id:s.id,ok:!0,...s.type==="ping"?{protocolVersion:xs}:{},...o?{view:o}:{}})}catch(o){let m=o instanceof Error?o.message:String(o);kr(t,{id:s.id,ok:!1,error:m})}}handleRequest(t){switch(t.type){case"ping":return null;case"ensureSession":return this.attachedTabId=t.tabId,this.runtime.ensureSession(t.taskId,t.tabId,t.size,t.spec);case"hydrateSession":return this.runtime.getViewState(t.tabId);case"write":return this.runtime.write(t.input),null;case"writeKey":return this.runtime.writeKey(t.key),null;case"scrollViewport":return this.runtime.scrollViewport(t.lines),this.runtime.getViewState(this.attachedTabId);case"resize":return this.runtime.resize(t.size),this.runtime.getViewState(this.attachedTabId);case"detach":return this.runtime.detach(),this.attachedTabId=null,null;case"disposeSession":return this.runtime.disposeSession(t.tabId),this.attachedTabId===t.tabId&&(this.attachedTabId=null),null;case"getViewState":return this.runtime.getViewState(t.tabId);case"shutdown":return setTimeout(()=>this.onShutdown?.(),0),null;default:return Au(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)kr(s,{type:"update",tabId:t,view:r})}};function Es(e){let t=wu("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:Tt.join(Su(),`craig-${t}.sock`),pidPath:Tt.join(e.runtimeDir,"pty-daemon.pid")}}async function Tu(e,t,r){if(await Ru(e.socketPath,1e3))return;await br(e.socketPath)&&(await So(e.socketPath),await _o(e.socketPath,1e3)),await br(e.socketPath)&&(await Iu(e),await _o(e.socketPath,1e3)),await Pu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:y,args:n}=Cu(s),l=bu(Tt.join(t.runtimeDir,"pty-daemon.log"),"a");_u(y,n,{cwd:s,detached:!0,stdio:["ignore",l,l],env:process.env}).unref()}let o=Date.now();for(;Date.now()-o<5e3;){if(await vo(e.socketPath))return;await As(50)}let m=await Is(Tt.join(t.runtimeDir,"pty-daemon.log"),"utf8").catch(()=>"");throw new Error(`Craig PTY daemon did not start.${m?`
96
+ ${m.slice(-2e3)}`:""}`)}async function vo(e){let t=await xu(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===xs}async function Ru(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await vo(e))return!0;await As(50)}return!1}function Cu(e){let t=process.argv[1];if(t?.endsWith(".ts"))return{command:Tt.resolve(Tt.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 Pu(e){let t=await Is(e.pidPath,"utf8").catch(()=>null);if(t){let r=Number(t.trim());if(Number.isInteger(r)&&r>0&&Co(r))return}await mt(e.socketPath,{force:!0}),await mt(e.pidPath,{force:!0})}async function br(e){let t=await Ro(e).catch(()=>null);return t?(t.end(),!0):!1}async function So(e){await To(e,{id:1,type:"shutdown"}).catch(()=>null)}async function Iu(e){let t=await Is(e.pidPath,"utf8").catch(()=>null),r=Number(t?.trim());if(!Number.isInteger(r)||r<=0||!Co(r)){await mt(e.socketPath,{force:!0});return}try{process.kill(r,"SIGTERM")}catch{await mt(e.socketPath,{force:!0})}}async function xu(e){return To(e,{id:1,type:"ping"})}function To(e,t){return new Promise((r,s)=>{let o=wo(e),m="",y=setTimeout(()=>{o.destroy(),s(new Error("Craig PTY daemon request timed out."))},500),n=()=>clearTimeout(y);o.setEncoding("utf8"),o.once("connect",()=>o.write(`${JSON.stringify(t)}
97
+ `)),o.once("error",l=>{n(),s(l)}),o.on("data",l=>{m+=String(l);let f=m.indexOf(`
98
+ `);if(f===-1)return;let k=m.slice(0,f);n(),o.end();try{r(JSON.parse(k))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>n())})}async function _o(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await br(e))return;await As(50)}}function Ro(e){return new Promise((t,r)=>{let s=wo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function Eu(e,t){return new Promise((r,s)=>{e.once("error",s),e.listen(t,r)})}function kr(e,t){if(!e.destroyed)try{e.write(`${JSON.stringify(t)}
99
+ `)}catch{}}function Co(e){try{return process.kill(e,0),!0}catch{return!1}}function As(e){return new Promise(t=>setTimeout(t,e))}function Au(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Du=[" \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 Ds(){return[...Du]}var Lu=["Start","Options","Exit"],Mu=["Resume","Options","Exit"],Sr=2,Tr=2,Rr=2,Ou=new RegExp("\x1B\\[[0-?]*[ -/]*[@-~]","g"),Bu=new RegExp("\x1B\\[(?:0)?m","g"),$u=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),Fu=/https?:\/\/[^\s<>"']+/g,Ls="\x1B[0m",xo="\x1B]8;;\x1B\\",se={panelBg:{bg:"0a0a0a",fg:"c0caf5"},panelMuted:{bg:"0a0a0a",fg:"565f89"},panelSelected:{bg:"1a1b26",fg:"c0caf5"},panelFocused:{bg:"1a1b26",fg:"7aa2f7"},divider:{bg:"0a0a0a",fg:"292e42"},rail:{bg:"0a0a0a",fg:"c0caf5"},overlay:{bg:"06060f",fg:"565f89"},overlayTitle:{bg:"06060f",fg:"565f89"},overlayLogo:{bg:"06060f",fg:"9ece6a"},overlaySubtitle:{bg:"06060f",fg:"41a6b5"},overlayMenuSelected:{bg:"06060f",fg:"7aa2f7"},accent:{fg:"7aa2f7"},success:{fg:"9ece6a"},pending:{fg:"e0af68"},error:{fg:"f7768e"},mutedfg:{fg:"565f89"},disabled:{fg:"3b4261"}};function Eo(e,t={}){return Os(e,{subtitle:"crAIg is that you?",menuItems:Lu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Ao(e,t={}){return Os(e,{subtitle:"Control mode is paused.",menuItems:Mu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}var yr=[" 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."],Wu=["Help"];function Ms(e,t={}){return Os(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Wu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Do(e,t={}){let r=t.color??!0,s=se.overlay,o=new Array(e.height).fill(ue(" ".repeat(e.width),r,s)),m=Ds(),y=Math.max(1,Math.floor((e.height-m.length-2-yr.length)/2));for(let k=0;k<m.length&&!(y+k>=e.height);k+=1)o[y+k]=ue($o(m[k]??"",e.width),r,se.overlayLogo);let n=Math.max(...yr.map(k=>k.length)),l=Math.max(0,Math.floor((e.width-n)/2)),f=y+m.length+2;for(let k=0;k<yr.length;k+=1){let a=f+k;if(a>=e.height)break;let w=yr[k]??"";o[a]=ue(rt(" ".repeat(l)+w,e.width),r,s)}return o.join(`
100
+ `)}function Lo(e,t,r={}){let s=r.color??!0,o=Be.leftWidth,m=Be.rightWidth,y=Be.dividerWidth,n=r.centerOnly??!1,l=n?e.width:e.width-o-m-y*2,f=e.height-Be.topRailHeight-1,k=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent} ${Ho(`\u25CF ${t.topRail.liveLabel}`,s,se.rail)}`,a=ue(rt(k,e.width),s,se.rail),w=Nu(t,o-Sr-Tr,f,s),c=ju(t,l,f,s),g=Uu(t,m,f,s),_=[];for(let p=0;p<f;p+=1){if(n){_.push(vr(c[p]??He(),l,s,"center"));continue}let h=vr(w[p]??He(),o,s,"left"),d=ue("\u2502",s,se.divider),u=vr(c[p]??He(),l,s,"center"),b=ue("\u2502",s,se.divider),S=vr(g[p]??He(),m,s,"right");_.push(`${h}${d}${u}${b}${S}`)}let i=ue(rt(` ${t.footerText}`,e.width),s,se.panelMuted);return[a,..._,i].join(`
101
+ `)}function Os(e,t){let r=new Array(e.height).fill(ue(" ".repeat(e.width),t.color,se.overlay)),s=Ds(),o=Math.max(...t.menuItems.map(f=>f.length)),m=t.menuItems.map((f,k)=>`${k===t.menuIndex?">":" "} ${f.padEnd(o)}`),y=t.optionsMessage?["",t.optionsMessage]:[],n=[...s,"",t.subtitle,"",...m,...y],l=Math.max(1,Math.floor((e.height-n.length)/2));for(let f=0;f<n.length;f+=1){let k=$o(n[f]??"",e.width);if(f<s.length){r[l+f]=ue(k,t.color,se.overlayLogo);continue}if(f===s.length+1){r[l+f]=ue(k,t.color,se.overlaySubtitle);continue}let a=f-(s.length+3),c=a>=0&&a<t.menuItems.length&&a===t.menuIndex?se.overlayMenuSelected:se.overlay;r[l+f]=ue(k,t.color,c)}return r.join(`
102
+ `)}function Nu(e,t,r,s){let o=zu(e.runners),m=1,y=e.leftTree.map(l=>Ku(l,t,s));return[...Cr(y,r-m),o]}function ju(e,t,r,s){let o=e.tabs.find(a=>a.active)?.label??"AGENT",m=nh(e.tabs),y=`${" ".repeat(m)}${Pr("\u2500".repeat(o.length+1),s,se.panelMuted)}`,n=[`${Pr(e.centerHeader.tabLabel,s,se.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),l=e.tabs.find(a=>a.active)?.id??"agent",f=e.centerHeader.tabLabel==="BROWSER"||!Vn(l)?e.centerTranscript.map(a=>({...a})):Hu(e),k=[{text:Vu(e.tabs,s)},{text:y,tone:"muted"},{text:n},He(),...f];return Cr(k,r)}function Hu(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},He(),{text:e.terminal.error},He(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(s=>s.active)?.id??"",r=t==="agent"||/:agent(?:-\d+)?$/.test(t)?"agent":"terminal";return e.terminal.rows.length===0?[{text:`Press Enter on the ${r.toUpperCase()} tab to attach a PTY.`}]:e.terminal.rows.map(s=>({text:jo(s.segments),segments:s.segments,fullBleed:!0}))}function Uu(e,t,r,s){let o=e.rightInspection?qu(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:Mo("CONTEXT",e.focusedRegion==="tasks",s,se.panelBg)},He(),...e.rightContext.map(m=>Gu(m,s)),...e.actionMessage?[He(),{text:e.actionMessage}]:[]],r);return Cr(o,r)}function qu(e,t){let r=e.slice(0,2),s=e.slice(2),o=Math.max(0,t-r.length),m=s.findIndex(n=>n.focused||n.selected),y=m===-1?0:ah(m-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(n=>Po(n)),...s.slice(y,y+o).map(n=>Po(n))]}function Po(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(" "),m=o===-1?e.text:e.text.slice(0,o),y=o===-1?"":e.text.slice(o);return{text:s,segments:[{text:t},{text:m,style:{fg:"7aa2f7"}},{text:y}],tone:r}}return e.color?{text:s,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:s,tone:r}}function Ku(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",m=e.status?` ${e.status}`:"",y=e.accentDot?` ${Ho("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=e.prBadge?e.prBadge.reduce((c,g)=>c+Ge(g.text),0):0,l=t-Ge(m)-Ge(o)-n,f=e.focused&&!e.selected?Mo(e.text,!0,r,se.panelBg):e.text,k=rt(`${s}${f}`,Math.max(0,l)),a=e.selected?"selected":e.muted?"muted":"default";if(e.prBadge){let c=[{text:`${k}${m}${y}`},...e.prBadge];return{text:`${k}${m}${e.prBadge.map(_=>_.text).join("")}`,segments:c,tone:a}}return{text:`${k}${m}${y}`,tone:a}}function zu(e){let t=e.map(s=>{let o=s.health>=1,m=parseInt(s.count,10),y=m>1?` (${m})`:"";return{text:`${o?"\u25CF":"\u25CB"} ${s.name}${y}`,active:o}}),r=[];for(let s=0;s<t.length;s++){let o=t[s];s>0&&r.push({text:" "}),o.active?r.push({text:o.text,style:{fg:se.success.fg}}):r.push({text:o.text,style:{fg:se.panelMuted.fg}})}return{text:t.map(s=>s.text).join(" "),segments:r,tone:"muted"}}function Vu(e,t){return e.map(r=>r.active?Pr(r.label,t,se.panelBg):Uo(r.label,t,se.panelBg)).join(" ")}function Gu(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Uo(e.value,t,se.panelBg):e.value}`}}function Mo(e,t,r,s){return t?Pr(e,r,s):e}function vr(e,t,r,s){let o=Xu(s,e.tone??"default"),m=Yu(e,r,o);if(s==="left"){if(e.fullBleed)return ue(rt(m,t),r,o);let n=t-Sr-Tr;if(e.rightAlign){let f=Ge(m),k=Math.max(0,n-f),a=`${" ".repeat(Sr)}${" ".repeat(k)}${m}${" ".repeat(Tr)}`;return ue(a,r,o)}let l=`${" ".repeat(Sr)}${rt(m,n)}${" ".repeat(Tr)}`;return ue(l,r,o)}return s==="center"&&e.fullBleed?Qu(e,t,r,o):ue(rt(` ${m}`,t),r,o)}function Xu(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function Cr(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(He());return r}function He(){return{text:""}}function Yu(e,t,r){return e.segments?e.segments.map(s=>Oo(s,t,r)).join(""):e.text}function Qu(e,t,r,s){let o=" ".repeat(Rr),m=Math.max(0,t-Rr*2);if(!e.segments)return ue(`${o}${rt(e.text,m)}${o}`,r,s);let y=eh(e.segments,m),n=`${o}${y.map(l=>Oo(l,r,s)).join("")}${o}`;return ue(n,r,s)}function Oo(e,t,r){let s=e.href?`${Bo(e.href)}${e.text}${xo}`:Ju(e.text);return!t||!e.style?s:`${qt(sh(e.style,r))}${ih(e.style)}${s}${Ls}${qt(r)}`}function Ju(e){return e.replace(Fu,t=>{let[r,s]=Zu(t);return`${Bo(r)}${r}${xo}${s}`})}function Zu(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function Bo(e){return`\x1B]8;;${e}\x1B\\`}function eh(e,t){let r=th(e,t);return rh(r,t)}function th(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let m=Ge(o.text);if(m<=s){r.push(o),s-=m;continue}let y=Fo(o.text,s);y.length>0&&r.push({...o,text:y}),s=0}return r}function rh(e,t){let r=Ge(jo(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 sh(e,t){let r=e.inverse?e.bg??t.bg:e.fg,s=e.inverse?e.fg??t.fg:e.bg,o={},m=r??t.fg,y=s??t.bg;return m&&(o.fg=m),y&&(o.bg=y),o}function ih(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 nh(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function $o(e,t){let r=Math.max(0,t-Ge(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function rt(e,t){let r=Ge(e);return r>=t?oh(e,t):e+" ".repeat(t-r)}function oh(e,t){if(t<=0)return"";if(Ge(e)<=t)return e;let r=No(e);return Fo(r,Math.max(0,t-1))+"\u2026"}function Ge(e){let t=0;for(let r of Array.from(No(e)))t+=Wo(r);return t}function Fo(e,t){let r="",s=0;for(let o of Array.from(e)){let m=Wo(o);if(s+m>t)break;r+=o,s+=m}return r}function Wo(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 ah(e,t,r){return Math.min(Math.max(e,t),r)}function No(e){return e.replace($u,"").replace(Ou,"")}function jo(e){return e.map(t=>t.text).join("")}function ue(e,t,r){if(!t)return e;let s=qt(r),o=e.replace(Bu,`${Ls}${s}`);return`${s}${o}${Ls}`}function qt(e){let t=[];return e.fg&&t.push(`38;2;${Io(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Io(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Io(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Ho(e,t,r){return Bs(e,t,se.success.fg,r)}function Pr(e,t,r){return Bs(e,t,se.accent.fg,r)}function Uo(e,t,r){return Bs(e,t,se.mutedfg.fg,r)}function Bs(e,t,r,s){if(!t)return e;let o=s.bg?{fg:r,bg:s.bg}:{fg:r};return`${qt(o)}${e}${qt(s)}`}Ae();var $s=["Runners","Help"];function Fs(e,t){return ce.map(r=>{let s=be(r),o=e.runners?.[r]?.enabled!==!1,m=e.runners?.[r]?.path?.trim(),y=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:m&&m.length>0?m:`default (${s.executable})`;return`${s.displayName} ${o?"enabled":"disabled"} ${y}`})}function Ko(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 zo(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min($s.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Ws(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function Vo(e,t,r,s){if(e.pathEdit)return ch({...e,pathEdit:e.pathEdit},t,r);let o=Fs(t,e).length;if(r==="UP"||r==="k")return{kind:"render",state:{...e,menuIndex:Math.max(0,e.menuIndex-1),message:null}};if(r==="DOWN"||r==="j")return{kind:"render",state:{...e,menuIndex:Math.min(o-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let n=ce[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:n,value:t.runners?.[n]?.path??""}}}}if(!Ws(r))return{kind:"noop",state:e};let m=ce[e.menuIndex]??"codex",y=t.runners?.[m]?.enabled!==!1;return y&&s.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:lh(t,m,!y),state:{...e,message:`${be(m).displayName} ${y?"disabled":"enabled"}.`}}}function ch(e,t,r){if(r==="ESCAPE")return{kind:"render",state:qo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Ws(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:dh(t,s,o.length>0?o:null),state:qo({...e,message:o.length>0?`${be(s).displayName} executable saved.`:`${be(s).displayName} executable reset to default.`})}}return uh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function lh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function dh(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function qo(e){let t={...e};return delete t.pathEdit,t}function Ws(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
103
+ `}function uh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var gh=hh(import.meta.url),mh=gh("terminal-kit"),_h=mh.terminal;async function Yo(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=Ke(t);await vt(t);let s=await ye(r),o=_t(s),m=e.uiStateFile?await De({uiStateFile:e.uiStateFile}):null,y=Promise.resolve(),n=Promise.resolve(),l=await Kt(t,void 0,o),f=fr(Hn(m,s),l);l=await Kt(t,f,o);let k=()=>{},a={workspaceRoot:t,onUpdate:()=>k(),resolveSessionSpec:(g,_)=>yh(l,_,t)},w=e.ptyRuntime??await ko({...a,paths:r}),c=g=>{if(!e.uiStateFile)return;m=Un(m,g);let _=m;y=y.then(()=>Pe({uiStateFile:e.uiStateFile},_),()=>Pe({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(g=>{let _=e.terminal??_h,i={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:fr(f,l)},p=!1,h=!1,d=null,u=0,b=0,S=null,P=null,E=null,H=null,$=!1,D=0,x=!0,A=null,L=()=>{},z=w;k=()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},E||(E=setTimeout(()=>{E=null,i.mode==="main"&&L()},50)))};function X(B){return Ht(B,z.getViewState(B.selectedPtyTabId))}function W(B){return X(wh(B,l))}function q(B){return l.tasks.find(M=>M.id===B.selectedTaskId)??null}async function v(){await z.hydrateSessions?.(l.tasks.flatMap(B=>B.ptyTabs.map(M=>M.id)))}function C(){v().catch(()=>{}).then(()=>{i.mode==="main"&&(i={mode:"main",shell:X(i.shell)},L())})}function T(B){let M=n.then(B,B);return n=M.then(()=>{},()=>{}),M}function R(B){let M=q(B),O=l.inspection,N=O&&O.taskId===M?.id?O:null,K=kh(N?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:bh(l),centerTabIds:Xn(M,B),ptyTabIds:M?.ptyTabs.map(ee=>ee.id)??[],filePathIds:N?.filePaths??[],fileTreeRowIds:K.map(ee=>ee.path),fileTreeFileIds:K.filter(ee=>ee.kind==="file").map(ee=>ee.path),fileTreeDirectoryIds:K.filter(ee=>ee.kind==="directory").map(ee=>ee.path),diffPathIds:N?.diffPaths??[],diffPathRanges:[],fileLineCount:N?.selectedFile.lines.length??0,diffLineCount:N?.selectedDiff.lines.length??0,pageRows:Math.max(5,St(_.width,_.height).height-Be.topRailHeight-9),enabledRunnerIds:o,projectTargetIds:M?.repoTargets?.map(ee=>ee.repoId)??[]}}async function F(B){await Ys(r,B),s=B,o=_t(s),l={...l,enabledRunnerIds:o},i.mode==="main"?i={mode:"main",shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:it(s)})}:i={...i,shell:W({...i.shell,selectedRunner:o.includes(i.shell.selectedRunner)?i.shell.selectedRunner:it(s)})}}async function j(B){let M=B.selectedTaskId;M&&await T(async()=>{let O=await Ce(r,M);!O.ptyTabs.some(N=>N.id===B.activeTab)||O.selectedPtyTabId===B.activeTab||await re(r,{...O,selectedPtyTabId:B.activeTab})})}async function U(){let B=(i.mode==="main",i.shell);l=await Kt(t,B,o),i.mode==="main"?i={mode:"main",shell:W(i.shell)}:i={...i,shell:W(i.shell)}}async function V(B){let M=++D,O=Qo(l.tasks,B),N=l.inspection,K;if(O&&N?.taskId===O.id){let ee={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ge=await pn(O,N,ee);if(M!==D)return;K={...l,inspection:ge}}else if(K=await Kt(t,B,o),M!==D)return;l=K,i.mode==="main"&&(i={mode:"main",shell:W(i.shell)},c(i.shell),L())}async function te(B){let M=await Ah(B);i.mode==="main"&&(i={mode:"main",shell:W({...i.shell,workspaceBrowser:M,activeTab:i.shell.selectedPtyTabId??i.shell.activeTab,actionMessage:null})},L())}async function I(B){try{let M=W(B),O=q(M),N=M.selectedPtyTabId;if(O&&M.focusedRegion==="tasks"){let ge=O.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ge?N=ge.id:(O=await Us(O),await U(),N=O.selectedPtyTabId)}O&&!N&&(O=await Us(O),await U(),N=O.selectedPtyTabId);let K=W({...M,activeTab:N??M.activeTab,selectedPtyTabId:N});if(!K.selectedTaskId||!N){i={mode:"main",shell:K},L();return}i={mode:"main",shell:Ht({...K,inputMode:"terminal"},z.getViewState(N))},c(i.shell);let ee=await z.ensureSession(K.selectedTaskId,N,Ns(St(_.width,_.height)));h=js(N),d=null,i={mode:"main",shell:Ht({...K,inputMode:"terminal"},ee)},c(i.shell)}catch(M){let O=M instanceof Error?M.message:"Failed to start PTY.";B.selectedTaskId&&B.selectedPtyTabId&&js(B.selectedPtyTabId)&&(await J(B.selectedTaskId,O).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:Kn(W(B),O)},c(i.shell)}L()}async function J(B,M){await T(async()=>{let O=await Ce(r,B);await re(r,{...O,status:O.status==="running"?"draft":O.status,runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:M})})}async function Y(B,M,O){let N=W(B);if(!N.selectedTaskId)throw new Error("Select a task before creating a tab.");let K=await T(async()=>{let ee=await Ce(r,N.selectedTaskId),ge=M??Sh(ee,N.activeTab,N.preferredPtyTabKind),Ee=Go(ee,ge,O??void 0,s),Rt={...ee,ptyTabs:[...ee.ptyTabs,Ee],selectedPtyTabId:Ee.id};return await re(r,Rt),Rt});return await U(),W({...N,activeTab:K.selectedPtyTabId??N.activeTab,selectedPtyTabId:K.selectedPtyTabId,preferredPtyTabKind:K.ptyTabs.at(-1)?.kind??N.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${K.ptyTabs.at(-1)?.title??"tab"}`})}async function Z(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:O,nextSelectedTab:N}=await T(async()=>{let K=await Ce(r,M.selectedTaskId),ee=K.ptyTabs.findIndex(Dr=>Dr.id===M.activeTab);if(ee===-1)throw new Error("Only PTY tabs can be closed.");let ge=K.ptyTabs[ee],Ee=K.ptyTabs.filter(Dr=>Dr.id!==ge.id),Rt=Ee[Math.min(ee,Ee.length-1)]??Ee[ee-1]??null;return await re(r,{...K,ptyTabs:Ee,selectedPtyTabId:Rt?.id??null}),{closedTab:ge,nextSelectedTab:Rt}});return z.disposeSession(O.id),await U(),W({...M,activeTab:N?.id??(M.openInspectionKind?"inspection":M.activeTab),selectedPtyTabId:N?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${O.title}`})}async function we(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before creating or syncing a PR.");let O=await Mt(r,M.selectedTaskId,{watch:!1});await U();let N=O.disposition==="created"?"Created PR":O.disposition==="discovered"?"Discovered PR":"Synced PR";return W({...M,focusedRegion:"inspector",inspectionMode:"review",actionMessage:`${N}: #${O.prNumber} ${O.url}`})}async function ke(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let O=q(M),N;if(O?.type==="project"&&O.repoTargets?.length){let K=await Gi(r,M.selectedTaskId);await U();let ee=K.synced+K.discovered+K.notFound;N=K.discovered>0?`Discovered ${K.discovered} PR${K.discovered!==1?"s":""} \xB7 ${K.synced} refreshed`:`Refreshed ${K.synced}/${ee} targets`}else{let{disposition:K,task:ee}=await Zr(r,M.selectedTaskId);await U(),N=K==="not_found"?`No PR found for ${ee.branch}`:K==="discovered"?`Discovered PR: #${ee.pullRequest.number} ${ee.pullRequest.url??""}`:`Refreshed checks: ${ee.pullRequest.requiredChecks.length} reported`}return W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:N})}async function Xe(){if($||i.mode!=="main"||!i.shell.selectedTaskId)return;let B=i.shell.selectedTaskId,O=!!(l.tasks.find(N=>N.id===B)??null)?.pullRequest.number;$=!0;try{let{disposition:N,task:K}=await Zr(r,B);if(i.mode!=="main"||i.shell.selectedTaskId!==B)return;l=await Kt(t,i.shell,o),i={mode:"main",shell:W({...i.shell,actionMessage:N==="discovered"&&!O?`Discovered PR: #${K.pullRequest.number} ${K.pullRequest.url??""}`:i.shell.actionMessage})},L()}catch{}finally{$=!1}}async function xe(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before merging a PR.");let O=await Ot(r,M.selectedTaskId,{preserveWorktree:!0});return await U(),W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"merge",actionMessage:`Merged PR #${O.prNumber}; worktree preserved`})}async function Ue(B){let M=W(B);if(!M.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:O,task:N}=await T(async()=>{let K=await Ce(r,M.selectedTaskId),ee=await Tn(r,M.selectedTaskId);return{taskBeforeClose:K,task:ee}});for(let K of O.ptyTabs)z.disposeSession(K.id);return await U(),W({...M,selectedActionId:"close-task",actionMessage:N.cleanup.preservedWorktree?`Archived task ${N.id}; worktree preserved`:`Archived task ${N.id}`})}async function st(B){let M=W(B);if(!M.selectedWorkspaceId)throw new Error("Select a workspace before removing it.");if((await Ne(r,{workspaceId:M.selectedWorkspaceId,includeClosed:!0})).tasks.length>0)throw new Error(`Cannot remove workspace ${M.selectedWorkspaceId} while task records still reference it.`);await $t(r,M.selectedWorkspaceId);let N=await Ft(r,M.selectedWorkspaceId);return await U(),W({...M,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null,selectedPtyTabId:null,selectedLeftItemId:null,actionMessage:`Removed workspace ${N.workspaceId}`})}async function Us(B){let M=B.ptyTabs.find(K=>K.kind==="agent")??null;if(M){let K={...B,selectedPtyTabId:M.id};return await T(async()=>{let ee=await Ce(r,B.id),ge=ee.ptyTabs.find(Ee=>Ee.kind==="agent")??null;ge&&await re(r,{...ee,selectedPtyTabId:ge.id})}),K}let O=Go(B,"agent",void 0,s),N={...B,ptyTabs:[...B.ptyTabs,O],selectedPtyTabId:O.id};return await T(async()=>{let K=await Ce(r,B.id),ee=K.ptyTabs.find(ge=>ge.kind==="agent")??null;if(ee){await re(r,{...K,selectedPtyTabId:ee.id});return}await re(r,{...K,ptyTabs:[...K.ptyTabs,O],selectedPtyTabId:O.id})}),N}L=()=>{Zo();let B=St(_.width,_.height),M=i.mode==="main"?Lo(B,to(W(i.shell),l),{centerOnly:i.shell.centerZoomed}):i.variant==="boot"?Eo(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="pause"?Ao(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="options"?Ms(B,{menuIndex:i.menuIndex,optionsMenuItems:$s}):i.variant==="runners"?Ms(B,{menuIndex:zt(i).menuIndex,optionsMenuItems:Fs(s,zt(i)),optionsMessage:Ko(zt(i)),optionsSubtitle:"Runners"}):Do(B);x&&(_.moveTo(1,1),_.eraseDisplayBelow(),x=!1),_.noFormat(Rh(M)),_.hideCursor(!0)};function Zo(){let B=i.mode==="main"&&i.shell.inputMode==="terminal"?"terminal":"control";B!==A&&(A=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let ea=()=>{process.stdout.off("resize",Vs),_.removeListener("key",qs),_.removeListener("unknown",Ks),_.removeListener("mouse",zs),S&&(clearTimeout(S),S=null),P&&(clearTimeout(P),P=null),E&&(clearTimeout(E),E=null),H&&(clearInterval(H),H=null),z.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},Er=B=>{ea(),g(B)},ta=async()=>{if(i.mode!=="main"||p)return;let B=i.shell,M=B.taskPromptInput?.trim()??"";if(!B.selectedRepoId&&!B.selectedWorkspaceId){i={mode:"main",shell:W({...B,taskPromptError:"Select a workspace first."})},L();return}if(M.length===0){i={mode:"main",shell:W({...B,taskPromptError:"Task prompt cannot be empty."})},L();return}p=!0,i={mode:"main",shell:W({...B,actionMessage:`Creating ${B.selectedRunner} task in ${B.selectedWorkspaceId??B.selectedRepoId}...`})},L();let O=null;try{O=await Th(r,B.selectedRepoId,B.selectedWorkspaceId,M,B.selectedRunner),await U();let N=W({...i.shell,selectedRepoId:O.repoId,selectedWorkspaceId:O.workspaceId,selectedTaskId:O.id,selectedPtyTabId:O.selectedPtyTabId,selectedLeftItemId:`task:${O.id}`,activeTab:O.selectedPtyTabId??"agent",inputMode:"terminal",taskPromptInput:null,taskPromptError:null,actionMessage:null}),K=await z.ensureSession(O.id,N.selectedPtyTabId??Jo(O,"agent"),Ns(St(_.width,_.height)));h=js(N.selectedPtyTabId),i={mode:"main",shell:Ht(N,K)},c(i.shell)}catch(N){N instanceof Ir&&(O=N.task);let K=N instanceof Error?N.message:"Failed to create task.";O&&(await re(r,{...O,status:"draft",runnerSession:{...O.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:K}).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:W({...i.shell,inputMode:"control",selectedTaskId:O?.id??i.shell.selectedTaskId,selectedPtyTabId:O?.selectedPtyTabId??i.shell.selectedPtyTabId,selectedLeftItemId:O?`task:${O.id}`:i.shell.selectedLeftItemId,activeTab:O?.selectedPtyTabId??i.shell.activeTab,taskPromptInput:O?null:"",taskPromptError:K,actionMessage:null})}}finally{p=!1,L()}},ra=B=>{if(i.mode!=="main")return;let M=i.shell;if(M.taskPromptInput!==null){if(B==="ESCAPE"){i={mode:"main",shell:W({...M,taskPromptInput:null,taskPromptError:null,actionMessage:null})},L();return}if(tt(B)){ta();return}if(B==="BACKSPACE"){i={mode:"main",shell:W({...M,taskPromptInput:M.taskPromptInput.slice(0,-1),taskPromptError:null})},L();return}if(B==="CTRL_R"){i={mode:"main",shell:W({...M,selectedRunner:ws(M.selectedRunner,o),taskPromptError:null})},L();return}zn(B)&&(i={mode:"main",shell:W({...M,taskPromptInput:`${M.taskPromptInput}${B}`,taskPromptError:null})},L())}},sa=B=>{if(i.mode!=="main")return;let M=i.shell.workspaceBrowser;if(M){if(B==="ESCAPE"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,actionMessage:null})},L();return}if(B==="UP"||B==="k"){i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.max(0,M.selectedIndex-1),error:null}})},L();return}if(B==="DOWN"||B==="j"){let O=Math.max(0,M.entries.length-1);i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,selectedIndex:Math.min(O,M.selectedIndex+1),error:null}})},L();return}if(B==="LEFT"||B==="h"){te(Hs.dirname(M.cwd)).catch(O=>{let N=O instanceof Error?O.message:"Failed to open parent directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:N}})},L()});return}if(B==="RIGHT"||B==="l"||tt(B)){let O=M.entries[M.selectedIndex]??null;if(!O)return;if((B==="RIGHT"||B==="l")&&(O.kind==="directory"||O.kind==="repo")){te(O.path).catch(N=>{let K=N instanceof Error?N.message:"Failed to open directory.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:K}})},L()});return}Bt(r,O.path).then(async N=>{await U();let K=N.repos[0]??null;i={mode:"main",shell:W({...i.shell,workspaceBrowser:null,selectedLeftItemId:`workspace:${N.workspace.id}`,selectedWorkspaceId:N.workspace.id,selectedRepoId:K?.id??null,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${N.workspace.name??N.workspace.id}`})},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to add workspace.";i={mode:"main",shell:W({...i.shell,workspaceBrowser:{...M,error:K}})},L()})}}},qs=B=>{let M=typeof B=="string"?B:"";if(i.mode==="main"&&i.shell.taskPromptInput!==null){ra(M);return}if(i.mode==="main"&&i.shell.workspaceBrowser!==null){sa(M);return}if(i.mode==="main"){let O=qn(i.shell,M,R(i.shell));if(O.exit){Er(0);return}if(O.detachTerminal){z.detach(),i={mode:"main",shell:W(O.state)},c(i.shell),L();return}if(i.shell.inputMode==="terminal"){if(O.changed){i={mode:"main",shell:W(O.state)},c(i.shell),L();return}if(h&&tt(M)){h=!1;return}h&&(h=!1),d=Ph(M)?{key:M,at:Date.now()}:null;let N=Ih(M,i.shell.terminal.scrolledBack??!1);if(N!==0){Ar(N);return}z.writeKey(M);return}if(M==="CTRL_C"){Er(0);return}if(M==="?"&&i.shell.inputMode==="control"){i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell},x=!0,L();return}if(O.pause){i={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:W(O.state)},x=!0,L();return}if(O.beginTaskPrompt){i={mode:"main",shell:W(O.state)},c(i.shell),L();return}if(O.openWorkspaceBrowser){te(t).catch(N=>{let K=N instanceof Error?N.message:"Failed to browse workspaces.";i={mode:"main",shell:W({...O.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:K}})},L()});return}if(O.createPtyTab){Y(O.state,O.createPtyTabKind,O.createPtyTabRunner).then(N=>{I(N)}).catch(N=>{let K=N instanceof Error?N.message:"Failed to create tab.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.closePtyTab){Z(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to close tab.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.syncPullRequest){we(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to create or sync PR.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.refreshPullRequestChecks){ke(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to refresh PR checks.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.mergeTask){xe(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to merge PR.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.closeTask){Ue(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to close task.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.removeWorkspace){st(O.state).then(N=>{i={mode:"main",shell:N},c(i.shell),L()}).catch(N=>{let K=N instanceof Error?N.message:"Failed to remove workspace.";i={mode:"main",shell:W({...O.state,actionMessage:K})},L()});return}if(O.attachTerminal){I(O.state);return}if(O.refreshInspection){i={mode:"main",shell:W(O.state)},c(i.shell),L(),V(i.shell).catch(N=>{let K=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:K})},L()});return}O.changed&&(i={mode:"main",shell:W(O.state)},j(i.shell).catch(()=>{}),c(i.shell),L());return}if(i.variant==="help"){i.viaOptions&&i.parentVariant?i={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:i.shell,parentVariant:i.parentVariant}:i.parentVariant?i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell}:i={mode:"main",shell:W(i.shell)},x=!0,L();return}if(i.variant==="options"){ia(M);return}if(i.variant==="runners"){na(M);return}if(i.optionsMessage){(M==="ESCAPE"||tt(M))&&(i={...i,optionsMessage:null},L());return}if(M==="UP"||M==="k"){i={...i,menuIndex:Math.max(0,i.menuIndex-1)},L();return}if(M==="DOWN"||M==="j"){i={...i,menuIndex:Math.min(2,i.menuIndex+1)},L();return}if(M==="ESCAPE"){i.variant==="pause"&&(i={mode:"main",shell:W(i.shell)},x=!0,L());return}if(tt(M)){if(i.menuIndex===0){i={mode:"main",shell:W({...i.shell,inputMode:"control"})},x=!0,L(),C();return}if(i.menuIndex===1){let O=i.variant==="boot"||i.variant==="pause"?i.variant:void 0;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}Er(0)}};function ia(B){if(i.mode!=="overlay"||i.variant!=="options")return;let M=zo(i.menuIndex,B);if(M.kind!=="noop"){if(M.kind==="render"){i={...i,menuIndex:M.menuIndex},L();return}if(M.kind==="back"){i.parentVariant&&(i={mode:"overlay",variant:i.parentVariant,menuIndex:1,optionsMessage:null,shell:i.shell},x=!0,L());return}if(M.kind==="help"){let O=i.parentVariant;i={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:i.shell,viaOptions:!0,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="runners"){let O=i.parentVariant;i={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L()}}}function na(B){if(i.mode!=="overlay"||i.variant!=="runners")return;let M=Vo(zt(i),s,B,o);if(M.kind!=="noop"){if(M.kind==="back"){let O=i.parentVariant;i={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:i.shell,...O!==void 0?{parentVariant:O}:{}},x=!0,L();return}if(M.kind==="render"){i={...i,runnerOptions:M.state},L();return}F(M.config).then(()=>{i.mode!=="overlay"||i.variant!=="runners"||(i={...i,runnerOptions:M.state},L())}).catch(O=>{if(i.mode!=="overlay"||i.variant!=="runners")return;let N=O instanceof Error?O.message:"Failed to save runner option.";i={...i,runnerOptions:{...zt(i),message:N}},L()})}}let Ks=B=>{let M=Ch(B);if(i.mode!=="main"||i.shell.inputMode!=="terminal"||M.length===0)return;if(M.includes("")){z.detach(),h=!1,d=null,i={mode:"main",shell:W({...i.shell,inputMode:"control",actionMessage:null})},c(i.shell),L();return}let O=xh(M);if(O!==0){Ar(O);return}if(h&&M!=="\r"&&M!==`
104
+ `&&M!==`\r
105
+ `&&(h=!1),Eh(h,d,M)){h=!1;return}z.write(M)},zs=B=>{if(i.mode!=="main")return;if(i.shell.inputMode==="control"){aa(Xo(B));return}let M=Xo(B);M!==0&&Ar(M)};function Ar(B){u+=B,!S&&(S=setTimeout(()=>{S=null;let M=u;u=0,M!==0&&(oa(M),L())},16))}function oa(B){z.scrollViewport(B),i={mode:"main",shell:X(i.shell)}}function aa(B){B!==0&&(b+=B,!P&&(P=setTimeout(()=>{P=null;let M=b;if(b=0,M===0||i.mode!=="main"||i.shell.inputMode!=="control")return;let O=et(i.shell,M,R(i.shell));if(O.changed){if(O.refreshInspection){i={mode:"main",shell:W(O.state)},c(i.shell),L(),V(i.shell).catch(N=>{let K=N instanceof Error?N.message:"Failed to refresh inspection.";i={mode:"main",shell:W({...i.shell,actionMessage:K})},L()});return}i={mode:"main",shell:W(O.state)},c(i.shell),L()}},16)))}let Vs=()=>{x=!0,i.mode==="main"&&i.shell.inputMode==="terminal"&&(z.resize(Ns(St(_.width,_.height))),i={mode:"main",shell:X(i.shell)}),L()};process.stdout.on("resize",Vs),_.grabInput(!0),A="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",qs),_.on("unknown",Ks),_.on("mouse",zs),H=setInterval(()=>{Xe()},(s.github?.watchIntervalSeconds??10)*1e3),L()})}async function Kt(e,t,r){let s=Ke(e),[o,m,y]=await Promise.all([dt(s),Me(s),Ne(s)]),n=Qo(y.tasks,t),l=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},f=n?await gn(n,l):null;return{workspaceRoot:e,workspaces:m.filter(k=>k.status==="active"),repos:o,tasks:y.tasks,inspection:f,...r?{enabledRunnerIds:r}:{}}}function Qo(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function wh(e,t){return fr(e,t)}function kh(e,t){let r=new Set(t);return e.filter(s=>{let o=s.path.split("/");for(let m=1;m<o.length;m+=1)if(r.has(o.slice(0,m).join("/")))return!1;return!0})}function bh(e){let t=[];if(e.workspaces?.length)for(let r of e.workspaces){t.push(`workspace:${r.id}`),r.kind==="project"&&t.push(`new-task-workspace:${r.id}`);for(let s of e.tasks.filter(o=>o.workspaceId===r.id))t.push(`task:${s.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 yh(e,t,r){let s=e.tasks.find(m=>m.ptyTabs.some(y=>y.id===t))??null,o=s?.ptyTabs.find(m=>m.id===t)??null;return{cwd:s?.worktreePath??r,command:o?.kind==="agent"?vh(o):[]}}function vh(e){return e.command.length>0?e.command:["codex"]}function zt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Sh(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function Go(e,t,r,s={}){let o=r??e.runner,m=be(o),y=t==="agent"?m.defaultAgentTitle:"Terminal",n=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,l=new Set(e.ptyTabs.map(c=>c.id)),f=1,k=n;for(;l.has(k);)f+=1,k=`${n}-${f}`;let a=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:k,kind:t,...w?{runner:w}:{},title:f===1?y:`${y} ${f}`,command:t==="agent"?me(o,void 0,s):[],createdAt:a,updatedAt:a}}async function Th(e,t,r,s,o){let m=await ye(e);Vt(o,m);let y=r?await sr(e,r,s,{runner:o,config:m}):await At(e,t??"",s,{runner:o,config:m});try{let f=ct();await Q(lt(Mr(o,m).executable,{cwd:y.repoRoot,env:f}),["--help"],{cwd:y.repoRoot,env:f})}catch(f){let k=f instanceof Error?f.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:k};throw await re(e,a),new Ir(k,a)}let n=Jo(y.task,"agent"),l={...y.task,status:"running",selectedPtyTabId:n,runnerSession:{...y.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await re(e,l),await Pe({uiStateFile:e.uiStateFile},{...await De({uiStateFile:e.uiStateFile})??We(),version:1,selectedRepoId:l.repoId,selectedWorkspaceId:l.workspaceId,selectedTaskId:l.id,selectedPtyTabId:l.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:l.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),l}var Ir=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function Jo(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 Ns(e){return{columns:Math.max(20,e.width-Be.leftWidth-Be.rightWidth-Be.dividerWidth-Rr*2),rows:Math.max(5,e.height-Be.topRailHeight-5)}}function Rh(e){return e.split(`
106
+ `).map((t,r)=>`\x1B[${r+1};1H${t}`).join("")}function Ch(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Ph(e){return e.length===1||tt(e)||e==="BACKSPACE"||e==="TAB"}function js(e){return typeof e=="string"&&new RegExp(`:(?:agent|${ce.join("|")})(?:-\\d+)?$`).test(e)}function Ih(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 Xo(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function xh(e){let t=new RegExp("\x1B\\[<(\\d+);\\d+;\\d+[mM]").exec(e);if(!t?.[1])return 0;let r=Number.parseInt(t[1],10);return r===64?-3:r===65?3:0}function Eh(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
107
107
  `||r===`\r
108
- `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function Rh(e){let t=await ah(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=Fs.join(e,s.name);r.push({name:s.name,path:o,kind:await Ch(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 Ch(e){let t=Fs.join(e,".git");return await ch(t).catch(()=>null)!==null}function Sr(){return process.cwd()}async function Ph(){try{if(process.argv[2]==="__craig-daemon"){let n=process.argv[3]??Sr(),d=je(n);return await kt(n),await po(d),0}if(process.argv[2]==="__craig-daemon-shutdown"){let n=process.argv[3]??Sr(),d=je(n);return await kt(n),await go(d),0}let e=qs(process.argv.slice(2)),t=Sr(),r=je(t),s=await kt(t),o={paths:r};if(e.mode==="interactive")return await qo({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let m=await nn(e.command,o),y=on(m);return y.length>0&&process.stdout.write(`${y}
108
+ `)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function Ah(e){let t=await fh(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=Hs.join(e,s.name);r.push({name:s.name,path:o,kind:await Dh(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 Dh(e){let t=Hs.join(e,".git");return await ph(t).catch(()=>null)!==null}function xr(){return process.cwd()}async function Lh(){try{if(process.argv[2]==="__craig-daemon"){let n=process.argv[3]??xr(),l=Ke(n);return await vt(n),await bo(l),0}if(process.argv[2]==="__craig-daemon-shutdown"){let n=process.argv[3]??xr(),l=Ke(n);return await vt(n),await yo(l),0}let e=Xs(process.argv.slice(2)),t=xr(),r=Ke(t),s=await vt(t),o={paths:r};if(e.mode==="interactive")return await Yo({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let m=await un(e.command,o),y=hn(m);return y.length>0&&process.stdout.write(`${y}
109
109
  `),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
110
- `),1}}var Ih=await Ph();process.exit(Ih);
110
+ `),1}}var Mh=await Lh();process.exit(Mh);