craig-cli 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +76 -70
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,103 +1,109 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var so=Object.create;var us=Object.defineProperty;var io=Object.getOwnPropertyDescriptor;var no=Object.getOwnPropertyNames;var oo=Object.getPrototypeOf,ao=Object.prototype.hasOwnProperty;var co=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var lo=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of no(t))!ao.call(e,a)&&a!==r&&us(e,a,{get:()=>t[a],enumerable:!(i=io(t,a))||i.enumerable});return e};var uo=(e,t,r)=>(r=e!=null?so(oo(e)):{},lo(t||!e||!e.__esModule?us(r,"default",{value:e,enumerable:!0}):r,e));var an=co(on=>{(()=>{"use strict";var e={5639:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let p=h(7150),y=h(802);class o extends p.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new y.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new y.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new y.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 s=l;s<this._length-g;s++)this._array[this._getCyclicIndex(s)]=this._array[this._getCyclicIndex(s+g)];this._length-=g,this.onDeleteEmitter.fire({index:l,amount:g})}for(let s=this._length-1;s>=l;s--)this._array[this._getCyclicIndex(s+_.length)]=this._array[this._getCyclicIndex(s)];for(let s=0;s<_.length;s++)this._array[this._getCyclicIndex(l+s)]=_[s];if(_.length&&this.onInsertEmitter.fire({index:l,amount:_.length}),this._length+_.length>this._maxLength){let s=this._length+_.length-this._maxLength;this._startIndex+=s,this._length=this._maxLength,this.onTrimEmitter.fire(s)}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 f=g-1;f>=0;f--)this.set(l+f+_,this.get(l+f));let s=l+g+_-this._length;if(s>0)for(this._length+=s;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let s=0;s<g;s++)this.set(l+s+_,this.get(l+s))}}_getCyclicIndex(l){return(this._startIndex+l)%this._maxLength}}n.CircularList=o},7453:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.clone=function h(p,y=5){if(typeof p!="object")return p;let o=Array.isArray(p)?[]:{};for(let w in p)o[w]=y<=1?p[w]:p[w]&&h(p[w],y-1);return o}},5777:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let p=h(6501),y=h(6025),o=h(7276),w=h(9640),l=h(56),g=h(4071),_=h(7792),s=h(6415),f=h(5746),d=h(5882),c=h(2486),u=h(3562),m=h(8811),v=h(802),I=h(7150),E=!1;class N extends I.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new v.Emitter),this._onScroll.event((A=>{this._onScrollApi?.fire(A.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(A){for(let D in A)this.optionsService.options[D]=A[D]}constructor(A){super(),this._windowsWrappingHeuristics=this._register(new I.MutableDisposable),this._onBinary=this._register(new v.Emitter),this.onBinary=this._onBinary.event,this._onData=this._register(new v.Emitter),this.onData=this._onData.event,this._onLineFeed=this._register(new v.Emitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new v.Emitter),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new v.Emitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new v.Emitter),this._instantiationService=new y.InstantiationService,this.optionsService=this._register(new l.OptionsService(A)),this._instantiationService.setService(p.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(p.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(o.LogService)),this._instantiationService.setService(p.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(g.CoreService)),this._instantiationService.setService(p.ICoreService,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(_.CoreMouseService)),this._instantiationService.setService(p.ICoreMouseService,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(s.UnicodeService)),this._instantiationService.setService(p.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(f.CharsetService),this._instantiationService.setService(p.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(m.OscLinkService),this._instantiationService.setService(p.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(v.Event.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(v.Event.forward(this._bufferService.onResize,this._onResize)),this._register(v.Event.forward(this.coreService.onData,this._onData)),this._register(v.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(((D,C)=>this._inputHandler.parse(D,C)))),this._register(v.Event.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(A,D){this._writeBuffer.write(A,D)}writeSync(A,D){this._logService.logLevel<=p.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(A,D)}input(A,D=!0){this.coreService.triggerDataEvent(A,D)}resize(A,D){isNaN(A)||isNaN(D)||(A=Math.max(A,w.MINIMUM_COLS),D=Math.max(D,w.MINIMUM_ROWS),this._bufferService.resize(A,D))}scroll(A,D=!1){this._bufferService.scroll(A,D)}scrollLines(A,D){this._bufferService.scrollLines(A,D)}scrollPages(A){this.scrollLines(A*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(A){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(A){let D=A-this._bufferService.buffer.ydisp;D!==0&&this.scrollLines(D)}registerEscHandler(A,D){return this._inputHandler.registerEscHandler(A,D)}registerDcsHandler(A,D){return this._inputHandler.registerDcsHandler(A,D)}registerCsiHandler(A,D){return this._inputHandler.registerCsiHandler(A,D)}registerOscHandler(A,D){return this._inputHandler.registerOscHandler(A,D)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let A=!1,D=this.optionsService.rawOptions.windowsPty;D&&D.buildNumber!==void 0&&D.buildNumber!==void 0?A=D.backend==="conpty"&&D.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(A=!0),A?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let A=[];A.push(this.onLineFeed(d.updateWindowsModeWrappedState.bind(null,this._bufferService))),A.push(this.registerCsiHandler({final:"H"},(()=>((0,d.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,I.toDisposable)((()=>{for(let D of A)D.dispose()}))}}}n.CoreTerminal=N},2486:function(T,n,h){var p=this&&this.__decorate||function(q,b,P,k){var R,F=arguments.length,B=F<3?b:k===null?k=Object.getOwnPropertyDescriptor(b,P):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")B=Reflect.decorate(q,b,P,k);else for(var U=q.length-1;U>=0;U--)(R=q[U])&&(B=(F<3?R(B):F>3?R(b,P,B):R(b,P))||B);return F>3&&B&&Object.defineProperty(b,P,B),B},y=this&&this.__param||function(q,b){return function(P,k){b(P,k,q)}};Object.defineProperty(n,"__esModule",{value:!0}),n.InputHandler=n.WindowsOptionsReportType=void 0,n.isValidColorIndex=G;let o=h(3534),w=h(6760),l=h(6717),g=h(7150),_=h(726),s=h(6107),f=h(8938),d=h(3055),c=h(5451),u=h(6501),m=h(6415),v=h(1346),I=h(9823),E=h(8693),N=h(802),O={"(":0,")":1,"*":2,"+":3,"-":1,".":2},A=131072;function D(q,b){if(q>24)return b.setWinLines||!1;switch(q){case 1:return!!b.restoreWin;case 2:return!!b.minimizeWin;case 3:return!!b.setWinPosition;case 4:return!!b.setWinSizePixels;case 5:return!!b.raiseWin;case 6:return!!b.lowerWin;case 7:return!!b.refreshWin;case 8:return!!b.setWinSizeChars;case 9:return!!b.maximizeWin;case 10:return!!b.fullscreenWin;case 11:return!!b.getWinState;case 13:return!!b.getWinPosition;case 14:return!!b.getWinSizePixels;case 15:return!!b.getScreenSizePixels;case 16:return!!b.getCellSizePixels;case 18:return!!b.getWinSizeChars;case 19:return!!b.getScreenSizeChars;case 20:return!!b.getIconTitle;case 21:return!!b.getWinTitle;case 22:return!!b.pushTitle;case 23:return!!b.popTitle;case 24:return!!b.setWinLines}return!1}var C;(function(q){q[q.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",q[q.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(C||(n.WindowsOptionsReportType=C={}));let j=0;class z extends g.Disposable{getAttrData(){return this._curAttrData}constructor(b,P,k,R,F,B,U,K,ee=new l.EscapeSequenceParser){super(),this._bufferService=b,this._charsetService=P,this._coreService=k,this._logService=R,this._optionsService=F,this._oscLinkService=B,this._coreMouseService=U,this._unicodeService=K,this._parser=ee,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new _.StringToUtf32,this._utf8Decoder=new _.Utf8ToUtf32,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=s.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=s.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this._register(new N.Emitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new N.Emitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new N.Emitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new N.Emitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new N.Emitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new N.Emitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new N.Emitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new N.Emitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new N.Emitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new N.Emitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new N.Emitter),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new N.Emitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new N.Emitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this._register(this._parser),this._dirtyRowTracker=new W(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate((x=>this._activeBuffer=x.activeBuffer))),this._parser.setCsiHandlerFallback(((x,Q)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(x),params:Q.toArray()})})),this._parser.setEscHandlerFallback((x=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(x)})})),this._parser.setExecuteHandlerFallback((x=>{this._logService.debug("Unknown EXECUTE code: ",{code:x})})),this._parser.setOscHandlerFallback(((x,Q,Y)=>{this._logService.debug("Unknown OSC code: ",{identifier:x,action:Q,data:Y})})),this._parser.setDcsHandlerFallback(((x,Q,Y)=>{Q==="HOOK"&&(Y=Y.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(x),action:Q,payload:Y})})),this._parser.setPrintHandler(((x,Q,Y)=>this.print(x,Q,Y))),this._parser.registerCsiHandler({final:"@"},(x=>this.insertChars(x))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(x=>this.scrollLeft(x))),this._parser.registerCsiHandler({final:"A"},(x=>this.cursorUp(x))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(x=>this.scrollRight(x))),this._parser.registerCsiHandler({final:"B"},(x=>this.cursorDown(x))),this._parser.registerCsiHandler({final:"C"},(x=>this.cursorForward(x))),this._parser.registerCsiHandler({final:"D"},(x=>this.cursorBackward(x))),this._parser.registerCsiHandler({final:"E"},(x=>this.cursorNextLine(x))),this._parser.registerCsiHandler({final:"F"},(x=>this.cursorPrecedingLine(x))),this._parser.registerCsiHandler({final:"G"},(x=>this.cursorCharAbsolute(x))),this._parser.registerCsiHandler({final:"H"},(x=>this.cursorPosition(x))),this._parser.registerCsiHandler({final:"I"},(x=>this.cursorForwardTab(x))),this._parser.registerCsiHandler({final:"J"},(x=>this.eraseInDisplay(x,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(x=>this.eraseInDisplay(x,!0))),this._parser.registerCsiHandler({final:"K"},(x=>this.eraseInLine(x,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(x=>this.eraseInLine(x,!0))),this._parser.registerCsiHandler({final:"L"},(x=>this.insertLines(x))),this._parser.registerCsiHandler({final:"M"},(x=>this.deleteLines(x))),this._parser.registerCsiHandler({final:"P"},(x=>this.deleteChars(x))),this._parser.registerCsiHandler({final:"S"},(x=>this.scrollUp(x))),this._parser.registerCsiHandler({final:"T"},(x=>this.scrollDown(x))),this._parser.registerCsiHandler({final:"X"},(x=>this.eraseChars(x))),this._parser.registerCsiHandler({final:"Z"},(x=>this.cursorBackwardTab(x))),this._parser.registerCsiHandler({final:"`"},(x=>this.charPosAbsolute(x))),this._parser.registerCsiHandler({final:"a"},(x=>this.hPositionRelative(x))),this._parser.registerCsiHandler({final:"b"},(x=>this.repeatPrecedingCharacter(x))),this._parser.registerCsiHandler({final:"c"},(x=>this.sendDeviceAttributesPrimary(x))),this._parser.registerCsiHandler({prefix:">",final:"c"},(x=>this.sendDeviceAttributesSecondary(x))),this._parser.registerCsiHandler({final:"d"},(x=>this.linePosAbsolute(x))),this._parser.registerCsiHandler({final:"e"},(x=>this.vPositionRelative(x))),this._parser.registerCsiHandler({final:"f"},(x=>this.hVPosition(x))),this._parser.registerCsiHandler({final:"g"},(x=>this.tabClear(x))),this._parser.registerCsiHandler({final:"h"},(x=>this.setMode(x))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(x=>this.setModePrivate(x))),this._parser.registerCsiHandler({final:"l"},(x=>this.resetMode(x))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(x=>this.resetModePrivate(x))),this._parser.registerCsiHandler({final:"m"},(x=>this.charAttributes(x))),this._parser.registerCsiHandler({final:"n"},(x=>this.deviceStatus(x))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(x=>this.deviceStatusPrivate(x))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(x=>this.softReset(x))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(x=>this.setCursorStyle(x))),this._parser.registerCsiHandler({final:"r"},(x=>this.setScrollRegion(x))),this._parser.registerCsiHandler({final:"s"},(x=>this.saveCursor(x))),this._parser.registerCsiHandler({final:"t"},(x=>this.windowOptions(x))),this._parser.registerCsiHandler({final:"u"},(x=>this.restoreCursor(x))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(x=>this.insertColumns(x))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(x=>this.deleteColumns(x))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(x=>this.selectProtected(x))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(x=>this.requestMode(x,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(x=>this.requestMode(x,!1))),this._parser.setExecuteHandler(o.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(o.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(o.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(o.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(o.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(o.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(o.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(o.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(o.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(o.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(o.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(o.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new v.OscHandler((x=>(this.setTitle(x),this.setIconName(x),!0)))),this._parser.registerOscHandler(1,new v.OscHandler((x=>this.setIconName(x)))),this._parser.registerOscHandler(2,new v.OscHandler((x=>this.setTitle(x)))),this._parser.registerOscHandler(4,new v.OscHandler((x=>this.setOrReportIndexedColor(x)))),this._parser.registerOscHandler(8,new v.OscHandler((x=>this.setHyperlink(x)))),this._parser.registerOscHandler(10,new v.OscHandler((x=>this.setOrReportFgColor(x)))),this._parser.registerOscHandler(11,new v.OscHandler((x=>this.setOrReportBgColor(x)))),this._parser.registerOscHandler(12,new v.OscHandler((x=>this.setOrReportCursorColor(x)))),this._parser.registerOscHandler(104,new v.OscHandler((x=>this.restoreIndexedColor(x)))),this._parser.registerOscHandler(110,new v.OscHandler((x=>this.restoreFgColor(x)))),this._parser.registerOscHandler(111,new v.OscHandler((x=>this.restoreBgColor(x)))),this._parser.registerOscHandler(112,new v.OscHandler((x=>this.restoreCursorColor(x)))),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 x in w.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:x},(()=>this.selectCharset("("+x))),this._parser.registerEscHandler({intermediates:")",final:x},(()=>this.selectCharset(")"+x))),this._parser.registerEscHandler({intermediates:"*",final:x},(()=>this.selectCharset("*"+x))),this._parser.registerEscHandler({intermediates:"+",final:x},(()=>this.selectCharset("+"+x))),this._parser.registerEscHandler({intermediates:"-",final:x},(()=>this.selectCharset("-"+x))),this._parser.registerEscHandler({intermediates:".",final:x},(()=>this.selectCharset("."+x))),this._parser.registerEscHandler({intermediates:"/",final:x},(()=>this.selectCharset("/"+x)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((x=>(this._logService.error("Parsing error: ",x),x))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new I.DcsHandler(((x,Q)=>this.requestStatusString(x,Q))))}_preserveStack(b,P,k,R){this._parseStack.paused=!0,this._parseStack.cursorStartX=b,this._parseStack.cursorStartY=P,this._parseStack.decodedLength=k,this._parseStack.position=R}_logSlowResolvingAsync(b){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([b,new Promise(((P,k)=>setTimeout((()=>k("#SLOW_TIMEOUT")),5e3)))]).catch((P=>{if(P!=="#SLOW_TIMEOUT")throw P;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(b,P){let k,R=this._activeBuffer.x,F=this._activeBuffer.y,B=0,U=this._parseStack.paused;if(U){if(k=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,P))return this._logSlowResolvingAsync(k),k;R=this._parseStack.cursorStartX,F=this._parseStack.cursorStartY,this._parseStack.paused=!1,b.length>A&&(B=this._parseStack.position+A)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data "+(typeof b=="string"?` "${b}"`:` "${Array.prototype.map.call(b,(x=>String.fromCharCode(x))).join("")}"`)),this._logService.logLevel===u.LogLevelEnum.TRACE&&this._logService.trace("parsing data (codes)",typeof b=="string"?b.split("").map((x=>x.charCodeAt(0))):b),this._parseBuffer.length<b.length&&this._parseBuffer.length<A&&(this._parseBuffer=new Uint32Array(Math.min(b.length,A))),U||this._dirtyRowTracker.clearRange(),b.length>A)for(let x=B;x<b.length;x+=A){let Q=x+A<b.length?x+A:b.length,Y=typeof b=="string"?this._stringDecoder.decode(b.substring(x,Q),this._parseBuffer):this._utf8Decoder.decode(b.subarray(x,Q),this._parseBuffer);if(k=this._parser.parse(this._parseBuffer,Y))return this._preserveStack(R,F,Y,x),this._logSlowResolvingAsync(k),k}else if(!U){let x=typeof b=="string"?this._stringDecoder.decode(b,this._parseBuffer):this._utf8Decoder.decode(b,this._parseBuffer);if(k=this._parser.parse(this._parseBuffer,x))return this._preserveStack(R,F,x,0),this._logSlowResolvingAsync(k),k}this._activeBuffer.x===R&&this._activeBuffer.y===F||this._onCursorMove.fire();let K=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),ee=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);ee<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(ee,this._bufferService.rows-1),end:Math.min(K,this._bufferService.rows-1)})}print(b,P,k){let R,F,B=this._charsetService.charset,U=this._optionsService.rawOptions.screenReaderMode,K=this._bufferService.cols,ee=this._coreService.decPrivateModes.wraparound,x=this._coreService.modes.insertMode,Q=this._curAttrData,Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&k-P>0&&Y.getWidth(this._activeBuffer.x-1)===2&&Y.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Q);let Z=this._parser.precedingJoinState;for(let he=P;he<k;++he){if(R=b[he],R<127&&B){let Ae=B[String.fromCharCode(R)];Ae&&(R=Ae.charCodeAt(0))}let fe=this._unicodeService.charProperties(R,Z);F=m.UnicodeService.extractWidth(fe);let He=m.UnicodeService.extractShouldJoin(fe),Te=He?m.UnicodeService.extractWidth(Z):0;if(Z=fe,U&&this._onA11yChar.fire((0,_.stringFromCodePoint)(R)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+F-Te>K){if(ee){let Ae=Y,Ge=this._activeBuffer.x-Te;for(this._activeBuffer.x=Te,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),Te>0&&Y instanceof s.BufferLine&&Y.copyCellsFrom(Ae,Ge,0,Te,!1);Ge<K;)Ae.setCellFromCodepoint(Ge++,0,1,Q)}else if(this._activeBuffer.x=K-1,F===2)continue}if(He&&this._activeBuffer.x){let Ae=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-Ae,R,F);for(let Ge=F-Te;--Ge>=0;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}else if(x&&(Y.insertCells(this._activeBuffer.x,F-Te,this._activeBuffer.getNullCell(Q)),Y.getWidth(K-1)===2&&Y.setCellFromCodepoint(K-1,f.NULL_CELL_CODE,f.NULL_CELL_WIDTH,Q)),Y.setCellFromCodepoint(this._activeBuffer.x++,R,F,Q),F>0)for(;--F;)Y.setCellFromCodepoint(this._activeBuffer.x++,0,0,Q)}this._parser.precedingJoinState=Z,this._activeBuffer.x<K&&k-P>0&&Y.getWidth(this._activeBuffer.x)===0&&!Y.hasContent(this._activeBuffer.x)&&Y.setCellFromCodepoint(this._activeBuffer.x,0,1,Q),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(b,P){return b.final!=="t"||b.prefix||b.intermediates?this._parser.registerCsiHandler(b,P):this._parser.registerCsiHandler(b,(k=>!D(k.params[0],this._optionsService.rawOptions.windowOptions)||P(k)))}registerDcsHandler(b,P){return this._parser.registerDcsHandler(b,new I.DcsHandler(P))}registerEscHandler(b,P){return this._parser.registerEscHandler(b,P)}registerOscHandler(b,P){return this._parser.registerOscHandler(b,new v.OscHandler(P))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let b=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);b.hasWidth(this._activeBuffer.x)&&!b.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let b=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-b),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(b=this._bufferService.cols-1){this._activeBuffer.x=Math.min(b,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(b,P){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=b,this._activeBuffer.y=this._activeBuffer.scrollTop+P):(this._activeBuffer.x=b,this._activeBuffer.y=P),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(b,P){this._restrictCursor(),this._setCursor(this._activeBuffer.x+b,this._activeBuffer.y+P)}cursorUp(b){let P=this._activeBuffer.y-this._activeBuffer.scrollTop;return P>=0?this._moveCursor(0,-Math.min(P,b.params[0]||1)):this._moveCursor(0,-(b.params[0]||1)),!0}cursorDown(b){let P=this._activeBuffer.scrollBottom-this._activeBuffer.y;return P>=0?this._moveCursor(0,Math.min(P,b.params[0]||1)):this._moveCursor(0,b.params[0]||1),!0}cursorForward(b){return this._moveCursor(b.params[0]||1,0),!0}cursorBackward(b){return this._moveCursor(-(b.params[0]||1),0),!0}cursorNextLine(b){return this.cursorDown(b),this._activeBuffer.x=0,!0}cursorPrecedingLine(b){return this.cursorUp(b),this._activeBuffer.x=0,!0}cursorCharAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(b){return this._setCursor(b.length>=2?(b.params[1]||1)-1:0,(b.params[0]||1)-1),!0}charPosAbsolute(b){return this._setCursor((b.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(b){return this._moveCursor(b.params[0]||1,0),!0}linePosAbsolute(b){return this._setCursor(this._activeBuffer.x,(b.params[0]||1)-1),!0}vPositionRelative(b){return this._moveCursor(0,b.params[0]||1),!0}hVPosition(b){return this.cursorPosition(b),!0}tabClear(b){let P=b.params[0];return P===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:P===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=b.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(b){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let P=b.params[0]||1;for(;P--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(b){let P=b.params[0];return P===1&&(this._curAttrData.bg|=536870912),P!==2&&P!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(b,P,k,R=!1,F=!1){let B=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);B.replaceCells(P,k,this._activeBuffer.getNullCell(this._eraseAttrData()),F),R&&(B.isWrapped=!1)}_resetBufferLine(b,P=!1){let k=this._activeBuffer.lines.get(this._activeBuffer.ybase+b);k&&(k.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),P),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+b),k.isWrapped=!1)}eraseInDisplay(b,P=!1){let k;switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:for(k=this._activeBuffer.y,this._dirtyRowTracker.markDirty(k),this._eraseInBufferLine(k++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);k<this._bufferService.rows;k++)this._resetBufferLine(k,P);this._dirtyRowTracker.markDirty(k);break;case 1:for(k=this._activeBuffer.y,this._dirtyRowTracker.markDirty(k),this._eraseInBufferLine(k,0,this._activeBuffer.x+1,!0,P),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(k+1).isWrapped=!1);k--;)this._resetBufferLine(k,P);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(k=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,k-1);k--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+k)?.getTrimmedLength(););for(;k>=0;k--)this._bufferService.scroll(this._eraseAttrData())}else{for(k=this._bufferService.rows,this._dirtyRowTracker.markDirty(k-1);k--;)this._resetBufferLine(k,P);this._dirtyRowTracker.markDirty(0)}break;case 3:let R=this._activeBuffer.lines.length-this._bufferService.rows;R>0&&(this._activeBuffer.lines.trimStart(R),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-R,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-R,0),this._onScroll.fire(0))}return!0}eraseInLine(b,P=!1){switch(this._restrictCursor(this._bufferService.cols),b.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,P);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,P);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,P)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(b){this._restrictCursor();let P=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let k=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(;P--;)this._activeBuffer.lines.splice(F-1,1),this._activeBuffer.lines.splice(k,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(b){this._restrictCursor();let P=b.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let k=this._activeBuffer.ybase+this._activeBuffer.y,R;for(R=this._bufferService.rows-1-this._activeBuffer.scrollBottom,R=this._bufferService.rows-1+this._activeBuffer.ybase-R;P--;)this._activeBuffer.lines.splice(k,1),this._activeBuffer.lines.splice(R,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(b){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.insertCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(b){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.deleteCells(this._activeBuffer.x,b.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(b){let P=b.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(b){let P=b.params[0]||1;for(;P--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(s.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=b.params[0]||1;for(let k=this._activeBuffer.scrollTop;k<=this._activeBuffer.scrollBottom;++k){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+k);R.deleteCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=b.params[0]||1;for(let k=this._activeBuffer.scrollTop;k<=this._activeBuffer.scrollBottom;++k){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+k);R.insertCells(0,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=b.params[0]||1;for(let k=this._activeBuffer.scrollTop;k<=this._activeBuffer.scrollBottom;++k){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+k);R.insertCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(b){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let P=b.params[0]||1;for(let k=this._activeBuffer.scrollTop;k<=this._activeBuffer.scrollBottom;++k){let R=this._activeBuffer.lines.get(this._activeBuffer.ybase+k);R.deleteCells(this._activeBuffer.x,P,this._activeBuffer.getNullCell(this._eraseAttrData())),R.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(b){this._restrictCursor();let P=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return P&&(P.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(b.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(b){let P=this._parser.precedingJoinState;if(!P)return!0;let k=b.params[0]||1,R=m.UnicodeService.extractWidth(P),F=this._activeBuffer.x-R,B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(F),U=new Uint32Array(B.length*k),K=0;for(let x=0;x<B.length;){let Q=B.codePointAt(x)||0;U[K++]=Q,x+=Q>65535?2:1}let ee=K;for(let x=1;x<k;++x)U.copyWithin(ee,0,K),ee+=K;return this.print(U,0,ee),!0}sendDeviceAttributesPrimary(b){return b.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(o.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(o.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(b){return b.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(o.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(o.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(b.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(o.C0.ESC+"[>83;40003;0c")),!0}_is(b){return(this._optionsService.rawOptions.termName+"").indexOf(b)===0}setMode(b){for(let P=0;P<b.length;P++)switch(b.params[P]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(b){for(let P=0;P<b.length;P++)switch(b.params[P]){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(b){for(let P=0;P<b.length;P++)switch(b.params[P]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(b){for(let P=0;P<b.length;P++)switch(b.params[P]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),b.params[P]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(void 0),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1;break;case 2026:this._coreService.decPrivateModes.synchronizedOutput=!1,this._onRequestRefreshRows.fire(void 0)}return!0}requestMode(b,P){let k=this._coreService.decPrivateModes,{activeProtocol:R,activeEncoding:F}=this._coreMouseService,B=this._coreService,{buffers:U,cols:K}=this._bufferService,{active:ee,alt:x}=U,Q=this._optionsService.rawOptions,Y=He=>He?1:2,Z=b.params[0];return he=Z,fe=P?Z===2?4:Z===4?Y(B.modes.insertMode):Z===12?3:Z===20?Y(Q.convertEol):0:Z===1?Y(k.applicationCursorKeys):Z===3?Q.windowOptions.setWinLines?K===80?2:K===132?1:0:0:Z===6?Y(k.origin):Z===7?Y(k.wraparound):Z===8?3:Z===9?Y(R==="X10"):Z===12?Y(Q.cursorBlink):Z===25?Y(!B.isCursorHidden):Z===45?Y(k.reverseWraparound):Z===66?Y(k.applicationKeypad):Z===67?4:Z===1e3?Y(R==="VT200"):Z===1002?Y(R==="DRAG"):Z===1003?Y(R==="ANY"):Z===1004?Y(k.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(ee===x):Z===2004?Y(k.bracketedPasteMode):Z===2026?Y(k.synchronizedOutput):0,B.triggerDataEvent(`${o.C0.ESC}[${P?"":"?"}${he};${fe}$y`),!0;var he,fe}_updateAttrColor(b,P,k,R,F){return P===2?(b|=50331648,b&=-16777216,b|=c.AttributeData.fromColorRGB([k,R,F])):P===5&&(b&=-50331904,b|=33554432|255&k),b}_extractColor(b,P,k){let R=[0,0,-1,0,0,0],F=0,B=0;do{if(R[B+F]=b.params[P+B],b.hasSubParams(P+B)){let U=b.getSubParams(P+B),K=0;do R[1]===5&&(F=1),R[B+K+1+F]=U[K];while(++K<U.length&&K+B+1+F<R.length);break}if(R[1]===5&&B+F>=2||R[1]===2&&B+F>=5)break;R[1]&&(F=1)}while(++B+P<b.length&&B+F<R.length);for(let U=2;U<R.length;++U)R[U]===-1&&(R[U]=0);switch(R[0]){case 38:k.fg=this._updateAttrColor(k.fg,R[1],R[3],R[4],R[5]);break;case 48:k.bg=this._updateAttrColor(k.bg,R[1],R[3],R[4],R[5]);break;case 58:k.extended=k.extended.clone(),k.extended.underlineColor=this._updateAttrColor(k.extended.underlineColor,R[1],R[3],R[4],R[5])}return B}_processUnderline(b,P){P.extended=P.extended.clone(),(!~b||b>5)&&(b=1),P.extended.underlineStyle=b,P.fg|=268435456,b===0&&(P.fg&=-268435457),P.updateExtended()}_processSGR0(b){b.fg=s.DEFAULT_ATTR_DATA.fg,b.bg=s.DEFAULT_ATTR_DATA.bg,b.extended=b.extended.clone(),b.extended.underlineStyle=0,b.extended.underlineColor&=-67108864,b.updateExtended()}charAttributes(b){if(b.length===1&&b.params[0]===0)return this._processSGR0(this._curAttrData),!0;let P=b.length,k,R=this._curAttrData;for(let F=0;F<P;F++)k=b.params[F],k>=30&&k<=37?(R.fg&=-50331904,R.fg|=16777216|k-30):k>=40&&k<=47?(R.bg&=-50331904,R.bg|=16777216|k-40):k>=90&&k<=97?(R.fg&=-50331904,R.fg|=16777224|k-90):k>=100&&k<=107?(R.bg&=-50331904,R.bg|=16777224|k-100):k===0?this._processSGR0(R):k===1?R.fg|=134217728:k===3?R.bg|=67108864:k===4?(R.fg|=268435456,this._processUnderline(b.hasSubParams(F)?b.getSubParams(F)[0]:1,R)):k===5?R.fg|=536870912:k===7?R.fg|=67108864:k===8?R.fg|=1073741824:k===9?R.fg|=2147483648:k===2?R.bg|=134217728:k===21?this._processUnderline(2,R):k===22?(R.fg&=-134217729,R.bg&=-134217729):k===23?R.bg&=-67108865:k===24?(R.fg&=-268435457,this._processUnderline(0,R)):k===25?R.fg&=-536870913:k===27?R.fg&=-67108865:k===28?R.fg&=-1073741825:k===29?R.fg&=2147483647:k===39?(R.fg&=-67108864,R.fg|=16777215&s.DEFAULT_ATTR_DATA.fg):k===49?(R.bg&=-67108864,R.bg|=16777215&s.DEFAULT_ATTR_DATA.bg):k===38||k===48||k===58?F+=this._extractColor(b,F,R):k===53?R.bg|=1073741824:k===55?R.bg&=-1073741825:k===59?(R.extended=R.extended.clone(),R.extended.underlineColor=-1,R.updateExtended()):k===100?(R.fg&=-67108864,R.fg|=16777215&s.DEFAULT_ATTR_DATA.fg,R.bg&=-67108864,R.bg|=16777215&s.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",k);return!0}deviceStatus(b){switch(b.params[0]){case 5:this._coreService.triggerDataEvent(`${o.C0.ESC}[0n`);break;case 6:let P=this._activeBuffer.y+1,k=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${o.C0.ESC}[${P};${k}R`)}return!0}deviceStatusPrivate(b){if(b.params[0]===6){let P=this._activeBuffer.y+1,k=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${o.C0.ESC}[?${P};${k}R`)}return!0}softReset(b){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=s.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(b){let P=b.length===0?1:b.params[0];if(P===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(P){case 1:case 2:this._coreService.decPrivateModes.cursorStyle="block";break;case 3:case 4:this._coreService.decPrivateModes.cursorStyle="underline";break;case 5:case 6:this._coreService.decPrivateModes.cursorStyle="bar"}let k=P%2==1;this._coreService.decPrivateModes.cursorBlink=k}return!0}setScrollRegion(b){let P=b.params[0]||1,k;return(b.length<2||(k=b.params[1])>this._bufferService.rows||k===0)&&(k=this._bufferService.rows),k>P&&(this._activeBuffer.scrollTop=P-1,this._activeBuffer.scrollBottom=k-1,this._setCursor(0,0)),!0}windowOptions(b){if(!D(b.params[0],this._optionsService.rawOptions.windowOptions))return!0;let P=b.length>1?b.params[1]:0;switch(b.params[0]){case 14:P!==2&&this._onRequestWindowsOptionsReport.fire(C.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(C.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${o.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:P!==0&&P!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),P!==0&&P!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:P!==0&&P!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),P!==0&&P!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(b){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(b){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(b){return this._windowTitle=b,this._onTitleChange.fire(b),!0}setIconName(b){return this._iconName=b,!0}setOrReportIndexedColor(b){let P=[],k=b.split(";");for(;k.length>1;){let R=k.shift(),F=k.shift();if(/^\d+$/.exec(R)){let B=parseInt(R);if(G(B))if(F==="?")P.push({type:0,index:B});else{let U=(0,E.parseColor)(F);U&&P.push({type:1,index:B,color:U})}}}return P.length&&this._onColor.fire(P),!0}setHyperlink(b){let P=b.indexOf(";");if(P===-1)return!0;let k=b.slice(0,P).trim(),R=b.slice(P+1);return R?this._createHyperlink(k,R):!k.trim()&&this._finishHyperlink()}_createHyperlink(b,P){this._getCurrentLinkId()&&this._finishHyperlink();let k=b.split(":"),R,F=k.findIndex((B=>B.startsWith("id=")));return F!==-1&&(R=k[F].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:R,uri:P}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(b,P){let k=b.split(";");for(let R=0;R<k.length&&!(P>=this._specialColors.length);++R,++P)if(k[R]==="?")this._onColor.fire([{type:0,index:this._specialColors[P]}]);else{let F=(0,E.parseColor)(k[R]);F&&this._onColor.fire([{type:1,index:this._specialColors[P],color:F}])}return!0}setOrReportFgColor(b){return this._setOrReportSpecialColor(b,0)}setOrReportBgColor(b){return this._setOrReportSpecialColor(b,1)}setOrReportCursorColor(b){return this._setOrReportSpecialColor(b,2)}restoreIndexedColor(b){if(!b)return this._onColor.fire([{type:2}]),!0;let P=[],k=b.split(";");for(let R=0;R<k.length;++R)if(/^\d+$/.exec(k[R])){let F=parseInt(k[R]);G(F)&&P.push({type:2,index:F})}return P.length&&this._onColor.fire(P),!0}restoreFgColor(b){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(b){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(b){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,w.DEFAULT_CHARSET),!0}selectCharset(b){return b.length!==2?(this.selectDefaultCharset(),!0):(b[0]==="/"||this._charsetService.setgCharset(O[b[0]],w.CHARSETS[b[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 b=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,b,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=s.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=s.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(b){return this._charsetService.setgLevel(b),!0}screenAlignmentPattern(){let b=new d.CellData;b.content=4194373,b.fg=this._curAttrData.fg,b.bg=this._curAttrData.bg,this._setCursor(0,0);for(let P=0;P<this._bufferService.rows;++P){let k=this._activeBuffer.ybase+this._activeBuffer.y+P,R=this._activeBuffer.lines.get(k);R&&(R.fill(b),R.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(b,P){let k=this._bufferService.buffer,R=this._optionsService.rawOptions;return(F=>(this._coreService.triggerDataEvent(`${o.C0.ESC}${F}${o.C0.ESC}\\`),!0))(b==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:b==='"p'?'P1$r61;1"p':b==="r"?`P1$r${k.scrollTop+1};${k.scrollBottom+1}r`:b==="m"?"P1$r0m":b===" q"?`P1$r${{block:2,underline:4,bar:6}[R.cursorStyle]-(R.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(b,P){this._dirtyRowTracker.markRangeDirty(b,P)}}n.InputHandler=z;let W=class{constructor(q){this._bufferService=q,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(q){q<this.start?this.start=q:q>this.end&&(this.end=q)}markRangeDirty(q,b){q>b&&(j=q,q=b,b=j),q<this.start&&(this.start=q),b>this.end&&(this.end=b)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function G(q){return 0<=q&&q<256}W=p([y(0,u.IBufferService)],W)},701:(T,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 y=h.match(/Version\/(\d+)/);return y===null||y.length<2?0:parseInt(y[1])},n.isNode=typeof process<"u"&&"title"in process;let h=n.isNode?"node":navigator.userAgent,p=n.isNode?"node":navigator.platform;n.isFirefox=h.includes("Firefox"),n.isLegacyEdge=h.includes("Edge"),n.isSafari=/^((?!chrome|android).)*safari/i.test(h),n.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(p),n.isIpad=p==="iPad",n.isIphone=p==="iPhone",n.isWindows=["Windows","Win16","Win32","WinCE"].includes(p),n.isLinux=p.indexOf("Linux")>=0,n.isChromeOS=/\bCrOS\b/.test(h)},6168:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DebouncedIdleTask=n.IdleTaskQueue=n.PriorityTaskQueue=void 0;let p=h(701);class y{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,s=l.timeRemaining(),f=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,_),f=l.timeRemaining(),1.5*_>f)return s-g<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s-g))}ms`),void this._start();s=f}this.clear()}}class o extends y{_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=o,n.IdleTaskQueue=!p.isNode&&"requestIdleCallback"in window?class extends y{_requestCallback(w){return requestIdleCallback(w)}_cancelCallback(w){cancelIdleCallback(w)}}:o,n.DebouncedIdleTask=class{constructor(){this._queue=new n.IdleTaskQueue}set(w){this._queue.clear(),this._queue.enqueue(w)}flush(){this._queue.flush()}}},5882:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(y){let o=y.buffer.lines.get(y.buffer.ybase+y.buffer.y-1),w=o?.get(y.cols-1),l=y.buffer.lines.get(y.buffer.ybase+y.buffer.y);l&&w&&(l.isWrapped=w[p.CHAR_DATA_CODE_INDEX]!==p.NULL_CELL_CODE&&w[p.CHAR_DATA_CODE_INDEX]!==p.WHITESPACE_CELL_CODE)};let p=h(8938)},5451:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ExtendedAttrs=n.AttributeData=void 0;class h{constructor(){this.fg=0,this.bg=0,this.extended=new p}static toColorRGB(o){return[o>>>16&255,o>>>8&255,255&o]}static fromColorRGB(o){return(255&o[0])<<16|(255&o[1])<<8|255&o[2]}clone(){let o=new h;return o.fg=this.fg,o.bg=this.bg,o.extended=this.extended.clone(),o}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=h;class p{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(o){this._ext=o}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(o){this._ext&=-469762049,this._ext|=o<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(o){this._ext&=-67108864,this._ext|=67108863&o}get urlId(){return this._urlId}set urlId(o){this._urlId=o}get underlineVariantOffset(){let o=(3758096384&this._ext)>>29;return o<0?4294967288^o:o}set underlineVariantOffset(o){this._ext&=536870911,this._ext|=o<<29&3758096384}constructor(o=0,w=0){this._ext=0,this._urlId=0,this._ext=o,this._urlId=w}clone(){return new p(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}n.ExtendedAttrs=p},1073:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Buffer=n.MAX_BUFFER_SIZE=void 0;let p=h(5639),y=h(6168),o=h(5451),w=h(6107),l=h(732),g=h(3055),_=h(8938),s=h(8158),f=h(6760);n.MAX_BUFFER_SIZE=4294967295,n.Buffer=class{constructor(d,c,u){this._hasScrollback=d,this._optionsService=c,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=f.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 y.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new p.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(d){return d?(this._nullCell.fg=d.fg,this._nullCell.bg=d.bg,this._nullCell.extended=d.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new o.ExtendedAttrs),this._nullCell}getWhitespaceCell(d){return d?(this._whitespaceCell.fg=d.fg,this._whitespaceCell.bg=d.bg,this._whitespaceCell.extended=d.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new o.ExtendedAttrs),this._whitespaceCell}getBlankLine(d,c){return new w.BufferLine(this._bufferService.cols,this.getNullCell(d),c)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let d=this.ybase+this.y-this.ydisp;return d>=0&&d<this._rows}_getCorrectBufferLength(d){if(!this._hasScrollback)return d;let c=d+this._optionsService.rawOptions.scrollback;return c>n.MAX_BUFFER_SIZE?n.MAX_BUFFER_SIZE:c}fillViewportRows(d){if(this.lines.length===0){d===void 0&&(d=w.DEFAULT_ATTR_DATA);let c=this._rows;for(;c--;)this.lines.push(this.getBlankLine(d))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new p.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(d,c){let u=this.getNullCell(w.DEFAULT_ATTR_DATA),m=0,v=this._getCorrectBufferLength(c);if(v>this.lines.maxLength&&(this.lines.maxLength=v),this.lines.length>0){if(this._cols<d)for(let E=0;E<this.lines.length;E++)m+=+this.lines.get(E).resize(d,u);let I=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(d,u)):this.ybase>0&&this.lines.length<=this.ybase+this.y+I+1?(this.ybase--,I++,this.ydisp>0&&this.ydisp--):this.lines.push(new w.BufferLine(d,u)));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(v<this.lines.maxLength){let E=this.lines.length-v;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=v}this.x=Math.min(this.x,d-1),this.y=Math.min(this.y,c-1),I&&(this.y+=I),this.savedX=Math.min(this.savedX,d-1),this.scrollTop=0}if(this.scrollBottom=c-1,this._isReflowEnabled&&(this._reflow(d,c),this._cols>d))for(let I=0;I<this.lines.length;I++)m+=+this.lines.get(I).resize(d,u);this._cols=d,this._rows=c,this._memoryCleanupQueue.clear(),m>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let d=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,d=!1);let c=0;for(;this._memoryCleanupPosition<this.lines.length;)if(c+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),c>100)return!0;return d}get _isReflowEnabled(){let d=this._optionsService.rawOptions.windowsPty;return d&&d.buildNumber?this._hasScrollback&&d.backend==="conpty"&&d.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(d,c){this._cols!==d&&(d>this._cols?this._reflowLarger(d,c):this._reflowSmaller(d,c))}_reflowLarger(d,c){let u=this._optionsService.rawOptions.reflowCursorLine,m=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,d,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),u);if(m.length>0){let v=(0,l.reflowLargerCreateNewLayout)(this.lines,m);(0,l.reflowLargerApplyNewLayout)(this.lines,v.layout),this._reflowLargerAdjustViewport(d,c,v.countRemoved)}}_reflowLargerAdjustViewport(d,c,u){let m=this.getNullCell(w.DEFAULT_ATTR_DATA),v=u;for(;v-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<c&&this.lines.push(new w.BufferLine(d,m))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-u,0)}_reflowSmaller(d,c){let u=this._optionsService.rawOptions.reflowCursorLine,m=this.getNullCell(w.DEFAULT_ATTR_DATA),v=[],I=0;for(let E=this.lines.length-1;E>=0;E--){let N=this.lines.get(E);if(!N||!N.isWrapped&&N.getTrimmedLength()<=d)continue;let O=[N];for(;N.isWrapped&&E>0;)N=this.lines.get(--E),O.unshift(N);if(!u){let k=this.ybase+this.y;if(k>=E&&k<E+O.length)continue}let A=O[O.length-1].getTrimmedLength(),D=(0,l.reflowSmallerGetNewLineLengths)(O,this._cols,d),C=D.length-O.length,j;j=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+C):Math.max(0,this.lines.length-this.lines.maxLength+C);let z=[];for(let k=0;k<C;k++){let R=this.getBlankLine(w.DEFAULT_ATTR_DATA,!0);z.push(R)}z.length>0&&(v.push({start:E+O.length+I,newLines:z}),I+=z.length),O.push(...z);let W=D.length-1,G=D[W];G===0&&(W--,G=D[W]);let q=O.length-C-1,b=A;for(;q>=0;){let k=Math.min(b,G);if(O[W]===void 0)break;if(O[W].copyCellsFrom(O[q],b-k,G-k,k,!0),G-=k,G===0&&(W--,G=D[W]),b-=k,b===0){q--;let R=Math.max(q,0);b=(0,l.getWrappedLineTrimmedLength)(O,R,this._cols)}}for(let k=0;k<O.length;k++)D[k]<d&&O[k].setCell(D[k],m);let P=C-j;for(;P-- >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+I)-c&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+C,this.ybase+c-1)}if(v.length>0){let E=[],N=[];for(let G=0;G<this.lines.length;G++)N.push(this.lines.get(G));let O=this.lines.length,A=O-1,D=0,C=v[D];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+I);let j=0;for(let G=Math.min(this.lines.maxLength-1,O+I-1);G>=0;G--)if(C&&C.start>A+j){for(let q=C.newLines.length-1;q>=0;q--)this.lines.set(G--,C.newLines[q]);G++,E.push({index:A+1,amount:C.newLines.length}),j+=C.newLines.length,C=v[++D]}else this.lines.set(G,N[A--]);let z=0;for(let G=E.length-1;G>=0;G--)E[G].index+=z,this.lines.onInsertEmitter.fire(E[G]),z+=E[G].amount;let W=Math.max(0,O+I-this.lines.maxLength);W>0&&this.lines.onTrimEmitter.fire(W)}}translateBufferLineToString(d,c,u=0,m){let v=this.lines.get(d);return v?v.translateToString(c,u,m):""}getWrappedRangeForLine(d){let c=d,u=d;for(;c>0&&this.lines.get(c).isWrapped;)c--;for(;u+1<this.lines.length&&this.lines.get(u+1).isWrapped;)u++;return{first:c,last:u}}setupTabStops(d){for(d!=null?this.tabs[d]||(d=this.prevStop(d)):(this.tabs={},d=0);d<this._cols;d+=this._optionsService.rawOptions.tabStopWidth)this.tabs[d]=!0}prevStop(d){for(d==null&&(d=this.x);!this.tabs[--d]&&d>0;);return d>=this._cols?this._cols-1:d<0?0:d}nextStop(d){for(d==null&&(d=this.x);!this.tabs[++d]&&d<this._cols;);return d>=this._cols?this._cols-1:d<0?0:d}clearMarkers(d){this._isClearing=!0;for(let c=0;c<this.markers.length;c++)this.markers[c].line===d&&(this.markers[c].dispose(),this.markers.splice(c--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let d=0;d<this.markers.length;d++)this.markers[d].dispose();this.markers.length=0,this._isClearing=!1}addMarker(d){let c=new s.Marker(d);return this.markers.push(c),c.register(this.lines.onTrim((u=>{c.line-=u,c.line<0&&c.dispose()}))),c.register(this.lines.onInsert((u=>{c.line>=u.index&&(c.line+=u.amount)}))),c.register(this.lines.onDelete((u=>{c.line>=u.index&&c.line<u.index+u.amount&&c.dispose(),c.line>u.index&&(c.line-=u.amount)}))),c.register(c.onDispose((()=>this._removeMarker(c)))),c}_removeMarker(d){this._isClearing||this.markers.splice(this.markers.indexOf(d),1)}}},6107:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLine=n.DEFAULT_ATTR_DATA=void 0;let p=h(5451),y=h(3055),o=h(8938),w=h(726);n.DEFAULT_ATTR_DATA=Object.freeze(new p.AttributeData);let l=0;class g{constructor(s,f,d=!1){this.isWrapped=d,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*s);let c=f||y.CellData.fromCharData([0,o.NULL_CELL_CHAR,o.NULL_CELL_WIDTH,o.NULL_CELL_CODE]);for(let u=0;u<s;++u)this.setCell(u,c);this.length=s}get(s){let f=this._data[3*s+0],d=2097151&f;return[this._data[3*s+1],2097152&f?this._combined[s]:d?(0,w.stringFromCodePoint)(d):"",f>>22,2097152&f?this._combined[s].charCodeAt(this._combined[s].length-1):d]}set(s,f){this._data[3*s+1]=f[o.CHAR_DATA_ATTR_INDEX],f[o.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[s]=f[1],this._data[3*s+0]=2097152|s|f[o.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*s+0]=f[o.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|f[o.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(s){return this._data[3*s+0]>>22}hasWidth(s){return 12582912&this._data[3*s+0]}getFg(s){return this._data[3*s+1]}getBg(s){return this._data[3*s+2]}hasContent(s){return 4194303&this._data[3*s+0]}getCodePoint(s){let f=this._data[3*s+0];return 2097152&f?this._combined[s].charCodeAt(this._combined[s].length-1):2097151&f}isCombined(s){return 2097152&this._data[3*s+0]}getString(s){let f=this._data[3*s+0];return 2097152&f?this._combined[s]:2097151&f?(0,w.stringFromCodePoint)(2097151&f):""}isProtected(s){return 536870912&this._data[3*s+2]}loadCell(s,f){return l=3*s,f.content=this._data[l+0],f.fg=this._data[l+1],f.bg=this._data[l+2],2097152&f.content&&(f.combinedData=this._combined[s]),268435456&f.bg&&(f.extended=this._extendedAttrs[s]),f}setCell(s,f){2097152&f.content&&(this._combined[s]=f.combinedData),268435456&f.bg&&(this._extendedAttrs[s]=f.extended),this._data[3*s+0]=f.content,this._data[3*s+1]=f.fg,this._data[3*s+2]=f.bg}setCellFromCodepoint(s,f,d,c){268435456&c.bg&&(this._extendedAttrs[s]=c.extended),this._data[3*s+0]=f|d<<22,this._data[3*s+1]=c.fg,this._data[3*s+2]=c.bg}addCodepointToCell(s,f,d){let c=this._data[3*s+0];2097152&c?this._combined[s]+=(0,w.stringFromCodePoint)(f):2097151&c?(this._combined[s]=(0,w.stringFromCodePoint)(2097151&c)+(0,w.stringFromCodePoint)(f),c&=-2097152,c|=2097152):c=f|4194304,d&&(c&=-12582913,c|=d<<22),this._data[3*s+0]=c}insertCells(s,f,d){if((s%=this.length)&&this.getWidth(s-1)===2&&this.setCellFromCodepoint(s-1,0,1,d),f<this.length-s){let c=new y.CellData;for(let u=this.length-s-f-1;u>=0;--u)this.setCell(s+f+u,this.loadCell(s+u,c));for(let u=0;u<f;++u)this.setCell(s+u,d)}else for(let c=s;c<this.length;++c)this.setCell(c,d);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,d)}deleteCells(s,f,d){if(s%=this.length,f<this.length-s){let c=new y.CellData;for(let u=0;u<this.length-s-f;++u)this.setCell(s+u,this.loadCell(s+f+u,c));for(let u=this.length-f;u<this.length;++u)this.setCell(u,d)}else for(let c=s;c<this.length;++c)this.setCell(c,d);s&&this.getWidth(s-1)===2&&this.setCellFromCodepoint(s-1,0,1,d),this.getWidth(s)!==0||this.hasContent(s)||this.setCellFromCodepoint(s,0,1,d)}replaceCells(s,f,d,c=!1){if(c)for(s&&this.getWidth(s-1)===2&&!this.isProtected(s-1)&&this.setCellFromCodepoint(s-1,0,1,d),f<this.length&&this.getWidth(f-1)===2&&!this.isProtected(f)&&this.setCellFromCodepoint(f,0,1,d);s<f&&s<this.length;)this.isProtected(s)||this.setCell(s,d),s++;else for(s&&this.getWidth(s-1)===2&&this.setCellFromCodepoint(s-1,0,1,d),f<this.length&&this.getWidth(f-1)===2&&this.setCellFromCodepoint(f,0,1,d);s<f&&s<this.length;)this.setCell(s++,d)}resize(s,f){if(s===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let d=3*s;if(s>this.length){if(this._data.buffer.byteLength>=4*d)this._data=new Uint32Array(this._data.buffer,0,d);else{let c=new Uint32Array(d);c.set(this._data),this._data=c}for(let c=this.length;c<s;++c)this.setCell(c,f)}else{this._data=this._data.subarray(0,d);let c=Object.keys(this._combined);for(let m=0;m<c.length;m++){let v=parseInt(c[m],10);v>=s&&delete this._combined[v]}let u=Object.keys(this._extendedAttrs);for(let m=0;m<u.length;m++){let v=parseInt(u[m],10);v>=s&&delete this._extendedAttrs[v]}}return this.length=s,4*d*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let s=new Uint32Array(this._data.length);return s.set(this._data),this._data=s,1}return 0}fill(s,f=!1){if(f)for(let d=0;d<this.length;++d)this.isProtected(d)||this.setCell(d,s);else{this._combined={},this._extendedAttrs={};for(let d=0;d<this.length;++d)this.setCell(d,s)}}copyFrom(s){this.length!==s.length?this._data=new Uint32Array(s._data):this._data.set(s._data),this.length=s.length,this._combined={};for(let f in s._combined)this._combined[f]=s._combined[f];this._extendedAttrs={};for(let f in s._extendedAttrs)this._extendedAttrs[f]=s._extendedAttrs[f];this.isWrapped=s.isWrapped}clone(){let s=new g(0);s._data=new Uint32Array(this._data),s.length=this.length;for(let f in this._combined)s._combined[f]=this._combined[f];for(let f in this._extendedAttrs)s._extendedAttrs[f]=this._extendedAttrs[f];return s.isWrapped=this.isWrapped,s}getTrimmedLength(){for(let s=this.length-1;s>=0;--s)if(4194303&this._data[3*s+0])return s+(this._data[3*s+0]>>22);return 0}getNoBgTrimmedLength(){for(let s=this.length-1;s>=0;--s)if(4194303&this._data[3*s+0]||50331648&this._data[3*s+2])return s+(this._data[3*s+0]>>22);return 0}copyCellsFrom(s,f,d,c,u){let m=s._data;if(u)for(let I=c-1;I>=0;I--){for(let E=0;E<3;E++)this._data[3*(d+I)+E]=m[3*(f+I)+E];268435456&m[3*(f+I)+2]&&(this._extendedAttrs[d+I]=s._extendedAttrs[f+I])}else for(let I=0;I<c;I++){for(let E=0;E<3;E++)this._data[3*(d+I)+E]=m[3*(f+I)+E];268435456&m[3*(f+I)+2]&&(this._extendedAttrs[d+I]=s._extendedAttrs[f+I])}let v=Object.keys(s._combined);for(let I=0;I<v.length;I++){let E=parseInt(v[I],10);E>=f&&(this._combined[E-f+d]=s._combined[E])}}translateToString(s,f,d,c){f=f??0,d=d??this.length,s&&(d=Math.min(d,this.getTrimmedLength())),c&&(c.length=0);let u="";for(;f<d;){let m=this._data[3*f+0],v=2097151&m,I=2097152&m?this._combined[f]:v?(0,w.stringFromCodePoint)(v):o.WHITESPACE_CELL_CHAR;if(u+=I,c)for(let E=0;E<I.length;++E)c.push(f);f+=m>>22||1}return c&&c.push(f),u}}n.BufferLine=g},732:(T,n)=>{function h(p,y,o){if(y===p.length-1)return p[y].getTrimmedLength();let w=!p[y].hasContent(o-1)&&p[y].getWidth(o-1)===1,l=p[y+1].getWidth(0)===2;return w&&l?o-1:o}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(p,y,o,w,l,g){let _=[];for(let s=0;s<p.length-1;s++){let f=s,d=p.get(++f);if(!d.isWrapped)continue;let c=[p.get(s)];for(;f<p.length&&d.isWrapped;)c.push(d),d=p.get(++f);if(!g&&w>=s&&w<f){s+=c.length-1;continue}let u=0,m=h(c,u,y),v=1,I=0;for(;v<c.length;){let N=h(c,v,y),O=N-I,A=o-m,D=Math.min(O,A);c[u].copyCellsFrom(c[v],I,m,D,!1),m+=D,m===o&&(u++,m=0),I+=D,I===N&&(v++,I=0),m===0&&u!==0&&c[u-1].getWidth(o-1)===2&&(c[u].copyCellsFrom(c[u-1],o-1,m++,1,!1),c[u-1].setCell(o-1,l))}c[u].replaceCells(m,o,l);let E=0;for(let N=c.length-1;N>0&&(N>u||c[N].getTrimmedLength()===0);N--)E++;E>0&&(_.push(s+c.length-E),_.push(E)),s+=c.length-1}return _},n.reflowLargerCreateNewLayout=function(p,y){let o=[],w=0,l=y[w],g=0;for(let _=0;_<p.length;_++)if(l===_){let s=y[++w];p.onDeleteEmitter.fire({index:_-g,amount:s}),_+=s-1,g+=s,l=y[++w]}else o.push(_);return{layout:o,countRemoved:g}},n.reflowLargerApplyNewLayout=function(p,y){let o=[];for(let w=0;w<y.length;w++)o.push(p.get(y[w]));for(let w=0;w<o.length;w++)p.set(w,o[w]);p.length=y.length},n.reflowSmallerGetNewLineLengths=function(p,y,o){let w=[],l=p.map(((f,d)=>h(p,d,y))).reduce(((f,d)=>f+d)),g=0,_=0,s=0;for(;s<l;){if(l-s<o){w.push(l-s);break}g+=o;let f=h(p,_,y);g>f&&(g-=f,_++);let d=p[_].getWidth(g-1)===2;d&&g--;let c=d?o-1:o;w.push(c),s+=c}return w},n.getWrappedLineTrimmedLength=h},4097:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferSet=void 0;let p=h(7150),y=h(1073),o=h(802);class w extends p.Disposable{constructor(g,_){super(),this._optionsService=g,this._bufferService=_,this._onBufferActivate=this._register(new o.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 y.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new y.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:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let p=h(726),y=h(8938),o=h(5451);class w extends o.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new o.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,p.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(g){this.fg=g[y.CHAR_DATA_ATTR_INDEX],this.bg=0;let _=!1;if(g[y.CHAR_DATA_CHAR_INDEX].length>2)_=!0;else if(g[y.CHAR_DATA_CHAR_INDEX].length===2){let s=g[y.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=s&&s<=56319){let f=g[y.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=f&&f<=57343?this.content=1024*(s-55296)+f-56320+65536|g[y.CHAR_DATA_WIDTH_INDEX]<<22:_=!0}else _=!0}else this.content=g[y.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|g[y.CHAR_DATA_WIDTH_INDEX]<<22;_&&(this.combinedData=g[y.CHAR_DATA_CHAR_INDEX],this.content=2097152|g[y.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}n.CellData=w},8938:(T,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:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let p=h(802),y=h(7150);class o{get id(){return this._id}constructor(l){this.line=l,this.isDisposed=!1,this._disposables=[],this._id=o._nextId++,this._onDispose=this.register(new p.Emitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,y.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}n.Marker=o,o._nextId=1},6760:(T,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:(T,n)=>{var h,p,y;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.C0=void 0,(function(o){o.NUL="\0",o.SOH="",o.STX="",o.ETX="",o.EOT="",o.ENQ="",o.ACK="",o.BEL="\x07",o.BS="\b",o.HT=" ",o.LF=`
|
|
3
|
-
`,o.VT="\v",o.FF="\f",o.CR="\r",o.SO="",o.SI="",o.DLE="",o.DC1="",o.DC2="",o.DC3="",o.DC4="",o.NAK="",o.SYN="",o.ETB="",o.CAN="",o.EM="",o.SUB="",o.ESC="\x1B",o.FS="",o.GS="",o.RS="",o.US="",o.SP=" ",o.DEL="\x7F"})(h||(n.C0=h={})),(function(o){o.PAD="\x80",o.HOP="\x81",o.BPH="\x82",o.NBH="\x83",o.IND="\x84",o.NEL="\x85",o.SSA="\x86",o.ESA="\x87",o.HTS="\x88",o.HTJ="\x89",o.VTS="\x8A",o.PLD="\x8B",o.PLU="\x8C",o.RI="\x8D",o.SS2="\x8E",o.SS3="\x8F",o.DCS="\x90",o.PU1="\x91",o.PU2="\x92",o.STS="\x93",o.CCH="\x94",o.MW="\x95",o.SPA="\x96",o.EPA="\x97",o.SOS="\x98",o.SGCI="\x99",o.SCI="\x9A",o.CSI="\x9B",o.ST="\x9C",o.OSC="\x9D",o.PM="\x9E",o.APC="\x9F"})(p||(n.C1=p={})),(function(o){o.ST=`${h.ESC}\\`})(y||(n.C1_ESCAPED=y={}))},726:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Utf8ToUtf32=n.StringToUtf32=void 0,n.stringFromCodePoint=function(h){return h>65535?(h-=65536,String.fromCharCode(55296+(h>>10))+String.fromCharCode(h%1024+56320)):String.fromCharCode(h)},n.utf32ToString=function(h,p=0,y=h.length){let o="";for(let w=p;w<y;++w){let l=h[w];l>65535?(l-=65536,o+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):o+=String.fromCharCode(l)}return o},n.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(h,p){let y=h.length;if(!y)return 0;let o=0,w=0;if(this._interim){let l=h.charCodeAt(w++);56320<=l&&l<=57343?p[o++]=1024*(this._interim-55296)+l-56320+65536:(p[o++]=this._interim,p[o++]=l),this._interim=0}for(let l=w;l<y;++l){let g=h.charCodeAt(l);if(55296<=g&&g<=56319){if(++l>=y)return this._interim=g,o;let _=h.charCodeAt(l);56320<=_&&_<=57343?p[o++]=1024*(g-55296)+_-56320+65536:(p[o++]=g,p[o++]=_)}else g!==65279&&(p[o++]=g)}return o}},n.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(h,p){let y=h.length;if(!y)return 0;let o,w,l,g,_=0,s=0,f=0;if(this.interim[0]){let u=!1,m=this.interim[0];m&=(224&m)==192?31:(240&m)==224?15:7;let v,I=0;for(;(v=63&this.interim[++I])&&I<4;)m<<=6,m|=v;let E=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,N=E-I;for(;f<N;){if(f>=y)return 0;if(v=h[f++],(192&v)!=128){f--,u=!0;break}this.interim[I++]=v,m<<=6,m|=63&v}u||(E===2?m<128?f--:p[_++]=m:E===3?m<2048||m>=55296&&m<=57343||m===65279||(p[_++]=m):m<65536||m>1114111||(p[_++]=m)),this.interim.fill(0)}let d=y-4,c=f;for(;c<y;){for(;!(!(c<d)||128&(o=h[c])||128&(w=h[c+1])||128&(l=h[c+2])||128&(g=h[c+3]));)p[_++]=o,p[_++]=w,p[_++]=l,p[_++]=g,c+=4;if(o=h[c++],o<128)p[_++]=o;else if((224&o)==192){if(c>=y)return this.interim[0]=o,_;if(w=h[c++],(192&w)!=128){c--;continue}if(s=(31&o)<<6|63&w,s<128){c--;continue}p[_++]=s}else if((240&o)==224){if(c>=y)return this.interim[0]=o,_;if(w=h[c++],(192&w)!=128){c--;continue}if(c>=y)return this.interim[0]=o,this.interim[1]=w,_;if(l=h[c++],(192&l)!=128){c--;continue}if(s=(15&o)<<12|(63&w)<<6|63&l,s<2048||s>=55296&&s<=57343||s===65279)continue;p[_++]=s}else if((248&o)==240){if(c>=y)return this.interim[0]=o,_;if(w=h[c++],(192&w)!=128){c--;continue}if(c>=y)return this.interim[0]=o,this.interim[1]=w,_;if(l=h[c++],(192&l)!=128){c--;continue}if(c>=y)return this.interim[0]=o,this.interim[1]=w,this.interim[2]=l,_;if(g=h[c++],(192&g)!=128){c--;continue}if(s=(7&o)<<18|(63&w)<<12|(63&l)<<6|63&g,s<65536||s>1114111)continue;p[_++]=s}}return _}}},7428:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeV6=void 0;let p=h(6415),y=[[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]],o=[[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<y.length;++l)w.fill(0,y[l][0],y[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?w[l]:(function(g,_){let s,f=0,d=_.length-1;if(g<_[0][0]||g>_[d][1])return!1;for(;d>=f;)if(s=f+d>>1,g>_[s][1])f=s+1;else{if(!(g<_[s][0]))return!0;d=s-1}return!1})(l,o)?0:l>=131072&&l<=196605||l>=196608&&l<=262141?2:1}charProperties(l,g){let _=this.wcwidth(l),s=_===0&&g!==0;if(s){let f=p.UnicodeService.extractWidth(g);f===0?s=!1:f>_&&(_=f)}return p.UnicodeService.createPropertyValue(0,_,s)}}},3562:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.WriteBuffer=void 0;let p=h(7150),y=h(802);class o extends p.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 y.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 s=this._callbacks.shift();s&&s()}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 s=this._writeBuffer[this._bufferOffset],f=this._action(s,g);if(f){let c=u=>performance.now()-_>=12?setTimeout((()=>this._innerWrite(0,u))):this._innerWrite(_,u);return void f.catch((u=>(queueMicrotask((()=>{throw u})),Promise.resolve(!1)))).then(c)}let d=this._callbacks[this._bufferOffset];if(d&&d(),this._bufferOffset++,this._pendingData-=s.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=o},8693:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.parseColor=function(o){if(!o)return;let w=o.toLowerCase();if(w.indexOf("rgb:")===0){w=w.slice(4);let l=h.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),p.exec(w)&&[3,6,9,12].includes(w.length))){let l=w.length/3,g=[0,0,0];for(let _=0;_<3;++_){let s=parseInt(w.slice(l*_,l*_+l),16);g[_]=l===1?s<<4:l===2?s:l===3?s>>4:s>>8}return g}},n.toRgbString=function(o,w=16){let[l,g,_]=o;return`rgb:${y(l,w)}/${y(g,w)}/${y(_,w)}`};let h=/^([\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})$/,p=/^[\da-f]+$/;function y(o,w){let l=o.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:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.PAYLOAD_LIMIT=void 0,n.PAYLOAD_LIMIT=1e7},9823:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DcsHandler=n.DcsParser=void 0;let p=h(726),y=h(7262),o=h(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 s=this._handlers[g];return s.push(_),{dispose:()=>{let f=s.indexOf(_);f!==-1&&s.splice(f,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 s=this._active.length-1;s>=0;s--)this._active[s].hook(_);else this._handlerFb(this._ident,"HOOK",_)}put(g,_,s){if(this._active.length)for(let f=this._active.length-1;f>=0;f--)this._active[f].put(g,_,s);else this._handlerFb(this._ident,"PUT",(0,p.utf32ToString)(g,_,s))}unhook(g,_=!0){if(this._active.length){let s=!1,f=this._active.length-1,d=!1;if(this._stack.paused&&(f=this._stack.loopPosition-1,s=_,d=this._stack.fallThrough,this._stack.paused=!1),!d&&s===!1){for(;f>=0&&(s=this._active[f].unhook(g),s!==!0);f--)if(s instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=f,this._stack.fallThrough=!1,s;f--}for(;f>=0;f--)if(s=this._active[f].unhook(!1),s instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=f,this._stack.fallThrough=!0,s}else this._handlerFb(this._ident,"UNHOOK",g);this._active=w,this._ident=0}};let l=new y.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,_,s){this._hitLimit||(this._data+=(0,p.utf32ToString)(g,_,s),this._data.length>o.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((s=>(this._params=l,this._data="",this._hitLimit=!1,s)));return this._params=l,this._data="",this._hitLimit=!1,_}}},6717:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.EscapeSequenceParser=n.VT500_TRANSITION_TABLE=n.TransitionTable=void 0;let p=h(7150),y=h(7262),o=h(1346),w=h(9823);class l{constructor(f){this.table=new Uint8Array(f)}setDefault(f,d){this.table.fill(f<<4|d)}add(f,d,c,u){this.table[d<<8|f]=c<<4|u}addMany(f,d,c,u){for(let m=0;m<f.length;m++)this.table[d<<8|f[m]]=c<<4|u}}n.TransitionTable=l;let g=160;n.VT500_TRANSITION_TABLE=(function(){let s=new l(4095),f=Array.apply(null,Array(256)).map(((I,E)=>E)),d=(I,E)=>f.slice(I,E),c=d(32,127),u=d(0,24);u.push(25),u.push.apply(u,d(28,32));let m=d(0,14),v;for(v in s.setDefault(1,0),s.addMany(c,0,2,0),m)s.addMany([24,26,153,154],v,3,0),s.addMany(d(128,144),v,3,0),s.addMany(d(144,152),v,3,0),s.add(156,v,0,0),s.add(27,v,11,1),s.add(157,v,4,8),s.addMany([152,158,159],v,0,7),s.add(155,v,11,3),s.add(144,v,11,9);return s.addMany(u,0,3,0),s.addMany(u,1,3,1),s.add(127,1,0,1),s.addMany(u,8,0,8),s.addMany(u,3,3,3),s.add(127,3,0,3),s.addMany(u,4,3,4),s.add(127,4,0,4),s.addMany(u,6,3,6),s.addMany(u,5,3,5),s.add(127,5,0,5),s.addMany(u,2,3,2),s.add(127,2,0,2),s.add(93,1,4,8),s.addMany(c,8,5,8),s.add(127,8,5,8),s.addMany([156,27,24,26,7],8,6,0),s.addMany(d(28,32),8,0,8),s.addMany([88,94,95],1,0,7),s.addMany(c,7,0,7),s.addMany(u,7,0,7),s.add(156,7,0,0),s.add(127,7,0,7),s.add(91,1,11,3),s.addMany(d(64,127),3,7,0),s.addMany(d(48,60),3,8,4),s.addMany([60,61,62,63],3,9,4),s.addMany(d(48,60),4,8,4),s.addMany(d(64,127),4,7,0),s.addMany([60,61,62,63],4,0,6),s.addMany(d(32,64),6,0,6),s.add(127,6,0,6),s.addMany(d(64,127),6,0,0),s.addMany(d(32,48),3,9,5),s.addMany(d(32,48),5,9,5),s.addMany(d(48,64),5,0,6),s.addMany(d(64,127),5,7,0),s.addMany(d(32,48),4,9,5),s.addMany(d(32,48),1,9,2),s.addMany(d(32,48),2,9,2),s.addMany(d(48,127),2,10,0),s.addMany(d(48,80),1,10,0),s.addMany(d(81,88),1,10,0),s.addMany([89,90,92],1,10,0),s.addMany(d(96,127),1,10,0),s.add(80,1,11,9),s.addMany(u,9,0,9),s.add(127,9,0,9),s.addMany(d(28,32),9,0,9),s.addMany(d(32,48),9,9,12),s.addMany(d(48,60),9,8,10),s.addMany([60,61,62,63],9,9,10),s.addMany(u,11,0,11),s.addMany(d(32,128),11,0,11),s.addMany(d(28,32),11,0,11),s.addMany(u,10,0,10),s.add(127,10,0,10),s.addMany(d(28,32),10,0,10),s.addMany(d(48,60),10,8,10),s.addMany([60,61,62,63],10,0,11),s.addMany(d(32,48),10,9,12),s.addMany(u,12,0,12),s.add(127,12,0,12),s.addMany(d(28,32),12,0,12),s.addMany(d(32,48),12,9,12),s.addMany(d(48,64),12,0,11),s.addMany(d(64,127),12,12,13),s.addMany(d(64,127),10,12,13),s.addMany(d(64,127),9,12,13),s.addMany(u,13,13,13),s.addMany(c,13,13,13),s.add(127,13,0,13),s.addMany([27,156,24,26],13,14,0),s.add(g,0,2,0),s.add(g,8,5,8),s.add(g,6,0,6),s.add(g,11,0,11),s.add(g,13,13,13),s})();class _ extends p.Disposable{constructor(f=n.VT500_TRANSITION_TABLE){super(),this._transitions=f,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new y.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(d,c,u)=>{},this._executeHandlerFb=d=>{},this._csiHandlerFb=(d,c)=>{},this._escHandlerFb=d=>{},this._errorHandlerFb=d=>d,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register((0,p.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this._register(new o.OscParser),this._dcsParser=this._register(new w.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(f,d=[64,126]){let c=0;if(f.prefix){if(f.prefix.length>1)throw new Error("only one byte as prefix supported");if(c=f.prefix.charCodeAt(0),c&&60>c||c>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(f.intermediates){if(f.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let m=0;m<f.intermediates.length;++m){let v=f.intermediates.charCodeAt(m);if(32>v||v>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");c<<=8,c|=v}}if(f.final.length!==1)throw new Error("final must be a single byte");let u=f.final.charCodeAt(0);if(d[0]>u||u>d[1])throw new Error(`final must be in range ${d[0]} .. ${d[1]}`);return c<<=8,c|=u,c}identToString(f){let d=[];for(;f;)d.push(String.fromCharCode(255&f)),f>>=8;return d.reverse().join("")}setPrintHandler(f){this._printHandler=f}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(f,d){let c=this._identifier(f,[48,126]);this._escHandlers[c]===void 0&&(this._escHandlers[c]=[]);let u=this._escHandlers[c];return u.push(d),{dispose:()=>{let m=u.indexOf(d);m!==-1&&u.splice(m,1)}}}clearEscHandler(f){this._escHandlers[this._identifier(f,[48,126])]&&delete this._escHandlers[this._identifier(f,[48,126])]}setEscHandlerFallback(f){this._escHandlerFb=f}setExecuteHandler(f,d){this._executeHandlers[f.charCodeAt(0)]=d}clearExecuteHandler(f){this._executeHandlers[f.charCodeAt(0)]&&delete this._executeHandlers[f.charCodeAt(0)]}setExecuteHandlerFallback(f){this._executeHandlerFb=f}registerCsiHandler(f,d){let c=this._identifier(f);this._csiHandlers[c]===void 0&&(this._csiHandlers[c]=[]);let u=this._csiHandlers[c];return u.push(d),{dispose:()=>{let m=u.indexOf(d);m!==-1&&u.splice(m,1)}}}clearCsiHandler(f){this._csiHandlers[this._identifier(f)]&&delete this._csiHandlers[this._identifier(f)]}setCsiHandlerFallback(f){this._csiHandlerFb=f}registerDcsHandler(f,d){return this._dcsParser.registerHandler(this._identifier(f),d)}clearDcsHandler(f){this._dcsParser.clearHandler(this._identifier(f))}setDcsHandlerFallback(f){this._dcsParser.setHandlerFallback(f)}registerOscHandler(f,d){return this._oscParser.registerHandler(f,d)}clearOscHandler(f){this._oscParser.clearHandler(f)}setOscHandlerFallback(f){this._oscParser.setHandlerFallback(f)}setErrorHandler(f){this._errorHandler=f}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(f,d,c,u,m){this._parseStack.state=f,this._parseStack.handlers=d,this._parseStack.handlerPos=c,this._parseStack.transition=u,this._parseStack.chunkPos=m}parse(f,d,c){let u,m=0,v=0,I=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,I=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,N=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(c===!1&&N>-1){for(;N>=0&&(u=E[N](this._params),u!==!0);N--)if(u instanceof Promise)return this._parseStack.handlerPos=N,u}this._parseStack.handlers=[];break;case 4:if(c===!1&&N>-1){for(;N>=0&&(u=E[N](),u!==!0);N--)if(u instanceof Promise)return this._parseStack.handlerPos=N,u}this._parseStack.handlers=[];break;case 6:if(m=f[this._parseStack.chunkPos],u=this._dcsParser.unhook(m!==24&&m!==26,c),u)return u;m===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(m=f[this._parseStack.chunkPos],u=this._oscParser.end(m!==24&&m!==26,c),u)return u;m===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,I=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let E=I;E<d;++E){switch(m=f[E],v=this._transitions.table[this.currentState<<8|(m<160?m:g)],v>>4){case 2:for(let C=E+1;;++C){if(C>=d||(m=f[C])<32||m>126&&m<g){this._printHandler(f,E,C),E=C-1;break}if(++C>=d||(m=f[C])<32||m>126&&m<g){this._printHandler(f,E,C),E=C-1;break}if(++C>=d||(m=f[C])<32||m>126&&m<g){this._printHandler(f,E,C),E=C-1;break}if(++C>=d||(m=f[C])<32||m>126&&m<g){this._printHandler(f,E,C),E=C-1;break}}break;case 3:this._executeHandlers[m]?this._executeHandlers[m]():this._executeHandlerFb(m),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:E,code:m,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let N=this._csiHandlers[this._collect<<8|m],O=N?N.length-1:-1;for(;O>=0&&(u=N[O](this._params),u!==!0);O--)if(u instanceof Promise)return this._preserveStack(3,N,O,v,E),u;O<0&&this._csiHandlerFb(this._collect<<8|m,this._params),this.precedingJoinState=0;break;case 8:do switch(m){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(m-48)}while(++E<d&&(m=f[E])>47&&m<60);E--;break;case 9:this._collect<<=8,this._collect|=m;break;case 10:let A=this._escHandlers[this._collect<<8|m],D=A?A.length-1:-1;for(;D>=0&&(u=A[D](),u!==!0);D--)if(u instanceof Promise)return this._preserveStack(4,A,D,v,E),u;D<0&&this._escHandlerFb(this._collect<<8|m),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|m,this._params);break;case 13:for(let C=E+1;;++C)if(C>=d||(m=f[C])===24||m===26||m===27||m>127&&m<g){this._dcsParser.put(f,E,C),E=C-1;break}break;case 14:if(u=this._dcsParser.unhook(m!==24&&m!==26),u)return this._preserveStack(6,[],0,v,E),u;m===27&&(v|=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 C=E+1;;C++)if(C>=d||(m=f[C])<32||m>127&&m<g){this._oscParser.put(f,E,C),E=C-1;break}break;case 6:if(u=this._oscParser.end(m!==24&&m!==26),u)return this._preserveStack(5,[],0,v,E),u;m===27&&(v|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&v}}}n.EscapeSequenceParser=_},1346:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let p=h(1263),y=h(726),o=[];n.OscParser=class{constructor(){this._state=0,this._active=o,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=o}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=o,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||o,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,y.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,s=!1;if(this._stack.paused&&(_=this._stack.loopPosition-1,g=l,s=this._stack.fallThrough,this._stack.paused=!1),!s&&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=o,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,y.utf32ToString)(w,l,g),this._data.length>p.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:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Params=void 0;let h=2147483647;class p{static fromArray(o){let w=new p;if(!o.length)return w;for(let l=Array.isArray(o[0])?1:0;l<o.length;++l){let g=o[l];if(Array.isArray(g))for(let _=0;_<g.length;++_)w.addSubParam(g[_]);else w.addParam(g)}return w}constructor(o=32,w=32){if(this.maxLength=o,this.maxSubParamsLength=w,w>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(o),this.length=0,this._subParams=new Int32Array(w),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(o),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let o=new p(this.maxLength,this.maxSubParamsLength);return o.params.set(this.params),o.length=this.length,o._subParams.set(this._subParams),o._subParamsLength=this._subParamsLength,o._subParamsIdx.set(this._subParamsIdx),o._rejectDigits=this._rejectDigits,o._rejectSubDigits=this._rejectSubDigits,o._digitIsSub=this._digitIsSub,o}toArray(){let o=[];for(let w=0;w<this.length;++w){o.push(this.params[w]);let l=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-l>0&&o.push(Array.prototype.slice.call(this._subParams,l,g))}return o}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(o){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(o<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=o>h?h:o}}addSubParam(o){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(o<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=o>h?h:o,this._subParamsIdx[this.length-1]++}}hasSubParams(o){return(255&this._subParamsIdx[o])-(this._subParamsIdx[o]>>8)>0}getSubParams(o){let w=this._subParamsIdx[o]>>8,l=255&this._subParamsIdx[o];return l-w>0?this._subParams.subarray(w,l):null}getSubParamsAll(){let o={};for(let w=0;w<this.length;++w){let l=this._subParamsIdx[w]>>8,g=255&this._subParamsIdx[w];g-l>0&&(o[w]=this._subParams.slice(l,g))}return o}addDigit(o){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+o,h):o}}n.Params=p},3027:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.AddonManager=void 0,n.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let h=this._addons.length-1;h>=0;h--)this._addons[h].instance.dispose()}loadAddon(h,p){let y={instance:p,dispose:p.dispose,isDisposed:!1};this._addons.push(y),p.dispose=()=>this._wrappedAddonDispose(y),p.activate(h)}_wrappedAddonDispose(h){if(h.isDisposed)return;let p=-1;for(let y=0;y<this._addons.length;y++)if(this._addons[y]===h){p=y;break}if(p===-1)throw new Error("Could not dispose an addon that has not been loaded");h.isDisposed=!0,h.dispose.apply(h.instance),this._addons.splice(p,1)}}},3235:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferApiView=void 0;let p=h(793),y=h(3055);n.BufferApiView=class{constructor(o,w){this._buffer=o,this.type=w}init(o){return this._buffer=o,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(o){let w=this._buffer.lines.get(o);if(w)return new p.BufferLineApiView(w)}getNullCell(){return new y.CellData}}},793:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let p=h(3055);n.BufferLineApiView=class{constructor(y){this._line=y}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(y,o){if(!(y<0||y>=this._line.length))return o?(this._line.loadCell(y,o),o):this._line.loadCell(y,new p.CellData)}translateToString(y,o,w){return this._line.translateToString(y,o,w)}}},5101:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let p=h(3235),y=h(7150),o=h(802);class w extends y.Disposable{constructor(g){super(),this._core=g,this._onBufferChange=this._register(new o.Emitter),this.onBufferChange=this._onBufferChange.event,this._normal=new p.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new p.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:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.ParserApi=void 0,n.ParserApi=class{constructor(h){this._core=h}registerCsiHandler(h,p){return this._core.registerCsiHandler(h,(y=>p(y.toArray())))}addCsiHandler(h,p){return this.registerCsiHandler(h,p)}registerDcsHandler(h,p){return this._core.registerDcsHandler(h,((y,o)=>p(y,o.toArray())))}addDcsHandler(h,p){return this.registerDcsHandler(h,p)}registerEscHandler(h,p){return this._core.registerEscHandler(h,p)}addEscHandler(h,p){return this.registerEscHandler(h,p)}registerOscHandler(h,p){return this._core.registerOscHandler(h,p)}addOscHandler(h,p){return this.registerOscHandler(h,p)}}},4335:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeApi=void 0,n.UnicodeApi=class{constructor(h){this._core=h}register(h){this._core.unicodeService.register(h)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(h){this._core.unicodeService.activeVersion=h}}},9640:function(T,n,h){var p=this&&this.__decorate||function(s,f,d,c){var u,m=arguments.length,v=m<3?f:c===null?c=Object.getOwnPropertyDescriptor(f,d):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(s,f,d,c);else for(var I=s.length-1;I>=0;I--)(u=s[I])&&(v=(m<3?u(v):m>3?u(f,d,v):u(f,d))||v);return m>3&&v&&Object.defineProperty(f,d,v),v},y=this&&this.__param||function(s,f){return function(d,c){f(d,c,s)}};Object.defineProperty(n,"__esModule",{value:!0}),n.BufferService=n.MINIMUM_ROWS=n.MINIMUM_COLS=void 0;let o=h(7150),w=h(4097),l=h(6501),g=h(802);n.MINIMUM_COLS=2,n.MINIMUM_ROWS=1;let _=class extends o.Disposable{get buffer(){return this.buffers.active}constructor(s){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(s.rawOptions.cols||0,n.MINIMUM_COLS),this.rows=Math.max(s.rawOptions.rows||0,n.MINIMUM_ROWS),this.buffers=this._register(new w.BufferSet(s,this)),this._register(this.buffers.onBufferActivate((f=>{this._onScroll.fire(f.activeBuffer.ydisp)})))}resize(s,f){let d=this.cols!==s,c=this.rows!==f;this.cols=s,this.rows=f,this.buffers.resize(s,f),this._onResize.fire({cols:s,rows:f,colsChanged:d,rowsChanged:c})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(s,f=!1){let d=this.buffer,c;c=this._cachedBlankLine,c&&c.length===this.cols&&c.getFg(0)===s.fg&&c.getBg(0)===s.bg||(c=d.getBlankLine(s,f),this._cachedBlankLine=c),c.isWrapped=f;let u=d.ybase+d.scrollTop,m=d.ybase+d.scrollBottom;if(d.scrollTop===0){let v=d.lines.isFull;m===d.lines.length-1?v?d.lines.recycle().copyFrom(c):d.lines.push(c.clone()):d.lines.splice(m+1,0,c.clone()),v?this.isUserScrolling&&(d.ydisp=Math.max(d.ydisp-1,0)):(d.ybase++,this.isUserScrolling||d.ydisp++)}else{let v=m-u+1;d.lines.shiftElements(u+1,v-1,-1),d.lines.set(m,c.clone())}this.isUserScrolling||(d.ydisp=d.ybase),this._onScroll.fire(d.ydisp)}scrollLines(s,f){let d=this.buffer;if(s<0){if(d.ydisp===0)return;this.isUserScrolling=!0}else s+d.ydisp>=d.ybase&&(this.isUserScrolling=!1);let c=d.ydisp;d.ydisp=Math.max(Math.min(d.ydisp+s,d.ybase),0),c!==d.ydisp&&(f||this._onScroll.fire(d.ydisp))}};n.BufferService=_,n.BufferService=_=p([y(0,l.IOptionsService)],_)},5746:(T,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(h){this.glevel=h,this.charset=this._charsets[h]}setgCharset(h,p){this._charsets[h]=p,this.glevel===h&&(this.charset=p)}}},7792:function(T,n,h){var p=this&&this.__decorate||function(c,u,m,v){var I,E=arguments.length,N=E<3?u:v===null?v=Object.getOwnPropertyDescriptor(u,m):v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(c,u,m,v);else for(var O=c.length-1;O>=0;O--)(I=c[O])&&(N=(E<3?I(N):E>3?I(u,m,N):I(u,m))||N);return E>3&&N&&Object.defineProperty(u,m,N),N},y=this&&this.__param||function(c,u){return function(m,v){u(m,v,c)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreMouseService=void 0;let o=h(6501),w=h(7150),l=h(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,u){let m=(c.ctrl?16:0)|(c.shift?4:0)|(c.alt?8:0);return c.button===4?(m|=64,m|=c.action):(m|=3&c.button,4&c.button&&(m|=64),8&c.button&&(m|=128),c.action===32?m|=32:c.action!==0||u||(m|=3)),m}let s=String.fromCharCode,f={DEFAULT:c=>{let u=[_(c,!1)+32,c.col+32,c.row+32];return u[0]>255||u[1]>255||u[2]>255?"":`\x1B[M${s(u[0])}${s(u[1])}${s(u[2])}`},SGR:c=>{let u=c.action===0&&c.button!==4?"m":"M";return`\x1B[<${_(c,!0)};${c.col};${c.row}${u}`},SGR_PIXELS:c=>{let u=c.action===0&&c.button!==4?"m":"M";return`\x1B[<${_(c,!0)};${c.x};${c.y}${u}`}},d=class extends w.Disposable{constructor(c,u,m){super(),this._bufferService=c,this._coreService=u,this._optionsService=m,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 v of Object.keys(g))this.addProtocol(v,g[v]);for(let v of Object.keys(f))this.addEncoding(v,f[v]);this.reset()}addProtocol(c,u){this._protocols[c]=u}addEncoding(c,u){this._encodings[c]=u}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,u,m){if(c.deltaY===0||c.shiftKey||u===void 0||m===void 0)return 0;let v=u/m,I=this._applyScrollModifier(c.deltaY,c);return c.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(I/=v+0,Math.abs(c.deltaY)<50&&(I*=.3),this._wheelPartialScroll+=I,I=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):c.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(I*=this._bufferService.rows),I}_applyScrollModifier(c,u){return u.altKey||u.ctrlKey||u.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 u=this._encodings[this._activeEncoding](c);return u&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(u):this._coreService.triggerDataEvent(u,!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,u,m){if(m){if(c.x!==u.x||c.y!==u.y)return!1}else if(c.col!==u.col||c.row!==u.row)return!1;return c.button===u.button&&c.action===u.action&&c.ctrl===u.ctrl&&c.alt===u.alt&&c.shift===u.shift}};n.CoreMouseService=d,n.CoreMouseService=d=p([y(0,o.IBufferService),y(1,o.ICoreService),y(2,o.IOptionsService)],d)},4071:function(T,n,h){var p=this&&this.__decorate||function(d,c,u,m){var v,I=arguments.length,E=I<3?c:m===null?m=Object.getOwnPropertyDescriptor(c,u):m;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(d,c,u,m);else for(var N=d.length-1;N>=0;N--)(v=d[N])&&(E=(I<3?v(E):I>3?v(c,u,E):v(c,u))||E);return I>3&&E&&Object.defineProperty(c,u,E),E},y=this&&this.__param||function(d,c){return function(u,m){c(u,m,d)}};Object.defineProperty(n,"__esModule",{value:!0}),n.CoreService=void 0;let o=h(7453),w=h(7150),l=h(6501),g=h(802),_=Object.freeze({insertMode:!1}),s=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),f=class extends w.Disposable{constructor(d,c,u){super(),this._bufferService=d,this._logService=c,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,o.clone)(_),this.decPrivateModes=(0,o.clone)(s)}reset(){this.modes=(0,o.clone)(_),this.decPrivateModes=(0,o.clone)(s)}triggerDataEvent(d,c=!1){if(this._optionsService.rawOptions.disableStdin)return;let u=this._bufferService.buffer;c&&this._optionsService.rawOptions.scrollOnUserInput&&u.ybase!==u.ydisp&&this._onRequestScrollToBottom.fire(),c&&this._onUserInput.fire(),this._logService.debug(`sending data "${d}"`),this._logService.trace("sending data (codes)",(()=>d.split("").map((m=>m.charCodeAt(0))))),this._onData.fire(d)}triggerBinaryEvent(d){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${d}"`),this._logService.trace("sending binary (codes)",(()=>d.split("").map((c=>c.charCodeAt(0))))),this._onBinary.fire(d))}};n.CoreService=f,n.CoreService=f=p([y(0,l.IBufferService),y(1,l.ILogService),y(2,l.IOptionsService)],f)},6025:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let p=h(6501),y=h(6201);class o{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=o,n.InstantiationService=class{constructor(){this._services=new o,this._services.set(p.IInstantiationService,this)}setService(w,l){this._services.set(w,l)}getService(w){return this._services.get(w)}createInstance(w,...l){let g=(0,y.getServiceDependencies)(w).sort(((f,d)=>f.index-d.index)),_=[];for(let f of g){let d=this._services.get(f.id);if(!d)throw new Error(`[createInstance] ${w.name} depends on UNKNOWN service ${f.id._id}.`);_.push(d)}let s=g.length>0?g[0].index:l.length;if(l.length!==s)throw new Error(`[createInstance] First service dependency of ${w.name} at position ${s+1} conflicts with ${l.length} static arguments`);return new w(...l,..._)}}},7276:function(T,n,h){var p=this&&this.__decorate||function(s,f,d,c){var u,m=arguments.length,v=m<3?f:c===null?c=Object.getOwnPropertyDescriptor(f,d):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(s,f,d,c);else for(var I=s.length-1;I>=0;I--)(u=s[I])&&(v=(m<3?u(v):m>3?u(f,d,v):u(f,d))||v);return m>3&&v&&Object.defineProperty(f,d,v),v},y=this&&this.__param||function(s,f){return function(d,c){f(d,c,s)}};Object.defineProperty(n,"__esModule",{value:!0}),n.LogService=void 0,n.setTraceLogger=function(s){g=s},n.traceCall=function(s,f,d){if(typeof d.value!="function")throw new Error("not supported");let c=d.value;d.value=function(...u){if(g.logLevel!==w.LogLevelEnum.TRACE)return c.apply(this,u);g.trace(`GlyphRenderer#${c.name}(${u.map((v=>JSON.stringify(v))).join(", ")})`);let m=c.apply(this,u);return g.trace(`GlyphRenderer#${c.name} return`,m),m}};let o=h(7150),w=h(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 o.Disposable{get logLevel(){return this._logLevel}constructor(s){super(),this._optionsService=s,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(s){for(let f=0;f<s.length;f++)typeof s[f]=="function"&&(s[f]=s[f]())}_log(s,f,d){this._evalLazyOptionalParams(d),s.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+f,...d)}trace(s,...f){this._logLevel<=w.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,s,f)}debug(s,...f){this._logLevel<=w.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,s,f)}info(s,...f){this._logLevel<=w.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,s,f)}warn(s,...f){this._logLevel<=w.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,s,f)}error(s,...f){this._logLevel<=w.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,s,f)}};n.LogService=_,n.LogService=_=p([y(0,w.IOptionsService)],_)},56:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let p=h(7150),y=h(701),o=h(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:y.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 p.Disposable{constructor(_){super(),this._onOptionChange=this._register(new o.Emitter),this.onOptionChange=this._onOptionChange.event;let s={...n.DEFAULT_OPTIONS};for(let f in _)if(f in s)try{let d=_[f];s[f]=this._sanitizeAndValidateOption(f,d)}catch(d){console.error(d)}this.rawOptions=s,this.options={...s},this._setupOptions(),this._register((0,p.toDisposable)((()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null})))}onSpecificOptionChange(_,s){return this.onOptionChange((f=>{f===_&&s(this.rawOptions[_])}))}onMultipleOptionChange(_,s){return this.onOptionChange((f=>{_.indexOf(f)!==-1&&s()}))}_setupOptions(){let _=f=>{if(!(f in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${f}"`);return this.rawOptions[f]},s=(f,d)=>{if(!(f in n.DEFAULT_OPTIONS))throw new Error(`No option with key "${f}"`);d=this._sanitizeAndValidateOption(f,d),this.rawOptions[f]!==d&&(this.rawOptions[f]=d,this._onOptionChange.fire(f))};for(let f in this.rawOptions){let d={get:_.bind(this,f),set:s.bind(this,f)};Object.defineProperty(this.options,f,d)}}_sanitizeAndValidateOption(_,s){switch(_){case"cursorStyle":if(s||(s=n.DEFAULT_OPTIONS[_]),!(function(f){return f==="block"||f==="underline"||f==="bar"})(s))throw new Error(`"${s}" is not a valid value for ${_}`);break;case"wordSeparator":s||(s=n.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof s=="number"&&1<=s&&s<=1e3)break;s=w.includes(s)?s:n.DEFAULT_OPTIONS[_];break;case"cursorWidth":s=Math.floor(s);case"lineHeight":case"tabStopWidth":if(s<1)throw new Error(`${_} cannot be less than 1, value: ${s}`);break;case"minimumContrastRatio":s=Math.max(1,Math.min(21,Math.round(10*s)/10));break;case"scrollback":if((s=Math.min(s,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${s}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(s<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${s}`);break;case"rows":case"cols":if(!s&&s!==0)throw new Error(`${_} must be numeric, value: ${s}`);break;case"windowsPty":s=s??{}}return s}}n.OptionsService=l},8811:function(T,n,h){var p=this&&this.__decorate||function(l,g,_,s){var f,d=arguments.length,c=d<3?g:s===null?s=Object.getOwnPropertyDescriptor(g,_):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(l,g,_,s);else for(var u=l.length-1;u>=0;u--)(f=l[u])&&(c=(d<3?f(c):d>3?f(g,_,c):f(g,_))||c);return d>3&&c&&Object.defineProperty(g,_,c),c},y=this&&this.__param||function(l,g){return function(_,s){g(_,s,l)}};Object.defineProperty(n,"__esModule",{value:!0}),n.OscLinkService=void 0;let o=h(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 u=g.addMarker(g.ybase+g.y),m={data:l,id:this._nextId++,lines:[u]};return u.onDispose((()=>this._removeMarkerFromLink(m,u))),this._dataByLinkId.set(m.id,m),m.id}let _=l,s=this._getEntryIdKey(_),f=this._entriesWithId.get(s);if(f)return this.addLineToLink(f.id,g.ybase+g.y),f.id;let d=g.addMarker(g.ybase+g.y),c={id:this._nextId++,key:this._getEntryIdKey(_),data:_,lines:[d]};return d.onDispose((()=>this._removeMarkerFromLink(c,d))),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((s=>s.line!==g))){let s=this._bufferService.buffer.addMarker(g);_.lines.push(s),s.onDispose((()=>this._removeMarkerFromLink(_,s)))}}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=p([y(0,o.IBufferService)],w)},6201:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(y){return y[p]||[]},n.createDecorator=function(y){if(n.serviceRegistry.has(y))return n.serviceRegistry.get(y);let o=function(w,l,g){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(_,s,f){s[h]===s?s[p].push({id:_,index:f}):(s[p]=[{id:_,index:f}],s[h]=s)})(o,w,g)};return o._id=y,n.serviceRegistry.set(y,o),o};let h="di$target",p="di$dependencies";n.serviceRegistry=new Map},6501:(T,n,h)=>{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 p=h(6201);var y;n.IBufferService=(0,p.createDecorator)("BufferService"),n.ICoreMouseService=(0,p.createDecorator)("CoreMouseService"),n.ICoreService=(0,p.createDecorator)("CoreService"),n.ICharsetService=(0,p.createDecorator)("CharsetService"),n.IInstantiationService=(0,p.createDecorator)("InstantiationService"),(function(o){o[o.TRACE=0]="TRACE",o[o.DEBUG=1]="DEBUG",o[o.INFO=2]="INFO",o[o.WARN=3]="WARN",o[o.ERROR=4]="ERROR",o[o.OFF=5]="OFF"})(y||(n.LogLevelEnum=y={})),n.ILogService=(0,p.createDecorator)("LogService"),n.IOptionsService=(0,p.createDecorator)("OptionsService"),n.IOscLinkService=(0,p.createDecorator)("OscLinkService"),n.IUnicodeService=(0,p.createDecorator)("UnicodeService"),n.IDecorationService=(0,p.createDecorator)("DecorationService")},6415:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let p=h(7428),y=h(802);class o{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 y.Emitter,this.onChange=this._onChange.event;let l=new p.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,s=l.length;for(let f=0;f<s;++f){let d=l.charCodeAt(f);if(55296<=d&&d<=56319){if(++f>=s)return g+this.wcwidth(d);let m=l.charCodeAt(f);56320<=m&&m<=57343?d=1024*(d-55296)+m-56320+65536:g+=this.wcwidth(m)}let c=this.charProperties(d,_),u=o.extractWidth(c);o.extractShouldJoin(c)&&(u-=o.extractWidth(_)),g+=u,_=c}return g}charProperties(l,g){return this._activeProvider.charProperties(l,g)}}n.UnicodeService=o},5856:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Terminal=void 0;let p=h(6107),y=h(5777),o=h(802);class w extends y.CoreTerminal{constructor(g={}){super(g),this._onBell=this._register(new o.Emitter),this.onBell=this._onBell.event,this._onCursorMove=this._register(new o.Emitter),this.onCursorMove=this._onCursorMove.event,this._onTitleChange=this._register(new o.Emitter),this.onTitleChange=this._onTitleChange.event,this._onA11yCharEmitter=this._register(new o.Emitter),this.onA11yChar=this._onA11yCharEmitter.event,this._onA11yTabEmitter=this._register(new o.Emitter),this.onA11yTab=this._onA11yTabEmitter.event,this._setup(),this._register(this._inputHandler.onRequestBell((()=>this.bell()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(o.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(o.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(o.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(o.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(p.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:(T,n,h)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Permutation=n.CallbackIterable=n.ArrayQueue=n.booleanComparator=n.numberComparator=n.CompareResult=void 0,n.tail=function(u,m=0){return u[u.length-(1+m)]},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,m,v=(I,E)=>I===E){if(u===m)return!0;if(!u||!m||u.length!==m.length)return!1;for(let I=0,E=u.length;I<E;I++)if(!v(u[I],m[I]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(u,m){let v=u.length-1;m<v&&(u[m]=u[v]),u.pop()},n.binarySearch=function(u,m,v){return o(u.length,(I=>v(u[I],m)))},n.binarySearch2=o,n.quickSelect=function u(m,v,I){if((m|=0)>=v.length)throw new TypeError("invalid index");let E=v[Math.floor(v.length*Math.random())],N=[],O=[],A=[];for(let D of v){let C=I(D,E);C<0?N.push(D):C>0?O.push(D):A.push(D)}return m<N.length?u(m,N,I):m<N.length+A.length?A[0]:u(m-(N.length+A.length),O,I)},n.groupBy=function(u,m){let v=[],I;for(let E of u.slice(0).sort(m))I&&m(I[0],E)===0?I.push(E):(I=[E],v.push(I));return v},n.groupAdjacentBy=function*(u,m){let v,I;for(let E of u)I!==void 0&&m(I,E)?v.push(E):(v&&(yield v),v=[E]),I=E;v&&(yield v)},n.forEachAdjacent=function(u,m){for(let v=0;v<=u.length;v++)m(v===0?void 0:u[v-1],v===u.length?void 0:u[v])},n.forEachWithNeighbors=function(u,m){for(let v=0;v<u.length;v++)m(v===0?void 0:u[v-1],u[v],v+1===u.length?void 0:u[v+1])},n.sortedDiff=w,n.delta=function(u,m,v){let I=w(u,m,v),E=[],N=[];for(let O of I)E.push(...u.slice(O.start,O.start+O.deleteCount)),N.push(...O.toInsert);return{removed:E,added:N}},n.top=function(u,m,v){if(v===0)return[];let I=u.slice(0,v).sort(m);return l(u,m,I,v,u.length),I},n.topAsync=function(u,m,v,I,E){return v===0?Promise.resolve([]):new Promise(((N,O)=>{(async()=>{let A=u.length,D=u.slice(0,v).sort(m);for(let C=v,j=Math.min(v+I,A);C<A;C=j,j=Math.min(j+I,A)){if(C>v&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new p.CancellationError;l(u,m,D,C,j)}return D})().then(N,O)}))},n.coalesce=function(u){return u.filter((m=>!!m))},n.coalesceInPlace=function(u){let m=0;for(let v=0;v<u.length;v++)u[v]&&(u[m]=u[v],m+=1);u.length=m},n.move=function(u,m,v){u.splice(v,0,u.splice(m,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,m=v=>v){let v=new Set;return u.filter((I=>{let E=m(I);return!v.has(E)&&(v.add(E),!0)}))},n.uniqueFilter=function(u){let m=new Set;return v=>{let I=u(v);return!m.has(I)&&(m.add(I),!0)}},n.firstOrDefault=function(u,m){return u.length>0?u[0]:m},n.lastOrDefault=function(u,m){return u.length>0?u[u.length-1]:m},n.commonPrefixLength=function(u,m,v=(I,E)=>I===E){let I=0;for(let E=0,N=Math.min(u.length,m.length);E<N&&v(u[E],m[E]);E++)I++;return I},n.range=function(u,m){let v=typeof m=="number"?u:0;typeof m=="number"?v=u:(v=0,m=u);let I=[];if(v<=m)for(let E=v;E<m;E++)I.push(E);else for(let E=v;E>m;E--)I.push(E);return I},n.index=function(u,m,v){return u.reduce(((I,E)=>(I[m(E)]=v?v(E):E,I)),Object.create(null))},n.insert=function(u,m){return u.push(m),()=>g(u,m)},n.remove=g,n.arrayInsert=function(u,m,v){let I=u.slice(0,m),E=u.slice(m);return I.concat(v,E)},n.shuffle=function(u,m){let v;if(typeof m=="number"){let I=m;v=()=>{let E=179426549*Math.sin(I++);return E-Math.floor(E)}}else v=Math.random;for(let I=u.length-1;I>0;I-=1){let E=Math.floor(v()*(I+1)),N=u[I];u[I]=u[E],u[E]=N}},n.pushToStart=function(u,m){let v=u.indexOf(m);v>-1&&(u.splice(v,1),u.unshift(m))},n.pushToEnd=function(u,m){let v=u.indexOf(m);v>-1&&(u.splice(v,1),u.push(m))},n.pushMany=function(u,m){for(let v of m)u.push(v)},n.mapArrayOrNot=function(u,m){return Array.isArray(u)?u.map(m):m(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,m,v,I){let E=s(u,m),N=u.splice(E,v);return N===void 0&&(N=[]),_(u,E,I),N},n.compareBy=function(u,m){return(v,I)=>m(u(v),u(I))},n.tieBreakComparators=function(...u){return(m,v)=>{for(let I of u){let E=I(m,v);if(!f.isNeitherLessOrGreaterThan(E))return E}return f.neitherLessOrGreaterThan}},n.reverseOrder=function(u){return(m,v)=>-u(m,v)};let p=h(9807),y=h(8297);function o(u,m){let v=0,I=u-1;for(;v<=I;){let E=(v+I)/2|0,N=m(E);if(N<0)v=E+1;else{if(!(N>0))return E;I=E-1}}return-(v+1)}function w(u,m,v){let I=[];function E(A,D,C){if(D===0&&C.length===0)return;let j=I[I.length-1];j&&j.start+j.deleteCount===A?(j.deleteCount+=D,j.toInsert.push(...C)):I.push({start:A,deleteCount:D,toInsert:C})}let N=0,O=0;for(;;){if(N===u.length){E(N,0,m.slice(O));break}if(O===m.length){E(N,u.length-N,[]);break}let A=u[N],D=m[O],C=v(A,D);C===0?(N+=1,O+=1):C<0?(E(N,1,[]),N+=1):C>0&&(E(N,0,[D]),O+=1)}return I}function l(u,m,v,I,E){for(let N=v.length;I<E;I++){let O=u[I];if(m(O,v[N-1])<0){v.pop();let A=(0,y.findFirstIdxMonotonousOrArrLen)(v,(D=>m(O,D)<0));v.splice(A,0,O)}}}function g(u,m){let v=u.indexOf(m);if(v>-1)return u.splice(v,1),m}function _(u,m,v){let I=s(u,m),E=u.length,N=v.length;u.length=E+N;for(let O=E-1;O>=I;O--)u[O+N]=u[O];for(let O=0;O<N;O++)u[O+I]=v[O]}function s(u,m){return m<0?Math.max(m+u.length,0):Math.min(m,u.length)}var f;(function(u){u.isLessThan=function(m){return m<0},u.isLessThanOrEqual=function(m){return m<=0},u.isGreaterThan=function(m){return m>0},u.isNeitherLessOrGreaterThan=function(m){return m===0},u.greaterThan=1,u.lessThan=-1,u.neitherLessOrGreaterThan=0})(f||(n.CompareResult=f={})),n.numberComparator=(u,m)=>u-m,n.booleanComparator=(u,m)=>(0,n.numberComparator)(u?1:0,m?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 m=this.firstIdx;for(;m<this.items.length&&u(this.items[m]);)m++;let v=m===this.firstIdx?null:this.items.slice(this.firstIdx,m);return this.firstIdx=m,v}takeFromEndWhile(u){let m=this.lastIdx;for(;m>=0&&u(this.items[m]);)m--;let v=m===this.lastIdx?null:this.items.slice(m+1,this.lastIdx+1);return this.lastIdx=m,v}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 m=this.items.slice(this.firstIdx,this.firstIdx+u);return this.firstIdx+=u,m}};class d{static{this.empty=new d((m=>{}))}constructor(m){this.iterate=m}forEach(m){this.iterate((v=>(m(v),!0)))}toArray(){let m=[];return this.iterate((v=>(m.push(v),!0))),m}filter(m){return new d((v=>this.iterate((I=>!m(I)||v(I)))))}map(m){return new d((v=>this.iterate((I=>v(m(I))))))}some(m){let v=!1;return this.iterate((I=>(v=m(I),!v))),v}findFirst(m){let v;return this.iterate((I=>!m(I)||(v=I,!1))),v}findLast(m){let v;return this.iterate((I=>(m(I)&&(v=I),!0))),v}findLastMaxBy(m){let v,I=!0;return this.iterate((E=>((I||f.isGreaterThan(m(E,v)))&&(I=!1,v=E),!0))),v}}n.CallbackIterable=d;class c{constructor(m){this._indexMap=m}static createSortPermutation(m,v){let I=Array.from(m.keys()).sort(((E,N)=>v(m[E],m[N])));return new c(I)}apply(m){return m.map(((v,I)=>m[this._indexMap[I]]))}inverse(){let m=this._indexMap.slice();for(let v=0;v<this._indexMap.length;v++)m[this._indexMap[v]]=v;return new c(m)}}n.Permutation=c},8297:(T,n)=>{function h(l,g,_=l.length-1){for(let s=_;s>=0;s--)if(g(l[s]))return s;return-1}function p(l,g,_=0,s=l.length){let f=_,d=s;for(;f<d;){let c=Math.floor((f+d)/2);g(l[c])?f=c+1:d=c}return f-1}function y(l,g,_=0,s=l.length){let f=_,d=s;for(;f<d;){let c=Math.floor((f+d)/2);g(l[c])?d=c:f=c+1}return f}Object.defineProperty(n,"__esModule",{value:!0}),n.MonotonousArray=void 0,n.findLast=function(l,g){let _=h(l,g);if(_!==-1)return l[_]},n.findLastIdx=h,n.findLastMonotonous=function(l,g){let _=p(l,g);return _===-1?void 0:l[_]},n.findLastIdxMonotonous=p,n.findFirstMonotonous=function(l,g){let _=y(l,g);return _===l.length?void 0:l[_]},n.findFirstIdxMonotonousOrArrLen=y,n.findFirstIdxMonotonous=function(l,g,_=0,s=l.length){let f=y(l,g,_,s);return f===l.length?-1:f},n.findFirstMax=w,n.findLastMax=function(l,g){if(l.length===0)return;let _=l[0];for(let s=1;s<l.length;s++){let f=l[s];g(f,_)>=0&&(_=f)}return _},n.findFirstMin=function(l,g){return w(l,((_,s)=>-g(_,s)))},n.findMaxIdx=function(l,g){if(l.length===0)return-1;let _=0;for(let s=1;s<l.length;s++)g(l[s],l[_])>0&&(_=s);return _},n.mapFindFirst=function(l,g){for(let _ of l){let s=g(_);if(s!==void 0)return s}};class o{static{this.assertInvariants=!1}constructor(g){this._array=g,this._findLastMonotonousLastIdx=0}findLastMonotonous(g){if(o.assertInvariants){if(this._prevFindLastPredicate){for(let s of this._array)if(this._prevFindLastPredicate(s)&&!g(s))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=g}let _=p(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 s=1;s<l.length;s++){let f=l[s];g(f,_)>0&&(_=f)}return _}n.MonotonousArray=o},9087:(T,n)=>{var h;Object.defineProperty(n,"__esModule",{value:!0}),n.SetWithKey=void 0,n.groupBy=function(y,o){let w=Object.create(null);for(let l of y){let g=o(l),_=w[g];_||(_=w[g]=[]),_.push(l)}return w},n.diffSets=function(y,o){let w=[],l=[];for(let g of y)o.has(g)||w.push(g);for(let g of o)y.has(g)||l.push(g);return{removed:w,added:l}},n.diffMaps=function(y,o){let w=[],l=[];for(let[g,_]of y)o.has(g)||w.push(_);for(let[g,_]of o)y.has(g)||l.push(_);return{removed:w,added:l}},n.intersection=function(y,o){let w=new Set;for(let l of o)y.has(l)&&w.add(l);return w};class p{static{h=Symbol.toStringTag}constructor(o,w){this.toKey=w,this._map=new Map,this[h]="SetWithKey";for(let l of o)this.add(l)}get size(){return this._map.size}add(o){let w=this.toKey(o);return this._map.set(w,o),this}delete(o){return this._map.delete(this.toKey(o))}has(o){return this._map.has(this.toKey(o))}*entries(){for(let o of this._map.values())yield[o,o]}keys(){return this.values()}*values(){for(let o of this._map.values())yield o}clear(){this._map.clear()}forEach(o,w){this._map.forEach((l=>o.call(w,l,l,this)))}[Symbol.iterator](){return this.values()}}n.SetWithKey=p},9807:(T,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(d){n.errorHandler.setUnexpectedErrorHandler(d)},n.isSigPipeError=function(d){if(!d||typeof d!="object")return!1;let c=d;return c.code==="EPIPE"&&c.syscall?.toUpperCase()==="WRITE"},n.onUnexpectedError=function(d){y(d)||n.errorHandler.onUnexpectedError(d)},n.onUnexpectedExternalError=function(d){y(d)||n.errorHandler.onUnexpectedExternalError(d)},n.transformErrorForSerialization=function(d){if(d instanceof Error){let{name:c,message:u}=d;return{$isError:!0,name:c,message:u,stack:d.stacktrace||d.stack,noTelemetry:s.isErrorNoTelemetry(d)}}return d},n.transformErrorFromSerialization=function(d){let c;return d.noTelemetry?c=new s:(c=new Error,c.name=d.name),c.message=d.message,c.stack=d.stack,c},n.isCancellationError=y,n.canceled=function(){let d=new Error(p);return d.name=d.message,d},n.illegalArgument=function(d){return d?new Error(`Illegal argument: ${d}`):new Error("Illegal argument")},n.illegalState=function(d){return d?new Error(`Illegal state: ${d}`):new Error("Illegal state")},n.getErrorMessage=function(d){return d?d.message?d.message:d.stack?d.stack.split(`
|
|
4
|
-
`)[0]:String(d):"Error"};class h{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(c){setTimeout((()=>{throw c.stack?s.isErrorNoTelemetry(c)?new s(c.message+`
|
|
2
|
+
var Zo=Object.create;var Pr=Object.defineProperty;var ea=Object.getOwnPropertyDescriptor;var ta=Object.getOwnPropertyNames;var ra=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(e&&(t=e(e=0)),t);var ia=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),na=(e,t)=>{for(var r in t)Pr(e,r,{get:t[r],enumerable:!0})},oa=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ta(t))!sa.call(e,o)&&o!==r&&Pr(e,o,{get:()=>t[o],enumerable:!(s=ea(t,o))||s.enumerable});return e};var aa=(e,t,r)=>(r=e!=null?Zo(ra(e)):{},oa(t||!e||!e.__esModule?Pr(r,"default",{value:e,enumerable:!0}):r,e));import{randomUUID as ga}from"node:crypto";import{open as ma,readFile as Oh,rename as _a,rm as wa}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()}.${ga()}.tmp`),o=await ma(s,"w");try{let m=`${JSON.stringify(t,null,2)}
|
|
3
|
+
`;await o.writeFile(m,"utf8"),await o.sync(),await o.close(),await _a(s,e)}catch(m){throw await o.close().catch(()=>{}),await wa(s,{force:!0}).catch(()=>{}),m}}var Oe=et(()=>{"use strict"});import{readFile as Ra}from"node:fs/promises";async function Te(e){let t=await Ra(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(!Ca(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 Ca(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 qa}from"node:fs/promises";async function Ee(e){try{let t=await qa(e.uiStateFile,"utf8"),r=JSON.parse(t);return Ka(r,e.uiStateFile)}catch(t){if(Va(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 Ka(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")||!za(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 za(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Va(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 Ga}from"node:child_process";import{promisify as Xa}from"node:util";async function Q(e,t,r={}){try{let s=await Qs(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr}}catch(s){if(Js(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 Qs(e,t,{cwd:r.cwd,env:r.env});return{stdout:s.stdout,stderr:s.stderr,exitCode:0}}catch(s){if(Js(s))return{stdout:s.stdout??"",stderr:s.stderr??"",exitCode:typeof s.code=="number"?s.code:null};throw s}}function Js(e){return e instanceof Error}var Qs,Pe=et(()=>{"use strict";Qs=Xa(Ga)});import{readFile as hc,readdir as fc,rm as pc}from"node:fs/promises";import li from"node:path";async function Ae(e,t){let r=await hc(Kt(e,t),"utf8"),s=JSON.parse(r);return gc(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 fc(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Ae(e,li.basename(s.name,".json"))))).sort((s,o)=>s.name.localeCompare(o.name)||s.id.localeCompare(o.id))}async function di(e,t){await pc(Kt(e,t),{force:!0})}function Kt(e,t){return li.join(e.reposDir,`${t}.json`)}function gc(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 mc,readdir as _c,rm as wc}from"node:fs/promises";import ui from"node:path";async function Gt(e,t){let r=await mc(Vt(e,t),"utf8"),s=JSON.parse(r);return kc(s,Vt(e,t))}async function kt(e,t){await le(Vt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function De(e){let t=await _c(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>Gt(e,ui.basename(s.name,".json"))))).sort((s,o)=>s.id.localeCompare(o.id))}async function hi(e,t){await wc(Vt(e,t),{force:!0})}function Vt(e,t){return ui.join(e.workspacesDir,`${t}.json`)}function kc(e,t){let r=bc(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 bc(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 Yi={};na(Yi,{addWorkspace:()=>Dt,archiveWorkspace:()=>rs,listWorkspaces:()=>ts,removeWorkspaceRecord:()=>is,restoreWorkspace:()=>ss});import{readdir as Yc,realpath as qi,stat as Qc}from"node:fs/promises";import Ge from"node:path";async function Dt(e,t){let r=Ge.resolve(e.workspaceRoot,t);if(!(await Qc(r).catch(()=>null))?.isDirectory())throw new Error(`Workspace path does not exist: ${r}`);return await Gi(r)?Jc(e,r):Zc(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 kt(e,s),await sl(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 kt(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 Jc(e,t){let r=await Xi(t),s=await at(e),o=s.find(a=>a.rootPath===t)??null,m=o??Ki(s,t,r),y=`workspace_${m.id}`,d=(await De(e)).find(a=>a.id===y)??null,h=new Date().toISOString(),k=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 kt(e,k),await zi(e,{repoIds:[m.id],workspaceIds:[k.id]}),await Vi(e,k,m.id),{kind:"createWorkspace",workspace:k,repos:[m],created:!d}}async function Zc(e,t){let r=await el(e,t);if(r.length===0)throw new Error(`Workspace path does not contain direct child Git repos: ${t}`);let s=await De(e),o=rl(s,Ge.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:Ge.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 kt(e,d),await zi(e,{repoIds:n,workspaceIds:[d.id]}),await Vi(e,d,n[0]??null),{kind:"createWorkspace",workspace:d,repos:r,created:!m}}async function el(e,t){let r=await Yc(t,{withFileTypes:!0}),s=await at(e),o=[];for(let m of r){if(!m.isDirectory()||m.name.startsWith("."))continue;let y=Ge.join(t,m.name);if(!await Gi(y))continue;let n=s.find(d=>d.rootPath===y)??o.find(d=>d.rootPath===y);o.push(n??Ki([...s,...o],y,await Xi(y)))}return o.sort((m,y)=>m.name.localeCompare(y.name)||m.id.localeCompare(y.id))}function Ki(e,t,r){let s=new Date().toISOString();return{id:tl(e,Ge.basename(t)),name:Ge.basename(t),rootPath:t,defaultBranch:r,createdAt:s,updatedAt:s}}function tl(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 rl(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 Te(e);await st(e,{...r,repoIds:[...new Set([...r.repoIds,...t.repoIds])],workspaceIds:[...new Set([...r.workspaceIds,...t.workspaceIds])]})}async function Vi(e,t,r){await Ce({uiStateFile:e.uiStateFile},{...await Ee({uiStateFile:e.uiStateFile})??Be(),selectedRepoId:r,selectedWorkspaceId:t.id,selectedTaskId:null})}async function Gi(e){try{let r=(await Q("git",["rev-parse","--show-toplevel"],{cwd:e})).stdout.trim(),[s,o]=await Promise.all([qi(r).catch(()=>Ge.resolve(r)),qi(e).catch(()=>Ge.resolve(e))]);return s===o}catch{return!1}}async function Xi(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 hi(e,t);let r=await Te(e);await st(e,{...r,workspaceIds:r.workspaceIds.filter(s=>s!==t)})}async function sl(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 eo=ia(Zn=>{(()=>{"use strict";var e={5639:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CircularList=void 0;let h=d(7150),k=d(802);class a extends h.Disposable{constructor(l){super(),this._maxLength=l,this.onDeleteEmitter=this._register(new k.Emitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new k.Emitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new k.Emitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(l){if(this._maxLength===l)return;let 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,k=5){if(typeof h!="object")return h;let a=Array.isArray(h)?[]:{};for(let w in h)a[w]=k<=1?h[w]:h[w]&&d(h[w],k-1);return a}},5777:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CoreTerminal=void 0;let h=d(6501),k=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),b=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 k.InstantiationService,this.optionsService=this._register(new l.OptionsService(D)),this._instantiationService.setService(h.IOptionsService,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(w.BufferService)),this._instantiationService.setService(h.IBufferService,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(a.LogService)),this._instantiationService.setService(h.ILogService,this._logService),this.coreService=this._register(this._instantiationService.createInstance(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(b.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},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=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),b=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=b.UnicodeService.extractWidth(we);let qe=b.UnicodeService.extractShouldJoin(we),Ie=qe?b.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,Ke=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,Ke,0,Ie,!1);Ke<V;)We.setCellFromCodepoint(Ke++,0,1,J)}else if(this._activeBuffer.x=V-1,F===2)continue}if(qe&&this._activeBuffer.x){let We=Y.getWidth(this._activeBuffer.x-1)?1:2;Y.addCodepointToCell(this._activeBuffer.x-We,R,F);for(let Ke=F-Ie;--Ke>=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=b.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=qe=>qe?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([k(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 k=d.match(/Version\/(\d+)/);return k===null||k.length<2?0:parseInt(k[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 k{constructor(){this._tasks=[],this._i=0}enqueue(l){this._tasks.push(l),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(l){this._idleCallback=void 0;let 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 k{_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 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,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.updateWindowsModeWrappedState=function(k){let a=k.buffer.lines.get(k.buffer.ybase+k.buffer.y-1),w=a?.get(k.cols-1),l=k.buffer.lines.get(k.buffer.ybase+k.buffer.y);l&&w&&(l.isWrapped=w[h.CHAR_DATA_CODE_INDEX]!==h.NULL_CELL_CODE&&w[h.CHAR_DATA_CODE_INDEX]!==h.WHITESPACE_CELL_CODE)};let h=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),k=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 k.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new h.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(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),b=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++)b+=+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++)b+=+this.lines.get(P).resize(u,f);this._cols=u,this._rows=c,this._memoryCleanupQueue.clear(),b>.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,b=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,u,this.ybase+this.y,this.getNullCell(w.DEFAULT_ATTR_DATA),f);if(b.length>0){let S=(0,l.reflowLargerCreateNewLayout)(this.lines,b);(0,l.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(u,c,S.countRemoved)}}_reflowLargerAdjustViewport(u,c,f){let b=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,b))):(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,b=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],b);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,b){let S=this.lines.get(u);return S?S.translateToString(c,f,b):""}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),k=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||k.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 k.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 k.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 b=0;b<c.length;b++){let S=parseInt(c[b],10);S>=i&&delete this._combined[S]}let f=Object.keys(this._extendedAttrs);for(let b=0;b<f.length;b++){let S=parseInt(f[b],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 b=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]=b[3*(p+P)+E];268435456&b[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]=b[3*(p+P)+E];268435456&b[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 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(f+=P,c)for(let E=0;E<P.length;++E)c.push(p);p+=b>>22||1}return c&&c.push(p),f}}n.BufferLine=g},732:(y,n)=>{function d(h,k,a){if(k===h.length-1)return h[k].getTrimmedLength();let w=!h[k].hasContent(a-1)&&h[k].getWidth(a-1)===1,l=h[k+1].getWidth(0)===2;return w&&l?a-1:a}Object.defineProperty(n,"__esModule",{value:!0}),n.reflowLargerGetLinesToRemove=function(h,k,a,w,l,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,b=d(c,f,k),S=1,P=0;for(;S<c.length;){let j=d(c,S,k),$=j-P,D=a-b,x=Math.min($,D);c[f].copyCellsFrom(c[S],P,b,x,!1),b+=x,b===a&&(f++,b=0),P+=x,P===j&&(S++,P=0),b===0&&f!==0&&c[f-1].getWidth(a-1)===2&&(c[f].copyCellsFrom(c[f-1],a-1,b++,1,!1),c[f-1].setCell(a-1,l))}c[f].replaceCells(b,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,k){let a=[],w=0,l=k[w],g=0;for(let _=0;_<h.length;_++)if(l===_){let i=k[++w];h.onDeleteEmitter.fire({index:_-g,amount:i}),_+=i-1,g+=i,l=k[++w]}else a.push(_);return{layout:a,countRemoved:g}},n.reflowLargerApplyNewLayout=function(h,k){let a=[];for(let w=0;w<k.length;w++)a.push(h.get(k[w]));for(let w=0;w<a.length;w++)h.set(w,a[w]);h.length=k.length},n.reflowSmallerGetNewLineLengths=function(h,k,a){let w=[],l=h.map(((p,u)=>d(h,u,k))).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,_,k);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),k=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 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,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CellData=void 0;let h=d(726),k=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[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,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;let h=d(802),k=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,k.dispose)(this._disposables),this._disposables.length=0)}register(l){return this._disposables.push(l),l}}n.Marker=a,a._nextId=1},6760:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CHARSET=n.CHARSETS=void 0,n.CHARSETS={},n.DEFAULT_CHARSET=n.CHARSETS.B,n.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},n.CHARSETS.A={"#":"\xA3"},n.CHARSETS.B=void 0,n.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},n.CHARSETS.C=n.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},n.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},n.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},n.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},n.CHARSETS.E=n.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},n.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},n.CHARSETS.H=n.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},n.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},3534:(y,n)=>{var d,h,k;Object.defineProperty(n,"__esModule",{value:!0}),n.C1_ESCAPED=n.C1=n.C0=void 0,(function(a){a.NUL="\0",a.SOH="",a.STX="",a.ETX="",a.EOT="",a.ENQ="",a.ACK="",a.BEL="\x07",a.BS="\b",a.HT=" ",a.LF=`
|
|
4
|
+
`,a.VT="\v",a.FF="\f",a.CR="\r",a.SO="",a.SI="",a.DLE="",a.DC1="",a.DC2="",a.DC3="",a.DC4="",a.NAK="",a.SYN="",a.ETB="",a.CAN="",a.EM="",a.SUB="",a.ESC="\x1B",a.FS="",a.GS="",a.RS="",a.US="",a.SP=" ",a.DEL="\x7F"})(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}\\`})(k||(n.C1_ESCAPED=k={}))},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,k=d.length){let a="";for(let w=h;w<k;++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 k=d.length;if(!k)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<k;++l){let g=d.charCodeAt(l);if(55296<=g&&g<=56319){if(++l>=k)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 k=d.length;if(!k)return 0;let a,w,l,g,_=0,i=0,p=0;if(this.interim[0]){let f=!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,j=E-P;for(;p<j;){if(p>=k)return 0;if(S=d[p++],(192&S)!=128){p--,f=!0;break}this.interim[P++]=S,b<<=6,b|=63&S}f||(E===2?b<128?p--:h[_++]=b:E===3?b<2048||b>=55296&&b<=57343||b===65279||(h[_++]=b):b<65536||b>1114111||(h[_++]=b)),this.interim.fill(0)}let u=k-4,c=p;for(;c<k;){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>=k)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>=k)return this.interim[0]=a,_;if(w=d[c++],(192&w)!=128){c--;continue}if(c>=k)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>=k)return this.interim[0]=a,_;if(w=d[c++],(192&w)!=128){c--;continue}if(c>=k)return this.interim[0]=a,this.interim[1]=w,_;if(l=d[c++],(192&l)!=128){c--;continue}if(c>=k)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),k=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],a=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],w;n.UnicodeV6=class{constructor(){if(this.version="6",!w){w=new Uint8Array(65536),w.fill(1),w[0]=0,w.fill(0,1,32),w.fill(0,127,160),w.fill(2,4352,4448),w[9001]=2,w[9002]=2,w.fill(2,11904,42192),w[12351]=1,w.fill(2,44032,55204),w.fill(2,63744,64256),w.fill(2,65040,65050),w.fill(2,65072,65136),w.fill(2,65280,65377),w.fill(2,65504,65511);for(let l=0;l<k.length;++l)w.fill(0,k[l][0],k[l][1]+1)}}wcwidth(l){return l<32?0:l<127?1:l<65536?w[l]:(function(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),k=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 k.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:${k(l,w)}/${k(g,w)}/${k(_,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 k(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),k=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 k.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),k=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 b=0;b<p.length;b++)this.table[u<<8|p[b]]=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 b=u(0,14),S;for(S in i.setDefault(1,0),i.addMany(c,0,2,0),b)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 k.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 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");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 b=f.indexOf(u);b!==-1&&f.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,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 b=f.indexOf(u);b!==-1&&f.splice(b,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,b){this._parseStack.state=p,this._parseStack.handlers=u,this._parseStack.handlerPos=c,this._parseStack.transition=f,this._parseStack.chunkPos=b}parse(p,u,c){let f,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(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(b=p[this._parseStack.chunkPos],f=this._dcsParser.unhook(b!==24&&b!==26,c),f)return f;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],f=this._oscParser.end(b!==24&&b!==26,c),f)return f;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<u;++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>=u||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(b=p[A])<32||b>126&&b<g){this._printHandler(p,E,A),E=A-1;break}if(++A>=u||(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 j=this._csiHandlers[this._collect<<8|b],$=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|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<u&&(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&&(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|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>=u||(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(f=this._dcsParser.unhook(b!==24&&b!==26),f)return this._preserveStack(6,[],0,S,E),f;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>=u||(b=p[A])<32||b>127&&b<g){this._oscParser.put(p,E,A),E=A-1;break}break;case 6:if(f=this._oscParser.end(b!==24&&b!==26),f)return this._preserveStack(5,[],0,S,E),f;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,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OscHandler=n.OscParser=void 0;let h=d(1263),k=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,k.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,k.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 k={instance:h,dispose:h.dispose,isDisposed:!1};this._addons.push(k),h.dispose=()=>this._wrappedAddonDispose(k),h.activate(d)}_wrappedAddonDispose(d){if(d.isDisposed)return;let h=-1;for(let k=0;k<this._addons.length;k++)if(this._addons[k]===d){h=k;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),k=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 k.CellData}}},793:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferLineApiView=void 0;let h=d(3055);n.BufferLineApiView=class{constructor(k){this._line=k}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(k,a){if(!(k<0||k>=this._line.length))return a?(this._line.loadCell(k,a),a):this._line.loadCell(k,new h.CellData)}translateToString(k,a,w){return this._line.translateToString(k,a,w)}}},5101:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.BufferNamespaceApi=void 0;let h=d(3235),k=d(7150),a=d(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 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,(k=>h(k.toArray())))}addCsiHandler(d,h){return this.registerCsiHandler(d,h)}registerDcsHandler(d,h){return this._core.registerDcsHandler(d,((k,a)=>h(k,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,b=arguments.length,S=b<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=(b<3?f(S):b>3?f(p,u,S):f(p,u))||S);return b>3&&S&&Object.defineProperty(p,u,S),S},k=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,b=u.ybase+u.scrollBottom;if(u.scrollTop===0){let S=u.lines.isFull;b===u.lines.length-1?S?u.lines.recycle().copyFrom(c):u.lines.push(c.clone()):u.lines.splice(b+1,0,c.clone()),S?this.isUserScrolling&&(u.ydisp=Math.max(u.ydisp-1,0)):(u.ybase++,this.isUserScrolling||u.ydisp++)}else{let S=b-f+1;u.lines.shiftElements(f+1,S-1,-1),u.lines.set(b,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([k(0,l.IOptionsService)],_)},5746:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.CharsetService=void 0,n.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(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,b,S){var P,E=arguments.length,j=E<3?f:S===null?S=Object.getOwnPropertyDescriptor(f,b):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")j=Reflect.decorate(c,f,b,S);else for(var $=c.length-1;$>=0;$--)(P=c[$])&&(j=(E<3?P(j):E>3?P(f,b,j):P(f,b))||j);return E>3&&j&&Object.defineProperty(f,b,j),j},k=this&&this.__param||function(c,f){return function(b,S){f(b,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 b=(c.ctrl?16:0)|(c.shift?4:0)|(c.alt?8:0);return c.button===4?(b|=64,b|=c.action):(b|=3&c.button,4&c.button&&(b|=64),8&c.button&&(b|=128),c.action===32?b|=32:c.action!==0||f||(b|=3)),b}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,b){super(),this._bufferService=c,this._coreService=f,this._optionsService=b,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new l.Emitter),this.onProtocolChange=this._onProtocolChange.event;for(let S of Object.keys(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,b){if(c.deltaY===0||c.shiftKey||f===void 0||b===void 0)return 0;let S=f/b,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,b){if(b){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([k(0,a.IBufferService),k(1,a.ICoreService),k(2,a.IOptionsService)],u)},4071:function(y,n,d){var h=this&&this.__decorate||function(u,c,f,b){var S,P=arguments.length,E=P<3?c:b===null?b=Object.getOwnPropertyDescriptor(c,f):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(u,c,f,b);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},k=this&&this.__param||function(u,c){return function(f,b){c(f,b,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((b=>b.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([k(0,l.IBufferService),k(1,l.ILogService),k(2,l.IOptionsService)],p)},6025:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.InstantiationService=n.ServiceCollection=void 0;let h=d(6501),k=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,k.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,b=arguments.length,S=b<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=(b<3?f(S):b>3?f(p,u,S):f(p,u))||S);return b>3&&S&&Object.defineProperty(p,u,S),S},k=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 b=c.apply(this,f);return g.trace(`GlyphRenderer#${c.name} return`,b),b}};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([k(0,w.IOptionsService)],_)},56:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.OptionsService=n.DEFAULT_OPTIONS=void 0;let h=d(7150),k=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:k.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRuler:{}};let w=["normal","bold","100","200","300","400","500","600","700","800","900"];class l extends h.Disposable{constructor(_){super(),this._onOptionChange=this._register(new a.Emitter),this.onOptionChange=this._onOptionChange.event;let i={...n.DEFAULT_OPTIONS};for(let p in _)if(p in i)try{let 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},k=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),b={data:l,id:this._nextId++,lines:[f]};return f.onDispose((()=>this._removeMarkerFromLink(b,f))),this._dataByLinkId.set(b.id,b),b.id}let _=l,i=this._getEntryIdKey(_),p=this._entriesWithId.get(i);if(p)return this.addLineToLink(p.id,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([k(0,a.IBufferService)],w)},6201:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.serviceRegistry=void 0,n.getServiceDependencies=function(k){return k[h]||[]},n.createDecorator=function(k){if(n.serviceRegistry.has(k))return n.serviceRegistry.get(k);let a=function(w,l,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=k,n.serviceRegistry.set(k,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 k;n.IBufferService=(0,h.createDecorator)("BufferService"),n.ICoreMouseService=(0,h.createDecorator)("CoreMouseService"),n.ICoreService=(0,h.createDecorator)("CoreService"),n.ICharsetService=(0,h.createDecorator)("CharsetService"),n.IInstantiationService=(0,h.createDecorator)("InstantiationService"),(function(a){a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.OFF=5]="OFF"})(k||(n.LogLevelEnum=k={})),n.ILogService=(0,h.createDecorator)("LogService"),n.IOptionsService=(0,h.createDecorator)("OptionsService"),n.IOscLinkService=(0,h.createDecorator)("OscLinkService"),n.IUnicodeService=(0,h.createDecorator)("UnicodeService"),n.IDecorationService=(0,h.createDecorator)("DecorationService")},6415:(y,n,d)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.UnicodeService=void 0;let h=d(7428),k=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 k.Emitter,this.onChange=this._onChange.event;let l=new h.UnicodeV6;this.register(l),this._active=l.version,this._activeProvider=l}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(l){if(!this._providers[l])throw new Error(`unknown Unicode version "${l}"`);this._active=l,this._activeProvider=this._providers[l],this._onChange.fire(l)}register(l){this._providers[l.version]=l}wcwidth(l){return this._activeProvider.wcwidth(l)}getStringCellWidth(l){let 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 b=l.charCodeAt(p);56320<=b&&b<=57343?u=1024*(u-55296)+b-56320+65536:g+=this.wcwidth(b)}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),k=d(5777),a=d(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(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,b=0){return f[f.length-(1+b)]},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,b,S=(P,E)=>P===E){if(f===b)return!0;if(!f||!b||f.length!==b.length)return!1;for(let P=0,E=f.length;P<E;P++)if(!S(f[P],b[P]))return!1;return!0},n.removeFastWithoutKeepingOrder=function(f,b){let S=f.length-1;b<S&&(f[b]=f[S]),f.pop()},n.binarySearch=function(f,b,S){return a(f.length,(P=>S(f[P],b)))},n.binarySearch2=a,n.quickSelect=function f(b,S,P){if((b|=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 b<j.length?f(b,j,P):b<j.length+D.length?D[0]:f(b-(j.length+D.length),$,P)},n.groupBy=function(f,b){let S=[],P;for(let E of f.slice(0).sort(b))P&&b(P[0],E)===0?P.push(E):(P=[E],S.push(P));return S},n.groupAdjacentBy=function*(f,b){let S,P;for(let E of f)P!==void 0&&b(P,E)?S.push(E):(S&&(yield S),S=[E]),P=E;S&&(yield S)},n.forEachAdjacent=function(f,b){for(let S=0;S<=f.length;S++)b(S===0?void 0:f[S-1],S===f.length?void 0:f[S])},n.forEachWithNeighbors=function(f,b){for(let S=0;S<f.length;S++)b(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,b,S){let P=w(f,b,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,b,S){if(S===0)return[];let P=f.slice(0,S).sort(b);return l(f,b,P,S,f.length),P},n.topAsync=function(f,b,S,P,E){return S===0?Promise.resolve([]):new Promise(((j,$)=>{(async()=>{let D=f.length,x=f.slice(0,S).sort(b);for(let A=S,L=Math.min(S+P,D);A<D;A=L,L=Math.min(L+P,D)){if(A>S&&await new Promise((z=>setTimeout(z))),E&&E.isCancellationRequested)throw new h.CancellationError;l(f,b,x,A,L)}return x})().then(j,$)}))},n.coalesce=function(f){return f.filter((b=>!!b))},n.coalesceInPlace=function(f){let b=0;for(let S=0;S<f.length;S++)f[S]&&(f[b]=f[S],b+=1);f.length=b},n.move=function(f,b,S){f.splice(S,0,f.splice(b,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,b=S=>S){let S=new Set;return f.filter((P=>{let E=b(P);return!S.has(E)&&(S.add(E),!0)}))},n.uniqueFilter=function(f){let b=new Set;return S=>{let P=f(S);return!b.has(P)&&(b.add(P),!0)}},n.firstOrDefault=function(f,b){return f.length>0?f[0]:b},n.lastOrDefault=function(f,b){return f.length>0?f[f.length-1]:b},n.commonPrefixLength=function(f,b,S=(P,E)=>P===E){let P=0;for(let E=0,j=Math.min(f.length,b.length);E<j&&S(f[E],b[E]);E++)P++;return P},n.range=function(f,b){let S=typeof b=="number"?f:0;typeof b=="number"?S=f:(S=0,b=f);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(f,b,S){return f.reduce(((P,E)=>(P[b(E)]=S?S(E):E,P)),Object.create(null))},n.insert=function(f,b){return f.push(b),()=>g(f,b)},n.remove=g,n.arrayInsert=function(f,b,S){let P=f.slice(0,b),E=f.slice(b);return P.concat(S,E)},n.shuffle=function(f,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=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,b){let S=f.indexOf(b);S>-1&&(f.splice(S,1),f.unshift(b))},n.pushToEnd=function(f,b){let S=f.indexOf(b);S>-1&&(f.splice(S,1),f.push(b))},n.pushMany=function(f,b){for(let S of b)f.push(S)},n.mapArrayOrNot=function(f,b){return Array.isArray(f)?f.map(b):b(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,b,S,P){let E=i(f,b),j=f.splice(E,S);return j===void 0&&(j=[]),_(f,E,P),j},n.compareBy=function(f,b){return(S,P)=>b(f(S),f(P))},n.tieBreakComparators=function(...f){return(b,S)=>{for(let P of f){let E=P(b,S);if(!p.isNeitherLessOrGreaterThan(E))return E}return p.neitherLessOrGreaterThan}},n.reverseOrder=function(f){return(b,S)=>-f(b,S)};let h=d(9807),k=d(8297);function a(f,b){let S=0,P=f-1;for(;S<=P;){let E=(S+P)/2|0,j=b(E);if(j<0)S=E+1;else{if(!(j>0))return E;P=E-1}}return-(S+1)}function w(f,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 j=0,$=0;for(;;){if(j===f.length){E(j,0,b.slice($));break}if($===b.length){E(j,f.length-j,[]);break}let D=f[j],x=b[$],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,b,S,P,E){for(let j=S.length;P<E;P++){let $=f[P];if(b($,S[j-1])<0){S.pop();let D=(0,k.findFirstIdxMonotonousOrArrLen)(S,(x=>b($,x)<0));S.splice(D,0,$)}}}function g(f,b){let S=f.indexOf(b);if(S>-1)return f.splice(S,1),b}function _(f,b,S){let P=i(f,b),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,b){return b<0?Math.max(b+f.length,0):Math.min(b,f.length)}var p;(function(f){f.isLessThan=function(b){return b<0},f.isLessThanOrEqual=function(b){return b<=0},f.isGreaterThan=function(b){return b>0},f.isNeitherLessOrGreaterThan=function(b){return b===0},f.greaterThan=1,f.lessThan=-1,f.neitherLessOrGreaterThan=0})(p||(n.CompareResult=p={})),n.numberComparator=(f,b)=>f-b,n.booleanComparator=(f,b)=>(0,n.numberComparator)(f?1:0,b?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 b=this.firstIdx;for(;b<this.items.length&&f(this.items[b]);)b++;let S=b===this.firstIdx?null:this.items.slice(this.firstIdx,b);return this.firstIdx=b,S}takeFromEndWhile(f){let b=this.lastIdx;for(;b>=0&&f(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 f=this.items[this.firstIdx];return this.firstIdx++,f}removeLast(){let f=this.items[this.lastIdx];return this.lastIdx--,f}takeCount(f){let b=this.items.slice(this.firstIdx,this.firstIdx+f);return this.firstIdx+=f,b}};class u{static{this.empty=new u((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 u((S=>this.iterate((P=>!b(P)||S(P)))))}map(b){return new u((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=u;class c{constructor(b){this._indexMap=b}static createSortPermutation(b,S){let P=Array.from(b.keys()).sort(((E,j)=>S(b[E],b[j])));return new c(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 c(b)}}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 k(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 _=k(l,g);return _===l.length?void 0:l[_]},n.findFirstIdxMonotonousOrArrLen=k,n.findFirstIdxMonotonous=function(l,g,_=0,i=l.length){let p=k(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(k,a){let w=Object.create(null);for(let l of k){let g=a(l),_=w[g];_||(_=w[g]=[]),_.push(l)}return w},n.diffSets=function(k,a){let w=[],l=[];for(let g of k)a.has(g)||w.push(g);for(let g of a)k.has(g)||l.push(g);return{removed:w,added:l}},n.diffMaps=function(k,a){let w=[],l=[];for(let[g,_]of k)a.has(g)||w.push(_);for(let[g,_]of a)k.has(g)||l.push(_);return{removed:w,added:l}},n.intersection=function(k,a){let w=new Set;for(let l of a)k.has(l)&&w.add(l);return w};class h{static{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){k(u)||n.errorHandler.onUnexpectedError(u)},n.onUnexpectedExternalError=function(u){k(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=k,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+`
|
|
5
6
|
|
|
6
7
|
`+c.stack):new Error(c.message+`
|
|
7
8
|
|
|
8
|
-
`+c.stack):c}),0)}}addListener(c){return this.listeners.push(c),()=>{this._removeListener(c)}}emit(c){this.listeners.forEach((
|
|
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 k(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),k=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((qe=>{_e++,J=R(J,qe),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
10
|
`).slice(2).join(`
|
|
10
|
-
`))}}class c extends Error{constructor(C,j){super(C),this.name="ListenerLeakError",this.stack=j}}n.ListenerLeakError=c;class u extends Error{constructor(C,j){super(C),this.name="ListenerRefusalError",this.stack=j}}n.ListenerRefusalError=u;let m=0;class v{constructor(C){this.value=C,this.id=m++}}class I{constructor(C){this._size=0,this._options=C,this._leakageMon=s>0||this._options?.leakWarningThreshold?new f(C?.onListenerError??p.onUnexpectedError,this._options?.leakWarningThreshold??s):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??=(C,j,z)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let b=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(b);let P=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],k=new u(`${b}. HINT: Stack shows most frequent listener (${P[1]}-times)`,P[0]);return(this._options?.onListenerError||p.onUnexpectedError)(k),o.Disposable.None}if(this._disposed)return o.Disposable.None;j&&(C=C.bind(j));let W=new v(C),G;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(W.stack=d.create(),G=this._leakageMon.check(W.stack,this._size+1)),this._listeners?this._listeners instanceof v?(this._deliveryQueue??=new E,this._listeners=[this._listeners,W]):this._listeners.push(W):(this._options?.onWillAddFirstListener?.(this),this._listeners=W,this._options?.onDidAddFirstListener?.(this)),this._size++;let q=(0,o.toDisposable)((()=>{G?.(),this._removeListener(W)}));return z instanceof o.DisposableStore?z.add(q):Array.isArray(z)&&z.push(q),q},this._event}_removeListener(C){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 j=this._listeners,z=j.indexOf(C);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--,j[z]=void 0;let W=this._deliveryQueue.current===this;if(2*this._size<=j.length){let G=0;for(let q=0;q<j.length;q++)j[q]?j[G++]=j[q]:W&&(this._deliveryQueue.end--,G<this._deliveryQueue.i&&this._deliveryQueue.i--);j.length=G}}_deliver(C,j){if(!C)return;let z=this._options?.onListenerError||p.onUnexpectedError;if(z)try{C.value(j)}catch(W){z(W)}else C.value(j)}_deliverQueue(C){let j=C.current._listeners;for(;C.i<C.end;)this._deliver(j[C.i++],C.value);C.reset()}fire(C){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof v)this._deliver(this._listeners,C);else{let j=this._deliveryQueue;j.enqueue(this,C,this._listeners.length),this._deliverQueue(j)}this._perfMon?.stop()}hasListeners(){return this._size>0}}n.Emitter=I,n.createEventDeliveryQueue=()=>new E;class E{constructor(){this.i=-1,this.end=0}enqueue(C,j,z){this.i=0,this.end=z,this.current=C,this.value=j}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}n.AsyncEmitter=class extends I{async fireAsync(D,C,j){if(this._listeners)for(this._asyncDeliveryQueue||(this._asyncDeliveryQueue=new w.LinkedList),((z,W)=>{if(z instanceof v)W(z);else for(let G=0;G<z.length;G++){let q=z[G];q&&W(q)}})(this._listeners,(z=>this._asyncDeliveryQueue.push([z.value,D])));this._asyncDeliveryQueue.size>0&&!C.isCancellationRequested;){let[z,W]=this._asyncDeliveryQueue.shift(),G=[],q={...W,token:C,waitUntil:b=>{if(Object.isFrozen(G))throw new Error("waitUntil can NOT be called asynchronous");j&&(b=j(b,z)),G.push(b)}};try{z(q)}catch(b){(0,p.onUnexpectedError)(b);continue}Object.freeze(G),await Promise.allSettled(G).then((b=>{for(let P of b)P.status==="rejected"&&(0,p.onUnexpectedError)(P.reason)}))}}};class N extends I{get isPaused(){return this._isPaused!==0}constructor(C){super(C),this._isPaused=0,this._eventQueue=new w.LinkedList,this._mergeFn=C?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused==0)if(this._mergeFn){if(this._eventQueue.size>0){let C=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(C))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(C){this._size&&(this._isPaused!==0?this._eventQueue.push(C):super.fire(C))}}n.PauseableEmitter=N,n.DebounceEmitter=class extends N{constructor(D){super(D),this._delay=D.delay??100}fire(D){this._handle||(this.pause(),this._handle=setTimeout((()=>{this._handle=void 0,this.resume()}),this._delay)),super.fire(D)}},n.MicrotaskEmitter=class extends I{constructor(D){super(D),this._queuedEvents=[],this._mergeFn=D?.merge}fire(D){this.hasListeners()&&(this._queuedEvents.push(D),this._queuedEvents.length===1&&queueMicrotask((()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach((C=>super.fire(C))),this._queuedEvents=[]})))}};class O{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new I({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(C){let j={event:C,listener:null};return this.events.push(j),this.hasListeners&&this.hook(j),(0,o.toDisposable)((0,y.createSingleCallFunction)((()=>{this.hasListeners&&this.unhook(j);let z=this.events.indexOf(j);this.events.splice(z,1)})))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach((C=>this.hook(C)))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach((C=>this.unhook(C)))}hook(C){C.listener=C.event((j=>this.emitter.fire(j)))}unhook(C){C.listener?.dispose(),C.listener=null}dispose(){this.emitter.dispose();for(let C of this.events)C.listener?.dispose();this.events=[]}}n.EventMultiplexer=O,n.DynamicListEventMultiplexer=class{constructor(D,C,j,z){this._store=new o.DisposableStore;let W=this._store.add(new O),G=this._store.add(new o.DisposableMap);function q(b){G.set(b,W.add(z(b)))}for(let b of D)q(b);this._store.add(C((b=>{q(b)}))),this._store.add(j((b=>{G.deleteAndDispose(b)}))),this.event=W.event}dispose(){this._store.dispose()}},n.EventBufferer=class{constructor(){this.data=[]}wrapEvent(D,C,j){return(z,W,G)=>D((q=>{let b=this.data[this.data.length-1];if(!C)return void(b?b.buffers.push((()=>z.call(W,q))):z.call(W,q));let P=b;P?(P.items??=[],P.items.push(q),P.buffers.length===0&&b.buffers.push((()=>{P.reducedResult??=j?P.items.reduce(C,j):P.items.reduce(C),z.call(W,P.reducedResult)}))):z.call(W,C(j,q))}),void 0,G)}bufferEvents(D){let C={buffers:new Array};this.data.push(C);let j=D();return this.data.pop(),C.buffers.forEach((z=>z())),j}},n.Relay=class{constructor(){this.listening=!1,this.inputEvent=g.None,this.inputEventListener=o.Disposable.None,this.emitter=new I({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(D){this.inputEvent=D,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=D(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}},n.ValueWithChangeEvent=class{static const(D){return new A(D)}constructor(D){this._value=D,this._onDidChange=new I,this.onDidChange=this._onDidChange.event}get value(){return this._value}set value(D){D!==this._value&&(this._value=D,this._onDidChange.fire(void 0))}};class A{constructor(C){this.value=C,this.onDidChange=g.None}}},8841:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createSingleCallFunction=function(h,p){let y=this,o,w=!1;return function(){if(w)return o;if(w=!0,p)try{o=h.apply(y,arguments)}finally{p()}else o=h.apply(y,arguments);return o}}},4218:(T,n)=>{var h;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(p){function y(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}p.is=y;let o=Object.freeze([]);function*w(l){yield l}p.empty=function(){return o},p.single=w,p.wrap=function(l){return y(l)?l:w(l)},p.from=function(l){return l||o},p.reverse=function*(l){for(let g=l.length-1;g>=0;g--)yield l[g]},p.isEmpty=function(l){return!l||l[Symbol.iterator]().next().done===!0},p.first=function(l){return l[Symbol.iterator]().next().value},p.some=function(l,g){let _=0;for(let s of l)if(g(s,_++))return!0;return!1},p.find=function(l,g){for(let _ of l)if(g(_))return _},p.filter=function*(l,g){for(let _ of l)g(_)&&(yield _)},p.map=function*(l,g){let _=0;for(let s of l)yield g(s,_++)},p.flatMap=function*(l,g){let _=0;for(let s of l)yield*g(s,_++)},p.concat=function*(...l){for(let g of l)yield*g},p.reduce=function(l,g,_){let s=_;for(let f of l)s=g(s,f);return s},p.slice=function*(l,g,_=l.length){for(g<0&&(g+=l.length),_<0?_+=l.length:_>l.length&&(_=l.length);g<_;g++)yield l[g]},p.consume=function(l,g=Number.POSITIVE_INFINITY){let _=[];if(g===0)return[_,l];let s=l[Symbol.iterator]();for(let f=0;f<g;f++){let d=s.next();if(d.done)return[_,p.empty()];_.push(d.value)}return[_,{[Symbol.iterator]:()=>s}]},p.asyncToArray=async function(l){let g=[];for await(let _ of l)g.push(_);return Promise.resolve(g)}})(h||(n.Iterable=h={}))},7150:(T,n,h)=>{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(O){g=O},n.trackDisposable=s,n.markAsDisposed=f,n.markAsSingleton=function(O){return g?.markAsSingleton(O),O},n.isDisposable=c,n.dispose=u,n.disposeIfDisposable=function(O){for(let A of O)c(A)&&A.dispose();return[]},n.combinedDisposable=function(...O){let A=m((()=>u(O)));return(function(D,C){if(g)for(let j of D)g.setParent(j,C)})(O,A),A},n.toDisposable=m,n.disposeOnReturn=function(O){let A=new v;try{O(A)}finally{A.dispose()}};let p=h(3058),y=h(9087),o=h(2608),w=h(8841),l=h(4218),g=null;class _{constructor(){this.livingDisposables=new Map}static{this.idx=0}getDisposableData(A){let D=this.livingDisposables.get(A);return D||(D={parent:null,source:null,isSingleton:!1,value:A,idx:_.idx++},this.livingDisposables.set(A,D)),D}trackDisposable(A){let D=this.getDisposableData(A);D.source||(D.source=new Error().stack)}setParent(A,D){this.getDisposableData(A).parent=D}markAsDisposed(A){this.livingDisposables.delete(A)}markAsSingleton(A){this.getDisposableData(A).isSingleton=!0}getRootParent(A,D){let C=D.get(A);if(C)return C;let j=A.parent?this.getRootParent(this.getDisposableData(A.parent),D):A;return D.set(A,j),j}getTrackedDisposables(){let A=new Map;return[...this.livingDisposables.entries()].filter((([,D])=>D.source!==null&&!this.getRootParent(D,A).isSingleton)).flatMap((([D])=>D))}computeLeakingDisposables(A=10,D){let C;if(D)C=D;else{let q=new Map,b=[...this.livingDisposables.values()].filter((k=>k.source!==null&&!this.getRootParent(k,q).isSingleton));if(b.length===0)return;let P=new Set(b.map((k=>k.value)));if(C=b.filter((k=>!(k.parent&&P.has(k.parent)))),C.length===0)throw new Error("There are cyclic diposable chains!")}if(!C)return;function j(q){let b=q.source.split(`
|
|
11
|
-
`).map((
|
|
12
|
-
`),q)}
|
|
13
|
-
`)).size}/${
|
|
14
|
-
`)),
|
|
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 b=0;class S{constructor(A){this.value=A,this.id=b++}}class P{constructor(A){this._size=0,this._options=A,this._leakageMon=i>0||this._options?.leakWarningThreshold?new p(A?.onListenerError??h.onUnexpectedError,this._options?.leakWarningThreshold??i):void 0,this._perfMon=this._options?._profName?new _(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(A,L,z)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let v=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(v);let C=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],T=new 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,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(d,h){let k=this,a,w=!1;return function(){if(w)return a;if(w=!0,h)try{a=d.apply(k,arguments)}finally{h()}else a=d.apply(k,arguments);return a}}},4218:(y,n)=>{var d;Object.defineProperty(n,"__esModule",{value:!0}),n.Iterable=void 0,(function(h){function k(l){return l&&typeof l=="object"&&typeof l[Symbol.iterator]=="function"}h.is=k;let a=Object.freeze([]);function*w(l){yield l}h.empty=function(){return a},h.single=w,h.wrap=function(l){return k(l)?l:w(l)},h.from=function(l){return l||a},h.reverse=function*(l){for(let 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=b((()=>f($)));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 h=d(3058),k=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(`
|
|
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(`
|
|
14
|
+
`)).size}/${A.length} leaks) at ${R}`;let F=z.get(v.slice(0,T).join(`
|
|
15
|
+
`)),N=(0,k.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
16
|
|
|
16
17
|
|
|
17
|
-
==================== Leaking disposable ${
|
|
18
|
-
${
|
|
18
|
+
==================== Leaking disposable ${W}/${A.length}: ${q.value.constructor.name} ====================
|
|
19
|
+
${C.join(`
|
|
19
20
|
`)}
|
|
20
21
|
============================================================
|
|
21
22
|
|
|
22
|
-
`}return
|
|
23
|
+
`}return A.length>D&&(X+=`
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
... and ${
|
|
26
|
+
... and ${A.length-D} more leaking disposables
|
|
26
27
|
|
|
27
|
-
`),{leaks:C,details:W}}}function s(O){return g?.trackDisposable(O),O}function f(O){g?.markAsDisposed(O)}function d(O,A){g?.setParent(O,A)}function c(O){return typeof O=="object"&&O!==null&&typeof O.dispose=="function"&&O.dispose.length===0}function u(O){if(l.Iterable.is(O)){let A=[];for(let D of O)if(D)try{D.dispose()}catch(C){A.push(C)}if(A.length===1)throw A[0];if(A.length>1)throw new AggregateError(A,"Encountered errors while disposing of store");return Array.isArray(O)?[]:O}if(O)return O.dispose(),O}function m(O){let A=s({dispose:(0,w.createSingleCallFunction)((()=>{f(A),O()}))});return A}n.DisposableTracker=_;class v{static{this.DISABLE_DISPOSED_WARNING=!1}constructor(){this._toDispose=new Set,this._isDisposed=!1,s(this)}dispose(){this._isDisposed||(f(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(A){if(!A)return A;if(A===this)throw new Error("Cannot register a disposable on itself!");return d(A,this),this._isDisposed?v.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(A),A}delete(A){if(A){if(A===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(A),A.dispose()}}deleteAndLeak(A){A&&this._toDispose.has(A)&&(this._toDispose.delete(A),d(A,null))}}n.DisposableStore=v;class I{static{this.None=Object.freeze({dispose(){}})}constructor(){this._store=new v,s(this),d(this._store,this)}dispose(){f(this),this._store.dispose()}_register(A){if(A===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(A)}}n.Disposable=I;class E{constructor(){this._isDisposed=!1,s(this)}get value(){return this._isDisposed?void 0:this._value}set value(A){this._isDisposed||A===this._value||(this._value?.dispose(),A&&d(A,this),this._value=A)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,f(this),this._value?.dispose(),this._value=void 0}clearAndLeak(){let A=this._value;return this._value=void 0,A&&d(A,null),A}}n.MutableDisposable=E,n.MandatoryMutableDisposable=class{constructor(O){this._disposable=new E,this._isDisposed=!1,this._disposable.value=O}get value(){return this._disposable.value}set value(O){this._isDisposed||O===this._disposable.value||(this._disposable.value=O)}dispose(){this._isDisposed=!0,this._disposable.dispose()}},n.RefCountedDisposable=class{constructor(O){this._disposable=O,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,s(this)}set(O){let A=O;return this.unset=()=>A=void 0,this.isset=()=>A!==void 0,this.dispose=()=>{A&&(A(),A=void 0,f(this))},this}},n.ReferenceCollection=class{constructor(){this.references=new Map}acquire(O,...A){let D=this.references.get(O);D||(D={counter:0,object:this.createReferencedObject(O,...A)},this.references.set(O,D));let{object:C}=D,j=(0,w.createSingleCallFunction)((()=>{--D.counter==0&&(this.destroyReferencedObject(O,D.object),this.references.delete(O))}));return D.counter++,{object:C,dispose:j}}},n.AsyncReferenceCollection=class{constructor(O){this.referenceCollection=O}async acquire(O,...A){let D=this.referenceCollection.acquire(O,...A);try{return{object:await D.object,dispose:()=>D.dispose()}}catch(C){throw D.dispose(),C}}},n.ImmortalReference=class{constructor(O){this.object=O}dispose(){}};class N{constructor(){this._store=new Map,this._isDisposed=!1,s(this)}dispose(){f(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{u(this._store.values())}finally{this._store.clear()}}has(A){return this._store.has(A)}get size(){return this._store.size}get(A){return this._store.get(A)}set(A,D,C=!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),C||this._store.get(A)?.dispose(),this._store.set(A,D)}deleteAndDispose(A){this._store.get(A)?.dispose(),this._store.delete(A)}deleteAndLeak(A){let D=this._store.get(A);return this._store.delete(A),D}keys(){return this._store.keys()}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=N},6317:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.LinkedList=void 0;class h{static{this.Undefined=new h(void 0)}constructor(o){this.element=o,this.next=h.Undefined,this.prev=h.Undefined}}class p{constructor(){this._first=h.Undefined,this._last=h.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===h.Undefined}clear(){let o=this._first;for(;o!==h.Undefined;){let w=o.next;o.prev=h.Undefined,o.next=h.Undefined,o=w}this._first=h.Undefined,this._last=h.Undefined,this._size=0}unshift(o){return this._insert(o,!1)}push(o){return this._insert(o,!0)}_insert(o,w){let l=new h(o);if(this._first===h.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!==h.Undefined){let o=this._first.element;return this._remove(this._first),o}}pop(){if(this._last!==h.Undefined){let o=this._last.element;return this._remove(this._last),o}}_remove(o){if(o.prev!==h.Undefined&&o.next!==h.Undefined){let w=o.prev;w.next=o.next,o.next.prev=w}else o.prev===h.Undefined&&o.next===h.Undefined?(this._first=h.Undefined,this._last=h.Undefined):o.next===h.Undefined?(this._last=this._last.prev,this._last.next=h.Undefined):o.prev===h.Undefined&&(this._first=this._first.next,this._first.prev=h.Undefined);this._size-=1}*[Symbol.iterator](){let o=this._first;for(;o!==h.Undefined;)yield o.element,o=o.next}}n.LinkedList=p},2608:(T,n)=>{var h;Object.defineProperty(n,"__esModule",{value:!0}),n.SetMap=n.BidirectionalMap=n.CounterSet=n.Touch=void 0,n.getOrSet=function(p,y,o){let w=p.get(y);return w===void 0&&(w=o,p.set(y,w)),w},n.mapToString=function(p){let y=[];return p.forEach(((o,w)=>{y.push(`${w} => ${o}`)})),`Map(${p.size}) {${y.join(", ")}}`},n.setToString=function(p){let y=[];return p.forEach((o=>{y.push(o)})),`Set(${p.size}) {${y.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(p,y){if(p===y)return!0;if(p.size!==y.size)return!1;for(let[o,w]of p)if(!y.has(o)||y.get(o)!==w)return!1;for(let[o]of y)if(!p.has(o))return!1;return!0},(function(p){p[p.None=0]="None",p[p.AsOld=1]="AsOld",p[p.AsNew=2]="AsNew"})(h||(n.Touch=h={})),n.CounterSet=class{constructor(){this.map=new Map}add(p){return this.map.set(p,(this.map.get(p)||0)+1),this}delete(p){let y=this.map.get(p)||0;return y!==0&&(y--,y===0?this.map.delete(p):this.map.set(p,y),!0)}has(p){return this.map.has(p)}},n.BidirectionalMap=class{constructor(p){if(this._m1=new Map,this._m2=new Map,p)for(let[y,o]of p)this.set(y,o)}clear(){this._m1.clear(),this._m2.clear()}set(p,y){this._m1.set(p,y),this._m2.set(y,p)}get(p){return this._m1.get(p)}getKey(p){return this._m2.get(p)}delete(p){let y=this._m1.get(p);return y!==void 0&&(this._m1.delete(p),this._m2.delete(y),!0)}forEach(p,y){this._m1.forEach(((o,w)=>{p.call(y,o,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(p,y){let o=this.map.get(p);o||(o=new Set,this.map.set(p,o)),o.add(y)}delete(p,y){let o=this.map.get(p);o&&(o.delete(y),o.size===0&&this.map.delete(p))}forEach(p,y){let o=this.map.get(p);o&&o.forEach(y)}get(p){return this.map.get(p)||new Set}}},9725:(T,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let h=globalThis.performance&&typeof globalThis.performance.now=="function";class p{static create(o){return new p(o)}constructor(o){this._now=h&&o===!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=p}},t={};function r(T){var n=t[T];if(n!==void 0)return n.exports;var h=t[T]={exports:{}};return e[T].call(h.exports,h,h.exports,r),h.exports}var i={};(()=>{var T=i;Object.defineProperty(T,"__esModule",{value:!0}),T.Terminal=void 0;let n=r(5101),h=r(6097),p=r(4335),y=r(5856),o=r(3027),w=r(7150),l=["cols","rows"];class g extends w.Disposable{constructor(s){super(),this._core=this._register(new y.Terminal(s)),this._addonManager=this._register(new o.AddonManager),this._publicOptions={...this._core.options};let f=c=>this._core.options[c],d=(c,u)=>{this._checkReadonlyOptions(c),this._core.options[c]=u};for(let c in this._core.options){Object.defineProperty(this._publicOptions,c,{get:()=>this._core.options[c],set:m=>{this._checkReadonlyOptions(c),this._core.options[c]=m}});let u={get:f.bind(this,c),set:d.bind(this,c)};Object.defineProperty(this._publicOptions,c,u)}}_checkReadonlyOptions(s){if(l.includes(s))throw new Error(`Option "${s}" 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 h.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new p.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 s=this._core.coreService.decPrivateModes,f="none";switch(this._core.coreMouseService.activeProtocol){case"X10":f="x10";break;case"VT200":f="vt200";break;case"DRAG":f="drag";break;case"ANY":f="any"}return{applicationCursorKeysMode:s.applicationCursorKeys,applicationKeypadMode:s.applicationKeypad,bracketedPasteMode:s.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:f,originMode:s.origin,reverseWraparoundMode:s.reverseWraparound,sendFocusMode:s.sendFocus,synchronizedOutputMode:s.synchronizedOutput,wraparoundMode:s.wraparound}}get options(){return this._publicOptions}set options(s){for(let f in s)this._publicOptions[f]=s[f]}input(s,f=!0){this._core.input(s,f)}resize(s,f){this._verifyIntegers(s,f),this._core.resize(s,f)}registerMarker(s=0){return this._checkProposedApi(),this._verifyIntegers(s),this._core.addMarker(s)}addMarker(s){return this.registerMarker(s)}dispose(){super.dispose()}scrollLines(s){this._verifyIntegers(s),this._core.scrollLines(s)}scrollPages(s){this._verifyIntegers(s),this._core.scrollPages(s)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(s){this._verifyIntegers(s),this._core.scrollToLine(s)}clear(){this._core.clear()}write(s,f){this._core.write(s,f)}writeln(s,f){this._core.write(s),this._core.write(`\r
|
|
28
|
-
`,
|
|
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 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{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,k,a){let w=h.get(k);return w===void 0&&(w=a,h.set(k,w)),w},n.mapToString=function(h){let k=[];return h.forEach(((a,w)=>{k.push(`${w} => ${a}`)})),`Map(${h.size}) {${k.join(", ")}}`},n.setToString=function(h){let k=[];return h.forEach((a=>{k.push(a)})),`Set(${h.size}) {${k.join(", ")}}`},n.mapsStrictEqualIgnoreOrder=function(h,k){if(h===k)return!0;if(h.size!==k.size)return!1;for(let[a,w]of h)if(!k.has(a)||k.get(a)!==w)return!1;for(let[a]of k)if(!h.has(a))return!1;return!0},(function(h){h[h.None=0]="None",h[h.AsOld=1]="AsOld",h[h.AsNew=2]="AsNew"})(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 k=this.map.get(h)||0;return k!==0&&(k--,k===0?this.map.delete(h):this.map.set(h,k),!0)}has(h){return this.map.has(h)}},n.BidirectionalMap=class{constructor(h){if(this._m1=new Map,this._m2=new Map,h)for(let[k,a]of h)this.set(k,a)}clear(){this._m1.clear(),this._m2.clear()}set(h,k){this._m1.set(h,k),this._m2.set(k,h)}get(h){return this._m1.get(h)}getKey(h){return this._m2.get(h)}delete(h){let k=this._m1.get(h);return k!==void 0&&(this._m1.delete(h),this._m2.delete(k),!0)}forEach(h,k){this._m1.forEach(((a,w)=>{h.call(k,a,w,this)}))}keys(){return this._m1.keys()}values(){return this._m1.values()}},n.SetMap=class{constructor(){this.map=new Map}add(h,k){let a=this.map.get(h);a||(a=new Set,this.map.set(h,a)),a.add(k)}delete(h,k){let a=this.map.get(h);a&&(a.delete(k),a.size===0&&this.map.delete(h))}forEach(h,k){let a=this.map.get(h);a&&a.forEach(k)}get(h){return this.map.get(h)||new Set}}},9725:(y,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),n.StopWatch=void 0;let 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),k=r(5856),a=r(3027),w=r(7150),l=["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=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:b=>{this._checkReadonlyOptions(c),this._core.options[c]=b}});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=Zn;for(var m in s)o[m]=s[m];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})()});var ce=["codex","cursor","claude"],ca={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 ke(e){return ca[e]}function Ir(e,t={}){let r=ke(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 js(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 ke(e).displayName}function me(e,t,r={}){let s=[Ir(e,r).executable];return t&&t.length>0&&s.push(t),s}function Hs(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.
|
|
29
30
|
|
|
30
|
-
`+
|
|
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.
|
|
31
32
|
|
|
32
|
-
|
|
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(" ")}
|
|
33
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
36
|
|
|
36
|
-
`+
|
|
37
|
+
`+he());if(r!==-1&&s!==-1)throw new Error(`Task creation accepts either '--repo' or '--workspace', not both.
|
|
37
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:js(t[o+1]?.trim()??""),h=t.filter((k,a)=>a>1&&a!==r&&a!==r+1&&a!==s&&a!==s+1&&a!==o&&a!==o+1).join(" ").trim();if(m!==void 0&&m.length===0)throw new Error(`Repo id cannot be empty.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
`+he());if(y!==void 0&&y.length===0)throw new Error(`Workspace id cannot be empty.
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
`+he());if(h.length===0)throw new Error(`Task prompt cannot be empty.
|
|
43
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
46
|
|
|
46
|
-
${
|
|
47
|
-
`)}function ye(e){let t=e.trim();if(t.length===0)throw new Error(`Task id cannot be empty.
|
|
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(" ")}
|
|
48
48
|
|
|
49
|
-
${
|
|
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:la(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(" ")}
|
|
50
50
|
|
|
51
|
-
${
|
|
52
|
-
|
|
53
|
-
`;await a.writeFile(S,"utf8"),await a.sync(),await a.close(),await So(i,e)}catch(S){throw await a.close().catch(()=>{}),await vo(i,{force:!0}).catch(()=>{}),S}}async function We(e,t){let r=await ko(cr(e,t),"utf8"),i=JSON.parse(r);return Co(i,cr(e,t))}async function Ye(e,t){await ae(cr(e,t.id),{...t,updatedAt:new Date().toISOString()})}function cr(e,t){return To.join(e.sessionsDir,`${t}.json`)}function Co(e,t){let r=Io(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(i=>typeof i=="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")||!Po(r.attach)||!Ro(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 Ro(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 Po(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 Io(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??""}}import{readFile as Ao}from"node:fs/promises";import{readFile as xo}from"node:fs/promises";async function Re(e){let t=await xo(e.indexFile,"utf8"),r=JSON.parse(t);return lr(r,e.workspaceRoot,e.indexFile)}async function Qe(e,t){let r={...t,workspaceRoot:e.workspaceRoot,updatedAt:new Date().toISOString()};await ae(e.indexFile,r)}function lr(e,t,r){if(!Eo(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 Eo(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"}async function Se(e,t){let r=await Ao(dr(e,t),"utf8"),i=JSON.parse(r);return Do(i,dr(e,t))}async function te(e,t){let r={...t,updatedAt:new Date().toISOString()};await ae(dr(e,t.id),r)}async function ms(e,t){let r=await Re(e);r.taskIds.includes(t)||await Qe(e,{...r,taskIds:[...r.taskIds,t]})}function dr(e,t){return`${e.tasksDir}/${t}.json`}function Do(e,t){let r=Lo(e);if(!Oo(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function Lo(e){if(typeof e!="object"||e===null)return e;let t=e;return{...t,runner:ur(t.runner),repoId:typeof t.repoId=="string"?t.repoId:"legacy_repo",workspaceId:typeof t.workspaceId=="string"?t.workspaceId:"legacy_workspace",sessionId:typeof t.sessionId=="string"||t.sessionId===null?t.sessionId:null,selectedPtyTabId:typeof t.selectedPtyTabId=="string"||t.selectedPtyTabId===null?t.selectedPtyTabId:null,linkedRepoIds:Array.isArray(t.linkedRepoIds)?t.linkedRepoIds.filter(r=>typeof r=="string"):[],ptyTabs:Bo(t),runnerSession:t.runnerSession??Mo(t),checks:Ko(t),lastCommit:t.lastCommit??null,pullRequest:zo(t),artifacts:Go(t),cleanup:Xo(t)}}function Mo(e){if(typeof e.title!="string")return null;let t=ur(e.runner);return{command:ge(t,e.title),pid:null,startedAt:null,lastKnownState:e.status==="running"?"running":"starting",exitCode:null,exitedAt:null}}function Oo(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"&&typeof t.status=="string"&&at(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"&&_s(t.ptyTabs)&&$o(t.runnerSession)&&No(t.prompt)&&Ho(t.checks)&&Wo(t.lastCommit)&&jo(t.pullRequest)&&Uo(t.artifacts)&&qo(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Bo(e){if(_s(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 Fo(e.id,e.title,t,ur(e.runner))}function Fo(e,t,r,i){let a=pe(i);return[{id:`${e}:agent`,kind:"agent",title:a.defaultAgentTitle,command:ge(i),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function ur(e){return e&&at(e)?e:"codex"}function _s(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 $o(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 No(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function Ho(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 Wo(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function jo(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 Uo(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 qo(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 Ko(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 zo(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:Vo(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 Vo(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 Go(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Xo(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}import{readFile as Yo}from"node:fs/promises";async function Pe(e){try{let t=await Yo(e.uiStateFile,"utf8"),r=JSON.parse(t);return Qo(r,e.uiStateFile)}catch(t){if(Zo(t))return null;throw t}}async function ve(e,t){await ae(e.uiStateFile,{...t,updatedAt:new Date().toISOString()})}function Le(){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 Qo(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")||!ct(e,"inputMode")||!ct(e,"focusedRegion")||!ct(e,"activeTab")||!ct(e,"inspectorSection")||!ct(e,"inspectionMode")||!It(e,"openInspectionKind")||!It(e,"selectedFileTreePath")||!It(e,"selectedFilePath")||!It(e,"selectedDiffPath")||!Jo(e,"collapsedFileTreePaths")||!ct(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 ct(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||typeof e[t]=="string")}function It(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||e[t]===null||typeof e[t]=="string")}function Jo(e,t){return typeof e=="object"&&e!==null&&(!(t in e)||Array.isArray(e[t])&&e[t].every(r=>typeof r=="string"))}function Zo(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{execFile as ea}from"node:child_process";import{promisify as ta}from"node:util";var ws=ta(ea);async function J(e,t,r={}){try{let i=await ws(e,t,{cwd:r.cwd,env:r.env});return{stdout:i.stdout,stderr:i.stderr}}catch(i){if(bs(i)){let a=i.stderr?.trim()||i.stdout?.trim()||i.message;throw new Error(`${e} ${t.join(" ")} failed: ${a}`)}throw i}}async function oe(e,t,r={}){try{let i=await ws(e,t,{cwd:r.cwd,env:r.env});return{stdout:i.stdout,stderr:i.stderr,exitCode:0}}catch(i){if(bs(i))return{stdout:i.stdout??"",stderr:i.stderr??"",exitCode:typeof i.code=="number"?i.code:null};throw i}}function bs(e){return e instanceof Error}function xt(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as ra,constants as sa}from"node:fs";import{homedir as ys}from"node:os";import je from"node:path";var ia=[je.join(ys(),".local","bin"),je.join(ys(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function vs(e=process.env){return oa([...(e.PATH??"").split(je.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:ia])}function Je(e=process.env){return{...e,PATH:vs(e).join(je.delimiter)}}function na(e,t={}){if(e.includes(je.sep)){let r=je.isAbsolute(e)?e:je.resolve(t.cwd??process.cwd(),e);return Ss(r)?r:null}for(let r of vs(t.env)){let i=je.join(r,e);if(Ss(i))return i}return null}function Ze(e,t={}){let r=na(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 Ss(e){try{return ra(e,sa.X_OK),!0}catch{return!1}}function oa(e){return[...new Set(e)]}import{spawn as aa}from"node:child_process";import{createHash as ca}from"node:crypto";import la from"node:path";var da="craig";async function ks(e,t,r){let i=hr(e,t),a=ha(),S=await J("tmux",["new-session","-d","-P","-F","#{session_name} #{window_id} #{pane_id}","-s",i,"-n","runner",...a,"-c",r],{cwd:e}),T=pa(S.stdout);return await ua(e,i),T}async function ua(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 i of r)await J("tmux",i,{cwd:e})}async function Ts(e,t,r){await J("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function Cs(e,t,r){await J("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function Rs(e,t,r){await J("tmux",["pipe-pane","-o","-t",e,`cat >> ${xt(t)}`],{cwd:r})}async function Et(e,t,r,i){let a=i??Is(e);if(r?await J("tmux",["select-window","-t",r],{cwd:e}):await J("tmux",["select-window","-t",t],{cwd:e}),await J("tmux",["select-pane","-t",t],{cwd:e}),process.env.TMUX){await J("tmux",["switch-client","-t",a],{cwd:e});return}await ma(e,["attach-session","-t",a])}async function Ps(e,t){await J("tmux",["kill-session","-t",t],{cwd:e})}function Is(e){let r=la.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",i=ca("sha1").update(e).digest("hex").slice(0,8);return`${da}-${r}-${i}`}function hr(e,t){return`${Is(e)}-${t.toLowerCase()}`}function ha(){let e=fa();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function fa(){let e=[process.stdout,process.stderr,process.stdin];for(let t of e){let r="columns"in t?t.columns:void 0,i="rows"in t?t.rows:void 0;if(typeof r=="number"&&r>0&&typeof i=="number"&&i>0)return{columns:r,rows:i}}return null}function pa(e){let t=ga(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 ga(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function ma(e,t){await new Promise((r,i)=>{let a=aa("tmux",t,{cwd:e,stdio:"inherit"});a.on("error",i),a.on("exit",S=>{if(S===0){r();return}i(new Error(`tmux ${t.join(" ")} failed with exit code ${S??"unknown"}.`))})})}var fr={async prepare(e,t){let r=e.runnerSession.command[0]??ge(e.runner)[0],i=Je();await J(Ze(r,{cwd:t.repoRoot,env:i}),["--help"],{cwd:t.repoRoot,env:i})},async launch(e,t){let r=e.runnerSession.command.length>0?e.runnerSession.command:ge(e.runner,e.prompt.value),i=Ze(r[0],{cwd:e.worktreePath,env:Je()});await Cs(t.session.paneId,[i,...r.slice(1)].map(a=>xt(a)).join(" "),t.repoRoot)},async status(e){return e.runnerSession.lastKnownState},async stop(){},async collectArtifacts(){}};var pt={async create(e,t){let r=await ks(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await Rs(r.paneId,t.logPath,t.repoRoot);let i=await xs({paneId:r.paneId,windowTarget:r.windowTarget,alive:!0}),a={id:t.sessionId,taskId:t.taskId,repoId:t.repoId,workspaceId:t.workspaceId,substrate:"tmux",sessionName:r.sessionName||hr(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:i,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await Ye(e,a),a},async attach(e,t,r){let i=await pt.snapshot(t,r);if(!i.alive)throw new Error(`Session ${t.id} is no longer live and cannot be attached.`);await Et(r,t.paneId,t.windowTarget,t.sessionName);let a={...t,status:"running",lastAttachedAt:new Date().toISOString(),snapshot:i};return await Ye(e,a),a},async resize(e,t,r,i){await Ts(i,t.sessionName,r);let a={...t,attach:{...t.attach,lastSize:r}};return await Ye(e,a),a},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 i={...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 Ye(e,i),i},async snapshot(e,t){return _a(e,t)}};async function _a(e,t){let r=await oe("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return xs({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(i=>i.trim()===e.paneId)})}async function xs(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}import{mkdir as Us,writeFile as xa}from"node:fs/promises";import Ie from"node:path";import{readFile as wa,readdir as ba,rm as ya}from"node:fs/promises";import Es from"node:path";async function Me(e,t){let r=await wa(At(e,t),"utf8"),i=JSON.parse(r);return Sa(i,At(e,t))}async function As(e,t){await ae(At(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function gt(e){let t=await ba(e.reposDir,{withFileTypes:!0});return(await Promise.all(t.filter(i=>i.isFile()&&i.name.endsWith(".json")).map(i=>Me(e,Es.basename(i.name,".json"))))).sort((i,a)=>i.name.localeCompare(a.name)||i.id.localeCompare(a.id))}async function Ds(e,t){await ya(At(e,t),{force:!0})}function At(e,t){return Es.join(e.reposDir,`${t}.json`)}function Sa(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}import{readFile as va,readdir as ka,rm as Ta}from"node:fs/promises";import Ls from"node:path";async function Lt(e,t){let r=await va(Dt(e,t),"utf8"),i=JSON.parse(r);return Ca(i,Dt(e,t))}async function mt(e,t){await ae(Dt(e,t.id),{...t,updatedAt:new Date().toISOString()})}async function et(e){let t=await ka(e.workspacesDir,{withFileTypes:!0});return(await Promise.all(t.filter(i=>i.isFile()&&i.name.endsWith(".json")).map(i=>Lt(e,Ls.basename(i.name,".json"))))).sort((i,a)=>i.id.localeCompare(a.id))}async function Ms(e,t){await Ta(Dt(e,t),{force:!0})}function Dt(e,t){return Ls.join(e.workspacesDir,`${t}.json`)}function Ca(e,t){if(typeof e!="object"||e===null||typeof e.id!="string"||typeof e.primaryRepoId!="string"||typeof e.branch!="string"||e.status!=="active"&&e.status!=="archived"||!Array.isArray(e.linkedRepoIds)||!(e.linkedRepoIds??[]).every(r=>typeof r=="string")||!(e.archivedAt===null||typeof e.archivedAt=="string")||typeof e.createdAt!="string"||typeof e.updatedAt!="string")throw new Error(`Craig workspace record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return e}async function Os(e,t){let r=await oe("git",["show-ref","--verify","--quiet",`refs/heads/${t}`],{cwd:e});if(r.exitCode===0)return!0;if(r.exitCode===1)return!1;throw new Error(r.stderr.trim()||r.stdout.trim()||"Unable to check git branch state.")}async function Bs(e,t,r){if((await oe("git",["show-ref","--verify","--quiet","refs/heads/main"],{cwd:e})).exitCode!==0)throw new Error("Base branch 'main' does not exist locally.");let a=await Ra(e);await J("git",["worktree","add","-b",t,r,a],{cwd:e})}async function Ra(e){return(await oe("git",["remote","get-url","origin"],{cwd:e})).exitCode!==0||(await oe("git",["fetch","origin","main"],{cwd:e})).exitCode!==0?"main":(await oe("git",["show-ref","--verify","--quiet","refs/remotes/origin/main"],{cwd:e})).exitCode===0?"refs/remotes/origin/main":"main"}async function _t(e){let t=await oe("git",["status","--short"],{cwd:e});if(t.exitCode!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"Unable to inspect git status.");return t.stdout.trim().length>0}async function Fs(e){await J("git",["add","-A"],{cwd:e})}async function $s(e,t){await J("git",["commit","-m",t],{cwd:e})}async function Mt(e){let t=await J("git",["show","-s","--format=%H%n%s","HEAD"],{cwd:e}),[r="",i=""]=t.stdout.trim().split(`
|
|
54
|
-
`)
|
|
51
|
+
${he()}`);return{mode:"command",command:{kind:"mergeTask",taskId:Se(t[2]),preserveWorktree:r}}}throw new Error(`Unsupported command: ${t.join(" ")}
|
|
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.
|
|
55
|
+
|
|
56
|
+
${he()}`);return t}function la(e){let t=e.trim();if(t.length===0)throw new Error(`Repo id cannot be empty.
|
|
57
|
+
|
|
58
|
+
${he()}`);return t}import Ri from"node:path";import{mkdir as da,readFile as ua,writeFile as ha}from"node:fs/promises";import fa from"node:path";async function be(e){try{let t=await ua(e.configFile,"utf8"),r=JSON.parse(t);return qs(r,e.configFile)}catch(t){if(pa(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 Us(e,t){qs(t,e.configFile),await da(fa.dirname(e.configFile),{recursive:!0}),await ha(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 pa(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}Oe();import{readFile as ka,readdir as Wh,rm as Nh}from"node:fs/promises";import ba from"node:path";async function ze(e,t){let r=await ka(Er(e,t),"utf8"),s=JSON.parse(r);return ya(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 ba.join(e.sessionsDir,`${t}.json`)}function ya(e,t){let r=Ta(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")||!Sa(r.attach)||!va(r.snapshot)||typeof r.createdAt!="string"||typeof r.updatedAt!="string")throw new Error(`Craig session record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function va(e){return e===null||typeof e=="object"&&e!==null&&typeof e.paneId=="string"&&(typeof e.windowTarget=="string"||e.windowTarget===null)&&typeof e.alive=="boolean"&&typeof e.capturedAt=="string"}function Sa(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 Ta(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 Pa}from"node:fs/promises";async function Re(e,t){let r=await Pa(Dr(e,t),"utf8"),s=JSON.parse(r);return Ia(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 Ia(e,t){let r=xa(e);if(!Aa(r))throw new Error(`Craig task record at ${t} is invalid. Remove or repair the file before rerunning Craig.`);return r}function xa(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:Ma(t),bundlePath:typeof t.bundlePath=="string"||t.bundlePath===null?t.bundlePath:null,selectedRepoTargetId:typeof t.selectedRepoTargetId=="string"||t.selectedRepoTargetId===null?t.selectedRepoTargetId:null,repoTargets:Da(t.repoTargets),runnerSession:t.runnerSession??Ea(t),checks:Wa(t),lastCommit:t.lastCommit??null,pullRequest:Na(t),artifacts:Ha(t),cleanup:Ua(t)}}function Ea(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 Aa(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"&&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||La(t.repoTargets))&&Ba(t.runnerSession)&&$a(t.prompt)&&Vs(t.checks)&&Gs(t.lastCommit)&&Xs(t.pullRequest)&&Fa(t.artifacts)&&Ys(t.cleanup)&&(t.lastFailureReason===void 0||t.lastFailureReason===null||typeof t.lastFailureReason=="string")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"}function Da(e){if(Array.isArray(e))return e.filter(Ks)}function La(e){return Array.isArray(e)&&e.every(Ks)}function Ks(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)&&Vs(t.checks)&&Gs(t.lastCommit)&&Xs(t.pullRequest)&&Ys(t.cleanup)}function Ma(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 Oa(e.id,e.title,t,Mr(e.runner))}function Oa(e,t,r,s){let o=ke(s);return[{id:`${e}:agent`,kind:"agent",title:o.defaultAgentTitle,command:me(s),createdAt:r,updatedAt:r},{id:`${e}:terminal`,kind:"terminal",title:"Terminal",command:[],createdAt:r,updatedAt:r}]}function Mr(e){return e&&mt(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 Ba(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 $a(e){return typeof e=="object"&&e!==null&&(e.source==="inline"||e.source==="file")&&typeof e.value=="string"}function Vs(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 Gs(e){return e===null||typeof e=="object"&&e!==null&&typeof e.sha=="string"&&typeof e.message=="string"&&typeof e.committedAt=="string"}function Xs(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 Fa(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 Ys(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 Wa(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 Na(e){let t=e.pullRequest;return t?{...t,mergeStateStatus:t.mergeStateStatus??null,requiredChecks:ja(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 ja(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 Ha(e){let t=e.artifacts;return t?{...t,checkSummaryPath:t.checkSummaryPath??null}:{logPath:null,checkSummaryPath:null,prDraftPath:null,prStatusPath:null}}function Ua(e){return e.cleanup??{paneClosedAt:null,worktreeRemovedAt:null,preservedWorktree:!1,warning:null}}wt();Pe();function Ut(e){return`'${e.replace(/'/g,"'\\''")}'`}import{accessSync as Ya,constants as Qa}from"node:fs";import{homedir as Zs}from"node:os";import Ve from"node:path";var Ja=[Ve.join(Zs(),".local","bin"),Ve.join(Zs(),".cursor","bin"),"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin"];function ti(e=process.env){return ec([...(e.PATH??"").split(Ve.delimiter).filter(t=>t.length>0),...e.CRAIG_DISABLE_COMMAND_PATH_FALLBACKS==="1"?[]:Ja])}function nt(e=process.env){return{...e,PATH:ti(e).join(Ve.delimiter)}}function Za(e,t={}){if(e.includes(Ve.sep)){let r=Ve.isAbsolute(e)?e:Ve.resolve(t.cwd??process.cwd(),e);return ei(r)?r:null}for(let r of ti(t.env)){let s=Ve.join(r,e);if(ei(s))return s}return null}function ot(e,t={}){let r=Za(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 ei(e){try{return Ya(e,Qa.X_OK),!0}catch{return!1}}function ec(e){return[...new Set(e)]}Pe();import{spawn as tc}from"node:child_process";import{createHash as rc}from"node:crypto";import sc from"node:path";var ic="craig";async function ri(e,t,r){let s=Or(e,t),o=oc(),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=cc(m.stdout);return await nc(e,s),y}async function nc(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 si(e,t,r){await Q("tmux",["resize-window","-t",t,"-x",`${r.columns}`,"-y",`${r.rows}`],{cwd:e})}async function ii(e,t,r){await Q("tmux",["send-keys","-t",e,t,"C-m"],{cwd:r})}async function ni(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??ai(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 dc(e,["attach-session","-t",o])}async function oi(e,t){await Q("tmux",["kill-session","-t",t],{cwd:e})}function ai(e){let r=sc.basename(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"repo",s=rc("sha1").update(e).digest("hex").slice(0,8);return`${ic}-${r}-${s}`}function Or(e,t){return`${ai(e)}-${t.toLowerCase()}`}function oc(){let e=ac();return e?["-x",`${e.columns}`,"-y",`${e.rows}`]:[]}function ac(){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 cc(e){let t=lc(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 lc(e){return e.split(/\s+/).map(t=>t.trim()).filter(t=>t.length>0)}async function dc(e,t){await new Promise((r,s)=>{let o=tc("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 ii(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 ri(t.repoRoot,t.taskId,t.worktreePath);t.logPath&&await ni(r.paneId,t.logPath,t.repoRoot);let s=await ci({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 si(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 uc(e,t)}};async function uc(e,t){let r=await ae("tmux",["list-panes","-F","#{pane_id}","-t",e.paneId],{cwd:t});return ci({paneId:e.paneId,windowTarget:e.windowTarget,alive:r.exitCode===0&&r.stdout.split(/\s+/).some(s=>s.trim()===e.paneId)})}async function ci(e){return{paneId:e.paneId,windowTarget:e.windowTarget,alive:e.alive,capturedAt:new Date().toISOString()}}ct();import{mkdir as Pt,symlink as vc,writeFile as Fr}from"node:fs/promises";import oe from"node:path";Rt();Pe();async function fi(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 yc(e);await Q("git",["worktree","add","-b",t,r,o],{cwd:e})}async function yc(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 pi(e){await Q("git",["add","-A"],{cwd:e})}async function gi(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 mi(e){await Q("git",["remote","get-url","origin"],{cwd:e})}async function _i(e,t){await Q("git",["push","-u","origin",t],{cwd:e})}async function wi(e,t){await Q("git",["worktree","remove","--force",t],{cwd:e})}it();async function ki(e,t){let r=await Te(e),s=yi(new Date),o=vi(r.taskIds,s);for(;;){let m=`task_${s}_${String(o).padStart(2,"0")}`,y=`craig/${m}`;if(!await fi(t,y))return m;o+=1}}async function bi(e){let t=await Te(e),r=yi(new Date),s=vi(t.taskIds,r);return`task_${r}_${String(s).padStart(2,"0")}`}function yi(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 vi(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 Rc(e,o.id),y=await ki(e,o.rootPath),n=s.sessionId??null,d=`craig/${y}`,h=oe.join(e.worktreesDir,o.id,y),k=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(k,"","utf8");let w=Sc(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 bi(e),n=new Date().toISOString(),d=s.runner??"codex",h=s.sessionId??null,k=`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=>Tc(e,c,y,k))),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 vc(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=Si(y,r,n,d,s.config??{}),u={id:y,title:r,slug:Ti(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:k,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 Si(e,t,r,s="codex",o={}){let m=ke(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 Sc(e,t){let r=new Date().toISOString(),s=Si(t.taskId,t.prompt,r,t.runner,t.config);return{id:t.taskId,title:t.prompt,slug:Ti(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 Tc(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 Rc(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 Ti(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}async function Ci(e,t,r,s={}){let o=r.trim(),m=await be(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),k=`session_${d.id}`,a=d.artifacts.logPath?Ri.resolve(e.workspaceRoot,d.artifacts.logPath):Ri.join(e.logsDir,`${d.id}.log`);try{await Br.prepare(d,{repoRoot:n.repoRoot});let w=await Tt.create(e,{sessionId:k,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(Cc(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 Cc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}ct();import{access as Pc}from"node:fs/promises";import Pi from"node:path";async function ie(e,t){try{return await Re(e,t)}catch(r){throw Dc(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?Pi.isAbsolute(t.artifacts.logPath)?t.artifacts.logPath:Pi.join(e.workspaceRoot,t.artifacts.logPath):null}async function Ii(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:Ic(t),lastCommitSummary:xc(t),prSummary:Ec(t),cleanupSummary:Ac(t)}}async function jr(e){try{return await Pc(e),!0}catch{return!1}}function Ic(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 xc(e){return e.lastCommit?`${e.lastCommit.sha.slice(0,7)} ${e.lastCommit.message}`:"not committed"}function Ec(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 Ac(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 Dc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}async function xi(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),ze(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 Ai,readFile as Lc,writeFile as Mc}from"node:fs/promises";import Zt from"node:path";Pe();import Ei from"node:path";function xt(e,t){return t?Ei.isAbsolute(t)?t:Ei.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 Di(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 Ai(Zt.dirname(r),{recursive:!0});try{await Lc(r,"utf8")}catch{await Mc(r,`## Summary
|
|
55
61
|
|
|
56
62
|
- ${e.title}
|
|
57
|
-
`,"utf8")}return e.artifacts.prDraftPath=
|
|
63
|
+
`,"utf8")}return e.artifacts.prDraftPath=Zt.relative(t.repoRoot,r),r}async function Li(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 Mi(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 $i(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 $i(e,t,s),{discovered:!0,task:t}}async function Oi(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 be(e)).github?.watchIntervalSeconds??10)*1e3;for(;;){if(await ut(e,t),Bc(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 Ai(Zt.dirname(r),{recursive:!0}),await le(r,{taskId:t.id,pullRequest:t.pullRequest}))}function Bi(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 Oc(e){return e.requiredChecks.some(t=>t.status==="failed")}function Bc(e){return ht(e)||Oc(e)||e.status==="closed"||e.status==="merged"}function $c(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 $i(e,t,r){let s=Ur(r);return t.pullRequest=s,t.status=$c(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:Fc(e.state),mergeable:e.mergeable==="MERGEABLE",mergeStateStatus:e.mergeStateStatus,requiredChecks:Wc(e.statusCheckRollup),lastSyncedAt:new Date().toISOString(),lastSyncedHeadSha:e.headRefOid??null}}function Fc(e){return e==="OPEN"?"open":e==="MERGED"?"merged":e==="CLOSED"?"closed":null}function Wc(e){return e.map(t=>Nc(t)).filter(t=>t!==null)}function Nc(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:Fi(s??null,t.conclusion??null),conclusion:t.conclusion??null}:null}function Fi(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?Fi(s,s):"unknown"}async function Et(e,t,r){let s=await ie(e,t);await fe(s),await mi(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),Wi(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 Di(s,e);return await re(e,s),await _i(s.worktreePath,s.branch),s.pullRequest.number||await Li(s,m),await ut(e,s),r.watch&&s.pullRequest.status!=="merged"&&!ht(s.pullRequest)&&await Kr(e,s),await zr(e,s),Wi(s,r.watch,o?"synced":"created")}async function Ni(e,t){let r=await ie(e,t);return r.pullRequest.number&&(await dt(r.worktreePath),await ut(e,r)),r}async function ji(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 Oi(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 Wi(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:Bi(e.pullRequest)}}async function Gr(e,t){let r=await ie(e,t);if(r.pullRequest.number)try{r=await Ni(e,t)}catch{}let s=await Ii(e,r),o=r.sessionId?await ze(e,r.sessionId).catch(()=>null):null;return{kind:"showTask",task:r,inspection:s,session:o}}import{access as jc}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 jc(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 Hc(r.worktreePath);return{kind:"showTaskDiff",taskId:r.id,diffText:o,isEmpty:!1}}async function Hc(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 Uc(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(`
|
|
58
64
|
|
|
59
|
-
`)}async function
|
|
60
|
-
`).map(r=>r.trim()).filter(r=>r.length>0)}async function kr(e,t){let r=await ie(e,t);if(!r.sessionId)throw new Error(`Task ${r.id} does not have a Craig session.`);let i=await We(e,r.sessionId).catch(a=>{throw Za(a)?new Error(`Task ${r.id} does not have a Craig session.`):a});if(!i.paneId)throw new Error(`Task ${r.id} does not have a tmux target.`);return await Et(e.repoRoot,i.paneId,i.windowTarget,i.sessionName),{kind:"focusTask",taskId:r.id,tmuxTarget:i.paneId}}function Za(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as ec}from"node:child_process";async function Tr(e,t){let r=await ie(e,t);await ue(r);let a=(await _e(e)).open?.command??[];if(a.length===0)return{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!1,command:null};let S=[...a,r.worktreePath];return await tc(S,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:S}}async function tc(e,t){await new Promise((r,i)=>{let[a,...S]=e,T=ec(a,S,{cwd:t,stdio:"inherit"});T.on("error",i),T.on("exit",n=>{if(n===0){r();return}i(new Error(`${e.join(" ")} failed with exit code ${n??"unknown"}.`))})})}import{mkdir as rc}from"node:fs/promises";import sc from"node:path";async function Cr(e,t){let r=await ie(e,t);if(await ue(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 _t(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 a=(await _e(e)).checks?.commands??[];if(a.length===0)throw new Error(`Craig config at ${e.configFile} does not define any "checks.commands".`);r.checks.status="running",r.checks.commands=[...a],r.checks.results=[],await te(e,r);let S=[];for(let T of a){let n=new Date().toISOString(),h=await oe("sh",["-lc",T],{cwd:r.worktreePath}),p=new Date().toISOString(),y=h.exitCode??1;if(S.push({command:T,startedAt:n,finishedAt:p,exitCode:y}),y!==0)return r.checks.results=S,r.checks.status="failed",r.checks.lastRunAt=p,r.status="review",r.lastFailureReason=h.stderr.trim()||h.stdout.trim()||`Check command failed: ${T}`,await oi(e,r),await te(e,r),{kind:"runChecks",taskId:r.id,status:"failed",commands:a}}return r.checks.results=S,r.checks.status="passed",r.checks.lastRunAt=new Date().toISOString(),r.status="checked",r.lastFailureReason=null,await oi(e,r),await te(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:a}}async function oi(e,t){let r=wt(e,t.artifacts.checkSummaryPath);r&&(await rc(sc.dirname(r),{recursive:!0}),await ae(r,{taskId:t.id,status:t.checks.status,lastRunAt:t.checks.lastRunAt,commands:t.checks.commands,results:t.checks.results}))}async function Rr(e,t){let r=await ie(e,t);await ue(r);let i=await _t(r.worktreePath);if(r.status==="running"&&i&&(r.status="review"),r.status!=="review"&&r.status!=="checked")throw new Error(`Task ${r.id} cannot commit from status "${r.status}".`);if(!i)throw new Error(`Task ${r.id} has no uncommitted diff to commit.`);let a=r.prompt.value.trim();await Fs(r.worktreePath),await $s(r.worktreePath,a);let S=await Mt(r.worktreePath);return r.lastCommit={sha:S.sha,message:S.message,committedAt:new Date().toISOString()},r.lastFailureReason=null,await te(e,r),{kind:"commitTask",taskId:r.id,status:r.status,commitSha:S.sha,message:S.message}}async function ai(e,t,r){let i=[];try{if(t.sessionId){let a=await We(e,t.sessionId);await Ps(e.repoRoot,a.sessionName),t.cleanup.paneClosedAt=new Date().toISOString()}}catch(a){i.push(a instanceof Error?a.message:"Failed to close tmux session.")}if(t.cleanup.preservedWorktree=r.preserveWorktree,!r.preserveWorktree)try{await Ws(e.repoRoot,t.worktreePath),t.cleanup.worktreeRemovedAt=new Date().toISOString()}catch(a){i.push(a instanceof Error?a.message:"Failed to remove worktree.")}t.cleanup.warning=i.length>0?i.join(" "):null,await te(e,t)}async function yt(e,t,r){let i=await ie(e,t);if(await ue(i),i.status!=="pr_open"&&i.status!=="merge_ready")throw new Error(`Task ${i.id} cannot merge from status "${i.status}".`);if(!i.pullRequest.number)throw new Error(`Task ${i.id} does not have a tracked pull request.`);if(!i.lastCommit)throw new Error(`Task ${i.id} must be committed before merging.`);if(!await Ot(i.worktreePath))throw new Error(`Task ${i.id} worktree must be clean before merging.`);if((await Mt(i.worktreePath)).sha!==i.lastCommit.sha)throw new Error(`Task ${i.id} local HEAD does not match the tracked task commit. Sync or commit before merging.`);await lt(i.worktreePath),await rt(e,i);let S=ic(i);if(S.length>0)throw new Error(`Task ${i.id} pull request is not merge-ready: ${S.join("; ")}.`);let n=(await _e(e)).github?.mergeMethod??"squash";return await Zs(i,n),i.pullRequest.status="merged",i.status="merged",i.lastFailureReason=null,await te(e,i),await ai(e,i,r),{kind:"mergeTask",taskId:i.id,status:i.status,prNumber:i.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:i.cleanup.warning}}function ic(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 i of["failed","pending","unknown"]){let a=r.requiredChecks.filter(S=>S.status===i).map(S=>S.name);a.length>0&&t.push(`${i} checks: ${a.join(", ")}`)}return st(r)||t.push("required checks are not passing"),[...new Set(t)]}import Pr from"node:path";import{stat as oc}from"node:fs/promises";async function ci(e,t){return{kind:"listWorkspaces",workspaces:(await et(e)).filter(i=>i.status===(t.archived?"archived":"active")),archivedOnly:t.archived}}async function li(e,t){let i={...await Lt(e,t),status:"archived",archivedAt:new Date().toISOString()};return await mt(e,i),await nc(e,t),{kind:"archiveWorkspace",workspaceId:i.id,status:i.status,branch:i.branch}}async function di(e,t){let i={...await Lt(e,t),status:"active",archivedAt:null};await mt(e,i);let a=await Pe({uiStateFile:e.uiStateFile})??null;return await ve({uiStateFile:e.uiStateFile},{...a??Le(),selectedWorkspaceId:i.id,selectedRepoId:i.primaryRepoId,selectedTaskId:null}),{kind:"restoreWorkspace",workspaceId:i.id,status:i.status,branch:i.branch}}async function ui(e,t){await Ms(e,t);let r=await Re(e);await Qe(e,{...r,workspaceIds:r.workspaceIds.filter(i=>i!==t)})}async function nc(e,t){let r=await Pe({uiStateFile:e.uiStateFile});!r||r.selectedWorkspaceId!==t||await ve({uiStateFile:e.uiStateFile},{...r,selectedWorkspaceId:null,selectedRepoId:null,selectedTaskId:null})}async function $t(e,t){let r=Pr.resolve(e.workspaceRoot,t);if(!(await oc(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);await cc(r);let a=await lc(r),S=await gt(e),T=S.find(w=>w.rootPath===r);if(T)return{kind:"createRepo",repo:T,workspaceId:hi(T.id),created:!1};let n=ac(S,Pr.basename(r)),h=new Date().toISOString(),p={id:n,name:Pr.basename(r),rootPath:r,defaultBranch:a,createdAt:h,updatedAt:h},y={id:hi(n),primaryRepoId:n,branch:a,status:"active",linkedRepoIds:[],archivedAt:null,createdAt:h,updatedAt:h};await dc(e,y),await As(e,p),await mt(e,y);let o=await Re(e);return await Qe(e,{...o,repoIds:[...o.repoIds,p.id],workspaceIds:[...o.workspaceIds,y.id]}),await ve({uiStateFile:e.uiStateFile},{...await Pe({uiStateFile:e.uiStateFile})??Le(),selectedRepoId:p.id,selectedWorkspaceId:y.id,selectedTaskId:null}),{kind:"createRepo",repo:p,workspaceId:y.id,created:!0}}async function fi(e){return{kind:"listRepos",repos:await gt(e)}}async function pi(e,t){let r=await Me(e,t),a=(await et(e)).filter(p=>p.primaryRepoId===t),S=a.filter(p=>p.status==="active"),T=await tt(e,{repoId:t});if(S.length>0)throw new Error(`Cannot remove repo ${t} while active workspace records still reference it.`);if(T.tasks.length>0)throw new Error(`Cannot remove repo ${t} while task records still reference it.`);await Promise.all(a.map(p=>ui(e,p.id))),await Ds(e,t);let n=await Re(e);await Qe(e,{...n,repoIds:n.repoIds.filter(p=>p!==t)});let h=await Pe({uiStateFile:e.uiStateFile});return h?.selectedRepoId===t&&await ve({uiStateFile:e.uiStateFile},{...h,selectedRepoId:null,selectedWorkspaceId:null,selectedTaskId:null}),{kind:"removeRepo",repoId:r.id,rootPath:r.rootPath}}function ac(e,t){let r=t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"repo",i=`repo_${r}`,a=2;for(;e.some(S=>S.id===i);)i=`repo_${r}_${a}`,a+=1;return i}function hi(e){return`workspace_${e}`}async function cc(e){try{await J("git",["rev-parse","--show-toplevel"],{cwd:e})}catch{throw new Error(`Repo path is not a git repository: ${e}`)}}async function lc(e){let r=(await J("git",["branch","--show-current"],{cwd:e})).stdout.trim();return r.length>0?r:"HEAD"}async function dc(e,t){if((await et(e)).find(a=>a.status==="active"&&a.primaryRepoId===t.primaryRepoId&&a.branch===t.branch))throw new Error(`Workspace branch already in use for repo ${t.primaryRepoId}: ${t.branch}`)}async function gi(e,t,r){let[i,a]=await Promise.all([ie(e,t),Me(e,r)]);if(i.repoId===a.id)throw new Error(`Repo ${a.id} is already the primary repo for task ${i.id}.`);let S=i.linkedRepoIds.includes(a.id)?i.linkedRepoIds:[...i.linkedRepoIds,a.id];return await te(e,{...i,linkedRepoIds:S}),{kind:"addTaskLink",taskId:i.id,repoId:a.id,linkedRepoIds:S}}async function mi(e,t){let r=await ie(e,t),i=await Promise.all(r.linkedRepoIds.map(a=>Me(e,a)));return{kind:"listTaskLinks",taskId:r.id,repos:i}}async function _i(e,t){switch(e.kind){case"addRepo":return $t(t.paths,e.path);case"listRepos":return fi(t.paths);case"removeRepo":return pi(t.paths,e.repoId);case"listWorkspaces":return ci(t.paths,{archived:e.archived});case"archiveWorkspace":return li(t.paths,e.workspaceId);case"restoreWorkspace":return di(t.paths,e.workspaceId);case"createTask":return Ks(t.paths,e.repoId,e.prompt,e.runner?{runner:e.runner}:{});case"listTasks":return e.repoId?tt(t.paths,{repoId:e.repoId}):tt(t.paths);case"attachTask":return Gs(t.paths,e.taskId);case"addTaskLink":return gi(t.paths,e.taskId,e.repoId);case"listTaskLinks":return mi(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return yr(t.paths,e.taskId);case"showSelectedTask":return yr(t.paths,Fe(t,"show"));case"streamTaskLogs":return Sr(t.paths,e.taskId);case"streamSelectedTaskLogs":return Sr(t.paths,Fe(t,"logs"));case"showTaskDiff":return vr(t.paths,e.taskId);case"showSelectedTaskDiff":return vr(t.paths,Fe(t,"diff"));case"focusTask":return kr(t.paths,e.taskId);case"focusSelectedTask":return kr(t.paths,Fe(t,"focus"));case"openTask":return Tr(t.paths,e.taskId);case"openSelectedTask":return Tr(t.paths,Fe(t,"open"));case"runChecks":return Cr(t.paths,e.taskId);case"runSelectedTaskChecks":return Cr(t.paths,Fe(t,"check"));case"commitTask":return Rr(t.paths,e.taskId);case"commitSelectedTask":return Rr(t.paths,Fe(t,"commit"));case"openPullRequest":return bt(t.paths,e.taskId,{watch:e.watch});case"openSelectedTaskPullRequest":return bt(t.paths,Fe(t,"pr"),{watch:e.watch});case"mergeTask":return yt(t.paths,e.taskId,{preserveWorktree:e.preserveWorktree});case"mergeSelectedTask":return yt(t.paths,Fe(t,"merge"),{preserveWorktree:e.preserveWorktree});case"help":return{kind:"help",text:me()};case"exit":return{kind:"exit"};default:return uc(e)}}function uc(e){throw new Error(`Unsupported command: ${JSON.stringify(e)}`)}function Fe(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>'.`)}import{mkdir as Oe,readFile as hc}from"node:fs/promises";import we from"node:path";function $e(e){let t=we.join(e,".craig");return{workspaceRoot:e,repoRoot:e,craigDir:t,indexFile:we.join(t,"index.json"),reposDir:we.join(t,"repos"),workspacesDir:we.join(t,"workspaces"),sessionsDir:we.join(t,"sessions"),runtimeDir:we.join(t,"runtime"),uiStateFile:we.join(t,"runtime","ui-state.json"),tasksDir:we.join(t,"tasks"),jobsDir:we.join(t,"jobs"),logsDir:we.join(t,"logs"),artifactsDir:we.join(t,"artifacts"),worktreesDir:we.join(t,"worktrees"),configFile:we.join(t,"config.json")}}async function dt(e){let t=$e(e);await Oe(t.craigDir,{recursive:!0}),await Promise.all([Oe(t.reposDir,{recursive:!0}),Oe(t.workspacesDir,{recursive:!0}),Oe(t.sessionsDir,{recursive:!0}),Oe(t.runtimeDir,{recursive:!0}),Oe(t.tasksDir,{recursive:!0}),Oe(t.jobsDir,{recursive:!0}),Oe(t.logsDir,{recursive:!0}),Oe(t.artifactsDir,{recursive:!0}),Oe(t.worktreesDir,{recursive:!0})]);try{let a=await hc(t.indexFile,"utf8"),S=JSON.parse(a);return lr(S,e,t.indexFile)}catch(a){if(!fc(a))throw a instanceof SyntaxError?new Error(`Craig index at ${t.indexFile} is malformed. Remove or repair the file before rerunning Craig.`):a}let r=new Date().toISOString(),i={version:2,workspaceRoot:e,repoIds:[],workspaceIds:[],taskIds:[],jobIds:[],createdAt:r,updatedAt:r};return await ae(t.indexFile,i),i}function fc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function wi(e){switch(e.kind){case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
|
|
65
|
+
`)}async function Uc(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 ze(e,r.sessionId).catch(o=>{throw qc(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 qc(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}import{spawn as Kc}from"node:child_process";async function Jr(e,t){let r=await ie(e,t);await fe(r);let o=(await be(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 zc(m,e.repoRoot),{kind:"openTask",taskId:r.id,worktreePath:r.worktreePath,launched:!0,command:m}}async function zc(e,t){await new Promise((r,s)=>{let[o,...m]=e,y=Kc(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 Vc}from"node:fs/promises";import Gc 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 be(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(),k=d.exitCode??1;if(m.push({command:y,startedAt:n,finishedAt:h,exitCode:k}),k!==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 Hi(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 Hi(e,r),await re(e,r),{kind:"runChecks",taskId:r.id,status:"passed",commands:o}}async function Hi(e,t){let r=xt(e,t.artifacts.checkSummaryPath);r&&(await Vc(Gc.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 pi(r.worktreePath),await gi(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 Ui(e,t,r){let s=[];try{if(t.sessionId){let o=await ze(e,t.sessionId);await oi(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 wi(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=Xc(s);if(m.length>0)throw new Error(`Task ${s.id} pull request is not merge-ready: ${m.join("; ")}.`);let n=(await be(e)).github?.mergeMethod??"squash";return await Mi(s,n),s.pullRequest.status="merged",s.status="merged",s.lastFailureReason=null,await re(e,s),await Ui(e,s,r),{kind:"mergeTask",taskId:s.id,status:s.status,prNumber:s.pullRequest.number,preservedWorktree:r.preserveWorktree,cleanupWarning:s.cleanup.warning}}function Xc(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 il from"node:path";import{stat as nl}from"node:fs/promises";Lt();Pe();async function Qi(e,t){let r=il.resolve(e.workspaceRoot,t);if(!(await nl(r).catch(()=>null))?.isDirectory())throw new Error(`Repo path does not exist: ${r}`);let o=await Promise.resolve().then(()=>(Lt(),Yi)).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 Ji(e){return{kind:"listRepos",repos:await at(e)}}async function Zi(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 di(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 en(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 tn(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 rn(e,t){switch(e.kind){case"addWorkspace":return Dt(t.paths,e.path);case"addRepo":return Qi(t.paths,e.path);case"listRepos":return Ji(t.paths);case"removeRepo":return Zi(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 Ci(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 xi(t.paths,e.taskId);case"addTaskLink":return en(t.paths,e.taskId,e.repoId);case"listTaskLinks":return tn(t.paths,e.taskId);case"refreshInteractiveState":throw new Error("Interactive refresh should be handled by the interactive app.");case"showTask":return 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 ol(e)}}function ol(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 al}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 bt(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 al(t.indexFile,"utf8"),m=JSON.parse(o);return Ar(m,e,t.indexFile)}catch(o){if(!cl(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 cl(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&e.code==="ENOENT"}function sn(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
|
+
`);case"createRepo":return[`${e.created?"Registered":"Already registered"} repo ${e.repo.id}`,`Path: ${e.repo.rootPath}`,`Branch: ${e.repo.defaultBranch}`,`Workspace: ${e.workspaceId}`].join(`
|
|
61
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(`
|
|
62
|
-
`);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
|
|
63
|
-
`);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}`,`Session: ${e.sessionId}`,`Status: ${e.status}`,`Branch: ${e.branch}`,`Worktree: ${e.worktreePath}`,`Runner: ${e.runner}`].join(`
|
|
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(`
|
|
64
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(`
|
|
65
|
-
`);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} ${
|
|
66
|
-
`);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}`,...
|
|
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} ${hl(t)} ${fl(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}`,...dl(e)].join(`
|
|
67
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(`
|
|
68
|
-
`);case"openPullRequest":return[`${
|
|
75
|
+
`);case"openPullRequest":return[`${ll(e.disposition,e.watch)} PR for ${e.taskId}`,`PR: #${e.prNumber} ${e.url}`,`Status: ${e.status}`,`Mergeable: ${e.mergeable}`,`Checks: ${e.requiredChecksSummary}`].join(`
|
|
69
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(`
|
|
70
|
-
`);default:return
|
|
71
|
-
`).map(t=>t.trim()).filter(t=>t.length>0).map(t=>{let[r="M",...
|
|
72
|
-
`)[
|
|
73
|
-
`)
|
|
74
|
-
|
|
75
|
-
${n.stdout.trimEnd()}`)}
|
|
76
|
-
${
|
|
77
|
-
${
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
`)
|
|
81
|
-
`):["No diff for this file."],byteLength:S.length}}function Ec(e){let t=[],r=new Set;for(let i of e){let a=i.split("/");for(let S=0;S<a.length-1;S+=1){let T=a.slice(0,S+1).join("/");r.has(T)||(r.add(T),t.push({kind:"directory",path:T,depth:S,label:a[S]??T}))}t.push({kind:"file",path:i,depth:a.length-1,label:a.at(-1)??i})}return t}function yi(e,t){return e&&t.includes(e)?e:t[0]??null}function Ac(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function Ci(e){return[...new Set(e.split(`
|
|
82
|
-
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Dc(e,t){let r=Ir.resolve(e,t),i=Ir.resolve(e);if(r!==i&&!r.startsWith(`${i}${Ir.sep}`))throw new Error(`File path escapes task worktree: ${t}`);return r}function Lc(e){return e.subarray(0,Math.min(e.byteLength,8e3)).includes(0)}function xe(e,t,r,i=null,a=null){return{path:i,status:r,title:e,lines:[t],byteLength:a}}import{access as Mc}from"node:fs/promises";async function Ri(e,t){let r=await ie(e,t),i=await Oc(r.worktreePath),a={...r,status:"closed",cleanup:{...r.cleanup,preservedWorktree:i&&r.cleanup.worktreeRemovedAt===null,warning:null},lastFailureReason:null};return await te(e,a),a}async function Oc(e){try{return await Mc(e),!0}catch{return!1}}import kt from"node:path";function Pi(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 Ii="\u{F024B} ",xi="\u{F0DCF} ",Ei="\u25CB",Ai="\uEA64",Di="\uEAFE",Li="\uEBDA",xr="\u25CB",Er="\u25CF",Ar="\u2713",Dr="\u2715";function Mi(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}}var Bc=["tasks","center","inspector","actions"],Ni=["agent","terminal"],Hi=[],ne="inspection",Lg=[...Ni,...Hi],Wi=["commit","push","create-pr","refresh-checks","merge","close-task"],Fc=["refresh-checks","close-task"],ji=["task","checks","pr","setup-run","actions","next-action"],Ui=["diff","files","review"];function qi(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,i=Zc(e?.openInspectionKind)??r,a=ot(t);return{inputMode:tl(e?.inputMode),focusedRegion:Qc(e?.focusedRegion),selectedRepoId:Ue(e?.selectedRepoId),selectedTaskId:Ue(e?.selectedTaskId),selectedPtyTabId:Ue(e?.selectedPtyTabId),selectedLeftItemId:dl(Ue(e?.selectedTaskId)),activeTab:r?ne:Ue(e?.activeTab)??"agent",preferredPtyTabKind:el(e?.preferredPtyTabKind),inspectorSection:St(e?.inspectorSection,ji,"task"),inspectionMode:Jc(e?.inspectionMode,r==="diff"?"diff":"files"),openInspectionKind:i,selectedFileTreePath:Ue(e?.selectedFileTreePath),selectedFilePath:Ue(e?.selectedFilePath),selectedDiffPath:Ue(e?.selectedDiffPath),collapsedFileTreePaths:Array.isArray(e?.collapsedFileTreePaths)?e.collapsedFileTreePaths:[],fileScrollOffset:0,diffScrollOffset:0,selectedActionId:St(e?.selectedActionId,Wi,"commit"),selectedRunner:rl(e?.selectedRunner,a,Xe(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:$c(),centerZoomed:!1}}function $c(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function Ki(e,t){return{...e??Le(),selectedRepoId:t.selectedRepoId,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 jt(e,t,r={}){let i=cl(e,t),a=Zi(i),T=((a?.kind==="repo"?t.repos.find(p=>p.id===a.id)??null:a?.kind==="task"?t.repos.find(p=>p.id===t.tasks.find(y=>y.id===a.id)?.repoId)??null:null)??t.repos.find(p=>p.id===e.selectedRepoId)??t.repos[0]??null)?.id??null,n=T?t.tasks.filter(p=>p.repoId===T):[],h=(a?.kind==="task"?n.find(p=>p.id===a.id)??null:null)??n.find(p=>p.id===e.selectedTaskId)??n[0]??null;return{...e,inputMode:r.resetInputMode?"control":e.inputMode,selectedLeftItemId:i,selectedRepoId:T,selectedTaskId:h?.id??null,...il(h,e.activeTab,e.selectedPtyTabId),selectedFilePath:t.inspection&&t.inspection.taskId===h?.id?t.inspection.selectedFilePath:e.selectedFilePath,...nl(e,t,h?.id??null),selectedDiffPath:Gc(e,t,h?.id??null),inspectorSection:St(e.inspectorSection,ji,"task")}}function zi(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return Nc(t)?X({state:{...e,inputMode:"control",centerZoomed:!1,actionMessage:null},changed:!0,detachTerminal:!0}):X({state:e});if(t==="q"||t==="Q")return X({state:e,exit:!0});if(t==="ESCAPE")return X({state:{...e,actionMessage:null},changed:e.actionMessage!==null,pause:!0});if(t==="n"||t==="N")return X({state:{...e,focusedRegion:"tasks",actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0});if((t==="r"||t==="R")&&e.focusedRegion==="tasks"&&Mr(e.selectedLeftItemId))return X({state:{...e,selectedRunner:Br(e.selectedRunner,r.enabledRunnerIds),actionMessage:null,taskPromptError:null},changed:!0});if(t==="TAB"||t==="]")return Oi(e,1);if(t==="SHIFT_TAB"||t==="[")return Oi(e,-1);if(t==="z"||t==="Z")return X({state:{...e,centerZoomed:!e.centerZoomed,actionMessage:null},changed:!0});if(t==="UP"||t==="k")return e.focusedRegion==="center"&&e.activeTab===ne?qe(e,-1,r):Bi(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?qe(e,1,r):Bi(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 i=r.enabledRunnerIds??de,a=e.centerTabRunner?i.indexOf(e.centerTabRunner):-1,S=a===i.length-1?null:i[a+1];return X({state:{...e,centerTabRunner:S,actionMessage:null},changed:!0})}if((t==="+"||t==="a"||t==="A"||t==="t"||t==="T")&&e.focusedRegion==="center"&&e.selectedTaskId){let i=sl(e,t);return X({state:{...e,preferredPtyTabKind:i,actionMessage:null},changed:!0,createPtyTab:!0,createPtyTabKind:i,createPtyTabRunner:i==="agent"?e.centerTabRunner:null})}if((t==="R"||t==="r")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0});if((t==="X"||t==="x")&&e.focusedRegion==="inspector"&&e.inspectionMode==="review")return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if((t==="X"||t==="x")&&e.focusedRegion==="tasks"&&Wt(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,selectedActionId:"close-task",actionMessage:null},changed:!0,closeTask:!0});if(t==="x"&&e.focusedRegion==="center"&&$i(e.activeTab,r.ptyTabIds??[]))return X({state:{...e,actionMessage:null},changed:!0,closePtyTab:!0});if(t==="LEFT"||t==="h"){if(e.focusedRegion==="center")return Lr(e,-1,r.centerTabIds);if(e.focusedRegion==="inspector")return Fi(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return Lr(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Fi(e,1)}if(Ke(t)){if(e.focusedRegion==="tasks"&&Mr(e.selectedLeftItemId)){let i=en(e.selectedLeftItemId);return X({state:{...e,selectedRepoId:i??e.selectedRepoId,actionMessage:null,taskPromptInput:"",taskPromptError:null},changed:!0,beginTaskPrompt:!0})}if(e.focusedRegion==="tasks"&&e.selectedLeftItemId==="new-workspace")return X({state:{...e,actionMessage:null},changed:!0,openWorkspaceBrowser:!0});if(e.focusedRegion==="tasks"&&Wt(e.selectedLeftItemId)&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",activeTab:e.selectedPtyTabId??e.activeTab,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&$i(e.activeTab,r.ptyTabIds??[])&&e.selectedTaskId)return X({state:{...e,inputMode:"terminal",selectedPtyTabId:e.activeTab,preferredPtyTabKind:Fr(e.activeTab)??e.preferredPtyTabKind,actionMessage:null},changed:!0,attachTerminal:!0});if(e.focusedRegion==="center"&&e.activeTab===ne)return X({state:{...e,actionMessage:null},changed:!0,refreshInspection:!0});if(e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="files"){let i=e.selectedFileTreePath??e.selectedFilePath;if(i&&(r.fileTreeDirectoryIds??[]).includes(i))return X({state:qc({...e,selectedFileTreePath:i}),changed:!0});let a=i&&(r.fileTreeFileIds??[]).includes(i)?i:e.selectedFilePath;return X({state:{...e,selectedFileTreePath:a,selectedFilePath:a,activeTab:ne,openInspectionKind:"file",fileScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0})}return e.focusedRegion==="inspector"&&e.selectedTaskId&&e.inspectionMode==="diff"?X({state:{...e,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.focusedRegion==="inspector"&&e.inspectionMode==="review"?e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,selectedActionId:"refresh-checks",actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.focusedRegion!=="actions"?X({state:e}):e.selectedActionId==="create-pr"?X({state:{...e,actionMessage:null},changed:!0,syncPullRequest:!0}):e.selectedActionId==="refresh-checks"?X({state:{...e,actionMessage:null},changed:!0,refreshPullRequestChecks:!0}):e.selectedActionId==="merge"?X({state:{...e,actionMessage:null},changed:!0,mergeTask:!0}):e.selectedActionId==="close-task"?X({state:{...e,actionMessage:null},changed:!0,closeTask:!0}):X({state:{...e,actionMessage:`Action queued: ${e.selectedActionId} (inspection surfaces land in phase 4.1).`},changed:!0})}return X({state:e})}function vt(e,t){return{...e,terminal:t}}function Vi(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function Nc(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Ke(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
83
|
-
`}function Gi(e){return e.length===1&&e>=" "&&e!=="\x7F"}function Xi(e){return Yi(e)||/:(?:agent|terminal)(?:-\d+)?$/.test(e)}function Hc(e){return Hi.includes(e)}function Yi(e){return Ni.includes(e)}function Qi(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Wc=["tasks","center","inspector"];function Oi(e,t){return Ht(e,"focusedRegion",Wc,t)}function Lr(e,t,r){let i=Ht(e,"activeTab",r&&r.length>0?r:al(e),t);return!i.changed||Hc(i.state.activeTab)?i:{...i,state:{...i.state,selectedPtyTabId:i.state.activeTab,preferredPtyTabKind:Fr(i.state.activeTab)??i.state.preferredPtyTabKind}}}function Bi(e,t,r){if(e.focusedRegion==="tasks")return jc(e,t,r.leftItemIds);if(e.focusedRegion==="center")return Lr(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Ji(e,t,r);if(e.inspectionMode==="diff"){let i=Or(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return i.changed?{...i,state:{...i.state,diffScrollOffset:0}}:i}return Ht(e,"selectedActionId",Fc,t)}return Ht(e,"selectedActionId",Wi,t)}function jc(e,t,r){let i=Or(e,"selectedLeftItemId",r,t);if(!i.changed)return i;let a=Zi(i.state.selectedLeftItemId);if(a?.kind==="task")return{...i,state:{...i.state,selectedTaskId:a.id,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};if(a?.kind==="repo")return{...i,state:{...i.state,selectedRepoId:a.id,selectedTaskId:null,selectedPtyTabId:null,selectedFilePath:null,selectedFileTreePath:null,selectedDiffPath:null,fileScrollOffset:0,diffScrollOffset:0},refreshInspection:!0};let S=en(i.state.selectedLeftItemId);return S?{...i,state:{...i.state,selectedRepoId:S}}:i}function qe(e,t,r){if(t===0)return X({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Ji(e,t,r);if(e.inspectionMode==="diff"){let i=Or(e,"selectedDiffPath",r.diffPathIds??[],t,!0);return i.changed?{...i,state:{...i.state,diffScrollOffset:0}}:i}return X({state:e})}if(e.focusedRegion==="center"&&e.activeTab===ne){if(e.openInspectionKind==="file")return Kc(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return zc(e,t,r)}return X({state:e})}function Uc(e,t){if(e.inspectionMode===t)return X({state:e});let r=t==="diff"?"diff":t==="files"?"file":e.openInspectionKind,i=t==="diff"||t==="files"?ne:e.activeTab;return X({state:{...e,inspectionMode:t,activeTab:i,openInspectionKind:r,fileScrollOffset:t==="files"?0:e.fileScrollOffset,diffScrollOffset:t==="diff"?0:e.diffScrollOffset,actionMessage:null},changed:!0,refreshInspection:!0})}function Fi(e,t){return Uc(e,Yc(e.inspectionMode,Ui,t))}function Ji(e,t,r){let i=r.fileTreeRowIds&&r.fileTreeRowIds.length>0?r.fileTreeRowIds:r.filePathIds??[];if(i.length===0)return X({state:e});let a=e.selectedFileTreePath??e.selectedFilePath??i[0]??null,S=i.indexOf(a??""),T=Ne(S===-1?0:S+t,0,i.length-1),n=i[T]??null;if(n===e.selectedFileTreePath)return X({state:e});let h=n!==null&&(r.fileTreeFileIds??r.filePathIds??[]).includes(n);return X({state:{...e,selectedFileTreePath:n,selectedFilePath:h?n:e.selectedFilePath,fileScrollOffset:h?0:e.fileScrollOffset,actionMessage:null},changed:!0,refreshInspection:h})}function qc(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,i)=>r.localeCompare(i)),actionMessage:null}}function Kc(e,t,r,i,a=10){let S=Math.max(0,i-Math.max(1,a)),T=Ne(e[t]+r,0,S);return T===e[t]?X({state:e}):X({state:{...e,[t]:T,actionMessage:null},changed:!0})}function zc(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Vc(e,t,r);let i=r.diffLineCount??0,a=r.pageRows??10,S=Math.max(0,i-Math.max(1,a)),T=e.diffScrollOffset+t,n=r.diffPathIds??[];if(n.length===0||!e.selectedDiffPath){let y=Ne(T,0,S);return y===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:y,actionMessage:null},changed:!0})}let h=n.indexOf(e.selectedDiffPath);if(h===-1){let y=Ne(T,0,S);return y===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:y,actionMessage:null},changed:!0})}if(t>0&&T>S){let y=n[h+1]??null;return y?X({state:{...e,selectedDiffPath:y,diffScrollOffset:0,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===S?X({state:e}):X({state:{...e,diffScrollOffset:S,actionMessage:null},changed:!0})}if(t<0&&T<0){let y=n[h-1]??null;return y?X({state:{...e,selectedDiffPath:y,diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?X({state:e}):X({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let p=Ne(T,0,S);return p===e.diffScrollOffset?X({state:e}):X({state:{...e,diffScrollOffset:p,actionMessage:null},changed:!0})}function Vc(e,t,r){let i=r.diffLineCount??0,a=r.pageRows??10,S=Math.max(0,i-Math.max(1,a)),T=Ne(e.diffScrollOffset+t,0,S),n=Xc(r.diffPathRanges??[],T)??e.selectedDiffPath;return T===e.diffScrollOffset&&n===e.selectedDiffPath?X({state:e}):X({state:{...e,diffScrollOffset:T,selectedDiffPath:n,actionMessage:null},changed:!0})}function Gc(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Xc(e,t){return e.find(r=>t>=r.start&&t<r.end)?.path??e.at(-1)?.path??null}function Ht(e,t,r,i){let a=r.indexOf(e[t]),S=Ne(a+i,0,r.length-1),T=r[S];return!T||T===e[t]?X({state:e}):X({state:{...e,[t]:T,actionMessage:null},changed:!0})}function Or(e,t,r,i,a=!1){if(r.length===0)return X({state:e});let S=r.indexOf(e[t]??r[0]??""),T=Ne(S===-1?0:S+i,0,r.length-1),n=r[T]??null;return n===e[t]?X({state:e}):X({state:{...e,[t]:n,actionMessage:null},changed:!0,refreshInspection:a})}function Yc(e,t,r){let i=t.indexOf(e);return t[Ne(i+r,0,t.length-1)]??e}function X(e){return{state:e.state,changed:e.changed??!1,exit:e.exit??!1,pause:e.pause??!1,attachTerminal:e.attachTerminal??!1,detachTerminal:e.detachTerminal??!1,beginTaskPrompt:e.beginTaskPrompt??!1,openWorkspaceBrowser:e.openWorkspaceBrowser??!1,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 St(e,t,r){return t.includes(e??"")?e:r}function Qc(e){return e==="tabs"?"center":St(e,Bc,"tasks")}function Jc(e,t){return e==="checks"||e==="actions"||e==="review"?"review":St(e,Ui,t)}function Zc(e){return e==="file"||e==="diff"?e:null}function el(e){return e==="terminal"?"terminal":"agent"}function tl(e){return e==="terminal"?"terminal":"control"}function rl(e,t=[...de],r="codex"){return e&&at(e)&&t.includes(e)?e:r}function Br(e,t=de){let r=t.length>0?t:de,i=r.indexOf(e);return r[(i+1)%r.length]??r[0]??"codex"}function Fr(e){return/:agent(?:-\d+)?$/.test(e)?"agent":/:terminal(?:-\d+)?$/.test(e)?"terminal":null}function sl(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":Fr(e.activeTab)??e.preferredPtyTabKind}function il(e,t,r){if(!e)return{activeTab:t===ne?t:"agent",selectedPtyTabId:null};let i=e.ptyTabs.find(n=>n.id===r)??null,a=e.selectedPtyTabId?e.ptyTabs.find(n=>n.id===e.selectedPtyTabId)??null:null,S=e.ptyTabs.find(n=>n.id===t)??null;if(S)return{activeTab:S.id,selectedPtyTabId:S.id};if(Yi(t)){let h=e.ptyTabs.find(p=>p.kind===t)??null??a??i??e.ptyTabs[0]??null;return{activeTab:h?.id??ne,selectedPtyTabId:h?.id??null}}if(t===ne)return{activeTab:ne,selectedPtyTabId:i?.id??a?.id??e.ptyTabs[0]?.id??null};let T=a??i??e.ptyTabs[0]??null;return{activeTab:T?.id??ne,selectedPtyTabId:T?.id??null}}function nl(e,t,r){if(!t.inspection||t.inspection.taskId!==r)return{selectedFileTreePath:e.selectedFileTreePath,collapsedFileTreePaths:e.collapsedFileTreePaths};let i=e.selectedFileTreePath??t.inspection.selectedFilePath,a=e.selectedFileTreePath===null&&e.collapsedFileTreePaths.length===0?ol(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:i,collapsedFileTreePaths:a}}function ol(e,t){let r=new Set;if(t){let i=t.split("/");for(let a=1;a<i.length;a+=1)r.add(i.slice(0,a).join("/"))}return e.filter(i=>i.kind==="directory"&&!i.path.includes("/")&&!r.has(i.path)).map(i=>i.path).sort((i,a)=>i.localeCompare(a))}function al(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function $i(e,t){return t.includes(e)}function cl(e,t){let r=ll(t);return e.selectedLeftItemId&&r.includes(e.selectedLeftItemId)?e.selectedLeftItemId:e.selectedTaskId&&r.includes(`task:${e.selectedTaskId}`)?`task:${e.selectedTaskId}`:e.selectedRepoId&&r.includes(`repo:${e.selectedRepoId}`)?`repo:${e.selectedRepoId}`:r[0]??null}function ll(e){let t=[];for(let r of e.repos){t.push(`repo:${r.id}`);for(let i of e.tasks.filter(a=>a.repoId===r.id))t.push(`task:${i.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function Zi(e){return e?e.startsWith("repo:")?{kind:"repo",id:e.slice(5)}:e.startsWith("task:")?{kind:"task",id:e.slice(5)}:null:null}function Ue(e){return typeof e=="string"?e:null}function dl(e){return e?`task:${e}`:null}function Wt(e){return typeof e=="string"&&e.startsWith("task:")}function Mr(e){return typeof e=="string"&&e.startsWith("new-task:")}function en(e){return Mr(e)?e.slice(9):null}function Ne(e,t,r){return Math.min(r,Math.max(t,e))}var Ut="empty",ce={lineNumber:"3b4261",gutter:"3b4261",keyword:"9d7cd8",string:"9ece6a",literal:"ff9e64",comment:"565f89",markup:"f7768e",diffAdd:"9ece6a",diffDelete:"f7768e",diffMeta:"565f89",diffHunk:"565f89"};function rn(e,t){let r=t.repos.find(w=>w.id===e.selectedRepoId)??t.repos[0]??null,i=r?t.tasks.filter(w=>w.repoId===r.id):[],a=i.find(w=>w.id===e.selectedTaskId)??i[0]??null,S=Kl(t.tasks),T=pl(e,a),n=fl(e,a,T),h=n.find(w=>w.id===T)??n[0]??{id:"agent",label:"CODEX"},p=t.inspection?.taskId===a?.id?t.inspection:null,y=r?.name??"no repo",o=a?De(a.runner):De(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 ${r?`[${r.name}]`:"[no repo]"} \xB7 ${De(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:")?`r runner [${De(e.selectedRunner)}] Enter create task Esc pause ? help`:Wt(e.selectedLeftItemId)?"n new task Enter attach X close task Esc pause ? help":"n new task Enter select Esc pause ? help":e.focusedRegion==="center"?a===null?"n new task Tab tasks Esc pause ? help":T===ne?"\u2191\u2193/wheel/PgUp/PgDn scroll \u2190/\u2192 switch Tab inspector Esc pause ? help":`+ new tab a ${De(e.centerTabRunner??a?.runner??e.selectedRunner)} r runner t terminal x close Enter attach Esc pause ? help`:e.inspectionMode==="review"?"R sync PR 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:kt.relative(process.env.HOME??"",t.workspaceRoot).length>0?`~/${kt.relative(process.env.HOME??"",t.workspaceRoot)}`:t.workspaceRoot,agent:o,liveLabel:a?.status==="running"?"live":"idle"},leftTree:ul(e,t.repos,t.tasks),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(w=>zl(w,S[w])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":h.label,taskId:e.workspaceBrowser?"new workspace":a?.id??"no task",repo:y,agent:o},centerTranscript:hl(T,e,r,a,e.workspaceBrowser,p),tabs:n,rightContext:ql(r,a),rightInspection:Il(e,a,p)}}function ul(e,t,r){let i=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(t.length===0)i.push({text:"No repos registered.",indent:2,muted:!0});else for(let S of t){let T=e.selectedLeftItemId===`repo:${S.id}`;i.push({id:`repo:${S.id}`,text:`\u25BE ${S.name}`,selected:T,focused:T&&e.focusedRegion==="tasks"});let n=r.filter(y=>y.repoId===S.id);if(n.length===0)i.push({text:" \xB7 no tasks yet",indent:0,muted:!0});else for(let y of n){let o=e.selectedLeftItemId===`task:${y.id}`,w=o?"\u25B8":"\u2022",l={id:`task:${y.id}`,taskId:y.id,text:`${w} ${y.id} [${y.runner}]`,indent:2,selected:o,focused:o&&e.focusedRegion==="tasks",accentDot:y.status==="running"};o&&(l.status=y.status),i.push(l)}let h=`new-task:${S.id}`,p=e.selectedLeftItemId===h;i.push({id:h,text:`+ New Task [${De(e.selectedRunner)}]`,indent:2,selected:p,focused:p&&e.focusedRegion==="tasks",muted:!p})}let a=e.selectedLeftItemId==="new-workspace";return i.push({text:"",muted:!0}),i.push({id:"new-workspace",text:"+ New Workspace",selected:a,focused:a&&e.focusedRegion==="tasks"}),i}function hl(e,t,r,i,a,S=null){if(a){let n=a.entries.length===0?["No directories or git repos here."]:a.entries.map((h,p)=>{let y=p===a.selectedIndex?"\u25B8":" ",o=h.kind==="repo"?" [git repo]":"/";return`${y} ${h.name}${o}`});return ke(["Browse for a workspace to register.",a.cwd,"",...n,"",a.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 ke(["No repos registered yet.","","Run `craig repo add <path>` in command mode, then reopen the shell."]);if(!i)return ke([`No tasks in ${r.name}.`,"",`Press n or choose + New Task to create one with ${De(t.selectedRunner)}.`]);let T=i.ptyTabs.find(n=>n.id===e)??null;return T?T.kind==="agent"?ke([`${T.title} tab ready for ${i.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."]):ke([`${T.title} tab ready for ${i.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"?_l(i,S,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?wl(i,S,t.diffScrollOffset):i.ptyTabs.length===0&&!t.openInspectionKind?ke(["No task tabs open.","","Press a to create an agent tab, t to create a Terminal tab, or + to create the preferred tab kind."]):ke(["No center tab selected.","","Choose a task PTY tab or open an inspection item from the right panel."])}function fl(e,t,r){let i=t?.ptyTabs.map(S=>({id:S.id,label:gl(S)}))??[];if(!t)return[{id:Ut,label:"EMPTY",active:r===Ut,focused:e.focusedRegion==="center"&&r===Ut}];let a=e.openInspectionKind?[{id:ne,label:ml(e)}]:[];return[...i,...a].map(S=>({...S,active:S.id===r,focused:e.focusedRegion==="center"&&S.id===r}))}function pl(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:Ut}function gl(e){return e.title.toUpperCase()}function ml(e){let t=e.openInspectionKind==="diff"?e.selectedDiffPath:e.selectedFilePath,r=t?kt.basename(t):"Inspect";return e.openInspectionKind==="diff"?`${r} \u0394`:r}function _l(e,t,r){if(!e)return ke(["No task selected.","","Select or create a task to inspect files."]);if(!t||t.error)return ke(["Files unavailable.","",t?.error??"Craig has not loaded file inspection for this task yet."]);let i=t.selectedFile,a=nn(i.path??i.title);return[{text:i.title},{text:`${i.byteLength===null?"size unknown":`${i.byteLength} bytes`} \xB7 ${i.lines.length} lines \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...yl(i.lines,r,a)]}function wl(e,t,r){if(!e)return ke(["No task selected.","","Select or create a task to inspect diffs."]);if(!t||t.error)return ke(["Diff unavailable.","",t?.error??"Craig has not loaded diff inspection for this task yet."]);let i=bl(t),a=Math.max(0,Math.min(r,Math.max(0,i.length-1)));return[{text:"All changes"},{text:`${t.diffPaths.length} files \xB7 ${i.length} rows \xB7 PgUp/PgDn or wheel scroll`,tone:"muted"},{text:""},...i.slice(a)]}function Hr(e){if(!e)return[];let t=0;return e.diffPaths.map(r=>{let a=1+(e.diffContents[r]??e.selectedDiff).lines.length+1,S={path:r,start:t,end:t+a};return t+=a,S})}function sn(e){return Hr(e).at(-1)?.end??0}function bl(e){let t=[];for(let r of e.diffPaths){let i=e.diffContents[r]??e.selectedDiff,a=nn(i.path??i.title);t.push({text:i.title,tone:"muted"}),t.push(...Sl(i.lines,0,a)),t.push({text:""})}return t.length>0?t:ke(["No local changes."])}function ke(e){return e.map(t=>({text:t}))}function yl(e,t,r){let i=Math.max(3,String(e.length).length),a=Math.max(0,Math.min(t,Math.max(0,e.length-1)));return e.slice(a).map((S,T)=>{let n=a+T+1;return{text:`${`${String(n).padStart(i," ")} \u2502 `}${S}`,segments:[{text:String(n).padStart(i," "),style:{fg:ce.lineNumber}},{text:" \u2502 ",style:{fg:ce.gutter}},...$r(S,r)],tone:"default"}})}function Sl(e,t,r){let i=vl(e),a=Math.max(0,Math.min(t,Math.max(0,i.length-1)));return i.slice(a).map(S=>kl(S,r))}function vl(e){let t=[],r=0,i=0;for(let a of e){let S=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(a);if(S){r=Number.parseInt(S[1]??"0",10),i=Number.parseInt(S[2]??"0",10);continue}if(!(a.startsWith("diff --git")||a.startsWith("index ")||a.startsWith("+++ ")||a.startsWith("--- "))&&!(a==="staged"||a==="unstaged"||a==="untracked")){if(a.startsWith("-")&&!a.startsWith("---")){t.push({oldNumber:r,newNumber:null,marker:"-",text:a.slice(1),kind:"delete"}),r+=1;continue}if(a.startsWith("+")&&!a.startsWith("+++")){t.push({oldNumber:null,newNumber:i,marker:"+",text:a.slice(1),kind:"add"}),i+=1;continue}if(a.startsWith(" ")){if(r===0&&i===0)continue;t.push({oldNumber:r,newNumber:i,marker:" ",text:a.slice(1),kind:"context"}),r+=1,i+=1;continue}}}return t}function kl(e,t){let r=tn(e.oldNumber),i=tn(e.newNumber),a=e.kind==="delete"?r:i,S=e.kind==="delete"?{bg:"2a1111",fallbackFg:ce.diffDelete}:e.kind==="add"?{bg:"10210f",fallbackFg:ce.diffAdd}:null,T=`${a} \u2502 ${e.text}`,n=S?Cl($r(e.text,t),S.bg,S.fallbackFg):$r(e.text,t),h=S?{fg:ce.lineNumber,bg:S.bg}:{fg:ce.lineNumber},p=S?{fg:ce.gutter,bg:S.bg}:{fg:ce.gutter};return{text:T,segments:[{text:a,style:h},{text:" \u2502 ",style:p},...n],fullBleed:S!==null}}function tn(e){return e===null?" ":String(e).padStart(4," ")}function nn(e){let t=kt.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 $r(e,t){return t==="diff"?Tl(e):t==="markdown"?Rl(e):t==="json"?Nr(e,/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|-?\b\d+(?:\.\d+)?\b/g):t==="javascript"||t==="css"?Nr(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 Tl(e){return e.startsWith("+")&&!e.startsWith("+++")?[{text:e,style:{fg:ce.diffAdd}}]:e.startsWith("-")&&!e.startsWith("---")?[{text:e,style:{fg:ce.diffDelete}}]:e.startsWith("@@")?[{text:e,style:{fg:ce.diffHunk}}]:e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("+++ ")||e.startsWith("--- ")?[{text:e,style:{fg:ce.diffMeta}}]:[{text:e}]}function Cl(e,t,r){return e.map(i=>({text:i.text,style:{...i.style??{fg:r},bg:t}}))}function Rl(e){return/^#{1,6}\s/.test(e)?[{text:e,style:{fg:ce.markup,bold:!0}}]:Nr(e,/(`[^`]+`)|(\*\*[^*]+\*\*)|(\[[^\]]+\]\([^)]+\))/g)}function Nr(e,t){let r=[],i=0;for(let a of e.matchAll(t)){let S=a[0],T=a.index??0;T>i&&r.push({text:e.slice(i,T)}),r.push({text:S,style:Pl(S)}),i=T+S.length}return i<e.length&&r.push({text:e.slice(i)}),r.length>0?r:[{text:e}]}function Pl(e){return e.startsWith("//")||e.startsWith("/*")?{fg:ce.comment,italic:!0}:e.startsWith('"')||e.startsWith("'")||e.startsWith("`")?{fg:ce.string}:/^-?\d/.test(e)||e==="true"||e==="false"||e==="null"||e==="undefined"?{fg:ce.literal}:e.startsWith("**")||e.startsWith("[")||e.startsWith("`")?{fg:ce.markup}:{fg:ce.keyword}}function Il(e,t,r){let i=[xl(e,t),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...i,...Dl(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...i,...Hl(e,r)]}:{title:"",rows:[...i,...jl(e,r)]}}function xl(e,t){let r=e.inspectionMode,i=[{label:"CHANGES",active:r==="diff"},{label:"FILES",active:r==="files"},{label:"REVIEW",active:r==="review"}],a=[];for(let h=0;h<i.length;h++){let p=i[h];h>0&&a.push({text:" "}),a.push({text:p.label,style:{fg:p.active?"7aa2f7":"565f89"}})}let S=El(t?.pullRequest??null),T=Al(t?.pullRequest?.requiredChecks??null);return a.push({text:" "},S,{text:" "},T),{id:"inspection-mode",text:a.map(h=>h.text).join(""),segments:a}}function El(e){return!e||!e.number?{text:Ei,style:{fg:"565f89"}}:e.status==="merged"?{text:Di,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Li,style:{fg:"f7768e"}}:{text:Ai,style:{fg:"9ece6a"}}}function Al(e){return!e||e.length===0?{text:xr,style:{fg:"565f89"}}:e.some(t=>t.status==="failed")?{text:Dr,style:{fg:"f7768e"}}:e.every(t=>t.status==="success")?{text:Ar,style:{fg:"9ece6a"}}:{text:Er,style:{fg:"e0af68"}}}function Dl(e,t){if(!t)return[{id:"review-empty",text:"No task selected.",muted:!0}];let r=t.pullRequest;return[{id:"review-title",text:"PR",muted:!0},r.number?{id:"pr-number",text:`#${r.number} ${r.status??"unknown"}`}:{id:"pr-number",text:"No PR linked.",muted:!0},Ll(r.url),{id:"pr-base",text:`base ${r.baseBranch??"unknown"}`,muted:r.baseBranch===null},{id:"pr-head",text:`head ${r.headBranch??t.branch}`,muted:r.headBranch===null},{id:"pr-merge",text:`merge ${r.mergeable?"ready":r.mergeStateStatus??"unknown"}`},{id:"pr-synced",text:`synced ${$l(r.lastSyncedAt)}`,muted:r.lastSyncedAt===null},{id:"pr-sha",text:`sha ${Nl(r.lastSyncedHeadSha)}`,muted:r.lastSyncedHeadSha===null},{id:"review-spacer",text:""},{id:"review-checks",text:"Checks",muted:!0},...Ml(t)]}function Ll(e){if(!e)return{id:"pr-url",text:"not created",muted:!0};let t="Open in GitHub \u2197";return{id:"pr-url",text:t,segments:[{text:t,href:e,style:{fg:"7aa2f7",underline:!0}}]}}function Ml(e){return e.pullRequest.number?e.pullRequest.requiredChecks.length===0?[{id:"pr-checks-empty",text:"No GitHub checks reported.",muted:!0}]:e.pullRequest.requiredChecks.map(Ol):[{id:"pr-checks-none",text:"No checks \u2014 sync after creating a PR.",muted:!0}]}function Ol(e){let{icon:t,color:r}=Bl(e.status),i=e.name.length>16?`${e.name.slice(0,15)}\u2026`:e.name;return{id:`pr-check:${e.name}`,text:`${t} ${i.padEnd(16," ")} ${Fl(e.status)}`,color:r,muted:!1}}function Bl(e){switch(e){case"success":return{icon:Ar,color:"9ece6a"};case"pending":return{icon:Er,color:"e0af68"};case"failed":return{icon:Dr,color:"f7768e"};case"skipped":return{icon:xr,color:"565f89"};default:return{icon:"?",color:"565f89"}}}function Fl(e){return e==="success"?"passing":e==="failed"?"failing":e}function $l(e){return e??"--"}function Nl(e){return e?e.slice(0,7):"--"}function Hl(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(S=>[S.path,S.status])),i=Wl(t.fileRows,e.collapsedFileTreePaths),a=e.selectedFileTreePath??t.selectedFilePath;return i.map(S=>{let T=S.kind==="file"?r.get(S.path):void 0,n=T==="A"?"9ece6a":T==="M"?"e0af68":T==="D"?"f7768e":T==="??"?"565f89":void 0,h=S.kind==="directory"?e.collapsedFileTreePaths.includes(S.path)?Ii:xi:Pi(S.label),p=S.kind==="file"?Mi(S.label):void 0,y=" ".repeat(S.depth),o=p?{text:h,style:{fg:p}}:{text:h},w=n?{text:S.label,style:{fg:n}}:{text:S.label},l=[{text:y},o,w];return{id:S.path,text:`${y}${h}${S.label}`,selected:S.path===a,focused:S.path===a&&e.focusedRegion==="inspector",muted:S.kind==="directory",segments:l}})}function Wl(e,t){let r=new Set(t);return e.filter(i=>{let a=i.path.split("/");for(let S=1;S<a.length;S+=1)if(r.has(a.slice(0,S).join("/")))return!1;return!0})}function jl(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:"No local changes.",muted:!0}];let r=[];for(let i of["branch","staged","unstaged","untracked"]){let a=t.diffRows.filter(S=>S.group===i);a.length!==0&&(r.push({id:i,text:i.toUpperCase(),muted:!0}),r.push(...a.map(S=>Ul(S,e,t))))}return r}function Ul(e,t,r){let i=e.additions===null?"-":`+${e.additions}`,a=e.deletions===null?"-":`-${e.deletions}`,S=e.status==="A"||e.group==="untracked"?"9ece6a":e.status==="D"?"f7768e":"e0af68";return{id:`${e.group}:${e.path}`,text:` ${e.status.padEnd(2," ")} ${e.path} ${i}/${a}`,selected:e.path===(t.selectedDiffPath??r.selectedDiffPath),focused:e.path===(t.selectedDiffPath??r.selectedDiffPath)&&t.focusedRegion==="inspector",color:S}}function ql(e,t){return e?t?[{label:"Task",value:t.id},{label:"Repo",value:e.name},{label:"Agent",value:De(t.runner)},{label:"Branch",value:t.branch},{label:"Status",value:t.status},{label:"Worktree",value:kt.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 Kl(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function zl(e,t){return{name:De(e).toLowerCase(),health:t>0?1:0,count:String(t)}}var qt={width:120,height:36},Ee={leftWidth:42,rightWidth:36,dividerWidth:1,topRailHeight:1};function ut(e,t){return{width:Math.max(e??qt.width,qt.width),height:Math.max(t??qt.height,qt.height)}}import{spawn as wd}from"node:child_process";import{createHash as bd}from"node:crypto";import{createServer as yd,createConnection as _n}from"node:net";import{openSync as Sd}from"node:fs";import{mkdir as vd,readFile as zr,rm as nt,writeFile as kd}from"node:fs/promises";import{tmpdir as Td}from"node:os";import ht from"node:path";import{createRequire as td}from"node:module";var ln=uo(an(),1),Vl=1e3,Gl=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function dn(e){return new ln.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:Vl,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function un(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function jr(e,t){return new Promise(r=>{e.write(t,r)})}function hn(e,t=0){let r=e.buffer.active,i=[],a=r.getNullCell(),S=r.baseY+r.cursorY,T=Math.max(0,r.baseY-t);for(let n=0;n<e.rows;n+=1){let h=r.getLine(T+n);if(!h){i.push({segments:[]});continue}let p=[];for(let y=0;y<e.cols;y+=1){let o=h.getCell(y,a);!o||o.getWidth()===0||p.push({text:o.getChars()||" ",style:Ql(o,T+n===S&&y===r.cursorX)})}i.push({segments:Xl(Yl(p))})}return i}function Xl(e){let t=[];for(let r of e){let i=t.at(-1);if(i&&ed(i.style,r.style)){i.text+=r.text;continue}let a={text:r.text};fn(r.style)||(a.style=r.style),t.push(a)}return t}function Yl(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!fn(r.style))break;t-=1}return e.slice(0,t)}function Ql(e,t){let r={},i=cn(e,"fg"),a=cn(e,"bg");return i&&(r.fg=i),a&&(r.bg=a),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 cn(e,t){if(t==="fg"?e.isFgDefault():e.isBgDefault())return;let i=t==="fg"?e.isFgRGB():e.isBgRGB(),a=t==="fg"?e.getFgColor():e.getBgColor();return i?a.toString(16).padStart(6,"0"):Gl[a]??Jl(a)}function Jl(e){if(e>=16&&e<=231){let t=e-16,r=Math.floor(t/36),i=Math.floor(t%36/6),a=t%6;return[r,i,a].map(Zl).map(S=>S.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 Zl(e){return e===0?0:55+e*40}function ed(e,t){return Wr(e)===Wr(t)}function Wr(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function fn(e){return Wr(e)===""}var rd=td(import.meta.url),sd=/^CTRL_([A-Z])$/,id="\x1B[6n",nd="\x1B[c",od="\x1B[?u",ad="\x1B]10;?\x1B\\",cd="\x1B]10;?\x07",ld="\x1B]11;?\x1B\\",dd="\x1B]11;?\x07",ud={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:""},Kt=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,i,a){let S=this.sessions.get(r);if(S)if(S.status!=="running")Ur(S),this.sessions.delete(r);else return this.attachedTabId=r,S.scrollbackLines=0,pn(S,i),this.getViewState(r);let T=this.createSession(t,r,i,a);return this.sessions.set(r,T),this.attachedTabId=r,this.getViewState(r)}write(t){let r=this.getAttachedSession();!r||r.status!=="running"||r.pty.write(t)}writeKey(t){let r=hd(t);r!==null&&this.write(r)}scrollViewport(t){let r=this.getAttachedSession();if(!r||t===0)return;let i=r.terminal.buffer.active.baseY;r.scrollbackLines=Math.max(0,Math.min(i,r.scrollbackLines-t))}resize(t){let r=this.getAttachedSession();r&&pn(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(Ur(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())Ur(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:hn(r.terminal,r.scrollbackLines),error:r.error,scrolledBack:r.scrollbackLines>0}:{status:"idle",rows:[],error:null,scrolledBack:!1}}createSession(t,r,i,a){let S=this.spawn??pd().spawn,T=dn(i),n=a??this.resolveSessionSpec(t,r),h=Je(this.env),{executable:p,args:y}=gd(this.shell,n.command,{cwd:n.cwd,env:h}),o=S(p,y,{name:"xterm-256color",cols:i.columns,rows:i.rows,cwd:n.cwd,env:md(h)}),w={taskId:t,tabId:r,pty:o,terminal:T,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(o.onData(l=>{_d(o,l),jr(w.terminal,l).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(o.onExit(l=>{w.status="exited",jr(w.terminal,`\r
|
|
84
|
-
|
|
85
|
-
`);let
|
|
86
|
-
`)
|
|
87
|
-
`)
|
|
88
|
-
`)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
`)),a.once("
|
|
92
|
-
`)
|
|
93
|
-
`)}
|
|
94
|
-
`)}function
|
|
95
|
-
`)}function
|
|
96
|
-
`)}function Wd(e,t,r,i){let a=Vd(e.runners),S=1,T=e.leftTree.map(h=>zd(h,t,i));return[...Zt(T,r-S),a]}function jd(e,t,r,i){let a=e.tabs.find(o=>o.active)?.label??"AGENT",S=ou(e.tabs),T=`${" ".repeat(S)}${er("\u2500".repeat(a.length+1),i,se.panelMuted)}`,n=[`${er(e.centerHeader.tabLabel,i,se.panelBg)} ${e.centerHeader.taskId}`,e.centerHeader.repo].join(" \xB7 "),h=e.tabs.find(o=>o.active)?.id??"agent",p=e.centerHeader.tabLabel==="BROWSER"||!Xi(h)?e.centerTranscript.map(o=>({...o})):Ud(e),y=[{text:Gd(e.tabs,i)},{text:T,tone:"muted"},{text:n},Be(),...p];return Zt(y,r)}function Ud(e){if(e.terminal.error)return[{text:"terminal \u25B8 PTY unavailable"},Be(),{text:e.terminal.error},Be(),{text:"Fix the native dependency setup, then re-enter terminal mode."}];let t=e.tabs.find(i=>i.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(i=>({text:$n(i.segments),segments:i.segments,fullBleed:!0}))}function qd(e,t,r,i){let a=e.rightInspection?Kd(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):Zt([{text:Ln("CONTEXT",e.focusedRegion==="tasks",i,se.panelBg)},Be(),...e.rightContext.map(S=>Xd(S,i)),...e.actionMessage?[Be(),{text:e.actionMessage}]:[]],r);return Zt(a,r)}function Kd(e,t){let r=e.slice(0,2),i=e.slice(2),a=Math.max(0,t-r.length),S=i.findIndex(n=>n.focused||n.selected),T=S===-1?0:cu(S-Math.floor(a/2),0,Math.max(0,i.length-a));return[...r.map(n=>Rn(n)),...i.slice(T,T+a).map(n=>Rn(n))]}function Rn(e){let t=e.focused?"\u25B8 ":e.selected?"\u2022 ":" ",r=e.focused||e.selected?"selected":e.muted?"muted":"default",i=`${t}${e.text}`;if(e.segments)return{text:i,segments:[{text:t},...e.segments],tone:r};if(e.accentPrefix&&!e.muted){let a=e.text.indexOf(" "),S=a===-1?e.text:e.text.slice(0,a),T=a===-1?"":e.text.slice(a);return{text:i,segments:[{text:t},{text:S,style:{fg:"7aa2f7"}},{text:T}],tone:r}}return e.color?{text:i,segments:[{text:t},{text:e.text,style:{fg:e.color}}],tone:r}:{text:i,tone:r}}function zd(e,t,r){let i=" ".repeat(e.indent??0),a=e.accentDot?" \u25CF":"",S=e.status?` ${e.status}`:"",T=e.accentDot?` ${Nn("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=t-Ve(S)-Ve(a),h=e.focused&&!e.selected?Ln(e.text,!0,r,se.panelBg):e.text,y=`${ze(`${i}${h}`,Math.max(0,n))}${S}${T}`;return e.selected?{text:y,tone:"selected"}:e.muted?{text:y,tone:"muted"}:{text:y}}function Vd(e){let t=e.map(i=>{let a=i.health>=1,S=parseInt(i.count,10),T=S>1?` (${S})`:"";return{text:`${a?"\u25CF":"\u25CB"} ${i.name}${T}`,active:a}}),r=[];for(let i=0;i<t.length;i++){let a=t[i];i>0&&r.push({text:" "}),a.active?r.push({text:a.text,style:{fg:se.success.fg}}):r.push({text:a.text,style:{fg:se.panelMuted.fg}})}return{text:t.map(i=>i.text).join(" "),segments:r,tone:"muted"}}function Gd(e,t){return e.map(r=>r.active?er(r.label,t,se.panelBg):Hn(r.label,t,se.panelBg)).join(" ")}function Xd(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Hn(e.value,t,se.panelBg):e.value}`}}function Ln(e,t,r,i){return t?er(e,r,i):e}function Xt(e,t,r,i){let a=Yd(i,e.tone??"default"),S=Qd(e,r,a);if(i==="left"){if(e.fullBleed)return le(ze(S,t),r,a);let n=t-Yt-Qt;if(e.rightAlign){let p=Ve(S),y=Math.max(0,n-p),o=`${" ".repeat(Yt)}${" ".repeat(y)}${S}${" ".repeat(Qt)}`;return le(o,r,a)}let h=`${" ".repeat(Yt)}${ze(S,n)}${" ".repeat(Qt)}`;return le(h,r,a)}return i==="center"&&e.fullBleed?Jd(e,t,r,a):le(ze(` ${S}`,t),r,a)}function Yd(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function Zt(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Be());return r}function Be(){return{text:""}}function Qd(e,t,r){return e.segments?e.segments.map(i=>Mn(i,t,r)).join(""):e.text}function Jd(e,t,r,i){let a=" ".repeat(Jt),S=Math.max(0,t-Jt*2);if(!e.segments)return le(`${a}${ze(e.text,S)}${a}`,r,i);let T=tu(e.segments,S),n=`${a}${T.map(h=>Mn(h,r,i)).join("")}${a}`;return le(n,r,i)}function Mn(e,t,r){let i=e.href?`${On(e.href)}${e.text}${In}`:Zd(e.text);return!t||!e.style?i:`${Tt(iu(e.style,r))}${nu(e.style)}${i}${Qr}${Tt(r)}`}function Zd(e){return e.replace(Nd,t=>{let[r,i]=eu(t);return`${On(r)}${r}${In}${i}`})}function eu(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function On(e){return`\x1B]8;;${e}\x1B\\`}function tu(e,t){let r=ru(e,t);return su(r,t)}function ru(e,t){let r=[],i=t;for(let a of e){if(i<=0)break;let S=Ve(a.text);if(S<=i){r.push(a),i-=S;continue}r.push({...a,text:a.text.slice(0,i)}),i=0}return r}function su(e,t){let r=Ve($n(e));if(r>=t)return e;let i=e.at(-1)?.style;return i?.bg?[...e,{text:" ".repeat(t-r),style:i}]:[...e,{text:" ".repeat(t-r)}]}function iu(e,t){let r=e.inverse?e.bg??t.bg:e.fg,i=e.inverse?e.fg??t.fg:e.bg,a={},S=r??t.fg,T=i??t.bg;return S&&(a.fg=S),T&&(a.bg=T),a}function nu(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 ou(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function Bn(e,t){let r=Math.max(0,t-Ve(e)),i=Math.floor(r/2),a=r-i;return`${" ".repeat(i)}${e}${" ".repeat(a)}`}function ze(e,t){let r=Ve(e);return r>=t?au(e,t):e+" ".repeat(t-r)}function au(e,t){return Ve(e)<=t?e:Fn(e).slice(0,Math.max(0,t-1))+"\u2026"}function Ve(e){return Fn(e).length}function cu(e,t,r){return Math.min(Math.max(e,t),r)}function Fn(e){return e.replace($d,"").replace(Bd,"")}function $n(e){return e.map(t=>t.text).join("")}function le(e,t,r){if(!t)return e;let i=Tt(r),a=e.replace(Fd,`${Qr}${i}`);return`${i}${a}${Qr}`}function Tt(e){let t=[];return e.fg&&t.push(`38;2;${Pn(e.fg).join(";")}`),e.bg&&t.push(`48;2;${Pn(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function Pn(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Nn(e,t,r){return es(e,t,se.success.fg,r)}function er(e,t,r){return es(e,t,se.accent.fg,r)}function Hn(e,t,r){return es(e,t,se.mutedfg.fg,r)}function es(e,t,r,i){if(!t)return e;let a=i.bg?{fg:r,bg:i.bg}:{fg:r};return`${Tt(a)}${e}${Tt(i)}`}var ts=["Runners","Help"];function rs(e,t){return de.map(r=>{let i=pe(r),a=e.runners?.[r]?.enabled!==!1,S=e.runners?.[r]?.path?.trim(),T=t.pathEdit?.runner===r?`${t.pathEdit.value}_`:S&&S.length>0?S:`default (${i.executable})`;return`${i.displayName} ${a?"enabled":"disabled"} ${T}`})}function jn(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 Un(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(ts.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:ss(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function qn(e,t,r,i){if(e.pathEdit)return lu({...e,pathEdit:e.pathEdit},t,r);let a=rs(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(a-1,e.menuIndex+1),message:null}};if(r==="ESCAPE")return{kind:"back",state:e};if(r==="e"){let n=de[e.menuIndex]??"codex";return{kind:"render",state:{...e,message:null,pathEdit:{runner:n,value:t.runners?.[n]?.path??""}}}}if(!ss(r))return{kind:"noop",state:e};let S=de[e.menuIndex]??"codex",T=t.runners?.[S]?.enabled!==!1;return T&&i.length<=1?{kind:"render",state:{...e,message:"At least one runner must stay enabled."}}:{kind:"save",config:du(t,S,!T),state:{...e,message:`${pe(S).displayName} ${T?"disabled":"enabled"}.`}}}function lu(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Wn({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(ss(r)){let i=e.pathEdit.runner,a=e.pathEdit.value.trim();return{kind:"save",config:uu(t,i,a.length>0?a:null),state:Wn({...e,message:a.length>0?`${pe(i).displayName} executable saved.`:`${pe(i).displayName} executable reset to default.`})}}return hu(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function du(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function uu(e,t,r){let i={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete i.path,{...e,runners:{...e.runners??{},[t]:i}}}function Wn(e){let t={...e};return delete t.pathEdit,t}function ss(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
97
|
-
`}function hu(e){return e.length===1&&e>=" "&&e!=="\x7F"}var mu=fu(import.meta.url),_u=mu("terminal-kit"),wu=_u.terminal;async function Vn(e={}){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("Craig terminal shell requires a TTY.");let t=e.workspaceRoot??process.cwd(),r=$e(t);await dt(t);let i=await _e(r),a=ot(i),S=e.uiStateFile?await Pe({uiStateFile:e.uiStateFile}):null,T=Promise.resolve(),n=Promise.resolve(),h=await Ct(t,void 0,a),p=jt(qi(S,i),h);h=await Ct(t,p,a);let y=()=>{},o={workspaceRoot:t,onUpdate:()=>y(),resolveSessionSpec:(g,_)=>ku(h,_,t)},w=e.ptyRuntime??await wn({...o,paths:r}),l=g=>{if(!e.uiStateFile)return;S=Ki(S,g);let _=S;T=T.then(()=>ve({uiStateFile:e.uiStateFile},_),()=>ve({uiStateFile:e.uiStateFile},_)),T.catch(()=>{})};return new Promise(g=>{let _=e.terminal??wu,s={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:jt(p,h)},f=!1,d=!1,c=null,u=0,m=0,v=null,I=null,E=null,N=null,O=!1,A=!0,D=null,C=()=>{},j=w;y=()=>{s.mode==="main"&&(s={mode:"main",shell:z(s.shell)},E||(E=setTimeout(()=>{E=null,s.mode==="main"&&C()},50)))};function z($){return vt($,j.getViewState($.selectedPtyTabId))}function W($){return z(yu($,h))}function G($){return h.tasks.find(M=>M.id===$.selectedTaskId)??null}async function q(){await j.hydrateSessions?.(h.tasks.flatMap($=>$.ptyTabs.map(M=>M.id)))}function b(){q().catch(()=>{}).then(()=>{s.mode==="main"&&(s={mode:"main",shell:z(s.shell)},C())})}function P($){let M=n.then($,$);return n=M.then(()=>{},()=>{}),M}function k($){let M=G($),L=h.inspection,H=L&&L.taskId===M?.id?L:null,V=Su(H?.fileRows??[],$.collapsedFileTreePaths);return{leftItemIds:vu(h),centerTabIds:Qi(M,$),ptyTabIds:M?.ptyTabs.map(re=>re.id)??[],filePathIds:H?.filePaths??[],fileTreeRowIds:V.map(re=>re.path),fileTreeFileIds:V.filter(re=>re.kind==="file").map(re=>re.path),fileTreeDirectoryIds:V.filter(re=>re.kind==="directory").map(re=>re.path),diffPathIds:H?.diffPaths??[],diffPathRanges:Hr(H),fileLineCount:H?.selectedFile.lines.length??0,diffLineCount:sn(H),pageRows:Math.max(5,ut(_.width,_.height).height-Ee.topRailHeight-9),enabledRunnerIds:a}}async function R($){await ps(r,$),i=$,a=ot(i),h={...h,enabledRunnerIds:a},s.mode==="main"?s={mode:"main",shell:W({...s.shell,selectedRunner:a.includes(s.shell.selectedRunner)?s.shell.selectedRunner:Xe(i)})}:s={...s,shell:W({...s.shell,selectedRunner:a.includes(s.shell.selectedRunner)?s.shell.selectedRunner:Xe(i)})}}async function F($){let M=$.selectedTaskId;M&&await P(async()=>{let L=await Se(r,M);!L.ptyTabs.some(H=>H.id===$.activeTab)||L.selectedPtyTabId===$.activeTab||await te(r,{...L,selectedPtyTabId:$.activeTab})})}async function B(){let $=(s.mode==="main",s.shell);h=await Ct(t,$,a),s.mode==="main"?s={mode:"main",shell:W(s.shell)}:s={...s,shell:W(s.shell)}}async function U($){h=await Ct(t,$,a),s.mode==="main"&&(s={mode:"main",shell:W($)}),l(s.shell),C()}async function K($){let M=await Du($);s.mode==="main"&&(s={mode:"main",shell:W({...s.shell,workspaceBrowser:M,activeTab:s.shell.selectedPtyTabId??s.shell.activeTab,actionMessage:null})},C())}async function ee($){try{let M=W($),L=G(M),H=M.selectedPtyTabId;if(L&&M.focusedRegion==="tasks"){let be=L.ptyTabs.find(Ce=>Ce.kind==="agent")??null;be?H=be.id:(L=await Ae(L),await B(),H=L.selectedPtyTabId)}L&&!H&&(L=await Ae(L),await B(),H=L.selectedPtyTabId);let V=W({...M,activeTab:H??M.activeTab,selectedPtyTabId:H});if(!V.selectedTaskId||!H){s={mode:"main",shell:V},C();return}s={mode:"main",shell:vt({...V,inputMode:"terminal"},j.getViewState(H))},l(s.shell);let re=await j.ensureSession(V.selectedTaskId,H,is(ut(_.width,_.height)));d=ns(H),c=null,s={mode:"main",shell:vt({...V,inputMode:"terminal"},re)},l(s.shell)}catch(M){let L=M instanceof Error?M.message:"Failed to start PTY.";$.selectedTaskId&&$.selectedPtyTabId&&ns($.selectedPtyTabId)&&(await x($.selectedTaskId,L).catch(()=>{}),await B().catch(()=>{})),s={mode:"main",shell:Vi(W($),L)},l(s.shell)}C()}async function x($,M){await P(async()=>{let L=await Se(r,$);await te(r,{...L,status:L.status==="running"?"draft":L.status,runnerSession:{...L.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:M})})}async function Q($,M,L){let H=W($);if(!H.selectedTaskId)throw new Error("Select a task before creating a tab.");let V=await P(async()=>{let re=await Se(r,H.selectedTaskId),be=M??Cu(re,H.activeTab,H.preferredPtyTabKind),Ce=Kn(re,be,L??void 0,i),ft={...re,ptyTabs:[...re.ptyTabs,Ce],selectedPtyTabId:Ce.id};return await te(r,ft),ft});return await B(),W({...H,activeTab:V.selectedPtyTabId??H.activeTab,selectedPtyTabId:V.selectedPtyTabId,preferredPtyTabKind:V.ptyTabs.at(-1)?.kind??H.preferredPtyTabKind,focusedRegion:"center",actionMessage:`Created tab: ${V.ptyTabs.at(-1)?.title??"tab"}`})}async function Y($){let M=W($);if(!M.selectedTaskId)throw new Error("Select a task before closing a tab.");let{closedTab:L,nextSelectedTab:H}=await P(async()=>{let V=await Se(r,M.selectedTaskId),re=V.ptyTabs.findIndex(nr=>nr.id===M.activeTab);if(re===-1)throw new Error("Only PTY tabs can be closed.");let be=V.ptyTabs[re],Ce=V.ptyTabs.filter(nr=>nr.id!==be.id),ft=Ce[Math.min(re,Ce.length-1)]??Ce[re-1]??null;return await te(r,{...V,ptyTabs:Ce,selectedPtyTabId:ft?.id??null}),{closedTab:be,nextSelectedTab:ft}});return j.disposeSession(L.id),await B(),W({...M,activeTab:H?.id??(M.openInspectionKind?"inspection":M.activeTab),selectedPtyTabId:H?.id??null,focusedRegion:"center",actionMessage:`Closed tab: ${L.title}`})}async function Z($){let M=W($);if(!M.selectedTaskId)throw new Error("Select a task before creating or syncing a PR.");let L=await bt(r,M.selectedTaskId,{watch:!1});await B();let H=L.disposition==="created"?"Created PR":L.disposition==="discovered"?"Discovered PR":"Synced PR";return W({...M,focusedRegion:"inspector",inspectionMode:"review",actionMessage:`${H}: #${L.prNumber} ${L.url}`})}async function he($){let M=W($);if(!M.selectedTaskId)throw new Error("Select a task before refreshing PR checks.");let{disposition:L,task:H}=await br(r,M.selectedTaskId);await B();let V=L==="not_found"?`No PR found for ${H.branch}`:L==="discovered"?`Discovered PR: #${H.pullRequest.number} ${H.pullRequest.url??""}`:`Refreshed checks: ${H.pullRequest.requiredChecks.length} reported`;return W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"refresh-checks",actionMessage:V})}async function fe(){if(O||s.mode!=="main"||!s.shell.selectedTaskId)return;let $=s.shell.selectedTaskId,L=!!(h.tasks.find(H=>H.id===$)??null)?.pullRequest.number;O=!0;try{let{disposition:H,task:V}=await br(r,$);if(s.mode!=="main"||s.shell.selectedTaskId!==$)return;h=await Ct(t,s.shell,a),s={mode:"main",shell:W({...s.shell,actionMessage:H==="discovered"&&!L?`Discovered PR: #${V.pullRequest.number} ${V.pullRequest.url??""}`:s.shell.actionMessage})},C()}catch{}finally{O=!1}}async function He($){let M=W($);if(!M.selectedTaskId)throw new Error("Select a task before merging a PR.");let L=await yt(r,M.selectedTaskId,{preserveWorktree:!0});return await B(),W({...M,focusedRegion:"inspector",inspectionMode:"review",selectedActionId:"merge",actionMessage:`Merged PR #${L.prNumber}; worktree preserved`})}async function Te($){let M=W($);if(!M.selectedTaskId)throw new Error("Select a task before closing it.");let{taskBeforeClose:L,task:H}=await P(async()=>{let V=await Se(r,M.selectedTaskId),re=await Ri(r,M.selectedTaskId);return{taskBeforeClose:V,task:re}});for(let V of L.ptyTabs)j.disposeSession(V.id);return await B(),W({...M,selectedActionId:"close-task",actionMessage:H.cleanup.preservedWorktree?`Archived task ${H.id}; worktree preserved`:`Archived task ${H.id}`})}async function Ae($){let M=$.ptyTabs.find(V=>V.kind==="agent")??null;if(M){let V={...$,selectedPtyTabId:M.id};return await P(async()=>{let re=await Se(r,$.id),be=re.ptyTabs.find(Ce=>Ce.kind==="agent")??null;be&&await te(r,{...re,selectedPtyTabId:be.id})}),V}let L=Kn($,"agent",void 0,i),H={...$,ptyTabs:[...$.ptyTabs,L],selectedPtyTabId:L.id};return await P(async()=>{let V=await Se(r,$.id),re=V.ptyTabs.find(be=>be.kind==="agent")??null;if(re){await te(r,{...V,selectedPtyTabId:re.id});return}await te(r,{...V,ptyTabs:[...V.ptyTabs,L],selectedPtyTabId:L.id})}),H}C=()=>{Ge();let $=ut(_.width,_.height),M=s.mode==="main"?Dn($,rn(W(s.shell),h),{centerOnly:s.shell.centerZoomed}):s.variant==="boot"?xn($,{menuIndex:s.menuIndex,optionsMessage:s.optionsMessage}):s.variant==="pause"?En($,{menuIndex:s.menuIndex,optionsMessage:s.optionsMessage}):s.variant==="options"?Jr($,{menuIndex:s.menuIndex,optionsMenuItems:ts}):s.variant==="runners"?Jr($,{menuIndex:Rt(s).menuIndex,optionsMenuItems:rs(i,Rt(s)),optionsMessage:jn(Rt(s)),optionsSubtitle:"Runners"}):An($);_.moveTo(1,1),A&&(_.eraseDisplayBelow(),A=!1),_.noFormat(M),_.hideCursor(!0)};function Ge(){let $=s.mode==="main"&&s.shell.inputMode==="terminal"?"terminal":"control";$!==D&&(D=$,_.grabInput($==="terminal"?{mouse:"button"}:!0))}let Xn=()=>{process.stdout.off("resize",ds),_.removeListener("key",as),_.removeListener("unknown",cs),_.removeListener("mouse",ls),v&&(clearTimeout(v),v=null),I&&(clearTimeout(I),I=null),E&&(clearTimeout(E),E=null),N&&(clearInterval(N),N=null),j.disposeAll(),_.grabInput(!1),_.hideCursor(!1),_.fullscreen(!1)},sr=$=>{Xn(),g($)},Yn=async()=>{if(s.mode!=="main"||f)return;let $=s.shell,M=$.taskPromptInput?.trim()??"";if(!$.selectedRepoId){s={mode:"main",shell:W({...$,taskPromptError:"Select a repo first."})},C();return}if(M.length===0){s={mode:"main",shell:W({...$,taskPromptError:"Task prompt cannot be empty."})},C();return}f=!0,s={mode:"main",shell:W({...$,actionMessage:`Creating ${$.selectedRunner} task in ${$.selectedRepoId}...`})},C();let L=null;try{L=await Ru(r,$.selectedRepoId,M,$.selectedRunner),await B();let H=W({...s.shell,selectedRepoId:L.repoId,selectedTaskId:L.id,selectedPtyTabId:L.selectedPtyTabId,selectedLeftItemId:`task:${L.id}`,activeTab:L.selectedPtyTabId??"agent",inputMode:"terminal",taskPromptInput:null,taskPromptError:null,actionMessage:null}),V=await j.ensureSession(L.id,H.selectedPtyTabId??Gn(L,"agent"),is(ut(_.width,_.height)));d=ns(H.selectedPtyTabId),s={mode:"main",shell:vt(H,V)},l(s.shell)}catch(H){H instanceof tr&&(L=H.task);let V=H instanceof Error?H.message:"Failed to create task.";L&&(await te(r,{...L,status:"draft",runnerSession:{...L.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:V}).catch(()=>{}),await B().catch(()=>{})),s={mode:"main",shell:W({...s.shell,inputMode:"control",selectedTaskId:L?.id??s.shell.selectedTaskId,selectedPtyTabId:L?.selectedPtyTabId??s.shell.selectedPtyTabId,selectedLeftItemId:L?`task:${L.id}`:s.shell.selectedLeftItemId,activeTab:L?.selectedPtyTabId??s.shell.activeTab,taskPromptInput:L?null:"",taskPromptError:V,actionMessage:null})}}finally{f=!1,C()}},Qn=$=>{if(s.mode!=="main")return;let M=s.shell;if(M.taskPromptInput!==null){if($==="ESCAPE"){s={mode:"main",shell:W({...M,taskPromptInput:null,taskPromptError:null,actionMessage:null})},C();return}if(Ke($)){Yn();return}if($==="BACKSPACE"){s={mode:"main",shell:W({...M,taskPromptInput:M.taskPromptInput.slice(0,-1),taskPromptError:null})},C();return}if($==="CTRL_R"){s={mode:"main",shell:W({...M,selectedRunner:Br(M.selectedRunner,a),taskPromptError:null})},C();return}Gi($)&&(s={mode:"main",shell:W({...M,taskPromptInput:`${M.taskPromptInput}${$}`,taskPromptError:null})},C())}},Jn=$=>{if(s.mode!=="main")return;let M=s.shell.workspaceBrowser;if(M){if($==="ESCAPE"){s={mode:"main",shell:W({...s.shell,workspaceBrowser:null,actionMessage:null})},C();return}if($==="UP"||$==="k"){s={mode:"main",shell:W({...s.shell,workspaceBrowser:{...M,selectedIndex:Math.max(0,M.selectedIndex-1),error:null}})},C();return}if($==="DOWN"||$==="j"){let L=Math.max(0,M.entries.length-1);s={mode:"main",shell:W({...s.shell,workspaceBrowser:{...M,selectedIndex:Math.min(L,M.selectedIndex+1),error:null}})},C();return}if($==="LEFT"||$==="h"){K(os.dirname(M.cwd)).catch(L=>{let H=L instanceof Error?L.message:"Failed to open parent directory.";s={mode:"main",shell:W({...s.shell,workspaceBrowser:{...M,error:H}})},C()});return}if($==="RIGHT"||$==="l"||Ke($)){let L=M.entries[M.selectedIndex]??null;if(!L)return;if(L.kind==="directory"||($==="RIGHT"||$==="l")&&L.kind==="repo"){K(L.path).catch(H=>{let V=H instanceof Error?H.message:"Failed to open directory.";s={mode:"main",shell:W({...s.shell,workspaceBrowser:{...M,error:V}})},C()});return}$t(r,L.path).then(async H=>{await B(),s={mode:"main",shell:W({...s.shell,workspaceBrowser:null,selectedLeftItemId:`repo:${H.repo.id}`,selectedRepoId:H.repo.id,selectedTaskId:null,selectedPtyTabId:null,actionMessage:`Registered workspace: ${H.repo.name}`})},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to add workspace.";s={mode:"main",shell:W({...s.shell,workspaceBrowser:{...M,error:V}})},C()})}}},as=$=>{let M=typeof $=="string"?$:"";if(s.mode==="main"&&s.shell.taskPromptInput!==null){Qn(M);return}if(s.mode==="main"&&s.shell.workspaceBrowser!==null){Jn(M);return}if(s.mode==="main"){let L=zi(s.shell,M,k(s.shell));if(L.exit){sr(0);return}if(L.detachTerminal){j.detach(),s={mode:"main",shell:W(L.state)},l(s.shell),C();return}if(s.shell.inputMode==="terminal"){if(L.changed){s={mode:"main",shell:W(L.state)},l(s.shell),C();return}if(d&&Ke(M)){d=!1;return}d&&(d=!1),c=Iu(M)?{key:M,at:Date.now()}:null;let H=xu(M,s.shell.terminal.scrolledBack??!1);if(H!==0){ir(H);return}j.writeKey(M);return}if(M==="CTRL_C"){sr(0);return}if(M==="?"&&s.shell.inputMode==="control"){s={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:s.shell},A=!0,C();return}if(L.pause){s={mode:"overlay",variant:"pause",menuIndex:0,optionsMessage:null,shell:W(L.state)},A=!0,C();return}if(L.beginTaskPrompt){s={mode:"main",shell:W(L.state)},l(s.shell),C();return}if(L.openWorkspaceBrowser){K(t).catch(H=>{let V=H instanceof Error?H.message:"Failed to browse workspaces.";s={mode:"main",shell:W({...L.state,workspaceBrowser:{cwd:t,entries:[],selectedIndex:0,error:V}})},C()});return}if(L.createPtyTab){Q(L.state,L.createPtyTabKind,L.createPtyTabRunner).then(H=>{ee(H)}).catch(H=>{let V=H instanceof Error?H.message:"Failed to create tab.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.closePtyTab){Y(L.state).then(H=>{s={mode:"main",shell:H},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to close tab.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.syncPullRequest){Z(L.state).then(H=>{s={mode:"main",shell:H},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to create or sync PR.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.refreshPullRequestChecks){he(L.state).then(H=>{s={mode:"main",shell:H},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to refresh PR checks.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.mergeTask){He(L.state).then(H=>{s={mode:"main",shell:H},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to merge PR.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.closeTask){Te(L.state).then(H=>{s={mode:"main",shell:H},l(s.shell),C()}).catch(H=>{let V=H instanceof Error?H.message:"Failed to close task.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}if(L.attachTerminal){ee(L.state);return}if(L.refreshInspection){U(L.state).catch(H=>{let V=H instanceof Error?H.message:"Failed to refresh inspection.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}L.changed&&(s={mode:"main",shell:W(L.state)},F(s.shell).catch(()=>{}),l(s.shell),C());return}if(s.variant==="help"){s.viaOptions&&s.parentVariant?s={mode:"overlay",variant:"options",menuIndex:1,optionsMessage:null,shell:s.shell,parentVariant:s.parentVariant}:s.parentVariant?s={mode:"overlay",variant:s.parentVariant,menuIndex:1,optionsMessage:null,shell:s.shell}:s={mode:"main",shell:W(s.shell)},A=!0,C();return}if(s.variant==="options"){Zn(M);return}if(s.variant==="runners"){eo(M);return}if(s.optionsMessage){(M==="ESCAPE"||Ke(M))&&(s={...s,optionsMessage:null},C());return}if(M==="UP"||M==="k"){s={...s,menuIndex:Math.max(0,s.menuIndex-1)},C();return}if(M==="DOWN"||M==="j"){s={...s,menuIndex:Math.min(2,s.menuIndex+1)},C();return}if(M==="ESCAPE"){s.variant==="pause"&&(s={mode:"main",shell:W(s.shell)},A=!0,C());return}if(Ke(M)){if(s.menuIndex===0){s={mode:"main",shell:W({...s.shell,inputMode:"control"})},A=!0,C(),b();return}if(s.menuIndex===1){let L=s.variant==="boot"||s.variant==="pause"?s.variant:void 0;s={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:s.shell,...L!==void 0?{parentVariant:L}:{}},A=!0,C();return}sr(0)}};function Zn($){if(s.mode!=="overlay"||s.variant!=="options")return;let M=Un(s.menuIndex,$);if(M.kind!=="noop"){if(M.kind==="render"){s={...s,menuIndex:M.menuIndex},C();return}if(M.kind==="back"){s.parentVariant&&(s={mode:"overlay",variant:s.parentVariant,menuIndex:1,optionsMessage:null,shell:s.shell},A=!0,C());return}if(M.kind==="help"){let L=s.parentVariant;s={mode:"overlay",variant:"help",menuIndex:0,optionsMessage:null,shell:s.shell,viaOptions:!0,...L!==void 0?{parentVariant:L}:{}},A=!0,C();return}if(M.kind==="runners"){let L=s.parentVariant;s={mode:"overlay",variant:"runners",menuIndex:0,optionsMessage:null,shell:s.shell,...L!==void 0?{parentVariant:L}:{}},A=!0,C()}}}function eo($){if(s.mode!=="overlay"||s.variant!=="runners")return;let M=qn(Rt(s),i,$,a);if(M.kind!=="noop"){if(M.kind==="back"){let L=s.parentVariant;s={mode:"overlay",variant:"options",menuIndex:0,optionsMessage:null,shell:s.shell,...L!==void 0?{parentVariant:L}:{}},A=!0,C();return}if(M.kind==="render"){s={...s,runnerOptions:M.state},C();return}R(M.config).then(()=>{s.mode!=="overlay"||s.variant!=="runners"||(s={...s,runnerOptions:M.state},C())}).catch(L=>{if(s.mode!=="overlay"||s.variant!=="runners")return;let H=L instanceof Error?L.message:"Failed to save runner option.";s={...s,runnerOptions:{...Rt(s),message:H}},C()})}}let cs=$=>{let M=Pu($);if(s.mode!=="main"||s.shell.inputMode!=="terminal"||M.length===0)return;if(M.includes("")){j.detach(),d=!1,c=null,s={mode:"main",shell:W({...s.shell,inputMode:"control",actionMessage:null})},l(s.shell),C();return}let L=Eu(M);if(L!==0){ir(L);return}if(d&&M!=="\r"&&M!==`
|
|
98
|
-
`&&M
|
|
99
|
-
`&&(d=!1),Au(d,c,M)){d=!1;return}j.write(M)},ls=$=>{if(s.mode!=="main")return;if(s.shell.inputMode==="control"){ro(zn($));return}let M=zn($);M!==0&&ir(M)};function ir($){u+=$,!v&&(v=setTimeout(()=>{v=null;let M=u;u=0,M!==0&&(to(M),C())},16))}function to($){j.scrollViewport($),s={mode:"main",shell:z(s.shell)}}function ro($){$!==0&&(m+=$,!I&&(I=setTimeout(()=>{I=null;let M=m;if(m=0,M===0||s.mode!=="main"||s.shell.inputMode!=="control")return;let L=qe(s.shell,M,k(s.shell));if(L.changed){if(L.refreshInspection){U(L.state).catch(H=>{let V=H instanceof Error?H.message:"Failed to refresh inspection.";s={mode:"main",shell:W({...L.state,actionMessage:V})},C()});return}s={mode:"main",shell:W(L.state)},l(s.shell),C()}},16)))}let ds=()=>{A=!0,s.mode==="main"&&s.shell.inputMode==="terminal"&&(j.resize(is(ut(_.width,_.height))),s={mode:"main",shell:z(s.shell)}),C()};process.stdout.on("resize",ds),_.grabInput(!0),D="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",as),_.on("unknown",cs),_.on("mouse",ls),N=setInterval(()=>{fe()},(i.github?.watchIntervalSeconds??10)*1e3),C()})}async function Ct(e,t,r){let i=$e(e),[a,S]=await Promise.all([gt(i),tt(i)]),T=bu(S.tasks,t),n=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},h=T?await Si(T,n):null;return{workspaceRoot:e,repos:a,tasks:S.tasks,inspection:h,...r?{enabledRunnerIds:r}:{}}}function bu(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function yu(e,t){return jt(e,t)}function Su(e,t){let r=new Set(t);return e.filter(i=>{let a=i.path.split("/");for(let S=1;S<a.length;S+=1)if(r.has(a.slice(0,S).join("/")))return!1;return!0})}function vu(e){let t=[];for(let r of e.repos){t.push(`repo:${r.id}`);for(let i of e.tasks.filter(a=>a.repoId===r.id))t.push(`task:${i.id}`);t.push(`new-task:${r.id}`)}return t.push("new-workspace"),t}function ku(e,t,r){let i=e.tasks.find(S=>S.ptyTabs.some(T=>T.id===t))??null,a=i?.ptyTabs.find(S=>S.id===t)??null;return{cwd:i?.worktreePath??r,command:a?.kind==="agent"?Tu(a):[]}}function Tu(e){return e.command.length>0?e.command:["codex"]}function Rt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function Cu(e,t,r){return e.ptyTabs.find(i=>i.id===t)?.kind??r}function Kn(e,t,r,i={}){let a=r??e.runner,S=pe(a),T=t==="agent"?S.defaultAgentTitle:"Terminal",n=t==="agent"&&r&&r!==e.runner?`${e.id}:${r}`:`${e.id}:${t}`,h=new Set(e.ptyTabs.map(l=>l.id)),p=1,y=n;for(;h.has(y);)p+=1,y=`${n}-${p}`;let o=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:y,kind:t,...w?{runner:w}:{},title:p===1?T:`${T} ${p}`,command:t==="agent"?ge(a,void 0,i):[],createdAt:o,updatedAt:o}}async function Ru(e,t,r,i){let a=await _e(e);Pt(i,a);let S=await Bt(e,t,r,{runner:i,config:a});try{let h=Je();await J(Ze(or(i,a).executable,{cwd:S.repoRoot,env:h}),["--help"],{cwd:S.repoRoot,env:h})}catch(h){let p=h instanceof Error?h.message:"Failed to start runner.",y={...S.task,status:"draft",runnerSession:{...S.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:p};throw await te(e,y),new tr(p,y)}let T=Gn(S.task,"agent"),n={...S.task,status:"running",selectedPtyTabId:T,runnerSession:{...S.task.runnerSession,startedAt:new Date().toISOString(),lastKnownState:"running"}};return await te(e,n),await ve({uiStateFile:e.uiStateFile},{...await Pe({uiStateFile:e.uiStateFile})??Le(),version:1,selectedRepoId:n.repoId,selectedWorkspaceId:n.workspaceId,selectedTaskId:n.id,selectedPtyTabId:n.selectedPtyTabId,inputMode:"control",focusedRegion:"center",activeTab:n.selectedPtyTabId??"agent",selectedActionId:"commit",updatedAt:new Date().toISOString()}),n}var tr=class extends Error{task;constructor(t,r){super(t),this.name="InteractiveTaskStartupError",this.task=r}};function Gn(e,t){let r=e.ptyTabs.find(i=>i.kind===t);if(!r)throw new Error(`Task ${e.id} is missing its ${t} PTY tab.`);return r.id}function is(e){return{columns:Math.max(20,e.width-Ee.leftWidth-Ee.rightWidth-Ee.dividerWidth-Jt*2),rows:Math.max(5,e.height-Ee.topRailHeight-5)}}function Pu(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function Iu(e){return e.length===1||Ke(e)||e==="BACKSPACE"||e==="TAB"}function ns(e){return typeof e=="string"&&/:agent(?:-\d+)?$/.test(e)}function xu(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 zn(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function Eu(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 Au(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
|
|
77
|
+
`);default:return ul(e)}}function ll(e,t){return t?"Watched":e==="created"?"Created":e==="discovered"?"Discovered":"Synced"}function dl(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 ul(e){throw new Error(`Unsupported result: ${JSON.stringify(e)}`)}function hl(e){return e.checks.status}function fl(e){return e.pullRequest.number?`#${e.pullRequest.number}:${e.pullRequest.status??"unknown"}`:"-"}ct();Rt();wt();import{createRequire as sh}from"node:module";import{readdir as ih,stat as nh}from"node:fs/promises";import Bs from"node:path";Lt();Pe();import{readFile as pl,stat as gl}from"node:fs/promises";import ns from"node:path";var ml=200*1024,_l=500*1024,tr="100000";async function on(e,t,r){if(e.type==="project"&&e.repoTargets?.length)return wl(e,t,r);try{let s=Xe(r.selectedFilePath??null,t.filePaths),o=Xe(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 wl(e,t,r){let s=Xe(r.selectedFilePath??null,t.filePaths),o=Xe(r.selectedDiffPath??null,t.diffPaths),[m,y]=await Promise.all([cn(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 ln(e,o,t.diffRows,h)})()]),n=o?{[o]:y}:{};return{...t,selectedFilePath:s,selectedDiffPath:o,diffContents:n,selectedFile:m,selectedDiff:y}}async function an(e,t={}){if(e.type==="project"&&e.repoTargets?.length)return kl(e,t);try{await fe(e);let r=await Mt(e.worktreePath),[s,o]=await Promise.all([dn(e.worktreePath),un(e.worktreePath,r)]),m=[...new Set(o.map(a=>a.path))],y=Xe(t.selectedFilePath??null,s),n=Xe(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"))]),k=n?{[n]:h}:{};return{taskId:e.id,fileRows:pn(s),filePaths:s,diffRows:o,diffPaths:m,diffContents:k,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 kl(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([dn(w.worktreePath).catch(()=>[]),un(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=Xe(t.selectedFilePath??null,o),d=Xe(t.selectedDiffPath??null,y),[h,k]=await Promise.all([cn(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 ln(e,d,m,l?.baseRef??null)})()]),a=d?{[d]:k}:{};return{taskId:e.id,fileRows:pn(o),filePaths:o,diffRows:m,diffPaths:y,diffContents:a,selectedFilePath:n,selectedDiffPath:d,selectedFile:h,selectedDiff:k,error:null}}async function cn(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 ln(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 dn(e){let t=await Q("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e});return gn(t.stdout)}async function un(e,t){let[r,s,o,m]=await Promise.all([bl(e,t),nn(e,"staged"),nn(e,"unstaged"),yl(e)]);return[...r,...s,...o,...m]}async function bl(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=hn(r.stdout),m=fn(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 nn(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=hn(s.stdout),y=fn(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 yl(e){let t=await Q("git",["ls-files","--others","--exclude-standard"],{cwd:e}),r=gn(t.stdout);return await Promise.all(r.map(async o=>{let m=await sr(e,o),y=m.status==="ready"?vl(m.lines):null;return{group:"untracked",path:o,status:"A",additions:y,deletions:0}}))}function hn(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 fn(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=Sl(e,t);try{let s=await gl(r);if(s.size>ml)return pe(t,`File is ${s.size} bytes, above the 200 KB inline preview limit.`,"too_large",t,s.size);let o=await pl(r);return Tl(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
|
|
84
|
+
${n.stdout.trimEnd()}`)}let y=o.join(`
|
|
85
|
+
|
|
86
|
+
`);return y.length>_l?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 pn(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 Xe(e,t){return e&&t.includes(e)?e:t[0]??null}function vl(e){return e.length===1&&e[0]===""?0:e.at(-1)===""?e.length-1:e.length}function gn(e){return[...new Set(e.split(`
|
|
88
|
+
`).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function Sl(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 Tl(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 Rl}from"node:fs/promises";async function mn(e,t){let r=await ie(e,t),s=await Cl(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 Cl(e){try{return await Rl(e),!0}catch{return!1}}Pe();import $t from"node:path";function _n(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 wn="\u{F024B} ",kn="\u{F0DCF} ",bn="\u25CB",yn="\uEA64",vn="\uEAFE",Sn="\uEBDA",as="\u25CB",cs="\u25CF",ls="\u2713",ds="\u2715";function Tn(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 Pl=["tasks","center","inspector","actions"],xn=["agent","terminal"],En=[],ne="inspection",Rm=[...xn,...En],An=["commit","push","create-pr","refresh-checks","merge","close-task"],Il=["refresh-checks","close-task"],Dn=["task","checks","pr","setup-run","actions","next-action"],Ln=["diff","files","review"];function Mn(e,t={}){let r=e?.activeTab==="files"?"file":e?.activeTab==="diff"?"diff":null,s=Kl(e?.openInspectionKind)??r,o=gt(t);return{inputMode:Vl(e?.inputMode),focusedRegion:Ul(e?.focusedRegion),selectedRepoId:He(e?.selectedRepoId),selectedWorkspaceId:He(e?.selectedWorkspaceId),selectedTaskId:He(e?.selectedTaskId),selectedPtyTabId:He(e?.selectedPtyTabId),selectedLeftItemId:rd(He(e?.selectedTaskId)),activeTab:r?ne:He(e?.activeTab)??"agent",preferredPtyTabKind:zl(e?.preferredPtyTabKind),inspectorSection:Ot(e?.inspectorSection,Dn,"task"),inspectionMode:ql(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,An,"commit"),selectedProjectTargetId:null,selectedRunner:Gl(e?.selectedRunner,o,tt(t)),centerTabRunner:null,actionMessage:null,taskPromptInput:null,taskPromptError:null,workspaceBrowser:null,terminal:xl(),centerZoomed:!1}}function xl(){return{status:"idle",rows:[],error:null,scrolledBack:!1}}function On(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=ed(e,t),o=Un(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,d=m?t.tasks.filter(k=>k.workspaceId===m.id):n?t.tasks.filter(k=>k.repoId===n):[],h=(o?.kind==="task"?d.find(k=>k.id===o.id)??null:null)??d.find(k=>k.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,...Yl(h,e.activeTab,e.selectedPtyTabId),selectedFilePath:Nl(e,t,h?.id??null),...Ql(e,t,h?.id??null),selectedDiffPath:Wl(e,t,h?.id??null),inspectorSection:Ot(e.inspectorSection,Dn,"task")}}function Bn(e,t,r={leftItemIds:[]}){if(e.inputMode==="terminal")return El(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 Rn(e,1);if(t==="SHIFT_TAB"||t==="[")return Rn(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?Ye(e,-1,r):Cn(e,-1,r);if(t==="DOWN"||t==="j")return e.focusedRegion==="center"&&e.activeTab===ne?Ye(e,1,r):Cn(e,1,r);if(t==="PAGE_UP")return Ye(e,-(r.pageRows??10),r);if(t==="PAGE_DOWN")return Ye(e,r.pageRows??10,r);if(t==="MOUSE_WHEEL_UP")return Ye(e,-3,r);if(t==="MOUSE_WHEEL_DOWN")return Ye(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=Xl(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"&&In(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 Pn(e,-1)}if(t==="RIGHT"||t==="l"){if(e.focusedRegion==="center")return us(e,1,r.centerTabIds);if(e.focusedRegion==="inspector")return Pn(e,1)}if(Qe(t)){if(e.focusedRegion==="tasks"&&(hs(e.selectedLeftItemId)||fs(e.selectedLeftItemId))){let s=qn(e.selectedLeftItemId),o=Kn(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"&&In(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:Ol({...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 $n(e,t){return{...e,inputMode:"control",terminal:{status:"failed",rows:[],error:t}}}function El(e){return e===""||e==="CTRL_]"||e==="CTRL_RIGHT_BRACKET"}function Qe(e){return e==="ENTER"||e==="KP_ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
89
|
+
`}function Fn(e){return e.length===1&&e>=" "&&e!=="\x7F"}function Wn(e){return Nn(e)||cr(e)!==null}function Al(e){return En.includes(e)}function Nn(e){return xn.includes(e)}function jn(e,t){return[...e?.ptyTabs.map(r=>r.id)??[],...t?.openInspectionKind?[ne]:[]]}var Dl=["tasks","center","inspector"];function Rn(e,t){return ir(e,"focusedRegion",Dl,t)}function us(e,t,r){let s=ir(e,"activeTab",r&&r.length>0?r:Zl(e),t);return!s.changed||Al(s.state.activeTab)?s:{...s,state:{...s.state,selectedPtyTabId:s.state.activeTab,preferredPtyTabKind:cr(s.state.activeTab)??s.state.preferredPtyTabKind}}}function Cn(e,t,r){if(e.focusedRegion==="tasks")return Ll(e,t,r.leftItemIds);if(e.focusedRegion==="center")return us(e,t,r.centerTabIds);if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Hn(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",Il,t)}return ir(e,"selectedActionId",An,t)}function Ll(e,t,r){let s=nr(e,"selectedLeftItemId",r,t);if(!s.changed)return s;let o=Un(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=qn(s.state.selectedLeftItemId);if(m)return{...s,state:{...s.state,selectedRepoId:m}};let y=Kn(s.state.selectedLeftItemId);return y?{...s,state:{...s.state,selectedWorkspaceId:y}}:s}function Ye(e,t,r){if(t===0)return G({state:e});if(e.focusedRegion==="inspector"){if(e.inspectionMode==="files")return Hn(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 Bl(e,"fileScrollOffset",t,r.fileLineCount??0,r.pageRows);if(e.openInspectionKind==="diff")return $l(e,t,r)}return G({state:e})}function Ml(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 Pn(e,t){return Ml(e,Hl(e.inspectionMode,Ln,t))}function Hn(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 Ol(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 Bl(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 $l(e,t,r){if(r.diffPathRanges&&r.diffPathRanges.length>0)return Fl(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=Ue(y,0,m);return k===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:k,actionMessage:null},changed:!0})}let d=n.indexOf(e.selectedDiffPath);if(d===-1){let k=Ue(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[d+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[d-1]??null;return k?G({state:{...e,selectedDiffPath:k,activeTab:ne,openInspectionKind:"diff",diffScrollOffset:Number.MAX_SAFE_INTEGER,actionMessage:null},changed:!0,refreshInspection:!0}):e.diffScrollOffset===0?G({state:e}):G({state:{...e,diffScrollOffset:0,actionMessage:null},changed:!0})}let h=Ue(y,0,m);return h===e.diffScrollOffset?G({state:e}):G({state:{...e,diffScrollOffset:h,actionMessage:null},changed:!0})}function Fl(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=jl(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 Wl(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedDiffPath&&(t.inspection.diffPaths??[]).includes(e.selectedDiffPath)?e.selectedDiffPath:t.inspection.selectedDiffPath}function Nl(e,t,r){return!t.inspection||t.inspection.taskId!==r||e.selectedFilePath&&(t.inspection.filePaths??[]).includes(e.selectedFilePath)?e.selectedFilePath:t.inspection.selectedFilePath}function jl(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 Hl(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 Ul(e){return e==="tabs"?"center":Ot(e,Pl,"tasks")}function ql(e,t){return e==="checks"||e==="actions"||e==="review"?"review":Ot(e,Ln,t)}function Kl(e){return e==="file"||e==="diff"?e:null}function zl(e){return e==="terminal"?"terminal":"agent"}function Vl(e){return e==="terminal"?"terminal":"control"}function Gl(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 Xl(e,t){return t==="a"||t==="A"?"agent":t==="t"||t==="T"?"terminal":cr(e.activeTab)??e.preferredPtyTabKind}function Yl(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(Nn(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 Ql(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?Jl(t.inspection.fileRows??[],t.inspection.selectedFilePath):e.collapsedFileTreePaths;return{selectedFileTreePath:s,collapsedFileTreePaths:o}}function Jl(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 Zl(e){return[e.selectedPtyTabId,e.openInspectionKind?ne:null].filter(t=>typeof t=="string")}function In(e,t){return t.includes(e)}function ed(e,t){let r=td(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 td(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 Un(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 rd(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 qn(e){return hs(e)?e.slice(9):null}function Kn(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 Vn(e,t){let r=nd(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=Od(t.tasks),h=cd(e,y),k=ad(e,y,h),a=k.find(_=>_.id===h)??k[0]??{id:"agent",label:"CODEX"},w=t.inspection?.taskId===y?.id?t.inspection:null,l=s?.name??"no repo",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:sd(e,t),runners:(t.enabledRunnerIds??["codex","cursor","claude"]).map(_=>Bd(_,d[_])),centerHeader:{tabLabel:e.workspaceBrowser?"BROWSER":a.label,taskId:e.workspaceBrowser?"new workspace":y?.id??"no task",repo:l,agent:g},centerTranscript:od(h,e,s,y,e.workspaceBrowser,w,r),tabs:k,rightContext:Md(s,y),rightInspection:yd(e,y,w)}}function sd(e,t){let r=[{text:"WORKSPACES",muted:!0,focused:e.focusedRegion==="tasks"}];if(!t.workspaces)return id(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}`,k=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Project Task [${ve(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}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 k=e.selectedLeftItemId===`task:${h.id}`,a=k?"\u25B8":"\u2022",w=h.title.length>28?`${h.title.slice(0,25)}\u2026`:h.title,l={id:`task:${h.id}`,taskId:h.id,text:`${a} ${w}`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",accentDot:h.status==="running"};k&&(l.status=h.status),r.push(l)}if(m.kind==="repo"){let h=`new-task:${m.primaryRepoId}`,k=e.selectedLeftItemId===h;r.push({id:h,text:`+ New Task [${ve(e.selectedRunner)}]`,indent:2,selected:k,focused:k&&e.focusedRegion==="tasks",muted:!k})}else{r.push({text:` Repos (${n.length})`,indent:0,muted:!0});for(let h of n.slice(0,6)){let k=t.repos.find(a=>a.id===h);r.push({text:` \xB7 ${k?.name??h}`,indent:0,muted:!0})}n.length>6&&r.push({text:` \xB7 ${n.length-6} more`,indent:0,muted:!0})}}let o=e.selectedLeftItemId==="new-workspace";return r.push({text:"",muted:!0}),r.push({id:"new-workspace",text:"+ New Workspace",selected:o,focused:o&&e.focusedRegion==="tasks"}),r}function id(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",l=k.title.length>28?`${k.title.slice(0,25)}\u2026`:k.title;e.push({id:`task:${k.id}`,taskId:k.id,text:`${w} ${l}`,indent:2,selected:a,focused:a&&t.focusedRegion==="tasks",accentDot:k.status==="running",...a?{status:k.status}:{}})}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 nd(e,t){let r=e.workspaces??[];if(!e.workspaces)return null;let s=e.tasks.find(o=>o.id===t.selectedTaskId)??null;return s?r.find(o=>o.id===s.workspaceId)??null:t.selectedWorkspaceId?r.find(o=>o.id===t.selectedWorkspaceId)??null:r[0]??null}function od(e,t,r,s,o,m=null,y=null){if(o){let d=o.entries.length===0?["No directories or git repos here."]:o.entries.map((h,k)=>{let a=k===o.selectedIndex?"\u25B8":" ",w=h.kind==="repo"?" [git repo]":"/";return`${a} ${h.name}${w}`});return 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,k=d?"Project Task":"Task";return Le([`No tasks in ${h}.`,"",`Press n or choose + New ${k} 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"?ud(s,m,t.fileScrollOffset):e===ne&&t.openInspectionKind==="diff"?hd(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 ad(e,t,r){let s=t?.ptyTabs.map(m=>({id:m.id,label:ld(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:dd(e)}]:[];return[...s,...o].map(m=>({...m,active:m.id===r,focused:e.focusedRegion==="center"&&m.id===r}))}function cd(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 ld(e){return e.title.toUpperCase()}function dd(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 ud(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=Gn(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:""},...fd(s.lines,r,o)]}function hd(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=Gn(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:""},...pd(s.lines,r,o)]}function Le(e){return e.map(t=>({text:t}))}function fd(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 pd(e,t,r){let s=gd(e),o=Math.max(0,Math.min(t,Math.max(0,s.length-1)));return s.slice(o).map(m=>md(m,r))}function gd(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 md(e,t){let r=zn(e.oldNumber),s=zn(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?wd(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 zn(e){return e===null?" ":String(e).padStart(4," ")}function Gn(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"?_d(e):t==="markdown"?kd(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 _d(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 wd(e,t,r){return e.map(s=>({text:s.text,style:{...s.style??{fg:r},bg:t}}))}function kd(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:bd(m)}),s=y+m.length}return s<e.length&&r.push({text:e.slice(s)}),r.length>0?r:[{text:e}]}function bd(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 yd(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=[vd(e,m),{id:"mode-spacer",text:"",muted:!0}];return e.inspectionMode==="review"?{title:"",rows:[...y,...Sd(e,t)]}:e.inspectionMode==="files"?{title:"",rows:[...y,...xd(e,r)]}:{title:"",rows:[...y,...Ad(e,r)]}}function vd(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=Xn(t),y=Yn(t?.requiredChecks??null);return o.push({text:" "},m,{text:" "},y),{id:"inspection-mode",text:o.map(d=>d.text).join(""),segments:o}}function Xn(e){return!e||!e.number?{text:bn,style:{fg:"565f89"}}:e.status==="merged"?{text:vn,style:{fg:"9d7cd8"}}:e.status==="closed"?{text:Sn,style:{fg:"f7768e"}}:{text:yn,style:{fg:"9ece6a"}}}function Yn(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 Sd(e,t){return t?t.type==="project"&&t.repoTargets?.length?Td(e,t):Qn("pr",t.title,t.branch,t.pullRequest):[{id:"review-empty",text:"No task selected.",muted:!0}]}var lr=32;function Td(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 k=Xn(y.pullRequest),a=Yn(y.pullRequest.requiredChecks),w=`${k.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},{...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(...Qn("target",null,m.branch,m.pullRequest))),r}function Qn(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??"?",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 ${Rd(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(Cd)):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 Rd(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 Cd(e){let{icon:t,color:r}=Pd(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," ")} ${Id(e.status)}`,color:r,muted:!1}}function Pd(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 Id(e){return e==="success"?"passing":e==="failed"?"failing":e}function xd(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=Ed(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)?wn:kn:_n(m.label),h=m.kind==="file"?Tn(m.label):void 0,k=" ".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:k},a,w];return{id:m.path,text:`${k}${d}${m.label}`,selected:m.path===o,focused:m.path===o&&e.focusedRegion==="inspector",muted:m.kind==="directory",segments:l}})}function Ed(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 Ad(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(Dd(t))return Ld(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=>Jn(m,e,t))))}return r}function Dd(e){return e.filePaths.some(t=>t.startsWith("repo_"))||e.diffRows.some(t=>t.path.startsWith("repo_"))}function Ld(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=>Jn(h,e,t,o.length+1))))}}return r}function Jn(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 Md(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 Od(e){return e.reduce((t,r)=>(t[r.runner]+=1,t),{codex:0,cursor:0,claude:0})}function Bd(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 cu}from"node:child_process";import{createHash as lu}from"node:crypto";import{createServer as du,createConnection as uo}from"node:net";import{openSync as uu}from"node:fs";import{mkdir as hu,readFile as vs,rm as pt,writeFile as fu}from"node:fs/promises";import{tmpdir as pu}from"node:os";import vt from"node:path";import{createRequire as Kd}from"node:module";var ro=aa(eo(),1),$d=1e3,Fd=["000000","cd3131","0dbc79","e5e510","2472c8","bc3fbc","11a8cd","e5e5e5","666666","f14c4c","23d18b","f5f543","3b8eea","d670d6","29b8db","ffffff"];function so(e){return new ro.default.Terminal({allowProposedApi:!0,cols:e.columns,rows:e.rows,scrollback:$d,theme:{foreground:"#e6e6e6",background:"#0a0a0a"}})}function io(e,t){(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function ws(e,t){return new Promise(r=>{e.write(t,r)})}function no(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 k=0;k<e.cols;k+=1){let a=d.getCell(k,o);!a||a.getWidth()===0||h.push({text:a.getChars()||" ",style:jd(a,y+n===m&&k===r.cursorX)})}s.push({segments:Wd(Nd(h))})}return s}function Wd(e){let t=[];for(let r of e){let s=t.at(-1);if(s&&qd(s.style,r.style)){s.text+=r.text;continue}let o={text:r.text};oo(r.style)||(o.style=r.style),t.push(o)}return t}function Nd(e){let t=e.length;for(;t>0;){let r=e[t-1];if(!r||r.text!==" "||!oo(r.style))break;t-=1}return e.slice(0,t)}function jd(e,t){let r={},s=to(e,"fg"),o=to(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 to(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"):Fd[o]??Hd(o)}function Hd(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(Ud).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 Ud(e){return e===0?0:55+e*40}function qd(e,t){return _s(e)===_s(t)}function _s(e){return e?[e.fg??"",e.bg??"",e.bold?"b":"",e.dim?"d":"",e.italic?"i":"",e.underline?"u":"",e.inverse?"v":""].join("|"):""}function oo(e){return _s(e)===""}var zd=Kd(import.meta.url),Vd=/^CTRL_([A-Z])$/,Gd="\x1B[6n",Xd="\x1B[c",Yd="\x1B[?u",Qd="\x1B]10;?\x1B\\",Jd="\x1B]10;?\x07",Zd="\x1B]11;?\x1B\\",eu="\x1B]11;?\x07",tu={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")ks(m),this.sessions.delete(r);else return this.attachedTabId=r,m.scrollbackLines=0,ao(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=ru(t);r!==null&&this.write(r)}scrollViewport(t){let r=this.getAttachedSession();if(!r||t===0)return;let s=r.terminal.buffer.active.baseY;r.scrollbackLines=Math.max(0,Math.min(s,r.scrollbackLines-t))}resize(t){let r=this.getAttachedSession();r&&ao(r,t)}detach(){this.attachedTabId=null}disposeSession(t){let r=this.sessions.get(t);r&&(ks(r),this.sessions.delete(t),this.attachedTabId===t&&(this.attachedTabId=null))}disposeAll(){for(let t of this.sessions.values())ks(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:no(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??iu().spawn,y=so(s),n=o??this.resolveSessionSpec(t,r),d=nt(this.env),{executable:h,args:k}=nu(this.shell,n.command,{cwd:n.cwd,env:d}),a=m(h,k,{name:"xterm-256color",cols:s.columns,rows:s.rows,cwd:n.cwd,env:ou(d)}),w={taskId:t,tabId:r,pty:a,terminal:y,status:"running",error:null,disposables:[],scrollbackLines:0};return w.disposables.push(a.onData(l=>{au(a,l),ws(w.terminal,l).then(()=>{this.onUpdate?.(w.tabId)})})),w.disposables.push(a.onExit(l=>{w.status="exited",ws(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 ru(e){if(e.length===1)return e;let t=tu[e];if(t!==void 0)return t;let r=Vd.exec(e);return r?.[1]?String.fromCharCode(r[1].charCodeAt(0)-64):null}function ao(e,t){su(e.pty,t),io(e.terminal,t)}function ks(e){for(let t of e.disposables)t.dispose();e.terminal.dispose(),e.pty.kill()}function su(e,t){t.columns>0&&t.rows>0&&(e.cols!==t.columns||e.rows!==t.rows)&&e.resize(t.columns,t.rows)}function iu(){return zd("node-pty")}function nu(e,t,r){if(t.length===0)return{executable:e,args:[]};let o=`${[ot(t[0],r),...t.slice(1)].map(co).join(" ")}; exec ${co(e)} -l`;return{executable:e,args:["-lc",o]}}function co(e){return`'${e.replaceAll("'","'\\''")}'`}function ou(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 au(e,t){for(let o=0;o<ft(t,Gd);o+=1)e.write("\x1B[1;1R");for(let o=0;o<ft(t,Xd);o+=1)e.write("\x1B[?1;2c");for(let o=0;o<ft(t,Yd);o+=1)e.write("\x1B[?0u");let r=ft(t,Qd)+ft(t,Jd);for(let o=0;o<r;o+=1)e.write("\x1B]10;rgb:e6e6/e6e6/e6e6\x1B\\");let s=ft(t,Zd)+ft(t,eu);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 Ss=3;async function ho(e){let t=Ts(e.paths);await gu(t,e.paths,e.spawnDaemon);let r=await wo(t.socketPath),s=new bs(r,e);return await s.ready(),s}async function fo(e,t={}){let r=Ts(e);await hu(e.runtimeDir,{recursive:!0}),await pt(r.socketPath,{force:!0});let s=new ys(e,t),o=du(m=>s.handleConnection(m));await yu(o,r.socketPath),await fu(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 po(e){let t=Ts(e);return await pr(t.socketPath)?(await mo(t.socketPath),!0):!1}var bs=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!==Ss)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
|
+
`);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
|
+
`);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()}},ys=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(`
|
|
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:Ss}:{},...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 vu(t)}}broadcastUpdate(t){let r=this.runtime.getViewState(t);for(let s of this.clients)fr(s,{type:"update",tabId:t,view:r})}};function Ts(e){let t=lu("sha256").update(e.workspaceRoot).digest("hex").slice(0,16);return{socketPath:vt.join(pu(),`craig-${t}.sock`),pidPath:vt.join(e.runtimeDir,"pty-daemon.pid")}}async function gu(e,t,r){if(await mu(e.socketPath,1e3))return;await pr(e.socketPath)&&(await mo(e.socketPath),await lo(e.socketPath,1e3)),await pr(e.socketPath)&&(await ku(e),await lo(e.socketPath,1e3)),await wu(e);let s=t.workspaceRoot;if(r)r(s);else{let{command:y,args:n}=_u(s),d=uu(vt.join(t.runtimeDir,"pty-daemon.log"),"a");cu(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 go(e.socketPath))return;await Rs(50)}let m=await vs(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 go(e){let t=await bu(e).catch(()=>null);return t?.ok===!0&&t.protocolVersion===Ss}async function mu(e,t){let r=Date.now();for(;Date.now()-r<t;){if(await go(e))return!0;await Rs(50)}return!1}function _u(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 wu(e){let t=await vs(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 wo(e).catch(()=>null);return t?(t.end(),!0):!1}async function mo(e){await _o(e,{id:1,type:"shutdown"}).catch(()=>null)}async function ku(e){let t=await vs(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 bu(e){return _o(e,{id:1,type:"ping"})}function _o(e,t){return new Promise((r,s)=>{let o=uo(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 k=m.slice(0,h);n(),o.end();try{r(JSON.parse(k))}catch(a){s(a instanceof Error?a:new Error(String(a)))}}),o.once("close",()=>n())})}async function lo(e,t){let r=Date.now();for(;Date.now()-r<t;){if(!await pr(e))return;await Rs(50)}}function wo(e){return new Promise((t,r)=>{let s=uo(e);s.once("connect",()=>t(s)),s.once("error",r)})}function yu(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 Rs(e){return new Promise(t=>setTimeout(t,e))}function vu(e){throw new Error(`Unhandled daemon request: ${JSON.stringify(e)}`)}var Su=[" \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 Cs(){return[...Su]}var Tu=["Start","Options","Exit"],Ru=["Resume","Options","Exit"],_r=2,wr=2,kr=2,Cu=new RegExp("\x1B\\[[0-9;]*m","g"),Pu=new RegExp("\x1B\\[(?:0)?m","g"),Iu=new RegExp("\x1B\\]8;;[^\x1B]*\x1B\\\\","g"),xu=/https?:\/\/[^\s<>"']+/g,Ps="\x1B[0m",vo="\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 So(e,t={}){return xs(e,{subtitle:"crAIg is that you?",menuItems:Tu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function To(e,t={}){return xs(e,{subtitle:"Control mode is paused.",menuItems:Ru,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."],Eu=["Help"];function Is(e,t={}){return xs(e,{subtitle:t.optionsSubtitle??"Configuration",menuItems:t.optionsMenuItems??Eu,menuIndex:t.menuIndex??0,optionsMessage:t.optionsMessage??null,color:t.color??!0})}function Ro(e,t={}){let r=t.color??!0,s=se.overlay,o=new Array(e.height).fill(ue(" ".repeat(e.width),r,s)),m=Cs(),y=Math.max(1,Math.floor((e.height-m.length-2-gr.length)/2));for(let k=0;k<m.length&&!(y+k>=e.height);k+=1)o[y+k]=ue(Eo(m[k]??"",e.width),r,se.overlayLogo);let n=Math.max(...gr.map(k=>k.length)),d=Math.max(0,Math.floor((e.width-n)/2)),h=y+m.length+2;for(let k=0;k<gr.length;k+=1){let a=h+k;if(a>=e.height)break;let w=gr[k]??"";o[a]=ue(Je(" ".repeat(d)+w,e.width),r,s)}return o.join(`
|
|
100
|
+
`)}function Co(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,k=`CRAIG | ${t.topRail.workspacePath} | ${t.topRail.agent} ${Lo(`\u25CF ${t.topRail.liveLabel}`,s,se.rail)}`,a=ue(Je(k,e.width),s,se.rail),w=Au(t,o-_r-wr,h,s),l=Du(t,d,h,s),g=Mu(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"),b=ue("\u2502",s,se.divider),S=mr(g[p]??Fe(),m,s,"right");_.push(`${u}${c}${f}${b}${S}`)}let i=ue(Je(` ${t.footerText}`,e.width),s,se.panelMuted);return[a,..._,i].join(`
|
|
101
|
+
`)}function xs(e,t){let r=new Array(e.height).fill(ue(" ".repeat(e.width),t.color,se.overlay)),s=Cs(),o=Math.max(...t.menuItems.map(h=>h.length)),m=t.menuItems.map((h,k)=>`${k===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 k=Eo(n[h]??"",e.width);if(h<s.length){r[d+h]=ue(k,t.color,se.overlayLogo);continue}if(h===s.length+1){r[d+h]=ue(k,t.color,se.overlaySubtitle);continue}let a=h-(s.length+3),l=a>=0&&a<t.menuItems.length&&a===t.menuIndex?se.overlayMenuSelected:se.overlay;r[d+h]=ue(k,t.color,l)}return r.join(`
|
|
102
|
+
`)}function Au(e,t,r,s){let o=$u(e.runners),m=1,y=e.leftTree.map(d=>Bu(d,t,s));return[...br(y,r-m),o]}function Du(e,t,r,s){let o=e.tabs.find(a=>a.active)?.label??"AGENT",m=Yu(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"||!Wn(d)?e.centerTranscript.map(a=>({...a})):Lu(e),k=[{text:Fu(e.tabs,s)},{text:y,tone:"muted"},{text:n},Fe(),...h];return br(k,r)}function Lu(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:Do(s.segments),segments:s.segments,fullBleed:!0}))}function Mu(e,t,r,s){let o=e.rightInspection?Ou(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):br([{text:Po("CONTEXT",e.focusedRegion==="tasks",s,se.panelBg)},Fe(),...e.rightContext.map(m=>Wu(m,s)),...e.actionMessage?[Fe(),{text:e.actionMessage}]:[]],r);return br(o,r)}function Ou(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:Ju(m-Math.floor(o/2),0,Math.max(0,s.length-o));return[...r.map(n=>bo(n)),...s.slice(y,y+o).map(n=>bo(n))]}function bo(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 Bu(e,t,r){let s=" ".repeat(e.indent??0),o=e.accentDot?" \u25CF":"",m=e.status?` ${e.status}`:"",y=e.accentDot?` ${Lo("\u25CF",r,e.selected?se.panelSelected:se.panelBg)}`:"",n=t-Ze(m)-Ze(o),d=e.focused&&!e.selected?Po(e.text,!0,r,se.panelBg):e.text,k=`${Je(`${s}${d}`,Math.max(0,n))}${m}${y}`;return e.selected?{text:k,tone:"selected"}:e.muted?{text:k,tone:"muted"}:{text:k}}function $u(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 Fu(e,t){return e.map(r=>r.active?yr(r.label,t,se.panelBg):Mo(r.label,t,se.panelBg)).join(" ")}function Wu(e,t){return{text:`${e.label.padEnd(8," ")} ${e.mutedValue?Mo(e.value,t,se.panelBg):e.value}`}}function Po(e,t,r,s){return t?yr(e,r,s):e}function mr(e,t,r,s){let o=Nu(s,e.tone??"default"),m=ju(e,r,o);if(s==="left"){if(e.fullBleed)return ue(Je(m,t),r,o);let n=t-_r-wr;if(e.rightAlign){let h=Ze(m),k=Math.max(0,n-h),a=`${" ".repeat(_r)}${" ".repeat(k)}${m}${" ".repeat(wr)}`;return ue(a,r,o)}let d=`${" ".repeat(_r)}${Je(m,n)}${" ".repeat(wr)}`;return ue(d,r,o)}return s==="center"&&e.fullBleed?Hu(e,t,r,o):ue(Je(` ${m}`,t),r,o)}function Nu(e,t){return t==="selected"||t==="focused"?se.panelSelected:t==="muted"?se.panelMuted:se.panelBg}function br(e,t){let r=e.slice(0,t);for(;r.length<t;)r.push(Fe());return r}function Fe(){return{text:""}}function ju(e,t,r){return e.segments?e.segments.map(s=>Io(s,t,r)).join(""):e.text}function Hu(e,t,r,s){let o=" ".repeat(kr),m=Math.max(0,t-kr*2);if(!e.segments)return ue(`${o}${Je(e.text,m)}${o}`,r,s);let y=Ku(e.segments,m),n=`${o}${y.map(d=>Io(d,r,s)).join("")}${o}`;return ue(n,r,s)}function Io(e,t,r){let s=e.href?`${xo(e.href)}${e.text}${vo}`:Uu(e.text);return!t||!e.style?s:`${Ft(Gu(e.style,r))}${Xu(e.style)}${s}${Ps}${Ft(r)}`}function Uu(e){return e.replace(xu,t=>{let[r,s]=qu(t);return`${xo(r)}${r}${vo}${s}`})}function qu(e){let t=e.length;for(;t>0&&".,;:!?)]}".includes(e[t-1]??"");)t-=1;return[e.slice(0,t),e.slice(t)]}function xo(e){return`\x1B]8;;${e}\x1B\\`}function Ku(e,t){let r=zu(e,t);return Vu(r,t)}function zu(e,t){let r=[],s=t;for(let o of e){if(s<=0)break;let m=Ze(o.text);if(m<=s){r.push(o),s-=m;continue}r.push({...o,text:o.text.slice(0,s)}),s=0}return r}function Vu(e,t){let r=Ze(Do(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 Gu(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 Xu(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 Yu(e){let t=0;for(let r of e){if(r.active)return t;t+=r.label.length+3}return 0}function Eo(e,t){let r=Math.max(0,t-Ze(e)),s=Math.floor(r/2),o=r-s;return`${" ".repeat(s)}${e}${" ".repeat(o)}`}function Je(e,t){let r=Ze(e);return r>=t?Qu(e,t):e+" ".repeat(t-r)}function Qu(e,t){return Ze(e)<=t?e:Ao(e).slice(0,Math.max(0,t-1))+"\u2026"}function Ze(e){return Ao(e).length}function Ju(e,t,r){return Math.min(Math.max(e,t),r)}function Ao(e){return e.replace(Iu,"").replace(Cu,"")}function Do(e){return e.map(t=>t.text).join("")}function ue(e,t,r){if(!t)return e;let s=Ft(r),o=e.replace(Pu,`${Ps}${s}`);return`${s}${o}${Ps}`}function Ft(e){let t=[];return e.fg&&t.push(`38;2;${yo(e.fg).join(";")}`),e.bg&&t.push(`48;2;${yo(e.bg).join(";")}`),`\x1B[${t.join(";")}m`}function yo(e){return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16)]}function Lo(e,t,r){return Es(e,t,se.success.fg,r)}function yr(e,t,r){return Es(e,t,se.accent.fg,r)}function Mo(e,t,r){return Es(e,t,se.mutedfg.fg,r)}function Es(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 As=["Runners","Help"];function Ds(e,t){return ce.map(r=>{let s=ke(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 Bo(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 $o(e,t){return t==="UP"||t==="k"?{kind:"render",menuIndex:Math.max(0,e-1)}:t==="DOWN"||t==="j"?{kind:"render",menuIndex:Math.min(As.length-1,e+1)}:t==="ESCAPE"?{kind:"back"}:Ls(t)?e===0?{kind:"runners"}:{kind:"help"}:{kind:"noop",menuIndex:e}}function Fo(e,t,r,s){if(e.pathEdit)return Zu({...e,pathEdit:e.pathEdit},t,r);let o=Ds(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(!Ls(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:eh(t,m,!y),state:{...e,message:`${ke(m).displayName} ${y?"disabled":"enabled"}.`}}}function Zu(e,t,r){if(r==="ESCAPE")return{kind:"render",state:Oo({...e,message:null})};if(r==="BACKSPACE")return{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:e.pathEdit.value.slice(0,-1)}}};if(Ls(r)){let s=e.pathEdit.runner,o=e.pathEdit.value.trim();return{kind:"save",config:th(t,s,o.length>0?o:null),state:Oo({...e,message:o.length>0?`${ke(s).displayName} executable saved.`:`${ke(s).displayName} executable reset to default.`})}}return rh(r)?{kind:"render",state:{...e,pathEdit:{...e.pathEdit,value:`${e.pathEdit.value}${r}`}}}:{kind:"noop",state:e}}function eh(e,t,r){return{...e,runners:{...e.runners??{},[t]:{...e.runners?.[t]??{},enabled:r}}}}function th(e,t,r){let s={...e.runners?.[t]??{},...r?{path:r}:{}};return r||delete s.path,{...e,runners:{...e.runners??{},[t]:s}}}function Oo(e){let t={...e};return delete t.pathEdit,t}function Ls(e){return e==="ENTER"||e==="RETURN"||e==="CTRL_M"||e==="\r"||e===`
|
|
103
|
+
`}function rh(e){return e.length===1&&e>=" "&&e!=="\x7F"}var oh=sh(import.meta.url),ah=oh("terminal-kit"),ch=ah.terminal;async function jo(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 bt(t);let s=await be(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(Mn(m,s),d);d=await Wt(t,h,o);let k=()=>{},a={workspaceRoot:t,onUpdate:()=>k(),resolveSessionSpec:(g,_)=>hh(d,_,t)},w=e.ptyRuntime??await ho({...a,paths:r}),l=g=>{if(!e.uiStateFile)return;m=On(m,g);let _=m;y=y.then(()=>Ce({uiStateFile:e.uiStateFile},_),()=>Ce({uiStateFile:e.uiStateFile},_)),y.catch(()=>{})};return new Promise(g=>{let _=e.terminal??ch,i={mode:"overlay",variant:"boot",menuIndex:0,optionsMessage:null,shell:ar(h,d)},p=!1,u=!1,c=null,f=0,b=0,S=null,P=null,E=null,j=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 Bt(B,z.getViewState(B.selectedPtyTabId))}function W(B){return X(lh(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=dh(H?.fileRows??[],B.collapsedFileTreePaths);return{leftItemIds:uh(d),centerTabIds:jn(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 Us(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=Ho(d.tasks,B),H=d.inspection,K;if(M&&H?.taskId===M.id){let ee={selectedFilePath:B.selectedFilePath,selectedDiffPath:B.selectedDiffPath},ge=await on(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 yh(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 Ke(M),await U(),H=M.selectedPtyTabId)}M&&!H&&(M=await Ke(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,Ms(yt(_.width,_.height)));u=Os(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&&Os(B.selectedPtyTabId)&&(await J(B.selectedTaskId,M).catch(()=>{}),await U().catch(()=>{})),i={mode:"main",shell:$n(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??ph(ee,H.activeTab,H.preferredPtyTabKind),xe=Wo(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 ji(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 qe(){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 mn(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 Ke(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=Wo(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=()=>{qo();let B=yt(_.width,_.height),O=i.mode==="main"?Co(B,Vn(W(i.shell),d),{centerOnly:i.shell.centerZoomed}):i.variant==="boot"?So(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="pause"?To(B,{menuIndex:i.menuIndex,optionsMessage:i.optionsMessage}):i.variant==="options"?Is(B,{menuIndex:i.menuIndex,optionsMenuItems:As}):i.variant==="runners"?Is(B,{menuIndex:Nt(i).menuIndex,optionsMenuItems:Ds(s,Nt(i)),optionsMessage:Bo(Nt(i)),optionsSubtitle:"Runners"}):Ro(B);_.moveTo(1,1),x&&(_.eraseDisplayBelow(),x=!1),_.noFormat(O),_.hideCursor(!0)};function qo(){let B=i.mode==="main"&&i.shell.inputMode==="terminal"?"terminal":"control";B!==A&&(A=B,_.grabInput(B==="terminal"?{mouse:"button"}:!0))}let Ko=()=>{process.stdout.off("resize",Ns),_.removeListener("key",$s),_.removeListener("unknown",Fs),_.removeListener("mouse",Ws),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=>{Ko(),g(B)},zo=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 gh(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??Uo(M,"agent"),Ms(yt(_.width,_.height)));u=Os(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()}},Vo=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(Qe(B)){zo();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}Fn(B)&&(i={mode:"main",shell:W({...O,taskPromptInput:`${O.taskPromptInput}${B}`,taskPromptError:null})},L())}},Go=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(Bs.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"||Qe(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()})}}},$s=B=>{let O=typeof B=="string"?B:"";if(i.mode==="main"&&i.shell.taskPromptInput!==null){Vo(O);return}if(i.mode==="main"&&i.shell.workspaceBrowser!==null){Go(O);return}if(i.mode==="main"){let M=Bn(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&&Qe(O)){u=!1;return}u&&(u=!1),c=_h(O)?{key:O,at:Date.now()}:null;let H=wh(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"){Xo(O);return}if(i.variant==="runners"){Yo(O);return}if(i.optionsMessage){(O==="ESCAPE"||Qe(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(Qe(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 Xo(B){if(i.mode!=="overlay"||i.variant!=="options")return;let O=$o(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 Yo(B){if(i.mode!=="overlay"||i.variant!=="runners")return;let O=Fo(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 Fs=B=>{let O=mh(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=kh(O);if(M!==0){Rr(M);return}if(u&&O!=="\r"&&O!==`
|
|
104
|
+
`&&O!==`\r
|
|
105
|
+
`&&(u=!1),bh(u,c,O)){u=!1;return}z.write(O)},Ws=B=>{if(i.mode!=="main")return;if(i.shell.inputMode==="control"){Jo(No(B));return}let O=No(B);O!==0&&Rr(O)};function Rr(B){f+=B,!S&&(S=setTimeout(()=>{S=null;let O=f;f=0,O!==0&&(Qo(O),L())},16))}function Qo(B){z.scrollViewport(B),i={mode:"main",shell:X(i.shell)}}function Jo(B){B!==0&&(b+=B,!P&&(P=setTimeout(()=>{P=null;let O=b;if(b=0,O===0||i.mode!=="main"||i.shell.inputMode!=="control")return;let M=Ye(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 Ns=()=>{x=!0,i.mode==="main"&&i.shell.inputMode==="terminal"&&(z.resize(Ms(yt(_.width,_.height))),i={mode:"main",shell:X(i.shell)}),L()};process.stdout.on("resize",Ns),_.grabInput(!0),A="control",_.hideCursor(!0),_.fullscreen(!0),_.on("key",$s),_.on("unknown",Fs),_.on("mouse",Ws),j=setInterval(()=>{qe()},(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=Ho(y.tasks,t),d=t?{selectedFilePath:t.selectedFilePath,selectedDiffPath:t.selectedDiffPath}:{},h=n?await an(n,d):null;return{workspaceRoot:e,workspaces:m.filter(k=>k.status==="active"),repos:o,tasks:y.tasks,inspection:h,...r?{enabledRunnerIds:r}:{}}}function Ho(e,t){return t?.selectedTaskId?e.find(r=>r.id===t.selectedTaskId)??null:null}function lh(e,t){return ar(e,t)}function dh(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 uh(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 hh(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"?fh(o):[]}}function fh(e){return e.command.length>0?e.command:["codex"]}function Nt(e){return e.runnerOptions??{menuIndex:e.menuIndex,message:e.optionsMessage}}function ph(e,t,r){return e.ptyTabs.find(s=>s.id===t)?.kind??r}function Wo(e,t,r,s={}){let o=r??e.runner,m=ke(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,k=n;for(;d.has(k);)h+=1,k=`${n}-${h}`;let a=new Date().toISOString(),w=r&&r!==e.runner?r:void 0;return{id:k,kind:t,...w?{runner:w}:{},title:h===1?y:`${y} ${h}`,command:t==="agent"?me(o,void 0,s):[],createdAt:a,updatedAt:a}}async function gh(e,t,r,s,o){let m=await be(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 k=h instanceof Error?h.message:"Failed to start runner.",a={...y.task,status:"draft",runnerSession:{...y.task.runnerSession,lastKnownState:"failed",exitedAt:new Date().toISOString()},lastFailureReason:k};throw await re(e,a),new vr(k,a)}let n=Uo(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 Uo(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 Ms(e){return{columns:Math.max(20,e.width-Me.leftWidth-Me.rightWidth-Me.dividerWidth-kr*2),rows:Math.max(5,e.height-Me.topRailHeight-5)}}function mh(e){return typeof e=="string"?e:Buffer.isBuffer(e)?e.toString("utf8"):""}function _h(e){return e.length===1||Qe(e)||e==="BACKSPACE"||e==="TAB"}function Os(e){return typeof e=="string"&&new RegExp(`:(?:agent|${ce.join("|")})(?:-\\d+)?$`).test(e)}function wh(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 No(e){return e==="MOUSE_WHEEL_UP"?-3:e==="MOUSE_WHEEL_DOWN"?3:0}function kh(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 bh(e,t,r){return r.length===0?!1:e&&(r==="\r"||r===`
|
|
100
106
|
`||r===`\r
|
|
101
|
-
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(
|
|
107
|
+
`)?!0:!t||Date.now()-t.at>=30?!1:r===t.key?!0:r.length<=4&&r.split("").every(s=>s===t.key)}async function yh(e){let t=await ih(e,{withFileTypes:!0}),r=[];for(let s of t){if(!s.isDirectory())continue;let o=Bs.join(e,s.name);r.push({name:s.name,path:o,kind:await vh(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 vh(e){let t=Bs.join(e,".git");return await nh(t).catch(()=>null)!==null}function Sr(){return process.cwd()}async function Sh(){try{if(process.argv[2]==="__craig-daemon"){let n=process.argv[3]??Sr(),d=je(n);return await bt(n),await fo(d),0}if(process.argv[2]==="__craig-daemon-shutdown"){let n=process.argv[3]??Sr(),d=je(n);return await bt(n),await po(d),0}let e=Hs(process.argv.slice(2)),t=Sr(),r=je(t),s=await bt(t),o={paths:r};if(e.mode==="interactive")return await jo({uiStateFile:r.uiStateFile,workspaceRoot:r.workspaceRoot});if(!e.command)throw new Error("Command mode requires a command.");let m=await rn(e.command,o),y=sn(m);return y.length>0&&process.stdout.write(`${y}
|
|
102
108
|
`),0}catch(e){let t=e instanceof Error?e.message:"Unknown Craig error";return process.stderr.write(`${t}
|
|
103
|
-
`),1}}var
|
|
109
|
+
`),1}}var Th=await Sh();process.exit(Th);
|