teapot-coding-agent 0.27.1 → 0.27.2

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.
@@ -17,14 +17,14 @@ WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){t
17
17
  `)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(e){this._refreshAnimationFrame||=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh()),wo&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(e){let t=this._getMouseBufferCoords(e),n=this._model.finalSelectionStart,r=this._model.finalSelectionEnd;return!n||!r||!t?!1:this._areCoordsInSelection(t,n,r)}isCellInSelection(e,t){let n=this._model.finalSelectionStart,r=this._model.finalSelectionEnd;return!n||!r?!1:this._areCoordsInSelection([e,t],n,r)}_areCoordsInSelection(e,t,n){return e[1]>t[1]&&e[1]<n[1]||t[1]===n[1]&&e[1]===t[1]&&e[0]>=t[0]&&e[0]<n[0]||t[1]<n[1]&&e[1]===n[1]&&e[0]<n[0]||t[1]<n[1]&&e[1]===t[1]&&e[0]>=t[0]}_selectWordAtCursor(e,t){let n=this._linkifier.currentLink?.link?.range;if(n)return this._model.selectionStart=[n.start.x-1,n.start.y-1],this._model.selectionStartLength=qo(n,this._bufferService.cols),this._model.selectionEnd=void 0,!0;let r=this._getMouseBufferCoords(e);return r?(this._selectWordAt(r,t),this._model.selectionEnd=void 0,!0):!1}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()}_handleTrim(e){this._model.handleTrim(e)&&this.refresh()}_getMouseBufferCoords(e){let t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t}_getMouseEventScrollAmount(e){let t=so(this._coreBrowserService.window,e,this._screenElement)[1],n=this._renderService.dimensions.css.canvas.height;return t>=0&&t<=n?0:(t>n&&(t-=n),t=Math.min(Math.max(t,-Jo),Jo),t/=Jo,t/Math.abs(t)+Math.round(t*(Yo-1)))}shouldForceSelection(e){return bo?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey}handleMouseDown(e){if(this._mouseDownTimeStamp=e.timeStamp,!(e.button===2&&this.hasSelection)&&e.button===0){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._handleIncrementalClick(e):e.detail===1?this._handleSingleClick(e):e.detail===2?this._handleDoubleClick(e):e.detail===3&&this._handleTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener(`mousemove`,this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener(`mouseup`,this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),Xo)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener(`mousemove`,this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener(`mouseup`,this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))}_handleSingleClick(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),!this._model.selectionStart)return;this._model.selectionEnd=void 0;let t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&t.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_handleDoubleClick(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(e){let t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))}shouldColumnSelect(e){return e.altKey&&!(bo&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(e){if(e.stopImmediatePropagation(),!this._model.selectionStart)return;let t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),!this._model.selectionEnd){this.refresh(!0);return}this._activeSelectionMode===2?this._model.selectionEnd[1]<this._model.selectionStart[1]?this._model.selectionEnd[0]=0:this._model.selectionEnd[0]=this._bufferService.cols:this._activeSelectionMode===1&&this._selectToWordAt(this._model.selectionEnd),this._dragScrollAmount=this._getMouseEventScrollAmount(e),this._activeSelectionMode!==3&&(this._dragScrollAmount>0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));let n=this._bufferService.buffer;if(this._model.selectionEnd[1]<n.lines.length){let e=n.lines.get(this._model.selectionEnd[1]);e&&e.hasWidth(this._model.selectionEnd[0])===0&&this._model.selectionEnd[0]<this._bufferService.cols&&this._model.selectionEnd[0]++}(!t||t[0]!==this._model.selectionEnd[0]||t[1]!==this._model.selectionEnd[1])&&this.refresh(!0)}_dragScroll(){if(!(!this._model.selectionEnd||!this._model.selectionStart)&&this._dragScrollAmount){this._onRequestScrollLines.fire({amount:this._dragScrollAmount,suppressScrollEvent:!1});let e=this._bufferService.buffer;this._dragScrollAmount>0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}}_handleMouseUp(e){let t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<Zo&&e.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){let t=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(t&&t[0]!==void 0&&t[1]!==void 0){let e=No(t[0]-1,t[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(e,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){let e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd,n=!!e&&!!t&&(e[0]!==t[0]||e[1]!==t[1]);if(!n){this._oldHasSelection&&this._fireOnSelectionChange(e,t,n);return}!e||!t||(!this._oldSelectionStart||!this._oldSelectionEnd||e[0]!==this._oldSelectionStart[0]||e[1]!==this._oldSelectionStart[1]||t[0]!==this._oldSelectionEnd[0]||t[1]!==this._oldSelectionEnd[1])&&this._fireOnSelectionChange(e,t,n)}_fireOnSelectionChange(e,t,n){this._oldSelectionStart=e,this._oldSelectionEnd=t,this._oldHasSelection=n,this._onSelectionChange.fire()}_handleBufferActivate(e){this.clearSelection(),this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim(e=>this._handleTrim(e))}_convertViewportColToCharacterIndex(e,t){let n=t;for(let r=0;t>=r;r++){let i=e.loadCell(r,this._workCell).getChars().length;this._workCell.getWidth()===0?n--:i>1&&t!==r&&(n+=i-1)}return n}setSelection(e,t,n){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=n,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(e,t,n=!0,r=!0){if(e[0]>=this._bufferService.cols)return;let i=this._bufferService.buffer,a=i.lines.get(e[1]);if(!a)return;let o=i.translateBufferLineToString(e[1],!1),s=this._convertViewportColToCharacterIndex(a,e[0]),c=s,l=e[0]-s,u=0,d=0,f=0,p=0;if(o.charAt(s)===` `){for(;s>0&&o.charAt(s-1)===` `;)s--;for(;c<o.length&&o.charAt(c+1)===` `;)c++}else{let t=e[0],n=e[0];a.getWidth(t)===0&&(u++,t--),a.getWidth(n)===2&&(d++,n++);let r=a.getString(n).length;for(r>1&&(p+=r-1,c+=r-1);t>0&&s>0&&!this._isCharWordSeparator(a.loadCell(t-1,this._workCell));){a.loadCell(t-1,this._workCell);let e=this._workCell.getChars().length;this._workCell.getWidth()===0?(u++,t--):e>1&&(f+=e-1,s-=e-1),s--,t--}for(;n<a.length&&c+1<o.length&&!this._isCharWordSeparator(a.loadCell(n+1,this._workCell));){a.loadCell(n+1,this._workCell);let e=this._workCell.getChars().length;this._workCell.getWidth()===2?(d++,n++):e>1&&(p+=e-1,c+=e-1),c++,n++}}c++;let m=s+l-u+f,h=Math.min(this._bufferService.cols,c-s+u+d-f-p);if(!(!t&&o.slice(s,c).trim()===``)){if(n&&m===0&&a.getCodePoint(0)!==32){let t=i.lines.get(e[1]-1);if(t&&a.isWrapped&&t.getCodePoint(this._bufferService.cols-1)!==32){let t=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(t){let e=this._bufferService.cols-t.start;m-=e,h+=e}}}if(r&&m+h===this._bufferService.cols&&a.getCodePoint(this._bufferService.cols-1)!==32){let t=i.lines.get(e[1]+1);if(t?.isWrapped&&t.getCodePoint(0)!==32){let t=this._getWordAt([0,e[1]+1],!1,!1,!0);t&&(h+=t.length)}}return{start:m,length:h}}}_selectWordAt(e,t){let n=this._getWordAt(e,t);if(n){for(;n.start<0;)n.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[n.start,e[1]],this._model.selectionStartLength=n.length}}_selectToWordAt(e){let t=this._getWordAt(e,!0);if(t){let n=e[1];for(;t.start<0;)t.start+=this._bufferService.cols,n--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,n++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,n]}}_isCharWordSeparator(e){return e.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0}_selectLineAt(e){let t=this._bufferService.buffer.getWrappedRangeForLine(e),n={start:{x:0,y:t.first},end:{x:this._bufferService.cols-1,y:t.last}};this._model.selectionStart=[0,t.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=qo(n,this._bufferService.cols)}};$o=z([B(3,qt),B(4,Yt),B(5,cn),B(6,$t),B(7,ln),B(8,sn)],$o);var es=class{constructor(){this._data={}}set(e,t,n){this._data[e]||(this._data[e]={}),this._data[e][t]=n}get(e,t){return this._data[e]?this._data[e][t]:void 0}clear(){this._data={}}},ts=class{constructor(){this._color=new es,this._css=new es}setCss(e,t,n){this._css.set(e,t,n)}getCss(e,t){return this._css.get(e,t)}setColor(e,t,n){this._color.set(e,t,n)}getColor(e,t){return this._color.get(e,t)}clear(){this._color.clear(),this._css.clear()}},ns=Object.freeze((()=>{let e=[ka.toColor(`#2e3436`),ka.toColor(`#cc0000`),ka.toColor(`#4e9a06`),ka.toColor(`#c4a000`),ka.toColor(`#3465a4`),ka.toColor(`#75507b`),ka.toColor(`#06989a`),ka.toColor(`#d3d7cf`),ka.toColor(`#555753`),ka.toColor(`#ef2929`),ka.toColor(`#8ae234`),ka.toColor(`#fce94f`),ka.toColor(`#729fcf`),ka.toColor(`#ad7fa8`),ka.toColor(`#34e2e2`),ka.toColor(`#eeeeec`)],t=[0,95,135,175,215,255];for(let n=0;n<216;n++){let r=t[n/36%6|0],i=t[n/6%6|0],a=t[n%6];e.push({css:Oa.toCss(r,i,a),rgba:Oa.toRgba(r,i,a)})}for(let t=0;t<24;t++){let n=8+t*10;e.push({css:Oa.toCss(n,n,n),rgba:Oa.toRgba(n,n,n)})}return e})()),rs=ka.toColor(`#ffffff`),is=ka.toColor(`#000000`),as=ka.toColor(`#ffffff`),os=is,ss={css:`rgba(255, 255, 255, 0.3)`,rgba:4294967117},cs=rs,ls=class extends W{constructor(e){super(),this._optionsService=e,this._contrastCache=new ts,this._halfContrastCache=new ts,this._onChangeColors=this._register(new K),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:rs,background:is,cursor:as,cursorAccent:os,selectionForeground:void 0,selectionBackgroundTransparent:ss,selectionBackgroundOpaque:Y.blend(is,ss),selectionInactiveBackgroundTransparent:ss,selectionInactiveBackgroundOpaque:Y.blend(is,ss),scrollbarSliderBackground:Y.opacity(rs,.2),scrollbarSliderHoverBackground:Y.opacity(rs,.4),scrollbarSliderActiveBackground:Y.opacity(rs,.5),overviewRulerBorder:rs,ansi:ns.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this._register(this._optionsService.onSpecificOptionChange(`minimumContrastRatio`,()=>this._contrastCache.clear())),this._register(this._optionsService.onSpecificOptionChange(`theme`,()=>this._setTheme(this._optionsService.rawOptions.theme)))}get colors(){return this._colors}_setTheme(e={}){let t=this._colors;if(t.foreground=X(e.foreground,rs),t.background=X(e.background,is),t.cursor=Y.blend(t.background,X(e.cursor,as)),t.cursorAccent=Y.blend(t.background,X(e.cursorAccent,os)),t.selectionBackgroundTransparent=X(e.selectionBackground,ss),t.selectionBackgroundOpaque=Y.blend(t.background,t.selectionBackgroundTransparent),t.selectionInactiveBackgroundTransparent=X(e.selectionInactiveBackground,t.selectionBackgroundTransparent),t.selectionInactiveBackgroundOpaque=Y.blend(t.background,t.selectionInactiveBackgroundTransparent),t.selectionForeground=e.selectionForeground?X(e.selectionForeground,Da):void 0,t.selectionForeground===Da&&(t.selectionForeground=void 0),Y.isOpaque(t.selectionBackgroundTransparent)&&(t.selectionBackgroundTransparent=Y.opacity(t.selectionBackgroundTransparent,.3)),Y.isOpaque(t.selectionInactiveBackgroundTransparent)&&(t.selectionInactiveBackgroundTransparent=Y.opacity(t.selectionInactiveBackgroundTransparent,.3)),t.scrollbarSliderBackground=X(e.scrollbarSliderBackground,Y.opacity(t.foreground,.2)),t.scrollbarSliderHoverBackground=X(e.scrollbarSliderHoverBackground,Y.opacity(t.foreground,.4)),t.scrollbarSliderActiveBackground=X(e.scrollbarSliderActiveBackground,Y.opacity(t.foreground,.5)),t.overviewRulerBorder=X(e.overviewRulerBorder,cs),t.ansi=ns.slice(),t.ansi[0]=X(e.black,ns[0]),t.ansi[1]=X(e.red,ns[1]),t.ansi[2]=X(e.green,ns[2]),t.ansi[3]=X(e.yellow,ns[3]),t.ansi[4]=X(e.blue,ns[4]),t.ansi[5]=X(e.magenta,ns[5]),t.ansi[6]=X(e.cyan,ns[6]),t.ansi[7]=X(e.white,ns[7]),t.ansi[8]=X(e.brightBlack,ns[8]),t.ansi[9]=X(e.brightRed,ns[9]),t.ansi[10]=X(e.brightGreen,ns[10]),t.ansi[11]=X(e.brightYellow,ns[11]),t.ansi[12]=X(e.brightBlue,ns[12]),t.ansi[13]=X(e.brightMagenta,ns[13]),t.ansi[14]=X(e.brightCyan,ns[14]),t.ansi[15]=X(e.brightWhite,ns[15]),e.extendedAnsi){let n=Math.min(t.ansi.length-16,e.extendedAnsi.length);for(let r=0;r<n;r++)t.ansi[r+16]=X(e.extendedAnsi[r],ns[r+16])}this._contrastCache.clear(),this._halfContrastCache.clear(),this._updateRestoreColors(),this._onChangeColors.fire(this.colors)}restoreColor(e){this._restoreColor(e),this._onChangeColors.fire(this.colors)}_restoreColor(e){if(e===void 0){for(let e=0;e<this._restoreColors.ansi.length;++e)this._colors.ansi[e]=this._restoreColors.ansi[e];return}switch(e){case 256:this._colors.foreground=this._restoreColors.foreground;break;case 257:this._colors.background=this._restoreColors.background;break;case 258:this._colors.cursor=this._restoreColors.cursor;break;default:this._colors.ansi[e]=this._restoreColors.ansi[e]}}modifyColors(e){e(this._colors),this._onChangeColors.fire(this.colors)}_updateRestoreColors(){this._restoreColors={foreground:this._colors.foreground,background:this._colors.background,cursor:this._colors.cursor,ansi:this._colors.ansi.slice()}}};ls=z([B(0,$t)],ls);function X(e,t){if(e!==void 0)try{return ka.toColor(e)}catch{}return t}var us=class{constructor(...e){this._entries=new Map;for(let[t,n]of e)this.set(t,n)}set(e,t){let n=this._entries.get(e);return this._entries.set(e,t),n}forEach(e){for(let[t,n]of this._entries.entries())e(t,n)}has(e){return this._entries.has(e)}get(e){return this._entries.get(e)}},ds=class{constructor(){this._services=new us,this._services.set(Zt,this)}setService(e,t){this._services.set(e,t)}getService(e){return this._services.get(e)}createInstance(e,...t){let n=Gt(e).sort((e,t)=>e.index-t.index),r=[];for(let t of n){let n=this._services.get(t.id);if(!n)throw Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id._id}.`);r.push(n)}let i=n.length>0?n[0].index:t.length;if(t.length!==i)throw Error(`[createInstance] First service dependency of ${e.name} at position ${i+1} conflicts with ${t.length} static arguments`);return new e(...t,...r)}},fs={trace:0,debug:1,info:2,warn:3,error:4,off:5},ps=`xterm.js: `,ms=class extends W{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange(`logLevel`,()=>this._updateLogLevel())),hs=this}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=fs[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;t<e.length;t++)typeof e[t]==`function`&&(e[t]=e[t]())}_log(e,t,n){this._evalLazyOptionalParams(n),e.call(console,(this._optionsService.options.logger?``:ps)+t,...n)}trace(e,...t){this._logLevel<=0&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,e,t)}debug(e,...t){this._logLevel<=1&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,e,t)}info(e,...t){this._logLevel<=2&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,e,t)}warn(e,...t){this._logLevel<=3&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,e,t)}error(e,...t){this._logLevel<=4&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,e,t)}};ms=z([B(0,$t)],ms);var hs,gs=class extends W{constructor(e){super(),this._maxLength=e,this.onDeleteEmitter=this._register(new K),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this._register(new K),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this._register(new K),this.onTrim=this.onTrimEmitter.event,this._array=Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(e){if(this._maxLength===e)return;let t=Array(e);for(let n=0;n<Math.min(e,this.length);n++)t[n]=this._array[this._getCyclicIndex(n)];this._array=t,this._maxLength=e,this._startIndex=0}get length(){return this._length}set length(e){if(e>this._length)for(let t=this._length;t<e;t++)this._array[t]=void 0;this._length=e}get(e){return this._array[this._getCyclicIndex(e)]}set(e,t){this._array[this._getCyclicIndex(e)]=t}push(e){this._array[this._getCyclicIndex(this._length)]=e,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw 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(e,t,...n){if(t){for(let n=e;n<this._length-t;n++)this._array[this._getCyclicIndex(n)]=this._array[this._getCyclicIndex(n+t)];this._length-=t,this.onDeleteEmitter.fire({index:e,amount:t})}for(let t=this._length-1;t>=e;t--)this._array[this._getCyclicIndex(t+n.length)]=this._array[this._getCyclicIndex(t)];for(let t=0;t<n.length;t++)this._array[this._getCyclicIndex(e+t)]=n[t];if(n.length&&this.onInsertEmitter.fire({index:e,amount:n.length}),this._length+n.length>this._maxLength){let e=this._length+n.length-this._maxLength;this._startIndex+=e,this._length=this._maxLength,this.onTrimEmitter.fire(e)}else this._length+=n.length}trimStart(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)}shiftElements(e,t,n){if(!(t<=0)){if(e<0||e>=this._length)throw Error(`start argument out of range`);if(e+n<0)throw Error(`Cannot shift elements in list beyond index 0`);if(n>0){for(let r=t-1;r>=0;r--)this.set(e+r+n,this.get(e+r));let r=e+t+n-this._length;if(r>0)for(this._length+=r;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let r=0;r<t;r++)this.set(e+r+n,this.get(e+r))}}_getCyclicIndex(e){return(this._startIndex+e)%this._maxLength}},Z=3,_s=Object.freeze(new zt),vs=0,ys=2,bs=class e{constructor(e,t,n=!1){this.isWrapped=n,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(e*Z);let r=t||Vt.fromCharData([0,Lt,1,0]);for(let t=0;t<e;++t)this.setCell(t,r);this.length=e}get(e){let t=this._data[e*Z+0],n=t&2097151;return[this._data[e*Z+1],t&2097152?this._combined[e]:n?Nt(n):``,t>>22,t&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):n]}set(e,t){this._data[e*Z+1]=t[0],t[1].length>1?(this._combined[e]=t[1],this._data[e*Z+0]=e|2097152|t[2]<<22):this._data[e*Z+0]=t[1].charCodeAt(0)|t[2]<<22}getWidth(e){return this._data[e*Z+0]>>22}hasWidth(e){return this._data[e*Z+0]&12582912}getFg(e){return this._data[e*Z+1]}getBg(e){return this._data[e*Z+2]}hasContent(e){return this._data[e*Z+0]&4194303}getCodePoint(e){let t=this._data[e*Z+0];return t&2097152?this._combined[e].charCodeAt(this._combined[e].length-1):t&2097151}isCombined(e){return this._data[e*Z+0]&2097152}getString(e){let t=this._data[e*Z+0];return t&2097152?this._combined[e]:t&2097151?Nt(t&2097151):``}isProtected(e){return this._data[e*Z+2]&536870912}loadCell(e,t){return vs=e*Z,t.content=this._data[vs+0],t.fg=this._data[vs+1],t.bg=this._data[vs+2],t.content&2097152&&(t.combinedData=this._combined[e]),t.bg&268435456&&(t.extended=this._extendedAttrs[e]),t}setCell(e,t){t.content&2097152&&(this._combined[e]=t.combinedData),t.bg&268435456&&(this._extendedAttrs[e]=t.extended),this._data[e*Z+0]=t.content,this._data[e*Z+1]=t.fg,this._data[e*Z+2]=t.bg}setCellFromCodepoint(e,t,n,r){r.bg&268435456&&(this._extendedAttrs[e]=r.extended),this._data[e*Z+0]=t|n<<22,this._data[e*Z+1]=r.fg,this._data[e*Z+2]=r.bg}addCodepointToCell(e,t,n){let r=this._data[e*Z+0];r&2097152?this._combined[e]+=Nt(t):r&2097151?(this._combined[e]=Nt(r&2097151)+Nt(t),r&=-2097152,r|=2097152):r=t|1<<22,n&&(r&=-12582913,r|=n<<22),this._data[e*Z+0]=r}insertCells(e,t,n){if(e%=this.length,e&&this.getWidth(e-1)===2&&this.setCellFromCodepoint(e-1,0,1,n),t<this.length-e){let r=new Vt;for(let n=this.length-e-t-1;n>=0;--n)this.setCell(e+t+n,this.loadCell(e+n,r));for(let r=0;r<t;++r)this.setCell(e+r,n)}else for(let t=e;t<this.length;++t)this.setCell(t,n);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,n)}deleteCells(e,t,n){if(e%=this.length,t<this.length-e){let r=new Vt;for(let n=0;n<this.length-e-t;++n)this.setCell(e+n,this.loadCell(e+t+n,r));for(let e=this.length-t;e<this.length;++e)this.setCell(e,n)}else for(let t=e;t<this.length;++t)this.setCell(t,n);e&&this.getWidth(e-1)===2&&this.setCellFromCodepoint(e-1,0,1,n),this.getWidth(e)===0&&!this.hasContent(e)&&this.setCellFromCodepoint(e,0,1,n)}replaceCells(e,t,n,r=!1){if(r){for(e&&this.getWidth(e-1)===2&&!this.isProtected(e-1)&&this.setCellFromCodepoint(e-1,0,1,n),t<this.length&&this.getWidth(t-1)===2&&!this.isProtected(t)&&this.setCellFromCodepoint(t,0,1,n);e<t&&e<this.length;)this.isProtected(e)||this.setCell(e,n),e++;return}for(e&&this.getWidth(e-1)===2&&this.setCellFromCodepoint(e-1,0,1,n),t<this.length&&this.getWidth(t-1)===2&&this.setCellFromCodepoint(t,0,1,n);e<t&&e<this.length;)this.setCell(e++,n)}resize(e,t){if(e===this.length)return this._data.length*4*ys<this._data.buffer.byteLength;let n=e*Z;if(e>this.length){if(this._data.buffer.byteLength>=n*4)this._data=new Uint32Array(this._data.buffer,0,n);else{let e=new Uint32Array(n);e.set(this._data),this._data=e}for(let n=this.length;n<e;++n)this.setCell(n,t)}else{this._data=this._data.subarray(0,n);let t=Object.keys(this._combined);for(let n=0;n<t.length;n++){let r=parseInt(t[n],10);r>=e&&delete this._combined[r]}let r=Object.keys(this._extendedAttrs);for(let t=0;t<r.length;t++){let n=parseInt(r[t],10);n>=e&&delete this._extendedAttrs[n]}}return this.length=e,n*4*ys<this._data.buffer.byteLength}cleanupMemory(){if(this._data.length*4*ys<this._data.buffer.byteLength){let e=new Uint32Array(this._data.length);return e.set(this._data),this._data=e,1}return 0}fill(e,t=!1){if(t){for(let t=0;t<this.length;++t)this.isProtected(t)||this.setCell(t,e);return}this._combined={},this._extendedAttrs={};for(let t=0;t<this.length;++t)this.setCell(t,e)}copyFrom(e){this.length===e.length?this._data.set(e._data):this._data=new Uint32Array(e._data),this.length=e.length,this._combined={};for(let t in e._combined)this._combined[t]=e._combined[t];this._extendedAttrs={};for(let t in e._extendedAttrs)this._extendedAttrs[t]=e._extendedAttrs[t];this.isWrapped=e.isWrapped}clone(){let t=new e(0);t._data=new Uint32Array(this._data),t.length=this.length;for(let e in this._combined)t._combined[e]=this._combined[e];for(let e in this._extendedAttrs)t._extendedAttrs[e]=this._extendedAttrs[e];return t.isWrapped=this.isWrapped,t}getTrimmedLength(){for(let e=this.length-1;e>=0;--e)if(this._data[e*Z+0]&4194303)return e+(this._data[e*Z+0]>>22);return 0}getNoBgTrimmedLength(){for(let e=this.length-1;e>=0;--e)if(this._data[e*Z+0]&4194303||this._data[e*Z+2]&50331648)return e+(this._data[e*Z+0]>>22);return 0}copyCellsFrom(e,t,n,r,i){let a=e._data;if(i)for(let i=r-1;i>=0;i--){for(let e=0;e<Z;e++)this._data[(n+i)*Z+e]=a[(t+i)*Z+e];a[(t+i)*Z+2]&268435456&&(this._extendedAttrs[n+i]=e._extendedAttrs[t+i])}else for(let i=0;i<r;i++){for(let e=0;e<Z;e++)this._data[(n+i)*Z+e]=a[(t+i)*Z+e];a[(t+i)*Z+2]&268435456&&(this._extendedAttrs[n+i]=e._extendedAttrs[t+i])}let o=Object.keys(e._combined);for(let r=0;r<o.length;r++){let i=parseInt(o[r],10);i>=t&&(this._combined[i-t+n]=e._combined[i])}}translateToString(e,t,n,r){t??=0,n??=this.length,e&&(n=Math.min(n,this.getTrimmedLength())),r&&(r.length=0);let i=``;for(;t<n;){let e=this._data[t*Z+0],n=e&2097151,a=e&2097152?this._combined[t]:n?Nt(n):Rt;if(i+=a,r)for(let e=0;e<a.length;++e)r.push(t);t+=e>>22||1}return r&&r.push(t),i}};function xs(e,t,n,r,i,a){let o=[];for(let s=0;s<e.length-1;s++){let c=s,l=e.get(++c);if(!l.isWrapped)continue;let u=[e.get(s)];for(;c<e.length&&l.isWrapped;)u.push(l),l=e.get(++c);if(!a&&r>=s&&r<c){s+=u.length-1;continue}let d=0,f=Ts(u,d,t),p=1,m=0;for(;p<u.length;){let e=Ts(u,p,t),r=e-m,a=n-f,o=Math.min(r,a);u[d].copyCellsFrom(u[p],m,f,o,!1),f+=o,f===n&&(d++,f=0),m+=o,m===e&&(p++,m=0),f===0&&d!==0&&u[d-1].getWidth(n-1)===2&&(u[d].copyCellsFrom(u[d-1],n-1,f++,1,!1),u[d-1].setCell(n-1,i))}u[d].replaceCells(f,n,i);let h=0;for(let e=u.length-1;e>0&&(e>d||u[e].getTrimmedLength()===0);e--)h++;h>0&&(o.push(s+u.length-h),o.push(h)),s+=u.length-1}return o}function Ss(e,t){let n=[],r=0,i=t[r],a=0;for(let o=0;o<e.length;o++)if(i===o){let n=t[++r];e.onDeleteEmitter.fire({index:o-a,amount:n}),o+=n-1,a+=n,i=t[++r]}else n.push(o);return{layout:n,countRemoved:a}}function Cs(e,t){let n=[];for(let r=0;r<t.length;r++)n.push(e.get(t[r]));for(let t=0;t<n.length;t++)e.set(t,n[t]);e.length=t.length}function ws(e,t,n){let r=[],i=e.map((n,r)=>Ts(e,r,t)).reduce((e,t)=>e+t),a=0,o=0,s=0;for(;s<i;){if(i-s<n){r.push(i-s);break}a+=n;let c=Ts(e,o,t);a>c&&(a-=c,o++);let l=e[o].getWidth(a-1)===2;l&&a--;let u=l?n-1:n;r.push(u),s+=u}return r}function Ts(e,t,n){if(t===e.length-1)return e[t].getTrimmedLength();let r=!e[t].hasContent(n-1)&&e[t].getWidth(n-1)===1,i=e[t+1].getWidth(0)===2;return r&&i?n-1:n}var Es=class e{constructor(t){this.line=t,this.isDisposed=!1,this._disposables=[],this._id=e._nextId++,this._onDispose=this.register(new K),this.onDispose=this._onDispose.event}get id(){return this._id}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),Mn(this._disposables),this._disposables.length=0)}register(e){return this._disposables.push(e),e}};Es._nextId=1;var Ds=Es,Os={},ks=Os.B;Os[0]={"`":`◆`,a:`▒`,b:`␉`,c:`␌`,d:`␍`,e:`␊`,f:`°`,g:`±`,h:`␤`,i:`␋`,j:`┘`,k:`┐`,l:`┌`,m:`└`,n:`┼`,o:`⎺`,p:`⎻`,q:`─`,r:`⎼`,s:`⎽`,t:`├`,u:`┤`,v:`┴`,w:`┬`,x:`│`,y:`≤`,z:`≥`,"{":`π`,"|":`≠`,"}":`£`,"~":`·`},Os.A={"#":`£`},Os.B=void 0,Os[4]={"#":`£`,"@":`¾`,"[":`ij`,"\\":`½`,"]":`|`,"{":`¨`,"|":`f`,"}":`¼`,"~":`´`},Os.C=Os[5]={"[":`Ä`,"\\":`Ö`,"]":`Å`,"^":`Ü`,"`":`é`,"{":`ä`,"|":`ö`,"}":`å`,"~":`ü`},Os.R={"#":`£`,"@":`à`,"[":`°`,"\\":`ç`,"]":`§`,"{":`é`,"|":`ù`,"}":`è`,"~":`¨`},Os.Q={"@":`à`,"[":`â`,"\\":`ç`,"]":`ê`,"^":`î`,"`":`ô`,"{":`é`,"|":`ù`,"}":`è`,"~":`û`},Os.K={"@":`§`,"[":`Ä`,"\\":`Ö`,"]":`Ü`,"{":`ä`,"|":`ö`,"}":`ü`,"~":`ß`},Os.Y={"#":`£`,"@":`§`,"[":`°`,"\\":`ç`,"]":`é`,"`":`ù`,"{":`à`,"|":`ò`,"}":`è`,"~":`ì`},Os.E=Os[6]={"@":`Ä`,"[":`Æ`,"\\":`Ø`,"]":`Å`,"^":`Ü`,"`":`ä`,"{":`æ`,"|":`ø`,"}":`å`,"~":`ü`},Os.Z={"#":`£`,"@":`§`,"[":`¡`,"\\":`Ñ`,"]":`¿`,"{":`°`,"|":`ñ`,"}":`ç`},Os.H=Os[7]={"@":`É`,"[":`Ä`,"\\":`Ö`,"]":`Å`,"^":`Ü`,"`":`é`,"{":`ä`,"|":`ö`,"}":`å`,"~":`ü`},Os[`=`]={"#":`ù`,"@":`à`,"[":`é`,"\\":`ç`,"]":`ê`,"^":`î`,_:`è`,"`":`ô`,"{":`ä`,"|":`ö`,"}":`ü`,"~":`û`};var As=4294967295,js=class{constructor(e,t,n){this._hasScrollback=e,this._optionsService=t,this._bufferService=n,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=_s.clone(),this.savedCharset=ks,this.markers=[],this._nullCell=Vt.fromCharData([0,Lt,1,0]),this._whitespaceCell=Vt.fromCharData([0,Rt,1,32]),this._isClearing=!1,this._memoryCleanupQueue=new ko,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new gs(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg,this._nullCell.extended=e.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new Bt),this._nullCell}getWhitespaceCell(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg,this._whitespaceCell.extended=e.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new Bt),this._whitespaceCell}getBlankLine(e,t){return new bs(this._bufferService.cols,this.getNullCell(e),t)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let e=this.ybase+this.y-this.ydisp;return e>=0&&e<this._rows}_getCorrectBufferLength(e){if(!this._hasScrollback)return e;let t=e+this._optionsService.rawOptions.scrollback;return t>As?As:t}fillViewportRows(e){if(this.lines.length===0){e===void 0&&(e=_s);let t=this._rows;for(;t--;)this.lines.push(this.getBlankLine(e))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new gs(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(e,t){let n=this.getNullCell(_s),r=0,i=this._getCorrectBufferLength(t);if(i>this.lines.maxLength&&(this.lines.maxLength=i),this.lines.length>0){if(this._cols<e)for(let t=0;t<this.lines.length;t++)r+=+this.lines.get(t).resize(e,n);let a=0;if(this._rows<t)for(let r=this._rows;r<t;r++)this.lines.length<t+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new bs(e,n)):this.ybase>0&&this.lines.length<=this.ybase+this.y+a+1?(this.ybase--,a++,this.ydisp>0&&this.ydisp--):this.lines.push(new bs(e,n)));else for(let e=this._rows;e>t;e--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(i<this.lines.maxLength){let e=this.lines.length-i;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=i}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),a&&(this.y+=a),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(let t=0;t<this.lines.length;t++)r+=+this.lines.get(t).resize(e,n);this._cols=e,this._rows=t,this._memoryCleanupQueue.clear(),r>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue(()=>this._batchedMemoryCleanup()))}_batchedMemoryCleanup(){let e=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,e=!1);let t=0;for(;this._memoryCleanupPosition<this.lines.length;)if(t+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),t>100)return!0;return e}get _isReflowEnabled(){let e=this._optionsService.rawOptions.windowsPty;return e&&e.buildNumber?this._hasScrollback&&e.backend===`conpty`&&e.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(e,t){this._cols!==e&&(e>this._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))}_reflowLarger(e,t){let n=this._optionsService.rawOptions.reflowCursorLine,r=xs(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(_s),n);if(r.length>0){let n=Ss(this.lines,r);Cs(this.lines,n.layout),this._reflowLargerAdjustViewport(e,t,n.countRemoved)}}_reflowLargerAdjustViewport(e,t,n){let r=this.getNullCell(_s),i=n;for(;i-->0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<t&&this.lines.push(new bs(e,r))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-n,0)}_reflowSmaller(e,t){let n=this._optionsService.rawOptions.reflowCursorLine,r=this.getNullCell(_s),i=[],a=0;for(let o=this.lines.length-1;o>=0;o--){let s=this.lines.get(o);if(!s||!s.isWrapped&&s.getTrimmedLength()<=e)continue;let c=[s];for(;s.isWrapped&&o>0;)s=this.lines.get(--o),c.unshift(s);if(!n){let e=this.ybase+this.y;if(e>=o&&e<o+c.length)continue}let l=c[c.length-1].getTrimmedLength(),u=ws(c,this._cols,e),d=u.length-c.length,f;f=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+d):Math.max(0,this.lines.length-this.lines.maxLength+d);let p=[];for(let e=0;e<d;e++){let e=this.getBlankLine(_s,!0);p.push(e)}p.length>0&&(i.push({start:o+c.length+a,newLines:p}),a+=p.length),c.push(...p);let m=u.length-1,h=u[m];h===0&&(m--,h=u[m]);let g=c.length-d-1,_=l;for(;g>=0;){let e=Math.min(_,h);if(c[m]===void 0)break;c[m].copyCellsFrom(c[g],_-e,h-e,e,!0),h-=e,h===0&&(m--,h=u[m]),_-=e,_===0&&(g--,_=Ts(c,Math.max(g,0),this._cols))}for(let t=0;t<c.length;t++)u[t]<e&&c[t].setCell(u[t],r);let v=d-f;for(;v-->0;)this.ybase===0?this.y<t-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+a)-t&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+d,this.ybase+t-1)}if(i.length>0){let e=[],t=[];for(let e=0;e<this.lines.length;e++)t.push(this.lines.get(e));let n=this.lines.length,r=n-1,o=0,s=i[o];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+a);let c=0;for(let l=Math.min(this.lines.maxLength-1,n+a-1);l>=0;l--)if(s&&s.start>r+c){for(let e=s.newLines.length-1;e>=0;e--)this.lines.set(l--,s.newLines[e]);l++,e.push({index:r+1,amount:s.newLines.length}),c+=s.newLines.length,s=i[++o]}else this.lines.set(l,t[r--]);let l=0;for(let t=e.length-1;t>=0;t--)e[t].index+=l,this.lines.onInsertEmitter.fire(e[t]),l+=e[t].amount;let u=Math.max(0,n+a-this.lines.maxLength);u>0&&this.lines.onTrimEmitter.fire(u)}}translateBufferLineToString(e,t,n=0,r){let i=this.lines.get(e);return i?i.translateToString(t,n,r):``}getWrappedRangeForLine(e){let t=e,n=e;for(;t>0&&this.lines.get(t).isWrapped;)t--;for(;n+1<this.lines.length&&this.lines.get(n+1).isWrapped;)n++;return{first:t,last:n}}setupTabStops(e){for(e==null?(this.tabs={},e=0):this.tabs[e]||(e=this.prevStop(e));e<this._cols;e+=this._optionsService.rawOptions.tabStopWidth)this.tabs[e]=!0}prevStop(e){for(e??=this.x;!this.tabs[--e]&&e>0;);return e>=this._cols?this._cols-1:e<0?0:e}nextStop(e){for(e??=this.x;!this.tabs[++e]&&e<this._cols;);return e>=this._cols?this._cols-1:e<0?0:e}clearMarkers(e){this._isClearing=!0;for(let t=0;t<this.markers.length;t++)this.markers[t].line===e&&(this.markers[t].dispose(),this.markers.splice(t--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let e=0;e<this.markers.length;e++)this.markers[e].dispose();this.markers.length=0,this._isClearing=!1}addMarker(e){let t=new Ds(e);return this.markers.push(t),t.register(this.lines.onTrim(e=>{t.line-=e,t.line<0&&t.dispose()})),t.register(this.lines.onInsert(e=>{t.line>=e.index&&(t.line+=e.amount)})),t.register(this.lines.onDelete(e=>{t.line>=e.index&&t.line<e.index+e.amount&&t.dispose(),t.line>e.index&&(t.line-=e.amount)})),t.register(t.onDispose(()=>this._removeMarker(t))),t}_removeMarker(e){this._isClearing||this.markers.splice(this.markers.indexOf(e),1)}},Ms=class extends W{constructor(e,t){super(),this._optionsService=e,this._bufferService=t,this._onBufferActivate=this._register(new K),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 js(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new js(!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(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),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(e,t){this._normal.resize(e,t),this._alt.resize(e,t),this.setupTabStops(e)}setupTabStops(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)}},Ns=2,Ps=1,Fs=class extends W{constructor(e){super(),this.isUserScrolling=!1,this._onResize=this._register(new K),this.onResize=this._onResize.event,this._onScroll=this._register(new K),this.onScroll=this._onScroll.event,this.cols=Math.max(e.rawOptions.cols||0,Ns),this.rows=Math.max(e.rawOptions.rows||0,Ps),this.buffers=this._register(new Ms(e,this)),this._register(this.buffers.onBufferActivate(e=>{this._onScroll.fire(e.activeBuffer.ydisp)}))}get buffer(){return this.buffers.active}resize(e,t){let n=this.cols!==e,r=this.rows!==t;this.cols=e,this.rows=t,this.buffers.resize(e,t),this._onResize.fire({cols:e,rows:t,colsChanged:n,rowsChanged:r})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(e,t=!1){let n=this.buffer,r;r=this._cachedBlankLine,(!r||r.length!==this.cols||r.getFg(0)!==e.fg||r.getBg(0)!==e.bg)&&(r=n.getBlankLine(e,t),this._cachedBlankLine=r),r.isWrapped=t;let i=n.ybase+n.scrollTop,a=n.ybase+n.scrollBottom;if(n.scrollTop===0){let e=n.lines.isFull;a===n.lines.length-1?e?n.lines.recycle().copyFrom(r):n.lines.push(r.clone()):n.lines.splice(a+1,0,r.clone()),e?this.isUserScrolling&&(n.ydisp=Math.max(n.ydisp-1,0)):(n.ybase++,this.isUserScrolling||n.ydisp++)}else{let e=a-i+1;n.lines.shiftElements(i+1,e-1,-1),n.lines.set(a,r.clone())}this.isUserScrolling||(n.ydisp=n.ybase),this._onScroll.fire(n.ydisp)}scrollLines(e,t){let n=this.buffer;if(e<0){if(n.ydisp===0)return;this.isUserScrolling=!0}else e+n.ydisp>=n.ybase&&(this.isUserScrolling=!1);let r=n.ydisp;n.ydisp=Math.max(Math.min(n.ydisp+e,n.ybase),0),r!==n.ydisp&&(t||this._onScroll.fire(n.ydisp))}};Fs=z([B(0,$t)],Fs);var Is={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:bo,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:` ()[]{}',"\``,altClickMovesCursor:!0,convertEol:!1,termName:`xterm`,cancelEvents:!1,overviewRuler:{}},Ls=[`normal`,`bold`,`100`,`200`,`300`,`400`,`500`,`600`,`700`,`800`,`900`],Rs=class extends W{constructor(e){super(),this._onOptionChange=this._register(new K),this.onOptionChange=this._onOptionChange.event;let t={...Is};for(let n in e)if(n in t)try{let r=e[n];t[n]=this._sanitizeAndValidateOption(n,r)}catch(e){console.error(e)}this.rawOptions=t,this.options={...t},this._setupOptions(),this._register(U(()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null}))}onSpecificOptionChange(e,t){return this.onOptionChange(n=>{n===e&&t(this.rawOptions[e])})}onMultipleOptionChange(e,t){return this.onOptionChange(n=>{e.indexOf(n)!==-1&&t()})}_setupOptions(){let e=e=>{if(!(e in Is))throw Error(`No option with key "${e}"`);return this.rawOptions[e]},t=(e,t)=>{if(!(e in Is))throw Error(`No option with key "${e}"`);t=this._sanitizeAndValidateOption(e,t),this.rawOptions[e]!==t&&(this.rawOptions[e]=t,this._onOptionChange.fire(e))};for(let n in this.rawOptions){let r={get:e.bind(this,n),set:t.bind(this,n)};Object.defineProperty(this.options,n,r)}}_sanitizeAndValidateOption(e,t){switch(e){case`cursorStyle`:if(t||=Is[e],!zs(t))throw Error(`"${t}" is not a valid value for ${e}`);break;case`wordSeparator`:t||=Is[e];break;case`fontWeight`:case`fontWeightBold`:if(typeof t==`number`&&1<=t&&t<=1e3)break;t=Ls.includes(t)?t:Is[e];break;case`cursorWidth`:t=Math.floor(t);case`lineHeight`:case`tabStopWidth`:if(t<1)throw Error(`${e} cannot be less than 1, value: ${t}`);break;case`minimumContrastRatio`:t=Math.max(1,Math.min(21,Math.round(t*10)/10));break;case`scrollback`:if(t=Math.min(t,4294967295),t<0)throw Error(`${e} cannot be less than 0, value: ${t}`);break;case`fastScrollSensitivity`:case`scrollSensitivity`:if(t<=0)throw Error(`${e} cannot be less than or equal to 0, value: ${t}`);break;case`rows`:case`cols`:if(!t&&t!==0)throw Error(`${e} must be numeric, value: ${t}`);break;case`windowsPty`:t??={}}return t}};function zs(e){return e===`block`||e===`underline`||e===`bar`}function Bs(e,t=5){if(typeof e!=`object`)return e;let n=Array.isArray(e)?[]:{};for(let r in e)n[r]=t<=1?e[r]:e[r]&&Bs(e[r],t-1);return n}var Vs=Object.freeze({insertMode:!1}),Hs=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,cursorBlink:void 0,cursorStyle:void 0,origin:!1,reverseWraparound:!1,sendFocus:!1,synchronizedOutput:!1,wraparound:!0}),Us=class extends W{constructor(e,t,n){super(),this._bufferService=e,this._logService=t,this._optionsService=n,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this._register(new K),this.onData=this._onData.event,this._onUserInput=this._register(new K),this.onUserInput=this._onUserInput.event,this._onBinary=this._register(new K),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this._register(new K),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=Bs(Vs),this.decPrivateModes=Bs(Hs)}reset(){this.modes=Bs(Vs),this.decPrivateModes=Bs(Hs)}triggerDataEvent(e,t=!1){if(this._optionsService.rawOptions.disableStdin)return;let n=this._bufferService.buffer;t&&this._optionsService.rawOptions.scrollOnUserInput&&n.ybase!==n.ydisp&&this._onRequestScrollToBottom.fire(),t&&this._onUserInput.fire(),this._logService.debug(`sending data "${e}"`),this._logService.trace(`sending data (codes)`,()=>e.split(``).map(e=>e.charCodeAt(0))),this._onData.fire(e)}triggerBinaryEvent(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${e}"`),this._logService.trace(`sending binary (codes)`,()=>e.split(``).map(e=>e.charCodeAt(0))),this._onBinary.fire(e))}};Us=z([B(0,qt),B(1,Qt),B(2,$t)],Us);var Ws={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:e=>e.button===4||e.action!==1?!1:(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)},VT200:{events:19,restrict:e=>e.action!==32},DRAG:{events:23,restrict:e=>e.action!==32||e.button!==3},ANY:{events:31,restrict:e=>!0}};function Gs(e,t){let n=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return e.button===4?(n|=64,n|=e.action):(n|=e.button&3,e.button&4&&(n|=64),e.button&8&&(n|=128),e.action===32?n|=32:e.action===0&&!t&&(n|=3)),n}var Ks=String.fromCharCode,qs={DEFAULT:e=>{let t=[Gs(e,!1)+32,e.col+32,e.row+32];return t[0]>255||t[1]>255||t[2]>255?``:`\x1B[M${Ks(t[0])}${Ks(t[1])}${Ks(t[2])}`},SGR:e=>{let t=e.action===0&&e.button!==4?`m`:`M`;return`\x1B[<${Gs(e,!0)};${e.col};${e.row}${t}`},SGR_PIXELS:e=>{let t=e.action===0&&e.button!==4?`m`:`M`;return`\x1B[<${Gs(e,!0)};${e.x};${e.y}${t}`}},Js=class extends W{constructor(e,t,n){super(),this._bufferService=e,this._coreService=t,this._optionsService=n,this._protocols={},this._encodings={},this._activeProtocol=``,this._activeEncoding=``,this._lastEvent=null,this._wheelPartialScroll=0,this._onProtocolChange=this._register(new K),this.onProtocolChange=this._onProtocolChange.event;for(let e of Object.keys(Ws))this.addProtocol(e,Ws[e]);for(let e of Object.keys(qs))this.addEncoding(e,qs[e]);this.reset()}addProtocol(e,t){this._protocols[e]=t}addEncoding(e,t){this._encodings[e]=t}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(e){if(!this._protocols[e])throw Error(`unknown protocol "${e}"`);this._activeProtocol=e,this._onProtocolChange.fire(this._protocols[e].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(e){if(!this._encodings[e])throw Error(`unknown encoding "${e}"`);this._activeEncoding=e}reset(){this.activeProtocol=`NONE`,this.activeEncoding=`DEFAULT`,this._lastEvent=null,this._wheelPartialScroll=0}consumeWheelEvent(e,t,n){if(e.deltaY===0||e.shiftKey||t===void 0||n===void 0)return 0;let r=t/n,i=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(i/=r+0,Math.abs(e.deltaY)<50&&(i*=.3),this._wheelPartialScroll+=i,i=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(i*=this._bufferService.rows),i}_applyScrollModifier(e,t){return t.altKey||t.ctrlKey||t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity}triggerMouseEvent(e){if(e.col<0||e.col>=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows||e.button===4&&e.action===32||e.button===3&&e.action!==32||e.button!==4&&(e.action===2||e.action===3)||(e.col++,e.row++,e.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,e,this._activeEncoding===`SGR_PIXELS`))||!this._protocols[this._activeProtocol].restrict(e))return!1;let t=this._encodings[this._activeEncoding](e);return t&&(this._activeEncoding===`DEFAULT`?this._coreService.triggerBinaryEvent(t):this._coreService.triggerDataEvent(t,!0)),this._lastEvent=e,!0}explainEvents(e){return{down:!!(e&1),up:!!(e&2),drag:!!(e&4),move:!!(e&8),wheel:!!(e&16)}}_equalEvents(e,t,n){if(n){if(e.x!==t.x||e.y!==t.y)return!1}else if(e.col!==t.col||e.row!==t.row)return!1;return e.button===t.button&&e.action===t.action&&e.ctrl===t.ctrl&&e.alt===t.alt&&e.shift===t.shift}};Js=z([B(0,qt),B(1,Yt),B(2,$t)],Js);var Ys=[[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]],Xs=[[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]],Zs;function Qs(e,t){let n=0,r=t.length-1,i;if(e<t[0][0]||e>t[r][1])return!1;for(;r>=n;)if(i=n+r>>1,e>t[i][1])n=i+1;else if(e<t[i][0])r=i-1;else return!0;return!1}var $s=class{constructor(){if(this.version=`6`,!Zs){Zs=new Uint8Array(65536),Zs.fill(1),Zs[0]=0,Zs.fill(0,1,32),Zs.fill(0,127,160),Zs.fill(2,4352,4448),Zs[9001]=2,Zs[9002]=2,Zs.fill(2,11904,42192),Zs[12351]=1,Zs.fill(2,44032,55204),Zs.fill(2,63744,64256),Zs.fill(2,65040,65050),Zs.fill(2,65072,65136),Zs.fill(2,65280,65377),Zs.fill(2,65504,65511);for(let e=0;e<Ys.length;++e)Zs.fill(0,Ys[e][0],Ys[e][1]+1)}}wcwidth(e){return e<32?0:e<127?1:e<65536?Zs[e]:Qs(e,Xs)?0:e>=131072&&e<=196605||e>=196608&&e<=262141?2:1}charProperties(e,t){let n=this.wcwidth(e),r=n===0&&t!==0;if(r){let e=ec.extractWidth(t);e===0?r=!1:e>n&&(n=e)}return ec.createPropertyValue(0,n,r)}},ec=class e{constructor(){this._providers=Object.create(null),this._active=``,this._onChange=new K,this.onChange=this._onChange.event;let e=new $s;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return!!(e&1)}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,t,n=!1){return(e&16777215)<<3|(t&3)<<1|!!n}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(t){let n=0,r=0,i=t.length;for(let a=0;a<i;++a){let o=t.charCodeAt(a);if(55296<=o&&o<=56319){if(++a>=i)return n+this.wcwidth(o);let e=t.charCodeAt(a);56320<=e&&e<=57343?o=(o-55296)*1024+e-56320+65536:n+=this.wcwidth(e)}let s=this.charProperties(o,r),c=e.extractWidth(s);e.extractShouldJoin(s)&&(c-=e.extractWidth(r)),n+=c,r=s}return n}charProperties(e,t){return this._activeProvider.charProperties(e,t)}},tc=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(e){this.glevel=e,this.charset=this._charsets[e]}setgCharset(e,t){this._charsets[e]=t,this.glevel===e&&(this.charset=t)}};function nc(e){let t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1)?.get(e.cols-1),n=e.buffer.lines.get(e.buffer.ybase+e.buffer.y);n&&t&&(n.isWrapped=t[3]!==0&&t[3]!==32)}var rc=2147483647,ic=256,ac=class e{constructor(e=32,t=32){if(this.maxLength=e,this.maxSubParamsLength=t,t>ic)throw Error(`maxSubParamsLength must not be greater than 256`);this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}static fromArray(t){let n=new e;if(!t.length)return n;for(let e=+!!Array.isArray(t[0]);e<t.length;++e){let r=t[e];if(Array.isArray(r))for(let e=0;e<r.length;++e)n.addSubParam(r[e]);else n.addParam(r)}return n}clone(){let t=new e(this.maxLength,this.maxSubParamsLength);return t.params.set(this.params),t.length=this.length,t._subParams.set(this._subParams),t._subParamsLength=this._subParamsLength,t._subParamsIdx.set(this._subParamsIdx),t._rejectDigits=this._rejectDigits,t._rejectSubDigits=this._rejectSubDigits,t._digitIsSub=this._digitIsSub,t}toArray(){let e=[];for(let t=0;t<this.length;++t){e.push(this.params[t]);let n=this._subParamsIdx[t]>>8,r=this._subParamsIdx[t]&255;r-n>0&&e.push(Array.prototype.slice.call(this._subParams,n,r))}return e}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(e){if(this._digitIsSub=!1,this.length>=this.maxLength){this._rejectDigits=!0;return}if(e<-1)throw Error(`values lesser than -1 are not allowed`);this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>rc?rc:e}addSubParam(e){if(this._digitIsSub=!0,this.length){if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength){this._rejectSubDigits=!0;return}if(e<-1)throw Error(`values lesser than -1 are not allowed`);this._subParams[this._subParamsLength++]=e>rc?rc:e,this._subParamsIdx[this.length-1]++}}hasSubParams(e){return(this._subParamsIdx[e]&255)-(this._subParamsIdx[e]>>8)>0}getSubParams(e){let t=this._subParamsIdx[e]>>8,n=this._subParamsIdx[e]&255;return n-t>0?this._subParams.subarray(t,n):null}getSubParamsAll(){let e={};for(let t=0;t<this.length;++t){let n=this._subParamsIdx[t]>>8,r=this._subParamsIdx[t]&255;r-n>0&&(e[t]=this._subParams.slice(n,r))}return e}addDigit(e){let t;if(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let n=this._digitIsSub?this._subParams:this.params,r=n[t-1];n[t-1]=~r?Math.min(r*10+e,rc):e}},oc=[],sc=class{constructor(){this._state=0,this._active=oc,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(e,t){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(t),{dispose:()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=oc}reset(){if(this._state===2)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=oc,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||oc,!this._active.length)this._handlerFb(this._id,`START`);else for(let e=this._active.length-1;e>=0;e--)this._active[e].start()}_put(e,t,n){if(!this._active.length)this._handlerFb(this._id,`PUT`,Pt(e,t,n));else for(let r=this._active.length-1;r>=0;r--)this._active[r].put(e,t,n)}start(){this.reset(),this._state=1}put(e,t,n){if(this._state!==3){if(this._state===1)for(;t<n;){let n=e[t++];if(n===59){this._state=2,this._start();break}if(n<48||57<n){this._state=3;return}this._id===-1&&(this._id=0),this._id=this._id*10+n-48}this._state===2&&n-t>0&&this._put(e,t,n)}}end(e,t=!0){if(this._state!==0){if(this._state!==3){if(this._state===1&&this._start(),!this._active.length)this._handlerFb(this._id,`END`,e);else{let n=!1,r=this._active.length-1,i=!1;if(this._stack.paused&&(r=this._stack.loopPosition-1,n=t,i=this._stack.fallThrough,this._stack.paused=!1),!i&&n===!1){for(;r>=0&&(n=this._active[r].end(e),n!==!0);r--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!1,n;r--}for(;r>=0;r--)if(n=this._active[r].end(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!0,n}}this._active=oc,this._id=-1,this._state=0}}},cc=class{constructor(e){this._handler=e,this._data=``,this._hitLimit=!1}start(){this._data=``,this._hitLimit=!1}put(e,t,n){this._hitLimit||(this._data+=Pt(e,t,n),this._data.length>1e7&&(this._data=``,this._hitLimit=!0))}end(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data),t instanceof Promise))return t.then(e=>(this._data=``,this._hitLimit=!1,e));return this._data=``,this._hitLimit=!1,t}},lc=[],uc=class{constructor(){this._handlers=Object.create(null),this._active=lc,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=lc}registerHandler(e,t){this._handlers[e]===void 0&&(this._handlers[e]=[]);let n=this._handlers[e];return n.push(t),{dispose:()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}reset(){if(this._active.length)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=lc,this._ident=0}hook(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||lc,!this._active.length)this._handlerFb(this._ident,`HOOK`,t);else for(let e=this._active.length-1;e>=0;e--)this._active[e].hook(t)}put(e,t,n){if(!this._active.length)this._handlerFb(this._ident,`PUT`,Pt(e,t,n));else for(let r=this._active.length-1;r>=0;r--)this._active[r].put(e,t,n)}unhook(e,t=!0){if(!this._active.length)this._handlerFb(this._ident,`UNHOOK`,e);else{let n=!1,r=this._active.length-1,i=!1;if(this._stack.paused&&(r=this._stack.loopPosition-1,n=t,i=this._stack.fallThrough,this._stack.paused=!1),!i&&n===!1){for(;r>=0&&(n=this._active[r].unhook(e),n!==!0);r--)if(n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!1,n;r--}for(;r>=0;r--)if(n=this._active[r].unhook(!1),n instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=r,this._stack.fallThrough=!0,n}this._active=lc,this._ident=0}},dc=new ac;dc.addParam(0);var fc=class{constructor(e){this._handler=e,this._data=``,this._params=dc,this._hitLimit=!1}hook(e){this._params=e.length>1||e.params[0]?e.clone():dc,this._data=``,this._hitLimit=!1}put(e,t,n){this._hitLimit||(this._data+=Pt(e,t,n),this._data.length>1e7&&(this._data=``,this._hitLimit=!0))}unhook(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data,this._params),t instanceof Promise))return t.then(e=>(this._params=dc,this._data=``,this._hitLimit=!1,e));return this._params=dc,this._data=``,this._hitLimit=!1,t}},pc=class{constructor(e){this.table=new Uint8Array(e)}setDefault(e,t){this.table.fill(e<<4|t)}add(e,t,n,r){this.table[t<<8|e]=n<<4|r}addMany(e,t,n,r){for(let i=0;i<e.length;i++)this.table[t<<8|e[i]]=n<<4|r}},mc=160,hc=function(){let e=new pc(4095),t=Array.apply(null,Array(256)).map((e,t)=>t),n=(e,n)=>t.slice(e,n),r=n(32,127),i=n(0,24);i.push(25),i.push.apply(i,n(28,32));let a=n(0,14),o;for(o in e.setDefault(1,0),e.addMany(r,0,2,0),a)e.addMany([24,26,153,154],o,3,0),e.addMany(n(128,144),o,3,0),e.addMany(n(144,152),o,3,0),e.add(156,o,0,0),e.add(27,o,11,1),e.add(157,o,4,8),e.addMany([152,158,159],o,0,7),e.add(155,o,11,3),e.add(144,o,11,9);return e.addMany(i,0,3,0),e.addMany(i,1,3,1),e.add(127,1,0,1),e.addMany(i,8,0,8),e.addMany(i,3,3,3),e.add(127,3,0,3),e.addMany(i,4,3,4),e.add(127,4,0,4),e.addMany(i,6,3,6),e.addMany(i,5,3,5),e.add(127,5,0,5),e.addMany(i,2,3,2),e.add(127,2,0,2),e.add(93,1,4,8),e.addMany(r,8,5,8),e.add(127,8,5,8),e.addMany([156,27,24,26,7],8,6,0),e.addMany(n(28,32),8,0,8),e.addMany([88,94,95],1,0,7),e.addMany(r,7,0,7),e.addMany(i,7,0,7),e.add(156,7,0,0),e.add(127,7,0,7),e.add(91,1,11,3),e.addMany(n(64,127),3,7,0),e.addMany(n(48,60),3,8,4),e.addMany([60,61,62,63],3,9,4),e.addMany(n(48,60),4,8,4),e.addMany(n(64,127),4,7,0),e.addMany([60,61,62,63],4,0,6),e.addMany(n(32,64),6,0,6),e.add(127,6,0,6),e.addMany(n(64,127),6,0,0),e.addMany(n(32,48),3,9,5),e.addMany(n(32,48),5,9,5),e.addMany(n(48,64),5,0,6),e.addMany(n(64,127),5,7,0),e.addMany(n(32,48),4,9,5),e.addMany(n(32,48),1,9,2),e.addMany(n(32,48),2,9,2),e.addMany(n(48,127),2,10,0),e.addMany(n(48,80),1,10,0),e.addMany(n(81,88),1,10,0),e.addMany([89,90,92],1,10,0),e.addMany(n(96,127),1,10,0),e.add(80,1,11,9),e.addMany(i,9,0,9),e.add(127,9,0,9),e.addMany(n(28,32),9,0,9),e.addMany(n(32,48),9,9,12),e.addMany(n(48,60),9,8,10),e.addMany([60,61,62,63],9,9,10),e.addMany(i,11,0,11),e.addMany(n(32,128),11,0,11),e.addMany(n(28,32),11,0,11),e.addMany(i,10,0,10),e.add(127,10,0,10),e.addMany(n(28,32),10,0,10),e.addMany(n(48,60),10,8,10),e.addMany([60,61,62,63],10,0,11),e.addMany(n(32,48),10,9,12),e.addMany(i,12,0,12),e.add(127,12,0,12),e.addMany(n(28,32),12,0,12),e.addMany(n(32,48),12,9,12),e.addMany(n(48,64),12,0,11),e.addMany(n(64,127),12,12,13),e.addMany(n(64,127),10,12,13),e.addMany(n(64,127),9,12,13),e.addMany(i,13,13,13),e.addMany(r,13,13,13),e.add(127,13,0,13),e.addMany([27,156,24,26],13,14,0),e.add(mc,0,2,0),e.add(mc,8,5,8),e.add(mc,6,0,6),e.add(mc,11,0,11),e.add(mc,13,13,13),e}(),gc=class extends W{constructor(e=hc){super(),this._transitions=e,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new ac,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(e,t,n)=>{},this._executeHandlerFb=e=>{},this._csiHandlerFb=(e,t)=>{},this._escHandlerFb=e=>{},this._errorHandlerFb=e=>e,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._register(U(()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)})),this._oscParser=this._register(new sc),this._dcsParser=this._register(new uc),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:`\\`},()=>!0)}_identifier(e,t=[64,126]){let n=0;if(e.prefix){if(e.prefix.length>1)throw Error(`only one byte as prefix supported`);if(n=e.prefix.charCodeAt(0),n&&60>n||n>63)throw Error(`prefix must be in range 0x3c .. 0x3f`)}if(e.intermediates){if(e.intermediates.length>2)throw Error(`only two bytes as intermediates are supported`);for(let t=0;t<e.intermediates.length;++t){let r=e.intermediates.charCodeAt(t);if(32>r||r>47)throw Error(`intermediate must be in range 0x20 .. 0x2f`);n<<=8,n|=r}}if(e.final.length!==1)throw Error(`final must be a single byte`);let r=e.final.charCodeAt(0);if(t[0]>r||r>t[1])throw Error(`final must be in range ${t[0]} .. ${t[1]}`);return n<<=8,n|=r,n}identToString(e){let t=[];for(;e;)t.push(String.fromCharCode(e&255)),e>>=8;return t.reverse().join(``)}setPrintHandler(e){this._printHandler=e}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(e,t){let n=this._identifier(e,[48,126]);this._escHandlers[n]===void 0&&(this._escHandlers[n]=[]);let r=this._escHandlers[n];return r.push(t),{dispose:()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)}}}clearEscHandler(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]}setEscHandlerFallback(e){this._escHandlerFb=e}setExecuteHandler(e,t){this._executeHandlers[e.charCodeAt(0)]=t}clearExecuteHandler(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]}setExecuteHandlerFallback(e){this._executeHandlerFb=e}registerCsiHandler(e,t){let n=this._identifier(e);this._csiHandlers[n]===void 0&&(this._csiHandlers[n]=[]);let r=this._csiHandlers[n];return r.push(t),{dispose:()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)}}}clearCsiHandler(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]}setCsiHandlerFallback(e){this._csiHandlerFb=e}registerDcsHandler(e,t){return this._dcsParser.registerHandler(this._identifier(e),t)}clearDcsHandler(e){this._dcsParser.clearHandler(this._identifier(e))}setDcsHandlerFallback(e){this._dcsParser.setHandlerFallback(e)}registerOscHandler(e,t){return this._oscParser.registerHandler(e,t)}clearOscHandler(e){this._oscParser.clearHandler(e)}setOscHandlerFallback(e){this._oscParser.setHandlerFallback(e)}setErrorHandler(e){this._errorHandler=e}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(e,t,n,r,i){this._parseStack.state=e,this._parseStack.handlers=t,this._parseStack.handlerPos=n,this._parseStack.transition=r,this._parseStack.chunkPos=i}parse(e,t,n){let r=0,i=0,a=0,o;if(this._parseStack.state){if(this._parseStack.state===2)this._parseStack.state=0,a=this._parseStack.chunkPos+1;else{if(n===void 0||this._parseStack.state===1)throw this._parseStack.state=1,Error(`improper continuation due to previous async handler, giving up parsing`);let t=this._parseStack.handlers,i=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(n===!1&&i>-1){for(;i>=0&&(o=t[i](this._params),o!==!0);i--)if(o instanceof Promise)return this._parseStack.handlerPos=i,o}this._parseStack.handlers=[];break;case 4:if(n===!1&&i>-1){for(;i>=0&&(o=t[i](),o!==!0);i--)if(o instanceof Promise)return this._parseStack.handlerPos=i,o}this._parseStack.handlers=[];break;case 6:if(r=e[this._parseStack.chunkPos],o=this._dcsParser.unhook(r!==24&&r!==26,n),o)return o;r===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(r=e[this._parseStack.chunkPos],o=this._oscParser.end(r!==24&&r!==26,n),o)return o;r===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,a=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=this._parseStack.transition&15}}for(let n=a;n<t;++n){switch(r=e[n],i=this._transitions.table[this.currentState<<8|(r<160?r:mc)],i>>4){case 2:for(let i=n+1;;++i){if(i>=t||(r=e[i])<32||r>126&&r<mc){this._printHandler(e,n,i),n=i-1;break}if(++i>=t||(r=e[i])<32||r>126&&r<mc){this._printHandler(e,n,i),n=i-1;break}if(++i>=t||(r=e[i])<32||r>126&&r<mc){this._printHandler(e,n,i),n=i-1;break}if(++i>=t||(r=e[i])<32||r>126&&r<mc){this._printHandler(e,n,i),n=i-1;break}}break;case 3:this._executeHandlers[r]?this._executeHandlers[r]():this._executeHandlerFb(r),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:n,code:r,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let a=this._csiHandlers[this._collect<<8|r],s=a?a.length-1:-1;for(;s>=0&&(o=a[s](this._params),o!==!0);s--)if(o instanceof Promise)return this._preserveStack(3,a,s,i,n),o;s<0&&this._csiHandlerFb(this._collect<<8|r,this._params),this.precedingJoinState=0;break;case 8:do switch(r){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(r-48)}while(++n<t&&(r=e[n])>47&&r<60);n--;break;case 9:this._collect<<=8,this._collect|=r;break;case 10:let c=this._escHandlers[this._collect<<8|r],l=c?c.length-1:-1;for(;l>=0&&(o=c[l](),o!==!0);l--)if(o instanceof Promise)return this._preserveStack(4,c,l,i,n),o;l<0&&this._escHandlerFb(this._collect<<8|r),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|r,this._params);break;case 13:for(let i=n+1;;++i)if(i>=t||(r=e[i])===24||r===26||r===27||r>127&&r<mc){this._dcsParser.put(e,n,i),n=i-1;break}break;case 14:if(o=this._dcsParser.unhook(r!==24&&r!==26),o)return this._preserveStack(6,[],0,i,n),o;r===27&&(i|=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 i=n+1;;i++)if(i>=t||(r=e[i])<32||r>127&&r<mc){this._oscParser.put(e,n,i),n=i-1;break}break;case 6:if(o=this._oscParser.end(r!==24&&r!==26),o)return this._preserveStack(5,[],0,i,n),o;r===27&&(i|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=i&15}}},_c=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,vc=/^[\da-f]+$/;function yc(e){if(!e)return;let t=e.toLowerCase();if(t.indexOf(`rgb:`)===0){t=t.slice(4);let e=_c.exec(t);if(e){let t=e[1]?15:e[4]?255:e[7]?4095:65535;return[Math.round(parseInt(e[1]||e[4]||e[7]||e[10],16)/t*255),Math.round(parseInt(e[2]||e[5]||e[8]||e[11],16)/t*255),Math.round(parseInt(e[3]||e[6]||e[9]||e[12],16)/t*255)]}}else if(t.indexOf(`#`)===0&&(t=t.slice(1),vc.exec(t)&&[3,6,9,12].includes(t.length))){let e=t.length/3,n=[0,0,0];for(let r=0;r<3;++r){let i=parseInt(t.slice(e*r,e*r+e),16);n[r]=e===1?i<<4:e===2?i:e===3?i>>4:i>>8}return n}}function bc(e,t){let n=e.toString(16),r=n.length<2?`0`+n:n;switch(t){case 4:return n[0];case 8:return r;case 12:return(r+r).slice(0,3);default:return r+r}}function xc(e,t=16){let[n,r,i]=e;return`rgb:${bc(n,t)}/${bc(r,t)}/${bc(i,t)}`}var Sc={"(":0,")":1,"*":2,"+":3,"-":1,".":2},Cc=131072,wc=10;function Tc(e,t){if(e>24)return t.setWinLines||!1;switch(e){case 1:return!!t.restoreWin;case 2:return!!t.minimizeWin;case 3:return!!t.setWinPosition;case 4:return!!t.setWinSizePixels;case 5:return!!t.raiseWin;case 6:return!!t.lowerWin;case 7:return!!t.refreshWin;case 8:return!!t.setWinSizeChars;case 9:return!!t.maximizeWin;case 10:return!!t.fullscreenWin;case 11:return!!t.getWinState;case 13:return!!t.getWinPosition;case 14:return!!t.getWinSizePixels;case 15:return!!t.getScreenSizePixels;case 16:return!!t.getCellSizePixels;case 18:return!!t.getWinSizeChars;case 19:return!!t.getScreenSizeChars;case 20:return!!t.getIconTitle;case 21:return!!t.getWinTitle;case 22:return!!t.pushTitle;case 23:return!!t.popTitle;case 24:return!!t.setWinLines}return!1}var Ec=5e3,Dc=0,Oc=class extends W{constructor(e,t,n,r,i,a,o,s,c=new gc){super(),this._bufferService=e,this._charsetService=t,this._coreService=n,this._logService=r,this._optionsService=i,this._oscLinkService=a,this._coreMouseService=o,this._unicodeService=s,this._parser=c,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new Ft,this._utf8Decoder=new It,this._windowTitle=``,this._iconName=``,this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=_s.clone(),this._eraseAttrDataInternal=_s.clone(),this._onRequestBell=this._register(new K),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this._register(new K),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this._register(new K),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this._register(new K),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this._register(new K),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this._register(new K),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this._register(new K),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this._register(new K),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this._register(new K),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this._register(new K),this.onLineFeed=this._onLineFeed.event,this._onScroll=this._register(new K),this.onScroll=this._onScroll.event,this._onTitleChange=this._register(new K),this.onTitleChange=this._onTitleChange.event,this._onColor=this._register(new K),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 kc(this._bufferService),this._activeBuffer=this._bufferService.buffer,this._register(this._bufferService.buffers.onBufferActivate(e=>this._activeBuffer=e.activeBuffer)),this._parser.setCsiHandlerFallback((e,t)=>{this._logService.debug(`Unknown CSI code: `,{identifier:this._parser.identToString(e),params:t.toArray()})}),this._parser.setEscHandlerFallback(e=>{this._logService.debug(`Unknown ESC code: `,{identifier:this._parser.identToString(e)})}),this._parser.setExecuteHandlerFallback(e=>{this._logService.debug(`Unknown EXECUTE code: `,{code:e})}),this._parser.setOscHandlerFallback((e,t,n)=>{this._logService.debug(`Unknown OSC code: `,{identifier:e,action:t,data:n})}),this._parser.setDcsHandlerFallback((e,t,n)=>{t===`HOOK`&&(n=n.toArray()),this._logService.debug(`Unknown DCS code: `,{identifier:this._parser.identToString(e),action:t,payload:n})}),this._parser.setPrintHandler((e,t,n)=>this.print(e,t,n)),this._parser.registerCsiHandler({final:`@`},e=>this.insertChars(e)),this._parser.registerCsiHandler({intermediates:` `,final:`@`},e=>this.scrollLeft(e)),this._parser.registerCsiHandler({final:`A`},e=>this.cursorUp(e)),this._parser.registerCsiHandler({intermediates:` `,final:`A`},e=>this.scrollRight(e)),this._parser.registerCsiHandler({final:`B`},e=>this.cursorDown(e)),this._parser.registerCsiHandler({final:`C`},e=>this.cursorForward(e)),this._parser.registerCsiHandler({final:`D`},e=>this.cursorBackward(e)),this._parser.registerCsiHandler({final:`E`},e=>this.cursorNextLine(e)),this._parser.registerCsiHandler({final:`F`},e=>this.cursorPrecedingLine(e)),this._parser.registerCsiHandler({final:`G`},e=>this.cursorCharAbsolute(e)),this._parser.registerCsiHandler({final:`H`},e=>this.cursorPosition(e)),this._parser.registerCsiHandler({final:`I`},e=>this.cursorForwardTab(e)),this._parser.registerCsiHandler({final:`J`},e=>this.eraseInDisplay(e,!1)),this._parser.registerCsiHandler({prefix:`?`,final:`J`},e=>this.eraseInDisplay(e,!0)),this._parser.registerCsiHandler({final:`K`},e=>this.eraseInLine(e,!1)),this._parser.registerCsiHandler({prefix:`?`,final:`K`},e=>this.eraseInLine(e,!0)),this._parser.registerCsiHandler({final:`L`},e=>this.insertLines(e)),this._parser.registerCsiHandler({final:`M`},e=>this.deleteLines(e)),this._parser.registerCsiHandler({final:`P`},e=>this.deleteChars(e)),this._parser.registerCsiHandler({final:`S`},e=>this.scrollUp(e)),this._parser.registerCsiHandler({final:`T`},e=>this.scrollDown(e)),this._parser.registerCsiHandler({final:`X`},e=>this.eraseChars(e)),this._parser.registerCsiHandler({final:`Z`},e=>this.cursorBackwardTab(e)),this._parser.registerCsiHandler({final:"`"},e=>this.charPosAbsolute(e)),this._parser.registerCsiHandler({final:`a`},e=>this.hPositionRelative(e)),this._parser.registerCsiHandler({final:`b`},e=>this.repeatPrecedingCharacter(e)),this._parser.registerCsiHandler({final:`c`},e=>this.sendDeviceAttributesPrimary(e)),this._parser.registerCsiHandler({prefix:`>`,final:`c`},e=>this.sendDeviceAttributesSecondary(e)),this._parser.registerCsiHandler({final:`d`},e=>this.linePosAbsolute(e)),this._parser.registerCsiHandler({final:`e`},e=>this.vPositionRelative(e)),this._parser.registerCsiHandler({final:`f`},e=>this.hVPosition(e)),this._parser.registerCsiHandler({final:`g`},e=>this.tabClear(e)),this._parser.registerCsiHandler({final:`h`},e=>this.setMode(e)),this._parser.registerCsiHandler({prefix:`?`,final:`h`},e=>this.setModePrivate(e)),this._parser.registerCsiHandler({final:`l`},e=>this.resetMode(e)),this._parser.registerCsiHandler({prefix:`?`,final:`l`},e=>this.resetModePrivate(e)),this._parser.registerCsiHandler({final:`m`},e=>this.charAttributes(e)),this._parser.registerCsiHandler({final:`n`},e=>this.deviceStatus(e)),this._parser.registerCsiHandler({prefix:`?`,final:`n`},e=>this.deviceStatusPrivate(e)),this._parser.registerCsiHandler({intermediates:`!`,final:`p`},e=>this.softReset(e)),this._parser.registerCsiHandler({intermediates:` `,final:`q`},e=>this.setCursorStyle(e)),this._parser.registerCsiHandler({final:`r`},e=>this.setScrollRegion(e)),this._parser.registerCsiHandler({final:`s`},e=>this.saveCursor(e)),this._parser.registerCsiHandler({final:`t`},e=>this.windowOptions(e)),this._parser.registerCsiHandler({final:`u`},e=>this.restoreCursor(e)),this._parser.registerCsiHandler({intermediates:`'`,final:`}`},e=>this.insertColumns(e)),this._parser.registerCsiHandler({intermediates:`'`,final:`~`},e=>this.deleteColumns(e)),this._parser.registerCsiHandler({intermediates:`"`,final:`q`},e=>this.selectProtected(e)),this._parser.registerCsiHandler({intermediates:`$`,final:`p`},e=>this.requestMode(e,!0)),this._parser.registerCsiHandler({prefix:`?`,intermediates:`$`,final:`p`},e=>this.requestMode(e,!1)),this._parser.setExecuteHandler(J.BEL,()=>this.bell()),this._parser.setExecuteHandler(J.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(J.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(J.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(J.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(J.BS,()=>this.backspace()),this._parser.setExecuteHandler(J.HT,()=>this.tab()),this._parser.setExecuteHandler(J.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(J.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(ba.IND,()=>this.index()),this._parser.setExecuteHandler(ba.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(ba.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new cc(e=>(this.setTitle(e),this.setIconName(e),!0))),this._parser.registerOscHandler(1,new cc(e=>this.setIconName(e))),this._parser.registerOscHandler(2,new cc(e=>this.setTitle(e))),this._parser.registerOscHandler(4,new cc(e=>this.setOrReportIndexedColor(e))),this._parser.registerOscHandler(8,new cc(e=>this.setHyperlink(e))),this._parser.registerOscHandler(10,new cc(e=>this.setOrReportFgColor(e))),this._parser.registerOscHandler(11,new cc(e=>this.setOrReportBgColor(e))),this._parser.registerOscHandler(12,new cc(e=>this.setOrReportCursorColor(e))),this._parser.registerOscHandler(104,new cc(e=>this.restoreIndexedColor(e))),this._parser.registerOscHandler(110,new cc(e=>this.restoreFgColor(e))),this._parser.registerOscHandler(111,new cc(e=>this.restoreBgColor(e))),this._parser.registerOscHandler(112,new cc(e=>this.restoreCursorColor(e))),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 e in Os)this._parser.registerEscHandler({intermediates:`(`,final:e},()=>this.selectCharset(`(`+e)),this._parser.registerEscHandler({intermediates:`)`,final:e},()=>this.selectCharset(`)`+e)),this._parser.registerEscHandler({intermediates:`*`,final:e},()=>this.selectCharset(`*`+e)),this._parser.registerEscHandler({intermediates:`+`,final:e},()=>this.selectCharset(`+`+e)),this._parser.registerEscHandler({intermediates:`-`,final:e},()=>this.selectCharset(`-`+e)),this._parser.registerEscHandler({intermediates:`.`,final:e},()=>this.selectCharset(`.`+e)),this._parser.registerEscHandler({intermediates:`/`,final:e},()=>this.selectCharset(`/`+e));this._parser.registerEscHandler({intermediates:`#`,final:`8`},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(e=>(this._logService.error(`Parsing error: `,e),e)),this._parser.registerDcsHandler({intermediates:`$`,final:`q`},new fc((e,t)=>this.requestStatusString(e,t)))}getAttrData(){return this._curAttrData}_preserveStack(e,t,n,r){this._parseStack.paused=!0,this._parseStack.cursorStartX=e,this._parseStack.cursorStartY=t,this._parseStack.decodedLength=n,this._parseStack.position=r}_logSlowResolvingAsync(e){this._logService.logLevel<=3&&Promise.race([e,new Promise((e,t)=>setTimeout(()=>t(`#SLOW_TIMEOUT`),Ec))]).catch(e=>{if(e!==`#SLOW_TIMEOUT`)throw e;console.warn(`async parser handler taking longer than ${Ec} ms`)})}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(e,t){let n,r=this._activeBuffer.x,i=this._activeBuffer.y,a=0,o=this._parseStack.paused;if(o){if(n=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,t))return this._logSlowResolvingAsync(n),n;r=this._parseStack.cursorStartX,i=this._parseStack.cursorStartY,this._parseStack.paused=!1,e.length>Cc&&(a=this._parseStack.position+Cc)}if(this._logService.logLevel<=1&&this._logService.debug(`parsing data ${typeof e==`string`?` "${e}"`:` "${Array.prototype.map.call(e,e=>String.fromCharCode(e)).join(``)}"`}`),this._logService.logLevel===0&&this._logService.trace(`parsing data (codes)`,typeof e==`string`?e.split(``).map(e=>e.charCodeAt(0)):e),this._parseBuffer.length<e.length&&this._parseBuffer.length<Cc&&(this._parseBuffer=new Uint32Array(Math.min(e.length,Cc))),o||this._dirtyRowTracker.clearRange(),e.length>Cc)for(let t=a;t<e.length;t+=Cc){let a=t+Cc<e.length?t+Cc:e.length,o=typeof e==`string`?this._stringDecoder.decode(e.substring(t,a),this._parseBuffer):this._utf8Decoder.decode(e.subarray(t,a),this._parseBuffer);if(n=this._parser.parse(this._parseBuffer,o))return this._preserveStack(r,i,o,t),this._logSlowResolvingAsync(n),n}else if(!o){let t=typeof e==`string`?this._stringDecoder.decode(e,this._parseBuffer):this._utf8Decoder.decode(e,this._parseBuffer);if(n=this._parser.parse(this._parseBuffer,t))return this._preserveStack(r,i,t,0),this._logSlowResolvingAsync(n),n}(this._activeBuffer.x!==r||this._activeBuffer.y!==i)&&this._onCursorMove.fire();let s=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),c=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);c<this._bufferService.rows&&this._onRequestRefreshRows.fire({start:Math.min(c,this._bufferService.rows-1),end:Math.min(s,this._bufferService.rows-1)})}print(e,t,n){let r,i,a=this._charsetService.charset,o=this._optionsService.rawOptions.screenReaderMode,s=this._bufferService.cols,c=this._coreService.decPrivateModes.wraparound,l=this._coreService.modes.insertMode,u=this._curAttrData,d=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&n-t>0&&d.getWidth(this._activeBuffer.x-1)===2&&d.setCellFromCodepoint(this._activeBuffer.x-1,0,1,u);let f=this._parser.precedingJoinState;for(let p=t;p<n;++p){if(r=e[p],r<127&&a){let e=a[String.fromCharCode(r)];e&&(r=e.charCodeAt(0))}let t=this._unicodeService.charProperties(r,f);i=ec.extractWidth(t);let n=ec.extractShouldJoin(t),m=n?ec.extractWidth(f):0;if(f=t,o&&this._onA11yChar.fire(Nt(r)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+i-m>s){if(c){let e=d,t=this._activeBuffer.x-m;for(this._activeBuffer.x=m,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),d=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),m>0&&d instanceof bs&&d.copyCellsFrom(e,t,0,m,!1);t<s;)e.setCellFromCodepoint(t++,0,1,u)}else if(this._activeBuffer.x=s-1,i===2)continue}if(n&&this._activeBuffer.x){let e=d.getWidth(this._activeBuffer.x-1)?1:2;d.addCodepointToCell(this._activeBuffer.x-e,r,i);for(let e=i-m;--e>=0;)d.setCellFromCodepoint(this._activeBuffer.x++,0,0,u);continue}if(l&&(d.insertCells(this._activeBuffer.x,i-m,this._activeBuffer.getNullCell(u)),d.getWidth(s-1)===2&&d.setCellFromCodepoint(s-1,0,1,u)),d.setCellFromCodepoint(this._activeBuffer.x++,r,i,u),i>0)for(;--i;)d.setCellFromCodepoint(this._activeBuffer.x++,0,0,u)}this._parser.precedingJoinState=f,this._activeBuffer.x<s&&n-t>0&&d.getWidth(this._activeBuffer.x)===0&&!d.hasContent(this._activeBuffer.x)&&d.setCellFromCodepoint(this._activeBuffer.x,0,1,u),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(e,t){return e.final===`t`&&!e.prefix&&!e.intermediates?this._parser.registerCsiHandler(e,e=>!Tc(e.params[0],this._optionsService.rawOptions.windowOptions)||t(e)):this._parser.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._parser.registerDcsHandler(e,new fc(t))}registerEscHandler(e,t){return this._parser.registerEscHandler(e,t)}registerOscHandler(e,t){return this._parser.registerOscHandler(e,new cc(t))}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 e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);e.hasWidth(this._activeBuffer.x)&&!e.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let e=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-e),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(e=this._bufferService.cols-1){this._activeBuffer.x=Math.min(e,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(e,t){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=e,this._activeBuffer.y=this._activeBuffer.scrollTop+t):(this._activeBuffer.x=e,this._activeBuffer.y=t),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(e,t){this._restrictCursor(),this._setCursor(this._activeBuffer.x+e,this._activeBuffer.y+t)}cursorUp(e){let t=this._activeBuffer.y-this._activeBuffer.scrollTop;return t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1)),!0}cursorDown(e){let t=this._activeBuffer.scrollBottom-this._activeBuffer.y;return t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1),!0}cursorForward(e){return this._moveCursor(e.params[0]||1,0),!0}cursorBackward(e){return this._moveCursor(-(e.params[0]||1),0),!0}cursorNextLine(e){return this.cursorDown(e),this._activeBuffer.x=0,!0}cursorPrecedingLine(e){return this.cursorUp(e),this._activeBuffer.x=0,!0}cursorCharAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(e){return this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1),!0}charPosAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(e){return this._moveCursor(e.params[0]||1,0),!0}linePosAbsolute(e){return this._setCursor(this._activeBuffer.x,(e.params[0]||1)-1),!0}vPositionRelative(e){return this._moveCursor(0,e.params[0]||1),!0}hVPosition(e){return this.cursorPosition(e),!0}tabClear(e){let t=e.params[0];return t===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:t===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(e){let t=e.params[0];return t===1&&(this._curAttrData.bg|=536870912),(t===2||t===0)&&(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(e,t,n,r=!1,i=!1){let a=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);a.replaceCells(t,n,this._activeBuffer.getNullCell(this._eraseAttrData()),i),r&&(a.isWrapped=!1)}_resetBufferLine(e,t=!1){let n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n&&(n.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),t),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+e),n.isWrapped=!1)}eraseInDisplay(e,t=!1){this._restrictCursor(this._bufferService.cols);let n;switch(e.params[0]){case 0:for(n=this._activeBuffer.y,this._dirtyRowTracker.markDirty(n),this._eraseInBufferLine(n++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,t);n<this._bufferService.rows;n++)this._resetBufferLine(n,t);this._dirtyRowTracker.markDirty(n);break;case 1:for(n=this._activeBuffer.y,this._dirtyRowTracker.markDirty(n),this._eraseInBufferLine(n,0,this._activeBuffer.x+1,!0,t),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(n+1).isWrapped=!1);n--;)this._resetBufferLine(n,t);this._dirtyRowTracker.markDirty(0);break;case 2:if(this._optionsService.rawOptions.scrollOnEraseInDisplay){for(n=this._bufferService.rows,this._dirtyRowTracker.markRangeDirty(0,n-1);n--&&!this._activeBuffer.lines.get(this._activeBuffer.ybase+n)?.getTrimmedLength(););for(;n>=0;n--)this._bufferService.scroll(this._eraseAttrData())}else{for(n=this._bufferService.rows,this._dirtyRowTracker.markDirty(n-1);n--;)this._resetBufferLine(n,t);this._dirtyRowTracker.markDirty(0)}break;case 3:let e=this._activeBuffer.lines.length-this._bufferService.rows;e>0&&(this._activeBuffer.lines.trimStart(e),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-e,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-e,0),this._onScroll.fire(0))}return!0}eraseInLine(e,t=!1){switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,t);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,t);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,t)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(e){this._restrictCursor();let t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let n=this._activeBuffer.ybase+this._activeBuffer.y,r=this._bufferService.rows-1-this._activeBuffer.scrollBottom,i=this._bufferService.rows-1+this._activeBuffer.ybase-r+1;for(;t--;)this._activeBuffer.lines.splice(i-1,1),this._activeBuffer.lines.splice(n,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(e){this._restrictCursor();let t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let n=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;t--;)this._activeBuffer.lines.splice(n,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(e){this._restrictCursor();let t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.insertCells(this._activeBuffer.x,e.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(e){this._restrictCursor();let t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.deleteCells(this._activeBuffer.x,e.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(e){let t=e.params[0]||1;for(;t--;)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(e){let t=e.params[0]||1;for(;t--;)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));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let t=e.params[0]||1;for(let e=this._activeBuffer.scrollTop;e<=this._activeBuffer.scrollBottom;++e){let n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.deleteCells(0,t,this._activeBuffer.getNullCell(this._eraseAttrData())),n.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let t=e.params[0]||1;for(let e=this._activeBuffer.scrollTop;e<=this._activeBuffer.scrollBottom;++e){let n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.insertCells(0,t,this._activeBuffer.getNullCell(this._eraseAttrData())),n.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let t=e.params[0]||1;for(let e=this._activeBuffer.scrollTop;e<=this._activeBuffer.scrollBottom;++e){let n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.insertCells(this._activeBuffer.x,t,this._activeBuffer.getNullCell(this._eraseAttrData())),n.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let t=e.params[0]||1;for(let e=this._activeBuffer.scrollTop;e<=this._activeBuffer.scrollBottom;++e){let n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.deleteCells(this._activeBuffer.x,t,this._activeBuffer.getNullCell(this._eraseAttrData())),n.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(e){this._restrictCursor();let t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(e.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(e){let t=this._parser.precedingJoinState;if(!t)return!0;let n=e.params[0]||1,r=ec.extractWidth(t),i=this._activeBuffer.x-r,a=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(i),o=new Uint32Array(a.length*n),s=0;for(let e=0;e<a.length;){let t=a.codePointAt(e)||0;o[s++]=t,e+=t>65535?2:1}let c=s;for(let e=1;e<n;++e)o.copyWithin(c,0,s),c+=s;return this.print(o,0,c),!0}sendDeviceAttributesPrimary(e){return e.params[0]>0||(this._is(`xterm`)||this._is(`rxvt-unicode`)||this._is(`screen`)?this._coreService.triggerDataEvent(J.ESC+`[?1;2c`):this._is(`linux`)&&this._coreService.triggerDataEvent(J.ESC+`[?6c`)),!0}sendDeviceAttributesSecondary(e){return e.params[0]>0||(this._is(`xterm`)?this._coreService.triggerDataEvent(J.ESC+`[>0;276;0c`):this._is(`rxvt-unicode`)?this._coreService.triggerDataEvent(J.ESC+`[>85;95;0c`):this._is(`linux`)?this._coreService.triggerDataEvent(e.params[0]+`c`):this._is(`screen`)&&this._coreService.triggerDataEvent(J.ESC+`[>83;40003;0c`)),!0}_is(e){return(this._optionsService.rawOptions.termName+``).indexOf(e)===0}setMode(e){for(let t=0;t<e.length;t++)switch(e.params[t]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0;break}return!0}setModePrivate(e){for(let t=0;t<e.length;t++)switch(e.params[t]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,ks),this._charsetService.setgCharset(1,ks),this._charsetService.setgCharset(2,ks),this._charsetService.setgCharset(3,ks);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;break}return!0}resetMode(e){for(let t=0;t<e.length;t++)switch(e.params[t]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1;break}return!0}resetModePrivate(e){for(let t=0;t<e.length;t++)switch(e.params[t]){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:this._coreMouseService.activeEncoding=`DEFAULT`;break;case 1015:this._logService.debug(`DECRST 1015 not supported (see #2507)`);break;case 1016:this._coreMouseService.activeEncoding=`DEFAULT`;break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),e.params[t]===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);break}return!0}requestMode(e,t){let n;(e=>(e[e.NOT_RECOGNIZED=0]=`NOT_RECOGNIZED`,e[e.SET=1]=`SET`,e[e.RESET=2]=`RESET`,e[e.PERMANENTLY_SET=3]=`PERMANENTLY_SET`,e[e.PERMANENTLY_RESET=4]=`PERMANENTLY_RESET`))(n||={});let r=this._coreService.decPrivateModes,{activeProtocol:i,activeEncoding:a}=this._coreMouseService,o=this._coreService,{buffers:s,cols:c}=this._bufferService,{active:l,alt:u}=s,d=this._optionsService.rawOptions,f=(e,n)=>(o.triggerDataEvent(`${J.ESC}[${t?``:`?`}${e};${n}$y`),!0),p=e=>e?1:2,m=e.params[0];return t?m===2?f(m,4):m===4?f(m,p(o.modes.insertMode)):m===12?f(m,3):m===20?f(m,p(d.convertEol)):f(m,0):m===1?f(m,p(r.applicationCursorKeys)):m===3?f(m,d.windowOptions.setWinLines?c===80?2:+(c===132):0):m===6?f(m,p(r.origin)):m===7?f(m,p(r.wraparound)):m===8?f(m,3):m===9?f(m,p(i===`X10`)):m===12?f(m,p(d.cursorBlink)):m===25?f(m,p(!o.isCursorHidden)):m===45?f(m,p(r.reverseWraparound)):m===66?f(m,p(r.applicationKeypad)):m===67?f(m,4):m===1e3?f(m,p(i===`VT200`)):m===1002?f(m,p(i===`DRAG`)):m===1003?f(m,p(i===`ANY`)):m===1004?f(m,p(r.sendFocus)):m===1005?f(m,4):m===1006?f(m,p(a===`SGR`)):m===1015?f(m,4):m===1016?f(m,p(a===`SGR_PIXELS`)):m===1048?f(m,1):m===47||m===1047||m===1049?f(m,p(l===u)):m===2004?f(m,p(r.bracketedPasteMode)):m===2026?f(m,p(r.synchronizedOutput)):f(m,0)}_updateAttrColor(e,t,n,r,i){return t===2?(e|=50331648,e&=-16777216,e|=zt.fromColorRGB([n,r,i])):t===5&&(e&=-50331904,e|=33554432|n&255),e}_extractColor(e,t,n){let r=[0,0,-1,0,0,0],i=0,a=0;do{if(r[a+i]=e.params[t+a],e.hasSubParams(t+a)){let n=e.getSubParams(t+a),o=0;do r[1]===5&&(i=1),r[a+o+1+i]=n[o];while(++o<n.length&&o+a+1+i<r.length);break}if(r[1]===5&&a+i>=2||r[1]===2&&a+i>=5)break;r[1]&&(i=1)}while(++a+t<e.length&&a+i<r.length);for(let e=2;e<r.length;++e)r[e]===-1&&(r[e]=0);switch(r[0]){case 38:n.fg=this._updateAttrColor(n.fg,r[1],r[3],r[4],r[5]);break;case 48:n.bg=this._updateAttrColor(n.bg,r[1],r[3],r[4],r[5]);break;case 58:n.extended=n.extended.clone(),n.extended.underlineColor=this._updateAttrColor(n.extended.underlineColor,r[1],r[3],r[4],r[5])}return a}_processUnderline(e,t){t.extended=t.extended.clone(),(!~e||e>5)&&(e=1),t.extended.underlineStyle=e,t.fg|=268435456,e===0&&(t.fg&=-268435457),t.updateExtended()}_processSGR0(e){e.fg=_s.fg,e.bg=_s.bg,e.extended=e.extended.clone(),e.extended.underlineStyle=0,e.extended.underlineColor&=-67108864,e.updateExtended()}charAttributes(e){if(e.length===1&&e.params[0]===0)return this._processSGR0(this._curAttrData),!0;let t=e.length,n,r=this._curAttrData;for(let i=0;i<t;i++)n=e.params[i],n>=30&&n<=37?(r.fg&=-50331904,r.fg|=16777216|n-30):n>=40&&n<=47?(r.bg&=-50331904,r.bg|=16777216|n-40):n>=90&&n<=97?(r.fg&=-50331904,r.fg|=n-90|16777224):n>=100&&n<=107?(r.bg&=-50331904,r.bg|=n-100|16777224):n===0?this._processSGR0(r):n===1?r.fg|=134217728:n===3?r.bg|=67108864:n===4?(r.fg|=268435456,this._processUnderline(e.hasSubParams(i)?e.getSubParams(i)[0]:1,r)):n===5?r.fg|=536870912:n===7?r.fg|=67108864:n===8?r.fg|=1073741824:n===9?r.fg|=2147483648:n===2?r.bg|=134217728:n===21?this._processUnderline(2,r):n===22?(r.fg&=-134217729,r.bg&=-134217729):n===23?r.bg&=-67108865:n===24?(r.fg&=-268435457,this._processUnderline(0,r)):n===25?r.fg&=-536870913:n===27?r.fg&=-67108865:n===28?r.fg&=-1073741825:n===29?r.fg&=2147483647:n===39?(r.fg&=-67108864,r.fg|=_s.fg&16777215):n===49?(r.bg&=-67108864,r.bg|=_s.bg&16777215):n===38||n===48||n===58?i+=this._extractColor(e,i,r):n===53?r.bg|=1073741824:n===55?r.bg&=-1073741825:n===59?(r.extended=r.extended.clone(),r.extended.underlineColor=-1,r.updateExtended()):n===100?(r.fg&=-67108864,r.fg|=_s.fg&16777215,r.bg&=-67108864,r.bg|=_s.bg&16777215):this._logService.debug(`Unknown SGR attribute: %d.`,n);return!0}deviceStatus(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(`${J.ESC}[0n`);break;case 6:let e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${J.ESC}[${e};${t}R`)}return!0}deviceStatusPrivate(e){if(e.params[0]===6){let e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${J.ESC}[?${e};${t}R`)}return!0}softReset(e){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=_s.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(e){let t=e.length===0?1:e.params[0];if(t===0)this._coreService.decPrivateModes.cursorStyle=void 0,this._coreService.decPrivateModes.cursorBlink=void 0;else{switch(t){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 e=t%2==1;this._coreService.decPrivateModes.cursorBlink=e}return!0}setScrollRegion(e){let t=e.params[0]||1,n;return(e.length<2||(n=e.params[1])>this._bufferService.rows||n===0)&&(n=this._bufferService.rows),n>t&&(this._activeBuffer.scrollTop=t-1,this._activeBuffer.scrollBottom=n-1,this._setCursor(0,0)),!0}windowOptions(e){if(!Tc(e.params[0],this._optionsService.rawOptions.windowOptions))return!0;let t=e.length>1?e.params[1]:0;switch(e.params[0]){case 14:t!==2&&this._onRequestWindowsOptionsReport.fire(0);break;case 16:this._onRequestWindowsOptionsReport.fire(1);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${J.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:(t===0||t===2)&&(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>wc&&this._windowTitleStack.shift()),(t===0||t===1)&&(this._iconNameStack.push(this._iconName),this._iconNameStack.length>wc&&this._iconNameStack.shift());break;case 23:(t===0||t===2)&&this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),(t===0||t===1)&&this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(e){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(e){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(e){return this._windowTitle=e,this._onTitleChange.fire(e),!0}setIconName(e){return this._iconName=e,!0}setOrReportIndexedColor(e){let t=[],n=e.split(`;`);for(;n.length>1;){let e=n.shift(),r=n.shift();if(/^\d+$/.exec(e)){let n=parseInt(e);if(Ac(n)){if(r===`?`)t.push({type:0,index:n});else{let e=yc(r);e&&t.push({type:1,index:n,color:e})}}}}return t.length&&this._onColor.fire(t),!0}setHyperlink(e){let t=e.indexOf(`;`);if(t===-1)return!0;let n=e.slice(0,t).trim(),r=e.slice(t+1);return r?this._createHyperlink(n,r):!n.trim()&&this._finishHyperlink()}_createHyperlink(e,t){this._getCurrentLinkId()&&this._finishHyperlink();let n=e.split(`:`),r,i=n.findIndex(e=>e.startsWith(`id=`));return i!==-1&&(r=n[i].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:r,uri:t}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(e,t){let n=e.split(`;`);for(let e=0;e<n.length&&!(t>=this._specialColors.length);++e,++t)if(n[e]===`?`)this._onColor.fire([{type:0,index:this._specialColors[t]}]);else{let r=yc(n[e]);r&&this._onColor.fire([{type:1,index:this._specialColors[t],color:r}])}return!0}setOrReportFgColor(e){return this._setOrReportSpecialColor(e,0)}setOrReportBgColor(e){return this._setOrReportSpecialColor(e,1)}setOrReportCursorColor(e){return this._setOrReportSpecialColor(e,2)}restoreIndexedColor(e){if(!e)return this._onColor.fire([{type:2}]),!0;let t=[],n=e.split(`;`);for(let e=0;e<n.length;++e)if(/^\d+$/.exec(n[e])){let r=parseInt(n[e]);Ac(r)&&t.push({type:2,index:r})}return t.length&&this._onColor.fire(t),!0}restoreFgColor(e){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(e){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(e){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,ks),!0}selectCharset(e){return e.length===2?(e[0]===`/`||this._charsetService.setgCharset(Sc[e[0]],Os[e[1]]||ks),!0):(this.selectDefaultCharset(),!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 e=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,e,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.clone(),this._eraseAttrDataInternal=_s.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=this._curAttrData.bg&67108863,this._eraseAttrDataInternal}setgLevel(e){return this._charsetService.setgLevel(e),!0}screenAlignmentPattern(){let e=new Vt;e.content=4194373,e.fg=this._curAttrData.fg,e.bg=this._curAttrData.bg,this._setCursor(0,0);for(let t=0;t<this._bufferService.rows;++t){let n=this._activeBuffer.ybase+this._activeBuffer.y+t,r=this._activeBuffer.lines.get(n);r&&(r.fill(e),r.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(e,t){let n=e=>(this._coreService.triggerDataEvent(`${J.ESC}${e}${J.ESC}\\`),!0),r=this._bufferService.buffer,i=this._optionsService.rawOptions;return n(e===`"q`?`P1$r${+!!this._curAttrData.isProtected()}"q`:e===`"p`?`P1$r61;1"p`:e===`r`?`P1$r${r.scrollTop+1};${r.scrollBottom+1}r`:e===`m`?`P1$r0m`:e===` q`?`P1$r${{block:2,underline:4,bar:6}[i.cursorStyle]-+!!i.cursorBlink} q`:`P0$r`)}markRangeDirty(e,t){this._dirtyRowTracker.markRangeDirty(e,t)}},kc=class{constructor(e){this._bufferService=e,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(e){e<this.start?this.start=e:e>this.end&&(this.end=e)}markRangeDirty(e,t){e>t&&(Dc=e,e=t,t=Dc),e<this.start&&(this.start=e),t>this.end&&(this.end=t)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};kc=z([B(0,qt)],kc);function Ac(e){return 0<=e&&e<256}var jc=5e7,Mc=12,Nc=50,Pc=class extends W{constructor(e){super(),this._action=e,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),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(e,t){if(t!==void 0&&this._syncCalls>t){this._syncCalls=0;return}if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;this._isSyncWriting=!0;let n;for(;n=this._writeBuffer.shift();){this._action(n);let e=this._callbacks.shift();e&&e()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(e,t){if(this._pendingData>jc)throw Error(`write data discarded, use flow control to avoid losing data`);if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput){this._didUserInput=!1,this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t),this._innerWrite();return}setTimeout(()=>this._innerWrite())}this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)}_innerWrite(e=0,t=!0){let n=e||performance.now();for(;this._writeBuffer.length>this._bufferOffset;){let e=this._writeBuffer[this._bufferOffset],r=this._action(e,t);if(r){r.catch(e=>(queueMicrotask(()=>{throw e}),Promise.resolve(!1))).then(e=>performance.now()-n>=Mc?setTimeout(()=>this._innerWrite(0,e)):this._innerWrite(n,e));return}let i=this._callbacks[this._bufferOffset];if(i&&i(),this._bufferOffset++,this._pendingData-=e.length,performance.now()-n>=Mc)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>Nc&&(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()}},Fc=class{constructor(e){this._bufferService=e,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(e){let t=this._bufferService.buffer;if(e.id===void 0){let n=t.addMarker(t.ybase+t.y),r={data:e,id:this._nextId++,lines:[n]};return n.onDispose(()=>this._removeMarkerFromLink(r,n)),this._dataByLinkId.set(r.id,r),r.id}let n=e,r=this._getEntryIdKey(n),i=this._entriesWithId.get(r);if(i)return this.addLineToLink(i.id,t.ybase+t.y),i.id;let a=t.addMarker(t.ybase+t.y),o={id:this._nextId++,key:this._getEntryIdKey(n),data:n,lines:[a]};return a.onDispose(()=>this._removeMarkerFromLink(o,a)),this._entriesWithId.set(o.key,o),this._dataByLinkId.set(o.id,o),o.id}addLineToLink(e,t){let n=this._dataByLinkId.get(e);if(n&&n.lines.every(e=>e.line!==t)){let e=this._bufferService.buffer.addMarker(t);n.lines.push(e),e.onDispose(()=>this._removeMarkerFromLink(n,e))}}getLinkData(e){return this._dataByLinkId.get(e)?.data}_getEntryIdKey(e){return`${e.id};;${e.uri}`}_removeMarkerFromLink(e,t){let n=e.lines.indexOf(t);n!==-1&&(e.lines.splice(n,1),e.lines.length===0&&(e.data.id!==void 0&&this._entriesWithId.delete(e.key),this._dataByLinkId.delete(e.id)))}};Fc=z([B(0,qt)],Fc);var Ic=!1,Lc=class extends W{constructor(e){super(),this._windowsWrappingHeuristics=this._register(new In),this._onBinary=this._register(new K),this.onBinary=this._onBinary.event,this._onData=this._register(new K),this.onData=this._onData.event,this._onLineFeed=this._register(new K),this.onLineFeed=this._onLineFeed.event,this._onResize=this._register(new K),this.onResize=this._onResize.event,this._onWriteParsed=this._register(new K),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this._register(new K),this._instantiationService=new ds,this.optionsService=this._register(new Rs(e)),this._instantiationService.setService($t,this.optionsService),this._bufferService=this._register(this._instantiationService.createInstance(Fs)),this._instantiationService.setService(qt,this._bufferService),this._logService=this._register(this._instantiationService.createInstance(ms)),this._instantiationService.setService(Qt,this._logService),this.coreService=this._register(this._instantiationService.createInstance(Us)),this._instantiationService.setService(Yt,this.coreService),this.coreMouseService=this._register(this._instantiationService.createInstance(Js)),this._instantiationService.setService(Jt,this.coreMouseService),this.unicodeService=this._register(this._instantiationService.createInstance(ec)),this._instantiationService.setService(tn,this.unicodeService),this._charsetService=this._instantiationService.createInstance(tc),this._instantiationService.setService(Xt,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(Fc),this._instantiationService.setService(en,this._oscLinkService),this._inputHandler=this._register(new Oc(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this._register(Hn.forward(this._inputHandler.onLineFeed,this._onLineFeed)),this._register(this._inputHandler),this._register(Hn.forward(this._bufferService.onResize,this._onResize)),this._register(Hn.forward(this.coreService.onData,this._onData)),this._register(Hn.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 Pc((e,t)=>this._inputHandler.parse(e,t))),this._register(Hn.forward(this._writeBuffer.onWriteParsed,this._onWriteParsed))}get onScroll(){return this._onScrollApi||(this._onScrollApi=this._register(new K),this._onScroll.event(e=>{this._onScrollApi?.fire(e.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(e){for(let t in e)this.optionsService.options[t]=e[t]}write(e,t){this._writeBuffer.write(e,t)}writeSync(e,t){this._logService.logLevel<=3&&!Ic&&(this._logService.warn(`writeSync is unreliable and will be removed soon.`),Ic=!0),this._writeBuffer.writeSync(e,t)}input(e,t=!0){this.coreService.triggerDataEvent(e,t)}resize(e,t){isNaN(e)||isNaN(t)||(e=Math.max(e,Ns),t=Math.max(t,Ps),this._bufferService.resize(e,t))}scroll(e,t=!1){this._bufferService.scroll(e,t)}scrollLines(e,t){this._bufferService.scrollLines(e,t)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let t=e-this._bufferService.buffer.ydisp;t!==0&&this.scrollLines(t)}registerEscHandler(e,t){return this._inputHandler.registerEscHandler(e,t)}registerDcsHandler(e,t){return this._inputHandler.registerDcsHandler(e,t)}registerCsiHandler(e,t){return this._inputHandler.registerCsiHandler(e,t)}registerOscHandler(e,t){return this._inputHandler.registerOscHandler(e,t)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let e=!1,t=this.optionsService.rawOptions.windowsPty;t&&t.buildNumber!==void 0&&t.buildNumber!==void 0?e=t.backend===`conpty`&&t.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(e=!0),e?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let e=[];e.push(this.onLineFeed(nc.bind(null,this._bufferService))),e.push(this.registerCsiHandler({final:`H`},()=>(nc(this._bufferService),!1))),this._windowsWrappingHeuristics.value=U(()=>{for(let t of e)t.dispose()})}}},Rc={48:[`0`,`)`],49:[`1`,`!`],50:[`2`,`@`],51:[`3`,`#`],52:[`4`,`$`],53:[`5`,`%`],54:[`6`,`^`],55:[`7`,`&`],56:[`8`,`*`],57:[`9`,`(`],186:[`;`,`:`],187:[`=`,`+`],188:[`,`,`<`],189:[`-`,`_`],190:[`.`,`>`],191:[`/`,`?`],192:["`",`~`],219:[`[`,`{`],220:[`\\`,`|`],221:[`]`,`}`],222:[`'`,`"`]};function zc(e,t,n,r){let i={type:0,cancel:!1,key:void 0},a=!!e.shiftKey|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:e.key===`UIKeyInputUpArrow`?i.key=t?J.ESC+`OA`:J.ESC+`[A`:e.key===`UIKeyInputLeftArrow`?i.key=t?J.ESC+`OD`:J.ESC+`[D`:e.key===`UIKeyInputRightArrow`?i.key=t?J.ESC+`OC`:J.ESC+`[C`:e.key===`UIKeyInputDownArrow`&&(i.key=t?J.ESC+`OB`:J.ESC+`[B`);break;case 8:i.key=e.ctrlKey?`\b`:J.DEL,e.altKey&&(i.key=J.ESC+i.key);break;case 9:if(e.shiftKey){i.key=J.ESC+`[Z`;break}i.key=J.HT,i.cancel=!0;break;case 13:i.key=e.altKey?J.ESC+J.CR:J.CR,i.cancel=!0;break;case 27:i.key=J.ESC,e.altKey&&(i.key=J.ESC+J.ESC),i.cancel=!0;break;case 37:if(e.metaKey)break;i.key=a?J.ESC+`[1;`+(a+1)+`D`:t?J.ESC+`OD`:J.ESC+`[D`;break;case 39:if(e.metaKey)break;i.key=a?J.ESC+`[1;`+(a+1)+`C`:t?J.ESC+`OC`:J.ESC+`[C`;break;case 38:if(e.metaKey)break;i.key=a?J.ESC+`[1;`+(a+1)+`A`:t?J.ESC+`OA`:J.ESC+`[A`;break;case 40:if(e.metaKey)break;i.key=a?J.ESC+`[1;`+(a+1)+`B`:t?J.ESC+`OB`:J.ESC+`[B`;break;case 45:!e.shiftKey&&!e.ctrlKey&&(i.key=J.ESC+`[2~`);break;case 46:i.key=a?J.ESC+`[3;`+(a+1)+`~`:J.ESC+`[3~`;break;case 36:i.key=a?J.ESC+`[1;`+(a+1)+`H`:t?J.ESC+`OH`:J.ESC+`[H`;break;case 35:i.key=a?J.ESC+`[1;`+(a+1)+`F`:t?J.ESC+`OF`:J.ESC+`[F`;break;case 33:e.shiftKey?i.type=2:i.key=e.ctrlKey?J.ESC+`[5;`+(a+1)+`~`:J.ESC+`[5~`;break;case 34:e.shiftKey?i.type=3:i.key=e.ctrlKey?J.ESC+`[6;`+(a+1)+`~`:J.ESC+`[6~`;break;case 112:i.key=a?J.ESC+`[1;`+(a+1)+`P`:J.ESC+`OP`;break;case 113:i.key=a?J.ESC+`[1;`+(a+1)+`Q`:J.ESC+`OQ`;break;case 114:i.key=a?J.ESC+`[1;`+(a+1)+`R`:J.ESC+`OR`;break;case 115:i.key=a?J.ESC+`[1;`+(a+1)+`S`:J.ESC+`OS`;break;case 116:i.key=a?J.ESC+`[15;`+(a+1)+`~`:J.ESC+`[15~`;break;case 117:i.key=a?J.ESC+`[17;`+(a+1)+`~`:J.ESC+`[17~`;break;case 118:i.key=a?J.ESC+`[18;`+(a+1)+`~`:J.ESC+`[18~`;break;case 119:i.key=a?J.ESC+`[19;`+(a+1)+`~`:J.ESC+`[19~`;break;case 120:i.key=a?J.ESC+`[20;`+(a+1)+`~`:J.ESC+`[20~`;break;case 121:i.key=a?J.ESC+`[21;`+(a+1)+`~`:J.ESC+`[21~`;break;case 122:i.key=a?J.ESC+`[23;`+(a+1)+`~`:J.ESC+`[23~`;break;case 123:i.key=a?J.ESC+`[24;`+(a+1)+`~`:J.ESC+`[24~`;break;default:if(e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey)e.keyCode>=65&&e.keyCode<=90?i.key=String.fromCharCode(e.keyCode-64):e.keyCode===32?i.key=J.NUL:e.keyCode>=51&&e.keyCode<=55?i.key=String.fromCharCode(e.keyCode-51+27):e.keyCode===56?i.key=J.DEL:e.keyCode===219?i.key=J.ESC:e.keyCode===220?i.key=J.FS:e.keyCode===221&&(i.key=J.GS);else if((!n||r)&&e.altKey&&!e.metaKey){let t=Rc[e.keyCode]?.[+!!e.shiftKey];if(t)i.key=J.ESC+t;else if(e.keyCode>=65&&e.keyCode<=90){let t=e.ctrlKey?e.keyCode-64:e.keyCode+32,n=String.fromCharCode(t);e.shiftKey&&(n=n.toUpperCase()),i.key=J.ESC+n}else if(e.keyCode===32)i.key=J.ESC+(e.ctrlKey?J.NUL:` `);else if(e.key===`Dead`&&e.code.startsWith(`Key`)){let t=e.code.slice(3,4);e.shiftKey||(t=t.toLowerCase()),i.key=J.ESC+t,i.cancel=!0}}else n&&!e.altKey&&!e.ctrlKey&&!e.shiftKey&&e.metaKey?e.keyCode===65&&(i.type=1):e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&e.key.length===1?i.key=e.key:e.key&&e.ctrlKey&&(e.key===`_`&&(i.key=J.US),e.key===`@`&&(i.key=J.NUL))}return i}var Bc=0,Vc=class{constructor(e){this._getKey=e,this._array=[],this._insertedValues=[],this._flushInsertedTask=new ko,this._isFlushingInserted=!1,this._deletedIndices=[],this._flushDeletedTask=new ko,this._isFlushingDeleted=!1}clear(){this._array.length=0,this._insertedValues.length=0,this._flushInsertedTask.clear(),this._isFlushingInserted=!1,this._deletedIndices.length=0,this._flushDeletedTask.clear(),this._isFlushingDeleted=!1}insert(e){this._flushCleanupDeleted(),this._insertedValues.length===0&&this._flushInsertedTask.enqueue(()=>this._flushInserted()),this._insertedValues.push(e)}_flushInserted(){let e=this._insertedValues.sort((e,t)=>this._getKey(e)-this._getKey(t)),t=0,n=0,r=Array(this._array.length+this._insertedValues.length);for(let i=0;i<r.length;i++)n>=this._array.length||this._getKey(e[t])<=this._getKey(this._array[n])?(r[i]=e[t],t++):r[i]=this._array[n++];this._array=r,this._insertedValues.length=0}_flushCleanupInserted(){!this._isFlushingInserted&&this._insertedValues.length>0&&this._flushInsertedTask.flush()}delete(e){if(this._flushCleanupInserted(),this._array.length===0)return!1;let t=this._getKey(e);if(t===void 0||(Bc=this._search(t),Bc===-1)||this._getKey(this._array[Bc])!==t)return!1;do if(this._array[Bc]===e)return this._deletedIndices.length===0&&this._flushDeletedTask.enqueue(()=>this._flushDeleted()),this._deletedIndices.push(Bc),!0;while(++Bc<this._array.length&&this._getKey(this._array[Bc])===t);return!1}_flushDeleted(){this._isFlushingDeleted=!0;let e=this._deletedIndices.sort((e,t)=>e-t),t=0,n=Array(this._array.length-e.length),r=0;for(let i=0;i<this._array.length;i++)e[t]===i?t++:n[r++]=this._array[i];this._array=n,this._deletedIndices.length=0,this._isFlushingDeleted=!1}_flushCleanupDeleted(){!this._isFlushingDeleted&&this._deletedIndices.length>0&&this._flushDeletedTask.flush()}*getKeyIterator(e){if(this._flushCleanupInserted(),this._flushCleanupDeleted(),this._array.length!==0&&(Bc=this._search(e),!(Bc<0||Bc>=this._array.length)&&this._getKey(this._array[Bc])===e))do yield this._array[Bc];while(++Bc<this._array.length&&this._getKey(this._array[Bc])===e)}forEachByKey(e,t){if(this._flushCleanupInserted(),this._flushCleanupDeleted(),this._array.length!==0&&(Bc=this._search(e),!(Bc<0||Bc>=this._array.length)&&this._getKey(this._array[Bc])===e))do t(this._array[Bc]);while(++Bc<this._array.length&&this._getKey(this._array[Bc])===e)}values(){return this._flushCleanupInserted(),this._flushCleanupDeleted(),[...this._array].values()}_search(e){let t=0,n=this._array.length-1;for(;n>=t;){let r=t+n>>1,i=this._getKey(this._array[r]);if(i>e)n=r-1;else if(i<e)t=r+1;else{for(;r>0&&this._getKey(this._array[r-1])===e;)r--;return r}}return t}},Hc=0,Uc=0,Wc=class extends W{constructor(){super(),this._decorations=new Vc(e=>e?.marker.line),this._onDecorationRegistered=this._register(new K),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this._register(new K),this.onDecorationRemoved=this._onDecorationRemoved.event,this._register(U(()=>this.reset()))}get decorations(){return this._decorations.values()}registerDecoration(e){if(e.marker.isDisposed)return;let t=new Gc(e);if(t){let e=t.marker.onDispose(()=>t.dispose()),n=t.onDispose(()=>{n.dispose(),t&&(this._decorations.delete(t)&&this._onDecorationRemoved.fire(t),e.dispose())});this._decorations.insert(t),this._onDecorationRegistered.fire(t)}return t}reset(){for(let e of this._decorations.values())e.dispose();this._decorations.clear()}*getDecorationsAtCell(e,t,n){let r=0,i=0;for(let a of this._decorations.getKeyIterator(t))r=a.options.x??0,i=r+(a.options.width??1),e>=r&&e<i&&(!n||(a.options.layer??`bottom`)===n)&&(yield a)}forEachDecorationAtCell(e,t,n,r){this._decorations.forEachByKey(t,t=>{Hc=t.options.x??0,Uc=Hc+(t.options.width??1),e>=Hc&&e<Uc&&(!n||(t.options.layer??`bottom`)===n)&&r(t)})}},Gc=class extends Fn{constructor(e){super(),this.options=e,this.onRenderEmitter=this.add(new K),this.onRender=this.onRenderEmitter.event,this._onDispose=this.add(new K),this.onDispose=this._onDispose.event,this._cachedBg=null,this._cachedFg=null,this.marker=e.marker,this.options.overviewRulerOptions&&!this.options.overviewRulerOptions.position&&(this.options.overviewRulerOptions.position=`full`)}get backgroundColorRGB(){return this._cachedBg===null&&(this._cachedBg=this.options.backgroundColor?ka.toColor(this.options.backgroundColor):void 0),this._cachedBg}get foregroundColorRGB(){return this._cachedFg===null&&(this._cachedFg=this.options.foregroundColor?ka.toColor(this.options.foregroundColor):void 0),this._cachedFg}dispose(){this._onDispose.fire(),super.dispose()}},Kc=1e3,qc=class{constructor(e,t=Kc){this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(e,t,n){this._rowCount=n,e=e===void 0?0:e,t=t===void 0?this._rowCount-1:t,this._rowStart=this._rowStart===void 0?e:Math.min(this._rowStart,e),this._rowEnd=this._rowEnd===void 0?t:Math.max(this._rowEnd,t);let r=performance.now();if(r-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=r,this._innerRefresh();else if(!this._additionalRefreshRequested){let e=r-this._lastRefreshMs,t=this._debounceThresholdMS-e;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=performance.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},t)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;let e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}},Jc=20,Yc=class extends W{constructor(e,t,n,r){super(),this._terminal=e,this._coreBrowserService=n,this._renderService=r,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce=``;let i=this._coreBrowserService.mainDocument;this._accessibilityContainer=i.createElement(`div`),this._accessibilityContainer.classList.add(`xterm-accessibility`),this._rowContainer=i.createElement(`div`),this._rowContainer.setAttribute(`role`,`list`),this._rowContainer.classList.add(`xterm-accessibility-tree`),this._rowElements=[];for(let e=0;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);if(this._topBoundaryFocusListener=e=>this._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=i.createElement(`div`),this._liveRegion.classList.add(`live-region`),this._liveRegion.setAttribute(`aria-live`,`assertive`),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this._register(new qc(this._renderRows.bind(this))),!this._terminal.element)throw Error(`Cannot enable accessibility before Terminal.open`);this._terminal.element.insertAdjacentElement(`afterbegin`,this._accessibilityContainer),this._register(this._terminal.onResize(e=>this._handleResize(e.rows))),this._register(this._terminal.onRender(e=>this._refreshRows(e.start,e.end))),this._register(this._terminal.onScroll(()=>this._refreshRows())),this._register(this._terminal.onA11yChar(e=>this._handleChar(e))),this._register(this._terminal.onLineFeed(()=>this._handleChar(`
18
18
  `))),this._register(this._terminal.onA11yTab(e=>this._handleTab(e))),this._register(this._terminal.onKey(e=>this._handleKey(e.key))),this._register(this._terminal.onBlur(()=>this._clearLiveRegion())),this._register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._register(q(i,`selectionchange`,()=>this._handleSelectionChange())),this._register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRowsDimensions(),this._refreshRows(),this._register(U(()=>{this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(e){for(let t=0;t<e;t++)this._handleChar(` `)}_handleChar(e){this._liveRegionLineCount<Jc+1&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,e===`
19
19
  `&&(this._liveRegionLineCount++,this._liveRegionLineCount===Jc+1&&(this._liveRegion.textContent+=Et.get())))}_clearLiveRegion(){this._liveRegion.textContent=``,this._liveRegionLineCount=0}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_renderRows(e,t){let n=this._terminal.buffer,r=n.lines.length.toString();for(let i=e;i<=t;i++){let e=n.lines.get(n.ydisp+i),t=[],a=e?.translateToString(!0,void 0,void 0,t)||``,o=(n.ydisp+i+1).toString(),s=this._rowElements[i];s&&(a.length===0?(s.textContent=`\xA0`,this._rowColumns.set(s,[0,1])):(s.textContent=a,this._rowColumns.set(s,t)),s.setAttribute(`aria-posinset`,o),s.setAttribute(`aria-setsize`,r),this._alignRowWidth(s))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce=``)}_handleBoundaryFocus(e,t){let n=e.target,r=this._rowElements[t===0?1:this._rowElements.length-2];if(n.getAttribute(`aria-posinset`)===(t===0?`1`:`${this._terminal.buffer.lines.length}`)||e.relatedTarget!==r)return;let i,a;if(t===0?(i=n,a=this._rowElements.pop(),this._rowContainer.removeChild(a)):(i=this._rowElements.shift(),a=n,this._rowContainer.removeChild(i)),i.removeEventListener(`focus`,this._topBoundaryFocusListener),a.removeEventListener(`focus`,this._bottomBoundaryFocusListener),t===0){let e=this._createAccessibilityTreeNode();this._rowElements.unshift(e),this._rowContainer.insertAdjacentElement(`afterbegin`,e)}else{let e=this._createAccessibilityTreeNode();this._rowElements.push(e),this._rowContainer.appendChild(e)}this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._terminal.scrollLines(t===0?-1:1),this._rowElements[t===0?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;let e=this._coreBrowserService.mainDocument.getSelection();if(!e)return;if(e.isCollapsed){this._rowContainer.contains(e.anchorNode)&&this._terminal.clearSelection();return}if(!e.anchorNode||!e.focusNode){console.error(`anchorNode and/or focusNode are null`);return}let t={node:e.anchorNode,offset:e.anchorOffset},n={node:e.focusNode,offset:e.focusOffset};if((t.node.compareDocumentPosition(n.node)&Node.DOCUMENT_POSITION_PRECEDING||t.node===n.node&&t.offset>n.offset)&&([t,n]=[n,t]),t.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(t={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(t.node))return;let r=this._rowElements.slice(-1)[0];if(n.node.compareDocumentPosition(r)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(n={node:r,offset:r.textContent?.length??0}),!this._rowContainer.contains(n.node))return;let i=({node:e,offset:t})=>{let n=e instanceof Text?e.parentNode:e,r=parseInt(n?.getAttribute(`aria-posinset`),10)-1;if(isNaN(r))return console.warn(`row is invalid. Race condition?`),null;let i=this._rowColumns.get(n);if(!i)return console.warn(`columns is null. Race condition?`),null;let a=t<i.length?i[t]:i.slice(-1)[0]+1;return a>=this._terminal.cols&&(++r,a=0),{row:r,column:a}},a=i(t),o=i(n);if(!(!a||!o)){if(a.row>o.row||a.row===o.row&&a.column>=o.column)throw Error(`invalid range`);this._terminal.select(a.column,a.row,(o.row-a.row)*this._terminal.cols-a.column+o.column)}}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener(`focus`,this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);for(;this._rowElements.length>e;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let e=this._coreBrowserService.mainDocument.createElement(`div`);return e.setAttribute(`role`,`listitem`),e.tabIndex=-1,this._refreshRowDimensions(e),e}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){Object.assign(this._accessibilityContainer.style,{width:`${this._renderService.dimensions.css.canvas.width}px`,fontSize:`${this._terminal.options.fontSize}px`}),this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let e=0;e<this._terminal.rows;e++)this._refreshRowDimensions(this._rowElements[e]),this._alignRowWidth(this._rowElements[e])}}_refreshRowDimensions(e){e.style.height=`${this._renderService.dimensions.css.cell.height}px`}_alignRowWidth(e){e.style.transform=``;let t=e.getBoundingClientRect().width,n=this._rowColumns.get(e)?.slice(-1)?.[0];if(!n)return;let r=n*this._renderService.dimensions.css.cell.width;e.style.transform=`scaleX(${r/t})`}};Yc=z([B(1,Zt),B(2,sn),B(3,ln)],Yc);var Xc=class extends W{constructor(e,t,n,r,i){super(),this._element=e,this._mouseService=t,this._renderService=n,this._bufferService=r,this._linkProviderService=i,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this._register(new K),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this._register(new K),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this._register(U(()=>{Mn(this._linkCacheDisposables),this._linkCacheDisposables.length=0,this._lastMouseEvent=void 0,this._activeProviderReplies?.clear()})),this._register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this._register(q(this._element,`mouseleave`,()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this._register(q(this._element,`mousemove`,this._handleMouseMove.bind(this))),this._register(q(this._element,`mousedown`,this._handleMouseDown.bind(this))),this._register(q(this._element,`mouseup`,this._handleMouseUp.bind(this)))}get currentLink(){return this._currentLink}_handleMouseMove(e){this._lastMouseEvent=e;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!t)return;this._isMouseOut=!1;let n=e.composedPath();for(let e=0;e<n.length;e++){let t=n[e];if(t.classList.contains(`xterm`))break;if(t.classList.contains(`xterm-hover`))return}(!this._lastBufferCell||t.x!==this._lastBufferCell.x||t.y!==this._lastBufferCell.y)&&(this._handleHover(t),this._lastBufferCell=t)}_handleHover(e){if(this._activeLine!==e.y||this._wasResized){this._clearCurrentLink(),this._askForLink(e,!1),this._wasResized=!1;return}this._currentLink&&this._linkAtPosition(this._currentLink.link,e)||(this._clearCurrentLink(),this._askForLink(e,!0))}_askForLink(e,t){(!this._activeProviderReplies||!t)&&(this._activeProviderReplies?.forEach(e=>{e?.forEach(e=>{e.link.dispose&&e.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=e.y);let n=!1;for(let[r,i]of this._linkProviderService.linkProviders.entries())t?this._activeProviderReplies?.get(r)&&(n=this._checkLinkProviderResult(r,e,n)):i.provideLinks(e.y,t=>{if(this._isMouseOut)return;let i=t?.map(e=>({link:e}));this._activeProviderReplies?.set(r,i),n=this._checkLinkProviderResult(r,e,n),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)})}_removeIntersectingLinks(e,t){let n=new Set;for(let r=0;r<t.size;r++){let i=t.get(r);if(i)for(let t=0;t<i.length;t++){let r=i[t],a=r.link.range.start.y<e?0:r.link.range.start.x,o=r.link.range.end.y>e?this._bufferService.cols:r.link.range.end.x;for(let e=a;e<=o;e++){if(n.has(e)){i.splice(t--,1);break}n.add(e)}}}}_checkLinkProviderResult(e,t,n){if(!this._activeProviderReplies)return n;let r=this._activeProviderReplies.get(e),i=!1;for(let t=0;t<e;t++)(!this._activeProviderReplies.has(t)||this._activeProviderReplies.get(t))&&(i=!0);if(!i&&r){let e=r.find(e=>this._linkAtPosition(e.link,t));e&&(n=!0,this._handleNewLink(e))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!n)for(let e=0;e<this._activeProviderReplies.size;e++){let r=this._activeProviderReplies.get(e)?.find(e=>this._linkAtPosition(e.link,t));if(r){n=!0,this._handleNewLink(r);break}}return n}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._currentLink)return;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink&&Zc(this._mouseDownLink.link,this._currentLink.link)&&this._linkAtPosition(this._currentLink.link,t)&&this._currentLink.link.activate(e,this._currentLink.link.text)}_clearCurrentLink(e,t){!this._currentLink||!this._lastMouseEvent||(!e||!t||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,Mn(this._linkCacheDisposables),this._linkCacheDisposables.length=0)}_handleNewLink(e){if(!this._lastMouseEvent)return;let t=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);t&&this._linkAtPosition(e.link,t)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:e.link.decorations===void 0||e.link.decorations.underline,pointerCursor:e.link.decorations===void 0||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:e=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&this._element.classList.toggle(`xterm-cursor-pointer`,e))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:t=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(e=>{if(!this._currentLink)return;let t=e.start===0?0:e.start+1+this._bufferService.buffer.ydisp,n=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=n&&(this._clearCurrentLink(t,n),this._lastMouseEvent)){let e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._askForLink(e,!1)}})))}_linkHover(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add(`xterm-cursor-pointer`)),t.hover&&t.hover(n,t.text)}_fireUnderlineEvent(e,t){let n=e.range,r=this._bufferService.buffer.ydisp,i=this._createLinkUnderlineEvent(n.start.x-1,n.start.y-r-1,n.end.x,n.end.y-r-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(i)}_linkLeave(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove(`xterm-cursor-pointer`)),t.leave&&t.leave(n,t.text)}_linkAtPosition(e,t){let n=e.range.start.y*this._bufferService.cols+e.range.start.x,r=e.range.end.y*this._bufferService.cols+e.range.end.x,i=t.y*this._bufferService.cols+t.x;return n<=i&&i<=r}_positionFromMouseEvent(e,t,n){let r=n.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(r)return{x:r[0],y:r[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,n,r,i){return{x1:e,y1:t,x2:n,y2:r,cols:this._bufferService.cols,fg:i}}};Xc=z([B(1,cn),B(2,ln),B(3,qt),B(4,pn)],Xc);function Zc(e,t){return e.text===t.text&&e.range.start.x===t.range.start.x&&e.range.start.y===t.range.start.y&&e.range.end.x===t.range.end.x&&e.range.end.y===t.range.end.y}var Qc=class extends Lc{constructor(e={}){super(e),this._linkifier=this._register(new In),this.browser=fo,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new In),this._onCursorMove=this._register(new K),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new K),this.onKey=this._onKey.event,this._onRender=this._register(new K),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new K),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new K),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new K),this.onBell=this._onBell.event,this._onFocus=this._register(new K),this._onBlur=this._register(new K),this._onA11yCharEmitter=this._register(new K),this._onA11yTabEmitter=this._register(new K),this._onWillOpen=this._register(new K),this._setup(),this._decorationService=this._instantiationService.createInstance(Wc),this._instantiationService.setService(nn,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(oo),this._instantiationService.setService(pn,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(rn)),this._register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this._register(this._inputHandler.onRequestRefreshRows(e=>this.refresh(e?.start??0,e?.end??this.rows-1))),this._register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this._register(this._inputHandler.onRequestReset(()=>this.reset())),this._register(this._inputHandler.onRequestWindowsOptionsReport(e=>this._reportWindowsOptions(e))),this._register(this._inputHandler.onColor(e=>this._handleColorEvent(e))),this._register(Hn.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(Hn.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(Hn.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(Hn.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize(e=>this._afterResize(e.cols,e.rows))),this._register(U(()=>{this._customKeyEventHandler=void 0,this.element?.parentNode?.removeChild(this.element)}))}get linkifier(){return this._linkifier.value}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}_handleColorEvent(e){if(this._themeService)for(let t of e){let e,n=``;switch(t.index){case 256:e=`foreground`,n=`10`;break;case 257:e=`background`,n=`11`;break;case 258:e=`cursor`,n=`12`;break;default:e=`ansi`,n=`4;`+t.index}switch(t.type){case 0:let r=Y.toColorRGB(e===`ansi`?this._themeService.colors.ansi[t.index]:this._themeService.colors[e]);this.coreService.triggerDataEvent(`${J.ESC}]${n};${xc(r)}${xa.ST}`);break;case 1:if(e===`ansi`)this._themeService.modifyColors(e=>e.ansi[t.index]=Oa.toColor(...t.color));else{let n=e;this._themeService.modifyColors(e=>e[n]=Oa.toColor(...t.color))}break;case 2:this._themeService.restoreColor(t.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(Yc,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(J.ESC+`[I`),this.element.classList.add(`focus`),this._showCursor(),this._onFocus.fire()}blur(){return this.textarea?.blur()}_handleTextAreaBlur(){this.textarea.value=``,this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(J.ESC+`[O`),this.element.classList.remove(`focus`),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(!t)return;let n=Math.min(this.buffer.x,this.cols-1),r=this._renderService.dimensions.css.cell.height,i=t.getWidth(n),a=this._renderService.dimensions.css.cell.width*i,o=this.buffer.y*this._renderService.dimensions.css.cell.height,s=n*this._renderService.dimensions.css.cell.width;this.textarea.style.left=s+`px`,this.textarea.style.top=o+`px`,this.textarea.style.width=a+`px`,this.textarea.style.height=r+`px`,this.textarea.style.lineHeight=r+`px`,this.textarea.style.zIndex=`-5`}_initGlobal(){this._bindKeys(),this._register(q(this.element,`copy`,e=>{this.hasSelection()&&kt(e,this._selectionService)}));let e=e=>At(e,this.textarea,this.coreService,this.optionsService);this._register(q(this.textarea,`paste`,e)),this._register(q(this.element,`paste`,e)),go?this._register(q(this.element,`mousedown`,e=>{e.button===2&&Mt(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this._register(q(this.element,`contextmenu`,e=>{Mt(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),wo&&this._register(q(this.element,`auxclick`,e=>{e.button===1&&jt(e,this.textarea,this.screenElement)}))}_bindKeys(){this._register(q(this.textarea,`keyup`,e=>this._keyUp(e),!0)),this._register(q(this.textarea,`keydown`,e=>this._keyDown(e),!0)),this._register(q(this.textarea,`keypress`,e=>this._keyPress(e),!0)),this._register(q(this.textarea,`compositionstart`,()=>this._compositionHelper.compositionstart())),this._register(q(this.textarea,`compositionupdate`,e=>this._compositionHelper.compositionupdate(e))),this._register(q(this.textarea,`compositionend`,()=>this._compositionHelper.compositionend())),this._register(q(this.textarea,`input`,e=>this._inputEvent(e),!0)),this._register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(e){if(!e)throw Error(`Terminal requires a parent element.`);if(e.isConnected||this._logService.debug(`Terminal.open was called on an element that was not attached to the DOM`),this.element?.ownerDocument.defaultView&&this._coreBrowserService){this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView);return}this._document=e.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement(`div`),this.element.dir=`ltr`,this.element.classList.add(`terminal`),this.element.classList.add(`xterm`),e.appendChild(this.element);let t=this._document.createDocumentFragment();this._viewportElement=this._document.createElement(`div`),this._viewportElement.classList.add(`xterm-viewport`),t.appendChild(this._viewportElement),this.screenElement=this._document.createElement(`div`),this.screenElement.classList.add(`xterm-screen`),this._register(q(this.screenElement,`mousemove`,e=>this.updateCursorStyle(e))),this._helperContainer=this._document.createElement(`div`),this._helperContainer.classList.add(`xterm-helpers`),this.screenElement.appendChild(this._helperContainer),t.appendChild(this.screenElement);let n=this.textarea=this._document.createElement(`textarea`);this.textarea.classList.add(`xterm-helper-textarea`),this.textarea.setAttribute(`aria-label`,wt.get()),To||this.textarea.setAttribute(`aria-multiline`,`false`),this.textarea.setAttribute(`autocorrect`,`off`),this.textarea.setAttribute(`autocapitalize`,`off`),this.textarea.setAttribute(`spellcheck`,`false`),this.textarea.tabIndex=0,this._register(this.optionsService.onSpecificOptionChange(`disableStdin`,()=>n.readOnly=this.optionsService.rawOptions.disableStdin)),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(io,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<`u`?window.document:null)),this._instantiationService.setService(sn,this._coreBrowserService),this._register(q(this.textarea,`focus`,e=>this._handleTextAreaFocus(e))),this._register(q(this.textarea,`blur`,()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(eo,this._document,this._helperContainer),this._instantiationService.setService(on,this._charSizeService),this._themeService=this._instantiationService.createInstance(ls),this._instantiationService.setService(fn,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(Fa),this._instantiationService.setService(dn,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(jo,this.rows,this.screenElement)),this._instantiationService.setService(ln,this._renderService),this._register(this._renderService.onRenderedViewportChange(e=>this._onRender.fire(e))),this.onResize(e=>this._renderService.resize(e.cols,e.rows)),this._compositionView=this._document.createElement(`div`),this._compositionView.classList.add(`composition-view`),this._compositionHelper=this._instantiationService.createInstance(Sa,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(lo),this._instantiationService.setService(cn,this._mouseService);let r=this._linkifier.value=this._register(this._instantiationService.createInstance(Xc,this.screenElement));this.element.appendChild(t);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this._register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this._register(this.onBlur(()=>this._renderService.handleBlur())),this._register(this.onFocus(()=>this._renderService.handleFocus())),this._viewport=this._register(this._instantiationService.createInstance(pa,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines(e=>{super.scrollLines(e,!1),this.refresh(0,this.rows-1)})),this._selectionService=this._register(this._instantiationService.createInstance($o,this.element,this.screenElement,r)),this._instantiationService.setService(un,this._selectionService),this._register(this._selectionService.onRequestScrollLines(e=>this.scrollLines(e.amount,e.suppressScrollEvent))),this._register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this._register(this._selectionService.onRequestRedraw(e=>this._renderService.handleSelectionChanged(e.start,e.end,e.columnSelectMode))),this._register(this._selectionService.onLinuxMouseSelection(e=>{this.textarea.value=e,this.textarea.focus(),this.textarea.select()})),this._register(Hn.any(this._onScroll.event,this._inputHandler.onScroll)(()=>{this._selectionService.refresh(),this._viewport?.queueSync()})),this._register(this._instantiationService.createInstance(ma,this.screenElement)),this._register(q(this.element,`mousedown`,e=>this._selectionService.handleMouseDown(e))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add(`enable-mouse-events`)):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(Yc,this)),this._register(this.optionsService.onSpecificOptionChange(`screenReaderMode`,e=>this._handleScreenReaderModeOptionChange(e))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(ya,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange(`overviewRuler`,e=>{!this._overviewRulerRenderer&&e&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(ya,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance($a,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,t=this.element;function n(t){let n=e._mouseService.getMouseReportCoords(t,e.screenElement);if(!n)return!1;let r,i;switch(t.overrideType||t.type){case`mousemove`:i=32,t.buttons===void 0?(r=3,t.button!==void 0&&(r=t.button<3?t.button:3)):r=t.buttons&1?0:t.buttons&4?1:t.buttons&2?2:3;break;case`mouseup`:i=0,r=t.button<3?t.button:3;break;case`mousedown`:i=1,r=t.button<3?t.button:3;break;case`wheel`:if(e._customWheelEventHandler&&e._customWheelEventHandler(t)===!1)return!1;let n=t.deltaY;if(n===0||e.coreMouseService.consumeWheelEvent(t,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return!1;i=n<0?0:1,r=4;break;default:return!1}return i===void 0||r===void 0||r>4?!1:e.coreMouseService.triggerMouseEvent({col:n.col,row:n.row,x:n.x,y:n.y,button:r,action:i,ctrl:t.ctrlKey,alt:t.altKey,shift:t.shiftKey})}let r={mouseup:null,wheel:null,mousedrag:null,mousemove:null},i={mouseup:e=>(n(e),e.buttons||(this._document.removeEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.removeEventListener(`mousemove`,r.mousedrag)),this.cancel(e)),wheel:e=>(n(e),this.cancel(e,!0)),mousedrag:e=>{e.buttons&&n(e)},mousemove:e=>{e.buttons||n(e)}};this._register(this.coreMouseService.onProtocolChange(e=>{e?(this.optionsService.rawOptions.logLevel===`debug`&&this._logService.debug(`Binding to mouse events:`,this.coreMouseService.explainEvents(e)),this.element.classList.add(`enable-mouse-events`),this._selectionService.disable()):(this._logService.debug(`Unbinding from mouse events.`),this.element.classList.remove(`enable-mouse-events`),this._selectionService.enable()),e&8?r.mousemove||=(t.addEventListener(`mousemove`,i.mousemove),i.mousemove):(t.removeEventListener(`mousemove`,r.mousemove),r.mousemove=null),e&16?r.wheel||=(t.addEventListener(`wheel`,i.wheel,{passive:!1}),i.wheel):(t.removeEventListener(`wheel`,r.wheel),r.wheel=null),e&2?r.mouseup||=i.mouseup:(this._document.removeEventListener(`mouseup`,r.mouseup),r.mouseup=null),e&4?r.mousedrag||=i.mousedrag:(this._document.removeEventListener(`mousemove`,r.mousedrag),r.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register(q(t,`mousedown`,e=>{if(e.preventDefault(),this.focus(),!(!this.coreMouseService.areMouseEventsActive||this._selectionService.shouldForceSelection(e)))return n(e),r.mouseup&&this._document.addEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.addEventListener(`mousemove`,r.mousedrag),this.cancel(e)})),this._register(q(t,`wheel`,t=>{if(!r.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(t)===!1)return!1;if(!this.buffer.hasScrollback){if(t.deltaY===0)return!1;if(e.coreMouseService.consumeWheelEvent(t,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return this.cancel(t,!0);let n=J.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?`O`:`[`)+(t.deltaY<0?`A`:`B`);return this.coreService.triggerDataEvent(n,!0),this.cancel(t,!0)}}},{passive:!1}))}refresh(e,t){this._renderService?.refreshRows(e,t)}updateCursorStyle(e){this._selectionService?.shouldColumnSelect(e)?this.element.classList.add(`column-select`):this.element.classList.remove(`column-select`)}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,t){this._viewport?this._viewport.scrollLines(e):super.scrollLines(e,t),this.refresh(0,this.rows-1)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){e&&this._viewport?this._viewport.scrollToLine(this.buffer.ybase,!0):this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let t=e-this._bufferService.buffer.ydisp;t!==0&&this.scrollLines(t)}paste(e){V(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}attachCustomWheelEventHandler(e){this._customWheelEventHandler=e}registerLinkProvider(e){return this._linkProviderService.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);let t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return this._selectionService?this._selectionService.hasSelection:!1}select(e,t,n){this._selectionService.setSelection(e,t,n)}getSelection(){return this._selectionService?this._selectionService.selectionText:``}getSelectionPosition(){if(!(!this._selectionService||!this._selectionService.hasSelection))return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){this._selectionService?.clearSelection()}selectAll(){this._selectionService?.selectAll()}selectLines(e,t){this._selectionService?.selectLines(e,t)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;let t=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!t&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(!0),!1;!t&&(e.key===`Dead`||e.key===`AltGraph`)&&(this._unprocessedDeadKey=!0);let n=zc(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),n.type===3||n.type===2){let t=this.rows-1;return this.scrollLines(n.type===2?-t:t),this.cancel(e,!0)}if(n.type===1&&this.selectAll(),this._isThirdLevelShift(this.browser,e)||(n.cancel&&this.cancel(e,!0),!n.key)||e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.key.length===1&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)return!0;if(this._unprocessedDeadKey)return this._unprocessedDeadKey=!1,!0;if((n.key===J.ETX||n.key===J.CR)&&(this.textarea.value=``),this._onKey.fire({key:n.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(n.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey)return this.cancel(e,!0);this._keyDownHandled=!0}_isThirdLevelShift(e,t){let n=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState(`AltGraph`);return t.type===`keypress`?n:n&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,!(this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)&&($c(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let t;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(e.which===null||e.which===void 0)t=e.keyCode;else if(e.which!==0&&e.charCode!==0)t=e.which;else return!1;return!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)?!1:(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,!0)}_inputEvent(e){if(e.data&&e.inputType===`insertText`&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;let t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1}resize(e,t){if(e===this.cols&&t===this.rows){this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure();return}super.resize(e,t)}_afterResize(e,t){this._charSizeService?.measure()}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearAllMarkers(),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 e=1;e<this.rows;e++)this.buffer.lines.push(this.buffer.getBlankLine(_s));this._onScroll.fire({position:this.buffer.ydisp}),this.refresh(0,this.rows-1)}}reset(){this.options.rows=this.rows,this.options.cols=this.cols;let e=this._customKeyEventHandler;this._setup(),super.reset(),this._selectionService?.reset(),this._decorationService.reset(),this._customKeyEventHandler=e,this.refresh(0,this.rows-1)}clearTextureAtlas(){this._renderService?.clearTextureAtlas()}_reportFocus(){this.element?.classList.contains(`focus`)?this.coreService.triggerDataEvent(J.ESC+`[I`):this.coreService.triggerDataEvent(J.ESC+`[O`)}_reportWindowsOptions(e){if(this._renderService)switch(e){case 0:let e=this._renderService.dimensions.css.canvas.width.toFixed(0),t=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${J.ESC}[4;${t};${e}t`);break;case 1:let n=this._renderService.dimensions.css.cell.width.toFixed(0),r=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${J.ESC}[6;${r};${n}t`);break}}cancel(e,t){if(!(!this.options.cancelEvents&&!t))return e.preventDefault(),e.stopPropagation(),!1}};function $c(e){return e.keyCode===16||e.keyCode===17||e.keyCode===18}var el=class{constructor(){this._addons=[]}dispose(){for(let e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()}loadAddon(e,t){let n={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(n),t.dispose=()=>this._wrappedAddonDispose(n),t.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let t=-1;for(let n=0;n<this._addons.length;n++)if(this._addons[n]===e){t=n;break}if(t===-1)throw Error(`Could not dispose an addon that has not been loaded`);e.isDisposed=!0,e.dispose.apply(e.instance),this._addons.splice(t,1)}},tl=class{constructor(e){this._line=e}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new Vt)}translateToString(e,t,n){return this._line.translateToString(e,t,n)}},nl=class{constructor(e,t){this._buffer=e,this.type=t}init(e){return this._buffer=e,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(e){let t=this._buffer.lines.get(e);if(t)return new tl(t)}getNullCell(){return new Vt}},rl=class extends W{constructor(e){super(),this._core=e,this._onBufferChange=this._register(new K),this.onBufferChange=this._onBufferChange.event,this._normal=new nl(this._core.buffers.normal,`normal`),this._alternate=new nl(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 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)}},il=class{constructor(e){this._core=e}registerCsiHandler(e,t){return this._core.registerCsiHandler(e,e=>t(e.toArray()))}addCsiHandler(e,t){return this.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._core.registerDcsHandler(e,(e,n)=>t(e,n.toArray()))}addDcsHandler(e,t){return this.registerDcsHandler(e,t)}registerEscHandler(e,t){return this._core.registerEscHandler(e,t)}addEscHandler(e,t){return this.registerEscHandler(e,t)}registerOscHandler(e,t){return this._core.registerOscHandler(e,t)}addOscHandler(e,t){return this.registerOscHandler(e,t)}},al=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}},ol=[`cols`,`rows`],sl=0,cl=class extends W{constructor(e){super(),this._core=this._register(new Qc(e)),this._addonManager=this._register(new el),this._publicOptions={...this._core.options};let t=e=>this._core.options[e],n=(e,t)=>{this._checkReadonlyOptions(e),this._core.options[e]=t};for(let e in this._core.options){let r={get:t.bind(this,e),set:n.bind(this,e)};Object.defineProperty(this._publicOptions,e,r)}}_checkReadonlyOptions(e){if(ol.includes(e))throw Error(`Option "${e}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw 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 onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||=new il(this._core),this._parser}get unicode(){return this._checkProposedApi(),new al(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||=this._register(new rl(this._core)),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let e=this._core.coreService.decPrivateModes,t=`none`;switch(this._core.coreMouseService.activeProtocol){case`X10`:t=`x10`;break;case`VT200`:t=`vt200`;break;case`DRAG`:t=`drag`;break;case`ANY`:t=`any`}return{applicationCursorKeysMode:e.applicationCursorKeys,applicationKeypadMode:e.applicationKeypad,bracketedPasteMode:e.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:t,originMode:e.origin,reverseWraparoundMode:e.reverseWraparound,sendFocusMode:e.sendFocus,synchronizedOutputMode:e.synchronizedOutput,wraparoundMode:e.wraparound}}get options(){return this._publicOptions}set options(e){for(let t in e)this._publicOptions[t]=e[t]}blur(){this._core.blur()}focus(){this._core.focus()}input(e,t=!0){this._core.input(e,t)}resize(e,t){this._verifyIntegers(e,t),this._core.resize(e,t)}open(e){this._core.open(e)}attachCustomKeyEventHandler(e){this._core.attachCustomKeyEventHandler(e)}attachCustomWheelEventHandler(e){this._core.attachCustomWheelEventHandler(e)}registerLinkProvider(e){return this._core.registerLinkProvider(e)}registerCharacterJoiner(e){return this._checkProposedApi(),this._core.registerCharacterJoiner(e)}deregisterCharacterJoiner(e){this._checkProposedApi(),this._core.deregisterCharacterJoiner(e)}registerMarker(e=0){return this._verifyIntegers(e),this._core.registerMarker(e)}registerDecoration(e){return this._checkProposedApi(),this._verifyPositiveIntegers(e.x??0,e.width??0,e.height??0),this._core.registerDecoration(e)}hasSelection(){return this._core.hasSelection()}select(e,t,n){this._verifyIntegers(e,t,n),this._core.select(e,t,n)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(e,t){this._verifyIntegers(e,t),this._core.selectLines(e,t)}dispose(){super.dispose()}scrollLines(e){this._verifyIntegers(e),this._core.scrollLines(e)}scrollPages(e){this._verifyIntegers(e),this._core.scrollPages(e)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(e){this._verifyIntegers(e),this._core.scrollToLine(e)}clear(){this._core.clear()}write(e,t){this._core.write(e,t)}writeln(e,t){this._core.write(e),this._core.write(`\r
20
- `,t)}paste(e){this._core.paste(e)}refresh(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(e){this._addonManager.loadAddon(this,e)}static get strings(){return{get promptLabel(){return wt.get()},set promptLabel(e){wt.set(e)},get tooMuchOutput(){return Et.get()},set tooMuchOutput(e){Et.set(e)}}}_verifyIntegers(...e){for(sl of e)if(sl===1/0||isNaN(sl)||sl%1!=0)throw Error(`This API only accepts integers`)}_verifyPositiveIntegers(...e){for(sl of e)if(sl&&(sl===1/0||isNaN(sl)||sl%1!=0||sl<0))throw Error(`This API only accepts positive integers`)}},ll=2,ul=1,dl=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),a=window.getComputedStyle(this._terminal.element),o={top:parseInt(a.getPropertyValue(`padding-top`)),bottom:parseInt(a.getPropertyValue(`padding-bottom`)),right:parseInt(a.getPropertyValue(`padding-right`)),left:parseInt(a.getPropertyValue(`padding-left`))},s=o.top+o.bottom,c=o.right+o.left,l=r-s,u=i-c-t;return{cols:Math.max(ll,Math.floor(u/e.css.cell.width)),rows:Math.max(ul,Math.floor(l/e.css.cell.height))}}},fl=`modulepreload`,pl=function(e){return`/`+e},ml={},hl=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=pl(t,n),t=s(t),t in ml)return;ml[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:fl,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},gl=F(`<div class=overlay><div class=modal style=max-width:360px><div class=modal-head><b>🔒 sign in</b><span></span></div><form style=display:flex;flex-direction:column;gap:10px><input id=pw-input type=password placeholder=password autofocus><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:7px 12px;cursor:pointer">unlock</button><span class=muted style=font-size:11px>the token is stored locally and sent as Bearer to this server only`),_l=F(`<div class=themegrid>`),vl=F(`<div class=themepop><label class=trow title="switch automatically when the OS switches appearance — pick which theme to use for each"><input type=checkbox>follow system`),yl=F(`<i class=notifdot>`),bl=F(`<br>`),xl=F(`<span class="badge queued">⏳ <!> of yours queued`),Sl=F(`<span class="badge cron">⏰ `),Cl=F(`<span class=sub>ℹ`),wl=F(`<header class=chan-head><span class=hash>#</span><span class=title></span><span></span><span class=sub> · <!>/<!> · turns <!> · tools </span><span style=margin-left:auto;display:flex;gap:4px>`),Tl=F(`<div class=divider-msg>── beginning of log ──`),El=F(`<div class=divider-msg>loading older events…`),Dl=F(`<details class=reasoning open><summary>💭 thinking </summary><div class="mono thinkscroll">`),Ol=F(`<div class=muted style=font-size:11.5px;margin-bottom:4px>🗜 summarizing older context…`),kl=F(`<div class=content>`),Al=F(`<div class="msg live"><div class=avatar style="background:#5865f233;border:1px solid #5865f266">🫖</div><div class=msg-body><div class=msg-head><span class=author style=color:var(--acc)>agent</span><span class=ts>streaming…`),jl=F(`<div class=feed>`),Ml=F(`<div class="termempty muted">no shell here — + opens one, tabs fill the focused pane`),Nl=F(`<div class=termsplit>`),Pl=F(`<div class="termempty muted">no shell here — click a tab or + to add`),Fl=F(`<div class=termpane>`),Il=F(`<div class=termdrawer><div class=termgrip title="drag to resize · double-click to reset"></div><div class=termbar><div class=termtabs></div><div style=display:flex;gap:4px;align-items:center><span class="muted mono"style=flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap></span></div></div><div class=termbody><div class=termpane>`),Ll=F(`<button class=jump>↓ `),Rl=F(`<div class=cmds>`),zl=F(`<div class=imgstage><span class=muted style=font-size:11px;align-self:center> image<!> attached`),Bl=F(`<label class=forkchip title="inherit the conversation prefix byte-exactly — the sub-agent's provider prefix cache starts warm"><input type=checkbox>fork ctx`),Vl=F(`<span class=muted style=font-size:11.5px;white-space:nowrap>🖼 `),Hl=F(`<div><form><textarea rows=1></textarea><button type=button class="iconbtn maxbtn"></button><button type=submit>send</button><input id=composer-file type=file accept=image/* multiple style=display:none></form><div class=hint>`),Ul=F(`<div class=rightbarbackdrop>`),Wl=F(`<div><nav class=sidebar><div class=agent-list></div><div class=sidebar-footer><div class=footer-row style=justify-content:flex-end><button>🔔</button></div><div class=brand-row><div class=brand>🫖 teapot <span class=version>v</span><span></span></div></div><div class=metrics></div></div></nav><section class=channel></section><aside><div class=rightbarhead><span class=muted>details`),Gl=F(`<div class=notifbackdrop>`),Kl=F(`<button class=editbtn>clear all`),ql=F(`<div class=notiflist>`),Jl=F(`<div class=notifpanel><div class=notifhead>notifications<span style=display:flex;gap:8px;align-items:center><button class=iconbtn title="close notifications">✕`),Yl=F(`<span class=wscount>`),Xl=F(`<div class=wsheader><span class=wscaret>`),Zl=F(`<span class=notifbadge>🔔`),Ql=F(`<span class=subtag>🧩`),$l=F(`<span class=mini-cron>⏰`),eu=F(`<span class=goaldone title="goal done">✓`),tu=F(`<div><span></span><span>`),nu=F(`<span class=caret-spacer>`),ru=F(`<span class=caret>`),iu=F(`<span class=ghosttag title="workspace missing">👻`),au=F(`<span>🧩 `),ou=F(`<label class=trow>system light →<select class=w100>`),su=F(`<label class=trow>system dark →<select class=w100>`),cu=F(`<option>`),lu=F(`<button><span class=swdots>`),uu=F(`<i>`),du=F(`<div class=muted style=display:grid;place-items:center;height:100%>select an agent`),fu=F(`<div class="divider-msg compacting"title="the harness is compressing old turns into notes so work can continue within the context window">🗜 `),pu=F(`<div class=muted style=display:grid;place-items:center;height:100%>no events yet — say something or press ▶ start`),mu=F(`<div class="content muted">thinking…`),hu=F(`<span>⌨ <button class=tabx title="close this shell">✕`),gu=F(`<div><b class=mono></b><span class=muted>`),_u=F(`<div class=cmdrow><b>@</b><span class=muted>`),vu=F(`<span class=imgchip><img><button type=button class=imgx title=remove>✕`),yu=F(`<h3 title="identity + storage locations for this agent">🎛 session`),bu=F(`<div class="card sesscard"><div class=sessrow><span class=k>agent</span><b></b><span></span></div><div class=sessrow><span class=k>workspace</span><span class="mono ellip"></span></div><div class=sessrow><span class=k>session</span><span class=mono>/`),xu=F(`<h3 title="switch provider/model live — applies from the agent's next turn; the list shows context window &amp; pricing from the provider">🧦 model`),Su=F(`<div style=display:flex;gap:6px;align-items:center;margin-top:6px><label class=muted style=font-size:11.5px;white-space:nowrap>effort</label><select style=flex:1;min-width:0><option value>provider default</option></select><button title="apply to this session — takes effect from the agent's next turn">apply`),Cu=F(`<div class=meta style=color:var(--fg)>`),wu=F(`<div class=modelbox><select title="provider (OpenAI-compatible endpoint)"></select><div style=display:flex;gap:4px><input type=text list=model-list style=flex:1;min-width:0><datalist id=model-list></datalist><button title="apply to this session — takes effect from the agent's next turn">apply</button></div><div class=meta>current: `),Tu=F(`<h3>⏯ controls`),Eu=F(`<button title="stop every sub-agent this agent spawned (descendants included)">⏹ subs`),Du=F(`<div class=btnrow><button></button><button title="branch off the conversation here — try things without disturbing the main line">⑂ fork</button><button title="remove agent from teapot (session log stays on disk)">🗑 remove`),Ou=F(`<div class=ctrlrow><label title="auto-continue fires after a round ONLY when all hold: ① this toggle is on ② a goal is set and its status is 'active' ③ the round ended cleanly (no error / not stopped). It stops when the goal is marked done, or if you press ■ stop. Sending any prompt also starts an idle agent regardless."><input type=checkbox>auto-continue</label><span class=muted>loops while goal is active · stops on done / stop`),ku=F(`<span>`),Au=F(`<h3 title="what the agent is working toward — auto-continue keeps looping while the status is 'active'">🎯 goal`),ju=F(`<div class=statrow style=margin-bottom:6px><span class=k>status`),Mu=F(`<div class=card><div class=content>`),Nu=F(`<div class="card verifycard"title="verification contract — finish(goalComplete=true) is audited against these requirements by an independent reviewer before the goal counts as done"><div class=vtitle>🔍 verification contract</div><div class=content>`),Pu=F(`<div class=muted style=font-size:11px;margin-top:4px>stored with the session · the agent reads it via get_goal() · auto-continue loops while status is "working" and stops when marked done`),Fu=F(`<form style=display:flex;flex-direction:column;gap:6px;margin-top:8px;margin-bottom:6px><textarea id=goal-input rows=3 placeholder="set new goal…"style="background:var(--bg-darkest);border:none;border-radius:6px;padding:6px 8px;color:var(--fg);font:inherit;width:100%;resize:vertical"></textarea><textarea id=goal-verify-input rows=2 placeholder="verification contract (optional) — e.g. 'npm test passes; endpoint documented'. finish(goalComplete=true) is then audited against this."title="pi-goal-x-style verification contract — an independent reviewer checks the agent's finish against these requirements"style="background:var(--bg-darkest);border:1px solid var(--bg-light);border-radius:6px;padding:6px 8px;color:var(--fg);font:inherit;font-size:12.5px;width:100%;resize:vertical"></textarea><div style=display:flex;justify-content:flex-end;align-items:center;gap:10px><label class=muted title="queue a harness prompt telling the agent about the new goal at its next turn boundary"style=display:flex;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap;cursor:pointer><input id=goal-notify type=checkbox> notify agent</label><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:4px 12px;cursor:pointer">✓ save goal`),Iu=F(`<span class=badge>/<!> done`),Lu=F(`<h3 title="todo.md — a shared checklist in the session dir. Write tasks like '- [ ] fix login'; the agent ticks them off via set_todo, you edit here. With notify on, it's told at its next turn boundary.">✅ tasks<span class=muted style=text-transform:none;letter-spacing:0>· shared checklist (you + agent)`),Ru=F(`<div class=bartrack style=margin-bottom:6px><div>`),zu=F(`<div style=display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:4px><label class=muted title="queue a harness prompt telling the agent the task list changed"style=display:flex;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap;cursor:pointer><input id=todo-notify type=checkbox checked> notify agent</label><button style="background:var(--ok);border:none;border-radius:6px;color:#fff;padding:4px 12px;cursor:pointer">✓ save tasks`),Bu=F(`<h3 title="latest report_progress snapshot. The harness asks for one after real activity (time AND output gates); errors show under ⚠ problems">📈 progress`),Vu=F(`<h3 title="cumulative billed totals · the cached pill counts tokens served from the provider's prompt cache (far cheaper) · context bar turns orange ≥70% and red ≥85% of the model window">📊 runtime`),Hu=F(`<span class="pill ok">⚡ <!>% cached`),Uu=F(`<div class=statrow><span class=k>cost</span><b>$`),Wu=F(`<div class="card runcard"><div class=statgrid><div class=stat title="LLM turns taken this session"><span>turns</span><b></b></div><div class=stat title="tool calls executed"><span>tools</span><b></b></div><div class=stat title="times old turns were summarized to free context"><span>compacted</span><b></b></div></div><div class=statrow><span class=k>tokens</span><b> in / <!> out`),Gu=F(`<div class=muted style=font-size:11px;text-transform:none;letter-spacing:0>showing <b></b> and the history it inherited before forking`),Ku=F(`<h3>🌿 branches <span class=muted style=text-transform:none;letter-spacing:0>· click to filter the feed`),qu=F(`<h3>⏰ schedule <span class=muted style=text-transform:none;letter-spacing:0>· cron tasks, all agents · edit in settings`),Ju=F(`<span class=badge title="no goal set yet">no goal`),Yu=F(`<button>`),Xu=F(`<div class="card muted">no goal yet — write one below and press ✓ save. Then ▶ start (or any message) sets it in motion.`),Zu=F(`<div><div class=vtitle><span class="meta muted"style=margin-left:auto></span></div><div class=content>`),Qu=F(`<div class=muted>none yet — the harness asks for a report after real activity, and the agent can report_progress anytime`),$u=F(`<div class=progrow><b>recent</b><span class="content inline-md">`),ed=F(`<div class="progrow warn"><b>⚠ problems</b><span class="content inline-md">`),td=F(`<div class=progrow><b>next</b><span class="content inline-md">`),nd=F(`<div class=progrow><b>goal</b><span>`),rd=F(`<div class="card prog"><div class=progrow><b>doing</b><span class="content inline-md"></span></div><div class="meta muted">`),id=F(`<div class=statrow><span class=k>context</span><span class=muted>no window known for this model yet`),ad=F(`<span>% of `),od=F(`<div class=bartrack><div>`),sd=F(`<div class=bartrack style=margin-top:4px><div>`),cd=F(`<div class=statrow title="a compaction pass is running right now — the summarizer's output streams in the timeline"><span class=k>🗜</span><b>compacting…</b><span class=muted style=font-size:11px;color:var(--acc)>`),ld=F(`<div class=ctxblock title="estimated live context vs the model's real window. Past the window, old turns are summarized into notes (compaction); the compact line below shows where that starts."><div class=statrow><span class=k>context</span><b>~<!> tok</b></div><div class=statrow style=margin-top:4px><span class=k>compact</span><b> tok</b><span class=muted style=font-size:11px;color:var(--dim)></span></div><div class=ctrlrow style=margin-top:6px><label title="when on, older turns are automatically summarized when context exceeds the budget"><input type=checkbox>auto-compact</label><span class=muted style=font-size:11.5px>summarizes old turns when budget exceeded</span></div><div class=muted style=font-size:11px;margin-top:4px>compaction starts around ~<!> tok — older turns get summarized, recent ones stay intact`),ud=F(`<div><span></span><span> events`),dd=F(`<div class=muted>no scheduled tasks — add them in ⚙ settings ("scheduled tasks")`),fd=F(`<span title="runs on a forked branch so chatter stays off the main line">⑂`),pd=F(`<div><div class=sched-top><b></b><span class=muted>@</span></div><div class="sched-meta mono"> → next </div><div class="sched-prompt muted">`),md=F(`<div class=muted style=padding:10px>nothing yet — progress, finishes, questions and errors will land here`),hd=F(`<div class=nbody>`),gd=F(`<div><div class=nhead><span class=nicon></span><span class=ntitle></span><span class="meta muted"></span><button class="iconbtn nreadbtn">`),_d=F(`<div><div style=font-size:12.5px;margin-bottom:4px> event(s) came after this prompt — what should happen to them on the new branch?</div><label style=display:flex;gap:6px;align-items:center;font-size:13px;color:var(--fg)><input type=radio name=tail>summarize them into a note the agent can still read</label><label style=display:flex;gap:6px;align-items:center;font-size:13px;color:var(--fg)><input type=radio name=tail>discard them entirely (clean timeline)`),vd=F(`<form style=display:flex;flex-direction:column;gap:10px><textarea id=edit-text class="mono w100"rows=6></textarea><div style=display:flex;justify-content:flex-end;gap:8px><button type=button>cancel</button><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 12px;cursor:pointer">⑂ fork & resend`),yd=F(`<span class=bashelapsed>running… `),bd=F(`<span class=bashelapsed> elapsed`),xd=F(`<span class=thinktimer>`),Sd=F(`<div class=mono>`),Cd=F(`<pre class="mono toolbody">`),wd=F(`<div class=meta>`),Td=F(`<div class=meta>waiting for output…`),Ed=F(`<div class="meta bgjob-note">runs in background — poll with <b>bash_output(job_id=&quot;<!>&quot;)`),Dd=F(`<b>action="kill"`),Od=F(`<div class="meta muted"> bytes — open it from 🗂 files for the full view`),kd=F(`<div class=meta>writing…`),Ad=F(`<pre class="mono toolbody del">`),jd=F(`<pre class="mono toolbody add">`),Md=F(`<div class=meta> · `),Nd=F(`<div class=meta>applying…`),Pd=F(`<pre class="mono toolbody patch">`),Fd=F(`<div>`),Id=F(`<div class="pline meta">… <!> more lines`),Ld=F(`<div class=meta>validating…`),Rd=F(`<a target=_blank rel="noopener noreferrer"referrerpolicy=no-referrer>open ↗`),zd=F(`<span class=muted>`),Bd=F(`<div class=meta>loading…`),Vd=F(`<div class=meta>bundled: `),Hd=F(`<div class=meta>saving…`),Ud=F(`<span class=actor>@`),Wd=F(`<details><summary><b>⚙ </b><span class=meta></span><span class=toolcopy>`),Gd=F(`<div class=divider-msg>⑂ forked from <!> → `),Kd=F(`<div><div class=goalline-label>`),qd=F(`<div class=divider-msg>✅ tasks updated (<!>)`),Jd=F(`<div> → `),Yd=F(`<div class="embed fail"><div class=mono>🛑 runaway: <!> tool failures in a row (limit <!>)</div><div class=meta>last: <!> — `),Xd=F(`<div class="embed warn-embed"title="a round-fatal API error occurred; auto-retry is waiting, then a fresh round starts (onError: retry)"><div class=mono>↻ API error — retrying (attempt <!>) in <!>s…`),Zd=F(`<div class=divider-msg>🗜 compacted: <!> → <!> tok (<!>)`),Qd=F(`<div class=divider-msg title="compaction is rewriting older history — the agent is not stuck">🗜 compacting: summarizing <!> earlier messages from <!> tok (<!>)…`),$d=F(`<button class=editbtn title="withdraw this message — it has not reached the model yet; the text goes back to the input box">✕ cancel`),ef=F(`<button class=editbtn title="edit this prompt — forks the conversation here (later events are dropped or summarized)">✎ edit`),tf=F(`<div class=msg-head><span class=author></span><span class=ts></span><span class=ts>`),nf=F(`<div><div></div><div class=msg-body>`),rf=F(`<span class=grouptime>`),af=F(`<div class=qfree><input type=text><button>reply`),of=F(`<div class=promptimgs>`),sf=F(`<img class=promptimg alt=attachment>`),cf=F(`<details class=reasoning><summary>💭 reasoning</summary><div class=mono>`),lf=F(`<div class=interrupted>⚠ interrupted — partial output kept`),uf=F(`<div class=msgfoot><span>copy summary`),df=F(`<div class=meta>its call is no longer in the loaded events — the run itself finished`),ff=F(`<details><summary><span class=iconmeta>⚙</span><span class=meta></span></summary><div class=mono></div><div class=meta>`),pf=F(`<div class="content muted">Rejected: `),mf=F(`<details class="embed decision"><summary><b>📌 <span class="content inline-md"></span></b><span class=meta>decision logged</span></summary><div class=content>`),hf=F(`<div class=meta style=color:var(--ok)>✓ answered — continuing below`),gf=F(`<div class=qopts>`),_f=F(`<div><div>❓ <div class="content inline-md">`),vf=F(`<button class=qopt>`),yf=F(`<div class=embed style=border-color:var(--ok)><div>📈 <div class="content inline-md">`),bf=F(`<div class="embed fail"><div class=mono>⚠ `),xf=F(`<div class=vtitle style=margin-top:6px>what the agent kept`),Sf=F(`<details class="embed compaction"><summary><b>🗜 context compacted</b><span class=meta> · <!> → <!> tok · `),Cf=F(`<div class="content muted">`),wf=F(`<button type=button><span class=iconbtn-glyph>`),Tf=F(`<button class=copybtn>`),Ef=F(`<div class=overlay><div class=modal><div class=modal-head><b></b><button class=iconbtn>✕`),Df=F(`<span style=color:var(--err);font-size:13px>`),Of=F(`<form style=display:flex;flex-direction:column;gap:10px><label>workspace directory<div style=display:flex;gap:6px><input type=text class="w100 mono"><button type=button>go</button><button type=button title="parent directory">↑</button></div></label><div class=dirlist></div><div style=display:flex;gap:10px><label style=flex:1>agent name <input type=text placeholder="(directory name)"></label><label style="flex:0 1 auto;min-width:0">provider<select></select></label><label style=flex:1>model <input type=text placeholder="(provider default)"></label></div><button type=submit style=align-self:flex-end>create`),kf=F(`<div class=direntry>📁 `),Af=F(`<textarea id=todo-input class="mono todopane-edit"rows=5 placeholder="- task one
21
- - task two"title="shared with the agent \\u2014 it may check items off via set_todo; your unsaved edits win until you save">`),jf=F(`<div class="content mdpreview todopane">`),Mf=F(`<span class=fsize>`),Nf=F(`<div><span class=ficon></span><span class=fname>`),Pf=F(`<h3 title="the agent's workspace — lazy-loaded, dotfiles hidden; click a folder to expand, a file to preview"style=display:flex;align-items:center;gap:6px>🗂 files <span class=muted style=text-transform:none;letter-spacing:0>· `),Ff=F(`<div class=filebox>`),If=F(`<div class=muted style=padding:6px>`),Lf=F(`<img>`),Rf=F(`<div class=mediapreview><div class="meta muted"> preview`),zf=F(`<button title="rendered markdown">👁 preview`),Bf=F(`<button title="edit and save back to the workspace">✎ edit`),Vf=F(`<div class=filetoolbar><button title="syntax-highlighted source">&lt;/> code`),Hf=F(`<div class=fileeditor><textarea class=mono></textarea><div class=filerow-actions><span class=muted> bytes</span><button class=savebtn>`),Uf=F(`<div class=mono style=margin:0;color:var(--dim)>(binary file — inspect it from the terminal)`),Wf=F(`<div class="content mdpreview">`),Gf=F(`<video controls>`),Kf=F(`<audio controls>`),qf=F(`<div class=filepreview>`),Jf=F(`<div class=muted style=padding-top:6px;font-size:11.5px>… truncated (first 100 KB)`),Yf=F(`<div class=muted style=padding:8px;font-size:12px>✨ highlighting <!>…`),Xf=F(`<pre class=mono style=max-height:62vh;overflow:auto;white-space:pre-wrap;margin:0>`),Zf=F(`<div class=muted style=font-size:11.5px;margin-top:-6px>`),Qf=F(`<span style=color:var(--fg)>`),$f=F(`<div class=muted style=font-size:11.5px;margin-top:-8px> models found at this endpoint`),ep=F(`<div class=overlay style=background:var(--bg-darkest)><div class=modal style=max-width:560px><div class=modal-head><b>🫖 welcome to teapot</b></div><p class=muted style="margin:0 0 10px;font-size:13px">first run — pick an OpenAI-compatible provider and you're done. everything below can be changed later in ⚙ settings.</p><form style=display:flex;flex-direction:column;gap:12px><div style=display:flex;gap:6px;flex-wrap:wrap></div><label>base url<input type=text class="w100 mono"list=wiz-preset-urls><datalist id=wiz-preset-urls></datalist></label><label>api key <input type=password class=w100 placeholder="(local providers may not need one)"></label><label>default model<input type=text class="w100 mono"list=wiz-model-list><datalist id=wiz-model-list></datalist></label><fieldset><legend>first agent</legend><label>workspace directory<input type=text class="w100 mono"></label><label title="asks for this password when opening the UI or API from another machine — plain-HTTP LAN traffic is NOT encrypted"style=margin-top:4px>protect the API with a password? <input type=password class=w100 placeholder="(optional — LAN traffic is still plain HTTP)"></label></fieldset><button type=submit style="background:var(--acc);border:none;border-radius:8px;color:#fff;padding:9px 14px;font-weight:600;cursor:pointer">`),tp=F(`<button type=button>`),np=F(`<div class=muted style=font-size:11.5px;margin-top:-8px>models appear here automatically once the endpoint answers GET /models`),rp=F(`<label><input type=number min=0>`),ip=F(`<div class=muted style=font-size:11.5px;margin-top:4px>⚠ configured default provider <code></code> has no provider row here<!> Add a provider named <code></code> or pick a default below; otherwise agents fall back to the first provider.`),ap=F(`<form style=display:flex;flex-direction:column;gap:14px><fieldset><legend>providers</legend><button type=button>+ add custom</button><div style=display:flex;gap:6px;flex-wrap:wrap;margin-top:6px><span class=muted style=font-size:11.5px>quick-add:</span></div><div><label title="agents without an explicit provider use this one"style=display:flex;align-items:center;gap:6px;margin-top:6px>default provider<select><option value>(none — first provider wins)</option></select></label></div></fieldset><fieldset><legend>agent runtime</legend><div class=cfggrid><label title="auto-compact threshold in k tokens. Leave EMPTY to derive per model (75% of its context window) — recommended, since models differ wildly in window size. Set only to force an absolute cap across all models.">compact budget (k tok)<input type=number min=0 placeholder="(derive: 75% of window)"></label></div></fieldset><fieldset><legend>scheduled tasks</legend><button type=button>+ add task</button></fieldset><fieldset><legend>agents (read-only — edit config file or use +)</legend></fieldset><fieldset><legend>live update</legend><div class=cfgrow><span class=muted>current version: </span><button type=button style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 14px;cursor:pointer">update & restart</button><span class=muted style=margin-left:8px;font-size:12px>gracefully stops all agents, spawns new process, then reloads this page</span></div></fieldset><button type=submit style="align-self:flex-end;background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 14px;cursor:pointer">save settings`),op=F(`<div class=cfgrow><input class=cfgname placeholder=name><input placeholder=https://…/v1><input placeholder="api key"type=password><input placeholder="default model"><button type=button class=danger title="remove provider">✕`),sp=F(`<button type=button>+ `),cp=F(`<div class=cfgcol><div class=cfgrow><input placeholder=id><input placeholder="agent id"><input placeholder="every 30m / cron"><label style=display:flex;gap:3px;align-items:center;white-space:nowrap;color:var(--dim);font-size:11px><input type=checkbox>fork</label><button type=button class=danger>✕</button></div><textarea rows=2 placeholder="prompt to send">`),lp=F(`<span class=muted>🧩 sub of @`),up=F(`<div class=cfgrow><b></b><span class=muted>`),dp=new Map;function fp(e){let t=dp.get(e);if(t!==void 0)return t;let n=Ie(e);return dp.set(e,n),dp.size>500&&dp.delete(dp.keys().next().value),n}var pp=[`minimal`,`low`,`medium`,`high`],mp=1100,hp={prompt:{name:`you`,icon:`🟧`,color:`#faa81a`},user:{name:`you`,icon:`🟧`,color:`#faa81a`},message:{name:`agent`,icon:`🫖`,color:`#5865f2`},progress:{name:`progress`,icon:`📈`,color:`#3ba55d`},question:{name:`agent`,icon:`❓`,color:`#5865f2`}},gp={name:`harness`,icon:`📣`,color:`#3ba55d`},[_p,vp]=v(``),yp,Q=e=>{vp(e),clearTimeout(yp),yp=setTimeout(()=>vp(``),3200)},bp=!1,xp=[{key:`dark`,label:`Dark`,mode:`dark`,sw:[`#1a1c22`,`#2b2e39`,`#5865f2`]},{key:`midnight`,label:`Midnight`,mode:`dark`,sw:[`#0d0f18`,`#252a42`,`#8b7cf7`]},{key:`tea`,label:`Milk Tea`,mode:`dark`,sw:[`#241c16`,`#493b2d`,`#d98e32`]},{key:`coffee`,label:`Coffee`,mode:`dark`,sw:[`#191410`,`#403527`,`#c68a4b`]},{key:`matcha`,label:`Matcha`,mode:`dark`,sw:[`#1b2217`,`#3c4a33`,`#8db64e`]},{key:`matrix`,label:`Matrix`,mode:`dark`,sw:[`#060a06`,`#18301d`,`#2fd558`]},{key:`sunset`,label:`Sunset`,mode:`dark`,sw:[`#1c1422`,`#452f52`,`#f2784b`]},{key:`light`,label:`Light`,mode:`light`,sw:[`#eceef4`,`#ffffff`,`#4757d8`]},{key:`strawberry`,label:`Strawberry`,mode:`light`,sw:[`#fbe4ea`,`#fffafb`,`#e05575`]},{key:`ramune`,label:`Ramune`,mode:`light`,sw:[`#ddeff7`,`#fbfeff`,`#1d86ae`]}];function Sp(){let e=``,t=``;try{let n=getComputedStyle(document.documentElement);e=n.getPropertyValue(`--term-bg`).trim(),t=n.getPropertyValue(`--term-fg`).trim()}catch{}return{background:e||`#0d0e12`,foreground:t||`#dcdee4`}}var Cp=e=>{if(e.data?.actor)return{name:`@${String(e.data.actor)}`,icon:`🧩`,color:`#3ba0c9`};if(e.type===`tool_call`||e.type===`tool_result`)return{name:String(e.data?.name??`tool`),icon:`⚙`,color:`#3ba0c9`};if(e.type===`prompt`){let t=String(e.data?.source??`user`);return t===`user`?hp.prompt:t.startsWith(`scheduler:`)?{name:t.slice(10),icon:`📣`,color:`#3ba55d`}:gp}return hp[e.type]??{name:e.type,icon:`•`,color:`#9298a5`}},wp=new Set([`user`,`message`,`prompt`,`tool_call`,`tool_result`,`progress`,`state`,`error`,`fork`,`goal`,`todo`,`question`,`decision`,`compaction`,`system_note`]),Tp=new Set([`system_note`]),Ep=e=>{let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`};async function $(e,t){let n=localStorage.getItem(`teapot.token`),r=new Headers(t?.headers);n&&!r.has(`authorization`)&&r.set(`authorization`,`Bearer ${n}`);let i=await fetch(e,{...t,headers:r});if(!i.ok){i.status===401&&window.dispatchEvent(new CustomEvent(`teapot:unauthorized`));let t=null;try{t=await i.json()}catch{}let n=(t&&typeof t==`object`&&`error`in t?String(t.error):``)||`${e}: HTTP ${i.status}`;throw Object.assign(Error(n),{payload:t})}return i.json()}var Dp=location.hash.match(/[#&]token=([^&]+)/);Dp&&(localStorage.setItem(`teapot.token`,decodeURIComponent(Dp[1])),history.replaceState(null,``,location.pathname+location.search));var Op=()=>{let e=localStorage.getItem(`teapot.token`);return e?`?token=${encodeURIComponent(e)}`:``};function kp(){let[e,t]=v([]),[n,r]=v(null),[i,a]=v(``),[o,s]=v(new Map),[c,l]=v(new Map),u=!1;async function d(e=!1){if(!(u&&!e)){u=!0;try{let e=await $(`/api/sessions`),t=new Map,n=new Map;for(let r of e.sessions??[]){t.set(r.id,r.agentId);let e=n.get(r.agentId)??[];e.push(r.id),n.set(r.agentId,e)}s(t),l(n)}catch{}}}let[f,p]=v([]),[m,h]=v(0),[g,_]=v([]),[ee,te]=v(null),T=new Map,[ne,E]=v(T.get(n()??``)??``),D=e=>{E(e);let t=n();t&&(e?T.set(t,e):T.delete(t))},[O,re]=v({providers:{}}),[k,ie]=v(!1),[ae,oe]=v(!1),se=()=>window.innerWidth<=mp,[ce,A]=v(se());C(()=>{let e=()=>A(se());window.addEventListener(`resize`,e),w(()=>window.removeEventListener(`resize`,e)),e()}),C(()=>{let e=0,t=()=>{e||=requestAnimationFrame(()=>{e=0;let t=$n();if(!t)return;let n=dt(),r=n||!t.scrollHeight?null:le(t);!n&&!r||requestAnimationFrame(()=>{if(!t.isConnected)return;if(n){t.scrollTop=t.scrollHeight,mt(0);return}let e=r&&t.querySelector(r.sel);if(e){let n=e.getBoundingClientRect().top-r.top;n&&(t.scrollTop+=n)}})})};window.addEventListener(`resize`,t),w(()=>{window.removeEventListener(`resize`,t),e&&cancelAnimationFrame(e)})});function le(e){let t=e.querySelectorAll(`[data-eid]`),n=e.getBoundingClientRect().top;for(let e of t){let t=e.getBoundingClientRect();if(t.bottom>n){let n=e.dataset.eid??``;return n?{sel:`[data-eid="${CSS.escape(n)}"]`,top:t.top}:null}}return null}let[j,ue]=v(localStorage.getItem(`teapot.panel`)===null?window.innerWidth>mp:localStorage.getItem(`teapot.panel`)===`1`),de=e=>{ue(e),localStorage.setItem(`teapot.panel`,e?`1`:`0`)},fe=()=>de(!j()),pe=()=>{j()&&de(!1)},[me,he]=v(!1),[ge,_e]=v(localStorage.getItem(`teapot.theme`)??`dark`),[ve,be]=v(localStorage.getItem(`teapot.theme.auto`)===`1`),[xe,Se]=v(localStorage.getItem(`teapot.theme.light`)??`light`),[Ce,F]=v(localStorage.getItem(`teapot.theme.dark`)??`dark`),we=typeof window.matchMedia==`function`?window.matchMedia(`(prefers-color-scheme: light)`):null,[ke,Ae]=v(we?.matches??!1);C(()=>{let e=e=>Ae(e.matches);we?.addEventListener(`change`,e),w(()=>we?.removeEventListener(`change`,e))}),b(()=>{let e=ve()?ke()?xe():Ce():ge();document.documentElement.dataset.theme=e,document.documentElement.dataset.appearance=xp.find(t=>t.key===e)?.mode??`dark`});let[je,Me]=v(``),[Ne,Pe]=v(``),[Fe,Le]=v(``);b(()=>{let t=n();Le(S(()=>e().find(e=>e.id===t)?.reasoningEffort??``))});let[Re,ze]=v([]),Be=()=>Object.keys(O().providers??{});async function Ve(e){if(e)try{let t=await $(`/api/models?provider=${encodeURIComponent(e)}`);ze(t.models??[])}catch{ze([])}}let Ge=e=>{let t={text:`📄`,image:`🖼️`,audio:`🔊`,video:`🎬`,file:`📎`},n=e=>(e??[`text`]).map(e=>t[e]??e).join(``);return e?.modalities?`${n(e.modalities.input)} → ${n(e.modalities.output)}`:``},$e=()=>{let e=Ne().trim()||V()?.model||``;if(!e)return``;let t=Re().find(t=>t.id===e);if(!t)return``;let n=[],r=Ge(t);r&&r!==`📄 → 📄`&&n.push(r),t.contextLength&&n.push(`ctx ${zp(t.contextLength)} tok`);let i=e=>e===void 0?``:`${e*1e6>=10?Math.round(e*1e6):+(e*1e6).toFixed(1)}/M`;if(t.pricing){let e=i(t.pricing.prompt),r=i(t.pricing.completion);e&&r?n.push(`${e} in · ${r} out`):(e||r)&&n.push(i(t.pricing.prompt??t.pricing.completion))}return n.join(` · `)},tt=null;b(()=>{let t=n();if(!t)return;let r=e().find(e=>e.id===t),i=r?.provider||O().defaultProvider||Be()[0]||``;if(r){if(t!==tt)tt=t,S(()=>je())!==i&&(Me(i),Ve(i)),S(()=>Ne())&&Pe(``);else{let e=S(()=>je());!S(()=>Ne())&&e!==i&&(Me(i),Ve(i))}}});let[nt,it]=v(!1),[dt,ft]=v(!0),[pt,mt]=v(0),[_t,vt]=v(null),yt=()=>Ct().startsWith(`[compact] `),bt=()=>yt()?Ct().slice(10):Ct();b(()=>{_t()||B(e=>e?.text.startsWith(`[compact] `)?null:e)}),b(()=>{_t(),dt()&&requestAnimationFrame(()=>requestAnimationFrame(()=>{dt()&&tr(!0)}))});let[xt,St]=v(new Map),z=()=>{let e=n();return e?xt().get(e)??null:null},B=e=>{let t=n();t&&St(n=>{let r=new Map(n),i=typeof e==`function`?e(n.get(t)??null):e;return i?r.set(t,{...i,at:Date.now()}):r.delete(t),r})},[Ct,wt]=v(``),[Tt,Et]=v(0),Dt=()=>Tt(),[Ot,kt]=v(``),At;b(()=>{if(!z()){clearTimeout(At),At=void 0,wt(``),kt(``);return}At||=setTimeout(()=>{At=void 0,wt(z()?.text??``),kt(z()?.reasoning??``)},(z()?.text.length??0)>2e4?250:(z()?.text.length??0)>6e3?120:60)}),w(()=>clearTimeout(At)),b(()=>{let t=e();St(e=>Je(e,e=>t.find(t=>t.id===e)?.status)),Et(0)}),b(()=>{let e=Ct(),t=z()?.reasoning??``;!e&&!t||dt()&&requestAnimationFrame(()=>{dt()&&tr(!0)})}),b(()=>{let e=V()?.pendingPrompts??0,t=V()?.pendingPromptIds,n=Lt(),r=Rt(n),i=gt(r,e,t);i!==r&&zt(n,i)}),b(()=>{let e=V()?.pendingPromptQueue;if(!e?.length)return;let t=Lt(),n=new Set(Rt(t).map(e=>e.promptId).filter(Boolean)),r=e.filter(e=>e.id&&!n.has(e.id));r.length&&zt(t,[...r.map(e=>({id:`p${e.id}`,text:e.text,at:Number(e.at)||Date.now(),promptId:e.id,images:e.images?.map(e=>e.url),...e.source?{source:e.source}:{}})),...Rt(t)])}),b(()=>{if(!n())return;let e=()=>{document.visibilityState===`visible`&&requestAnimationFrame(()=>{er()&&(ft(!0),mt(0),tr(!0))})};document.addEventListener(`visibilitychange`,e),w(()=>document.removeEventListener(`visibilitychange`,e))});let V=x(()=>e().find(e=>e.id===n())),jt=()=>{let e=V();return e?e.live??(e.status===`running`||e.status===`waiting`):!1},[Mt,Nt]=v(null);x(()=>{let e=new Set;for(let t of f())t.type===`tool_result`&&t.data?.name===`ask_user`&&e.add(String(t.data.callId));return e});let Pt=new Map,[Ft,It]=v([]),Lt=()=>i()||n()||`?`,Rt=e=>Pt.get(e)??[],zt=(e,t)=>{let n=new Set,r=[];for(let e=t.length-1;e>=0;e--){let i=t[e],a=i.promptId;if(!a){r.push(i);continue}n.has(a)||(n.add(a),r.push(i))}r.reverse(),r.length===0?Pt.delete(e):Pt.set(e,r),Lt()===e&&It(r)},[Bt,Vt]=v([]),[Ht,Ut]=v(localStorage.getItem(`teapot.hideGhosts`)===`1`),[Wt,Gt]=v(!1),H=()=>Bt().filter(e=>!e.read).length,Kt=e=>{Vt(t=>{let n=!1,r=t.map(t=>t.read||t.agentId!==e?t:(n=!0,{...t,read:!0}));return n?r:t})},qt=t=>{let n=Bt().filter(e=>!e.read&&e.agentId===t).length;for(let r of e())r.parent===t&&(n+=qt(r.id));return n},Jt=0,Yt=e=>{Vt(t=>[{...e,id:`n${++Jt}`,at:Date.now(),read:!1},...t].slice(0,50))},Xt=(t,n)=>{let r=e().find(e=>e.id===t)?.id??t,i=typeof n.id==`string`?n.id:void 0;n.type===`message`&&n.data?.final===!0?Yt({agentId:t,kind:`finish`,title:`${r} finished`,body:String(n.data.content??``).slice(0,300),eventId:i}):n.type===`question`?Yt({agentId:t,kind:`question`,title:`${r} asks a question`,body:String(n.data.question??``).slice(0,300),eventId:i}):n.type===`error`?Yt({agentId:t,kind:`error`,title:`${r} hit an error`,body:String(n.data.message??``).slice(0,300),eventId:i}):n.type===`progress`&&Yt({agentId:t,kind:`progress`,title:`${r}: ${String(n.data.doing??`progress`)}`.slice(0,120),body:[n.data.recent&&`recent: ${n.data.recent}`,n.data.next&&`next: ${n.data.next}`].filter(Boolean).join(` · `).slice(0,300),eventId:i})},Zt=e=>{let t=document.querySelector(`[data-eid="${e}"]`);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.classList.add(`flash-target`),setTimeout(()=>t.classList.remove(`flash-target`),1600))},Qt=x(()=>{let e=new Map,t=new Set,n=new Map,r=new Map;for(let i of f())if(wp.has(i.type)){if(i.type===`tool_call`){let e=n.get(i.data.callId)??[];e.push(i),n.set(i.data.callId,e)}else if(i.type===`tool_result`){let a=n.get(i.data.callId)?.shift();a?(e.set(a.id,i),t.add(i.id)):r.set(i.id,i)}}return{resFor:e,consumed:t,orphanCalls:r}}),[$t,en]=v(new Set),tn=e=>{e&&en(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},nn=()=>en(new Set),rn=x(()=>ht(f(),$t())),an=x(()=>{let{consumed:e}=Qt(),t=``;for(let e of f()){if(e._prevKind=t,!wp.has(e.type))continue;let n=e.data??{};(e.type!==`message`||String(n.content??``).trim()!==``||String(n.reasoning??``).trim()===``)&&(t=e.type===`tool_result`?`tool`:e.type)}let n=f().filter(t=>{if(t.type===`sub`)return!0;if(!wp.has(t.type))return!1;let n=t.type===`tool_call`||t.type===`tool_result`?String(t.data?.name??``):``;if(n===`report_progress`||n===`ask_user`||n===`record_decision`)return!1;if(t.type===`tool_result`)return!e.has(t.id);if(t.type===`message`){let e=String(t.data?.content??``);return e.trim()===``&&String(t.data?.reasoning??``).trim()!==``&&t._prevKind===`tool`||t.data?.progressEcho||!t.data?.final&&e.trim()===`(tool call)`?!1:e.trim()!==``||String(t.data?.reasoning??``).trim()!==``||!!t.data?.final}return!0}),r=[];for(let e of n)if(e.type===`sub`){let t=e.data,n=String(t?.type??`message`);if(n===`state`)continue;r.push({...e,type:n,data:{...t?.data,actor:t?.sub}})}else r.push(e);let i=e=>String(e??``).replace(/\s+/g,` `).trim().toLowerCase(),a=[];for(let e=0;e<r.length;e++){let t=r[e];if(t.type===`message`&&t.data?.role===`assistant`){let n=r[e-1],a=i(t.data.content);if(n?.type===`progress`){let e=n.data;if((a.includes(i(e.doing))||e.recent&&a.includes(i(e.recent)))&&a.length<=Math.max(200,i(e.doing).length*3))continue}if(n?.type===`decision`){let e=n.data,t=i(e.decision);if(t&&a.includes(t)&&a.length<=Math.max(300,t.length*3))continue}}a.push(t)}let o=new Set,s=new Set,c=new Map,l=new Map;for(let e of a){let t=e.data?.promptId;t&&(e.type===`prompt`&&e.data?.source===`user`&&s.add(String(t)),e.type===`system_note`&&e.data?.event===`prompt-delivered`&&(o.add(String(t)),c.set(String(t),e.seq)),e.type===`system_note`&&e.data?.event===`prompt-cancelled`&&l.set(String(t),e.seq))}let u=new Set;for(let e of Ft())e.promptId&&!o.has(e.promptId)&&u.add(e.promptId);let d=a.filter(e=>{if(e.type!==`prompt`||e.data?.source!==`user`)return!0;let t=String(e.data?.promptId??``);return t===``||!u.has(t)});for(let e=0;e<d.length;e++){let t=d[e];if(t.type!==`prompt`||t.data?.source!==`user`)continue;let n=String(t.data?.promptId??``),r=l.get(n);r!==void 0&&t.data&&(t.data.cancelled=!0);let i=c.get(n)??0,a=Math.max(i,r??0)||void 0;d[e]=a===void 0?{...t,seq:Qe(d)}:Ze(t,a)}return Xe(d,Ft().filter(e=>!e.promptId||!(o.has(e.promptId)&&s.has(e.promptId))).map(e=>sn(e)))}),on=new Map;function sn(e){let t=`${e.id}:${e.sent?`s`:`p`}`,n=on.get(t);if(n)return n;on.size>64&&on.clear();let r={id:e.id,seq:2**53-1,ts:new Date(e.at).toISOString(),session:V()?.session??``,branch:V()?.branch??`br0`,parent:null,type:`prompt`,data:{source:e.source??`user`,text:e.text,pending:!e.sent,...e.images?.length?{images:e.images}:{},...e.promptId?{promptId:e.promptId}:{}}};return on.set(t,r),r}let cn=()=>$(`/api/config`).then(re).catch(()=>{}),[ln,un]=v(!1);C(()=>{let e=()=>un(!0);window.addEventListener(`teapot:unauthorized`,e),w(()=>window.removeEventListener(`teapot:unauthorized`,e))});let[dn,fn]=v(``),[pn,mn]=v(!1),[hn,gn]=v(!1),_n=``;b(()=>{let t=n(),r=e().find(e=>e.id===t)?.todo??``;t&&t!==_n?(_n=t,gn(!1),fn(r)):t&&!hn()&&fn(r)});let vn=async()=>{let e=document.getElementById(`todo-notify`)?.checked??!0;if(n())try{await $(`/api/agents/${n()}/todo`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:dn(),notify:e})}),gn(!1),mn(!0),Q(`tasks saved${e&&dn().trim()?` & notification queued`:``}`),xn()}catch(e){Q(`save failed: ${e.message}`)}},yn=x(()=>{let e=0,t=0;for(let n of dn().split(`
22
- `)){let r=n.match(/^\s*[-*+] \[([ xX])\]/);r&&(e++,r[1].toLowerCase()===`x`&&t++)}return{total:e,done:t}});function bn(e,t){let n=new Map(e.map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return t&&JSON.stringify(t)===JSON.stringify(e)?t:e})}let xn=()=>$(`/api/agents`).then(e=>{let n=!1;t(t=>(t.length!==(e.agents??[]).length&&(n=!0),(e.agents??[]).some(e=>!t.some(t=>t.id===e.id))&&(n=!0),bn(t,e.agents??[]))),n&&d()}).catch(()=>{}),Sn=()=>$(`/api/metrics`).then(te).catch(()=>{}),[Cn,wn]=v([]),Tn=()=>$(`/api/tasks`).then(e=>wn(e.tasks)).catch(()=>{}),En=e=>Cn().filter(t=>t.agent===e),[Dn,On]=v((()=>{try{let e=JSON.parse(localStorage.getItem(`teapot.collapsed`)??`[]`);return new Set(e.filter(e=>typeof e==`string`&&!e.startsWith(`chat:`)))}catch{return new Set}})()),kn=e=>{let t=new Set(Dn());t.has(e)?t.delete(e):t.add(e),On(t),localStorage.setItem(`teapot.collapsed`,JSON.stringify([...t]))},An=t=>ct(e(),t),[jn,Mn]=v((()=>{try{let e=JSON.parse(localStorage.getItem(`teapot.wsCollapsed`)??`[]`),t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];if(Number(localStorage.getItem(`teapot.wsCollapsed.v`)??`0`)<2){let e=t.filter(e=>!e.startsWith(`chat:`));return t.length-e.length>0&&localStorage.setItem(`teapot.wsCollapsed`,JSON.stringify(e)),localStorage.setItem(`teapot.wsCollapsed.v`,`2`),new Set(e)}return new Set(t)}catch{return new Set}})()),Nn=x(()=>{let e=new Set;for(let t of jn())t.startsWith(`chat:`)&&e.add(t);return e}),U=x(()=>rt(e(),Dn(),Ht(),Nn())),Pn=(t,r,i,a)=>{let o=new Set(jn());if(i)o.delete(t),a&&o.delete(a);else{o.add(t),a&&o.delete(a);let i=n();i&&(t===`chat:${i}`||An(e().find(e=>e.id===i))===t)&&Q(`hid ${r} — click the header to show it`)}Mn(o);try{localStorage.setItem(`teapot.wsCollapsed`,JSON.stringify([...o]))}catch{}},Fn=e=>e.replace(/\/+$/,``).split(/[/\\]/).pop()||e,W=e=>{let t=In().get(e)??0;return`${t} chat${t===1?``:`s`}`},In=x(()=>lt(e())),Ln=x(()=>ut(e(),U(),jn())),Rn=2e3,[G,zn]=v(null),Bn=new Map;function Vn(e){return`${i()||(n()??`?`)}:${e.id}`}function Hn(e){let t=Array.from({length:e.length});for(let n=0;n<e.length;n++){let r=e[n],i=Vn(r),a=Bn.get(i);if(t[n]=a??r,!a&&(Bn.set(i,r),Bn.size>6e3)){let e=Bn.keys().next().value;e!==void 0&&Bn.delete(e)}}return t}let[Un,Wn]=v(!1),[Gn,Kn]=v(!1),qn=0,Jn=-1;function Yn(e){p(t=>{let n=new Map;for(let e of t)n.set(e.id,e);for(let t of Hn(e))n.has(t.id)||n.set(t.id,t);return[...n.values()].sort((e,t)=>e.seq-t.seq)})}async function Xn(){let e=n();if(!e||Gn()||Un())return;if(f().length>=m()){Kn(!0);return}let t=()=>{let e=$n();return e&&e.clientHeight>0?e:null},r=0;for(;r++<20&&!Gn()&&n()===e;){let r=t();if(r&&r.scrollHeight>r.clientHeight+40)return;if(f().length>=m()){Kn(!0);return}let i=f().length;if(await Zn(),f().length===i)return;dt()&&n()===e&&tr(!0)}}async function Zn(){let e=n(),t=f()[0];if(!(!e||!t||Un()||Gn())){Wn(!0);try{let r=$n(),a=r?.scrollHeight??0,o=r?.scrollTop??0,s=G(),c=i(),l=c&&c!==e?`&session=${encodeURIComponent(c)}`:``,u=(await $(`/api/agents/${e}/events?limit=${Rn}&before=${encodeURIComponent(t.id)}${l}${s?`&branch=${encodeURIComponent(s)}&lineage=true`:``}`)).events??[];if(u.length===0){Kn(!0);return}if(n()!==e||f()[0]?.id!==t.id)return;Yn(u),requestAnimationFrame(()=>{if(n()===e){let e=$n();e&&(e.scrollTop=o+(e.scrollHeight-a))}})}catch{}finally{Wn(!1)}}}async function Qn(e,t){let r=qn,a=t??i()??``;try{let t=G(),i=r!==Jn||!g().length,o=a&&a!==e?`&session=${encodeURIComponent(a)}`:``,[s,c,l]=await Promise.all([$(`/api/agents/${e}/events?limit=${Rn}${o}${t?`&branch=${encodeURIComponent(t)}&lineage=true`:``}`),i?$(`/api/agents/${e}/branches`):Promise.resolve({branches:g()}),$(`/api/agents/${e}/skills`).catch(()=>({skills:[]}))]);if(i&&(Jn=r),r!==qn||n()!==e)return;p(e=>{let t=new Map;for(let n of e)t.set(n.id,n);for(let e of Hn(s.events))t.set(e.id,e);return[...t.values()].sort((e,t)=>e.seq-t.seq)}),h(s.total??s.events.length),_(c.branches),ni(l.skills??[])}catch{}}function $n(){return document.querySelector(`.feed`)}function K(){let e=document.querySelector(`.composer textarea`);return 24+Math.min(Math.max((e?.scrollHeight??0)-(e?.clientHeight??0),0),160)}function er(){let e=$n();return!e||e.scrollHeight-e.scrollTop-e.clientHeight<K()}function tr(e=!1){let t=$n();t&&(e||dt())&&(t.scrollTop=t.scrollHeight,mt(0))}let nr=new Map;function rr(t,n){if(n&&c().get(t)?.includes(n))return n;let r=e().find(e=>e.id===t)?.session;return r&&c().get(t)?.includes(r)?r:c().get(t)?.[0]??null}async function ir(e,t=!0,o){let s=n(),l=i(),u=f(),g=m();qn++,c().size||d();let _=rr(e,o)??e;if(s!==e||_!==l){if(l&&u.length&&(nr.set(l,{events:u,total:g,at:Date.now()}),nr.size>6)){let e=[...nr.entries()].sort((e,t)=>e[1].at-t[1].at)[0];e&&nr.delete(e[0])}p([]),Bn.clear(),nn(),vt(null),mt(0),ft(!0),li=!1,ui=void 0}r(e),a(_),D(T.get(e)??``),zn(null),Kn(!1),Wn(!1),zt(l||s||`?`,Ft()),It(Rt(_||e)),localStorage.setItem(`teapot.session`,e),mr(_,t);let v=nr.get(_);v?.events.length&&(Hn(v.events),p(Hn(v.events)),h(v.total),requestAnimationFrame(()=>{n()===e&&tr(!0)})),$(`/api/agents/${e}/load`,{method:`POST`}).then(xn).catch(()=>{}),await Qn(e,_),n()===e&&(St(t=>{let n=t.get(e)??null,r=Ye(n,f(),V()?.status);if(r===n)return t;let i=new Map(t);return r?i.set(e,r):i.delete(e),i}),vt(V()?.ctx?.compacting?{phase:String(V().ctx.compacting)}:null),requestAnimationFrame(()=>{n()===e&&tr(!0)}),Xn())}let[ar,or]=v(!1),sr=null,cr=null;w(()=>sr?.close());let lr=!1,ur=null;document.addEventListener(`visibilitychange`,()=>ur?.()),w(()=>{ur=null});let dr=!0;function fr(){dr=!0;let r=location.protocol===`https:`?`wss://`:`ws://`,i=new WebSocket(`${r}${location.host}/api/ws${Op()}`);sr=i,i.onopen=()=>{if(or(!0),dr){dr=!1;return}lr=!0,document.visibilityState===`visible`&&o()},i.onclose=()=>{or(!1),setTimeout(fr,1500)},i.onerror=()=>i.close();let a=new Set([`state`,`usage`,`session_start`]);i.onmessage=r=>{let s=JSON.parse(r.data);if(s.kind===`ping`){try{i.send(JSON.stringify({kind:`pong`}))}catch{}return}if(s.kind!==`pong`){if(s.kind===`hello`&&Array.isArray(s.agents)){t(e=>bn(e,s.agents));let n=e();St(e=>Je(e,e=>n.find(t=>t.id===e)?.status));return}if(s.kind===`event`&&We(s.event)){St(e=>Ue(e,s.agentId));return}if(s.kind===`llm-delta`){if(St(e=>He(e,s.agentId,s)),s.agentId===n()){let e=String(s.reasoning??``),t=String(s.text??``);e&&!t?Tt()||Et(Date.now()):(t||!e&&Tt())&&Et(0)}return}if(s.kind===`compaction-progress`){if(s.agentId!==n())return;s.phase===`done`?vt(null):vt({phase:s.phase,summarized:s.summarized});return}if(s.kind===`agent-update`&&s.snapshot){t(e=>{let t=e.findIndex(e=>e.id===s.snapshot.id),n=s.snapshot;return t===-1?[...e,n]:bn(e,e.map((e,n)=>n===t?s.snapshot:e))});return}if(s.kind===`event`){let e=s.event?.type,t=s.event?.data??{};if((e===`system_note`&&t.event===`prompt-delivered`&&s.agentId===n()||e===`system_note`&&t.event===`prompt-cancelled`&&s.agentId===n())&&zt(Lt(),Ft().filter(e=>e.promptId!==t.promptId)),a.has(e)&&!Tp.has(e)||(Xt(s.agentId,s.event),s.event?.agent!==n()))return}if(document.visibilityState===`hidden`){lr=!0;return}cr||=setTimeout(o,120)}},lr=!1;let o=async()=>{if(cr=null,await xn(),await Sn(),n()){let e=f().at(-1)?.id,t=m();if(await Qn(n()),f().at(-1)?.id!==e){let e=z();e&&e.text?Ke({text:e.text.trim(),reasoning:``,at:e.at},f(),V()?.status)&&B(null):e&&!e.text&&V()?.status!==`running`&&B(null),dt()?(tr(!0),Kt(n())):mt(pt()+Math.max(0,m()-t))}}};ur=()=>{document.visibilityState===`visible`&&lr&&(lr=!1,o())}}let pr=()=>decodeURIComponent(location.pathname.split(`/`)[2]??``);function mr(e,t=!0){let n=`/session/${encodeURIComponent(e)}`;t?history.pushState(null,``,n):history.replaceState(null,``,n)}window.addEventListener(`popstate`,()=>{let e=pr(),t=o().get(e);t&&(t!==n()||e!==i())&&ir(t,!1,e||null)}),b(()=>{let e=V(),t=e?`${jt()?`▶ `:e.status===`error`?`⚠ `:``}${e.id} · teapot`:`teapot`;document.title=H()>0?`(${H()}) ${t}`:t});let hr=()=>k()||ae()||me()||Mt()!==null||se()&&j();window.addEventListener(`keydown`,e=>{let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)){e.key===`Escape`&&t.blur();return}if(e.key===`Escape`){if(k()){ie(!1);return}if(ae()){oe(!1);return}if(me()){he(!1);return}if(Mt()){Nt(null);return}if(se()&&j()){pe();return}let e=V();if(e&&jt()){$(`/api/agents/${e.id}/stop`,{method:`POST`}).then(xn);return}return}if(!hr()){if(e.key===`/`)e.preventDefault(),document.querySelector(`.composer textarea`)?.focus();else if(e.key===`d`)fe();else if(e.key===`t`)vr();else if(e.key===`ArrowDown`||e.key===`ArrowUp`){let t=U().map(e=>e.a);if(t.length===0)return;e.preventDefault();let r=t.findIndex(e=>e.id===n()),i=e.key===`ArrowDown`?Math.min(r+1,t.length-1):Math.max(r-1,0);i!==r&&ir(t[i].id)}}});let[gr,_r]=v(localStorage.getItem(`teapot.term`)===`1`),vr=()=>{let e=!gr();_r(e),localStorage.setItem(`teapot.term`,e?`1`:`0`)},[yr,br]=v([]),[xr,Sr]=v(0),[Cr,wr]=v(-1),[Tr,Er]=v(!1),[Dr,Or]=v(0),[kr,Ar]=v(Number(localStorage.getItem(`teapot.termH`))||Math.max(220,Math.round(window.innerHeight*.35))),jr=new Map,Mr=0,Nr=[null,null],Pr=()=>yr()[Dr()===0?xr():Cr()]??null;function Fr(e){if(!yr()[e])return;let t=Dr(),n=t===0?xr():Cr(),r=t===0?Cr():xr(),i=e=>t===0?Sr(e):wr(e),a=e=>t===0?wr(e):Sr(e);if(r===e){a(n),i(e);return}n!==e&&i(e)}let Ir=()=>Lr();function Lr(e){let t=e??n();if(!t)return;let r=yr().filter(e=>e.agentId===t).length;if(r>=10){Q(`max 10 shells per agent (${t}) — that's already a lot`);return}let i={key:`${t}#${++Mr}`,agentId:t,title:r===0?t:`${t}·${r+1}`};br(e=>[...e,i]);let a=yr().length;Dr()===0?Sr(a):wr(a)}function Rr(e){let t=yr()[e];if(!t)return;let n=jr.get(t.key);if(n){n.ro?.disconnect();try{n.ws.close()}catch{}n.term.dispose(),jr.delete(t.key)}let r=yr().filter((t,n)=>n!==e);br(r);let i=t=>t===e?-1:t>e?t-1:t;Sr(e=>Math.min(i(e),r.length-1)),wr(e=>e===-1?-1:Math.min(i(e),r.length-1))}function zr(){for(let[,e]of jr){e.ro?.disconnect();try{e.ws.close()}catch{}e.term.dispose()}jr.clear()}function Br(e,t){let n=jr.get(e.key);if(n)n.el.parentElement!==t&&(t.appendChild(n.el),setTimeout(()=>{try{n.fit()}catch{}},30));else{let r=document.createElement(`div`);r.className=`termsession`,t.appendChild(r);let i=new cl({cursorBlink:!0,fontSize:12.5,fontFamily:`ui-monospace, Menlo, Consolas, monospace`,theme:Sp()}),a=new dl;i.loadAddon(a),i.open(r);let o=location.protocol===`https:`?`wss://`:`ws://`,s=new WebSocket(`${o}${location.host}/api/agents/${e.agentId}/term${Op()}`);s.onmessage=e=>{let t=JSON.parse(e.data);t.kind===`data`?i.write(t.data):t.kind===`exit`&&i.write(`\r\n\x1b[2m[terminal exited ${t.code??``}]\x1b[0m\r\n`)},i.onData(e=>{s.readyState===WebSocket.OPEN&&s.send(JSON.stringify({kind:`input`,data:e}))});let c={cols:0,rows:0},l=[],u=()=>{try{a.fit()}catch{}(i.cols!==c.cols||i.rows!==c.rows)&&s.readyState===WebSocket.OPEN&&(c={cols:i.cols,rows:i.rows},s.send(JSON.stringify({kind:`resize`,cols:i.cols,rows:i.rows})))},d=new ResizeObserver(()=>{l[0]&&clearTimeout(l[0]),l[0]=setTimeout(u,250)});d.observe(r),setTimeout(u,60),n={el:r,term:i,fit:a,ws:s,ro:d},jr.set(e.key,n)}return n}function Vr(e){let t=Nr[e];if(!t)return;let n=yr()[e===0?xr():Cr()];if(!n){[...jr.values()].some(e=>e.el.parentElement===t)&&t.replaceChildren();return}let r=Br(n,t);for(let[e,r]of jr)e!==n.key&&r.el.parentElement===t&&r.el.remove();requestAnimationFrame(()=>{r.el.parentElement!==t&&t.appendChild(r.el);try{r.fit()}catch{}if(Dr()===(e===0?0:1))try{r.term.focus()}catch{}})}b(()=>{yr(),Tr(),xr(),Cr(),kr(),requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})});let Hr=null;b(()=>{if(!gr())return;let e=n();if(e&&e!==Hr){if(Hr=e,!yr().some(t=>t.agentId===e))Lr(e);else{let t=-1;yr().forEach((n,r)=>{n.agentId===e&&(t=r)}),t>=0&&Fr(t)}}});let Ur=e=>{e.preventDefault();let t=e.clientY,n=kr(),r=e=>{let r=Math.min(Math.max(n-(e.clientY-t),140),Math.round(window.innerHeight*.85));Ar(r)},i=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),localStorage.setItem(`teapot.termH`,String(kr())),requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})};window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i)},Wr=()=>{let e=!Tr();if(Er(e),e){let e=yr().map((e,t)=>t).filter(e=>e!==xr());(Cr()<0||Cr()===xr()||Cr()>=yr().length)&&wr(e[0]??-1)}requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})};w(zr);let Gr=e=>t=>{Nr[e]=t,t&&requestAnimationFrame(()=>{Vr(e),Tr()&&Vr(1),setTimeout(()=>Vr(e),200)})};C(()=>{cn(),xn().then(async()=>{await d();let t=pr(),n=t?o().get(t):void 0,r=(n?e().find(e=>e.id===n):void 0)??e().find(e=>e.id===t&&!o().has(t))??e().find(e=>e.id===localStorage.getItem(`teapot.session`))??e()[0];r&&ir(r.id,!1,t||null)}),Sn(),Tn(),Yr(),fr();let t=setInterval(()=>{Sn(),Tn()},3e4);w(()=>clearInterval(t))});let Kr=[{cmd:`/start`,desc:`start working toward the goal`},{cmd:`/stop`,desc:`interrupt the running agent`},{cmd:`/fork`,desc:`branch the conversation here`},{cmd:`/goal`,desc:`/goal <text> — set goal & notify the agent`},{cmd:`/compact`,desc:`force a context compaction now`},{cmd:`/skill`,desc:`/skill <name> — force-load a skill and follow it`}],[qr,Jr]=v([]),Yr=()=>$(`/api/personas`).then(e=>Jr(e.personas)).catch(()=>{}),[Xr,Zr]=v(!1),Qr=()=>{let e=ne().match(/^@([A-Za-z0-9._-]*)$/);return e?e[1].toLowerCase():null},$r=()=>{let t=Qr();return t===null?[]:[...qr().map(e=>({key:e.key,label:`${e.label} — spawns a sub-agent`,kind:`persona`})),...e().filter(e=>e.id!==n()).map(e=>({key:e.id,label:`${e.status} — send directly`,kind:`agent`}))].filter(e=>e.key.toLowerCase().startsWith(t))},ei=new Set([`start`,`stop`,`fork`,`compact`]),[ti,ni]=v([]),[ri,ii]=v(-1),ai=()=>{let e=ne();if(!e.startsWith(`/`)||e.includes(`
23
- `))return[];let t=e.match(/^\/([a-z]*)(?:\s+(.*))?$/i);if(!t)return[];let n=t[1].toLowerCase(),r=(t[2]??``).trim();if(!r&&n!==`skill`){let e=Kr.filter(e=>e.cmd.slice(1).startsWith(n));return e.find(e=>e.cmd.slice(1)===n)&&ei.has(n)?[]:e.map(e=>({insert:e.cmd+` `,title:e.desc}))}if(n===`skill`){let e=ti().filter(e=>e.name.toLowerCase().startsWith(r.toLowerCase()));return e.length===1&&e[0].name.toLowerCase()===r.toLowerCase()?[]:e.map(e=>({insert:`/skill ${e.name} `,title:e.description||`(bundled skill)`}))}return[]},oi,si=()=>{if(!oi)return;ci=!0;let e=dt();oi.style.height=`auto`,oi.style.height=nt()?``:`${Math.min(oi.scrollHeight,360)}px`,requestAnimationFrame(()=>{let t=$n();e&&t&&(t.scrollTop=t.scrollHeight),ci=!1})},ci=!1,li=!1,ui;b(()=>{ne(),si()});let[di,fi]=v([]),pi=e=>{let t=Array.from(e).filter(e=>e.type.startsWith(`image/`));for(let e of t){if(e.size>8e6){Q(`"${e.name}" is over 8 MB — skipped`);continue}let t=new FileReader;t.onload=()=>{fi(n=>[...n,{url:String(t.result),name:e.name}].slice(0,4))},t.readAsDataURL(e)}},mi=async(e,t)=>{let r=t??n();if(!r)return;let i=di();try{let t=await $(`/api/agents/${r}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e,start:!0,...i.length?{images:i}:{}})});zt(Lt(),[...Ft(),{id:`@p${Date.now()}${Math.random().toString(36).slice(2,6)}`,text:e,at:Date.now(),promptId:t.promptId,...i.length?{images:i.map(e=>e.url)}:{}}]),fi([]),requestAnimationFrame(()=>requestAnimationFrame(()=>tr(!0)))}catch(t){D(e),console.error(`send failed:`,t)}},hi=async t=>{t.preventDefault();let r=n(),i=ne().trim();if(!(!r||!i)){if(i.startsWith(`@`)){let t=i.indexOf(` `),r=(t===-1?i.slice(1):i.slice(1,t)).toLowerCase(),a=t===-1?``:i.slice(t+1).trim(),o=qr().some(e=>e.key.toLowerCase()===r),s=e().some(e=>e.id.toLowerCase()===r);try{if(o){if(!a){Q(`usage: @${r} <task>`);return}Q(`🧩 spawned ${(await $(`/api/agents/${n()}/spawn`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({persona:r,task:a,context:Xr()?`fork`:`none`})})).id}${Xr()?` (forked context)`:``}`),xn(),D(``)}else if(s){if(!a){Q(`usage: @${r} <message>`);return}await $(`/api/agents/${encodeURIComponent(r)}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:a,start:!0})}),Q(`→ delivered to @${r}`),D(``)}else{Q(`unknown @${r} — personas: ${qr().map(e=>e.key).join(`, `)||`(none)`}`);return}}catch(e){Q(`@${r} failed: ${e.message}`)}return}if(i.startsWith(`/`)){let e=i.indexOf(` `),t=(e===-1?i.slice(1):i.slice(1,e)).toLowerCase(),n=e===-1?``:i.slice(e+1).trim();if(t===`goal`&&!n){D(`/goal `);return}if(t===`skill`&&!n){D(`/skill `);return}D(``);try{await gi(t,n)}catch(e){throw D(ne()?`${i}\n${ne()}`:i),e}return}D(``),await mi(i),nt()&&it(!1)}},gi=async(e,t)=>{let r=n();if(!r)return;let i=(e,t)=>$(`/api/agents/${r}${e}`,{method:`POST`,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}).then(xn);try{if(e===`start`)await i(`/start`);else if(e===`stop`)await i(`/stop`);else if(e===`fork`)await i(`/fork`,{}),await ir(r);else if(e===`compact`)Q((await i(`/compact`))?.ran?`context compacted`:`nothing to compact yet`);else if(e===`goal`){if(!t){Q(`usage: /goal <text>`);return}await i(`/goal`,{text:t,notify:!0}),Q(`goal saved & notification queued`)}else if(e===`skill`){if(!t){Q(`usage: /skill <name>`);return}await mi(`[harness] Force-load and follow the skill "${t}" now: call load_skill("${t}") and execute its playbook for the current task.`),Q(`skill "${t}" dispatched`)}else Q(`unknown command "${e}" — /start /stop /fork /goal /skill /compact`)}catch(t){Q(`/${e} failed: ${t.message}`)}},_i,vi=0;b(()=>{e(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!_i)return;let e=Math.min(vi,_i.scrollHeight);Math.abs(_i.scrollTop-e)>1&&(_i.scrollTop=e)})})});let yi=e=>()=>n()&&$(`/api/agents/${n()}${e}`,{method:`POST`}).then(xn),[bi,xi]=v(``),[Si,Ci]=v(``),[q,wi]=v(!1),[Ti,Ei]=v(!0),Di=``;b(()=>{let e=n();e&&(V()?.goal,e!==Di&&(Di=e,wi(!1),xi(``),Ci(``)))});let Oi=async e=>{if(e.preventDefault(),!(!n()||!bi().trim()))try{await $(`/api/agents/${n()}/goal`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:bi(),notify:Ti(),...Si().trim()?{verify:Si()}:{}})}),xi(``),Ci(``),wi(!1),xn()}catch(e){Q(`goal save failed: ${e.message}`)}};return[M(N,{get when(){return O()?.needsSetup},fallback:null,get children(){return M(im,{onDone:()=>location.reload()})}}),M(N,{get when(){return ln()},get children(){var e=gl();return e.firstChild.firstChild.nextSibling.addEventListener(`submit`,e=>{e.preventDefault();let t=document.getElementById(`pw-input`);localStorage.setItem(`teapot.token`,t.value),location.reload()}),e}}),M(N,{get when(){return!O()?.needsSetup},get children(){var i=Wl(),a=i.firstChild,o=a.firstChild,s=o.nextSibling,c=s.firstChild,l=c.firstChild;l.firstChild;var u=c.nextSibling,m=u.firstChild.firstChild.nextSibling;m.firstChild;var _=m.nextSibling,v=u.nextSibling,S=a.nextSibling,C=S.nextSibling,w=C.firstChild;w.firstChild,R(o,M(ye,{get each(){return Ln()},children:t=>[M(N,{get when(){return P(()=>t.wsHeader!==void 0)()&&t.wsHeader!==``},get children(){var e=Xl(),n=e.firstChild;return e.$$click=()=>Pn(`ws:${t.wsHeader}`,Fn(t.wsHeader),t.wsCollapsedGroup===!0,t.collapsedVia),R(n,()=>t.wsCollapsedGroup?`▸`:`▾`),R(e,()=>Fn(t.wsHeader),null),R(e,M(N,{get when(){return(In().get(t.wsHeader)??0)>1||t.wsCollapsedGroup},get children(){var e=Yl();return R(e,()=>In().get(t.wsHeader)??0),e}}),null),y(()=>I(e,`title`,t.wsCollapsedGroup?`${t.wsHeader} — collapsed (${W(t.wsHeader)} hidden). Click to show.`:(In().get(t.wsHeader)??0)>1?`${t.wsHeader} — ${W(t.wsHeader)} in this directory`:t.wsHeader||``)),e}}),M(N,{get when(){return P(()=>!t.headerOnly)()&&!t.wsCollapsedGroup},get children(){var r=tu(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>ir(t.a.id),R(r,M(N,{get when(){return at({isSub:!!t.a.parent,collapsed:t.chatCollapsedGroup===!0,hasChildren:e().some(e=>e.parent===t.a.id)})},get fallback(){return nu()},get children(){return(()=>{let e=!t.a.parent,n=e&&Nn().has(`chat:${t.a.id}`)||Dn().has(t.a.id);return(()=>{var r=ru();return r.$$click=r=>{if(r.stopPropagation(),e){if(Dn().has(t.a.id)){let e=new Set(Dn());e.delete(t.a.id),On(e),localStorage.setItem(`teapot.collapsed`,JSON.stringify([...e]))}Pn(`chat:${t.a.id}`,t.a.id,n)}else kn(t.a.id)},R(r,n?`▸`:`▾`),y(()=>I(r,`title`,e?n?`show ${t.a.id}`:`hide ${t.a.id} and its sub-agents`:n?`expand sub-agents`:`collapse sub-agents`)),r})()})()}}),i),R(a,()=>t.a.id),R(r,(()=>{var e=P(()=>!!t.a.workspaceMissing);return()=>e()?iu():null})(),null),R(r,M(N,{get when(){return qt(t.a.id)>0},get children(){var e=Zl();return e.firstChild,R(e,()=>qt(t.a.id),null),y(()=>I(e,`title`,`${qt(t.a.id)} unread notification${qt(t.a.id)>1?`s`:``} (including sub-agents)`)),e}}),null),R(r,M(N,{get when(){return Dn().has(t.a.id)||t.chatCollapsedGroup===!0&&Nn().has(`chat:${t.a.id}`)},get children(){return(()=>{let n=st(e(),t.a.id),r=n.filter(e=>e.live??(e.status===`running`||e.status===`waiting`)).length;return n.length>0?(()=>{var e=au();return e.firstChild,L(e,`subcount`+(r>0?` live`:``)),R(e,()=>n.length,null),R(e,r>0?` · ▶${r}`:``,null),y(()=>I(e,`title`,`${n.length} sub-agent${n.length>1?`s`:``} (${r} active)`)),e})():null})()}}),null),R(r,M(N,{get when(){return t.a.parent},get children(){return Ql()}}),null),R(r,M(N,{get when(){return En(t.a.id).length>0},get children(){var e=$l();return y(()=>I(e,`title`,En(t.a.id).map(e=>`${e.id}: ${e.schedule}`).join(`
24
- `))),e}}),null),R(r,M(N,{get when(){return t.a.goal.status===`done`},get children(){return eu()}}),null),y(e=>{var o=`agent-item`+(t.a.id===n()?` sel`:``)+(t.depth>0?` sub-row`:``)+(t.chatCollapsedGroup?` collapsed`:``),s=t.depth>0?`padding-left:${10+t.depth*14}px`:``,c=t.a.parent?(()=>{let e=ot(t.a.id,qr().map(e=>e.key));return e?`sub-agent of @${t.a.parent} — "${e}"`:`sub-agent of @${t.a.parent}`})():void 0,l=`dot ${t.a.status}`,u=t.a.workspaceMissing?` ghost`:``,d=t.a.workspaceMissing?`workspace not found on disk (${t.a.workspace}) — it will be created when this session runs`:void 0;return o!==e.e&&L(r,e.e=o),e.t=Ee(r,s,e.t),c!==e.a&&I(r,`title`,e.a=c),l!==e.o&&L(i,e.o=l),u!==e.i&&L(a,e.i=u),d!==e.n&&I(a,`title`,e.n=d),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r}})]})),R(s,M(N,{get when(){return me()},get children(){var e=vl(),t=e.firstChild.firstChild;return t.addEventListener(`change`,e=>{let t=e.currentTarget.checked;be(t),localStorage.setItem(`teapot.theme.auto`,t?`1`:`0`)}),R(e,M(N,{get when(){return!ve()},get fallback(){return[(()=>{var e=ou(),t=e.firstChild.nextSibling;return t.addEventListener(`change`,e=>{Se(e.currentTarget.value),localStorage.setItem(`teapot.theme.light`,e.currentTarget.value)}),R(t,M(ye,{get each(){return xp.filter(e=>e.mode===`light`)},children:e=>(()=>{var t=cu();return R(t,()=>e.label),y(()=>t.value=e.key),t})()})),y(()=>t.value=xe()),e})(),(()=>{var e=su(),t=e.firstChild.nextSibling;return t.addEventListener(`change`,e=>{F(e.currentTarget.value),localStorage.setItem(`teapot.theme.dark`,e.currentTarget.value)}),R(t,M(ye,{get each(){return xp.filter(e=>e.mode===`dark`)},children:e=>(()=>{var t=cu();return R(t,()=>e.label),y(()=>t.value=e.key),t})()})),y(()=>t.value=Ce()),e})()]},get children(){var e=_l();return R(e,M(ye,{each:xp,children:e=>(()=>{var t=lu(),n=t.firstChild;return t.$$click=()=>{_e(e.key),localStorage.setItem(`teapot.theme`,e.key)},R(n,()=>e.sw.map(e=>(()=>{var t=uu();return De(t,`background`,e),t})())),R(t,()=>e.label,null),y(n=>{var r=`themebtn`+(ge()===e.key?` on`:``),i=`${e.label} (${e.mode})`;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()})),e}}),null),y(()=>t.checked=ve()),e}}),c),l.$$click=e=>{e.stopPropagation(),Gt(!Wt()),Wt()||Vt(e=>e.map(e=>({...e,read:!0})))},R(l,M(N,{get when(){return H()>0},get children(){var e=yl();return R(e,H),e}}),null),R(c,M(Hp,{icon:`👻`,get active(){return Ht()},get title(){return Ht()?`show ghost sessions again (👻 workspace missing on disk)`:`hide ghost sessions (👻 — their workspace directory no longer exists)`},onClick:t=>{t.stopPropagation();let r=!Ht();if(Ut(r),localStorage.setItem(`teapot.hideGhosts`,r?`1`:`0`),r&&n()&&V()?.workspaceMissing){let t=e().find(e=>!e.workspaceMissing);t&&ir(t.id)}}}),null),R(c,M(Hp,{icon:`+`,title:`new agent`,onClick:()=>{cn(),ie(!0)}}),null),R(c,M(Hp,{icon:`🎨`,title:`themes`,onClick:()=>he(!me())}),null),R(c,M(Hp,{icon:`⚙`,title:`settings`,onClick:()=>{cn(),oe(!0)}}),null),R(m,`0.27.1`,null),R(v,M(N,{get when(){return ee()},get children(){return[`master rss `,P(()=>ee().rssMb),`MB · heap `,P(()=>ee().heapUsedMb),`MB`,bl(),`load1 `,P(()=>ee().loadavg1),` · up `,P(()=>Math.floor(ee().uptimeSec/60)),`m`]}})),R(S,M(N,{get when(){return V()?.id},keyed:!0,get fallback(){return du()},get children(){return[(()=>{var e=wl(),t=e.firstChild.nextSibling,n=t.nextSibling,r=n.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.nextSibling.nextSibling,s=o.nextSibling.nextSibling;s.nextSibling;var c=r.nextSibling;return R(t,()=>V().id),R(n,()=>V().status),R(e,M(N,{get when(){return(V().pendingPrompts??0)>0},get children(){var e=xl(),t=e.firstChild.nextSibling;return t.nextSibling,R(e,()=>V().pendingPrompts,t),R(e,()=>V().status===`stopped`?` (stopped)`:``,null),y(()=>I(e,`title`,V().status===`stopped`?`${V().pendingPrompts} message${(V().pendingPrompts??0)>1?`s`:``} from you are still queued, but this agent is STOPPED — nothing will run until you press start (or it is resumed). Each can be withdrawn with ✕ cancel while it is still queued.`:`${V().pendingPrompts??0} message${(V().pendingPrompts??0)>1?`s`:``} from you waiting in the queue. They will be handed to the model at its next turn boundary — the timeline shows them as "pending (queued)…" until then, and each can be withdrawn with ✕ cancel while it's still queued.`)),e}}),r),R(e,M(N,{get when(){return En(V().id).length>0},get children(){var e=Sl();return e.firstChild,R(e,()=>En(V().id).length,null),y(()=>I(e,`title`,`scheduled tasks:\n${En(V().id).map(e=>`${e.schedule} · ${e.id}${e.forked?` (forked)`:``}`).join(`
25
- `)}`)),e}}),r),R(r,()=>V().model,i),R(r,()=>V().session,a),R(r,()=>V().branch,o),R(r,()=>V().stats.turns,s),R(r,()=>V().stats.toolCalls,null),R(c,M(N,{get when(){return V().statusReason},get children(){var e=Cl();return y(()=>I(e,`title`,V().statusReason)),e}}),null),R(c,M(Hp,{icon:`⌨`,title:`terminal (t)`,onClick:vr}),null),R(c,M(Hp,{icon:`▤`,title:`toggle details panel (d)`,onClick:fe}),null),y(()=>L(n,`badge ${V().status}`)),e})(),(()=>{var e=jl();return e.addEventListener(`scroll`,e=>{if(ci)return;let t=e.currentTarget,r=er(),i=t.scrollHeight-t.scrollTop-t.clientHeight;if(!r&&ui!==void 0&&i>ui+8&&i>24?li=!0:r&&(li=!1),ui=i,t.scrollTop<=4&&n()&&!Un()&&!Gn()&&f().length>0&&Zn(),li&&!r){ft(!1);return}r&&pt()&&mt(0),ft(r)}),R(e,M(N,{get when(){return _t()},children:e=>(()=>{var t=fu();return t.firstChild,R(t,(()=>{var t=P(()=>e().phase===`harvesting`);return()=>t()?`saving durable lessons…`:`summarizing ${e().summarized?zp(e().summarized)+` `:``}older messages…`})(),null),t})()}),null),R(e,M(N,{get when(){return P(()=>!!Gn())()&&an().length>0},get children(){return Tl()}}),null),R(e,M(N,{get when(){return Un()},get children(){return El()}}),null),R(e,M(N,{get when(){return an().length>0},get fallback(){return pu()},get children(){return[M(ye,{get each(){return an()},children:(e,t)=>M(Pp,{e,get prev(){return an()[t()-1]},get res(){return Qt().resFor.get(e.id)},get orphan(){return Qt().orphanCalls.has(e.id)},onOption:e=>void mi(e),answeredIds:rn,onAnswered:tn,get agentActive(){return P(()=>!!jt())()&&qe(e)},onResize:()=>{dt()&&requestAnimationFrame(()=>tr(!0))},get onCancel(){return e.data?.source===`user`&&e.data?.pending&&e.data?.promptId&&e.data?.sent!==!0?()=>{let t=String(e.data.promptId);$(`/api/agents/${n()}/prompt/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({promptId:t})}).then(e=>{let n=String(e.text??``);D(ne()?`${n}\n\n${ne()}`:n),zt(Lt(),Ft().filter(e=>e.promptId!==t)),Q(`message withdrawn — draft restored`)}).catch(()=>Q(`withdraw failed — it may have already been sent`))}:void 0},get onEdit(){return e.type===`prompt`&&e.data?.source===`user`&&!(e.data?.pending&&e.data?.sent!==!0)&&!e.data?.cancelled&&!jt()?()=>Nt({eventId:e.id,text:String(e.data?.text??``)}):void 0}})}),M(N,{get when(){return z()},get children(){var e=Al(),t=e.firstChild.nextSibling;return t.firstChild,R(t,M(N,{get when(){return Ot()},get children(){var e=Dl(),t=e.firstChild;t.firstChild;var n=t.nextSibling;return R(t,M(jp,{get startedAt(){return Dt()}}),null),Oe(e=>{let t=!0;e.addEventListener(`scroll`,()=>{t=e.scrollHeight-e.scrollTop-e.clientHeight<24}),b(()=>{Ot(),t&&(e.scrollTop=e.scrollHeight)})},n),R(n,Ot),e}}),null),R(t,M(N,{get when(){return Ct()},get fallback(){return mu()},get children(){return M(N,{get when(){return yt()},get fallback(){return(()=>{var e=kl();return y(()=>e.innerHTML=Ie(Ct()+`▍`)),e})()},get children(){return[Ol(),(()=>{var e=kl();return y(()=>e.innerHTML=Ie(bt()+`▍`)),e})()]}})}}),null),e}})]}}),null),e})(),M(N,{get when(){return gr()},get children(){var t=Il(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.firstChild,s=r.nextSibling,c=s.firstChild;n.$$dblclick=()=>{Ar(Math.max(220,Math.round(window.innerHeight*.35))),localStorage.setItem(`teapot.termH`,String(kr()))},n.$$pointerdown=Ur,R(i,M(ye,{get each(){return yr()},children:(e,t)=>(()=>{var n=hu(),r=n.firstChild.nextSibling;return n.$$click=()=>Fr(t()),R(n,()=>e.title,r),r.$$click=e=>{e.stopPropagation(),Rr(t())},y(r=>{var i=`termtab`+(Dr()===0&&xr()===t()?` active`:``)+(Tr()&&Dr()===1&&Cr()===t()?` active`:``),a=`${e.title} — click to show in focused pane`;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})()}),null),R(i,M(Hp,{icon:`+`,title:`new shell in this workspace`,onClick:Ir}),null),R(o,(()=>{var t=P(()=>!!Pr());return()=>t()?e().find(e=>e.id===Pr().agentId)?.workspace.split(`/`).filter(Boolean).pop():V()?.workspace})()),R(a,M(Hp,{icon:`◫`,get title(){return Tr()?`single pane`:`split panes (50/50)`},onClick:Wr}),null),R(a,M(Hp,{icon:`▾`,title:`hide the terminal (shells keep running; reopen with t) — close individual shells with their ✕ tab buttons`,onClick:vr}),null);var l=Gr(0);return typeof l==`function`&&Oe(l,c),c.$$pointerdown=()=>Or(0),R(c,M(N,{get when(){return xr()<0||xr()>=yr().length},get children(){return Ml()}})),R(s,M(N,{get when(){return Tr()},get children(){return[Nl(),(()=>{var e=Fl(),t=Gr(1);return typeof t==`function`&&Oe(t,e),e.$$pointerdown=()=>Or(1),R(e,M(N,{get when(){return Cr()<0||Cr()>=yr().length},get children(){return Pl()}})),y(()=>e.classList.toggle(`focused`,Dr()===1)),e})()]}}),null),y(e=>{var n={height:`${kr()}px`,"--termh":`${kr()}px`},r=!!Tr(),i=Dr()===0;return e.e=Ee(t,n,e.e),r!==e.t&&s.classList.toggle(`split`,e.t=r),i!==e.a&&c.classList.toggle(`focused`,e.a=i),e},{e:void 0,t:void 0,a:void 0}),t}}),(()=>{var e=Hl(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling,o=t.nextSibling;R(e,M(N,{get when(){return!dt()||pt()>0},get children(){var e=Ll();return e.firstChild,e.$$click=()=>tr(!0),R(e,(()=>{var e=P(()=>pt()>0);return()=>e()?`${pt()} new message${pt()>1?`s`:``}`:`jump to present`})(),null),e}}),t),R(e,M(N,{get when(){return ai().length>0},get children(){var e=Rl();return R(e,M(ye,{get each(){return ai()},children:(e,t)=>(()=>{var n=gu(),r=n.firstChild,i=r.nextSibling;return n.$$click=()=>{D(e.insert),ii(-1)},R(r,()=>e.insert.trim()),R(i,()=>e.title),y(r=>{var i=`cmdrow`+(t()===ri()?` active`:``),a=e.title;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})()})),e}}),t),R(e,M(N,{get when(){return $r().length>0},get children(){var e=Rl();return R(e,M(ye,{get each(){return $r()},children:e=>(()=>{var t=_u(),n=t.firstChild;n.firstChild;var r=n.nextSibling;return t.$$click=()=>{D(`@${e.key} `),ii(-1)},R(n,()=>e.key,null),R(r,()=>e.label),y(()=>I(t,`title`,e.label)),t})()})),e}}),t),t.addEventListener(`submit`,hi),R(t,M(N,{get when(){return di().length>0},get children(){var e=zl(),t=e.firstChild,n=t.firstChild,r=n.nextSibling;return r.nextSibling,R(e,M(ye,{get each(){return di()},children:(e,t)=>(()=>{var n=vu(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>fi(e=>e.filter((e,n)=>n!==t())),y(t=>{var i=e.name,a=e.url,o=e.name;return i!==t.e&&I(n,`title`,t.e=i),a!==t.t&&I(r,`src`,t.t=a),o!==t.a&&I(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),t),R(t,()=>di().length,n),R(t,()=>di().length>1?`s`:``,r),e}}),n),n.$$keydown=e=>{let t=ai();if(t.length>0&&e.key===`ArrowDown`){e.preventDefault(),ii(e=>Math.min(e+1,t.length-1));return}if(t.length>0&&e.key===`ArrowUp`){e.preventDefault(),ii(e=>Math.max(e-1,0));return}if(t.length>0&&(e.key===`Tab`||e.key===`Enter`)&&!e.shiftKey&&ri()>=0&&!bp){e.preventDefault(),D(t[ri()].insert),ii(-1);return}if(e.key===`Escape`&&t.length>0){ii(-1);return}e.key===`Enter`&&!e.shiftKey&&!bp&&(e.preventDefault(),hi(e))},n.$$input=e=>{D(e.currentTarget.value),ii(0),si()},n.addEventListener(`paste`,e=>{let t=Array.from(e.clipboardData?.files??[]).filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pi(t))}),n.addEventListener(`compositionend`,()=>{requestAnimationFrame(()=>{bp=!1})}),n.addEventListener(`compositionstart`,()=>{bp=!0});var s=oi;return typeof s==`function`?Oe(s,n):oi=n,R(t,M(N,{get when(){return P(()=>!!ne().startsWith(`@`))()&&ne().includes(` `)},get children(){var e=Bl(),t=e.firstChild;return t.addEventListener(`change`,e=>Zr(e.currentTarget.checked)),y(()=>t.checked=Xr()),e}}),r),r.$$click=()=>{let e=!nt();it(e),requestAnimationFrame(()=>si())},R(r,()=>nt()?`⤡`:`⤢`),R(t,M(Hp,{icon:`📎`,title:`attach images (or paste them straight into the box)`,onClick:()=>document.getElementById(`composer-file`)?.click()}),i),R(t,M(N,{get when(){return di().length},get children(){var e=Vl();return e.firstChild,R(e,()=>di().length,null),e}}),i),a.addEventListener(`change`,e=>{e.currentTarget.files?.length&&pi(e.currentTarget.files),e.currentTarget.value=``}),R(o,()=>_p()||`enter send · shift+enter newline · ↑↓ sessions · / commands & focus · t terminal · d panel · esc interrupt · messages sent while the agent works queue up and land at the next turn boundary`),y(t=>{var i=`composer`+(nt()?` maximized`:``),a=`message #${V().id} — / for commands · paste or 📎 to attach images`,o=nt()?`restore composer (hide timeline)`:`maximize composer — hide the timeline and fill the main column`;return i!==t.e&&L(e,t.e=i),a!==t.t&&I(n,`placeholder`,t.t=a),o!==t.a&&I(r,`title`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),y(()=>n.value=ne()),e})()]}})),R(i,M(N,{get when(){return P(()=>!!ce())()&&j()},get children(){var e=Ul();return e.$$click=()=>de(!1),e}}),C),C.addEventListener(`scroll`,e=>{vi=e.currentTarget.scrollTop});var te=_i;return typeof te==`function`?Oe(te,C):_i=C,R(w,M(Hp,{icon:`✕`,title:`close details panel (esc)`,onClick:pe}),null),R(C,M(N,{get when(){return V()?.id},keyed:!0,fallback:null,children:i=>[yu(),(()=>{var e=bu(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling,i=t.nextSibling,a=i.firstChild.nextSibling,o=i.nextSibling.firstChild.nextSibling,s=o.firstChild;return R(n,()=>V().id),R(r,()=>V().status),R(a,()=>V().workspace),R(o,()=>V().session,s),R(o,()=>V().branch,null),y(e=>{var t=`badge ${V().status}`,n=V().workspace;return t!==e.e&&L(r,e.e=t),n!==e.t&&I(a,`title`,e.t=n),e},{e:void 0,t:void 0}),e})(),M(N,{get when(){return V().id},keyed:!0,fallback:null,children:e=>M(em,{agentId:e,get workspace(){return V().workspace}})}),xu(),(()=>{var e=wu(),t=e.firstChild,r=t.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=r.nextSibling;return s.firstChild,t.addEventListener(`change`,e=>{Me(e.currentTarget.value),Ve(e.currentTarget.value)}),R(t,M(ye,{get each(){return Be()},children:e=>(()=>{var t=cu();return t.value=e,R(t,e,null),R(t,()=>e===O().defaultProvider?` ★`:``,null),t})()})),i.$$input=e=>Pe(e.currentTarget.value),R(a,M(ye,{get each(){return Re()},children:e=>(()=>{var t=cu();return y(()=>t.value=e.id),t})()})),o.$$click=async e=>{if(!n())return;let t=e.currentTarget;t.disabled=!0;try{await $(`/api/agents/${n()}/model`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:je(),model:Ne().trim()||void 0,contextWindowTokens:Re().find(e=>e.id===(Ne().trim()||void 0))?.contextLength})}),t.textContent=`✓ applied`,xn()}catch(e){alert(`model switch failed: ${e.message}`)}finally{setTimeout(()=>{t.textContent=`apply`,t.disabled=!1},1200)}},R(e,M(N,{get when(){return V().effortSupported},get children(){var e=Su(),t=e.firstChild.nextSibling;t.firstChild;var r=t.nextSibling;return t.addEventListener(`change`,e=>Le(e.currentTarget.value)),R(t,M(ye,{each:pp,children:e=>(()=>{var t=cu();return t.value=e,R(t,e),t})()}),null),r.$$click=async e=>{if(!n())return;let t=e.currentTarget;t.disabled=!0;try{await $(`/api/agents/${n()}/model`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({reasoningEffort:Fe()})}),t.textContent=`✓ applied`,xn()}catch(e){alert(`effort change failed: ${e.message}`)}finally{setTimeout(()=>{t.textContent=`apply`,t.disabled=!1},1200)}},y(()=>t.value=Fe()),e}}),s),R(s,()=>V().model,null),R(s,M(N,{get when(){return Re().length},get children(){return[` · `,P(()=>Re().length),` models loaded`]}}),null),R(e,M(N,{get when(){return $e()},get children(){var e=Cu();return R(e,$e),e}}),null),y(()=>I(i,`placeholder`,V().model)),y(()=>t.value=je()),y(()=>i.value=Ne()),e})(),Tu(),(()=>{var i=Du(),a=i.firstChild,o=a.nextSibling,s=o.nextSibling;return Te(a,`click`,jt()?yi(`/stop`):yi(`/start`),!0),R(a,()=>jt()?`■ stop`:`▶ start`),o.$$click=()=>$(`/api/agents/${V().id}/fork`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}).then(async()=>{await d(!0),await ir(V().id)}),s.$$click=async()=>{let i=n();if(!i||!confirm(`remove agent ${i}? (log is kept)`))return;await $(`/api/agents/${i}`,{method:`DELETE`}).catch(()=>{});let a=e().filter(e=>e.id!==i);t(a),d(!0),a[0]?ir(a[0].id):(r(null),p([]))},R(i,M(N,{get when(){return e().some(e=>e.parent===n())},get children(){var e=Eu();return e.$$click=async()=>{n()&&(Q(`stopped: ${((await $(`/api/agents/${n()}/stop-children`,{method:`POST`})).stopped??[]).join(`, `)||`(none)`}`),xn())},e}}),null),y(e=>{var t=jt()?`danger`:`runbtn`,n=jt()?`interrupt: aborts the current LLM call; the running tool finishes first`:`run toward the goal (starts the loop)`;return t!==e.e&&L(a,e.e=t),n!==e.t&&I(a,`title`,e.t=n),e},{e:void 0,t:void 0}),i})(),(()=>{var e=Ou(),t=e.firstChild.firstChild;return t.addEventListener(`change`,e=>{n()&&$(`/api/agents/${n()}/auto-continue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({value:e.currentTarget.checked})}).then(xn)}),y(()=>t.checked=V().autoContinue??!0),e})(),(()=>{var e=Au();return e.firstChild,R(e,M(N,{get when(){return!!V().goal.text.trim()},get fallback(){return Ju()},get children(){var e=ku();return R(e,()=>V().goal.status),y(()=>L(e,`badge ${V().goal.status===`active`?`running`:V().goal.status}`)),e}}),null),e})(),(()=>{var e=ju();return e.firstChild,R(e,M(ye,{each:[`active`,`done`,`paused`],children:e=>(()=>{var t=Yu();return t.$$click=()=>{n()&&$(`/api/agents/${n()}/goal`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({status:e})}).then(xn)},I(t,`title`,e===`active`?`agent keeps working toward the goal (with auto-continue)`:e===`done`?`mark achieved — auto-continue stops`:`parked on purpose — resume by setting active again`),R(t,e===`active`?`▶ working`:e===`done`?`✓ done`:`⏸ paused`),y(n=>{var r=`goalstate`+(V().goal.text.trim()&&V().goal.status===e?` on ${e}`:``),i=!!V().goal.text.trim()&&V().goal.status===e;return r!==n.e&&L(t,n.e=r),i!==n.t&&(t.disabled=n.t=i),n},{e:void 0,t:void 0}),t})()}),null),e})(),M(N,{get when(){return V().goal.text},get fallback(){return Xu()},get children(){return[(()=>{var e=Mu(),t=e.firstChild;return y(()=>t.innerHTML=Ie(String(V().goal.text))),e})(),M(N,{get when(){return V().goal.verify},get children(){var e=Nu(),t=e.firstChild.nextSibling;return y(()=>t.innerHTML=Ie(String(V().goal.verify))),e}}),M(N,{get when(){return V().goal.audit},children:e=>(()=>{var t=Zu(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return R(n,()=>e().verdict===`approved`?`✅ audit: approved`:`⚠ audit: changes required`,r),R(r,()=>Rp(e().at)),y(n=>{var r=`card auditcard `+(e().verdict===`approved`?`ok`:`warn`),a=et(e().feedback)?Ie(`_the auditor returned a verdict with no detail_`):Ie(e().feedback);return r!==n.e&&L(t,n.e=r),a!==n.t&&(i.innerHTML=n.t=a),n},{e:void 0,t:void 0}),t})()})]}}),Pu(),(()=>{var e=Fu(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling.firstChild.firstChild;return e.addEventListener(`submit`,Oi),t.$$input=e=>{xi(e.currentTarget.value),wi(!0)},n.$$input=e=>{Ci(e.currentTarget.value),wi(!0)},r.addEventListener(`change`,e=>Ei(e.currentTarget.checked)),y(()=>t.value=bi()),y(()=>n.value=Si()),y(()=>r.checked=Ti()),e})(),(()=>{var e=Lu(),t=e.firstChild.nextSibling;return R(e,M(N,{get when(){return yn().total>0},get children(){var e=Iu(),t=e.firstChild,n=t.nextSibling;return n.nextSibling,R(e,()=>yn().done,t),R(e,()=>yn().total,n),y(t=>Ee(e,yn().done===yn().total?`color:var(--ok)`:`color:var(--warn)`,t)),e}}),t),e})(),M(N,{get when(){return yn().total>0},get children(){var e=Ru(),t=e.firstChild;return y(e=>{var n=`barfill `+(yn().done===yn().total?``:`warn`),r=`${Math.round(yn().done/yn().total*100)}%`;return n!==e.e&&L(t,e.e=n),r!==e.t&&De(t,`width`,e.t=r),e},{e:void 0,t:void 0}),e}}),M($p,{get draft(){return dn()},get viewMode(){return pn()},onDraft:e=>{fn(e),gn(!0)}}),(()=>{var e=zu(),t=e.firstChild,n=t.nextSibling;return R(e,M(Hp,{get icon(){return pn()?`👁`:`✎`},get title(){return pn()?`rendered checklist`:`edit markdown`},onClick:()=>mn(!pn())}),t),n.$$click=vn,e})(),Bu(),M(N,{get when(){return V().latestProgress},get fallback(){return Qu()},children:e=>(()=>{var t=rd(),n=t.firstChild,r=n.firstChild.nextSibling,i=n.nextSibling;return R(t,M(N,{get when(){return e().recent},get children(){var t=$u(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().recent)),t}}),i),R(t,M(N,{get when(){return e().problems},get children(){var t=ed(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().problems)),t}}),i),R(t,M(N,{get when(){return e().next},get children(){var t=td(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().next)),t}}),i),R(t,M(N,{get when(){return e().goalStatus},get children(){var t=nd(),n=t.firstChild.nextSibling;return R(n,()=>e().goalStatus),t}}),i),R(i,()=>Rp(e().ts)),y(()=>r.innerHTML=fp(e().doing)),t})()}),Vu(),(()=>{var e=Wu(),t=e.firstChild,r=t.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild.nextSibling,c=t.nextSibling,l=c.firstChild.nextSibling,u=l.firstChild,d=u.nextSibling;return d.nextSibling,R(i,()=>V().stats.turns),R(o,()=>V().stats.toolCalls),R(s,()=>V().stats.compactions??0),R(l,()=>zp(V().stats.inputTokens),u),R(l,()=>zp(V().stats.outputTokens),d),R(c,M(N,{get when(){return(V().stats.cachedInputTokens??0)>0},get children(){var e=Hu(),t=e.firstChild.nextSibling;return t.nextSibling,R(e,()=>Math.round(V().stats.cachedInputTokens/Math.max(1,V().stats.inputTokens)*1e3)/10,t),y(()=>I(e,`title`,`${zp(V().stats.cachedInputTokens)} tokens were served from the provider's prompt cache — billed far cheaper than fresh input`)),e}}),null),R(e,M(N,{get when(){return(V().stats.costUsd??0)>0},get children(){var e=Uu(),t=e.firstChild.nextSibling;return t.firstChild,R(t,()=>Bp(V().stats.costUsd??0),null),y(()=>I(e,`title`,`≈ ${(V().stats.costUsd??0).toFixed(4)} this session, from the model's USD/token pricing and per-turn usage. Cached input is estimated at ~10% of the prompt rate; treat as an approximation, not an invoice.`)),e}}),null),R(e,M(N,{get when(){return V().ctx},keyed:!0,get fallback(){return id()},children:e=>{let t=x(()=>{let t=e,n=Re().find(e=>e.id===V().model),r=t.window||n?.contextLength||0,i=r?Math.min(999,t.usedTokens/r*100):0;return{usedTokens:t.usedTokens,compactAt:t.compactAt,compacting:t.compacting,window:t.window,effectiveWindow:r,pct:i,cls:r?i>=85?`crit`:i>=70?`warn`:`ok`:``,derivedBudget:r?Math.round(r*.75):0,usingDerived:t.compactAtIsManual!==!0}}),r=()=>t(),i=e=>{let t=Math.round(e*10)/10;return Number.isInteger(t)?String(t):t.toFixed(1)};return(()=>{var e=ld(),t=e.firstChild,a=t.firstChild.nextSibling,o=a.firstChild.nextSibling;o.nextSibling;var s=t.nextSibling,c=s.firstChild.nextSibling,l=c.firstChild,u=c.nextSibling,d=s.nextSibling,f=d.firstChild.firstChild,p=d.nextSibling,m=p.firstChild.nextSibling;return m.nextSibling,R(a,()=>zp(r().usedTokens),o),R(t,M(N,{get when(){return r().effectiveWindow},get children(){var e=ad(),t=e.firstChild;return R(e,()=>i(r().pct),t),R(e,()=>zp(r().effectiveWindow),null),y(()=>L(e,`pill ${r().cls}`)),e}}),null),R(e,M(N,{get when(){return r().effectiveWindow},get children(){var e=od(),t=e.firstChild;return y(e=>{var n=`barfill ${r().cls}`,i=`${Math.min(100,r().pct)}%`;return n!==e.e&&L(t,e.e=n),i!==e.t&&De(t,`width`,e.t=i),e},{e:void 0,t:void 0}),e}}),s),R(c,()=>zp(r().usingDerived?r().derivedBudget:r().compactAt),l),R(u,()=>r().usingDerived?` (75% of window)`:` (manual override)`),R(e,M(N,{get when(){return r().effectiveWindow},get children(){var e=sd(),t=e.firstChild;return y(e=>{var n=`barfill ${r().cls}`,i=`${Math.min(100,Math.round(r().usedTokens/r().derivedBudget*100))}%`;return n!==e.e&&L(t,e.e=n),i!==e.t&&De(t,`width`,e.t=i),e},{e:void 0,t:void 0}),e}}),d),R(e,M(N,{get when(){return _t()||r().compacting},get children(){var e=cd(),t=e.firstChild.nextSibling.nextSibling;return R(t,()=>_t()?.phase??String(r().compacting)),e}}),d),f.addEventListener(`change`,e=>{n()&&$(`/api/agents/${n()}/auto-compact`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({value:e.currentTarget.checked})}).then(xn)}),R(p,()=>zp(r().compactAt),m),y(()=>f.checked=V().autoCompact!==!1),e})()}}),null),e})(),(()=>{var e=Ku();return e.firstChild.nextSibling,R(e,M(N,{get when(){return G()},get children(){var e=Gu(),t=e.firstChild.nextSibling;return R(t,G),e}}),null),e})(),M(ye,{get each(){return g()},children:e=>(()=>{var t=ud(),r=t.firstChild,i=r.nextSibling,a=i.firstChild;return t.$$click=()=>{let t=G()===e.branch?null:e.branch,r=t!==G();zn(t),n()&&(r&&(qn++,p([]),h(0),Kn(!1)),Qn(n()))},R(r,()=>e.branch,null),R(r,()=>e.branch===V().branch?` (current)`:``,null),R(i,()=>e.events,a),y(n=>{var r=`branch-row`+(e.branch===V().branch||e.branch===G()?` cur`:``),i=e.branch===G()?`click to show all branches again`:`show only ${e.branch}`;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),qu(),M(N,{get when(){return Cn().length>0},get fallback(){return dd()},get children(){return M(ye,{get each(){return Cn()},children:e=>(()=>{var t=pd(),r=t.firstChild,i=r.firstChild,a=i.nextSibling;a.firstChild;var o=r.nextSibling,s=o.firstChild,c=o.nextSibling;return t.$$click=()=>ir(e.agent),R(i,()=>e.id),R(a,()=>e.agent,null),R(r,M(N,{get when(){return e.forked},get children(){return fd()}}),null),R(o,()=>e.schedule,s),R(o,(()=>{var t=P(()=>!!e.next);return()=>t()?Rp(e.next):`—`})(),null),R(o,(()=>{var t=P(()=>!!e.last);return()=>t()?` · last ${Rp(e.last)}`:` · never ran`})(),null),R(c,()=>Vp(e.prompt,90)),y(r=>{var i=`sched-row`+(e.agent===n()?` cur`:``),a=`${Vp(e.prompt,200)}\nclick to open #${e.agent}`;return i!==r.e&&L(t,r.e=i),a!==r.t&&I(t,`title`,r.t=a),r},{e:void 0,t:void 0}),t})()})}})]}),null),y(e=>{var t=`layout`+(j()?``:` right-hidden`),n=`iconbtn notifbtn`+(H()>0?` has-unread`:``),r=H()>0?`${H()} unread notifications`:`notifications`,a=`conn`+(ar()?` ok`:``),o=ar()?`live (websocket)`:`reconnecting…`,s=`rightbar`+(j()?` open`:``);return t!==e.e&&L(i,e.e=t),n!==e.t&&L(l,e.t=n),r!==e.a&&I(l,`title`,e.a=r),a!==e.o&&L(_,e.o=a),o!==e.i&&I(_,`title`,e.i=o),s!==e.n&&L(C,e.n=s),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),i}}),M(N,{get when(){return Wt()},get children(){return[(()=>{var e=Gl();return e.$$click=()=>Gt(!1),e})(),(()=>{var t=Jl(),r=t.firstChild.firstChild.nextSibling,i=r.firstChild;return R(r,M(N,{get when(){return Bt().length>0},get children(){var e=Kl();return e.$$click=()=>Vt([]),e}}),i),i.$$click=()=>Gt(!1),R(t,M(N,{get when(){return Bt().length>0},get fallback(){return md()},get children(){var t=ql();return R(t,M(ye,{get each(){return Bt()},children:t=>(()=>{var r=gd(),i=r.firstChild.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling;return r.$$click=()=>{Vt(e=>e.map(e=>e.id===t.id?{...e,read:!0}:e)),n()!==t.agentId&&e().some(e=>e.id===t.agentId)&&ir(t.agentId),Gt(!1),t.eventId&&setTimeout(()=>Zt(t.eventId),n()===t.agentId?60:350)},R(i,(()=>{var e=P(()=>t.kind===`finish`);return()=>e()?`✅`:P(()=>t.kind===`question`)()?`❓`:t.kind===`error`?`⚠️`:`📈`})()),R(a,()=>t.title),R(o,()=>Rp(new Date(t.at).toISOString())),s.$$click=e=>{e.stopPropagation(),Vt(e=>e.map(e=>e.id===t.id?{...e,read:!0}:e))},R(s,()=>t.read?`✓`:`○`),R(r,M(N,{get when(){return t.body},get children(){var e=hd();return R(e,()=>Lp(t.body,160)),e}}),null),y(e=>{var n=`notifitem `+t.kind+(t.read?` read`:``),i=`from ${t.agentId}`,a=t.read?`already read`:`mark as read`;return n!==e.e&&L(r,e.e=n),i!==e.t&&I(r,`title`,e.t=i),a!==e.a&&I(s,`title`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),r})()})),t}}),null),t})()]}}),M(N,{get when(){return k()},get children(){return M(Gp,{get providers(){return Object.keys(O().providers??{})},onClose:()=>ie(!1),onCreated:e=>{ie(!1),xn(),ir(e)}})}}),M(N,{get when(){return ae()},get children(){return M(am,{get cfg(){return O()},onClose:()=>oe(!1),onSaved:()=>{cn(),Tn()}})}}),M(N,{get when(){return Mt()},fallback:null,children:e=>{let t=()=>f().findIndex(t=>t.id===e().eventId),r=()=>Math.max(0,f().length-t()-1),[i,a]=v(r()>0?`summarize`:`discard`);return M(Wp,{title:`edit prompt — forks the conversation`,onClose:()=>Nt(null),get children(){var t=vd(),o=t.firstChild,s=o.nextSibling,c=s.firstChild;return t.addEventListener(`submit`,async t=>{t.preventDefault();let r=document.getElementById(`edit-text`);try{await $(`/api/agents/${n()}/edit-prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({eventId:e().eventId,text:r.value,tail:i()})}),Nt(null),xn();let t=n();t&&await ir(t)}catch(e){alert(`edit failed: ${e.message}`)}}),R(t,M(N,{get when(){return r()>0},get children(){var e=_d(),t=e.firstChild,n=t.firstChild,o=t.nextSibling,s=o.firstChild,c=o.nextSibling.firstChild;return R(t,r,n),s.addEventListener(`change`,()=>a(`summarize`)),c.addEventListener(`change`,()=>a(`discard`)),y(()=>s.checked=i()===`summarize`),y(()=>c.checked=i()===`discard`),e}}),s),c.$$click=()=>Nt(null),y(()=>o.value=e().text),t}})}})]}function Ap(e){let t=new Date(e.startedAt).getTime(),[n,r]=v(Date.now());C(()=>{let e=setInterval(()=>r(Date.now()),500);w(()=>clearInterval(e))});let i=()=>Ve(Math.max(0,n()-t));return e.inline?(()=>{var t=yd();return t.firstChild,R(t,i,null),R(t,(()=>{var t=P(()=>!!e.timeoutMs);return()=>t()?` · timeout ${Math.round(e.timeoutMs/1e3)}s`:``})(),null),t})():(()=>{var e=bd(),t=e.firstChild;return R(e,i,t),e})()}function jp(e){let[t,n]=v(Date.now());return C(()=>{let e=setInterval(()=>n(Date.now()),500);w(()=>clearInterval(e))}),(()=>{var n=xd();return R(n,()=>Ve(Math.max(0,t()-e.startedAt))),n})()}function Mp(e){let t=e.e,n=e.res,r=!e.agentActive&&!n,i=t.data??{},a=String(i.name??`tool`),o=()=>n?String(n.data?.result??``):``,s=a,c=``,l=(()=>{var e=Sd();return R(e,()=>Lp(JSON.stringify(i.args??{},null,1),2e3)),e})(),u=e=>String(i.args?.[e]??``),d=()=>a===`bash`?u(`command`):u(`path`)||JSON.stringify(i.args??{},null,1),f=()=>a===`bash`?Number(u(`timeout_ms`))||void 0:a===`wait_children`?Number(u(`timeout_ms`))||3e5:Number(u(`timeout_ms`))||void 0,p=(e,t=1500)=>(()=>{var n=Cd();return R(n,()=>Lp(e,t)),n})(),m=(e=4e3)=>n?[P(()=>p(o(),e)),(()=>{var e=wd();return R(e,()=>Ve(n.data?.durationMs),null),R(e,()=>a===`bash`?vt(_t(n.data?.ok,String(n.data?.result??``))):n.data?.ok===!1?` · FAILED`:``,null),R(e,M(Up,{get text(){return o()}}),null),e})()]:Td();try{switch(a){case`bash`:{let e=u(`command`),t=i.args?.background===!0,r=t?String(o()).match(/job (bg\d+)/)?.[1]??``:``;s=(t?`⏳ `:`$ `)+Vp(e,96);let a=u(`timeout_ms`)?Number(u(`timeout_ms`)):void 0,d=_t(n?.data?.ok,n?String(n.data?.result??``):``);c=n?t?`background job${r?` ${r}`:``}${a?` · timeout ${Math.round(a/1e3)}s`:``}`:yt({outcome:d,durationMs:n.data?.durationMs,timeoutMs:a,fmtDur:Ve}):null,l=[t?(()=>{var e=Ed(),t=e.firstChild.nextSibling,n=t.firstChild.nextSibling;return n.nextSibling,R(t,r||`?`,n),R(e,r?[` · kill with `,Dd()]:null,null),e})():null,P(()=>P(()=>e!==s.slice(2))()?p(e,800):null),P(()=>m(6e3))];break}case`read_file`:{s=u(`path`)||`(no path)`;let e=[];u(`pattern`)&&e.push(`grep /${Vp(u(`pattern`),40)}/`),Number(i.args?.offset)<0?e.push(`last ${-Number(i.args.offset)} lines`):i.args?.offset&&e.push(`from L${i.args.offset}`),i.args?.limit&&e.push(`≤${i.args.limit} lines`),c=e.join(` · `),l=m(6e3);break}case`write_file`:{let e=String(i.args?.content??``);s=u(`path`)||`(no path)`,c=`${zp(e.length)} bytes`,l=[P(()=>p(e,1500)),P(()=>P(()=>e.length>1500)()?(()=>{var t=Od(),n=t.firstChild;return R(t,()=>zp(e.length),n),t})():null),n?(()=>{var e=wd();return R(e,()=>Vp(o(),160)),e})():kd()];break}case`edit_file`:s=u(`path`)||`(no path)`,c=i.args?.replace_all===!0?`replace all`:`unique spot`,l=[(()=>{var e=Ad();return R(e,()=>Lp(`- `+u(`old_text`),900)),e})(),(()=>{var e=jd();return R(e,()=>`+ `+Lp(u(`new_text`),900)),e})(),n?(()=>{var e=Md(),t=e.firstChild;return R(e,()=>Vp(o(),120),t),R(e,()=>Ve(n.data?.durationMs),null),e})():Nd()];break;case`apply_patch`:{let e=u(`patch`).split(`
20
+ `,t)}paste(e){this._core.paste(e)}refresh(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(e){this._addonManager.loadAddon(this,e)}static get strings(){return{get promptLabel(){return wt.get()},set promptLabel(e){wt.set(e)},get tooMuchOutput(){return Et.get()},set tooMuchOutput(e){Et.set(e)}}}_verifyIntegers(...e){for(sl of e)if(sl===1/0||isNaN(sl)||sl%1!=0)throw Error(`This API only accepts integers`)}_verifyPositiveIntegers(...e){for(sl of e)if(sl&&(sl===1/0||isNaN(sl)||sl%1!=0||sl<0))throw Error(`This API only accepts positive integers`)}},ll=2,ul=1,dl=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),a=window.getComputedStyle(this._terminal.element),o={top:parseInt(a.getPropertyValue(`padding-top`)),bottom:parseInt(a.getPropertyValue(`padding-bottom`)),right:parseInt(a.getPropertyValue(`padding-right`)),left:parseInt(a.getPropertyValue(`padding-left`))},s=o.top+o.bottom,c=o.right+o.left,l=r-s,u=i-c-t;return{cols:Math.max(ll,Math.floor(u/e.css.cell.width)),rows:Math.max(ul,Math.floor(l/e.css.cell.height))}}},fl=`modulepreload`,pl=function(e){return`/`+e},ml={},hl=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=pl(t,n),t=s(t),t in ml)return;ml[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:fl,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},gl=F(`<div class=overlay><div class=modal style=max-width:360px><div class=modal-head><b>🔒 sign in</b><span></span></div><form style=display:flex;flex-direction:column;gap:10px><input id=pw-input type=password placeholder=password autofocus><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:7px 12px;cursor:pointer">unlock</button><span class=muted style=font-size:11px>the token is stored locally and sent as Bearer to this server only`),_l=F(`<div class=themegrid>`),vl=F(`<div class=themepop><label class=trow title="switch automatically when the OS switches appearance — pick which theme to use for each"><input type=checkbox>follow system`),yl=F(`<i class=notifdot>`),bl=F(`<br>`),xl=F(`<span class="badge queued">⏳ <!> of yours queued`),Sl=F(`<span class="badge cron">⏰ `),Cl=F(`<span class=sub>ℹ`),wl=F(`<header class=chan-head><span class=hash>#</span><span class=title></span><span></span><span class=sub> · <!>/<!> · turns <!> · tools </span><span style=margin-left:auto;display:flex;gap:4px>`),Tl=F(`<div class=divider-msg>── beginning of log ──`),El=F(`<div class=divider-msg>loading older events…`),Dl=F(`<details class=reasoning open><summary>💭 thinking </summary><div class="mono thinkscroll">`),Ol=F(`<div class=muted style=font-size:11.5px;margin-bottom:4px>🗜 summarizing older context…`),kl=F(`<div class=content>`),Al=F(`<div class="msg live"><div class=avatar style="background:#5865f233;border:1px solid #5865f266">🫖</div><div class=msg-body><div class=msg-head><span class=author style=color:var(--acc)>agent</span><span class=ts>streaming…`),jl=F(`<div class=feed>`),Ml=F(`<div class="termempty muted">no shell here — + opens one, tabs fill the focused pane`),Nl=F(`<div class=termsplit>`),Pl=F(`<div class="termempty muted">no shell here — click a tab or + to add`),Fl=F(`<div class=termpane>`),Il=F(`<div class=termdrawer><div class=termgrip title="drag to resize · double-click to reset"></div><div class=termbar><div class=termtabs></div><div style=display:flex;gap:4px;align-items:center><span class="muted mono"style=flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap></span></div></div><div class=termbody><div class=termpane>`),Ll=F(`<button class=jump>↓ `),Rl=F(`<div class=cmds>`),zl=F(`<div class=imgstage><span class=muted style=font-size:11px;align-self:center> image<!> attached`),Bl=F(`<label class=forkchip title="inherit the conversation prefix byte-exactly — the sub-agent's provider prefix cache starts warm"><input type=checkbox>fork ctx`),Vl=F(`<span class=muted style=font-size:11.5px;white-space:nowrap>🖼 `),Hl=F(`<div><form><textarea rows=1></textarea><button type=button class="iconbtn maxbtn"></button><button type=submit>send</button><input id=composer-file type=file accept=image/* multiple style=display:none></form><div class=hint>`),Ul=F(`<div class=rightbarbackdrop>`),Wl=F(`<div><nav class=sidebar><div class=agent-list></div><div class=sidebar-footer><div class=footer-row style=justify-content:flex-end><button>🔔</button></div><div class=brand-row><div class=brand>🫖 teapot <span class=version>v</span><span></span></div></div><div class=metrics></div></div></nav><section class=channel></section><aside><div class=rightbarhead><span class=muted>details`),Gl=F(`<div class=notifbackdrop>`),Kl=F(`<button class=editbtn>clear all`),ql=F(`<div class=notiflist>`),Jl=F(`<div class=notifpanel><div class=notifhead>notifications<span style=display:flex;gap:8px;align-items:center><button class=iconbtn title="close notifications">✕`),Yl=F(`<span class=wscount>`),Xl=F(`<div class=wsheader><span class=wscaret>`),Zl=F(`<span class=notifbadge>🔔`),Ql=F(`<span class=subtag>🧩`),$l=F(`<span class=mini-cron>⏰`),eu=F(`<span class=goaldone title="goal done">✓`),tu=F(`<div><span></span><span>`),nu=F(`<span class=caret-spacer>`),ru=F(`<span class=caret>`),iu=F(`<span class=ghosttag title="workspace missing">👻`),au=F(`<span>🧩 `),ou=F(`<label class=trow>system light →<select class=w100>`),su=F(`<label class=trow>system dark →<select class=w100>`),cu=F(`<option>`),lu=F(`<button><span class=swdots>`),uu=F(`<i>`),du=F(`<div class=muted style=display:grid;place-items:center;height:100%>select an agent`),fu=F(`<div class="divider-msg compacting"title="the harness is compressing old turns into notes so work can continue within the context window">🗜 `),pu=F(`<div class=muted style=display:grid;place-items:center;height:100%>no events yet — say something or press ▶ start`),mu=F(`<div class="content muted">thinking…`),hu=F(`<span>⌨ <button class=tabx title="close this shell">✕`),gu=F(`<div><b class=mono></b><span class=muted>`),_u=F(`<div class=cmdrow><b>@</b><span class=muted>`),vu=F(`<span class=imgchip><img><button type=button class=imgx title=remove>✕`),yu=F(`<h3 title="identity + storage locations for this agent">🎛 session`),bu=F(`<div class="card sesscard"><div class=sessrow><span class=k>agent</span><b></b><span></span></div><div class=sessrow><span class=k>workspace</span><span class="mono ellip"></span></div><div class=sessrow><span class=k>session</span><span class=mono>/`),xu=F(`<h3 title="switch provider/model live — applies from the agent's next turn; the list shows context window &amp; pricing from the provider">🧦 model`),Su=F(`<div style=display:flex;gap:6px;align-items:center;margin-top:6px><label class=muted style=font-size:11.5px;white-space:nowrap>effort</label><select style=flex:1;min-width:0><option value>provider default</option></select><button title="apply to this session — takes effect from the agent's next turn">apply`),Cu=F(`<div class=meta style=color:var(--fg)>`),wu=F(`<div class=modelbox><select title="provider (OpenAI-compatible endpoint)"></select><div style=display:flex;gap:4px><input type=text list=model-list style=flex:1;min-width:0><datalist id=model-list></datalist><button title="apply to this session — takes effect from the agent's next turn">apply</button></div><div class=meta>current: `),Tu=F(`<h3>⏯ controls`),Eu=F(`<button title="stop every sub-agent this agent spawned (descendants included)">⏹ subs`),Du=F(`<div class=btnrow><button></button><button title="branch off the conversation here — try things without disturbing the main line">⑂ fork</button><button title="remove agent from teapot (session log stays on disk)">🗑 remove`),Ou=F(`<div class=ctrlrow><label title="auto-continue fires after a round ONLY when all hold: ① this toggle is on ② a goal is set and its status is 'active' ③ the round ended cleanly (no error / not stopped). It stops when the goal is marked done, or if you press ■ stop. Sending any prompt also starts an idle agent regardless."><input type=checkbox>auto-continue</label><span class=muted>loops while goal is active · stops on done / stop`),ku=F(`<span>`),Au=F(`<h3 title="what the agent is working toward — auto-continue keeps looping while the status is 'active'">🎯 goal`),ju=F(`<div class=statrow style=margin-bottom:6px><span class=k>status`),Mu=F(`<div class=card><div class=content>`),Nu=F(`<div class="card verifycard"title="verification contract — finish(goalComplete=true) is audited against these requirements by an independent reviewer before the goal counts as done"><div class=vtitle>🔍 verification contract</div><div class=content>`),Pu=F(`<div class=muted style=font-size:11px;margin-top:4px>stored with the session · the agent reads it via get_goal() · auto-continue loops while status is "working" and stops when marked done`),Fu=F(`<form style=display:flex;flex-direction:column;gap:6px;margin-top:8px;margin-bottom:6px><textarea id=goal-input rows=3 placeholder="set new goal…"style="background:var(--bg-darkest);border:none;border-radius:6px;padding:6px 8px;color:var(--fg);font:inherit;width:100%;resize:vertical"></textarea><textarea id=goal-verify-input rows=2 placeholder="verification contract (optional) — e.g. 'npm test passes; endpoint documented'. finish(goalComplete=true) is then audited against this."title="pi-goal-x-style verification contract — an independent reviewer checks the agent's finish against these requirements"style="background:var(--bg-darkest);border:1px solid var(--bg-light);border-radius:6px;padding:6px 8px;color:var(--fg);font:inherit;font-size:12.5px;width:100%;resize:vertical"></textarea><div style=display:flex;justify-content:flex-end;align-items:center;gap:10px><label class=muted title="queue a harness prompt telling the agent about the new goal at its next turn boundary"style=display:flex;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap;cursor:pointer><input id=goal-notify type=checkbox> notify agent</label><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:4px 12px;cursor:pointer">✓ save goal`),Iu=F(`<span class=badge>/<!> done`),Lu=F(`<h3 title="todo.md — a shared checklist in the session dir. Write tasks like '- [ ] fix login'; the agent ticks them off via set_todo, you edit here. With notify on, it's told at its next turn boundary.">✅ tasks<span class=muted style=text-transform:none;letter-spacing:0>· shared checklist (you + agent)`),Ru=F(`<div class=bartrack style=margin-bottom:6px><div>`),zu=F(`<div style=display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:4px><label class=muted title="queue a harness prompt telling the agent the task list changed"style=display:flex;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap;cursor:pointer><input id=todo-notify type=checkbox checked> notify agent</label><button style="background:var(--ok);border:none;border-radius:6px;color:#fff;padding:4px 12px;cursor:pointer">✓ save tasks`),Bu=F(`<h3 title="latest report_progress snapshot. The harness asks for one after real activity (time AND output gates); errors show under ⚠ problems">📈 progress`),Vu=F(`<h3 title="cumulative billed totals · the cached pill counts tokens served from the provider's prompt cache (far cheaper) · context bar turns orange ≥70% and red ≥85% of the model window">📊 runtime`),Hu=F(`<span class="pill ok">⚡ <!>% cached`),Uu=F(`<div class=statrow><span class=k>cost</span><b>$`),Wu=F(`<div class="card runcard"><div class=statgrid><div class=stat title="LLM turns taken this session"><span>turns</span><b></b></div><div class=stat title="tool calls executed"><span>tools</span><b></b></div><div class=stat title="times old turns were summarized to free context"><span>compacted</span><b></b></div></div><div class=statrow><span class=k>tokens</span><b> in / <!> out`),Gu=F(`<div class=muted style=font-size:11px;text-transform:none;letter-spacing:0>showing <b></b> and the history it inherited before forking`),Ku=F(`<h3>🌿 branches <span class=muted style=text-transform:none;letter-spacing:0>· click to filter the feed`),qu=F(`<h3>⏰ schedule <span class=muted style=text-transform:none;letter-spacing:0>· cron tasks, all agents · edit in settings`),Ju=F(`<span class=badge title="no goal set yet">no goal`),Yu=F(`<button>`),Xu=F(`<div class="card muted">no goal yet — write one below and press ✓ save. Then ▶ start (or any message) sets it in motion.`),Zu=F(`<div><div class=vtitle><span class="meta muted"style=margin-left:auto></span></div><div class=content>`),Qu=F(`<div class=muted>none yet — the harness asks for a report after real activity, and the agent can report_progress anytime`),$u=F(`<div class=progrow><b>recent</b><span class="content inline-md">`),ed=F(`<div class="progrow warn"><b>⚠ problems</b><span class="content inline-md">`),td=F(`<div class=progrow><b>next</b><span class="content inline-md">`),nd=F(`<div class=progrow><b>goal</b><span>`),rd=F(`<div class="card prog"><div class=progrow><b>doing</b><span class="content inline-md"></span></div><div class="meta muted">`),id=F(`<div class=statrow><span class=k>context</span><span class=muted>no window known for this model yet`),ad=F(`<span>% of `),od=F(`<div class=bartrack><div>`),sd=F(`<div class=bartrack style=margin-top:4px><div>`),cd=F(`<div class=statrow title="a compaction pass is running right now — the summarizer's output streams in the timeline"><span class=k>🗜</span><b>compacting…</b><span class=muted style=font-size:11px;color:var(--acc)>`),ld=F(`<div class=ctxblock title="estimated live context vs the model's real window. Past the window, old turns are summarized into notes (compaction); the compact line below shows where that starts."><div class=statrow><span class=k>context</span><b>~<!> tok</b></div><div class=statrow style=margin-top:4px><span class=k>compact</span><b> tok</b><span class=muted style=font-size:11px;color:var(--dim)></span></div><div class=ctrlrow style=margin-top:6px><label title="when on, older turns are automatically summarized when context exceeds the budget"><input type=checkbox>auto-compact</label><span class=muted style=font-size:11.5px>summarizes old turns when budget exceeded</span></div><div class=muted style=font-size:11px;margin-top:4px>compaction starts around ~<!> tok — older turns get summarized, recent ones stay intact`),ud=F(`<div><span></span><span> events`),dd=F(`<div class=muted>no scheduled tasks — add them in ⚙ settings ("scheduled tasks")`),fd=F(`<span title="runs on a forked branch so chatter stays off the main line">⑂`),pd=F(`<div><div class=sched-top><b></b><span class=muted>@</span></div><div class="sched-meta mono"> → next </div><div class="sched-prompt muted">`),md=F(`<div class=muted style=padding:10px>nothing yet — progress, finishes, questions and errors will land here`),hd=F(`<div class=nbody>`),gd=F(`<div><div class=nhead><span class=nicon></span><span class=ntitle></span><span class="meta muted"></span><button class="iconbtn nreadbtn">`),_d=F(`<div><div style=font-size:12.5px;margin-bottom:4px> event(s) came after this prompt — what should happen to them on the new branch?</div><label style=display:flex;gap:6px;align-items:center;font-size:13px;color:var(--fg)><input type=radio name=tail>summarize them into a note the agent can still read</label><label style=display:flex;gap:6px;align-items:center;font-size:13px;color:var(--fg)><input type=radio name=tail>discard them entirely (clean timeline)`),vd=F(`<form style=display:flex;flex-direction:column;gap:10px><textarea id=edit-text class="mono w100"rows=6></textarea><div style=display:flex;justify-content:flex-end;gap:8px><button type=button>cancel</button><button type=submit style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 12px;cursor:pointer">⑂ fork & resend`),yd=F(`<span class=bashelapsed>running… `),bd=F(`<span class=bashelapsed> elapsed`),xd=F(`<span class=thinktimer>`),Sd=F(`<div class=mono>`),Cd=F(`<pre class="mono toolbody">`),wd=F(`<div class=meta>`),Td=F(`<div class=meta>waiting for output…`),Ed=F(`<div class="meta bgjob-note">runs in background — poll with <b>bash_output(job_id=&quot;<!>&quot;)`),Dd=F(`<b>action="kill"`),Od=F(`<div class="meta muted"> bytes — open it from 🗂 files for the full view`),kd=F(`<div class=meta>writing…`),Ad=F(`<pre class="mono toolbody del">`),jd=F(`<pre class="mono toolbody add">`),Md=F(`<div class=meta> · `),Nd=F(`<div class=meta>applying…`),Pd=F(`<pre class="mono toolbody patch">`),Fd=F(`<div>`),Id=F(`<div class="pline meta">… <!> more lines`),Ld=F(`<div class=meta>validating…`),Rd=F(`<a target=_blank rel="noopener noreferrer"referrerpolicy=no-referrer>open ↗`),zd=F(`<span class=muted>`),Bd=F(`<div class=meta>loading…`),Vd=F(`<div class=meta>bundled: `),Hd=F(`<div class=meta>saving…`),Ud=F(`<span class=actor>@`),Wd=F(`<details><summary><b>⚙ </b><span class=meta></span><span class=toolcopy>`),Gd=F(`<div class=divider-msg>⑂ forked from <!> → `),Kd=F(`<div><div class=goalline-label>`),qd=F(`<div class=divider-msg>✅ tasks updated (<!>)`),Jd=F(`<div> → `),Yd=F(`<div class="embed fail"><div class=mono>🛑 runaway: <!> tool failures in a row (limit <!>)</div><div class=meta>last: <!> — `),Xd=F(`<div class="embed warn-embed"title="a round-fatal API error occurred; auto-retry is waiting, then a fresh round starts (onError: retry)"><div class=mono>↻ API error — retrying (attempt <!>) in <!>s…`),Zd=F(`<div class=divider-msg>🗜 compacted: <!> → <!> tok (<!>)`),Qd=F(`<div class=divider-msg title="compaction is rewriting older history — the agent is not stuck">🗜 compacting: summarizing <!> earlier messages from <!> tok (<!>)…`),$d=F(`<button class=editbtn title="withdraw this message — it has not reached the model yet; the text goes back to the input box">✕ cancel`),ef=F(`<button class=editbtn title="edit this prompt — forks the conversation here (later events are dropped or summarized)">✎ edit`),tf=F(`<div class=msg-head><span class=author></span><span class=ts></span><span class=ts>`),nf=F(`<div><div></div><div class=msg-body>`),rf=F(`<span class=grouptime>`),af=F(`<div class=qfree><input type=text><button>reply`),of=F(`<div class=promptimgs>`),sf=F(`<img class=promptimg alt=attachment>`),cf=F(`<details class=reasoning><summary>💭 reasoning</summary><div class=mono>`),lf=F(`<div class=interrupted>⚠ interrupted — partial output kept`),uf=F(`<div class=msgfoot><span>copy summary`),df=F(`<div class=meta>its call is no longer in the loaded events — the run itself finished`),ff=F(`<details><summary><span class=iconmeta>⚙</span><span class=meta></span></summary><div class=mono></div><div class=meta>`),pf=F(`<div class="content muted">Rejected: `),mf=F(`<details class="embed decision"><summary><b>📌 <span class="content inline-md"></span></b><span class=meta>decision logged</span></summary><div class=content>`),hf=F(`<div class=meta style=color:var(--ok)>✓ answered — continuing below`),gf=F(`<div class=qopts>`),_f=F(`<div><div>❓ <div class="content inline-md">`),vf=F(`<button class=qopt>`),yf=F(`<div class=embed style=border-color:var(--ok)><div>📈 <div class="content inline-md">`),bf=F(`<div class="embed fail"><div class=mono>⚠ `),xf=F(`<div class=vtitle style=margin-top:6px>what the agent kept`),Sf=F(`<details class="embed compaction"><summary><b>🗜 context compacted</b><span class=meta> · <!> → <!> tok · `),Cf=F(`<div class="content muted">`),wf=F(`<button type=button><span class=iconbtn-glyph>`),Tf=F(`<button class=copybtn>`),Ef=F(`<div class=overlay><div class=modal><div class=modal-head><b></b><button class=iconbtn>✕`),Df=F(`<span style=color:var(--err);font-size:13px>`),Of=F(`<form style=display:flex;flex-direction:column;gap:10px><label>workspace directory<div style=display:flex;gap:6px><input type=text class="w100 mono"><button type=button>go</button><button type=button title="parent directory">↑</button></div></label><div class=dirlist></div><div style=display:flex;gap:10px><label style=flex:1>agent name <input type=text placeholder="(directory name)"></label><label style="flex:0 1 auto;min-width:0">provider<select></select></label><label style=flex:1>model <input type=text placeholder="(provider default)"></label></div><button type=submit style=align-self:flex-end>create`),kf=F(`<div class=direntry>📁 `),Af=F(`<div class="content mdpreview todopane">`),jf=F(`<textarea id=todo-input class="mono todopane-edit"rows=5 placeholder="- task one
21
+ - task two"title="shared with the agent \\u2014 it may check items off via set_todo; your unsaved edits win until you save">`),Mf=F(`<span class=fsize>`),Nf=F(`<div><span class=ficon></span><span class=fname>`),Pf=F(`<h3 title="the agent's workspace — lazy-loaded, dotfiles hidden; click a folder to expand, a file to preview"style=display:flex;align-items:center;gap:6px>🗂 files <span class=muted style=text-transform:none;letter-spacing:0>· `),Ff=F(`<div class=filebox>`),If=F(`<div class=muted style=padding:6px>`),Lf=F(`<img>`),Rf=F(`<div class=mediapreview><div class="meta muted"> preview`),zf=F(`<button title="rendered markdown">👁 preview`),Bf=F(`<button title="edit and save back to the workspace">✎ edit`),Vf=F(`<div class=filetoolbar><button title="syntax-highlighted source">&lt;/> code`),Hf=F(`<div class=fileeditor><textarea class=mono></textarea><div class=filerow-actions><span class=muted> bytes</span><button class=savebtn>`),Uf=F(`<div class=mono style=margin:0;color:var(--dim)>(binary file — inspect it from the terminal)`),Wf=F(`<div class="content mdpreview">`),Gf=F(`<video controls>`),Kf=F(`<audio controls>`),qf=F(`<div class=filepreview>`),Jf=F(`<div class=muted style=padding-top:6px;font-size:11.5px>… truncated (first 100 KB)`),Yf=F(`<div class=muted style=padding:8px;font-size:12px>✨ highlighting <!>…`),Xf=F(`<pre class=mono style=max-height:62vh;overflow:auto;white-space:pre-wrap;margin:0>`),Zf=F(`<div class=muted style=font-size:11.5px;margin-top:-6px>`),Qf=F(`<span style=color:var(--fg)>`),$f=F(`<div class=muted style=font-size:11.5px;margin-top:-8px> models found at this endpoint`),ep=F(`<div class=overlay style=background:var(--bg-darkest)><div class=modal style=max-width:560px><div class=modal-head><b>🫖 welcome to teapot</b></div><p class=muted style="margin:0 0 10px;font-size:13px">first run — pick an OpenAI-compatible provider and you're done. everything below can be changed later in ⚙ settings.</p><form style=display:flex;flex-direction:column;gap:12px><div style=display:flex;gap:6px;flex-wrap:wrap></div><label>base url<input type=text class="w100 mono"list=wiz-preset-urls><datalist id=wiz-preset-urls></datalist></label><label>api key <input type=password class=w100 placeholder="(local providers may not need one)"></label><label>default model<input type=text class="w100 mono"list=wiz-model-list><datalist id=wiz-model-list></datalist></label><fieldset><legend>first agent</legend><label>workspace directory<input type=text class="w100 mono"></label><label title="asks for this password when opening the UI or API from another machine — plain-HTTP LAN traffic is NOT encrypted"style=margin-top:4px>protect the API with a password? <input type=password class=w100 placeholder="(optional — LAN traffic is still plain HTTP)"></label></fieldset><button type=submit style="background:var(--acc);border:none;border-radius:8px;color:#fff;padding:9px 14px;font-weight:600;cursor:pointer">`),tp=F(`<button type=button>`),np=F(`<div class=muted style=font-size:11.5px;margin-top:-8px>models appear here automatically once the endpoint answers GET /models`),rp=F(`<label><input type=number min=0>`),ip=F(`<div class=muted style=font-size:11.5px;margin-top:4px>⚠ configured default provider <code></code> has no provider row here<!> Add a provider named <code></code> or pick a default below; otherwise agents fall back to the first provider.`),ap=F(`<form style=display:flex;flex-direction:column;gap:14px><fieldset><legend>providers</legend><button type=button>+ add custom</button><div style=display:flex;gap:6px;flex-wrap:wrap;margin-top:6px><span class=muted style=font-size:11.5px>quick-add:</span></div><div><label title="agents without an explicit provider use this one"style=display:flex;align-items:center;gap:6px;margin-top:6px>default provider<select><option value>(none — first provider wins)</option></select></label></div></fieldset><fieldset><legend>agent runtime</legend><div class=cfggrid><label title="auto-compact threshold in k tokens. Leave EMPTY to derive per model (75% of its context window) — recommended, since models differ wildly in window size. Set only to force an absolute cap across all models.">compact budget (k tok)<input type=number min=0 placeholder="(derive: 75% of window)"></label></div></fieldset><fieldset><legend>scheduled tasks</legend><button type=button>+ add task</button></fieldset><fieldset><legend>agents (read-only — edit config file or use +)</legend></fieldset><fieldset><legend>live update</legend><div class=cfgrow><span class=muted>current version: </span><button type=button style="background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 14px;cursor:pointer">update & restart</button><span class=muted style=margin-left:8px;font-size:12px>gracefully stops all agents, spawns new process, then reloads this page</span></div></fieldset><button type=submit style="align-self:flex-end;background:var(--acc);border:none;border-radius:6px;color:#fff;padding:6px 14px;cursor:pointer">save settings`),op=F(`<div class=cfgrow><input class=cfgname placeholder=name><input placeholder=https://…/v1><input placeholder="api key"type=password><input placeholder="default model"><button type=button class=danger title="remove provider">✕`),sp=F(`<button type=button>+ `),cp=F(`<div class=cfgcol><div class=cfgrow><input placeholder=id><input placeholder="agent id"><input placeholder="every 30m / cron"><label style=display:flex;gap:3px;align-items:center;white-space:nowrap;color:var(--dim);font-size:11px><input type=checkbox>fork</label><button type=button class=danger>✕</button></div><textarea rows=2 placeholder="prompt to send">`),lp=F(`<span class=muted>🧩 sub of @`),up=F(`<div class=cfgrow><b></b><span class=muted>`),dp=new Map;function fp(e){let t=dp.get(e);if(t!==void 0)return t;let n=Ie(e);return dp.set(e,n),dp.size>500&&dp.delete(dp.keys().next().value),n}var pp=[`minimal`,`low`,`medium`,`high`],mp=1100,hp={prompt:{name:`you`,icon:`🟧`,color:`#faa81a`},user:{name:`you`,icon:`🟧`,color:`#faa81a`},message:{name:`agent`,icon:`🫖`,color:`#5865f2`},progress:{name:`progress`,icon:`📈`,color:`#3ba55d`},question:{name:`agent`,icon:`❓`,color:`#5865f2`}},gp={name:`harness`,icon:`📣`,color:`#3ba55d`},[_p,vp]=v(``),yp,Q=e=>{vp(e),clearTimeout(yp),yp=setTimeout(()=>vp(``),3200)},bp=!1,xp=[{key:`dark`,label:`Dark`,mode:`dark`,sw:[`#1a1c22`,`#2b2e39`,`#5865f2`]},{key:`midnight`,label:`Midnight`,mode:`dark`,sw:[`#0d0f18`,`#252a42`,`#8b7cf7`]},{key:`tea`,label:`Milk Tea`,mode:`dark`,sw:[`#241c16`,`#493b2d`,`#d98e32`]},{key:`coffee`,label:`Coffee`,mode:`dark`,sw:[`#191410`,`#403527`,`#c68a4b`]},{key:`matcha`,label:`Matcha`,mode:`dark`,sw:[`#1b2217`,`#3c4a33`,`#8db64e`]},{key:`matrix`,label:`Matrix`,mode:`dark`,sw:[`#060a06`,`#18301d`,`#2fd558`]},{key:`sunset`,label:`Sunset`,mode:`dark`,sw:[`#1c1422`,`#452f52`,`#f2784b`]},{key:`light`,label:`Light`,mode:`light`,sw:[`#eceef4`,`#ffffff`,`#4757d8`]},{key:`strawberry`,label:`Strawberry`,mode:`light`,sw:[`#fbe4ea`,`#fffafb`,`#e05575`]},{key:`ramune`,label:`Ramune`,mode:`light`,sw:[`#ddeff7`,`#fbfeff`,`#1d86ae`]}];function Sp(){let e=``,t=``;try{let n=getComputedStyle(document.documentElement);e=n.getPropertyValue(`--term-bg`).trim(),t=n.getPropertyValue(`--term-fg`).trim()}catch{}return{background:e||`#0d0e12`,foreground:t||`#dcdee4`}}var Cp=e=>{if(e.data?.actor)return{name:`@${String(e.data.actor)}`,icon:`🧩`,color:`#3ba0c9`};if(e.type===`tool_call`||e.type===`tool_result`)return{name:String(e.data?.name??`tool`),icon:`⚙`,color:`#3ba0c9`};if(e.type===`prompt`){let t=String(e.data?.source??`user`);return t===`user`?hp.prompt:t.startsWith(`scheduler:`)?{name:t.slice(10),icon:`📣`,color:`#3ba55d`}:gp}return hp[e.type]??{name:e.type,icon:`•`,color:`#9298a5`}},wp=new Set([`user`,`message`,`prompt`,`tool_call`,`tool_result`,`progress`,`state`,`error`,`fork`,`goal`,`todo`,`question`,`decision`,`compaction`,`system_note`]),Tp=new Set([`system_note`]),Ep=e=>{let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`};async function $(e,t){let n=localStorage.getItem(`teapot.token`),r=new Headers(t?.headers);n&&!r.has(`authorization`)&&r.set(`authorization`,`Bearer ${n}`);let i=await fetch(e,{...t,headers:r});if(!i.ok){i.status===401&&window.dispatchEvent(new CustomEvent(`teapot:unauthorized`));let t=null;try{t=await i.json()}catch{}let n=(t&&typeof t==`object`&&`error`in t?String(t.error):``)||`${e}: HTTP ${i.status}`;throw Object.assign(Error(n),{payload:t})}return i.json()}var Dp=location.hash.match(/[#&]token=([^&]+)/);Dp&&(localStorage.setItem(`teapot.token`,decodeURIComponent(Dp[1])),history.replaceState(null,``,location.pathname+location.search));var Op=()=>{let e=localStorage.getItem(`teapot.token`);return e?`?token=${encodeURIComponent(e)}`:``};function kp(){let[e,t]=v([]),[n,r]=v(null),[i,a]=v(``),[o,s]=v(new Map),[c,l]=v(new Map),u=!1;async function d(e=!1){if(!(u&&!e)){u=!0;try{let e=await $(`/api/sessions`),t=new Map,n=new Map;for(let r of e.sessions??[]){t.set(r.id,r.agentId);let e=n.get(r.agentId)??[];e.push(r.id),n.set(r.agentId,e)}s(t),l(n)}catch{}}}let[f,p]=v([]),[m,h]=v(0),[g,_]=v([]),[ee,te]=v(null),T=new Map,[ne,E]=v(T.get(n()??``)??``),D=e=>{E(e);let t=n();t&&(e?T.set(t,e):T.delete(t))},[O,re]=v({providers:{}}),[k,ie]=v(!1),[ae,oe]=v(!1),se=()=>window.innerWidth<=mp,[ce,A]=v(se());C(()=>{let e=()=>A(se());window.addEventListener(`resize`,e),w(()=>window.removeEventListener(`resize`,e)),e()}),C(()=>{let e=0,t=()=>{e||=requestAnimationFrame(()=>{e=0;let t=$n();if(!t)return;let n=dt(),r=n||!t.scrollHeight?null:le(t);!n&&!r||requestAnimationFrame(()=>{if(!t.isConnected)return;if(n){t.scrollTop=t.scrollHeight,mt(0);return}let e=r&&t.querySelector(r.sel);if(e){let n=e.getBoundingClientRect().top-r.top;n&&(t.scrollTop+=n)}})})};window.addEventListener(`resize`,t),w(()=>{window.removeEventListener(`resize`,t),e&&cancelAnimationFrame(e)})});function le(e){let t=e.querySelectorAll(`[data-eid]`),n=e.getBoundingClientRect().top;for(let e of t){let t=e.getBoundingClientRect();if(t.bottom>n){let n=e.dataset.eid??``;return n?{sel:`[data-eid="${CSS.escape(n)}"]`,top:t.top}:null}}return null}let[j,ue]=v(localStorage.getItem(`teapot.panel`)===null?window.innerWidth>mp:localStorage.getItem(`teapot.panel`)===`1`),de=e=>{ue(e),localStorage.setItem(`teapot.panel`,e?`1`:`0`)},fe=()=>de(!j()),pe=()=>{j()&&de(!1)},[me,he]=v(!1),[ge,_e]=v(localStorage.getItem(`teapot.theme`)??`dark`),[ve,be]=v(localStorage.getItem(`teapot.theme.auto`)===`1`),[xe,Se]=v(localStorage.getItem(`teapot.theme.light`)??`light`),[Ce,F]=v(localStorage.getItem(`teapot.theme.dark`)??`dark`),we=typeof window.matchMedia==`function`?window.matchMedia(`(prefers-color-scheme: light)`):null,[ke,Ae]=v(we?.matches??!1);C(()=>{let e=e=>Ae(e.matches);we?.addEventListener(`change`,e),w(()=>we?.removeEventListener(`change`,e))}),b(()=>{let e=ve()?ke()?xe():Ce():ge();document.documentElement.dataset.theme=e,document.documentElement.dataset.appearance=xp.find(t=>t.key===e)?.mode??`dark`});let[je,Me]=v(``),[Ne,Pe]=v(``),[Fe,Le]=v(``);b(()=>{let t=n();Le(S(()=>e().find(e=>e.id===t)?.reasoningEffort??``))});let[Re,ze]=v([]),Be=()=>Object.keys(O().providers??{});async function Ve(e){if(e)try{let t=await $(`/api/models?provider=${encodeURIComponent(e)}`);ze(t.models??[])}catch{ze([])}}let Ge=e=>{let t={text:`📄`,image:`🖼️`,audio:`🔊`,video:`🎬`,file:`📎`},n=e=>(e??[`text`]).map(e=>t[e]??e).join(``);return e?.modalities?`${n(e.modalities.input)} → ${n(e.modalities.output)}`:``},$e=()=>{let e=Ne().trim()||V()?.model||``;if(!e)return``;let t=Re().find(t=>t.id===e);if(!t)return``;let n=[],r=Ge(t);r&&r!==`📄 → 📄`&&n.push(r),t.contextLength&&n.push(`ctx ${zp(t.contextLength)} tok`);let i=e=>e===void 0?``:`${e*1e6>=10?Math.round(e*1e6):+(e*1e6).toFixed(1)}/M`;if(t.pricing){let e=i(t.pricing.prompt),r=i(t.pricing.completion);e&&r?n.push(`${e} in · ${r} out`):(e||r)&&n.push(i(t.pricing.prompt??t.pricing.completion))}return n.join(` · `)},tt=null;b(()=>{let t=n();if(!t)return;let r=e().find(e=>e.id===t),i=r?.provider||O().defaultProvider||Be()[0]||``;if(r){if(t!==tt)tt=t,S(()=>je())!==i&&(Me(i),Ve(i)),S(()=>Ne())&&Pe(``);else{let e=S(()=>je());!S(()=>Ne())&&e!==i&&(Me(i),Ve(i))}}});let[nt,it]=v(!1),[dt,ft]=v(!0),[pt,mt]=v(0),[_t,vt]=v(null),yt=()=>Ct().startsWith(`[compact] `),bt=()=>yt()?Ct().slice(10):Ct();b(()=>{_t()||B(e=>e?.text.startsWith(`[compact] `)?null:e)}),b(()=>{_t(),dt()&&requestAnimationFrame(()=>requestAnimationFrame(()=>{dt()&&tr(!0)}))});let[xt,St]=v(new Map),z=()=>{let e=n();return e?xt().get(e)??null:null},B=e=>{let t=n();t&&St(n=>{let r=new Map(n),i=typeof e==`function`?e(n.get(t)??null):e;return i?r.set(t,{...i,at:Date.now()}):r.delete(t),r})},[Ct,wt]=v(``),[Tt,Et]=v(0),Dt=()=>Tt(),[Ot,kt]=v(``),At;b(()=>{if(!z()){clearTimeout(At),At=void 0,wt(``),kt(``);return}At||=setTimeout(()=>{At=void 0,wt(z()?.text??``),kt(z()?.reasoning??``)},(z()?.text.length??0)>2e4?250:(z()?.text.length??0)>6e3?120:60)}),w(()=>clearTimeout(At)),b(()=>{let t=e();St(e=>Je(e,e=>t.find(t=>t.id===e)?.status)),Et(0)}),b(()=>{let e=Ct(),t=z()?.reasoning??``;!e&&!t||dt()&&requestAnimationFrame(()=>{dt()&&tr(!0)})}),b(()=>{let e=V()?.pendingPrompts??0,t=V()?.pendingPromptIds,n=Lt(),r=Rt(n),i=gt(r,e,t);i!==r&&zt(n,i)}),b(()=>{let e=V()?.pendingPromptQueue;if(!e?.length)return;let t=Lt(),n=new Set(Rt(t).map(e=>e.promptId).filter(Boolean)),r=e.filter(e=>e.id&&!n.has(e.id));r.length&&zt(t,[...r.map(e=>({id:`p${e.id}`,text:e.text,at:Number(e.at)||Date.now(),promptId:e.id,images:e.images?.map(e=>e.url),...e.source?{source:e.source}:{}})),...Rt(t)])}),b(()=>{if(!n())return;let e=()=>{document.visibilityState===`visible`&&requestAnimationFrame(()=>{er()&&(ft(!0),mt(0),tr(!0))})};document.addEventListener(`visibilitychange`,e),w(()=>document.removeEventListener(`visibilitychange`,e))});let V=x(()=>e().find(e=>e.id===n())),jt=()=>{let e=V();return e?e.live??(e.status===`running`||e.status===`waiting`):!1},[Mt,Nt]=v(null);x(()=>{let e=new Set;for(let t of f())t.type===`tool_result`&&t.data?.name===`ask_user`&&e.add(String(t.data.callId));return e});let Pt=new Map,[Ft,It]=v([]),Lt=()=>i()||n()||`?`,Rt=e=>Pt.get(e)??[],zt=(e,t)=>{let n=new Set,r=[];for(let e=t.length-1;e>=0;e--){let i=t[e],a=i.promptId;if(!a){r.push(i);continue}n.has(a)||(n.add(a),r.push(i))}r.reverse(),r.length===0?Pt.delete(e):Pt.set(e,r),Lt()===e&&It(r)},[Bt,Vt]=v([]),[Ht,Ut]=v(localStorage.getItem(`teapot.hideGhosts`)===`1`),[Wt,Gt]=v(!1),H=()=>Bt().filter(e=>!e.read).length,Kt=e=>{Vt(t=>{let n=!1,r=t.map(t=>t.read||t.agentId!==e?t:(n=!0,{...t,read:!0}));return n?r:t})},qt=t=>{let n=Bt().filter(e=>!e.read&&e.agentId===t).length;for(let r of e())r.parent===t&&(n+=qt(r.id));return n},Jt=0,Yt=e=>{Vt(t=>[{...e,id:`n${++Jt}`,at:Date.now(),read:!1},...t].slice(0,50))},Xt=(t,n)=>{let r=e().find(e=>e.id===t)?.id??t,i=typeof n.id==`string`?n.id:void 0;n.type===`message`&&n.data?.final===!0?Yt({agentId:t,kind:`finish`,title:`${r} finished`,body:String(n.data.content??``).slice(0,300),eventId:i}):n.type===`question`?Yt({agentId:t,kind:`question`,title:`${r} asks a question`,body:String(n.data.question??``).slice(0,300),eventId:i}):n.type===`error`?Yt({agentId:t,kind:`error`,title:`${r} hit an error`,body:String(n.data.message??``).slice(0,300),eventId:i}):n.type===`progress`&&Yt({agentId:t,kind:`progress`,title:`${r}: ${String(n.data.doing??`progress`)}`.slice(0,120),body:[n.data.recent&&`recent: ${n.data.recent}`,n.data.next&&`next: ${n.data.next}`].filter(Boolean).join(` · `).slice(0,300),eventId:i})},Zt=e=>{let t=document.querySelector(`[data-eid="${e}"]`);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.classList.add(`flash-target`),setTimeout(()=>t.classList.remove(`flash-target`),1600))},Qt=x(()=>{let e=new Map,t=new Set,n=new Map,r=new Map;for(let i of f())if(wp.has(i.type)){if(i.type===`tool_call`){let e=n.get(i.data.callId)??[];e.push(i),n.set(i.data.callId,e)}else if(i.type===`tool_result`){let a=n.get(i.data.callId)?.shift();a?(e.set(a.id,i),t.add(i.id)):r.set(i.id,i)}}return{resFor:e,consumed:t,orphanCalls:r}}),[$t,en]=v(new Set),tn=e=>{e&&en(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},nn=()=>en(new Set),rn=x(()=>ht(f(),$t())),an=x(()=>{let{consumed:e}=Qt(),t=``;for(let e of f()){if(e._prevKind=t,!wp.has(e.type))continue;let n=e.data??{};(e.type!==`message`||String(n.content??``).trim()!==``||String(n.reasoning??``).trim()===``)&&(t=e.type===`tool_result`?`tool`:e.type)}let n=f().filter(t=>{if(t.type===`sub`)return!0;if(!wp.has(t.type))return!1;let n=t.type===`tool_call`||t.type===`tool_result`?String(t.data?.name??``):``;if(n===`report_progress`||n===`ask_user`||n===`record_decision`)return!1;if(t.type===`tool_result`)return!e.has(t.id);if(t.type===`message`){let e=String(t.data?.content??``);return e.trim()===``&&String(t.data?.reasoning??``).trim()!==``&&t._prevKind===`tool`||t.data?.progressEcho||!t.data?.final&&e.trim()===`(tool call)`?!1:e.trim()!==``||String(t.data?.reasoning??``).trim()!==``||!!t.data?.final}return!0}),r=[];for(let e of n)if(e.type===`sub`){let t=e.data,n=String(t?.type??`message`);if(n===`state`)continue;r.push({...e,type:n,data:{...t?.data,actor:t?.sub}})}else r.push(e);let i=e=>String(e??``).replace(/\s+/g,` `).trim().toLowerCase(),a=[];for(let e=0;e<r.length;e++){let t=r[e];if(t.type===`message`&&t.data?.role===`assistant`){let n=r[e-1],a=i(t.data.content);if(n?.type===`progress`){let e=n.data;if((a.includes(i(e.doing))||e.recent&&a.includes(i(e.recent)))&&a.length<=Math.max(200,i(e.doing).length*3))continue}if(n?.type===`decision`){let e=n.data,t=i(e.decision);if(t&&a.includes(t)&&a.length<=Math.max(300,t.length*3))continue}}a.push(t)}let o=new Set,s=new Set,c=new Map,l=new Map;for(let e of a){let t=e.data?.promptId;t&&(e.type===`prompt`&&e.data?.source===`user`&&s.add(String(t)),e.type===`system_note`&&e.data?.event===`prompt-delivered`&&(o.add(String(t)),c.set(String(t),e.seq)),e.type===`system_note`&&e.data?.event===`prompt-cancelled`&&l.set(String(t),e.seq))}let u=new Set;for(let e of Ft())e.promptId&&!o.has(e.promptId)&&u.add(e.promptId);let d=a.filter(e=>{if(e.type!==`prompt`||e.data?.source!==`user`)return!0;let t=String(e.data?.promptId??``);return t===``||!u.has(t)});for(let e=0;e<d.length;e++){let t=d[e];if(t.type!==`prompt`||t.data?.source!==`user`)continue;let n=String(t.data?.promptId??``),r=l.get(n);r!==void 0&&t.data&&(t.data.cancelled=!0);let i=c.get(n)??0,a=Math.max(i,r??0)||void 0;d[e]=a===void 0?{...t,seq:Qe(d)}:Ze(t,a)}return Xe(d,Ft().filter(e=>!e.promptId||!(o.has(e.promptId)&&s.has(e.promptId))).map(e=>sn(e)))}),on=new Map;function sn(e){let t=`${e.id}:${e.sent?`s`:`p`}`,n=on.get(t);if(n)return n;on.size>64&&on.clear();let r={id:e.id,seq:2**53-1,ts:new Date(e.at).toISOString(),session:V()?.session??``,branch:V()?.branch??`br0`,parent:null,type:`prompt`,data:{source:e.source??`user`,text:e.text,pending:!e.sent,...e.images?.length?{images:e.images}:{},...e.promptId?{promptId:e.promptId}:{}}};return on.set(t,r),r}let cn=()=>$(`/api/config`).then(re).catch(()=>{}),[ln,un]=v(!1);C(()=>{let e=()=>un(!0);window.addEventListener(`teapot:unauthorized`,e),w(()=>window.removeEventListener(`teapot:unauthorized`,e))});let[dn,fn]=v(``),[pn,mn]=v(!1),[hn,gn]=v(!1),_n=``;b(()=>{let t=n(),r=e().find(e=>e.id===t)?.todo??``;t&&t!==_n?(_n=t,gn(!1),fn(r)):t&&!hn()&&fn(r)});let vn=async()=>{let e=document.getElementById(`todo-notify`)?.checked??!0;if(n())try{await $(`/api/agents/${n()}/todo`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:dn(),notify:e})}),gn(!1),mn(!0),Q(`tasks saved${e&&dn().trim()?` & notification queued`:``}`),xn()}catch(e){Q(`save failed: ${e.message}`)}},yn=x(()=>{let e=0,t=0;for(let n of dn().split(`
22
+ `)){let r=n.match(/^\s*[-*+] \[([ xX])\]/);r&&(e++,r[1].toLowerCase()===`x`&&t++)}return{total:e,done:t}});function bn(e,t){let n=new Map(e.map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return t&&JSON.stringify(t)===JSON.stringify(e)?t:e})}let xn=()=>$(`/api/agents`).then(e=>{let n=!1;t(t=>(t.length!==(e.agents??[]).length&&(n=!0),(e.agents??[]).some(e=>!t.some(t=>t.id===e.id))&&(n=!0),bn(t,e.agents??[]))),n&&d()}).catch(()=>{}),Sn=()=>$(`/api/metrics`).then(te).catch(()=>{}),[Cn,wn]=v([]),Tn=()=>$(`/api/tasks`).then(e=>wn(e.tasks)).catch(()=>{}),En=e=>Cn().filter(t=>t.agent===e),[Dn,On]=v((()=>{try{let e=JSON.parse(localStorage.getItem(`teapot.collapsed`)??`[]`);return new Set(e.filter(e=>typeof e==`string`&&!e.startsWith(`chat:`)))}catch{return new Set}})()),kn=e=>{let t=new Set(Dn());t.has(e)?t.delete(e):t.add(e),On(t),localStorage.setItem(`teapot.collapsed`,JSON.stringify([...t]))},An=t=>ct(e(),t),[jn,Mn]=v((()=>{try{let e=JSON.parse(localStorage.getItem(`teapot.wsCollapsed`)??`[]`),t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];if(Number(localStorage.getItem(`teapot.wsCollapsed.v`)??`0`)<2){let e=t.filter(e=>!e.startsWith(`chat:`));return t.length-e.length>0&&localStorage.setItem(`teapot.wsCollapsed`,JSON.stringify(e)),localStorage.setItem(`teapot.wsCollapsed.v`,`2`),new Set(e)}return new Set(t)}catch{return new Set}})()),Nn=x(()=>{let e=new Set;for(let t of jn())t.startsWith(`chat:`)&&e.add(t);return e}),U=x(()=>rt(e(),Dn(),Ht(),Nn())),Pn=(t,r,i,a)=>{let o=new Set(jn());if(i)o.delete(t),a&&o.delete(a);else{o.add(t),a&&o.delete(a);let i=n();i&&(t===`chat:${i}`||An(e().find(e=>e.id===i))===t)&&Q(`hid ${r} — click the header to show it`)}Mn(o);try{localStorage.setItem(`teapot.wsCollapsed`,JSON.stringify([...o]))}catch{}},Fn=e=>e.replace(/\/+$/,``).split(/[/\\]/).pop()||e,W=e=>{let t=In().get(e)??0;return`${t} chat${t===1?``:`s`}`},In=x(()=>lt(e())),Ln=x(()=>ut(e(),U(),jn())),Rn=2e3,[G,zn]=v(null),Bn=new Map;function Vn(e){return`${i()||(n()??`?`)}:${e.id}`}function Hn(e){let t=Array.from({length:e.length});for(let n=0;n<e.length;n++){let r=e[n],i=Vn(r),a=Bn.get(i);if(t[n]=a??r,!a&&(Bn.set(i,r),Bn.size>6e3)){let e=Bn.keys().next().value;e!==void 0&&Bn.delete(e)}}return t}let[Un,Wn]=v(!1),[Gn,Kn]=v(!1),qn=0,Jn=-1;function Yn(e){p(t=>{let n=new Map;for(let e of t)n.set(e.id,e);for(let t of Hn(e))n.has(t.id)||n.set(t.id,t);return[...n.values()].sort((e,t)=>e.seq-t.seq)})}async function Xn(){let e=n();if(!e||Gn()||Un())return;if(f().length>=m()){Kn(!0);return}let t=()=>{let e=$n();return e&&e.clientHeight>0?e:null},r=0;for(;r++<20&&!Gn()&&n()===e;){let r=t();if(r&&r.scrollHeight>r.clientHeight+40)return;if(f().length>=m()){Kn(!0);return}let i=f().length;if(await Zn(),f().length===i)return;dt()&&n()===e&&tr(!0)}}async function Zn(){let e=n(),t=f()[0];if(!(!e||!t||Un()||Gn())){Wn(!0);try{let r=$n(),a=r?.scrollHeight??0,o=r?.scrollTop??0,s=G(),c=i(),l=c&&c!==e?`&session=${encodeURIComponent(c)}`:``,u=(await $(`/api/agents/${e}/events?limit=${Rn}&before=${encodeURIComponent(t.id)}${l}${s?`&branch=${encodeURIComponent(s)}&lineage=true`:``}`)).events??[];if(u.length===0){Kn(!0);return}if(n()!==e||f()[0]?.id!==t.id)return;Yn(u),requestAnimationFrame(()=>{if(n()===e){let e=$n();e&&(e.scrollTop=o+(e.scrollHeight-a))}})}catch{}finally{Wn(!1)}}}async function Qn(e,t){let r=qn,a=t??i()??``;try{let t=G(),i=r!==Jn||!g().length,o=a&&a!==e?`&session=${encodeURIComponent(a)}`:``,[s,c,l]=await Promise.all([$(`/api/agents/${e}/events?limit=${Rn}${o}${t?`&branch=${encodeURIComponent(t)}&lineage=true`:``}`),i?$(`/api/agents/${e}/branches`):Promise.resolve({branches:g()}),$(`/api/agents/${e}/skills`).catch(()=>({skills:[]}))]);if(i&&(Jn=r),r!==qn||n()!==e)return;p(e=>{let t=new Map;for(let n of e)t.set(n.id,n);for(let e of Hn(s.events))t.set(e.id,e);return[...t.values()].sort((e,t)=>e.seq-t.seq)}),h(s.total??s.events.length),_(c.branches),ni(l.skills??[])}catch{}}function $n(){return document.querySelector(`.feed`)}function K(){let e=document.querySelector(`.composer textarea`);return 24+Math.min(Math.max((e?.scrollHeight??0)-(e?.clientHeight??0),0),160)}function er(){let e=$n();return!e||e.scrollHeight-e.scrollTop-e.clientHeight<K()}function tr(e=!1){let t=$n();t&&(e||dt())&&(t.scrollTop=t.scrollHeight,mt(0))}let nr=new Map;function rr(t,n){if(n&&c().get(t)?.includes(n))return n;let r=e().find(e=>e.id===t)?.session;return r&&c().get(t)?.includes(r)?r:c().get(t)?.[0]??null}async function ir(e,t=!0,o){let s=n(),l=i(),u=f(),g=m();qn++,c().size||d();let _=rr(e,o)??e;if(s!==e||_!==l){if(l&&u.length&&(nr.set(l,{events:u,total:g,at:Date.now()}),nr.size>6)){let e=[...nr.entries()].sort((e,t)=>e[1].at-t[1].at)[0];e&&nr.delete(e[0])}p([]),Bn.clear(),nn(),vt(null),mt(0),ft(!0),li=!1,ui=void 0}r(e),a(_),D(T.get(e)??``),zn(null),Kn(!1),Wn(!1),zt(l||s||`?`,Ft()),It(Rt(_||e)),localStorage.setItem(`teapot.session`,e),mr(_,t);let v=nr.get(_);v?.events.length&&(Hn(v.events),p(Hn(v.events)),h(v.total),requestAnimationFrame(()=>{n()===e&&tr(!0)})),$(`/api/agents/${e}/load`,{method:`POST`}).then(xn).catch(()=>{}),await Qn(e,_),n()===e&&(St(t=>{let n=t.get(e)??null,r=Ye(n,f(),V()?.status);if(r===n)return t;let i=new Map(t);return r?i.set(e,r):i.delete(e),i}),vt(V()?.ctx?.compacting?{phase:String(V().ctx.compacting)}:null),requestAnimationFrame(()=>{n()===e&&tr(!0)}),Xn())}let[ar,or]=v(!1),sr=null,cr=null;w(()=>sr?.close());let lr=!1,ur=null;document.addEventListener(`visibilitychange`,()=>ur?.()),w(()=>{ur=null});let dr=!0;function fr(){dr=!0;let r=location.protocol===`https:`?`wss://`:`ws://`,i=new WebSocket(`${r}${location.host}/api/ws${Op()}`);sr=i,i.onopen=()=>{if(or(!0),dr){dr=!1;return}lr=!0,document.visibilityState===`visible`&&o()},i.onclose=()=>{or(!1),setTimeout(fr,1500)},i.onerror=()=>i.close();let a=new Set([`state`,`usage`,`session_start`]);i.onmessage=r=>{let s=JSON.parse(r.data);if(s.kind===`ping`){try{i.send(JSON.stringify({kind:`pong`}))}catch{}return}if(s.kind!==`pong`){if(s.kind===`hello`&&Array.isArray(s.agents)){t(e=>bn(e,s.agents));let n=e();St(e=>Je(e,e=>n.find(t=>t.id===e)?.status));return}if(s.kind===`event`&&We(s.event)){St(e=>Ue(e,s.agentId));return}if(s.kind===`llm-delta`){if(St(e=>He(e,s.agentId,s)),s.agentId===n()){let e=String(s.reasoning??``),t=String(s.text??``);e&&!t?Tt()||Et(Date.now()):t&&Et(0)}return}if(s.kind===`compaction-progress`){if(s.agentId!==n())return;s.phase===`done`?vt(null):vt({phase:s.phase,summarized:s.summarized});return}if(s.kind===`agent-update`&&s.snapshot){t(e=>{let t=e.findIndex(e=>e.id===s.snapshot.id),n=s.snapshot;return t===-1?[...e,n]:bn(e,e.map((e,n)=>n===t?s.snapshot:e))});return}if(s.kind===`event`){let e=s.event?.type,t=s.event?.data??{};if((e===`system_note`&&t.event===`prompt-delivered`&&s.agentId===n()||e===`system_note`&&t.event===`prompt-cancelled`&&s.agentId===n())&&zt(Lt(),Ft().filter(e=>e.promptId!==t.promptId)),a.has(e)&&!Tp.has(e)||(Xt(s.agentId,s.event),s.event?.agent!==n()))return}if(document.visibilityState===`hidden`){lr=!0;return}cr||=setTimeout(o,120)}},lr=!1;let o=async()=>{if(cr=null,await xn(),await Sn(),n()){let e=f().at(-1)?.id,t=m();if(await Qn(n()),f().at(-1)?.id!==e){let e=z();e&&e.text?Ke({text:e.text.trim(),reasoning:``,at:e.at},f(),V()?.status)&&B(null):e&&!e.text&&V()?.status!==`running`&&B(null),dt()?(tr(!0),Kt(n())):mt(pt()+Math.max(0,m()-t))}}};ur=()=>{document.visibilityState===`visible`&&lr&&(lr=!1,o())}}let pr=()=>decodeURIComponent(location.pathname.split(`/`)[2]??``);function mr(e,t=!0){let n=`/session/${encodeURIComponent(e)}`;t?history.pushState(null,``,n):history.replaceState(null,``,n)}window.addEventListener(`popstate`,()=>{let e=pr(),t=o().get(e);t&&(t!==n()||e!==i())&&ir(t,!1,e||null)}),b(()=>{let e=V(),t=e?`${jt()?`▶ `:e.status===`error`?`⚠ `:``}${e.id} · teapot`:`teapot`;document.title=H()>0?`(${H()}) ${t}`:t});let hr=()=>k()||ae()||me()||Mt()!==null||se()&&j();window.addEventListener(`keydown`,e=>{let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)){e.key===`Escape`&&t.blur();return}if(e.key===`Escape`){if(k()){ie(!1);return}if(ae()){oe(!1);return}if(me()){he(!1);return}if(Mt()){Nt(null);return}if(se()&&j()){pe();return}let e=V();if(e&&jt()){$(`/api/agents/${e.id}/stop`,{method:`POST`}).then(xn);return}return}if(!hr()){if(e.key===`/`)e.preventDefault(),document.querySelector(`.composer textarea`)?.focus();else if(e.key===`d`)fe();else if(e.key===`t`)vr();else if(e.key===`ArrowDown`||e.key===`ArrowUp`){let t=U().map(e=>e.a);if(t.length===0)return;e.preventDefault();let r=t.findIndex(e=>e.id===n()),i=e.key===`ArrowDown`?Math.min(r+1,t.length-1):Math.max(r-1,0);i!==r&&ir(t[i].id)}}});let[gr,_r]=v(localStorage.getItem(`teapot.term`)===`1`),vr=()=>{let e=!gr();_r(e),localStorage.setItem(`teapot.term`,e?`1`:`0`)},[yr,br]=v([]),[xr,Sr]=v(0),[Cr,wr]=v(-1),[Tr,Er]=v(!1),[Dr,Or]=v(0),[kr,Ar]=v(Number(localStorage.getItem(`teapot.termH`))||Math.max(220,Math.round(window.innerHeight*.35))),jr=new Map,Mr=0,Nr=[null,null],Pr=()=>yr()[Dr()===0?xr():Cr()]??null;function Fr(e){if(!yr()[e])return;let t=Dr(),n=t===0?xr():Cr(),r=t===0?Cr():xr(),i=e=>t===0?Sr(e):wr(e),a=e=>t===0?wr(e):Sr(e);if(r===e){a(n),i(e);return}n!==e&&i(e)}let Ir=()=>Lr();function Lr(e){let t=e??n();if(!t)return;let r=yr().filter(e=>e.agentId===t).length;if(r>=10){Q(`max 10 shells per agent (${t}) — that's already a lot`);return}let i={key:`${t}#${++Mr}`,agentId:t,title:r===0?t:`${t}·${r+1}`};br(e=>[...e,i]);let a=yr().length;Dr()===0?Sr(a):wr(a)}function Rr(e){let t=yr()[e];if(!t)return;let n=jr.get(t.key);if(n){n.ro?.disconnect();try{n.ws.close()}catch{}n.term.dispose(),jr.delete(t.key)}let r=yr().filter((t,n)=>n!==e);br(r);let i=t=>t===e?-1:t>e?t-1:t;Sr(e=>Math.min(i(e),r.length-1)),wr(e=>e===-1?-1:Math.min(i(e),r.length-1))}function zr(){for(let[,e]of jr){e.ro?.disconnect();try{e.ws.close()}catch{}e.term.dispose()}jr.clear()}function Br(e,t){let n=jr.get(e.key);if(n)n.el.parentElement!==t&&(t.appendChild(n.el),setTimeout(()=>{try{n.fit()}catch{}},30));else{let r=document.createElement(`div`);r.className=`termsession`,t.appendChild(r);let i=new cl({cursorBlink:!0,fontSize:12.5,fontFamily:`ui-monospace, Menlo, Consolas, monospace`,theme:Sp()}),a=new dl;i.loadAddon(a),i.open(r);let o=location.protocol===`https:`?`wss://`:`ws://`,s=new WebSocket(`${o}${location.host}/api/agents/${e.agentId}/term${Op()}`);s.onmessage=e=>{let t=JSON.parse(e.data);t.kind===`data`?i.write(t.data):t.kind===`exit`&&i.write(`\r\n\x1b[2m[terminal exited ${t.code??``}]\x1b[0m\r\n`)},i.onData(e=>{s.readyState===WebSocket.OPEN&&s.send(JSON.stringify({kind:`input`,data:e}))});let c={cols:0,rows:0},l=[],u=()=>{try{a.fit()}catch{}(i.cols!==c.cols||i.rows!==c.rows)&&s.readyState===WebSocket.OPEN&&(c={cols:i.cols,rows:i.rows},s.send(JSON.stringify({kind:`resize`,cols:i.cols,rows:i.rows})))},d=new ResizeObserver(()=>{l[0]&&clearTimeout(l[0]),l[0]=setTimeout(u,250)});d.observe(r),setTimeout(u,60),n={el:r,term:i,fit:a,ws:s,ro:d},jr.set(e.key,n)}return n}function Vr(e){let t=Nr[e];if(!t)return;let n=yr()[e===0?xr():Cr()];if(!n){[...jr.values()].some(e=>e.el.parentElement===t)&&t.replaceChildren();return}let r=Br(n,t);for(let[e,r]of jr)e!==n.key&&r.el.parentElement===t&&r.el.remove();requestAnimationFrame(()=>{r.el.parentElement!==t&&t.appendChild(r.el);try{r.fit()}catch{}if(Dr()===(e===0?0:1))try{r.term.focus()}catch{}})}b(()=>{yr(),Tr(),xr(),Cr(),kr(),requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})});let Hr=null;b(()=>{if(!gr())return;let e=n();if(e&&e!==Hr){if(Hr=e,!yr().some(t=>t.agentId===e))Lr(e);else{let t=-1;yr().forEach((n,r)=>{n.agentId===e&&(t=r)}),t>=0&&Fr(t)}}});let Ur=e=>{e.preventDefault();let t=e.clientY,n=kr(),r=e=>{let r=Math.min(Math.max(n-(e.clientY-t),140),Math.round(window.innerHeight*.85));Ar(r)},i=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),localStorage.setItem(`teapot.termH`,String(kr())),requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})};window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i)},Wr=()=>{let e=!Tr();if(Er(e),e){let e=yr().map((e,t)=>t).filter(e=>e!==xr());(Cr()<0||Cr()===xr()||Cr()>=yr().length)&&wr(e[0]??-1)}requestAnimationFrame(()=>{Vr(0),Tr()&&Vr(1)})};w(zr);let Gr=e=>t=>{Nr[e]=t,t&&requestAnimationFrame(()=>{Vr(e),Tr()&&Vr(1),setTimeout(()=>Vr(e),200)})};C(()=>{cn(),xn().then(async()=>{await d();let t=pr(),n=t?o().get(t):void 0,r=(n?e().find(e=>e.id===n):void 0)??e().find(e=>e.id===t&&!o().has(t))??e().find(e=>e.id===localStorage.getItem(`teapot.session`))??e()[0];r&&ir(r.id,!1,t||null)}),Sn(),Tn(),Yr(),fr();let t=setInterval(()=>{Sn(),Tn()},3e4);w(()=>clearInterval(t))});let Kr=[{cmd:`/start`,desc:`start working toward the goal`},{cmd:`/stop`,desc:`interrupt the running agent`},{cmd:`/fork`,desc:`branch the conversation here`},{cmd:`/goal`,desc:`/goal <text> — set goal & notify the agent`},{cmd:`/compact`,desc:`force a context compaction now`},{cmd:`/skill`,desc:`/skill <name> — force-load a skill and follow it`}],[qr,Jr]=v([]),Yr=()=>$(`/api/personas`).then(e=>Jr(e.personas)).catch(()=>{}),[Xr,Zr]=v(!1),Qr=()=>{let e=ne().match(/^@([A-Za-z0-9._-]*)$/);return e?e[1].toLowerCase():null},$r=()=>{let t=Qr();return t===null?[]:[...qr().map(e=>({key:e.key,label:`${e.label} — spawns a sub-agent`,kind:`persona`})),...e().filter(e=>e.id!==n()).map(e=>({key:e.id,label:`${e.status} — send directly`,kind:`agent`}))].filter(e=>e.key.toLowerCase().startsWith(t))},ei=new Set([`start`,`stop`,`fork`,`compact`]),[ti,ni]=v([]),[ri,ii]=v(-1),ai=()=>{let e=ne();if(!e.startsWith(`/`)||e.includes(`
23
+ `))return[];let t=e.match(/^\/([a-z]*)(?:\s+(.*))?$/i);if(!t)return[];let n=t[1].toLowerCase(),r=(t[2]??``).trim();if(!r&&n!==`skill`){let e=Kr.filter(e=>e.cmd.slice(1).startsWith(n));return e.find(e=>e.cmd.slice(1)===n)&&ei.has(n)?[]:e.map(e=>({insert:e.cmd+` `,title:e.desc}))}if(n===`skill`){let e=ti().filter(e=>e.name.toLowerCase().startsWith(r.toLowerCase()));return e.length===1&&e[0].name.toLowerCase()===r.toLowerCase()?[]:e.map(e=>({insert:`/skill ${e.name} `,title:e.description||`(bundled skill)`}))}return[]},oi,si=()=>{if(!oi)return;ci=!0;let e=dt();oi.style.height=`auto`,oi.style.height=nt()?``:`${Math.min(oi.scrollHeight,360)}px`,requestAnimationFrame(()=>{let t=$n();e&&t&&(t.scrollTop=t.scrollHeight),ci=!1})},ci=!1,li=!1,ui;b(()=>{ne(),si()});let[di,fi]=v([]),pi=e=>{let t=Array.from(e).filter(e=>e.type.startsWith(`image/`));for(let e of t){if(e.size>8e6){Q(`"${e.name}" is over 8 MB — skipped`);continue}let t=new FileReader;t.onload=()=>{fi(n=>[...n,{url:String(t.result),name:e.name}].slice(0,4))},t.readAsDataURL(e)}},mi=async(e,t)=>{let r=t??n();if(!r)return;let i=di();try{let t=await $(`/api/agents/${r}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e,start:!0,...i.length?{images:i}:{}})});zt(Lt(),[...Ft(),{id:`@p${Date.now()}${Math.random().toString(36).slice(2,6)}`,text:e,at:Date.now(),promptId:t.promptId,...i.length?{images:i.map(e=>e.url)}:{}}]),fi([]),requestAnimationFrame(()=>requestAnimationFrame(()=>tr(!0)))}catch(t){D(e),console.error(`send failed:`,t)}},hi=async t=>{t.preventDefault();let r=n(),i=ne().trim();if(!(!r||!i)){if(i.startsWith(`@`)){let t=i.indexOf(` `),r=(t===-1?i.slice(1):i.slice(1,t)).toLowerCase(),a=t===-1?``:i.slice(t+1).trim(),o=qr().some(e=>e.key.toLowerCase()===r),s=e().some(e=>e.id.toLowerCase()===r);try{if(o){if(!a){Q(`usage: @${r} <task>`);return}Q(`🧩 spawned ${(await $(`/api/agents/${n()}/spawn`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({persona:r,task:a,context:Xr()?`fork`:`none`})})).id}${Xr()?` (forked context)`:``}`),xn(),D(``)}else if(s){if(!a){Q(`usage: @${r} <message>`);return}await $(`/api/agents/${encodeURIComponent(r)}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:a,start:!0})}),Q(`→ delivered to @${r}`),D(``)}else{Q(`unknown @${r} — personas: ${qr().map(e=>e.key).join(`, `)||`(none)`}`);return}}catch(e){Q(`@${r} failed: ${e.message}`)}return}if(i.startsWith(`/`)){let e=i.indexOf(` `),t=(e===-1?i.slice(1):i.slice(1,e)).toLowerCase(),n=e===-1?``:i.slice(e+1).trim();if(t===`goal`&&!n){D(`/goal `);return}if(t===`skill`&&!n){D(`/skill `);return}D(``);try{await gi(t,n)}catch(e){throw D(ne()?`${i}\n${ne()}`:i),e}return}D(``),await mi(i)}},gi=async(e,t)=>{let r=n();if(!r)return;let i=(e,t)=>$(`/api/agents/${r}${e}`,{method:`POST`,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}).then(xn);try{if(e===`start`)await i(`/start`);else if(e===`stop`)await i(`/stop`);else if(e===`fork`)await i(`/fork`,{}),await ir(r);else if(e===`compact`)Q((await i(`/compact`))?.ran?`context compacted`:`nothing to compact yet`);else if(e===`goal`){if(!t){Q(`usage: /goal <text>`);return}await i(`/goal`,{text:t,notify:!0}),Q(`goal saved & notification queued`)}else if(e===`skill`){if(!t){Q(`usage: /skill <name>`);return}await mi(`[harness] Force-load and follow the skill "${t}" now: call load_skill("${t}") and execute its playbook for the current task.`),Q(`skill "${t}" dispatched`)}else Q(`unknown command "${e}" — /start /stop /fork /goal /skill /compact`)}catch(t){Q(`/${e} failed: ${t.message}`)}},_i,vi=0;b(()=>{e(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!_i)return;let e=Math.min(vi,_i.scrollHeight);Math.abs(_i.scrollTop-e)>1&&(_i.scrollTop=e)})})});let yi=e=>()=>n()&&$(`/api/agents/${n()}${e}`,{method:`POST`}).then(xn),[bi,xi]=v(``),[Si,Ci]=v(``),[q,wi]=v(!1),[Ti,Ei]=v(!0),Di=``;b(()=>{let e=n();e&&(V()?.goal,e!==Di&&(Di=e,wi(!1),xi(``),Ci(``)))});let Oi=async e=>{if(e.preventDefault(),!(!n()||!bi().trim()))try{await $(`/api/agents/${n()}/goal`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:bi(),notify:Ti(),...Si().trim()?{verify:Si()}:{}})}),xi(``),Ci(``),wi(!1),xn()}catch(e){Q(`goal save failed: ${e.message}`)}};return[M(N,{get when(){return O()?.needsSetup},fallback:null,get children(){return M(im,{onDone:()=>location.reload()})}}),M(N,{get when(){return ln()},get children(){var e=gl();return e.firstChild.firstChild.nextSibling.addEventListener(`submit`,e=>{e.preventDefault();let t=document.getElementById(`pw-input`);localStorage.setItem(`teapot.token`,t.value),location.reload()}),e}}),M(N,{get when(){return!O()?.needsSetup},get children(){var i=Wl(),a=i.firstChild,o=a.firstChild,s=o.nextSibling,c=s.firstChild,l=c.firstChild;l.firstChild;var u=c.nextSibling,m=u.firstChild.firstChild.nextSibling;m.firstChild;var _=m.nextSibling,v=u.nextSibling,S=a.nextSibling,C=S.nextSibling,w=C.firstChild;w.firstChild,R(o,M(ye,{get each(){return Ln()},children:t=>[M(N,{get when(){return P(()=>t.wsHeader!==void 0)()&&t.wsHeader!==``},get children(){var e=Xl(),n=e.firstChild;return e.$$click=()=>Pn(`ws:${t.wsHeader}`,Fn(t.wsHeader),t.wsCollapsedGroup===!0,t.collapsedVia),R(n,()=>t.wsCollapsedGroup?`▸`:`▾`),R(e,()=>Fn(t.wsHeader),null),R(e,M(N,{get when(){return(In().get(t.wsHeader)??0)>1||t.wsCollapsedGroup},get children(){var e=Yl();return R(e,()=>In().get(t.wsHeader)??0),e}}),null),y(()=>I(e,`title`,t.wsCollapsedGroup?`${t.wsHeader} — collapsed (${W(t.wsHeader)} hidden). Click to show.`:(In().get(t.wsHeader)??0)>1?`${t.wsHeader} — ${W(t.wsHeader)} in this directory`:t.wsHeader||``)),e}}),M(N,{get when(){return P(()=>!t.headerOnly)()&&!t.wsCollapsedGroup},get children(){var r=tu(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>ir(t.a.id),R(r,M(N,{get when(){return at({isSub:!!t.a.parent,collapsed:t.chatCollapsedGroup===!0,hasChildren:e().some(e=>e.parent===t.a.id)})},get fallback(){return nu()},get children(){return(()=>{let e=!t.a.parent,n=e&&Nn().has(`chat:${t.a.id}`)||Dn().has(t.a.id);return(()=>{var r=ru();return r.$$click=r=>{if(r.stopPropagation(),e){if(Dn().has(t.a.id)){let e=new Set(Dn());e.delete(t.a.id),On(e),localStorage.setItem(`teapot.collapsed`,JSON.stringify([...e]))}Pn(`chat:${t.a.id}`,t.a.id,n)}else kn(t.a.id)},R(r,n?`▸`:`▾`),y(()=>I(r,`title`,e?n?`show ${t.a.id}`:`hide ${t.a.id} and its sub-agents`:n?`expand sub-agents`:`collapse sub-agents`)),r})()})()}}),i),R(a,()=>t.a.id),R(r,(()=>{var e=P(()=>!!t.a.workspaceMissing);return()=>e()?iu():null})(),null),R(r,M(N,{get when(){return qt(t.a.id)>0},get children(){var e=Zl();return e.firstChild,R(e,()=>qt(t.a.id),null),y(()=>I(e,`title`,`${qt(t.a.id)} unread notification${qt(t.a.id)>1?`s`:``} (including sub-agents)`)),e}}),null),R(r,M(N,{get when(){return Dn().has(t.a.id)||t.chatCollapsedGroup===!0&&Nn().has(`chat:${t.a.id}`)},get children(){return(()=>{let n=st(e(),t.a.id),r=n.filter(e=>e.live??(e.status===`running`||e.status===`waiting`)).length;return n.length>0?(()=>{var e=au();return e.firstChild,L(e,`subcount`+(r>0?` live`:``)),R(e,()=>n.length,null),R(e,r>0?` · ▶${r}`:``,null),y(()=>I(e,`title`,`${n.length} sub-agent${n.length>1?`s`:``} (${r} active)`)),e})():null})()}}),null),R(r,M(N,{get when(){return t.a.parent},get children(){return Ql()}}),null),R(r,M(N,{get when(){return En(t.a.id).length>0},get children(){var e=$l();return y(()=>I(e,`title`,En(t.a.id).map(e=>`${e.id}: ${e.schedule}`).join(`
24
+ `))),e}}),null),R(r,M(N,{get when(){return t.a.goal.status===`done`},get children(){return eu()}}),null),y(e=>{var o=`agent-item`+(t.a.id===n()?` sel`:``)+(t.depth>0?` sub-row`:``)+(t.chatCollapsedGroup?` collapsed`:``),s=t.depth>0?`padding-left:${10+t.depth*14}px`:``,c=t.a.parent?(()=>{let e=ot(t.a.id,qr().map(e=>e.key));return e?`sub-agent of @${t.a.parent} — "${e}"`:`sub-agent of @${t.a.parent}`})():void 0,l=`dot ${t.a.status}`,u=t.a.workspaceMissing?` ghost`:``,d=t.a.workspaceMissing?`workspace not found on disk (${t.a.workspace}) — it will be created when this session runs`:void 0;return o!==e.e&&L(r,e.e=o),e.t=Ee(r,s,e.t),c!==e.a&&I(r,`title`,e.a=c),l!==e.o&&L(i,e.o=l),u!==e.i&&L(a,e.i=u),d!==e.n&&I(a,`title`,e.n=d),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r}})]})),R(s,M(N,{get when(){return me()},get children(){var e=vl(),t=e.firstChild.firstChild;return t.addEventListener(`change`,e=>{let t=e.currentTarget.checked;be(t),localStorage.setItem(`teapot.theme.auto`,t?`1`:`0`)}),R(e,M(N,{get when(){return!ve()},get fallback(){return[(()=>{var e=ou(),t=e.firstChild.nextSibling;return t.addEventListener(`change`,e=>{Se(e.currentTarget.value),localStorage.setItem(`teapot.theme.light`,e.currentTarget.value)}),R(t,M(ye,{get each(){return xp.filter(e=>e.mode===`light`)},children:e=>(()=>{var t=cu();return R(t,()=>e.label),y(()=>t.value=e.key),t})()})),y(()=>t.value=xe()),e})(),(()=>{var e=su(),t=e.firstChild.nextSibling;return t.addEventListener(`change`,e=>{F(e.currentTarget.value),localStorage.setItem(`teapot.theme.dark`,e.currentTarget.value)}),R(t,M(ye,{get each(){return xp.filter(e=>e.mode===`dark`)},children:e=>(()=>{var t=cu();return R(t,()=>e.label),y(()=>t.value=e.key),t})()})),y(()=>t.value=Ce()),e})()]},get children(){var e=_l();return R(e,M(ye,{each:xp,children:e=>(()=>{var t=lu(),n=t.firstChild;return t.$$click=()=>{_e(e.key),localStorage.setItem(`teapot.theme`,e.key)},R(n,()=>e.sw.map(e=>(()=>{var t=uu();return De(t,`background`,e),t})())),R(t,()=>e.label,null),y(n=>{var r=`themebtn`+(ge()===e.key?` on`:``),i=`${e.label} (${e.mode})`;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()})),e}}),null),y(()=>t.checked=ve()),e}}),c),l.$$click=e=>{e.stopPropagation(),Gt(!Wt()),Wt()||Vt(e=>e.map(e=>({...e,read:!0})))},R(l,M(N,{get when(){return H()>0},get children(){var e=yl();return R(e,H),e}}),null),R(c,M(Hp,{icon:`👻`,get active(){return Ht()},get title(){return Ht()?`show ghost sessions again (👻 workspace missing on disk)`:`hide ghost sessions (👻 — their workspace directory no longer exists)`},onClick:t=>{t.stopPropagation();let r=!Ht();if(Ut(r),localStorage.setItem(`teapot.hideGhosts`,r?`1`:`0`),r&&n()&&V()?.workspaceMissing){let t=e().find(e=>!e.workspaceMissing);t&&ir(t.id)}}}),null),R(c,M(Hp,{icon:`+`,title:`new agent`,onClick:()=>{cn(),ie(!0)}}),null),R(c,M(Hp,{icon:`🎨`,title:`themes`,onClick:()=>he(!me())}),null),R(c,M(Hp,{icon:`⚙`,title:`settings`,onClick:()=>{cn(),oe(!0)}}),null),R(m,`0.27.2`,null),R(v,M(N,{get when(){return ee()},get children(){return[`master rss `,P(()=>ee().rssMb),`MB · heap `,P(()=>ee().heapUsedMb),`MB`,bl(),`load1 `,P(()=>ee().loadavg1),` · up `,P(()=>Math.floor(ee().uptimeSec/60)),`m`]}})),R(S,M(N,{get when(){return V()?.id},keyed:!0,get fallback(){return du()},get children(){return[(()=>{var e=wl(),t=e.firstChild.nextSibling,n=t.nextSibling,r=n.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.nextSibling.nextSibling,s=o.nextSibling.nextSibling;s.nextSibling;var c=r.nextSibling;return R(t,()=>V().id),R(n,()=>V().status),R(e,M(N,{get when(){return(V().pendingPrompts??0)>0},get children(){var e=xl(),t=e.firstChild.nextSibling;return t.nextSibling,R(e,()=>V().pendingPrompts,t),R(e,()=>V().status===`stopped`?` (stopped)`:``,null),y(()=>I(e,`title`,V().status===`stopped`?`${V().pendingPrompts} message${(V().pendingPrompts??0)>1?`s`:``} from you are still queued, but this agent is STOPPED — nothing will run until you press start (or it is resumed). Each can be withdrawn with ✕ cancel while it is still queued.`:`${V().pendingPrompts??0} message${(V().pendingPrompts??0)>1?`s`:``} from you waiting in the queue. They will be handed to the model at its next turn boundary — the timeline shows them as "pending (queued)…" until then, and each can be withdrawn with ✕ cancel while it's still queued.`)),e}}),r),R(e,M(N,{get when(){return En(V().id).length>0},get children(){var e=Sl();return e.firstChild,R(e,()=>En(V().id).length,null),y(()=>I(e,`title`,`scheduled tasks:\n${En(V().id).map(e=>`${e.schedule} · ${e.id}${e.forked?` (forked)`:``}`).join(`
25
+ `)}`)),e}}),r),R(r,()=>V().model,i),R(r,()=>V().session,a),R(r,()=>V().branch,o),R(r,()=>V().stats.turns,s),R(r,()=>V().stats.toolCalls,null),R(c,M(N,{get when(){return V().statusReason},get children(){var e=Cl();return y(()=>I(e,`title`,V().statusReason)),e}}),null),R(c,M(Hp,{icon:`⌨`,title:`terminal (t)`,onClick:vr}),null),R(c,M(Hp,{icon:`▤`,title:`toggle details panel (d)`,onClick:fe}),null),y(()=>L(n,`badge ${V().status}`)),e})(),(()=>{var e=jl();return e.addEventListener(`scroll`,e=>{if(ci)return;let t=e.currentTarget,r=er(),i=t.scrollHeight-t.scrollTop-t.clientHeight;if(!r&&ui!==void 0&&i>ui+8&&i>24?li=!0:r&&(li=!1),ui=i,t.scrollTop<=4&&n()&&!Un()&&!Gn()&&f().length>0&&Zn(),li&&!r){ft(!1);return}r&&pt()&&mt(0),ft(r)}),R(e,M(N,{get when(){return _t()},children:e=>(()=>{var t=fu();return t.firstChild,R(t,(()=>{var t=P(()=>e().phase===`harvesting`);return()=>t()?`saving durable lessons…`:`summarizing ${e().summarized?zp(e().summarized)+` `:``}older messages…`})(),null),t})()}),null),R(e,M(N,{get when(){return P(()=>!!Gn())()&&an().length>0},get children(){return Tl()}}),null),R(e,M(N,{get when(){return Un()},get children(){return El()}}),null),R(e,M(N,{get when(){return an().length>0},get fallback(){return pu()},get children(){return[M(ye,{get each(){return an()},children:(e,t)=>M(Pp,{e,get prev(){return an()[t()-1]},get res(){return Qt().resFor.get(e.id)},get orphan(){return Qt().orphanCalls.has(e.id)},onOption:e=>void mi(e),answeredIds:rn,onAnswered:tn,get agentActive(){return P(()=>!!jt())()&&qe(e)},onResize:()=>{dt()&&requestAnimationFrame(()=>tr(!0))},get onCancel(){return e.data?.source===`user`&&e.data?.pending&&e.data?.promptId&&e.data?.sent!==!0?()=>{let t=String(e.data.promptId);$(`/api/agents/${n()}/prompt/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({promptId:t})}).then(e=>{let n=String(e.text??``);D(ne()?`${n}\n\n${ne()}`:n),zt(Lt(),Ft().filter(e=>e.promptId!==t)),Q(`message withdrawn — draft restored`)}).catch(()=>Q(`withdraw failed — it may have already been sent`))}:void 0},get onEdit(){return e.type===`prompt`&&e.data?.source===`user`&&!(e.data?.pending&&e.data?.sent!==!0)&&!e.data?.cancelled&&!jt()?()=>Nt({eventId:e.id,text:String(e.data?.text??``)}):void 0}})}),M(N,{get when(){return z()},get children(){var e=Al(),t=e.firstChild.nextSibling;return t.firstChild,R(t,M(N,{get when(){return Ot()},get children(){var e=Dl(),t=e.firstChild;t.firstChild;var n=t.nextSibling;return R(t,M(jp,{get startedAt(){return Dt()}}),null),Oe(e=>{let t=!0;e.addEventListener(`scroll`,()=>{t=e.scrollHeight-e.scrollTop-e.clientHeight<24}),b(()=>{Ot(),t&&(e.scrollTop=e.scrollHeight)})},n),R(n,Ot),e}}),null),R(t,M(N,{get when(){return Ct()},get fallback(){return mu()},get children(){return M(N,{get when(){return yt()},get fallback(){return(()=>{var e=kl();return y(()=>e.innerHTML=Ie(Ct()+`▍`)),e})()},get children(){return[Ol(),(()=>{var e=kl();return y(()=>e.innerHTML=Ie(bt()+`▍`)),e})()]}})}}),null),e}})]}}),null),e})(),M(N,{get when(){return gr()},get children(){var t=Il(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.firstChild,s=r.nextSibling,c=s.firstChild;n.$$dblclick=()=>{Ar(Math.max(220,Math.round(window.innerHeight*.35))),localStorage.setItem(`teapot.termH`,String(kr()))},n.$$pointerdown=Ur,R(i,M(ye,{get each(){return yr()},children:(e,t)=>(()=>{var n=hu(),r=n.firstChild.nextSibling;return n.$$click=()=>Fr(t()),R(n,()=>e.title,r),r.$$click=e=>{e.stopPropagation(),Rr(t())},y(r=>{var i=`termtab`+(Dr()===0&&xr()===t()?` active`:``)+(Tr()&&Dr()===1&&Cr()===t()?` active`:``),a=`${e.title} — click to show in focused pane`;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})()}),null),R(i,M(Hp,{icon:`+`,title:`new shell in this workspace`,onClick:Ir}),null),R(o,(()=>{var t=P(()=>!!Pr());return()=>t()?e().find(e=>e.id===Pr().agentId)?.workspace.split(`/`).filter(Boolean).pop():V()?.workspace})()),R(a,M(Hp,{icon:`◫`,get title(){return Tr()?`single pane`:`split panes (50/50)`},onClick:Wr}),null),R(a,M(Hp,{icon:`▾`,title:`hide the terminal (shells keep running; reopen with t) — close individual shells with their ✕ tab buttons`,onClick:vr}),null);var l=Gr(0);return typeof l==`function`&&Oe(l,c),c.$$pointerdown=()=>Or(0),R(c,M(N,{get when(){return xr()<0||xr()>=yr().length},get children(){return Ml()}})),R(s,M(N,{get when(){return Tr()},get children(){return[Nl(),(()=>{var e=Fl(),t=Gr(1);return typeof t==`function`&&Oe(t,e),e.$$pointerdown=()=>Or(1),R(e,M(N,{get when(){return Cr()<0||Cr()>=yr().length},get children(){return Pl()}})),y(()=>e.classList.toggle(`focused`,Dr()===1)),e})()]}}),null),y(e=>{var n={height:`${kr()}px`,"--termh":`${kr()}px`},r=!!Tr(),i=Dr()===0;return e.e=Ee(t,n,e.e),r!==e.t&&s.classList.toggle(`split`,e.t=r),i!==e.a&&c.classList.toggle(`focused`,e.a=i),e},{e:void 0,t:void 0,a:void 0}),t}}),(()=>{var e=Hl(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling,o=t.nextSibling;R(e,M(N,{get when(){return!dt()||pt()>0},get children(){var e=Ll();return e.firstChild,e.$$click=()=>tr(!0),R(e,(()=>{var e=P(()=>pt()>0);return()=>e()?`${pt()} new message${pt()>1?`s`:``}`:`jump to present`})(),null),e}}),t),R(e,M(N,{get when(){return ai().length>0},get children(){var e=Rl();return R(e,M(ye,{get each(){return ai()},children:(e,t)=>(()=>{var n=gu(),r=n.firstChild,i=r.nextSibling;return n.$$click=()=>{D(e.insert),ii(-1)},R(r,()=>e.insert.trim()),R(i,()=>e.title),y(r=>{var i=`cmdrow`+(t()===ri()?` active`:``),a=e.title;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})()})),e}}),t),R(e,M(N,{get when(){return $r().length>0},get children(){var e=Rl();return R(e,M(ye,{get each(){return $r()},children:e=>(()=>{var t=_u(),n=t.firstChild;n.firstChild;var r=n.nextSibling;return t.$$click=()=>{D(`@${e.key} `),ii(-1)},R(n,()=>e.key,null),R(r,()=>e.label),y(()=>I(t,`title`,e.label)),t})()})),e}}),t),t.addEventListener(`submit`,hi),R(t,M(N,{get when(){return di().length>0},get children(){var e=zl(),t=e.firstChild,n=t.firstChild,r=n.nextSibling;return r.nextSibling,R(e,M(ye,{get each(){return di()},children:(e,t)=>(()=>{var n=vu(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>fi(e=>e.filter((e,n)=>n!==t())),y(t=>{var i=e.name,a=e.url,o=e.name;return i!==t.e&&I(n,`title`,t.e=i),a!==t.t&&I(r,`src`,t.t=a),o!==t.a&&I(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),t),R(t,()=>di().length,n),R(t,()=>di().length>1?`s`:``,r),e}}),n),n.$$keydown=e=>{let t=ai();if(t.length>0&&e.key===`ArrowDown`){e.preventDefault(),ii(e=>Math.min(e+1,t.length-1));return}if(t.length>0&&e.key===`ArrowUp`){e.preventDefault(),ii(e=>Math.max(e-1,0));return}if(t.length>0&&(e.key===`Tab`||e.key===`Enter`)&&!e.shiftKey&&ri()>=0&&!bp){e.preventDefault(),D(t[ri()].insert),ii(-1);return}if(e.key===`Escape`&&t.length>0){ii(-1);return}e.key===`Enter`&&!e.shiftKey&&!bp&&!nt()&&(e.preventDefault(),hi(e))},n.$$input=e=>{D(e.currentTarget.value),ii(0),si()},n.addEventListener(`paste`,e=>{let t=Array.from(e.clipboardData?.files??[]).filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pi(t))}),n.addEventListener(`compositionend`,()=>{requestAnimationFrame(()=>{bp=!1})}),n.addEventListener(`compositionstart`,()=>{bp=!0});var s=oi;return typeof s==`function`?Oe(s,n):oi=n,R(t,M(N,{get when(){return P(()=>!!ne().startsWith(`@`))()&&ne().includes(` `)},get children(){var e=Bl(),t=e.firstChild;return t.addEventListener(`change`,e=>Zr(e.currentTarget.checked)),y(()=>t.checked=Xr()),e}}),r),r.$$click=()=>{let e=!nt();it(e),requestAnimationFrame(()=>si())},R(r,()=>nt()?`⤡`:`⤢`),R(t,M(Hp,{icon:`📎`,title:`attach images (or paste them straight into the box)`,onClick:()=>document.getElementById(`composer-file`)?.click()}),i),R(t,M(N,{get when(){return di().length},get children(){var e=Vl();return e.firstChild,R(e,()=>di().length,null),e}}),i),a.addEventListener(`change`,e=>{e.currentTarget.files?.length&&pi(e.currentTarget.files),e.currentTarget.value=``}),R(o,()=>_p()||`enter send · shift+enter newline · ↑↓ sessions · / commands & focus · t terminal · d panel · esc interrupt · messages sent while the agent works queue up and land at the next turn boundary`),y(t=>{var i=`composer`+(nt()?` maximized`:``),a=`message #${V().id} — / for commands · paste or 📎 to attach images`,o=nt()?`restore composer (hide timeline)`:`maximize composer — hide the timeline and fill the main column`;return i!==t.e&&L(e,t.e=i),a!==t.t&&I(n,`placeholder`,t.t=a),o!==t.a&&I(r,`title`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),y(()=>n.value=ne()),e})()]}})),R(i,M(N,{get when(){return P(()=>!!ce())()&&j()},get children(){var e=Ul();return e.$$click=()=>de(!1),e}}),C),C.addEventListener(`scroll`,e=>{vi=e.currentTarget.scrollTop});var te=_i;return typeof te==`function`?Oe(te,C):_i=C,R(w,M(Hp,{icon:`✕`,title:`close details panel (esc)`,onClick:pe}),null),R(C,M(N,{get when(){return V()?.id},keyed:!0,fallback:null,children:i=>[yu(),(()=>{var e=bu(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling,i=t.nextSibling,a=i.firstChild.nextSibling,o=i.nextSibling.firstChild.nextSibling,s=o.firstChild;return R(n,()=>V().id),R(r,()=>V().status),R(a,()=>V().workspace),R(o,()=>V().session,s),R(o,()=>V().branch,null),y(e=>{var t=`badge ${V().status}`,n=V().workspace;return t!==e.e&&L(r,e.e=t),n!==e.t&&I(a,`title`,e.t=n),e},{e:void 0,t:void 0}),e})(),M(N,{get when(){return V().id},keyed:!0,fallback:null,children:e=>M(em,{agentId:e,get workspace(){return V().workspace}})}),xu(),(()=>{var e=wu(),t=e.firstChild,r=t.nextSibling,i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=r.nextSibling;return s.firstChild,t.addEventListener(`change`,e=>{Me(e.currentTarget.value),Ve(e.currentTarget.value)}),R(t,M(ye,{get each(){return Be()},children:e=>(()=>{var t=cu();return t.value=e,R(t,e,null),R(t,()=>e===O().defaultProvider?` ★`:``,null),t})()})),i.$$input=e=>Pe(e.currentTarget.value),R(a,M(ye,{get each(){return Re()},children:e=>(()=>{var t=cu();return y(()=>t.value=e.id),t})()})),o.$$click=async e=>{if(!n())return;let t=e.currentTarget;t.disabled=!0;try{await $(`/api/agents/${n()}/model`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({provider:je(),model:Ne().trim()||void 0,contextWindowTokens:Re().find(e=>e.id===(Ne().trim()||void 0))?.contextLength})}),t.textContent=`✓ applied`,xn()}catch(e){alert(`model switch failed: ${e.message}`)}finally{setTimeout(()=>{t.textContent=`apply`,t.disabled=!1},1200)}},R(e,M(N,{get when(){return V().effortSupported},get children(){var e=Su(),t=e.firstChild.nextSibling;t.firstChild;var r=t.nextSibling;return t.addEventListener(`change`,e=>Le(e.currentTarget.value)),R(t,M(ye,{each:pp,children:e=>(()=>{var t=cu();return t.value=e,R(t,e),t})()}),null),r.$$click=async e=>{if(!n())return;let t=e.currentTarget;t.disabled=!0;try{await $(`/api/agents/${n()}/model`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({reasoningEffort:Fe()})}),t.textContent=`✓ applied`,xn()}catch(e){alert(`effort change failed: ${e.message}`)}finally{setTimeout(()=>{t.textContent=`apply`,t.disabled=!1},1200)}},y(()=>t.value=Fe()),e}}),s),R(s,()=>V().model,null),R(s,M(N,{get when(){return Re().length},get children(){return[` · `,P(()=>Re().length),` models loaded`]}}),null),R(e,M(N,{get when(){return $e()},get children(){var e=Cu();return R(e,$e),e}}),null),y(()=>I(i,`placeholder`,V().model)),y(()=>t.value=je()),y(()=>i.value=Ne()),e})(),Tu(),(()=>{var i=Du(),a=i.firstChild,o=a.nextSibling,s=o.nextSibling;return Te(a,`click`,jt()?yi(`/stop`):yi(`/start`),!0),R(a,()=>jt()?`■ stop`:`▶ start`),o.$$click=()=>$(`/api/agents/${V().id}/fork`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}).then(async()=>{await d(!0),await ir(V().id)}),s.$$click=async()=>{let i=n();if(!i||!confirm(`remove agent ${i}? (log is kept)`))return;await $(`/api/agents/${i}`,{method:`DELETE`}).catch(()=>{});let a=e().filter(e=>e.id!==i);t(a),d(!0),a[0]?ir(a[0].id):(r(null),p([]))},R(i,M(N,{get when(){return e().some(e=>e.parent===n())},get children(){var e=Eu();return e.$$click=async()=>{n()&&(Q(`stopped: ${((await $(`/api/agents/${n()}/stop-children`,{method:`POST`})).stopped??[]).join(`, `)||`(none)`}`),xn())},e}}),null),y(e=>{var t=jt()?`danger`:`runbtn`,n=jt()?`interrupt: aborts the current LLM call; the running tool finishes first`:`run toward the goal (starts the loop)`;return t!==e.e&&L(a,e.e=t),n!==e.t&&I(a,`title`,e.t=n),e},{e:void 0,t:void 0}),i})(),(()=>{var e=Ou(),t=e.firstChild.firstChild;return t.addEventListener(`change`,e=>{n()&&$(`/api/agents/${n()}/auto-continue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({value:e.currentTarget.checked})}).then(xn)}),y(()=>t.checked=V().autoContinue??!0),e})(),(()=>{var e=Au();return e.firstChild,R(e,M(N,{get when(){return!!V().goal.text.trim()},get fallback(){return Ju()},get children(){var e=ku();return R(e,()=>V().goal.status),y(()=>L(e,`badge ${V().goal.status===`active`?`running`:V().goal.status}`)),e}}),null),e})(),(()=>{var e=ju();return e.firstChild,R(e,M(ye,{each:[`active`,`done`,`paused`],children:e=>(()=>{var t=Yu();return t.$$click=()=>{n()&&$(`/api/agents/${n()}/goal`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({status:e})}).then(xn)},I(t,`title`,e===`active`?`agent keeps working toward the goal (with auto-continue)`:e===`done`?`mark achieved — auto-continue stops`:`parked on purpose — resume by setting active again`),R(t,e===`active`?`▶ working`:e===`done`?`✓ done`:`⏸ paused`),y(n=>{var r=`goalstate`+(V().goal.text.trim()&&V().goal.status===e?` on ${e}`:``),i=!!V().goal.text.trim()&&V().goal.status===e;return r!==n.e&&L(t,n.e=r),i!==n.t&&(t.disabled=n.t=i),n},{e:void 0,t:void 0}),t})()}),null),e})(),M(N,{get when(){return V().goal.text},get fallback(){return Xu()},get children(){return[(()=>{var e=Mu(),t=e.firstChild;return y(()=>t.innerHTML=Ie(String(V().goal.text))),e})(),M(N,{get when(){return V().goal.verify},get children(){var e=Nu(),t=e.firstChild.nextSibling;return y(()=>t.innerHTML=Ie(String(V().goal.verify))),e}}),M(N,{get when(){return V().goal.audit},children:e=>(()=>{var t=Zu(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return R(n,()=>e().verdict===`approved`?`✅ audit: approved`:`⚠ audit: changes required`,r),R(r,()=>Rp(e().at)),y(n=>{var r=`card auditcard `+(e().verdict===`approved`?`ok`:`warn`),a=et(e().feedback)?Ie(`_the auditor returned a verdict with no detail_`):Ie(e().feedback);return r!==n.e&&L(t,n.e=r),a!==n.t&&(i.innerHTML=n.t=a),n},{e:void 0,t:void 0}),t})()})]}}),Pu(),(()=>{var e=Fu(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling.firstChild.firstChild;return e.addEventListener(`submit`,Oi),t.$$input=e=>{xi(e.currentTarget.value),wi(!0)},n.$$input=e=>{Ci(e.currentTarget.value),wi(!0)},r.addEventListener(`change`,e=>Ei(e.currentTarget.checked)),y(()=>t.value=bi()),y(()=>n.value=Si()),y(()=>r.checked=Ti()),e})(),(()=>{var e=Lu(),t=e.firstChild.nextSibling;return R(e,M(N,{get when(){return yn().total>0},get children(){var e=Iu(),t=e.firstChild,n=t.nextSibling;return n.nextSibling,R(e,()=>yn().done,t),R(e,()=>yn().total,n),y(t=>Ee(e,yn().done===yn().total?`color:var(--ok)`:`color:var(--warn)`,t)),e}}),t),e})(),M(N,{get when(){return yn().total>0},get children(){var e=Ru(),t=e.firstChild;return y(e=>{var n=`barfill `+(yn().done===yn().total?``:`warn`),r=`${Math.round(yn().done/yn().total*100)}%`;return n!==e.e&&L(t,e.e=n),r!==e.t&&De(t,`width`,e.t=r),e},{e:void 0,t:void 0}),e}}),M($p,{get draft(){return dn()},get preview(){return pn()},onDraft:e=>{fn(e),gn(!0)}}),(()=>{var e=zu(),t=e.firstChild,n=t.nextSibling;return R(e,M(Hp,{get icon(){return pn()?`✎`:`👁`},get title(){return pn()?`edit markdown`:`rendered checklist`},onClick:()=>mn(!pn())}),t),n.$$click=vn,e})(),Bu(),M(N,{get when(){return V().latestProgress},get fallback(){return Qu()},children:e=>(()=>{var t=rd(),n=t.firstChild,r=n.firstChild.nextSibling,i=n.nextSibling;return R(t,M(N,{get when(){return e().recent},get children(){var t=$u(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().recent)),t}}),i),R(t,M(N,{get when(){return e().problems},get children(){var t=ed(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().problems)),t}}),i),R(t,M(N,{get when(){return e().next},get children(){var t=td(),n=t.firstChild.nextSibling;return y(()=>n.innerHTML=fp(e().next)),t}}),i),R(t,M(N,{get when(){return e().goalStatus},get children(){var t=nd(),n=t.firstChild.nextSibling;return R(n,()=>e().goalStatus),t}}),i),R(i,()=>Rp(e().ts)),y(()=>r.innerHTML=fp(e().doing)),t})()}),Vu(),(()=>{var e=Wu(),t=e.firstChild,r=t.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild.nextSibling,c=t.nextSibling,l=c.firstChild.nextSibling,u=l.firstChild,d=u.nextSibling;return d.nextSibling,R(i,()=>V().stats.turns),R(o,()=>V().stats.toolCalls),R(s,()=>V().stats.compactions??0),R(l,()=>zp(V().stats.inputTokens),u),R(l,()=>zp(V().stats.outputTokens),d),R(c,M(N,{get when(){return(V().stats.cachedInputTokens??0)>0},get children(){var e=Hu(),t=e.firstChild.nextSibling;return t.nextSibling,R(e,()=>Math.round(V().stats.cachedInputTokens/Math.max(1,V().stats.inputTokens)*1e3)/10,t),y(()=>I(e,`title`,`${zp(V().stats.cachedInputTokens)} tokens were served from the provider's prompt cache — billed far cheaper than fresh input`)),e}}),null),R(e,M(N,{get when(){return(V().stats.costUsd??0)>0},get children(){var e=Uu(),t=e.firstChild.nextSibling;return t.firstChild,R(t,()=>Bp(V().stats.costUsd??0),null),y(()=>I(e,`title`,`≈ ${(V().stats.costUsd??0).toFixed(4)} this session, from the model's USD/token pricing and per-turn usage. Cached input is estimated at ~10% of the prompt rate; treat as an approximation, not an invoice.`)),e}}),null),R(e,M(N,{get when(){return V().ctx},keyed:!0,get fallback(){return id()},children:e=>{let t=x(()=>{let t=e,n=Re().find(e=>e.id===V().model),r=t.window||n?.contextLength||0,i=r?Math.min(999,t.usedTokens/r*100):0;return{usedTokens:t.usedTokens,compactAt:t.compactAt,compacting:t.compacting,window:t.window,effectiveWindow:r,pct:i,cls:r?i>=85?`crit`:i>=70?`warn`:`ok`:``,derivedBudget:r?Math.round(r*.75):0,usingDerived:t.compactAtIsManual!==!0}}),r=()=>t(),i=e=>{let t=Math.round(e*10)/10;return Number.isInteger(t)?String(t):t.toFixed(1)};return(()=>{var e=ld(),t=e.firstChild,a=t.firstChild.nextSibling,o=a.firstChild.nextSibling;o.nextSibling;var s=t.nextSibling,c=s.firstChild.nextSibling,l=c.firstChild,u=c.nextSibling,d=s.nextSibling,f=d.firstChild.firstChild,p=d.nextSibling,m=p.firstChild.nextSibling;return m.nextSibling,R(a,()=>zp(r().usedTokens),o),R(t,M(N,{get when(){return r().effectiveWindow},get children(){var e=ad(),t=e.firstChild;return R(e,()=>i(r().pct),t),R(e,()=>zp(r().effectiveWindow),null),y(()=>L(e,`pill ${r().cls}`)),e}}),null),R(e,M(N,{get when(){return r().effectiveWindow},get children(){var e=od(),t=e.firstChild;return y(e=>{var n=`barfill ${r().cls}`,i=`${Math.min(100,r().pct)}%`;return n!==e.e&&L(t,e.e=n),i!==e.t&&De(t,`width`,e.t=i),e},{e:void 0,t:void 0}),e}}),s),R(c,()=>zp(r().usingDerived?r().derivedBudget:r().compactAt),l),R(u,()=>r().usingDerived?` (75% of window)`:` (manual override)`),R(e,M(N,{get when(){return r().effectiveWindow},get children(){var e=sd(),t=e.firstChild;return y(e=>{var n=`barfill ${r().cls}`,i=`${Math.min(100,Math.round(r().usedTokens/r().derivedBudget*100))}%`;return n!==e.e&&L(t,e.e=n),i!==e.t&&De(t,`width`,e.t=i),e},{e:void 0,t:void 0}),e}}),d),R(e,M(N,{get when(){return _t()||r().compacting},get children(){var e=cd(),t=e.firstChild.nextSibling.nextSibling;return R(t,()=>_t()?.phase??String(r().compacting)),e}}),d),f.addEventListener(`change`,e=>{n()&&$(`/api/agents/${n()}/auto-compact`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({value:e.currentTarget.checked})}).then(xn)}),R(p,()=>zp(r().compactAt),m),y(()=>f.checked=V().autoCompact!==!1),e})()}}),null),e})(),(()=>{var e=Ku();return e.firstChild.nextSibling,R(e,M(N,{get when(){return G()},get children(){var e=Gu(),t=e.firstChild.nextSibling;return R(t,G),e}}),null),e})(),M(ye,{get each(){return g()},children:e=>(()=>{var t=ud(),r=t.firstChild,i=r.nextSibling,a=i.firstChild;return t.$$click=()=>{let t=G()===e.branch?null:e.branch,r=t!==G();zn(t),n()&&(r&&(qn++,p([]),h(0),Kn(!1)),Qn(n()))},R(r,()=>e.branch,null),R(r,()=>e.branch===V().branch?` (current)`:``,null),R(i,()=>e.events,a),y(n=>{var r=`branch-row`+(e.branch===V().branch||e.branch===G()?` cur`:``),i=e.branch===G()?`click to show all branches again`:`show only ${e.branch}`;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),qu(),M(N,{get when(){return Cn().length>0},get fallback(){return dd()},get children(){return M(ye,{get each(){return Cn()},children:e=>(()=>{var t=pd(),r=t.firstChild,i=r.firstChild,a=i.nextSibling;a.firstChild;var o=r.nextSibling,s=o.firstChild,c=o.nextSibling;return t.$$click=()=>ir(e.agent),R(i,()=>e.id),R(a,()=>e.agent,null),R(r,M(N,{get when(){return e.forked},get children(){return fd()}}),null),R(o,()=>e.schedule,s),R(o,(()=>{var t=P(()=>!!e.next);return()=>t()?Rp(e.next):`—`})(),null),R(o,(()=>{var t=P(()=>!!e.last);return()=>t()?` · last ${Rp(e.last)}`:` · never ran`})(),null),R(c,()=>Vp(e.prompt,90)),y(r=>{var i=`sched-row`+(e.agent===n()?` cur`:``),a=`${Vp(e.prompt,200)}\nclick to open #${e.agent}`;return i!==r.e&&L(t,r.e=i),a!==r.t&&I(t,`title`,r.t=a),r},{e:void 0,t:void 0}),t})()})}})]}),null),y(e=>{var t=`layout`+(j()?``:` right-hidden`),n=`iconbtn notifbtn`+(H()>0?` has-unread`:``),r=H()>0?`${H()} unread notifications`:`notifications`,a=`conn`+(ar()?` ok`:``),o=ar()?`live (websocket)`:`reconnecting…`,s=`rightbar`+(j()?` open`:``);return t!==e.e&&L(i,e.e=t),n!==e.t&&L(l,e.t=n),r!==e.a&&I(l,`title`,e.a=r),a!==e.o&&L(_,e.o=a),o!==e.i&&I(_,`title`,e.i=o),s!==e.n&&L(C,e.n=s),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),i}}),M(N,{get when(){return Wt()},get children(){return[(()=>{var e=Gl();return e.$$click=()=>Gt(!1),e})(),(()=>{var t=Jl(),r=t.firstChild.firstChild.nextSibling,i=r.firstChild;return R(r,M(N,{get when(){return Bt().length>0},get children(){var e=Kl();return e.$$click=()=>Vt([]),e}}),i),i.$$click=()=>Gt(!1),R(t,M(N,{get when(){return Bt().length>0},get fallback(){return md()},get children(){var t=ql();return R(t,M(ye,{get each(){return Bt()},children:t=>(()=>{var r=gd(),i=r.firstChild.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling;return r.$$click=()=>{Vt(e=>e.map(e=>e.id===t.id?{...e,read:!0}:e)),n()!==t.agentId&&e().some(e=>e.id===t.agentId)&&ir(t.agentId),Gt(!1),t.eventId&&setTimeout(()=>Zt(t.eventId),n()===t.agentId?60:350)},R(i,(()=>{var e=P(()=>t.kind===`finish`);return()=>e()?`✅`:P(()=>t.kind===`question`)()?`❓`:t.kind===`error`?`⚠️`:`📈`})()),R(a,()=>t.title),R(o,()=>Rp(new Date(t.at).toISOString())),s.$$click=e=>{e.stopPropagation(),Vt(e=>e.map(e=>e.id===t.id?{...e,read:!0}:e))},R(s,()=>t.read?`✓`:`○`),R(r,M(N,{get when(){return t.body},get children(){var e=hd();return R(e,()=>Lp(t.body,160)),e}}),null),y(e=>{var n=`notifitem `+t.kind+(t.read?` read`:``),i=`from ${t.agentId}`,a=t.read?`already read`:`mark as read`;return n!==e.e&&L(r,e.e=n),i!==e.t&&I(r,`title`,e.t=i),a!==e.a&&I(s,`title`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),r})()})),t}}),null),t})()]}}),M(N,{get when(){return k()},get children(){return M(Gp,{get providers(){return Object.keys(O().providers??{})},onClose:()=>ie(!1),onCreated:e=>{ie(!1),xn(),ir(e)}})}}),M(N,{get when(){return ae()},get children(){return M(am,{get cfg(){return O()},onClose:()=>oe(!1),onSaved:()=>{cn(),Tn()}})}}),M(N,{get when(){return Mt()},fallback:null,children:e=>{let t=()=>f().findIndex(t=>t.id===e().eventId),r=()=>Math.max(0,f().length-t()-1),[i,a]=v(r()>0?`summarize`:`discard`);return M(Wp,{title:`edit prompt — forks the conversation`,onClose:()=>Nt(null),get children(){var t=vd(),o=t.firstChild,s=o.nextSibling,c=s.firstChild;return t.addEventListener(`submit`,async t=>{t.preventDefault();let r=document.getElementById(`edit-text`);try{await $(`/api/agents/${n()}/edit-prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({eventId:e().eventId,text:r.value,tail:i()})}),Nt(null),xn();let t=n();t&&await ir(t)}catch(e){alert(`edit failed: ${e.message}`)}}),R(t,M(N,{get when(){return r()>0},get children(){var e=_d(),t=e.firstChild,n=t.firstChild,o=t.nextSibling,s=o.firstChild,c=o.nextSibling.firstChild;return R(t,r,n),s.addEventListener(`change`,()=>a(`summarize`)),c.addEventListener(`change`,()=>a(`discard`)),y(()=>s.checked=i()===`summarize`),y(()=>c.checked=i()===`discard`),e}}),s),c.$$click=()=>Nt(null),y(()=>o.value=e().text),t}})}})]}function Ap(e){let t=new Date(e.startedAt).getTime(),[n,r]=v(Date.now());C(()=>{let e=setInterval(()=>r(Date.now()),500);w(()=>clearInterval(e))});let i=()=>Ve(Math.max(0,n()-t));return e.inline?(()=>{var t=yd();return t.firstChild,R(t,i,null),R(t,(()=>{var t=P(()=>!!e.timeoutMs);return()=>t()?` · timeout ${Math.round(e.timeoutMs/1e3)}s`:``})(),null),t})():(()=>{var e=bd(),t=e.firstChild;return R(e,i,t),e})()}function jp(e){let[t,n]=v(Date.now());return C(()=>{let e=setInterval(()=>n(Date.now()),500);w(()=>clearInterval(e))}),e.startedAt?(()=>{var n=xd();return R(n,()=>Ve(Math.max(0,t()-e.startedAt))),n})():null}function Mp(e){let t=e.e,n=e.res,r=!e.agentActive&&!n,i=t.data??{},a=String(i.name??`tool`),o=()=>n?String(n.data?.result??``):``,s=a,c=``,l=(()=>{var e=Sd();return R(e,()=>Lp(JSON.stringify(i.args??{},null,1),2e3)),e})(),u=e=>String(i.args?.[e]??``),d=()=>a===`bash`?u(`command`):u(`path`)||JSON.stringify(i.args??{},null,1),f=()=>a===`bash`?Number(u(`timeout_ms`))||void 0:a===`wait_children`?Number(u(`timeout_ms`))||3e5:Number(u(`timeout_ms`))||void 0,p=(e,t=1500)=>(()=>{var n=Cd();return R(n,()=>Lp(e,t)),n})(),m=(e=4e3)=>n?[P(()=>p(o(),e)),(()=>{var e=wd();return R(e,()=>Ve(n.data?.durationMs),null),R(e,()=>a===`bash`?vt(_t(n.data?.ok,String(n.data?.result??``))):n.data?.ok===!1?` · FAILED`:``,null),R(e,M(Up,{get text(){return o()}}),null),e})()]:Td();try{switch(a){case`bash`:{let e=u(`command`),t=i.args?.background===!0,r=t?String(o()).match(/job (bg\d+)/)?.[1]??``:``;s=(t?`⏳ `:`$ `)+Vp(e,96);let a=u(`timeout_ms`)?Number(u(`timeout_ms`)):void 0,d=_t(n?.data?.ok,n?String(n.data?.result??``):``);c=n?t?`background job${r?` ${r}`:``}${a?` · timeout ${Math.round(a/1e3)}s`:``}`:yt({outcome:d,durationMs:n.data?.durationMs,timeoutMs:a,fmtDur:Ve}):null,l=[t?(()=>{var e=Ed(),t=e.firstChild.nextSibling,n=t.firstChild.nextSibling;return n.nextSibling,R(t,r||`?`,n),R(e,r?[` · kill with `,Dd()]:null,null),e})():null,P(()=>P(()=>e!==s.slice(2))()?p(e,800):null),P(()=>m(6e3))];break}case`read_file`:{s=u(`path`)||`(no path)`;let e=[];u(`pattern`)&&e.push(`grep /${Vp(u(`pattern`),40)}/`),Number(i.args?.offset)<0?e.push(`last ${-Number(i.args.offset)} lines`):i.args?.offset&&e.push(`from L${i.args.offset}`),i.args?.limit&&e.push(`≤${i.args.limit} lines`),c=e.join(` · `),l=m(6e3);break}case`write_file`:{let e=String(i.args?.content??``);s=u(`path`)||`(no path)`,c=`${zp(e.length)} bytes`,l=[P(()=>p(e,1500)),P(()=>P(()=>e.length>1500)()?(()=>{var t=Od(),n=t.firstChild;return R(t,()=>zp(e.length),n),t})():null),n?(()=>{var e=wd();return R(e,()=>Vp(o(),160)),e})():kd()];break}case`edit_file`:s=u(`path`)||`(no path)`,c=i.args?.replace_all===!0?`replace all`:`unique spot`,l=[(()=>{var e=Ad();return R(e,()=>Lp(`- `+u(`old_text`),900)),e})(),(()=>{var e=jd();return R(e,()=>`+ `+Lp(u(`new_text`),900)),e})(),n?(()=>{var e=Md(),t=e.firstChild;return R(e,()=>Vp(o(),120),t),R(e,()=>Ve(n.data?.durationMs),null),e})():Nd()];break;case`apply_patch`:{let e=u(`patch`).split(`
26
26
  `).filter(e=>e&&!/^---$/.test(e.trim())),t=e.map(e=>e.match(/^\*\*\* (?:Add|Update|Delete) File: (.+)$/)?.[1]).filter(Boolean);s=t.length?`${t.length} file${t.length>1?`s`:``}: ${Vp(t.join(`, `),80)}`:`patch`;let r=e.slice(0,60);l=[(()=>{var t=Pd();return R(t,()=>r.map(e=>{let t=e.startsWith(`+`)?` add`:e.startsWith(`-`)?` del`:/^\*\*\*|^@@/.test(e)?` meta`:``;return(()=>{var n=Fd();return L(n,`pline`+t),R(n,(()=>{var t=P(()=>e.length>240);return()=>t()?e.slice(0,240)+`…`:e})()),n})()}),null),R(t,(()=>{var t=P(()=>e.length>60);return()=>t()?(()=>{var t=Id(),n=t.firstChild.nextSibling;return n.nextSibling,R(t,()=>e.length-60,n),t})():null})(),null),t})(),n?(()=>{var e=wd();return R(e,()=>Vp(o().split(`
27
- `)[0]??``,140),null),R(e,()=>n.data?.ok===!1?` · FAILED`:``,null),e})():Ld()];break}case`list_dir`:s=u(`path`)||`.`,l=m(4e3);break;case`read_url`:{let e=u(`url`);try{let t=new URL(e);e=t.host+t.pathname}catch{}s=Vp(e,70),c=`web`,l=[(()=>{var e=wd();return R(e,M(N,{get when(){return/^https?:/i.test(u(`url`))},get fallback(){return(()=>{var e=zd();return R(e,()=>Vp(u(`url`),80)),e})()},get children(){var e=Rd();return y(()=>I(e,`href`,u(`url`))),e}})),e})(),P(()=>m(3e3))];break}case`bash_output`:{let e=u(`action`)||`read`;s=`bash_output ${u(`job_id`)||`(?)`}`,c=e,l=m(4e3);break}case`load_skill`:{s=`skill: ${u(`name`)}`;let e=o().replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/,``);l=n?[(()=>{var t=kl();return y(()=>t.innerHTML=Ie(e)),t})(),(()=>{var e=wd();return R(e,()=>Ve(n.data?.durationMs)),e})()]:Bd();break}case`save_skill`:{s=`skill: ${u(`name`)}`,c=Vp(u(`description`),60);let e=Array.isArray(i.args?.files)?i.args.files.map(e=>e?.name).filter(Boolean):[];l=[P(()=>P(()=>!!e.length)()?(()=>{var t=Vd();return t.firstChild,R(t,()=>e.join(`, `),null),t})():null),n?(()=>{var e=Md(),t=e.firstChild;return R(e,()=>Vp(o(),160),t),R(e,()=>Ve(n.data?.durationMs),null),e})():Hd()];break}}}catch{}return(()=>{var i=Wd(),u=i.firstChild,p=u.firstChild;p.firstChild;var m=p.nextSibling,h=m.nextSibling;return i.addEventListener(`toggle`,t=>{t.target.open&&e.onResize?.()}),I(i,`title`,`${a}${c?` — `+c:``}`),R(p,s,null),R(u,M(N,{get when(){return t.data?.actor},get children(){var e=Ud();return e.firstChild,R(e,()=>String(t.data.actor),null),e}}),m),R(m,()=>n?c||``:r?`(result missed)`:a===`bash`||f()?M(Ap,{get startedAt(){return t.ts},inline:!0,get timeoutMs(){return f()}}):`running…`),R(h,M(Up,{get text(){return d()},label:`⧉ cmd`,title:`copy the ${a} arguments`}),null),R(h,M(N,{when:n,get children(){return M(Up,{get text(){return o()},label:`⧉ out`,title:`copy this tool's full output`})}}),null),R(i,l,null),y(()=>L(i,`embed`+(n?n.data?.ok===!1?` fail`:` done`:r?` done`:` running`))),i})()}function Np(e){let t=e.data??{};return e.type===`prompt`?String(t.text??``):e.type===`message`?`${typeof t.reasoning==`string`&&t.reasoning.trim()?`<reasoning>\n${t.reasoning}\n</reasoning>\n\n`:``}${String(t.content??``)}`:(e.type,``)}function Pp(e){let t=e.e,n=Cp(t),r=mt(e.prev,t);if(t.type===`fork`){let e=t.data??{};return(()=>{var n=Gd(),r=n.firstChild.nextSibling;return r.nextSibling,R(n,()=>String(e.fromBranch??`?`),r),R(n,()=>String(e.newBranch??t.branch),null),n})()}if(t.type===`goal`){let e=nt(t.data??{});return(()=>{var t=Kd(),n=t.firstChild;return R(n,()=>e.label),R(t,M(N,{get when(){return e.hasCard},get children(){var t=Fd();return y(n=>{var r=`card `+(e.tone===`ok`?`auditcard ok`:e.tone===`warn`?`auditcard`:`verifycard`),i=e.markdown?Ie(e.detail):Ie(`\`\`\`\n${e.detail}\n\`\`\``);return r!==n.e&&L(t,n.e=r),i!==n.t&&(t.innerHTML=n.t=i),n},{e:void 0,t:void 0}),t}}),null),y(()=>L(t,`goalline `+(e.tone===`err`?`err`:e.tone===`warn`?`warn`:``))),t})()}if(t.type===`todo`)return(()=>{var e=qd(),n=e.firstChild.nextSibling;return n.nextSibling,R(e,()=>String(t.data?.by??`human`),n),e})();if(t.type===`state`)return t.data.from===t.data.to?null:(()=>{var e=Jd(),n=e.firstChild;return R(e,()=>t.data.from,n),R(e,()=>t.data.to,null),R(e,(()=>{var e=P(()=>!!t.data.reason);return()=>e()?` — ${t.data.reason}`:``})(),null),y(()=>L(e,`divider-msg`+(t.data.to===`error`?` err`:``))),e})();if(t.type===`system_note`){let e=String(t.data?.event??``);if(e===`runaway-detected`)return(()=>{var e=Yd(),n=e.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,R(n,()=>String(t.data?.failures),r),R(n,()=>String(t.data?.limit),i),R(a,()=>String(t.data?.lastTool),o),R(a,()=>String(t.data?.lastError??``).slice(0,200),null),y(()=>I(e,`title`,`${t.data?.failures} consecutive tool failures hit the configured limit (${t.data?.limit})`)),e})();if(e===`error-retry`)return(()=>{var e=Xd(),n=e.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(n,()=>String(t.data?.attempt),r),R(n,()=>Math.round(Number(t.data?.waitMs)/1e3),i),e})();if(e===`background-exit`){let e=t.data?.failed===!0,n=Math.round(Number(t.data?.durationMs??0)/1e3);return(()=>{var r=Fd();return L(r,`divider-msg`+(e?` err`:``)),R(r,()=>(e?`⚠ background job `:`✓ background job `)+String(t.data?.jobId??`?`)+` `+(e?`FAILED (exit ${String(t.data?.code??`?`)})`:`finished (${n}s)`)),y(()=>I(r,`title`,String(t.data?.cmd??``))),r})()}return e===`context-compacted`?(()=>{var e=Zd(),n=e.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(e,()=>String(t.data?.tokensBefore??`?`),n),R(e,()=>String(t.data?.tokensAfter??`?`),r),R(e,()=>String(t.data?.mode??``),i),e})():e===`context-compaction-started`?(()=>{var e=Qd(),n=e.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(e,()=>String(t.data?.messages??`?`),n),R(e,()=>String(t.data?.tokensBefore??`?`),r),R(e,()=>String(t.data?.reason??`auto`),i),e})():null}return(()=>{var i=nf(),a=i.firstChild,o=a.nextSibling;return L(a,`avatar avghost`+(r?` ghosted`:``)),R(a,()=>r?``:n.icon),R(o,r&&(()=>{var e=rf();return y(()=>I(e,`title`,`${Ep(t.ts)} · ${t.branch}`)),e})(),null),R(o,M(N,{when:!r,get children(){var r=tf(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling;return R(i,()=>n.name),R(r,M(N,{get when(){return t.data?.actor},get children(){var e=Ud();return e.firstChild,R(e,()=>String(t.data.actor),null),e}}),a),R(a,(()=>{var e=P(()=>!!t.data?.pending);return()=>e()?`queued…`:P(()=>!!t.data?.cancelled)()?`withdrawn`:Ep(t.ts)})()),R(o,()=>t.branch),R(r,M(N,{get when(){return e.onCancel},get children(){var t=$d();return t.$$click=t=>{t.stopPropagation(),e.onCancel()},t}}),null),R(r,M(N,{get when(){return t.type!==`tool_call`},get children(){return M(Up,{get text(){return Np(t)},label:`⧉ copy`,title:`copy the RAW text of this message (no markdown rendering)`})}}),null),R(r,M(N,{get when(){return e.onEdit},get children(){var t=ef();return t.$$click=t=>{t.stopPropagation(),e.onEdit()},t}}),null),y(e=>De(i,`color`,n.color)),r}}),null),R(o,M(Ip,{e:t,get res(){return e.res},get orphan(){return e.orphan},get onOption(){return e.onOption},get answeredIds(){return e.answeredIds},get onAnswered(){return e.onAnswered},get agentActive(){return e.agentActive},get onResize(){return e.onResize}}),null),y(e=>{var o=`msg`+(r?` grouped`:``)+(t.data?.pending?` pending`:``)+(t.data?.cancelled?` withdrawn`:``),s=t.id,c=r?`transparent`:n.color+`33`,l=r?`1px solid transparent`:`1px solid ${n.color}66`,u=r?`${Ep(t.ts)} · ${t.branch}`:void 0;return o!==e.e&&L(i,e.e=o),s!==e.t&&I(i,`data-eid`,e.t=s),c!==e.a&&De(a,`background`,e.a=c),l!==e.o&&De(a,`border`,e.o=l),u!==e.i&&I(a,`title`,e.i=u),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})()}function Fp(e){let[t,n]=v(``),r=()=>{let r=t().trim();!r||e.answered||(n(``),e.onOption?.(r))};return(()=>{var i=af(),a=i.firstChild,o=a.nextSibling;return a.$$keydown=e=>{e.key===`Enter`&&!e.isComposing&&(e.preventDefault(),r())},a.$$input=e=>n(e.currentTarget.value),o.$$click=r,y(n=>{var r=e.answered?`answered`:`or type your own answer…`,i=e.answered,s=e.answered||!t().trim();return r!==n.e&&I(a,`placeholder`,n.e=r),i!==n.t&&(a.disabled=n.t=i),s!==n.a&&(o.disabled=n.a=s),n},{e:void 0,t:void 0,a:void 0}),y(()=>a.value=t()),i})()}function Ip(e){let t=e.e;switch(t.type){case`prompt`:{let e=t.data?.images??[];return[(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.text??``))),e})(),M(N,{get when(){return e.length},get children(){var t=of();return R(t,M(ye,{each:e,children:e=>(()=>{var t=sf();return I(t,`src`,e),t})()})),t}})]}case`message`:return[M(N,{get when(){return P(()=>typeof t.data.reasoning==`string`)()&&t.data.reasoning.trim()},get children(){var e=cf(),n=e.firstChild;n.firstChild;var r=n.nextSibling;return R(n,(()=>{var e=P(()=>String(t.data.reasoning).length>4e3);return()=>e()?` (${zp(String(t.data.reasoning).length)} — truncated)`:``})(),null),R(r,()=>Lp(String(t.data.reasoning),8e3)),e}}),(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.content??``))),e})(),M(N,{get when(){return t.data.interrupted},get children(){return lf()}}),M(N,{get when(){return t.data.final},get children(){var e=uf(),n=e.firstChild;return R(e,M(Up,{get text(){return String(t.data.content??``)}}),n),e}})];case`tool_call`:return M(Mp,{e:t,get res(){return e.res},get orphan(){return e.orphan},get agentActive(){return e.agentActive},get onResize(){return e.onResize}});case`tool_result`:{let n=String(t.data.result??``),r=String(t.data.name??`tool`),i=t.data.ok!==!1;return(()=>{var a=ff(),o=a.firstChild,s=o.firstChild.nextSibling,c=o.nextSibling,l=c.nextSibling;return L(a,`embed `+(i?``:`fail`)),R(s,r===`bash`?`$ (bash, call evicted)`:r),R(o,M(Up,{text:n}),null),R(c,()=>Lp(n,4e3)),R(l,()=>Ve(t.data.durationMs),null),R(l,()=>r===`bash`?vt(_t(t.data.ok,n)):i?``:` · FAILED`,null),R(a,M(N,{get when(){return e.orphan},get children(){return df()}}),null),y(()=>a.open=e.orphan),a})()}case`decision`:{let e=Array.isArray(t.data?.alternatives)?t.data.alternatives:[];return(()=>{var n=mf(),r=n.firstChild,i=r.firstChild.firstChild.nextSibling,a=r.nextSibling;return R(n,M(N,{get when(){return e.length},get children(){var t=pf();return t.firstChild,R(t,()=>e.join(` / `),null),t}}),null),y(e=>{var n=fp(String(t.data?.decision??``)),r=fp(String(t.data?.rationale??``));return n!==e.e&&(i.innerHTML=e.e=n),r!==e.t&&(a.innerHTML=e.t=r),e},{e:void 0,t:void 0}),n})()}case`question`:{let n=Array.isArray(t.data?.options)?t.data.options:[],r=t.data?.callId?String(t.data.callId):``,i=()=>e.answeredIds?.().has(r)??!1;return(()=>{var a=_f(),o=a.firstChild.firstChild.nextSibling;return R(a,M(N,{get when(){return i()},get children(){return hf()}}),null),R(a,M(N,{get when(){return n.length>0},get children(){var a=gf();return R(a,M(ye,{each:n,children:n=>(()=>{var a=vf();return a.$$click=()=>{e.onAnswered?.(r);let i=t.data?.actor;i?$(`/api/agents/${encodeURIComponent(String(i))}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:n,start:!0})}).then(()=>Q(`→ answered @${String(t.data.actor)}`)).catch(()=>Q(`answer failed`)):e.onOption?.(n)},R(a,n),y(()=>a.disabled=i()),a})()})),a}}),null),R(a,M(Fp,{get answered(){return i()},get onOption(){return e.onOption}}),null),y(e=>{var n=`embed question`+(i()?` answered`:``),r=fp(String(t.data?.question??``));return n!==e.e&&L(a,e.e=n),r!==e.t&&(o.innerHTML=e.t=r),e},{e:void 0,t:void 0}),a})()}case`progress`:return(()=>{var e=yf(),n=e.firstChild.firstChild.nextSibling;return R(e,M(N,{get when(){return t.data.goalStatus},get children(){var e=nd(),n=e.firstChild.nextSibling;return R(n,()=>String(t.data.goalStatus)),e}}),null),R(e,M(N,{get when(){return t.data.recent},get children(){var e=$u(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.recent))),e}}),null),R(e,M(N,{get when(){return t.data.problems},get children(){var e=ed(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.problems))),e}}),null),R(e,M(N,{get when(){return t.data.next},get children(){var e=td(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.next))),e}}),null),y(()=>n.innerHTML=fp(String(t.data.doing??``))),e})();case`error`:return(()=>{var e=bf(),n=e.firstChild;return n.firstChild,R(n,()=>String(t.data.message??``),null),e})();case`compaction`:return(()=>{var e=Sf(),n=e.firstChild.firstChild.nextSibling,r=n.firstChild,i=r.nextSibling,a=i.nextSibling.nextSibling;return a.nextSibling,R(n,()=>String(t.data.mode??``),r),R(n,()=>zp(Number(t.data.tokensBefore??0)),i),R(n,()=>zp(Number(t.data.tokensAfter??0)),a),R(n,(()=>{var e=P(()=>!!t.data.summarized);return()=>e()?`${t.data.summarized} summarized`:`${t.data.dropped} dropped`})(),null),R(e,M(N,{get when(){return t.data.summary},get children(){return[xf(),(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.summary))),e})()]}}),null),e})();default:return(()=>{var e=Cf();return R(e,()=>Lp(JSON.stringify(t.data),200)),e})()}}function Lp(e,t){return e.length>t?e.slice(0,t)+` …`:e}function Rp(e){let t=new Date(e).getTime()-Date.now(),n=Math.abs(t),r=n<9e4?`${Math.round(n/1e3)}s`:n<54e5?`${Math.round(n/6e4)}m`:`${(n/36e5).toFixed(1)}h`;return t>=0?`in ${r}`:`${r} ago`}function zp(e){return e>=1e9?`${+(e/1e9).toFixed(1)}b`:e>=1e6?`${+(e/1e6).toFixed(1)}m`:e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Bp(e){return e>=100?Math.round(e).toLocaleString():e>=10?e.toFixed(1):e>=1?e.toFixed(2):e>=.01?e.toFixed(3):e.toFixed(4)}function Vp(e,t){return Lp(e.replace(/\s+/g,` `).trim(),t)}function Hp(e){return(()=>{var t=wf(),n=t.firstChild;return Te(t,`click`,e.onClick,!0),R(n,()=>e.icon),y(n=>{var r=`iconbtn`+(e.active?` active`:``)+(e.class?` `+e.class:``),i=e.title,a=e.style;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n.a=Ee(t,a,n.a),n},{e:void 0,t:void 0,a:void 0}),t})()}function Up(e){let[t,n]=v(!1),[r,i]=v(!1),a=t=>{t.preventDefault(),t.stopPropagation(),dt(e.text??``).then(e=>{if(e===`unsupported`||e===`failed`){i(!0),setTimeout(()=>i(!1),1200);return}n(!0),setTimeout(()=>n(!1),900)})};return(()=>{var n=Tf();return n.$$click=a,R(n,(()=>{var n=P(()=>!!t());return()=>n()?`✓`:P(()=>!!r())()?`✗`:e.label??`⧉`})()),y(()=>I(n,`title`,e.title??`copy to clipboard`)),n})()}function Wp(e){return(()=>{var t=Ef(),n=t.firstChild,r=n.firstChild.firstChild,i=r.nextSibling;return t.$$click=t=>t.target===t.currentTarget&&e.onClose(),R(r,()=>e.title),Te(i,`click`,e.onClose,!0),R(n,()=>e.children,null),t})()}function Gp(e){let[t,n]=v(`~`),[r,i]=v([]),[a,o]=v(``),[s,c]=v(e.providers[0]??``),[l,u]=v(``),[d,f]=v(``);async function p(e){let r=await $(`/api/fs?path=${encodeURIComponent(e??t())}`);n(r.path),h(r.parent??``),i(r.entries??[])}C(()=>p(t()));let[m,h]=v(``),g=async n=>{n.preventDefault(),f(``);try{let n=await $(`/api/agents`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({workspace:t(),id:a(),provider:s()||void 0,model:l()||void 0,start:!1})});e.onCreated(n.agent.id)}catch(e){f(String(e.message))}};return M(Wp,{title:`new agent`,get onClose(){return e.onClose},get children(){var i=Of(),f=i.firstChild,h=f.firstChild.nextSibling.firstChild,_=h.nextSibling,v=_.nextSibling,b=f.nextSibling,x=b.nextSibling,S=x.firstChild,C=S.firstChild.nextSibling,w=S.nextSibling,ee=w.firstChild.nextSibling,te=w.nextSibling.firstChild.nextSibling,T=x.nextSibling;return i.addEventListener(`submit`,g),h.$$input=e=>n(e.currentTarget.value),_.$$click=()=>p(t()),v.$$click=()=>m()?p(m()):p(`..`),R(b,M(ye,{get each(){return r()},children:e=>(()=>{var n=kf();return n.firstChild,n.$$click=()=>p(`${t()}/${e}`.replace(/\/+/g,`/`)),R(n,e,null),n})()})),C.$$input=e=>o(e.currentTarget.value),ee.addEventListener(`change`,e=>c(e.currentTarget.value)),R(ee,M(ye,{get each(){return e.providers},children:e=>(()=>{var t=cu();return R(t,e),t})()})),te.$$input=e=>u(e.currentTarget.value),R(i,M(N,{get when(){return d()},get children(){var e=Df();return R(e,d),e}}),T),y(()=>h.value=t()),y(()=>C.value=a()),y(()=>ee.value=s()),y(()=>te.value=l()),i}})}var Kp=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`,`bmp`,`ico`,`avif`]),qp=new Set([`mp4`,`webm`,`mov`,`mkv`,`avi`,`m4v`]),Jp=new Set([`mp3`,`wav`,`ogg`,`m4a`,`flac`,`aac`,`opus`]);function Yp(e){let t=e.split(`.`).pop()?.toLowerCase()??``,n=Xp(e);return n===`image`?`🖼`:n===`video`?`🎬`:n===`audio`?`🎵`:[`ts`,`tsx`,`mts`,`cts`].includes(t)?`🟦`:[`js`,`mjs`,`cjs`,`jsx`].includes(t)?`🟨`:t===`json`||t===`jsonc`?`🧾`:t===`md`||t===`mdx`||t===`markdown`?`📝`:t===`css`||t===`scss`||t===`less`?`🎨`:t===`html`||t===`htm`||t===`svg`?`🌐`:[`py`,`pyi`].includes(t)?`🐍`:t===`rs`?`🦀`:t===`go`?`🐹`:t===`java`||t===`kt`||t===`kts`?`☕`:t===`rb`?`💎`:t===`php`?`🐘`:t===`c`||t===`h`||t===`cpp`||t===`hpp`||t===`cc`?`🧩`:t===`sh`||t===`bash`||t===`zsh`||t===`fish`?`🐚`:t===`sql`?`🗄`:t===`yml`||t===`yaml`||t===`toml`||t===`ini`||t===`conf`?`⚙`:t===`lock`?`🔒`:e===`Dockerfile`||t===`dockerfile`?`🐳`:t===`zip`||t===`gz`||t===`tar`||t===`tgz`||t===`bz2`?`📦`:t===`pdf`?`📕`:t===`txt`||t===`log`?`📄`:`·`}function Xp(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return Kp.has(t)?`image`:qp.has(t)?`video`:Jp.has(t)?`audio`:null}var Zp=new Map,Qp=e=>{let t=Zp.get(e);return t||(t={expanded:new Set,preview:null,media:null,viewMode:`code`},Zp.set(e,t)),t};function $p(e){return M(N,{get when(){return e.viewMode},get fallback(){return(()=>{var t=jf();return y(()=>t.innerHTML=fp(e.draft)),t})()},get children(){var t=Af();return t.$$input=t=>e.onDraft(t.currentTarget.value),y(()=>t.value=e.draft),t}})}function em(e){let t=Qp(e.agentId),[n,r]=v(new Map),[i,a]=v(t.expanded),[o,s]=v(t.preview),c=e=>{t.preview=e,s(e)},l=e=>{t.expanded=e,a(e)},[u,d]=v(t.media),f=e=>{t.media=e,d(e)},[p,m]=v(t.viewMode),h=e=>{t.viewMode=e,m(e)},[g,_]=v(``),[x,S]=v(localStorage.getItem(`teapot.ignoreMode`)??`dim`),C=()=>{let e=[`dim`,`hide`,`show`],t=e[(e.indexOf(x())+1)%3];S(t),localStorage.setItem(`teapot.ignoreMode`,t)},ee=e=>x()!==`hide`||!e.ignored,[te,T]=v(localStorage.getItem(`teapot.showHidden`)===`1`),ne=()=>{let e=!te(),t=[``,...i()];Promise.all(t.map(async t=>({p:t,rows:await O(t,e)}))).then(t=>{T(e),localStorage.setItem(`teapot.showHidden`,e?`1`:`0`);for(let{p:e,rows:n}of t)n&&re(e,n)})},E=(e,t)=>t.map(t=>({name:String(t.name),path:e?`${e}/${t.name}`:String(t.name),dir:!!t.dir,...typeof t.size==`number`?{size:t.size}:{},...t.ignored?{ignored:!0}:{}}));async function D(e){return O(e,te())}async function O(t,n){try{let r=new URLSearchParams;t&&r.set(`path`,t),n&&r.set(`hidden`,`1`);let i=await $(`/api/agents/${e.agentId}/tree?${r.toString()}`);return E(t,i.entries??[])}catch(e){return _(e.message),null}}let re=(e,n)=>r(r=>{let i=r.get(e);if(!i)return new Map(r).set(e,n);let a=i.map(e=>{let t=n.find(t=>t.path===e.path);return t&&t.dir===e.dir&&t.size===e.size&&t.ignored===e.ignored&&t.name===e.name?e:t??e});for(let e of n)i.some(t=>t.path===e.path)||a.push(e);let o=a.filter(e=>n.some(t=>t.path===e.path)||t.preview?.path===e.path),s=new Map(r);return s.set(e,o),s}),k=``;b(()=>{let t=e.agentId;t!==k&&(k=t,l(new Set),c(null),f(null),r(new Map),D(``).then(e=>{e&&k===t&&r(new Map([[``,e]]))}))});let ie=async e=>{let t=new Set(i());if(t.has(e.path)){t.delete(e.path),l(t);return}if(t.add(e.path),l(t),!n().has(e.path)){let t=await D(e.path);t&&re(e.path,t)}},[ae,oe]=v(``),[se,ce]=v(!1),[A,le]=v(``),[j,ue]=v(!1),de=e=>/\.(md|markdown|mdx)$/i.test(e),fe=0,pe=async e=>{let t=++fe;oe(``),ce(!0);try{let{highlightChunks:n}=await hl(async()=>{let{highlightChunks:e}=await import(`./shiki-rj6mePzJ.js`);return{highlightChunks:e}},[]);for await(let r of n(e.path,e.content)){if(fe!==t)return;oe(e=>e+r)}}catch{fe===t&&oe(``)}finally{fe===t&&ce(!1)}};w(()=>{fe++});let me=async(t,n)=>{let r=Xp(t.path);if(r){c({path:t.path,content:``,binary:!0}),f({path:t.path,kind:r}),h(`media`);return}try{let r=await $(`/api/agents/${e.agentId}/file?path=${encodeURIComponent(t.path)}`);f(null),c({path:t.path,content:r.content??``,binary:r.binary,truncated:r.truncated}),le(r.content??``),h(r.binary?`code`:n),!r.binary&&n!==`md`&&pe({path:t.path,content:r.content??``,truncated:r.truncated})}catch(e){Q(`open failed: ${e.message}`)}},he=async()=>{let t=o();if(!(!t||j())){ue(!0);try{await $(`/api/agents/${e.agentId}/file?path=${encodeURIComponent(t.path)}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({content:A(),baseContent:t.content})}),c({...t,content:A()}),Q(`saved ${t.path}`)}catch(e){let n=e.payload,r=n&&typeof n==`object`&&n.error===`file changed on disk`?n:null;r?.current===void 0?Q(`save failed: ${e.message}`):confirm(`This file changed on disk since you opened it.
27
+ `)[0]??``,140),null),R(e,()=>n.data?.ok===!1?` · FAILED`:``,null),e})():Ld()];break}case`list_dir`:s=u(`path`)||`.`,l=m(4e3);break;case`read_url`:{let e=u(`url`);try{let t=new URL(e);e=t.host+t.pathname}catch{}s=Vp(e,70),c=`web`,l=[(()=>{var e=wd();return R(e,M(N,{get when(){return/^https?:/i.test(u(`url`))},get fallback(){return(()=>{var e=zd();return R(e,()=>Vp(u(`url`),80)),e})()},get children(){var e=Rd();return y(()=>I(e,`href`,u(`url`))),e}})),e})(),P(()=>m(3e3))];break}case`bash_output`:{let e=u(`action`)||`read`;s=`bash_output ${u(`job_id`)||`(?)`}`,c=e,l=m(4e3);break}case`load_skill`:{s=`skill: ${u(`name`)}`;let e=o().replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/,``);l=n?[(()=>{var t=kl();return y(()=>t.innerHTML=Ie(e)),t})(),(()=>{var e=wd();return R(e,()=>Ve(n.data?.durationMs)),e})()]:Bd();break}case`save_skill`:{s=`skill: ${u(`name`)}`,c=Vp(u(`description`),60);let e=Array.isArray(i.args?.files)?i.args.files.map(e=>e?.name).filter(Boolean):[];l=[P(()=>P(()=>!!e.length)()?(()=>{var t=Vd();return t.firstChild,R(t,()=>e.join(`, `),null),t})():null),n?(()=>{var e=Md(),t=e.firstChild;return R(e,()=>Vp(o(),160),t),R(e,()=>Ve(n.data?.durationMs),null),e})():Hd()];break}}}catch{}return(()=>{var i=Wd(),u=i.firstChild,p=u.firstChild;p.firstChild;var m=p.nextSibling,h=m.nextSibling;return i.addEventListener(`toggle`,t=>{t.target.open&&e.onResize?.()}),I(i,`title`,`${a}${c?` — `+c:``}`),R(p,s,null),R(u,M(N,{get when(){return t.data?.actor},get children(){var e=Ud();return e.firstChild,R(e,()=>String(t.data.actor),null),e}}),m),R(m,()=>n?c||``:r?`(result missed)`:a===`bash`||f()?M(Ap,{get startedAt(){return t.ts},inline:!0,get timeoutMs(){return f()}}):`running…`),R(h,M(Up,{get text(){return d()},label:`⧉ cmd`,title:`copy the ${a} arguments`}),null),R(h,M(N,{when:n,get children(){return M(Up,{get text(){return o()},label:`⧉ out`,title:`copy this tool's full output`})}}),null),R(i,l,null),y(()=>L(i,`embed`+(n?n.data?.ok===!1?` fail`:` done`:r?` done`:` running`))),i})()}function Np(e){let t=e.data??{};return e.type===`prompt`?String(t.text??``):e.type===`message`?`${typeof t.reasoning==`string`&&t.reasoning.trim()?`<reasoning>\n${t.reasoning}\n</reasoning>\n\n`:``}${String(t.content??``)}`:(e.type,``)}function Pp(e){let t=e.e,n=Cp(t),r=mt(e.prev,t);if(t.type===`fork`){let e=t.data??{};return(()=>{var n=Gd(),r=n.firstChild.nextSibling;return r.nextSibling,R(n,()=>String(e.fromBranch??`?`),r),R(n,()=>String(e.newBranch??t.branch),null),n})()}if(t.type===`goal`){let e=nt(t.data??{});return(()=>{var t=Kd(),n=t.firstChild;return R(n,()=>e.label),R(t,M(N,{get when(){return e.hasCard},get children(){var t=Fd();return y(n=>{var r=`card `+(e.tone===`ok`?`auditcard ok`:e.tone===`warn`?`auditcard`:`verifycard`),i=e.markdown?Ie(e.detail):Ie(`\`\`\`\n${e.detail}\n\`\`\``);return r!==n.e&&L(t,n.e=r),i!==n.t&&(t.innerHTML=n.t=i),n},{e:void 0,t:void 0}),t}}),null),y(()=>L(t,`goalline `+(e.tone===`err`?`err`:e.tone===`warn`?`warn`:``))),t})()}if(t.type===`todo`)return(()=>{var e=qd(),n=e.firstChild.nextSibling;return n.nextSibling,R(e,()=>String(t.data?.by??`human`),n),e})();if(t.type===`state`)return t.data.from===t.data.to?null:(()=>{var e=Jd(),n=e.firstChild;return R(e,()=>t.data.from,n),R(e,()=>t.data.to,null),R(e,(()=>{var e=P(()=>!!t.data.reason);return()=>e()?` — ${t.data.reason}`:``})(),null),y(()=>L(e,`divider-msg`+(t.data.to===`error`?` err`:``))),e})();if(t.type===`system_note`){let e=String(t.data?.event??``);if(e===`runaway-detected`)return(()=>{var e=Yd(),n=e.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,R(n,()=>String(t.data?.failures),r),R(n,()=>String(t.data?.limit),i),R(a,()=>String(t.data?.lastTool),o),R(a,()=>String(t.data?.lastError??``).slice(0,200),null),y(()=>I(e,`title`,`${t.data?.failures} consecutive tool failures hit the configured limit (${t.data?.limit})`)),e})();if(e===`error-retry`)return(()=>{var e=Xd(),n=e.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(n,()=>String(t.data?.attempt),r),R(n,()=>Math.round(Number(t.data?.waitMs)/1e3),i),e})();if(e===`background-exit`){let e=t.data?.failed===!0,n=Math.round(Number(t.data?.durationMs??0)/1e3);return(()=>{var r=Fd();return L(r,`divider-msg`+(e?` err`:``)),R(r,()=>(e?`⚠ background job `:`✓ background job `)+String(t.data?.jobId??`?`)+` `+(e?`FAILED (exit ${String(t.data?.code??`?`)})`:`finished (${n}s)`)),y(()=>I(r,`title`,String(t.data?.cmd??``))),r})()}return e===`context-compacted`?(()=>{var e=Zd(),n=e.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(e,()=>String(t.data?.tokensBefore??`?`),n),R(e,()=>String(t.data?.tokensAfter??`?`),r),R(e,()=>String(t.data?.mode??``),i),e})():e===`context-compaction-started`?(()=>{var e=Qd(),n=e.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,R(e,()=>String(t.data?.messages??`?`),n),R(e,()=>String(t.data?.tokensBefore??`?`),r),R(e,()=>String(t.data?.reason??`auto`),i),e})():null}return(()=>{var i=nf(),a=i.firstChild,o=a.nextSibling;return L(a,`avatar avghost`+(r?` ghosted`:``)),R(a,()=>r?``:n.icon),R(o,r&&(()=>{var e=rf();return y(()=>I(e,`title`,`${Ep(t.ts)} · ${t.branch}`)),e})(),null),R(o,M(N,{when:!r,get children(){var r=tf(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling;return R(i,()=>n.name),R(r,M(N,{get when(){return t.data?.actor},get children(){var e=Ud();return e.firstChild,R(e,()=>String(t.data.actor),null),e}}),a),R(a,(()=>{var e=P(()=>!!t.data?.pending);return()=>e()?`queued…`:P(()=>!!t.data?.cancelled)()?`withdrawn`:Ep(t.ts)})()),R(o,()=>t.branch),R(r,M(N,{get when(){return e.onCancel},get children(){var t=$d();return t.$$click=t=>{t.stopPropagation(),e.onCancel()},t}}),null),R(r,M(N,{get when(){return t.type!==`tool_call`},get children(){return M(Up,{get text(){return Np(t)},label:`⧉ copy`,title:`copy the RAW text of this message (no markdown rendering)`})}}),null),R(r,M(N,{get when(){return e.onEdit},get children(){var t=ef();return t.$$click=t=>{t.stopPropagation(),e.onEdit()},t}}),null),y(e=>De(i,`color`,n.color)),r}}),null),R(o,M(Ip,{e:t,get res(){return e.res},get orphan(){return e.orphan},get onOption(){return e.onOption},get answeredIds(){return e.answeredIds},get onAnswered(){return e.onAnswered},get agentActive(){return e.agentActive},get onResize(){return e.onResize}}),null),y(e=>{var o=`msg`+(r?` grouped`:``)+(t.data?.pending?` pending`:``)+(t.data?.cancelled?` withdrawn`:``),s=t.id,c=r?`transparent`:n.color+`33`,l=r?`1px solid transparent`:`1px solid ${n.color}66`,u=r?`${Ep(t.ts)} · ${t.branch}`:void 0;return o!==e.e&&L(i,e.e=o),s!==e.t&&I(i,`data-eid`,e.t=s),c!==e.a&&De(a,`background`,e.a=c),l!==e.o&&De(a,`border`,e.o=l),u!==e.i&&I(a,`title`,e.i=u),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})()}function Fp(e){let[t,n]=v(``),r=()=>{let r=t().trim();!r||e.answered||(n(``),e.onOption?.(r))};return(()=>{var i=af(),a=i.firstChild,o=a.nextSibling;return a.$$keydown=e=>{e.key===`Enter`&&!e.isComposing&&(e.preventDefault(),r())},a.$$input=e=>n(e.currentTarget.value),o.$$click=r,y(n=>{var r=e.answered?`answered`:`or type your own answer…`,i=e.answered,s=e.answered||!t().trim();return r!==n.e&&I(a,`placeholder`,n.e=r),i!==n.t&&(a.disabled=n.t=i),s!==n.a&&(o.disabled=n.a=s),n},{e:void 0,t:void 0,a:void 0}),y(()=>a.value=t()),i})()}function Ip(e){let t=e.e;switch(t.type){case`prompt`:{let e=t.data?.images??[];return[(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.text??``))),e})(),M(N,{get when(){return e.length},get children(){var t=of();return R(t,M(ye,{each:e,children:e=>(()=>{var t=sf();return I(t,`src`,e),t})()})),t}})]}case`message`:return[M(N,{get when(){return P(()=>typeof t.data.reasoning==`string`)()&&t.data.reasoning.trim()},get children(){var e=cf(),n=e.firstChild;n.firstChild;var r=n.nextSibling;return R(n,(()=>{var e=P(()=>String(t.data.reasoning).length>4e3);return()=>e()?` (${zp(String(t.data.reasoning).length)} — truncated)`:``})(),null),R(r,()=>Lp(String(t.data.reasoning),8e3)),e}}),(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.content??``))),e})(),M(N,{get when(){return t.data.interrupted},get children(){return lf()}}),M(N,{get when(){return t.data.final},get children(){var e=uf(),n=e.firstChild;return R(e,M(Up,{get text(){return String(t.data.content??``)}}),n),e}})];case`tool_call`:return M(Mp,{e:t,get res(){return e.res},get orphan(){return e.orphan},get agentActive(){return e.agentActive},get onResize(){return e.onResize}});case`tool_result`:{let n=String(t.data.result??``),r=String(t.data.name??`tool`),i=t.data.ok!==!1;return(()=>{var a=ff(),o=a.firstChild,s=o.firstChild.nextSibling,c=o.nextSibling,l=c.nextSibling;return L(a,`embed `+(i?``:`fail`)),R(s,r===`bash`?`$ (bash, call evicted)`:r),R(o,M(Up,{text:n}),null),R(c,()=>Lp(n,4e3)),R(l,()=>Ve(t.data.durationMs),null),R(l,()=>r===`bash`?vt(_t(t.data.ok,n)):i?``:` · FAILED`,null),R(a,M(N,{get when(){return e.orphan},get children(){return df()}}),null),y(()=>a.open=e.orphan),a})()}case`decision`:{let e=Array.isArray(t.data?.alternatives)?t.data.alternatives:[];return(()=>{var n=mf(),r=n.firstChild,i=r.firstChild.firstChild.nextSibling,a=r.nextSibling;return R(n,M(N,{get when(){return e.length},get children(){var t=pf();return t.firstChild,R(t,()=>e.join(` / `),null),t}}),null),y(e=>{var n=fp(String(t.data?.decision??``)),r=fp(String(t.data?.rationale??``));return n!==e.e&&(i.innerHTML=e.e=n),r!==e.t&&(a.innerHTML=e.t=r),e},{e:void 0,t:void 0}),n})()}case`question`:{let n=Array.isArray(t.data?.options)?t.data.options:[],r=t.data?.callId?String(t.data.callId):``,i=()=>e.answeredIds?.().has(r)??!1;return(()=>{var a=_f(),o=a.firstChild.firstChild.nextSibling;return R(a,M(N,{get when(){return i()},get children(){return hf()}}),null),R(a,M(N,{get when(){return n.length>0},get children(){var a=gf();return R(a,M(ye,{each:n,children:n=>(()=>{var a=vf();return a.$$click=()=>{e.onAnswered?.(r);let i=t.data?.actor;i?$(`/api/agents/${encodeURIComponent(String(i))}/prompt`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:n,start:!0})}).then(()=>Q(`→ answered @${String(t.data.actor)}`)).catch(()=>Q(`answer failed`)):e.onOption?.(n)},R(a,n),y(()=>a.disabled=i()),a})()})),a}}),null),R(a,M(Fp,{get answered(){return i()},get onOption(){return e.onOption}}),null),y(e=>{var n=`embed question`+(i()?` answered`:``),r=fp(String(t.data?.question??``));return n!==e.e&&L(a,e.e=n),r!==e.t&&(o.innerHTML=e.t=r),e},{e:void 0,t:void 0}),a})()}case`progress`:return(()=>{var e=yf(),n=e.firstChild.firstChild.nextSibling;return R(e,M(N,{get when(){return t.data.goalStatus},get children(){var e=nd(),n=e.firstChild.nextSibling;return R(n,()=>String(t.data.goalStatus)),e}}),null),R(e,M(N,{get when(){return t.data.recent},get children(){var e=$u(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.recent))),e}}),null),R(e,M(N,{get when(){return t.data.problems},get children(){var e=ed(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.problems))),e}}),null),R(e,M(N,{get when(){return t.data.next},get children(){var e=td(),n=e.firstChild.nextSibling;return y(()=>n.innerHTML=fp(String(t.data.next))),e}}),null),y(()=>n.innerHTML=fp(String(t.data.doing??``))),e})();case`error`:return(()=>{var e=bf(),n=e.firstChild;return n.firstChild,R(n,()=>String(t.data.message??``),null),e})();case`compaction`:return(()=>{var e=Sf(),n=e.firstChild.firstChild.nextSibling,r=n.firstChild,i=r.nextSibling,a=i.nextSibling.nextSibling;return a.nextSibling,R(n,()=>String(t.data.mode??``),r),R(n,()=>zp(Number(t.data.tokensBefore??0)),i),R(n,()=>zp(Number(t.data.tokensAfter??0)),a),R(n,(()=>{var e=P(()=>!!t.data.summarized);return()=>e()?`${t.data.summarized} summarized`:`${t.data.dropped} dropped`})(),null),R(e,M(N,{get when(){return t.data.summary},get children(){return[xf(),(()=>{var e=kl();return y(()=>e.innerHTML=fp(String(t.data.summary))),e})()]}}),null),e})();default:return(()=>{var e=Cf();return R(e,()=>Lp(JSON.stringify(t.data),200)),e})()}}function Lp(e,t){return e.length>t?e.slice(0,t)+` …`:e}function Rp(e){let t=new Date(e).getTime()-Date.now(),n=Math.abs(t),r=n<9e4?`${Math.round(n/1e3)}s`:n<54e5?`${Math.round(n/6e4)}m`:`${(n/36e5).toFixed(1)}h`;return t>=0?`in ${r}`:`${r} ago`}function zp(e){return e>=1e9?`${+(e/1e9).toFixed(1)}b`:e>=1e6?`${+(e/1e6).toFixed(1)}m`:e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Bp(e){return e>=100?Math.round(e).toLocaleString():e>=10?e.toFixed(1):e>=1?e.toFixed(2):e>=.01?e.toFixed(3):e.toFixed(4)}function Vp(e,t){return Lp(e.replace(/\s+/g,` `).trim(),t)}function Hp(e){return(()=>{var t=wf(),n=t.firstChild;return Te(t,`click`,e.onClick,!0),R(n,()=>e.icon),y(n=>{var r=`iconbtn`+(e.active?` active`:``)+(e.class?` `+e.class:``),i=e.title,a=e.style;return r!==n.e&&L(t,n.e=r),i!==n.t&&I(t,`title`,n.t=i),n.a=Ee(t,a,n.a),n},{e:void 0,t:void 0,a:void 0}),t})()}function Up(e){let[t,n]=v(!1),[r,i]=v(!1),a=t=>{t.preventDefault(),t.stopPropagation(),dt(e.text??``).then(e=>{if(e===`unsupported`||e===`failed`){i(!0),setTimeout(()=>i(!1),1200);return}n(!0),setTimeout(()=>n(!1),900)})};return(()=>{var n=Tf();return n.$$click=a,R(n,(()=>{var n=P(()=>!!t());return()=>n()?`✓`:P(()=>!!r())()?`✗`:e.label??`⧉`})()),y(()=>I(n,`title`,e.title??`copy to clipboard`)),n})()}function Wp(e){return(()=>{var t=Ef(),n=t.firstChild,r=n.firstChild.firstChild,i=r.nextSibling;return t.$$click=t=>t.target===t.currentTarget&&e.onClose(),R(r,()=>e.title),Te(i,`click`,e.onClose,!0),R(n,()=>e.children,null),t})()}function Gp(e){let[t,n]=v(`~`),[r,i]=v([]),[a,o]=v(``),[s,c]=v(e.providers[0]??``),[l,u]=v(``),[d,f]=v(``);async function p(e){let r=await $(`/api/fs?path=${encodeURIComponent(e??t())}`);n(r.path),h(r.parent??``),i(r.entries??[])}C(()=>p(t()));let[m,h]=v(``),g=async n=>{n.preventDefault(),f(``);try{let n=await $(`/api/agents`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({workspace:t(),id:a(),provider:s()||void 0,model:l()||void 0,start:!1})});e.onCreated(n.agent.id)}catch(e){f(String(e.message))}};return M(Wp,{title:`new agent`,get onClose(){return e.onClose},get children(){var i=Of(),f=i.firstChild,h=f.firstChild.nextSibling.firstChild,_=h.nextSibling,v=_.nextSibling,b=f.nextSibling,x=b.nextSibling,S=x.firstChild,C=S.firstChild.nextSibling,w=S.nextSibling,ee=w.firstChild.nextSibling,te=w.nextSibling.firstChild.nextSibling,T=x.nextSibling;return i.addEventListener(`submit`,g),h.$$input=e=>n(e.currentTarget.value),_.$$click=()=>p(t()),v.$$click=()=>m()?p(m()):p(`..`),R(b,M(ye,{get each(){return r()},children:e=>(()=>{var n=kf();return n.firstChild,n.$$click=()=>p(`${t()}/${e}`.replace(/\/+/g,`/`)),R(n,e,null),n})()})),C.$$input=e=>o(e.currentTarget.value),ee.addEventListener(`change`,e=>c(e.currentTarget.value)),R(ee,M(ye,{get each(){return e.providers},children:e=>(()=>{var t=cu();return R(t,e),t})()})),te.$$input=e=>u(e.currentTarget.value),R(i,M(N,{get when(){return d()},get children(){var e=Df();return R(e,d),e}}),T),y(()=>h.value=t()),y(()=>C.value=a()),y(()=>ee.value=s()),y(()=>te.value=l()),i}})}var Kp=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`,`bmp`,`ico`,`avif`]),qp=new Set([`mp4`,`webm`,`mov`,`mkv`,`avi`,`m4v`]),Jp=new Set([`mp3`,`wav`,`ogg`,`m4a`,`flac`,`aac`,`opus`]);function Yp(e){let t=e.split(`.`).pop()?.toLowerCase()??``,n=Xp(e);return n===`image`?`🖼`:n===`video`?`🎬`:n===`audio`?`🎵`:[`ts`,`tsx`,`mts`,`cts`].includes(t)?`🟦`:[`js`,`mjs`,`cjs`,`jsx`].includes(t)?`🟨`:t===`json`||t===`jsonc`?`🧾`:t===`md`||t===`mdx`||t===`markdown`?`📝`:t===`css`||t===`scss`||t===`less`?`🎨`:t===`html`||t===`htm`||t===`svg`?`🌐`:[`py`,`pyi`].includes(t)?`🐍`:t===`rs`?`🦀`:t===`go`?`🐹`:t===`java`||t===`kt`||t===`kts`?`☕`:t===`rb`?`💎`:t===`php`?`🐘`:t===`c`||t===`h`||t===`cpp`||t===`hpp`||t===`cc`?`🧩`:t===`sh`||t===`bash`||t===`zsh`||t===`fish`?`🐚`:t===`sql`?`🗄`:t===`yml`||t===`yaml`||t===`toml`||t===`ini`||t===`conf`?`⚙`:t===`lock`?`🔒`:e===`Dockerfile`||t===`dockerfile`?`🐳`:t===`zip`||t===`gz`||t===`tar`||t===`tgz`||t===`bz2`?`📦`:t===`pdf`?`📕`:t===`txt`||t===`log`?`📄`:`·`}function Xp(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return Kp.has(t)?`image`:qp.has(t)?`video`:Jp.has(t)?`audio`:null}var Zp=new Map,Qp=e=>{let t=Zp.get(e);return t||(t={expanded:new Set,preview:null,media:null,viewMode:`code`},Zp.set(e,t)),t};function $p(e){return M(N,{get when(){return e.preview},get fallback(){return(()=>{var t=jf();return t.$$input=t=>e.onDraft(t.currentTarget.value),y(()=>t.value=e.draft),t})()},get children(){var t=Af();return y(()=>t.innerHTML=fp(e.draft)),t}})}function em(e){let t=Qp(e.agentId),[n,r]=v(new Map),[i,a]=v(t.expanded),[o,s]=v(t.preview),c=e=>{t.preview=e,s(e)},l=e=>{t.expanded=e,a(e)},[u,d]=v(t.media),f=e=>{t.media=e,d(e)},[p,m]=v(t.viewMode),h=e=>{t.viewMode=e,m(e)},[g,_]=v(``),[x,S]=v(localStorage.getItem(`teapot.ignoreMode`)??`dim`),C=()=>{let e=[`dim`,`hide`,`show`],t=e[(e.indexOf(x())+1)%3];S(t),localStorage.setItem(`teapot.ignoreMode`,t)},ee=e=>x()!==`hide`||!e.ignored,[te,T]=v(localStorage.getItem(`teapot.showHidden`)===`1`),ne=()=>{let e=!te(),t=[``,...i()];Promise.all(t.map(async t=>({p:t,rows:await O(t,e)}))).then(t=>{T(e),localStorage.setItem(`teapot.showHidden`,e?`1`:`0`);for(let{p:e,rows:n}of t)n&&re(e,n)})},E=(e,t)=>t.map(t=>({name:String(t.name),path:e?`${e}/${t.name}`:String(t.name),dir:!!t.dir,...typeof t.size==`number`?{size:t.size}:{},...t.ignored?{ignored:!0}:{}}));async function D(e){return O(e,te())}async function O(t,n){try{let r=new URLSearchParams;t&&r.set(`path`,t),n&&r.set(`hidden`,`1`);let i=await $(`/api/agents/${e.agentId}/tree?${r.toString()}`);return E(t,i.entries??[])}catch(e){return _(e.message),null}}let re=(e,n)=>r(r=>{let i=r.get(e);if(!i)return new Map(r).set(e,n);let a=i.map(e=>{let t=n.find(t=>t.path===e.path);return t&&t.dir===e.dir&&t.size===e.size&&t.ignored===e.ignored&&t.name===e.name?e:t??e});for(let e of n)i.some(t=>t.path===e.path)||a.push(e);let o=a.filter(e=>n.some(t=>t.path===e.path)||t.preview?.path===e.path),s=new Map(r);return s.set(e,o),s}),k=``;b(()=>{let t=e.agentId;t!==k&&(k=t,l(new Set),c(null),f(null),r(new Map),D(``).then(e=>{e&&k===t&&r(new Map([[``,e]]))}))});let ie=async e=>{let t=new Set(i());if(t.has(e.path)){t.delete(e.path),l(t);return}if(t.add(e.path),l(t),!n().has(e.path)){let t=await D(e.path);t&&re(e.path,t)}},[ae,oe]=v(``),[se,ce]=v(!1),[A,le]=v(``),[j,ue]=v(!1),de=e=>/\.(md|markdown|mdx)$/i.test(e),fe=0,pe=async e=>{let t=++fe;oe(``),ce(!0);try{let{highlightChunks:n}=await hl(async()=>{let{highlightChunks:e}=await import(`./shiki-DYylGhua.js`);return{highlightChunks:e}},[]);for await(let r of n(e.path,e.content)){if(fe!==t)return;oe(e=>e+r)}}catch{fe===t&&oe(``)}finally{fe===t&&ce(!1)}};w(()=>{fe++});let me=async(t,n)=>{let r=Xp(t.path);if(r){c({path:t.path,content:``,binary:!0}),f({path:t.path,kind:r}),h(`media`);return}try{let r=await $(`/api/agents/${e.agentId}/file?path=${encodeURIComponent(t.path)}`);f(null),c({path:t.path,content:r.content??``,binary:r.binary,truncated:r.truncated}),le(r.content??``),h(r.binary?`code`:n),!r.binary&&n!==`md`&&pe({path:t.path,content:r.content??``,truncated:r.truncated})}catch(e){Q(`open failed: ${e.message}`)}},he=async()=>{let t=o();if(!(!t||j())){ue(!0);try{await $(`/api/agents/${e.agentId}/file?path=${encodeURIComponent(t.path)}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({content:A(),baseContent:t.content})}),c({...t,content:A()}),Q(`saved ${t.path}`)}catch(e){let n=e.payload,r=n&&typeof n==`object`&&n.error===`file changed on disk`?n:null;r?.current===void 0?Q(`save failed: ${e.message}`):confirm(`This file changed on disk since you opened it.
28
28
  OK = load the disk version into the editor (your edits are discarded)
29
- Cancel = keep editing your copy`)?(le(r.current),c({...t,content:r.current}),Q(`loaded the current file from disk`)):Q(`kept your edits — use Save As via bash to force-write`)}finally{ue(!1)}}},ge=e=>!e.binary&&!e.truncated,_e=(e,t)=>[(()=>{var n=Nf(),r=n.firstChild,a=r.nextSibling;return n.$$click=()=>e.dir?void ie(e):void me(e,`code`),R(r,(()=>{var t=P(()=>!!e.dir);return()=>t()?i().has(e.path)?`▾`:`▸`:Yp(e.name)})()),R(a,()=>e.name),R(n,M(N,{get when(){return P(()=>!e.dir)()&&e.size!==void 0},get children(){var t=Mf();return R(t,()=>zp(e.size)),t}}),null),y(r=>{var i=`filerow`+(e.dir?` isdir`:``)+(e.ignored&&x()===`dim`?` gitignored`:``),a=`padding-left:${t*13+8}px`,o=e.dir?`browse ${e.path}`:`preview ${e.path}`;return i!==r.e&&L(n,r.e=i),r.t=Ee(n,a,r.t),o!==r.a&&I(n,`title`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})(),M(N,{get when(){return P(()=>!!e.dir)()&&i().has(e.path)},get children(){return M(ye,{get each(){return(n().get(e.path)??[]).filter(ee)},children:e=>_e(e,t+1)})}})],ve=()=>e.workspace.split(`/`).filter(Boolean).pop()??e.workspace,[be,xe]=v(!1),Se=async()=>{if(!be()){xe(!0);try{let e=[``,...i()],t=await Promise.all(e.map(async e=>({p:e,rows:await O(e,te())})));for(let{p:e,rows:n}of t)n&&re(e,n)}finally{xe(!1)}}};return[(()=>{var e=Pf(),t=e.firstChild.nextSibling;return t.firstChild,R(t,ve,null),R(e,M(Hp,{class:`filetoggle`,get icon(){return be()?`…`:`⟳`},title:`refresh the tree (root + expanded folders) — open popups are kept`,onClick:()=>void Se()}),null),R(e,M(Hp,{class:`filetoggle`,style:`margin-left:auto`,get icon(){return P(()=>x()===`hide`)()?`🙈`:x()===`dim`?`👁`:`✨`},get title(){return`gitignored files: ${x()} — click to cycle (dim → hidden → shown)`},onClick:C}),null),R(e,M(Hp,{class:`filetoggle`,get icon(){return te()?`◉.`:`○.`},get title(){return te()?`dotfiles shown — click to hide`:`dotfiles hidden — click to show`},onClick:ne}),null),e})(),(()=>{var e=Ff();return R(e,M(N,{get when(){return(n().get(``)??[]).length>0},get fallback(){return(()=>{var e=If();return R(e,()=>g()||`empty workspace`),e})()},get children(){return M(ye,{get each(){return(n().get(``)??[]).filter(ee)},children:e=>_e(e,0)})}})),e})(),M(N,{get when(){return o()},children:t=>M(Wp,{get title(){return`🗂 ${t().path}`},onClose:()=>{fe++,c(null),f(null)},get children(){return M(N,{get when(){return u()},get fallback(){return[(()=>{var e=Vf(),n=e.firstChild;return R(e,M(N,{get when(){return P(()=>!!de(t().path))()&&!t().binary},get children(){var e=zf();return e.$$click=()=>h(`md`),y(()=>L(e,p()===`md`?`on`:``)),e}}),n),n.$$click=()=>{h(`code`),ae()||pe({path:t().path,content:t().content,truncated:t().truncated})},R(e,M(N,{get when(){return ge(t())},get children(){var e=Bf();return e.$$click=()=>h(`edit`),y(()=>L(e,p()===`edit`?`on`:``)),e}}),null),y(()=>L(n,p()===`code`?`on`:``)),e})(),M(N,{get when(){return!t().binary},get fallback(){return Uf()},get children(){return M(N,{get when(){return p()===`edit`},get fallback(){return M(N,{get when(){return P(()=>p()===`md`)()&&de(t().path)},get fallback(){return M(tm,{get path(){return t().path},get content(){return t().content},get html(){return ae()},get pending(){return se()},get truncated(){return!!t().truncated}})},get children(){var e=Wf();return y(()=>e.innerHTML=Ie(t().content)),e}})},get children(){var e=Hf(),n=e.firstChild,r=n.nextSibling.firstChild,i=r.firstChild,a=r.nextSibling;return n.$$input=e=>le(e.currentTarget.value),I(n,`spellcheck`,!1),R(r,()=>zp(A().length),i),a.$$click=()=>void he(),R(a,()=>j()?`saving…`:`💾 save`),y(()=>a.disabled=j()||A()===t().content),y(()=>n.value=A()),e}})}})]},get children(){var t=Rf(),n=t.firstChild,r=n.firstChild;return R(t,M(N,{get when(){return u().kind===`image`},get fallback(){return M(N,{get when(){return u().kind===`video`},get fallback(){return(()=>{var t=Kf();return y(()=>I(t,`src`,`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`)),t})()},get children(){var t=Gf();return y(()=>I(t,`src`,`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`)),t}})},get children(){var t=Lf();return y(n=>{var r=`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`,i=u().path.split(`/`).pop();return r!==n.e&&I(t,`src`,n.e=r),i!==n.t&&I(t,`alt`,n.t=i),n},{e:void 0,t:void 0}),t}}),n),R(n,()=>u().kind,r),t}})}})})]}function tm(e){return[M(N,{get when(){return e.html},get fallback(){return P(()=>!!e.pending)()?(()=>{var t=Yf(),n=t.firstChild.nextSibling;return n.nextSibling,R(t,()=>e.path.split(`/`).pop(),n),t})():(()=>{var t=Xf();return R(t,()=>e.content),t})()},get children(){var t=qf();return y(()=>t.innerHTML=e.html),t}}),M(N,{get when(){return e.truncated},get children(){return Jf()}})]}var nm=[{key:`openrouter`,label:`OpenRouter`,url:`https://openrouter.ai/api/v1`,model:`anthropic/claude-sonnet-4`,hint:`400+ models behind one key — teapot sends app-attribution headers automatically`},{key:`orcarouter`,label:`OrcaRouter`,url:`https://api.orcarouter.ai/v1`,model:`orcarouter/auto`,hint:`zero-markup routing gateway — 'orcarouter/auto' grades each prompt and picks the model`},{key:`openai`,label:`OpenAI`,url:`https://api.openai.com/v1`,model:`gpt-4o-mini`},{key:`llamacpp`,label:`llama.cpp server`,url:`http://localhost:8080/v1`,model:``,hint:`free & local — start it with: llama-server -m ./model.gguf (any model name works)`}],rm={key:`custom`,label:`Custom`,url:``,model:``,hint:`any OpenAI-compatible /v1 endpoint — vLLM, LM Studio, llama.cpp, a company gateway… fill the fields below`};function im(e){let[t,n]=v(nm[0]),[r,i]=v(nm[0].url),[a,o]=v(``),[s,c]=v(nm[0].model),[l,u]=v([]),[d,f]=v(`~/teapot-workspace`),[p,m]=v(``),[h,g]=v(!1),[_,x]=v(``),S=e=>{n(e),e.key!==`custom`&&e.url&&(i(e.url),e.model&&c(e.model))};b(()=>{let e=r().trim(),t=a();if(!/^https?:\/\//.test(e)){u([]);return}let n=setTimeout(async()=>{try{let n=await $(`/api/setup/models?baseUrl=${encodeURIComponent(e)}${t?`&apiKey=${encodeURIComponent(t)}`:``}`);u(n.models??[])}catch{u([])}},600);w(()=>clearTimeout(n))});let C=e=>{let t=l().find(t=>t.id===e.trim());if(!t)return``;let n=[];t.contextLength&&n.push(`ctx ${zp(t.contextLength)} tok`);let r=e=>e===void 0?``:`$${e*1e6>=10?Math.round(e*1e6):+(e*1e6).toFixed(1)}/M`;if(t.pricing){let e=r(t.pricing.prompt),i=r(t.pricing.completion);e&&i?n.push(`${e} in · ${i} out`):(e||i)&&n.push(r(t.pricing.prompt??t.pricing.completion))}return n.join(` · `)},ee=()=>C(s()),te=async t=>{t.preventDefault(),x(``),g(!0);try{await $(`/api/setup`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({baseUrl:r(),apiKey:a()||void 0,model:s(),workspace:d(),...p()?{password:p()}:{}})}),e.onDone()}catch(e){x(e.message),g(!1)}};return(()=>{var e=ep(),n=e.firstChild.firstChild.nextSibling.nextSibling,u=n.firstChild,g=u.nextSibling,v=g.firstChild.nextSibling,b=v.nextSibling,x=g.nextSibling,C=x.firstChild.nextSibling,w=x.nextSibling,T=w.firstChild.nextSibling,ne=T.nextSibling,E=w.nextSibling,D=E.firstChild.nextSibling,O=D.firstChild.nextSibling,re=D.nextSibling.firstChild.nextSibling,k=E.nextSibling;return n.addEventListener(`submit`,te),R(u,()=>[...nm,rm].map(e=>(()=>{var n=tp();return n.$$click=()=>S(e),R(n,()=>e.label),y(r=>{var i=`presetbtn`+(t().key===e.key?` active`:``),a=e.hint||e.url;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})())),R(n,M(N,{get when(){return t().hint},get children(){var e=Zf();return R(e,()=>t().hint),e}}),g),v.$$input=e=>i(e.currentTarget.value),R(b,()=>nm.map(e=>(()=>{var t=cu();return y(()=>t.value=e.url),t})())),C.$$input=e=>o(e.currentTarget.value),T.$$input=e=>c(e.currentTarget.value),R(ne,()=>l().map(e=>(()=>{var t=cu();return y(()=>t.value=e.id),t})())),R(n,M(N,{get when(){return l().length>0},get fallback(){return np()},get children(){var e=$f(),t=e.firstChild;return R(e,()=>l().length,t),R(e,M(N,{get when(){return ee()},get children(){return[` · `,(()=>{var e=Qf();return R(e,ee),e})()]}}),null),e}}),E),O.$$input=e=>f(e.currentTarget.value),re.$$input=e=>m(e.currentTarget.value),R(n,M(N,{get when(){return _()},get children(){var e=Df();return R(e,_),e}}),k),R(k,()=>h()?`saving…`:`finish setup`),y(e=>{var n=t().key===`llamacpp`?`(any name — serves whichever gguf is loaded)`:`(type to filter models from the endpoint)`,r=h();return n!==e.e&&I(T,`placeholder`,e.e=n),r!==e.t&&(k.disabled=e.t=r),e},{e:void 0,t:void 0}),y(()=>v.value=r()),y(()=>C.value=a()),y(()=>T.value=s()),y(()=>O.value=d()),y(()=>re.value=p()),e})()}function am(e){let[t,n]=v(Object.entries(e.cfg.providers??{}).map(([e,t])=>({name:e,baseUrl:t.baseUrl??``,apiKey:t.apiKey??``,model:t.model??``}))),[r,i]=v(e.cfg.defaultProvider??``),a=()=>e.cfg.defaultProvider??``,o=()=>{let e=[...new Set(t().map(e=>e.name.trim()).filter(Boolean))],n=r();return n&&!e.includes(n)&&e.push(n),e},s=()=>{let e=r();return e?t().some(t=>t.name.trim()===e)?``:e:``},[c,l]=v(Math.round((e.cfg.progressIntervalMs??6e5)/6e4)),[u,d]=v(e.cfg.progressMinChars??4e3),[f,p]=v(e.cfg.contextTokenBudget==null?null:Math.round(e.cfg.contextTokenBudget/1e3)),[m,h]=v(e.cfg.contextWindowTokens?Math.round(e.cfg.contextWindowTokens/1e3):0),[g,_]=v(e.cfg.maxSpawnDepth??3),[b,x]=v((e.cfg.tasks??[]).map(e=>({...e}))),[S,C]=v(``),w=()=>(e.cfg.agents??[]).map(e=>e.id),ee=()=>{let e={};for(let n of t()){if(!n.name.trim())return C(`provider name is required`),null;if(n.baseUrl&&!/^https?:\/\//.test(n.baseUrl))return C(`provider ${n.name}: baseUrl must start with http(s)://`),null;e[n.name.trim()]={baseUrl:n.baseUrl,...n.apiKey?{apiKey:n.apiKey}:{},...n.model?{model:n.model}:{}}}return e},te=async t=>{t.preventDefault(),C(``);let n=ee();if(!n)return;let i=b().filter(e=>e.id?.trim()||e.prompt?.trim()).map((e,t)=>({id:e.id?.trim()||`task-${t+1}`,agent:e.agent,schedule:e.schedule,prompt:e.prompt,...e.forked?{forked:!0}:{}}));for(let e of i){if(!e.agent){C(`task "${e.id}": agent is required`);return}if(!e.schedule?.trim()){C(`task "${e.id}": schedule is required`);return}}try{await $(`/api/config`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({providers:n,defaultProvider:r()||void 0,progressIntervalMs:Math.max(1,c())*6e4,progressMinChars:Math.max(100,u()),...f()==null?{}:{contextTokenBudget:Math.max(1,f())*1e3},...m()>0?{contextWindowTokens:m()*1e3}:{},maxSpawnDepth:Math.max(0,g()),tasks:i})}),e.onSaved(),e.onClose()}catch(e){C(e.message)}},T=(e,t,n,r)=>(()=>{var i=rp(),a=i.firstChild;return I(i,`title`,r),R(i,e,a),a.$$input=e=>n(Number(e.currentTarget.value)),a.value=t,i})();return M(Wp,{title:`settings`,get onClose(){return e.onClose},get children(){var v=ap(),ee=v.firstChild,ne=ee.firstChild.nextSibling,E=ne.nextSibling;E.firstChild;var D=E.nextSibling.firstChild.firstChild.nextSibling;D.firstChild;var O=ee.nextSibling,re=O.firstChild.nextSibling,k=re.firstChild,ie=k.firstChild.nextSibling,ae=O.nextSibling,oe=ae.firstChild.nextSibling,se=ae.nextSibling;se.firstChild;var ce=se.nextSibling,A=ce.firstChild.nextSibling.firstChild;A.firstChild;var le=A.nextSibling,j=ce.nextSibling;return v.addEventListener(`submit`,te),R(ee,M(be,{get each(){return t()},children:(e,r)=>(()=>{var i=op(),a=i.firstChild,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling,l=c.nextSibling;return a.$$input=e=>n(t().map((t,n)=>n===r?{...t,name:e.currentTarget.value}:t)),o.$$input=e=>n(t().map((t,n)=>n===r?{...t,baseUrl:e.currentTarget.value}:t)),s.$$input=e=>n(t().map((t,n)=>n===r?{...t,apiKey:e.currentTarget.value}:t)),c.$$input=e=>n(t().map((t,n)=>n===r?{...t,model:e.currentTarget.value}:t)),l.$$click=()=>n(t().filter((e,t)=>t!==r)),y(()=>a.value=e().name),y(()=>o.value=e().baseUrl),y(()=>s.value=e().apiKey),y(()=>c.value=e().model),i})()}),ne),ne.$$click=()=>n([...t(),{name:``,baseUrl:``,apiKey:``,model:``}]),R(E,M(ye,{each:nm,children:e=>(()=>{var a=sp();return a.firstChild,a.$$click=()=>{let a=t().filter(t=>t.name!==e.key);n([...a,{name:e.key,baseUrl:e.url,apiKey:``,model:e.model}]),r()||i(e.key)},R(a,()=>e.label,null),y(()=>I(a,`title`,`fill a ${e.label} row — ${e.url}${e.model?` (model: ${e.model})`:``}`)),a})()}),null),D.addEventListener(`change`,e=>i(e.currentTarget.value)),R(D,M(ye,{get each(){return o()},children:e=>(()=>{var t=cu();return t.value=e,R(t,e),t})()}),null),R(ee,M(N,{get when(){return s()},get children(){var e=ip(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling,r=n.nextSibling.nextSibling;return R(t,s),R(e,()=>s()===a()?` — the dropdown above cannot show it.`:` — it was replaced by your selection.`,n),R(r,s),e}}),null),R(re,()=>T(`progress interval (min)`,c(),e=>l(e),`how often the harness asks for a progress report`),k),R(re,()=>T(`progress min chars`,u(),e=>d(e),`progress prompts wait for this much real output`),k),ie.$$input=e=>p(e.currentTarget.value===``?null:Number(e.currentTarget.value)),R(re,()=>T(`context window (k tok)`,m(),e=>h(e),`model's real window — 0/blank hides the % gauge`),null),R(re,()=>T(`max spawn depth`,g(),e=>_(e),`sub-agent nesting limit (0 = no spawning)`),null),R(ae,M(N,{get when(){return b().length>0},get children(){return M(be,{get each(){return b()},children:(e,t)=>(()=>{var n=cp(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.firstChild,l=s.nextSibling,u=r.nextSibling;return i.$$input=e=>x(b().map((n,r)=>r===t?{...n,id:e.currentTarget.value}:n)),a.$$input=e=>x(b().map((n,r)=>r===t?{...n,agent:e.currentTarget.value}:n)),o.$$input=e=>x(b().map((n,r)=>r===t?{...n,schedule:e.currentTarget.value}:n)),c.addEventListener(`change`,e=>x(b().map((n,r)=>r===t?{...n,forked:e.currentTarget.checked}:n))),l.$$click=()=>x(b().filter((e,n)=>n!==t)),u.$$input=e=>x(b().map((n,r)=>r===t?{...n,prompt:e.currentTarget.value}:n)),y(()=>i.value=e().id),y(()=>a.value=e().agent),y(()=>o.value=e().schedule),y(()=>c.checked=!!e().forked),y(()=>u.value=e().prompt),n})()})}}),oe),oe.$$click=()=>x([...b(),{id:``,agent:w()[0]??``,schedule:`every 30m`,prompt:``}]),R(se,M(ye,{get each(){return e.cfg.agents??[]},children:e=>(()=>{var t=up(),n=t.firstChild,r=n.nextSibling;return R(n,()=>e.id),R(r,()=>e.workspace),R(t,M(N,{get when(){return e.parent},get children(){var t=lp();return t.firstChild,R(t,()=>e.parent,null),t}}),null),t})()}),null),R(A,()=>e.cfg.version??`unknown`,null),le.$$click=async e=>{try{C(``);let t=e.currentTarget;t.disabled=!0,t.textContent=`updating…`;let n=await $(`/api/update/restart`,{method:`POST`});if(!n.ok)throw Error((await n.json()).error??`restart failed`);t.textContent=`restarting…`;let r=!1;for(let e=0;e<90&&!r;e++){await new Promise(e=>setTimeout(e,1e3));try{let e=await $(`/api/version`);e.version&&e.version!==`0.27.1`&&(r=!0,window.location.reload())}catch{}}if(!r)throw Error(`restart timeout — new server did not come up`)}catch(e){C(e.message)}finally{e.currentTarget.disabled=!1,e.currentTarget.textContent=`update & restart`}},R(v,M(N,{get when(){return S()},get children(){var e=Df();return R(e,S),e}}),j),y(()=>D.value=r()),y(()=>ie.value=f()??``),v}})}we([`click`,`pointerdown`,`dblclick`,`input`,`keydown`]),Ce(()=>M(kp,{}),document.getElementById(`root`));export{hl as t};
30
- //# sourceMappingURL=index-amTKCrhX.js.map
29
+ Cancel = keep editing your copy`)?(le(r.current),c({...t,content:r.current}),Q(`loaded the current file from disk`)):Q(`kept your edits — use Save As via bash to force-write`)}finally{ue(!1)}}},ge=e=>!e.binary&&!e.truncated,_e=(e,t)=>[(()=>{var n=Nf(),r=n.firstChild,a=r.nextSibling;return n.$$click=()=>e.dir?void ie(e):void me(e,`code`),R(r,(()=>{var t=P(()=>!!e.dir);return()=>t()?i().has(e.path)?`▾`:`▸`:Yp(e.name)})()),R(a,()=>e.name),R(n,M(N,{get when(){return P(()=>!e.dir)()&&e.size!==void 0},get children(){var t=Mf();return R(t,()=>zp(e.size)),t}}),null),y(r=>{var i=`filerow`+(e.dir?` isdir`:``)+(e.ignored&&x()===`dim`?` gitignored`:``),a=`padding-left:${t*13+8}px`,o=e.dir?`browse ${e.path}`:`preview ${e.path}`;return i!==r.e&&L(n,r.e=i),r.t=Ee(n,a,r.t),o!==r.a&&I(n,`title`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})(),M(N,{get when(){return P(()=>!!e.dir)()&&i().has(e.path)},get children(){return M(ye,{get each(){return(n().get(e.path)??[]).filter(ee)},children:e=>_e(e,t+1)})}})],ve=()=>e.workspace.split(`/`).filter(Boolean).pop()??e.workspace,[be,xe]=v(!1),Se=async()=>{if(!be()){xe(!0);try{let e=[``,...i()],t=await Promise.all(e.map(async e=>({p:e,rows:await O(e,te())})));for(let{p:e,rows:n}of t)n&&re(e,n)}finally{xe(!1)}}};return[(()=>{var e=Pf(),t=e.firstChild.nextSibling;return t.firstChild,R(t,ve,null),R(e,M(Hp,{class:`filetoggle`,get icon(){return be()?`…`:`⟳`},title:`refresh the tree (root + expanded folders) — open popups are kept`,onClick:()=>void Se()}),null),R(e,M(Hp,{class:`filetoggle`,style:`margin-left:auto`,get icon(){return P(()=>x()===`hide`)()?`🙈`:x()===`dim`?`👁`:`✨`},get title(){return`gitignored files: ${x()} — click to cycle (dim → hidden → shown)`},onClick:C}),null),R(e,M(Hp,{class:`filetoggle`,get icon(){return te()?`◉.`:`○.`},get title(){return te()?`dotfiles shown — click to hide`:`dotfiles hidden — click to show`},onClick:ne}),null),e})(),(()=>{var e=Ff();return R(e,M(N,{get when(){return(n().get(``)??[]).length>0},get fallback(){return(()=>{var e=If();return R(e,()=>g()||`empty workspace`),e})()},get children(){return M(ye,{get each(){return(n().get(``)??[]).filter(ee)},children:e=>_e(e,0)})}})),e})(),M(N,{get when(){return o()},children:t=>M(Wp,{get title(){return`🗂 ${t().path}`},onClose:()=>{fe++,c(null),f(null)},get children(){return M(N,{get when(){return u()},get fallback(){return[(()=>{var e=Vf(),n=e.firstChild;return R(e,M(N,{get when(){return P(()=>!!de(t().path))()&&!t().binary},get children(){var e=zf();return e.$$click=()=>h(`md`),y(()=>L(e,p()===`md`?`on`:``)),e}}),n),n.$$click=()=>{h(`code`),ae()||pe({path:t().path,content:t().content,truncated:t().truncated})},R(e,M(N,{get when(){return ge(t())},get children(){var e=Bf();return e.$$click=()=>h(`edit`),y(()=>L(e,p()===`edit`?`on`:``)),e}}),null),y(()=>L(n,p()===`code`?`on`:``)),e})(),M(N,{get when(){return!t().binary},get fallback(){return Uf()},get children(){return M(N,{get when(){return p()===`edit`},get fallback(){return M(N,{get when(){return P(()=>p()===`md`)()&&de(t().path)},get fallback(){return M(tm,{get path(){return t().path},get content(){return t().content},get html(){return ae()},get pending(){return se()},get truncated(){return!!t().truncated}})},get children(){var e=Wf();return y(()=>e.innerHTML=Ie(t().content)),e}})},get children(){var e=Hf(),n=e.firstChild,r=n.nextSibling.firstChild,i=r.firstChild,a=r.nextSibling;return n.$$input=e=>le(e.currentTarget.value),I(n,`spellcheck`,!1),R(r,()=>zp(A().length),i),a.$$click=()=>void he(),R(a,()=>j()?`saving…`:`💾 save`),y(()=>a.disabled=j()||A()===t().content),y(()=>n.value=A()),e}})}})]},get children(){var t=Rf(),n=t.firstChild,r=n.firstChild;return R(t,M(N,{get when(){return u().kind===`image`},get fallback(){return M(N,{get when(){return u().kind===`video`},get fallback(){return(()=>{var t=Kf();return y(()=>I(t,`src`,`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`)),t})()},get children(){var t=Gf();return y(()=>I(t,`src`,`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`)),t}})},get children(){var t=Lf();return y(n=>{var r=`/api/agents/${e.agentId}/raw?path=${encodeURIComponent(u().path)}`,i=u().path.split(`/`).pop();return r!==n.e&&I(t,`src`,n.e=r),i!==n.t&&I(t,`alt`,n.t=i),n},{e:void 0,t:void 0}),t}}),n),R(n,()=>u().kind,r),t}})}})})]}function tm(e){return[M(N,{get when(){return e.html},get fallback(){return P(()=>!!e.pending)()?(()=>{var t=Yf(),n=t.firstChild.nextSibling;return n.nextSibling,R(t,()=>e.path.split(`/`).pop(),n),t})():(()=>{var t=Xf();return R(t,()=>e.content),t})()},get children(){var t=qf();return y(()=>t.innerHTML=e.html),t}}),M(N,{get when(){return e.truncated},get children(){return Jf()}})]}var nm=[{key:`openrouter`,label:`OpenRouter`,url:`https://openrouter.ai/api/v1`,model:`anthropic/claude-sonnet-4`,hint:`400+ models behind one key — teapot sends app-attribution headers automatically`},{key:`orcarouter`,label:`OrcaRouter`,url:`https://api.orcarouter.ai/v1`,model:`orcarouter/auto`,hint:`zero-markup routing gateway — 'orcarouter/auto' grades each prompt and picks the model`},{key:`openai`,label:`OpenAI`,url:`https://api.openai.com/v1`,model:`gpt-4o-mini`},{key:`llamacpp`,label:`llama.cpp server`,url:`http://localhost:8080/v1`,model:``,hint:`free & local — start it with: llama-server -m ./model.gguf (any model name works)`}],rm={key:`custom`,label:`Custom`,url:``,model:``,hint:`any OpenAI-compatible /v1 endpoint — vLLM, LM Studio, llama.cpp, a company gateway… fill the fields below`};function im(e){let[t,n]=v(nm[0]),[r,i]=v(nm[0].url),[a,o]=v(``),[s,c]=v(nm[0].model),[l,u]=v([]),[d,f]=v(`~/teapot-workspace`),[p,m]=v(``),[h,g]=v(!1),[_,x]=v(``),S=e=>{n(e),e.key!==`custom`&&e.url&&(i(e.url),e.model&&c(e.model))};b(()=>{let e=r().trim(),t=a();if(!/^https?:\/\//.test(e)){u([]);return}let n=setTimeout(async()=>{try{let n=await $(`/api/setup/models?baseUrl=${encodeURIComponent(e)}${t?`&apiKey=${encodeURIComponent(t)}`:``}`);u(n.models??[])}catch{u([])}},600);w(()=>clearTimeout(n))});let C=e=>{let t=l().find(t=>t.id===e.trim());if(!t)return``;let n=[];t.contextLength&&n.push(`ctx ${zp(t.contextLength)} tok`);let r=e=>e===void 0?``:`$${e*1e6>=10?Math.round(e*1e6):+(e*1e6).toFixed(1)}/M`;if(t.pricing){let e=r(t.pricing.prompt),i=r(t.pricing.completion);e&&i?n.push(`${e} in · ${i} out`):(e||i)&&n.push(r(t.pricing.prompt??t.pricing.completion))}return n.join(` · `)},ee=()=>C(s()),te=async t=>{t.preventDefault(),x(``),g(!0);try{await $(`/api/setup`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({baseUrl:r(),apiKey:a()||void 0,model:s(),workspace:d(),...p()?{password:p()}:{}})}),e.onDone()}catch(e){x(e.message),g(!1)}};return(()=>{var e=ep(),n=e.firstChild.firstChild.nextSibling.nextSibling,u=n.firstChild,g=u.nextSibling,v=g.firstChild.nextSibling,b=v.nextSibling,x=g.nextSibling,C=x.firstChild.nextSibling,w=x.nextSibling,T=w.firstChild.nextSibling,ne=T.nextSibling,E=w.nextSibling,D=E.firstChild.nextSibling,O=D.firstChild.nextSibling,re=D.nextSibling.firstChild.nextSibling,k=E.nextSibling;return n.addEventListener(`submit`,te),R(u,()=>[...nm,rm].map(e=>(()=>{var n=tp();return n.$$click=()=>S(e),R(n,()=>e.label),y(r=>{var i=`presetbtn`+(t().key===e.key?` active`:``),a=e.hint||e.url;return i!==r.e&&L(n,r.e=i),a!==r.t&&I(n,`title`,r.t=a),r},{e:void 0,t:void 0}),n})())),R(n,M(N,{get when(){return t().hint},get children(){var e=Zf();return R(e,()=>t().hint),e}}),g),v.$$input=e=>i(e.currentTarget.value),R(b,()=>nm.map(e=>(()=>{var t=cu();return y(()=>t.value=e.url),t})())),C.$$input=e=>o(e.currentTarget.value),T.$$input=e=>c(e.currentTarget.value),R(ne,()=>l().map(e=>(()=>{var t=cu();return y(()=>t.value=e.id),t})())),R(n,M(N,{get when(){return l().length>0},get fallback(){return np()},get children(){var e=$f(),t=e.firstChild;return R(e,()=>l().length,t),R(e,M(N,{get when(){return ee()},get children(){return[` · `,(()=>{var e=Qf();return R(e,ee),e})()]}}),null),e}}),E),O.$$input=e=>f(e.currentTarget.value),re.$$input=e=>m(e.currentTarget.value),R(n,M(N,{get when(){return _()},get children(){var e=Df();return R(e,_),e}}),k),R(k,()=>h()?`saving…`:`finish setup`),y(e=>{var n=t().key===`llamacpp`?`(any name — serves whichever gguf is loaded)`:`(type to filter models from the endpoint)`,r=h();return n!==e.e&&I(T,`placeholder`,e.e=n),r!==e.t&&(k.disabled=e.t=r),e},{e:void 0,t:void 0}),y(()=>v.value=r()),y(()=>C.value=a()),y(()=>T.value=s()),y(()=>O.value=d()),y(()=>re.value=p()),e})()}function am(e){let[t,n]=v(Object.entries(e.cfg.providers??{}).map(([e,t])=>({name:e,baseUrl:t.baseUrl??``,apiKey:t.apiKey??``,model:t.model??``}))),[r,i]=v(e.cfg.defaultProvider??``),a=()=>e.cfg.defaultProvider??``,o=()=>{let e=[...new Set(t().map(e=>e.name.trim()).filter(Boolean))],n=r();return n&&!e.includes(n)&&e.push(n),e},s=()=>{let e=r();return e?t().some(t=>t.name.trim()===e)?``:e:``},[c,l]=v(Math.round((e.cfg.progressIntervalMs??6e5)/6e4)),[u,d]=v(e.cfg.progressMinChars??4e3),[f,p]=v(e.cfg.contextTokenBudget==null?null:Math.round(e.cfg.contextTokenBudget/1e3)),[m,h]=v(e.cfg.contextWindowTokens?Math.round(e.cfg.contextWindowTokens/1e3):0),[g,_]=v(e.cfg.maxSpawnDepth??3),[b,x]=v((e.cfg.tasks??[]).map(e=>({...e}))),[S,C]=v(``),w=()=>(e.cfg.agents??[]).map(e=>e.id),ee=()=>{let e={};for(let n of t()){if(!n.name.trim())return C(`provider name is required`),null;if(n.baseUrl&&!/^https?:\/\//.test(n.baseUrl))return C(`provider ${n.name}: baseUrl must start with http(s)://`),null;e[n.name.trim()]={baseUrl:n.baseUrl,...n.apiKey?{apiKey:n.apiKey}:{},...n.model?{model:n.model}:{}}}return e},te=async t=>{t.preventDefault(),C(``);let n=ee();if(!n)return;let i=b().filter(e=>e.id?.trim()||e.prompt?.trim()).map((e,t)=>({id:e.id?.trim()||`task-${t+1}`,agent:e.agent,schedule:e.schedule,prompt:e.prompt,...e.forked?{forked:!0}:{}}));for(let e of i){if(!e.agent){C(`task "${e.id}": agent is required`);return}if(!e.schedule?.trim()){C(`task "${e.id}": schedule is required`);return}}try{await $(`/api/config`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({providers:n,defaultProvider:r()||void 0,progressIntervalMs:Math.max(1,c())*6e4,progressMinChars:Math.max(100,u()),...f()==null?{}:{contextTokenBudget:Math.max(1,f())*1e3},...m()>0?{contextWindowTokens:m()*1e3}:{},maxSpawnDepth:Math.max(0,g()),tasks:i})}),e.onSaved(),e.onClose()}catch(e){C(e.message)}},T=(e,t,n,r)=>(()=>{var i=rp(),a=i.firstChild;return I(i,`title`,r),R(i,e,a),a.$$input=e=>n(Number(e.currentTarget.value)),a.value=t,i})();return M(Wp,{title:`settings`,get onClose(){return e.onClose},get children(){var v=ap(),ee=v.firstChild,ne=ee.firstChild.nextSibling,E=ne.nextSibling;E.firstChild;var D=E.nextSibling.firstChild.firstChild.nextSibling;D.firstChild;var O=ee.nextSibling,re=O.firstChild.nextSibling,k=re.firstChild,ie=k.firstChild.nextSibling,ae=O.nextSibling,oe=ae.firstChild.nextSibling,se=ae.nextSibling;se.firstChild;var ce=se.nextSibling,A=ce.firstChild.nextSibling.firstChild;A.firstChild;var le=A.nextSibling,j=ce.nextSibling;return v.addEventListener(`submit`,te),R(ee,M(be,{get each(){return t()},children:(e,r)=>(()=>{var i=op(),a=i.firstChild,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling,l=c.nextSibling;return a.$$input=e=>n(t().map((t,n)=>n===r?{...t,name:e.currentTarget.value}:t)),o.$$input=e=>n(t().map((t,n)=>n===r?{...t,baseUrl:e.currentTarget.value}:t)),s.$$input=e=>n(t().map((t,n)=>n===r?{...t,apiKey:e.currentTarget.value}:t)),c.$$input=e=>n(t().map((t,n)=>n===r?{...t,model:e.currentTarget.value}:t)),l.$$click=()=>n(t().filter((e,t)=>t!==r)),y(()=>a.value=e().name),y(()=>o.value=e().baseUrl),y(()=>s.value=e().apiKey),y(()=>c.value=e().model),i})()}),ne),ne.$$click=()=>n([...t(),{name:``,baseUrl:``,apiKey:``,model:``}]),R(E,M(ye,{each:nm,children:e=>(()=>{var a=sp();return a.firstChild,a.$$click=()=>{let a=t().filter(t=>t.name!==e.key);n([...a,{name:e.key,baseUrl:e.url,apiKey:``,model:e.model}]),r()||i(e.key)},R(a,()=>e.label,null),y(()=>I(a,`title`,`fill a ${e.label} row — ${e.url}${e.model?` (model: ${e.model})`:``}`)),a})()}),null),D.addEventListener(`change`,e=>i(e.currentTarget.value)),R(D,M(ye,{get each(){return o()},children:e=>(()=>{var t=cu();return t.value=e,R(t,e),t})()}),null),R(ee,M(N,{get when(){return s()},get children(){var e=ip(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling,r=n.nextSibling.nextSibling;return R(t,s),R(e,()=>s()===a()?` — the dropdown above cannot show it.`:` — it was replaced by your selection.`,n),R(r,s),e}}),null),R(re,()=>T(`progress interval (min)`,c(),e=>l(e),`how often the harness asks for a progress report`),k),R(re,()=>T(`progress min chars`,u(),e=>d(e),`progress prompts wait for this much real output`),k),ie.$$input=e=>p(e.currentTarget.value===``?null:Number(e.currentTarget.value)),R(re,()=>T(`context window (k tok)`,m(),e=>h(e),`model's real window — 0/blank hides the % gauge`),null),R(re,()=>T(`max spawn depth`,g(),e=>_(e),`sub-agent nesting limit (0 = no spawning)`),null),R(ae,M(N,{get when(){return b().length>0},get children(){return M(be,{get each(){return b()},children:(e,t)=>(()=>{var n=cp(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.firstChild,l=s.nextSibling,u=r.nextSibling;return i.$$input=e=>x(b().map((n,r)=>r===t?{...n,id:e.currentTarget.value}:n)),a.$$input=e=>x(b().map((n,r)=>r===t?{...n,agent:e.currentTarget.value}:n)),o.$$input=e=>x(b().map((n,r)=>r===t?{...n,schedule:e.currentTarget.value}:n)),c.addEventListener(`change`,e=>x(b().map((n,r)=>r===t?{...n,forked:e.currentTarget.checked}:n))),l.$$click=()=>x(b().filter((e,n)=>n!==t)),u.$$input=e=>x(b().map((n,r)=>r===t?{...n,prompt:e.currentTarget.value}:n)),y(()=>i.value=e().id),y(()=>a.value=e().agent),y(()=>o.value=e().schedule),y(()=>c.checked=!!e().forked),y(()=>u.value=e().prompt),n})()})}}),oe),oe.$$click=()=>x([...b(),{id:``,agent:w()[0]??``,schedule:`every 30m`,prompt:``}]),R(se,M(ye,{get each(){return e.cfg.agents??[]},children:e=>(()=>{var t=up(),n=t.firstChild,r=n.nextSibling;return R(n,()=>e.id),R(r,()=>e.workspace),R(t,M(N,{get when(){return e.parent},get children(){var t=lp();return t.firstChild,R(t,()=>e.parent,null),t}}),null),t})()}),null),R(A,()=>e.cfg.version??`unknown`,null),le.$$click=async e=>{try{C(``);let t=e.currentTarget;t.disabled=!0,t.textContent=`updating…`;let n=await $(`/api/update/restart`,{method:`POST`});if(!n.ok)throw Error((await n.json()).error??`restart failed`);t.textContent=`restarting…`;let r=!1;for(let e=0;e<90&&!r;e++){await new Promise(e=>setTimeout(e,1e3));try{let e=await $(`/api/version`);e.version&&e.version!==`0.27.2`&&(r=!0,window.location.reload())}catch{}}if(!r)throw Error(`restart timeout — new server did not come up`)}catch(e){C(e.message)}finally{e.currentTarget.disabled=!1,e.currentTarget.textContent=`update & restart`}},R(v,M(N,{get when(){return S()},get children(){var e=Df();return R(e,S),e}}),j),y(()=>D.value=r()),y(()=>ie.value=f()??``),v}})}we([`click`,`pointerdown`,`dblclick`,`input`,`keydown`]),Ce(()=>M(kp,{}),document.getElementById(`root`));export{hl as t};
30
+ //# sourceMappingURL=index-NorOxnzt.js.map