@staff0rd/assist 0.775.5 → 0.775.6
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.
|
@@ -3973,7 +3973,7 @@ ${f.join(`
|
|
|
3973
3973
|
`))),this._register(this._terminal.onA11yTab(o=>this._handleTab(o))),this._register(this._terminal.onKey(o=>this._handleKey(o.key))),this._register(this._terminal.onBlur(()=>this._clearLiveRegion())),this._register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._register(En(i,"selectionchange",()=>this._handleSelectionChange())),this._register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRowsDimensions(),this._refreshRows(),this._register(ia(()=>{Shr?this._debugRootContainer.remove():this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(e){for(let t=0;t<e;t++)this._handleChar(" ")}_handleChar(e){this._liveRegionLineCount<Thr+1&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,e===`
|
|
3974
3974
|
`&&(this._liveRegionLineCount++,this._liveRegionLineCount===Thr+1&&(this._liveRegion.textContent+=uFe.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 r=this._terminal.buffer,n=r.lines.length.toString();for(let i=e;i<=t;i++){let o=r.lines.get(r.ydisp+i),a=[],s=o?.translateToString(!0,void 0,void 0,a)||"",l=(r.ydisp+i+1).toString(),u=this._rowElements[i];u&&(s.length===0?(u.textContent="\xA0",this._rowColumns.set(u,[0,1])):(u.textContent=s,this._rowColumns.set(u,a)),u.setAttribute("aria-posinset",l),u.setAttribute("aria-setsize",n),this._alignRowWidth(u))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(e,t){let r=e.target,n=this._rowElements[t===0?1:this._rowElements.length-2],i=r.getAttribute("aria-posinset"),o=t===0?"1":`${this._terminal.buffer.lines.length}`;if(i===o||e.relatedTarget!==n)return;let a,s;if(t===0?(a=r,s=this._rowElements.pop(),this._rowContainer.removeChild(s)):(a=this._rowElements.shift(),s=r,this._rowContainer.removeChild(a)),a.removeEventListener("focus",this._topBoundaryFocusListener),s.removeEventListener("focus",this._bottomBoundaryFocusListener),t===0){let l=this._createAccessibilityTreeNode();this._rowElements.unshift(l),this._rowContainer.insertAdjacentElement("afterbegin",l)}else{let l=this._createAccessibilityTreeNode();this._rowElements.push(l),this._rowContainer.appendChild(l)}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},r={node:e.focusNode,offset:e.focusOffset};if((t.node.compareDocumentPosition(r.node)&Node.DOCUMENT_POSITION_PRECEDING||t.node===r.node&&t.offset>r.offset)&&([t,r]=[r,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 n=this._rowElements.slice(-1)[0];if(r.node.compareDocumentPosition(n)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(r={node:n,offset:n.textContent?.length??0}),!this._rowContainer.contains(r.node))return;let i=({node:s,offset:l})=>{let u=s instanceof Text?s.parentNode:s,f=parseInt(u?.getAttribute("aria-posinset"),10)-1;if(isNaN(f))return console.warn("row is invalid. Race condition?"),null;let d=this._rowColumns.get(u);if(!d)return console.warn("columns is null. Race condition?"),null;let h=l<d.length?d[l]:d.slice(-1)[0]+1;return h>=this._terminal.cols&&(++f,h=0),{row:f,column:h}},o=i(t),a=i(r);if(!(!o||!a)){if(o.row>a.row||o.row===a.row&&o.column>=a.column)throw new Error("invalid range");this._terminal.select(o.column,o.row,(a.row-o.row)*this._terminal.cols-o.column+a.column)}}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let t=this._rowContainer.children.length;t<this._terminal.rows;t++)this._rowElements[t]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[t]);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,r=this._rowColumns.get(e)?.slice(-1)?.[0];if(!r)return;let n=r*this._renderService.dimensions.css.cell.width;e.style.transform=`scaleX(${n/t})`}};lge=as([Tr(1,jFe),Tr(2,R2),Tr(3,A2)],lge);var qFe=class extends Wn{constructor(e,t,r,n,i){super(),this._element=e,this._mouseService=t,this._renderService=r,this._bufferService=n,this._linkProviderService=i,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this._register(new cr),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this._register(new cr),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this._register(ia(()=>{gR(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(En(this._element,"mouseleave",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this._register(En(this._element,"mousemove",this._handleMouseMove.bind(this))),this._register(En(this._element,"mousedown",this._handleMouseDown.bind(this))),this._register(En(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 r=e.composedPath();for(let n=0;n<r.length;n++){let i=r[n];if(i.classList.contains("xterm"))break;if(i.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(n=>{n?.forEach(i=>{i.link.dispose&&i.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=e.y);let r=!1;for(let[n,i]of this._linkProviderService.linkProviders.entries())t?this._activeProviderReplies?.get(n)&&(r=this._checkLinkProviderResult(n,e,r)):i.provideLinks(e.y,o=>{if(this._isMouseOut)return;let a=o?.map(s=>({link:s}));this._activeProviderReplies?.set(n,a),r=this._checkLinkProviderResult(n,e,r),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)})}_removeIntersectingLinks(e,t){let r=new Set;for(let n=0;n<t.size;n++){let i=t.get(n);if(i)for(let o=0;o<i.length;o++){let a=i[o],s=a.link.range.start.y<e?0:a.link.range.start.x,l=a.link.range.end.y>e?this._bufferService.cols:a.link.range.end.x;for(let u=s;u<=l;u++){if(r.has(u)){i.splice(o--,1);break}r.add(u)}}}}_checkLinkProviderResult(e,t,r){if(!this._activeProviderReplies)return r;let n=this._activeProviderReplies.get(e),i=!1;for(let o=0;o<e;o++)(!this._activeProviderReplies.has(o)||this._activeProviderReplies.get(o))&&(i=!0);if(!i&&n){let o=n.find(a=>this._linkAtPosition(a.link,t));o&&(r=!0,this._handleNewLink(o))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!r)for(let o=0;o<this._activeProviderReplies.size;o++){let a=this._activeProviderReplies.get(o)?.find(s=>this._linkAtPosition(s.link,t));if(a){r=!0,this._handleNewLink(a);break}}return r}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._currentLink)return;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink&&oUn(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,gR(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?!0:e.link.decorations.underline,pointerCursor:e.link.decorations===void 0?!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:r=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==r&&(this._currentLink.state.decorations.pointerCursor=r,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",r))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:r=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==r&&(this._currentLink.state.decorations.underline=r,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,r))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(r=>{if(!this._currentLink)return;let n=r.start===0?0:r.start+1+this._bufferService.buffer.ydisp,i=this._bufferService.buffer.ydisp+1+r.end;if(this._currentLink.link.range.start.y>=n&&this._currentLink.link.range.end.y<=i&&(this._clearCurrentLink(n,i),this._lastMouseEvent)){let o=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);o&&this._askForLink(o,!1)}})))}_linkHover(e,t,r){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(r,t.text)}_fireUnderlineEvent(e,t){let r=e.range,n=this._bufferService.buffer.ydisp,i=this._createLinkUnderlineEvent(r.start.x-1,r.start.y-n-1,r.end.x,r.end.y-n-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(i)}_linkLeave(e,t,r){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(r,t.text)}_linkAtPosition(e,t){let r=e.range.start.y*this._bufferService.cols+e.range.start.x,n=e.range.end.y*this._bufferService.cols+e.range.end.x,i=t.y*this._bufferService.cols+t.x;return r<=i&&i<=n}_positionFromMouseEvent(e,t,r){let n=r.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(n)return{x:n[0],y:n[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,r,n,i){return{x1:e,y1:t,x2:r,y2:n,cols:this._bufferService.cols,fg:i}}};qFe=as([Tr(1,YFe),Tr(2,A2),Tr(3,Of),Tr(4,Ohr)],qFe);function oUn(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 aUn=class extends ZHn{constructor(e={}){super(e),this._linkifier=this._register(new q9),this.browser=cpr,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new q9),this._onCursorMove=this._register(new cr),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new cr),this.onKey=this._onKey.event,this._onRender=this._register(new cr),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new cr),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new cr),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new cr),this.onBell=this._onBell.event,this._onFocus=this._register(new cr),this._onBlur=this._register(new cr),this._onA11yCharEmitter=this._register(new cr),this._onA11yTabEmitter=this._register(new cr),this._onWillOpen=this._register(new cr),this._setup(),this._decorationService=this._instantiationService.createInstance(tUn),this._instantiationService.setService(qj,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(Yzn),this._instantiationService.setService(Ohr,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(dFe)),this._register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this._register(this._inputHandler.onRequestRefreshRows(t=>this.refresh(t?.start??0,t?.end??this.rows-1))),this._register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this._register(this._inputHandler.onRequestReset(()=>this.reset())),this._register(this._inputHandler.onRequestWindowsOptionsReport(t=>this._reportWindowsOptions(t))),this._register(this._inputHandler.onColor(t=>this._handleColorEvent(t))),this._register(ou.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(ou.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(ou.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(ou.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize(t=>this._afterResize(t.cols,t.rows))),this._register(ia(()=>{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 r,n="";switch(t.index){case 256:r="foreground",n="10";break;case 257:r="background",n="11";break;case 258:r="cursor",n="12";break;default:r="ansi",n="4;"+t.index}switch(t.type){case 0:let i=na.toColorRGB(r==="ansi"?this._themeService.colors.ansi[t.index]:this._themeService.colors[r]);this.coreService.triggerDataEvent(`${$t.ESC}]${n};${GHn(i)}${spr.ST}`);break;case 1:if(r==="ansi")this._themeService.modifyColors(o=>o.ansi[t.index]=Js.toColor(...t.color));else{let o=r;this._themeService.modifyColors(a=>a[o]=Js.toColor(...t.color))}break;case 2:this._themeService.restoreColor(t.index);break}}}_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(lge,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent($t.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($t.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 r=Math.min(this.buffer.x,this.cols-1),n=this._renderService.dimensions.css.cell.height,i=t.getWidth(r),o=this._renderService.dimensions.css.cell.width*i,a=this.buffer.y*this._renderService.dimensions.css.cell.height,s=r*this._renderService.dimensions.css.cell.width;this.textarea.style.left=s+"px",this.textarea.style.top=a+"px",this.textarea.style.width=o+"px",this.textarea.style.height=n+"px",this.textarea.style.lineHeight=n+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this._register(En(this.element,"copy",t=>{this.hasSelection()&&NFn(t,this._selectionService)}));let e=t=>BFn(t,this.textarea,this.coreService,this.optionsService);this._register(En(this.textarea,"paste",e)),this._register(En(this.element,"paste",e)),upr?this._register(En(this.element,"mousedown",t=>{t.button===2&&Cdr(t,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this._register(En(this.element,"contextmenu",t=>{Cdr(t,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),r$e&&this._register(En(this.element,"auxclick",t=>{t.button===1&&khr(t,this.textarea,this.screenElement)}))}_bindKeys(){this._register(En(this.textarea,"keyup",e=>this._keyUp(e),!0)),this._register(En(this.textarea,"keydown",e=>this._keyDown(e),!0)),this._register(En(this.textarea,"keypress",e=>this._keyPress(e),!0)),this._register(En(this.textarea,"compositionstart",()=>this._compositionHelper.compositionstart())),this._register(En(this.textarea,"compositionupdate",e=>this._compositionHelper.compositionupdate(e))),this._register(En(this.textarea,"compositionend",()=>this._compositionHelper.compositionend())),this._register(En(this.textarea,"input",e=>this._inputEvent(e),!0)),this._register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(e){if(!e)throw new 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(En(this.screenElement,"mousemove",i=>this.updateCursorStyle(i))),this._helperContainer=this._document.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),t.appendChild(this.screenElement);let r=this.textarea=this._document.createElement("textarea");this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",cFe.get()),hpr||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",()=>r.readOnly=this.optionsService.rawOptions.disableStdin)),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(qzn,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<"u"?window.document:null)),this._instantiationService.setService(R2,this._coreBrowserService),this._register(En(this.textarea,"focus",i=>this._handleTextAreaFocus(i))),this._register(En(this.textarea,"blur",()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(DFe,this._document,this._helperContainer),this._instantiationService.setService(uge,this._charSizeService),this._themeService=this._instantiationService.createInstance(FFe),this._instantiationService.setService(j9,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(oge),this._instantiationService.setService(Dhr,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(NFe,this.rows,this.screenElement)),this._instantiationService.setService(A2,this._renderService),this._register(this._renderService.onRenderedViewportChange(i=>this._onRender.fire(i))),this.onResize(i=>this._renderService.resize(i.cols,i.rows)),this._compositionView=this._document.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(LFe,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(OFe),this._instantiationService.setService(YFe,this._mouseService);let n=this._linkifier.value=this._register(this._instantiationService.createInstance(qFe,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(AFe,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines(i=>{super.scrollLines(i,!1),this.refresh(0,this.rows-1)})),this._selectionService=this._register(this._instantiationService.createInstance(BFe,this.element,this.screenElement,n)),this._instantiationService.setService(GFn,this._selectionService),this._register(this._selectionService.onRequestScrollLines(i=>this.scrollLines(i.amount,i.suppressScrollEvent))),this._register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this._register(this._selectionService.onRequestRedraw(i=>this._renderService.handleSelectionChanged(i.start,i.end,i.columnSelectMode))),this._register(this._selectionService.onLinuxMouseSelection(i=>{this.textarea.value=i,this.textarea.focus(),this.textarea.select()})),this._register(ou.any(this._onScroll.event,this._inputHandler.onScroll)(()=>{this._selectionService.refresh(),this._viewport?.queueSync()})),this._register(this._instantiationService.createInstance(PFe,this.screenElement)),this._register(En(this.element,"mousedown",i=>this._selectionService.handleMouseDown(i))),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(lge,this)),this._register(this.optionsService.onSpecificOptionChange("screenReaderMode",i=>this._handleScreenReaderModeOptionChange(i))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(ige,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRuler",i=>{!this._overviewRulerRenderer&&i&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(ige,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(IFe,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,t=this.element;function r(o){let a=e._mouseService.getMouseReportCoords(o,e.screenElement);if(!a)return!1;let s,l;switch(o.overrideType||o.type){case"mousemove":l=32,o.buttons===void 0?(s=3,o.button!==void 0&&(s=o.button<3?o.button:3)):s=o.buttons&1?0:o.buttons&4?1:o.buttons&2?2:3;break;case"mouseup":l=0,s=o.button<3?o.button:3;break;case"mousedown":l=1,s=o.button<3?o.button:3;break;case"wheel":if(e._customWheelEventHandler&&e._customWheelEventHandler(o)===!1)return!1;let u=o.deltaY;if(u===0||e.coreMouseService.consumeWheelEvent(o,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return!1;l=u<0?0:1,s=4;break;default:return!1}return l===void 0||s===void 0||s>4?!1:e.coreMouseService.triggerMouseEvent({col:a.col,row:a.row,x:a.x,y:a.y,button:s,action:l,ctrl:o.ctrlKey,alt:o.altKey,shift:o.shiftKey})}let n={mouseup:null,wheel:null,mousedrag:null,mousemove:null},i={mouseup:o=>(r(o),o.buttons||(this._document.removeEventListener("mouseup",n.mouseup),n.mousedrag&&this._document.removeEventListener("mousemove",n.mousedrag)),this.cancel(o)),wheel:o=>(r(o),this.cancel(o,!0)),mousedrag:o=>{o.buttons&&r(o)},mousemove:o=>{o.buttons||r(o)}};this._register(this.coreMouseService.onProtocolChange(o=>{o?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(o)),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()),o&8?n.mousemove||(t.addEventListener("mousemove",i.mousemove),n.mousemove=i.mousemove):(t.removeEventListener("mousemove",n.mousemove),n.mousemove=null),o&16?n.wheel||(t.addEventListener("wheel",i.wheel,{passive:!1}),n.wheel=i.wheel):(t.removeEventListener("wheel",n.wheel),n.wheel=null),o&2?n.mouseup||(n.mouseup=i.mouseup):(this._document.removeEventListener("mouseup",n.mouseup),n.mouseup=null),o&4?n.mousedrag||(n.mousedrag=i.mousedrag):(this._document.removeEventListener("mousemove",n.mousedrag),n.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register(En(t,"mousedown",o=>{if(o.preventDefault(),this.focus(),!(!this.coreMouseService.areMouseEventsActive||this._selectionService.shouldForceSelection(o)))return r(o),n.mouseup&&this._document.addEventListener("mouseup",n.mouseup),n.mousedrag&&this._document.addEventListener("mousemove",n.mousedrag),this.cancel(o)})),this._register(En(t,"wheel",o=>{if(!n.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(o)===!1)return!1;if(!this.buffer.hasScrollback){if(o.deltaY===0)return!1;if(e.coreMouseService.consumeWheelEvent(o,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return this.cancel(o,!0);let a=$t.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(o.deltaY<0?"A":"B");return this.coreService.triggerDataEvent(a,!0),this.cancel(o,!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){_hr(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 new 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 new 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,r){this._selectionService.setSelection(e,t,r)}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 r=JHn(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),r.type===3||r.type===2){let n=this.rows-1;return this.scrollLines(r.type===2?-n:n),this.cancel(e,!0)}if(r.type===1&&this.selectAll(),this._isThirdLevelShift(this.browser,e)||(r.cancel&&this.cancel(e,!0),!r.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((r.key===$t.ETX||r.key===$t.CR)&&(this.textarea.value=""),this._onKey.fire({key:r.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(r.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey)return this.cancel(e,!0);this._keyDownHandled=!0}_isThirdLevelShift(e,t){let r=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"?r:r&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,!(this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)&&(sUn(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(Qs));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($t.ESC+"[I"):this.coreService.triggerDataEvent($t.ESC+"[O")}_reportWindowsOptions(e){if(this._renderService)switch(e){case 0:let t=this._renderService.dimensions.css.canvas.width.toFixed(0),r=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${$t.ESC}[4;${r};${t}t`);break;case 1:let n=this._renderService.dimensions.css.cell.width.toFixed(0),i=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${$t.ESC}[6;${i};${n}t`);break}}cancel(e,t){if(!(!this.options.cancelEvents&&!t))return e.preventDefault(),e.stopPropagation(),!1}};function sUn(e){return e.keyCode===16||e.keyCode===17||e.keyCode===18}var lUn=class{constructor(){this._addons=[]}dispose(){for(let e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()}loadAddon(e,t){let r={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(r),t.dispose=()=>this._wrappedAddonDispose(r),t.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let t=-1;for(let r=0;r<this._addons.length;r++)if(this._addons[r]===e){t=r;break}if(t===-1)throw new Error("Could not dispose an addon that has not been loaded");e.isDisposed=!0,e.dispose.apply(e.instance),this._addons.splice(t,1)}},cUn=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 Fm)}translateToString(e,t,r){return this._line.translateToString(e,t,r)}},Chr=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 cUn(t)}getNullCell(){return new Fm}},uUn=class extends Wn{constructor(e){super(),this._core=e,this._onBufferChange=this._register(new cr),this.onBufferChange=this._onBufferChange.event,this._normal=new Chr(this._core.buffers.normal,"normal"),this._alternate=new Chr(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}},fUn=class{constructor(e){this._core=e}registerCsiHandler(e,t){return this._core.registerCsiHandler(e,r=>t(r.toArray()))}addCsiHandler(e,t){return this.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._core.registerDcsHandler(e,(r,n)=>t(r,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)}},dUn=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}},hUn=["cols","rows"],W1=0,Cpr=class extends Wn{constructor(e){super(),this._core=this._register(new aUn(e)),this._addonManager=this._register(new lUn),this._publicOptions={...this._core.options};let t=n=>this._core.options[n],r=(n,i)=>{this._checkReadonlyOptions(n),this._core.options[n]=i};for(let n in this._core.options){let i={get:t.bind(this,n),set:r.bind(this,n)};Object.defineProperty(this._publicOptions,n,i)}}_checkReadonlyOptions(e){if(hUn.includes(e))throw new Error(`Option "${e}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get 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||(this._parser=new fUn(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new dUn(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._buffer=this._register(new uUn(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";break}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,r){this._verifyIntegers(e,t,r),this._core.select(e,t,r)}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
|
|
3975
3975
|
`,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 cFe.get()},set promptLabel(e){cFe.set(e)},get tooMuchOutput(){return uFe.get()},set tooMuchOutput(e){uFe.set(e)}}}_verifyIntegers(...e){for(W1 of e)if(W1===1/0||isNaN(W1)||W1%1!==0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...e){for(W1 of e)if(W1&&(W1===1/0||isNaN(W1)||W1%1!==0||W1<0))throw new Error("This API only accepts positive integers")}};var n$e=/(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\^<>`]*[^\s"':,.!?{}|\\^~[\]`()<>]/;function pUn(e){try{return!!new URL(e).host}catch{return!1}}function _pr(e,t){let r=e(t),n=e(t+1);return!!r&&!!n&&(n.isWrapped||r.isFull)}function mUn(e,t){let r=[];for(let n=t;n-t<64;n++){let i=e(n);if(!i||(r.push(i.text),!_pr(e,n)))break}return r}function wpr(e,t,r){let n=t;for(let i of e){if(r<i.length)return{x:r+1,y:n+1};r-=i.length,n++}}function gUn(e,t,r){let n=r[0],i=wpr(e,t,r.index),o=wpr(e,t,r.index+n.length-1);if(!(!pUn(n)||!i||!o))return{text:n,range:{start:i,end:o}}}function yUn(e,t,r){let n=new RegExp(r.source,`${r.flags||""}g`);return[...e.join("").matchAll(n)].flatMap(o=>gUn(e,t,o)??[])}function kpr(e,t,r=n$e){if(!e(t-1))return[];let n=t-1;for(;n>0&&_pr(e,n-1);)n--;return yUn(mUn(e,n),n,r)}function Epr(e,t){let r=n=>{let i=e.buffer.active.getLine(n);if(!i)return;let o=e.cols,a=i.getCell(o-1);return{text:i.translateToString(!0,0,o),isWrapped:i.isWrapped,isFull:!!a&&a.getChars()!==""&&a.getChars()!==" "}};return{provideLinks(n,i){let o=kpr(r,n,n$e);i(o.map(a=>({range:a.range,text:a.text,activate:t})))}}}function Rpr(e){let t=new Cpr({cursorBlink:!0,fontSize:14,fontFamily:"'Cascadia Code', 'Fira Code', Consolas, monospace",theme:{background:"#1e1e1e",foreground:"#d4d4d4"},linkHandler:{activate:(o,a)=>{window.open(a,"_blank")}}}),r=new tfr;t.loadAddon(r);let n=t.registerLinkProvider(Epr(t,(o,a)=>{window.open(a,"_blank")}));t.open(e);let i;try{i=new xdr,i.onContextLoss(()=>{i?.dispose(),i=void 0}),t.loadAddon(i)}catch{i=void 0}return r.fit(),{term:t,fitAddon:r,dispose:()=>{n.dispose(),i?.dispose(),t.dispose()}}}function Apr(e,t,r,n){if(e.type!=="keydown"||!(e.ctrlKey||e.metaKey)||e.shiftKey||e.altKey)return!0;let i=e.key.toLowerCase();return i==="c"&&t.hasSelection()?(e.preventDefault(),r.writeText(t.getSelection()),!1):i==="v"?(e.preventDefault(),r.readText().then(n),!1):!0}function K9(e){return e!==null&&e.clientWidth>0&&e.clientHeight>0}var vUn=["quickOpen","newSession","navTab","shortcutsSheet","focusSidebar","focusTerminal","toggleDiff","openConfig","openMenu","focusRepoPicker","focusAddAgent","focusVsCode","focusDone"];function Ppr(e){let t=T3.get();return vUn.some(r=>lw(r,t).matches(e))}function Lpr(e,t,{sendInput:r,onOutput:n,sendResize:i,isStale:o,mayResize:a}){let s=Rpr(e);s.term.onData(d=>r(t,d)),s.term.attachCustomKeyEventHandler(d=>Ppr(d)?!1:Apr(d,s.term,navigator.clipboard,h=>s.term.paste(h)));let l=n(t,d=>{o()||s.term.write(d)}),u=new ResizeObserver(()=>{!a()||!K9(e)||(s.fitAddon.fit(),i(t,s.term.cols,s.term.rows))});return u.observe(e),{handle:s,cleanup:()=>{u.disconnect(),l(),s.dispose()}}}var Kj=L(ge(),1);function Mpr({containerRef:e,handleRef:t,staleRef:r,mayResize:n,takeOver:i},o,{visible:a,ownership:s},l){let u=(0,Kj.useCallback)(()=>{let f=t.current;!f||!n()||!K9(e.current)||(f.fitAddon.fit(),kGt()||f.term.focus(),l(o,f.term.cols,f.term.rows))},[e,t,n,o,l]);return(0,Kj.useEffect)(()=>{if(!a)return;let f=setTimeout(()=>{r.current&&Sme()?i():u()},50);return()=>clearTimeout(f)},[a,r,i,u]),(0,Kj.useEffect)(()=>{if(a)return u(),window.addEventListener("focus",u),()=>window.removeEventListener("focus",u)},[a,s,u]),u}var mge=L(ge(),1);function Ipr({containerRef:e,handleRef:t,staleRef:r},n,i,o){let a=(0,mge.useCallback)(()=>{r.current=!1;let s=t.current;s&&(s.term.reset(),K9(e.current)&&(s.fitAddon.fit(),s.term.focus(),o(n,s.term.cols,s.term.rows,!0)))},[e,t,r,n,o]);return(0,mge.useEffect)(()=>{i==="other"?r.current=!0:i==="mine"&&r.current&&a()},[r,i,a]),a}function Dpr(e,t,{visible:r,ownership:n,sendInput:i,onOutput:o,sendResize:a}){let s=(0,bR.useRef)(null),l=(0,bR.useRef)(n==="other"),u=(0,bR.useRef)({visible:r,ownership:n});u.current={visible:r,ownership:n};let f=(0,bR.useRef)(()=>Jur(u.current.ownership,u.current.visible,Sme()));(0,bR.useEffect)(()=>{let m=e.current;if(!m)return;let{handle:g,cleanup:y}=Lpr(m,t,{sendInput:i,onOutput:o,sendResize:a,isStale:()=>l.current,mayResize:f.current});return s.current=g,()=>{y(),s.current=null}},[e,t,o,i,a]);let d={containerRef:e,handleRef:s,staleRef:l},h=Ipr(d,t,n,a),p=Mpr({...d,mayResize:f.current,takeOver:h},t,{visible:r,ownership:n},a);return efr(n,h,p)}var Xj=L(z(),1);function Npr({sessionId:e,visible:t,ownership:r,activeNode:n,onOutput:i,sendInput:o,sendResize:a}){let s=(0,Opr.useRef)(null),l=r==="other",u=Dpr(s,e,{visible:t,ownership:r,sendInput:o,onOutput:i,sendResize:a});return(0,Xj.jsxs)(fe,{"data-terminal-session-id":e,sx:{position:"absolute",inset:"0 0 0 8px",visibility:t?"visible":"hidden",pointerEvents:t?"auto":"none"},onPointerDownCapture:u,children:[(0,Xj.jsx)(fe,{ref:s,sx:{position:"absolute",inset:0,isolation:"isolate"}}),l&&(0,Xj.jsx)(Zur,{activeNode:n})]})}var Bpr="assist-viewer-id";function bUn(){try{return sessionStorage}catch{return}}function xUn(){let e=bUn(),t=e?.getItem(Bpr);if(t)return t;let r=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;return e?.setItem(Bpr,r),r}var Zj=xUn();var xR=L(z(),1);function TUn(e){return e===void 0?"free":e===Zj?"mine":"other"}function Fpr({sessions:e,activeId:t,activeLoading:r,onOutput:n,sendInput:i,sendResize:o}){return(0,xR.jsxs)(fe,{sx:{flex:1,position:"relative",bgcolor:"background.default"},children:[e.map(a=>(0,xR.jsx)(Npr,{sessionId:a.id,visible:a.id===t,ownership:TUn(a.activeViewer),activeNode:a.activeViewerNode,onOutput:n,sendInput:i,sendResize:o},a.id)),r&&(0,xR.jsx)(Xur,{}),e.length===0&&(0,xR.jsx)(fe,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,xR.jsx)($e,{variant:"body2",color:"text.disabled",children:"Create a session to get started"})})]})}var zpr=L(z(),1);function $pr({sessions:e,activeId:t,initialized:r,onOutput:n,sendInput:i,sendResize:o}){let a=e.find(l=>l.id===t),s=a!==void 0&&kfe(a,r);return(0,zpr.jsx)(Fpr,{sessions:e,activeId:t,activeLoading:s,onOutput:n,sendInput:i,sendResize:o})}var X9=L(ge(),1),i$e=(0,X9.createContext)({userMessages:null,fetchUserMessages:()=>{}});function Hpr(e){let{userMessages:t,fetchUserMessages:r}=(0,X9.useContext)(i$e),n=(0,X9.useCallback)(()=>{e&&r(e)},[e,r]);return{history:t?.sessionId===e?t?.messages:void 0,onFetchHistory:n}}var Z9=L(z(),1),SUn={position:"relative",display:"flex",flex:1,minWidth:0,minHeight:0};function Upr({activeSession:e,sendPrDecision:t,showLastMessage:r,...n}){let{history:i,onFetchHistory:o}=Hpr(e?.id);return(0,Z9.jsxs)(fe,{sx:SUn,children:[(0,Z9.jsx)(Bur,{session:e,sendPrDecision:t,sendInput:n.sendInput,children:(0,Z9.jsx)($pr,{...n})}),r&&e!==void 0&&(0,Z9.jsx)(Kur,{message:e.lastUserMessage,history:i,onFetchHistory:o})]})}var Wpr=L(z(),1),Vpr=ft((0,Wpr.jsx)("path",{d:"m22.7 19-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4"}),"Build");var $m=L(z(),1);function Gpr({message:e}){return e.role==="tool"?(0,$m.jsx)(CUn,{tool:e.tool,target:e.target}):(0,$m.jsx)(wUn,{role:e.role,text:e.text})}function CUn({tool:e,target:t}){return(0,$m.jsxs)(fe,{sx:{display:"flex",alignItems:"center",gap:1,py:.5,pl:1},children:[(0,$m.jsx)(Vpr,{sx:{fontSize:14,color:"text.disabled"}}),(0,$m.jsxs)($e,{variant:"caption",sx:{color:"text.secondary",fontFamily:"monospace"},children:[(0,$m.jsx)(fe,{component:"span",sx:{color:"warning.main"},children:e}),t&&(0,$m.jsxs)(fe,{component:"span",children:[" ",t]})]})]})}function wUn({role:e,text:t}){let r=e==="user",n=r?"info.main":"success.main";return(0,$m.jsxs)(fe,{sx:{mb:1.5,pl:1.5,py:1,pr:1,borderLeft:2,borderColor:n,borderTopRightRadius:1,borderBottomRightRadius:1,bgcolor:r?"action.hover":"transparent"},children:[(0,$m.jsx)($e,{variant:"caption",sx:{color:n,fontWeight:600,display:"block",mb:.5},children:r?"User":"Assistant"}),(0,$m.jsx)($e,{variant:"body2",sx:{color:"text.primary",whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.6},children:t})]})}var j1=L(z(),1);function _Un(e){let t=new Map;return e.map(r=>{let n=r.role==="tool"?`tool:${r.tool}:${r.target}`:`${r.role}:${r.text.slice(0,40)}`,i=t.get(n)??0;return t.set(n,i+1),{...r,key:`${n}#${i}`}})}function jpr({messages:e,loading:t}){return t?(0,j1.jsxs)(fe,{sx:qpr,children:[(0,j1.jsx)(mo,{size:20}),(0,j1.jsx)($e,{variant:"caption",color:"text.disabled",children:"Loading transcript\u2026"})]}):e.length===0?(0,j1.jsx)(fe,{sx:qpr,children:(0,j1.jsx)($e,{variant:"body2",color:"text.disabled",children:"No transcript available"})}):(0,j1.jsx)(fe,{sx:{position:"absolute",inset:0,overflowY:"auto",p:2},children:(0,j1.jsx)(fe,{sx:{maxWidth:820,mx:"auto"},children:_Un(e).map(r=>(0,j1.jsx)(Gpr,{message:r},r.key))})})}var qpr={position:"absolute",inset:0,display:"flex",flexDirection:"column",gap:1.5,alignItems:"center",justifyContent:"center"};var o$e=L(z(),1);function Ypr({sessionId:e,transcript:t}){let r=t?.sessionId===e;return(0,o$e.jsx)(fe,{sx:{flex:1,position:"relative",bgcolor:"background.default"},children:(0,o$e.jsx)(jpr,{messages:r?t?.messages??[]:[],loading:!r})})}var C_=L(z(),1),kUn={flex:1,minHeight:0,display:"flex",flexDirection:"column"};function Kpr({viewingTranscriptSessionId:e,transcript:t,sendPrDecision:r,lifecycle:n,...i}){let o=Ld();if(e!==null)return(0,C_.jsx)(Ypr,{sessionId:e,transcript:t});let a=i.sessions.find(s=>s.id===i.activeId);return(0,C_.jsx)(Yu.Provider,{value:a?.node,children:(0,C_.jsxs)(fe,{sx:kUn,children:[(0,C_.jsx)(Usr,{shown:o,session:a,sessions:i.sessions,lifecycle:n}),(0,C_.jsx)(Gsr,{sessionId:i.activeId,sessions:i.sessions,sendInput:i.sendInput,children:(0,C_.jsx)(Upr,{...i,activeSession:a,sendPrDecision:r,showLastMessage:o})})]})})}var s$e=L(z(),1);function Xpr({socket:e}){let t=(0,a$e.useMemo)(()=>({onRetry:e.retrySession,onRestart:e.restartSession,onDismiss:e.dismissSession,onSetAutoRun:e.setAutoRun,onSetAutoAdvance:e.setAutoAdvance}),[e.retrySession,e.restartSession,e.dismissSession,e.setAutoRun,e.setAutoAdvance]),r=(0,a$e.useMemo)(()=>({userMessages:e.userMessages,fetchUserMessages:e.fetchUserMessages}),[e.userMessages,e.fetchUserMessages]);return(0,s$e.jsx)(i$e.Provider,{value:r,children:(0,s$e.jsx)(Kpr,{lifecycle:t,sessions:e.sessions,activeId:e.activeId,initialized:e.initialized,onOutput:e.onOutput,sendInput:e.sendInput,sendResize:e.sendResize,viewingTranscriptSessionId:e.viewingTranscriptSessionId,transcript:e.transcript,sendPrDecision:e.sendPrDecision})})}var gge=L(ge(),1),l$e=(0,gge.createContext)({entries:[],loading:!0,refresh:()=>{}});function yge(){return(0,gge.useContext)(l$e)}var mmr=L(ge(),1);var c$e=L(z(),1);function Zpr({open:e,label:t,onToggle:r}){return(0,c$e.jsx)(sr,{size:"small",onClick:r,"aria-expanded":e,"aria-label":t,sx:{width:28,height:28},children:(0,c$e.jsx)(Iw,{fontSize:"small",sx:{transition:"transform .2s ease",transform:e?"rotate(90deg)":"none"}})})}function vge(e){return e==="webserver"?"web server":"daemon"}var w_=L(z(),1),Qpr=e=>t=>({p:1.5,borderRadius:1,bgcolor:Ea(t.palette[e].main,.1)});function Jpr({entry:e,state:t}){let r=e.status;return r?t.kind==="ready"?(0,w_.jsx)(fe,{sx:Qpr("warning"),children:(0,w_.jsxs)($e,{variant:"body2",children:[(0,w_.jsx)("b",{children:r.running===r.built?"New code is built but not running.":`v${r.built} is built but not running.`})," ","Restart the ",r.restart.map(vge).join(" and ")," on"," ",e.name," to load it.",r.restart.includes("daemon")&&" Open sessions are restored after the daemon restarts."]})}):t.kind==="diverged"?(0,w_.jsx)(fe,{sx:Qpr("error"),children:(0,w_.jsxs)($e,{variant:"body2",children:[(0,w_.jsxs)("b",{children:[e.name,"'s install can't fast-forward to origin."]})," A Claude session",r.loop.escalationId?` (${r.loop.escalationId})`:""," is reconciling it. The update loop resumes when that session closes."]})}):null:null}var bge=L(ge(),1),u$e=L(z(),1),EUn={m:0,p:1.5,borderRadius:1,bgcolor:e=>e.palette.mode==="dark"?"#1b1b1c":"#f3f4f6",fontFamily:"'Roboto Mono', ui-monospace, Menlo, monospace",fontSize:12,lineHeight:1.7,maxHeight:320,overflow:"auto",whiteSpace:"pre"};function emr({lines:e}){let t=(0,bge.useRef)(null);return(0,bge.useLayoutEffect)(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight)},[e]),e.length===0?(0,u$e.jsx)($e,{variant:"body2",color:"text.secondary",children:"No history yet."}):(0,u$e.jsx)(fe,{component:"pre",ref:t,sx:EUn,children:e.join(`
|
|
3976
|
-
`)})}var Q9=L(z(),1);function tmr({entry:e,state:t}){return(0,Q9.jsxs)(fe,{sx:{px:2,pb:2,pl:{xs:2,sm:7.5},display:"grid",gap:1.5},children:[(0,Q9.jsx)(Jpr,{entry:e,state:t}),(0,Q9.jsx)($e,{variant:"caption",color:"text.secondary",children:"History \xB7 ~/.assist/watchers/"}),(0,Q9.jsx)(emr,{lines:e.status?.history??[]})]})}var RUn={ready:"warning",diverged:"error"},rmr=e=>t=>{let r=RUn[e];return{display:"grid",gridTemplateColumns:{xs:"28px minmax(0,1fr)",sm:"28px minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.6fr)"},alignItems:"center",columnGap:1.5,rowGap:1,px:2,py:1.5,boxShadow:r?`inset 3px 0 0 ${t.palette[r].main}`:"none"}};var nmr=L(z(),1),imr=ft((0,nmr.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward");var omr=L(z(),1),amr=ft((0,omr.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96M3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4z"}),"CloudOff");var smr=L(z(),1),lmr=ft((0,smr.jsx)("path",{d:"M6 19h4V5H6zm8-14v14h4V5z"}),"Pause");var cmr=L(z(),1),umr=ft((0,cmr.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var P2=L(z(),1),AUn={ok:{tone:"success",icon:(0,P2.jsx)(x1,{})},ready:{tone:"warning",icon:(0,P2.jsx)(imr,{})},diverged:{tone:"error",icon:(0,P2.jsx)(umr,{})},retrying:{tone:"warning",icon:(0,P2.jsx)(ode,{})},off:{tone:"neutral",icon:(0,P2.jsx)(lmr,{})},unavailable:{tone:"neutral",icon:(0,P2.jsx)(amr,{})}};function PUn(e,t){return t==="neutral"?e.palette.text.secondary:e.palette[t].main}function fmr({state:e}){let{tone:t,icon:r}=AUn[e.kind];return(0,P2.jsxs)(fe,{component:"span",sx:n=>({alignSelf:"flex-start",display:"inline-flex",alignItems:"center",gap:.75,height:24,px:1.25,borderRadius:3,fontSize:12,fontWeight:500,whiteSpace:"nowrap",color:PUn(n,t),bgcolor:t==="neutral"?n.palette.action.hover:Ea(n.palette[t].main,.1),border:t==="neutral"?`1px solid ${n.palette.divider}`:0,"& svg":{fontSize:14}}),children:[r,e.label]})}var Y1=L(z(),1),dmr={gridColumn:{xs:"2",sm:"auto"}},LUn={fontFamily:"'Roboto Mono', ui-monospace, Menlo, monospace",fontSize:12,fontVariantNumeric:"tabular-nums"};function hmr({entry:e}){let t=e.status;if(!t)return(0,Y1.jsx)($e,{variant:"caption",color:"text.secondary",sx:dmr,children:"\u2014"});let r=t.running!==t.built;return(0,Y1.jsxs)(fe,{sx:{...dmr,display:"flex",flexDirection:"column"},children:[(0,Y1.jsxs)(fe,{component:"span",sx:LUn,children:["v",t.running,r&&(0,Y1.jsxs)(Y1.Fragment,{children:[" ",(0,Y1.jsx)(fe,{component:"span",sx:{color:"warning.main"},children:"\u2192"})," ","v",t.built]})]}),(0,Y1.jsx)($e,{variant:"caption",color:"text.secondary",children:r?"running \u2192 built":"running"})]})}function xge(e){return(e.status?.restart.length??0)>0}function Tge(e){let{status:t}=e;if(!t)return{kind:"unavailable",label:"Unavailable",line:e.error??"no update state"};let{loop:r}=t,n=fa(r.since);return r.phase==="diverged"?{kind:"diverged",label:"Diverged \xB7 fixing",line:`diverged ${n}${r.escalationId?` \xB7 session ${r.escalationId}`:""}`}:xge(e)?{kind:"ready",label:"Restart to update",line:`restart ${t.restart.map(vge).join(" + ")}`}:r.phase==="off"?{kind:"off",label:"Off",line:r.reason??"not running"}:r.phase==="retrying"?{kind:"retrying",label:"Retrying",line:`${r.reason??"lap failed"} \xB7 ${n}`}:{kind:"ok",label:"Up to date",line:`watching origin since ${n}`}}var np=L(z(),1),pmr={display:"flex",flexDirection:"column",minWidth:0};function gmr({entry:e}){let[t,r]=(0,mmr.useState)(!1),n=Tge(e),i=e.local?"this machine":"linked";return(0,np.jsxs)(fe,{component:"article",sx:{"& + &":{borderTop:1,borderColor:"divider"}},children:[(0,np.jsxs)(fe,{sx:rmr(n.kind),children:[(0,np.jsx)(Zpr,{open:t,label:`${t?"Hide":"Show"} history for ${e.name}`,onToggle:()=>r(o=>!o)}),(0,np.jsxs)(fe,{sx:pmr,children:[(0,np.jsx)($e,{variant:"body2",sx:{fontWeight:500},children:e.name}),(0,np.jsx)($e,{variant:"caption",color:"text.secondary",noWrap:!0,children:e.status?`${i} \xB7 ${e.status.installDir}`:i})]}),(0,np.jsx)(hmr,{entry:e}),(0,np.jsxs)(fe,{sx:{...pmr,gridColumn:{xs:"2",sm:"auto"},gap:.25},children:[(0,np.jsx)(fmr,{state:n}),(0,np.jsx)($e,{variant:"caption",color:"text.secondary",noWrap:!0,children:n.line})]})]}),t&&(0,np.jsx)(tmr,{entry:e,state:n})]})}function ymr(e){let t=e.map(o=>Tge(o).kind),r=o=>t.filter(a=>a===o).length,n=r("ready"),i=[`${e.length} node${e.length===1?"":"s"}`];return i.push(n?`${n} ready to restart`:"all running their latest build"),r("diverged")&&i.push(`${r("diverged")} diverged`),r("unavailable")&&i.push(`${r("unavailable")} unavailable`),i.join(" \xB7 ")}var K1=L(z(),1);function vmr(){let{entries:e,loading:t}=yge();return(0,K1.jsx)(nc,{loading:t,header:(0,K1.jsxs)(K1.Fragment,{children:[(0,K1.jsx)($e,{variant:"h5",component:"h1",children:"Updates"}),(0,K1.jsx)($e,{variant:"body2",color:"text.secondary",sx:{mb:3},children:ymr(e)})]}),children:(0,K1.jsx)(on,{variant:"outlined",component:"section","aria-label":"Nodes",children:e.map(r=>(0,K1.jsx)(gmr,{entry:r},r.name))})})}var agr=L(ge(),1);var J9=L(ge(),1);function Sge(e,t){let r=(0,J9.useRef)(null),[n,i]=(0,J9.useState)();return(0,J9.useLayoutEffect)(()=>{e===t&&r.current&&i(r.current.offsetHeight)},[e,t]),{ref:r,height:n}}var xmr=L(ge(),1);function Cge(e){if(e.startsWith("local:")){let n=e.slice(6).replace(/\/+$/,"").split("/").filter(Boolean);return n[n.length-1]??e}let t=e.indexOf("/");return t===-1?e:e.slice(t+1)}function wge(e){let t=o=>o.startsWith("local:"),r=o=>{let a=Cge(o),s=a.split("/");return s[s.length-1]??a},n=new Map;for(let o of new Set(e)){if(t(o))continue;let a=r(o);n.set(a,(n.get(a)??0)+1)}let i=new Map;for(let o of e){if(t(o)){i.set(o,Cge(o));continue}let a=r(o),s=(n.get(a)??0)>1;i.set(o,s?Cge(o):a)}return i}var Qj={field:"lastPhase",direction:"desc"};var Jj="all",eY="all";async function bmr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r.origin!==Jj&&n.set("origin",r.origin),r.status!==eY&&n.set("status",r.status),r.sort.field!==Qj.field&&n.set("sort",r.sort.field),r.sort.direction!==Qj.direction&&n.set("direction",r.sort.direction);let i=await fetch(`/api/usage/items?${n}`);if(!i.ok)throw new Error(`Failed to load item usage (HTTP ${i.status}).`);return i.json()}var tY=L(z(),1);function Tmr({origins:e,origin:t,onChange:r}){let n=(0,xmr.useMemo)(()=>wge(e.map(o=>o.origin)),[e]),i=e.reduce((o,a)=>o+a.count,0);return(0,tY.jsxs)(ni,{select:!0,size:"small",label:"Repo",value:t,onChange:o=>r(o.target.value),sx:{minWidth:220},children:[(0,tY.jsx)(cn,{value:Jj,children:`All repos (${i})`}),e.map(o=>(0,tY.jsx)(cn,{value:o.origin,children:`${n.get(o.origin)??o.origin} (${o.count})`},o.origin))]})}var f$e=L(z(),1),MUn=[{value:eY,label:"All"},{value:"done",label:"Done"},{value:"running",label:"Running"}];function Smr({status:e,onChange:t}){return(0,f$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(r,n)=>n&&t(n),"aria-label":"Filter items by status",children:MUn.map(r=>(0,f$e.jsx)(hs,{value:r.value,children:r.label},r.value))})}var eB=L(z(),1),IUn={display:"flex",alignItems:"center",gap:2,flexWrap:"wrap",mb:2},DUn="Repos show their bare name, or org/repo when two share one. Totals sum every phase's recorded usage.";function Cmr({origins:e,origin:t,onOriginChange:r,status:n,onStatusChange:i}){return(0,eB.jsxs)(fe,{sx:IUn,children:[(0,eB.jsx)(Smr,{status:n,onChange:i}),(0,eB.jsx)(Tmr,{origins:e,origin:t,onChange:r}),(0,eB.jsx)($e,{variant:"caption",color:"text.disabled",children:DUn})]})}var Omr=L(ge(),1);var kge=L(z(),1),OUn={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},wmr={display:"block",fontSize:"0.75rem",color:"text.disabled",whiteSpace:"nowrap"},NUn={...wmr,fontStyle:"italic"};function _ge({total:e,perPhase:t,partial:r}){return(0,kge.jsxs)(_n,{align:"right",sx:OUn,children:[e,t?(0,kge.jsx)($e,{component:"span",sx:r?NUn:wmr,children:t}):null]})}var rY=L(z(),1),BUn={width:"100%",maxWidth:0},FUn={display:"block",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},$Un={display:"block",mt:"2px",fontSize:"0.75rem",color:"text.secondary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function _mr({id:e,name:t,type:r,repoLabel:n}){return(0,rY.jsxs)(_n,{sx:BUn,children:[(0,rY.jsx)(xn,{component:ys,to:BT(e),underline:"hover",color:"text.primary",title:t,sx:FUn,children:t}),(0,rY.jsxs)($e,{component:"span",sx:$Un,children:[so(e)," \xB7 ",r," \xB7 ",n]})]})}function kmr(e){let t=Math.max(1,e.recordedPhases);return{active:`${sg(e.activeMs/t)} / phase`,tokens:`${Zf(Math.round((e.tokensUp+e.tokensDown)/t))} / phase`}}function Emr(e){if(!(e.status==="done"||e.recordedPhases>e.phaseCount))return`${e.recordedPhases} of ${e.phaseCount} phases`}var zUn=new Set(["done","wontdo"]);function Rmr(e){return zUn.has(e)?{label:e,color:cJ[e]}:{label:"running",color:"warning"}}var d$e=L(z(),1),HUn={height:20,fontSize:"0.6875rem"};function Amr({status:e}){let t=Rmr(e);return(0,d$e.jsx)(_n,{children:(0,d$e.jsx)(bn,{label:t.label,size:"small",variant:"outlined",color:t.color,sx:HUn})})}var a0=L(z(),1),Pmr={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"};function Lmr({row:e,repoLabel:t}){let r=kmr(e);return(0,a0.jsxs)(Gu,{hover:!0,children:[(0,a0.jsx)(_mr,{id:e.id,name:e.name,type:e.type,repoLabel:t}),(0,a0.jsx)(Amr,{status:e.status}),(0,a0.jsx)(_ge,{total:String(e.phaseCount||e.recordedPhases),perPhase:Emr(e),partial:!0}),(0,a0.jsx)(_ge,{total:sg(e.activeMs),perPhase:r.active}),(0,a0.jsx)(_ge,{total:`\u2191 ${Zf(e.tokensUp)} \u2193 ${Zf(e.tokensDown)}`,perPhase:r.tokens}),(0,a0.jsx)(_n,{align:"right",sx:Pmr,children:(0,a0.jsxs)(fe,{component:"span",sx:{color:Ife(e.peakContextPct)},children:[Math.round(e.peakContextPct),"%"]})}),(0,a0.jsx)(_n,{align:"right",sx:Pmr,children:e.lastPhaseAt?fa(e.lastPhaseAt):"\u2014"})]})}var Mmr=[{label:"Item"},{label:"Status"},{label:"Phases",sort:"phases",numeric:!0},{label:"Active",sort:"active",numeric:!0,tooltip:"Accumulated active time across the item's phases \u2014 not wall clock."},{label:"Tokens",sort:"tokens",numeric:!0},{label:"Peak ctx",sort:"peakContext",numeric:!0,tooltip:"The highest context-window usage any one phase reached."},{label:"Last phase",sort:"lastPhase",numeric:!0,tooltip:"When the item's most recent phase session started."}];var zm=L(z(),1),UUn={"& th":{whiteSpace:"nowrap"}};function Imr({column:e}){return e.tooltip?(0,zm.jsx)(lr,{title:e.tooltip,describeChild:!0,children:(0,zm.jsx)("span",{children:e.label})}):(0,zm.jsx)(zm.Fragment,{children:e.label})}function Dmr({sort:e,onSort:t}){return(0,zm.jsx)(Dk,{sx:UUn,children:(0,zm.jsx)(Gu,{children:Mmr.map(r=>{let n=r.sort,i=n!==void 0&&e.field===n;return(0,zm.jsx)(_n,{align:r.numeric?"right":"left",sortDirection:i?e.direction:!1,children:n===void 0?(0,zm.jsx)(Imr,{column:r}):(0,zm.jsx)(q1e,{active:i,direction:i?e.direction:"desc",onClick:()=>t(n),children:(0,zm.jsx)(Imr,{column:r})})},r.label)})})})}var TR=L(z(),1),WUn={"& td, & th":{px:1.5}};function Nmr({rows:e,origins:t,sort:r,onSort:n}){let i=(0,Omr.useMemo)(()=>wge([...t,...e.map(o=>o.origin)]),[t,e]);return(0,TR.jsx)(Ik,{component:on,children:(0,TR.jsxs)(wv,{size:"small",sx:WUn,children:[(0,TR.jsx)(Dmr,{sort:r,onSort:n}),(0,TR.jsx)(_v,{children:e.map(o=>(0,TR.jsx)(Lmr,{row:o,repoLabel:i.get(o.origin)??o.origin},o.id))})]})})}function Bmr(e){let t=Math.max(1,e.medianPhases),r=e.repoCount===1?"repo":"repos";return{items:String(e.itemCount),itemsFoot:`across ${e.repoCount} ${r} \xB7 ${e.doneCount} done`,phases:String(Math.round(e.medianPhases*10)/10),active:sg(e.medianActiveMs),activeFoot:`${sg(e.medianActiveMs/t)} per phase`,tokens:Zf(Math.round(e.medianTokens)),tokensFoot:`${Zf(Math.round(e.medianTokens/t))} per phase`}}var tB=L(z(),1),Fmr={display:"block"},VUn={fontWeight:400,fontVariantNumeric:"tabular-nums"};function nY({label:e,value:t,foot:r}){return(0,tB.jsxs)(fe,{children:[(0,tB.jsx)($e,{variant:"caption",color:"text.secondary",sx:Fmr,children:e}),(0,tB.jsx)($e,{variant:"h5",sx:VUn,children:t}),r?(0,tB.jsx)($e,{variant:"caption",color:"text.disabled",sx:Fmr,children:r}):null]})}var SR=L(z(),1),GUn={display:"flex",flexDirection:{xs:"column",sm:"row"},mb:3,"& > *":{flex:1,minWidth:0,p:2},"& > * + *":{borderColor:"divider",borderTop:{xs:1,sm:0},borderLeft:{xs:0,sm:1}}};function $mr({summary:e}){let t=Bmr(e);return(0,SR.jsxs)(on,{sx:GUn,children:[(0,SR.jsx)(nY,{label:"Items with recorded usage",value:t.items,foot:t.itemsFoot}),(0,SR.jsx)(nY,{label:"Median phases",value:t.phases}),(0,SR.jsx)(nY,{label:"Median active time",value:t.active,foot:t.activeFoot}),(0,SR.jsx)(nY,{label:"Median tokens",value:t.tokens,foot:t.tokensFoot})]})}var ip=L(z(),1);function zmr({items:e,data:t}){let{rows:r,total:n,page:i,pageSize:o}=e,{ref:a,height:s}=Sge(r.length,o);return(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)($mr,{summary:t.summary}),(0,ip.jsx)(Cmr,{origins:t.origins,origin:e.origin,onOriginChange:e.selectOrigin,status:e.status,onStatusChange:e.selectStatus}),n===0?(0,ip.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:"No items match this filter."}):(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)(fe,{ref:a,sx:{minHeight:s},children:(0,ip.jsx)(Nmr,{rows:r,origins:t.origins.map(l=>l.origin),sort:e.sort,onSort:e.sortBy})}),(0,ip.jsx)(jF,{component:"div",count:n,page:i,rowsPerPage:o,rowsPerPageOptions:[o],onPageChange:(l,u)=>e.setPage(u)})]})]})}var L2=L(z(),1);function Hmr({items:e}){let{data:t}=e;return(0,L2.jsxs)(L2.Fragment,{children:[(0,L2.jsx)(fe,{sx:{height:4,mb:1},children:e.fetching&&(0,L2.jsx)(Mk,{})}),t?t.origins.length===0?(0,L2.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:"No item usage recorded yet."}):(0,L2.jsx)(zmr,{items:e,data:t}):null]})}function h$e(e,t,r){if(e==null)return;let n=Math.max(0,e-r),i=Math.max(0,t-n)/t;if(!(i<.05))return i}function Ege(e,t){let r=Math.max(0,e-t),n=Math.floor(r/86400),i=Math.floor(r%86400/3600),o=Math.floor(r%3600/60);return n>0?`${n}d ${i}h`:i>0?`${i}h ${o}m`:`${o}m`}function qUn(e,t,r,n){let i=h$e(t,r,n);if(i!=null)return e/i}function __(e,t,r,n){let i=qUn(e,t,r,n);return i==null?"ok":i>100?"over":i>75?"warn":"ok"}var jUn=["five_hour","seven_day"],YUn=["claude","codex","pi"];function Umr(e){let[t,r]=e.includes(":")?e.split(":",2):["claude",e],n=YUn.find(o=>o===t),i=jUn.find(o=>o===r);if(!(!n||!i)&&!(n==="claude"&&e.includes(":")))return{harness:n,window:i}}var Wmr={five_hour:{label:"5h",seconds:18e3},seven_day:{label:"7d",seconds:604800,tint:{light:"rgba(0, 0, 0, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}}};function rB(e){let t=Umr(e);if(!t)return Wmr.five_hour;let r=Wmr[t.window];return t.harness==="claude"?r:{...r,label:`${Lu(t.harness)} ${r.label}`}}var KUn={ok:"success.main",warn:"warning.main",over:"error.main"};function k_(e){return KUn[e]}var aY=L(z(),1),XUn={ok:"success",warn:"warning",over:"error"};function Vmr({percentage:e,level:t}){return(0,aY.jsxs)(fe,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,aY.jsx)(Mk,{variant:"determinate",value:Math.min(100,e),color:XUn[t],sx:{flexGrow:1,height:8,borderRadius:1}}),(0,aY.jsxs)(fe,{sx:{minWidth:40,textAlign:"right",color:k_(t)},children:[Math.round(e),"%"]})]})}function Gmr(e){return e.avgContextPct==null?"\u2014":`${Math.round(e.avgContextPct)}%`}var ZUn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function p$e(e){return ZUn.format(e)}var Rge=L(z(),1);function qmr({peak:e}){return(0,Rge.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:(0,Rge.jsx)(lr,{title:`Cycle started ${p$e(new Date(e.createdAt))}`,children:(0,Rge.jsx)("span",{children:p$e(new Date(e.resetsAt*1e3))})})})}var Ymr=L(z(),1);function jmr(){return(0,Ymr.jsx)(bn,{label:"reset",size:"small",color:"warning",variant:"outlined",title:"Quota reset mid-cycle \u2014 this is the peak reached before the reset.",sx:{ml:1}})}function Kmr(e){return!e.tokensUp&&!e.tokensDown?"\u2014":`\u2191 ${Zf(e.tokensUp)} \u2193 ${Zf(e.tokensDown)}`}var s0=L(z(),1);function Xmr({peak:e,now:t}){let{label:r,seconds:n,tint:i}=rB(e.window),o=__(e.usedPercentage,e.resetsAt,n,t);return(0,s0.jsxs)(Gu,{sx:a=>({backgroundColor:i?a.palette.mode==="dark"?i.dark:i.light:void 0}),children:[(0,s0.jsxs)(_n,{children:[r,e.resetDetected&&(0,s0.jsx)(jmr,{})]}),(0,s0.jsx)(_n,{sx:{minWidth:160},children:(0,s0.jsx)(Vmr,{percentage:e.usedPercentage,level:o})}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:Gmr(e)}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:e.phaseCount??0}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:Kmr(e)}),(0,s0.jsx)(qmr,{peak:e})]})}var Age=L(ge(),1);function E_(e){let[t,r]=(0,Age.useState)(()=>Math.floor(Date.now()/1e3));return(0,Age.useEffect)(()=>{let n=setInterval(()=>r(Math.floor(Date.now()/1e3)),e);return()=>clearInterval(n)},[e]),t}var pc=L(z(),1);function Zmr({peaks:e}){let t=E_(3e4);return(0,pc.jsx)(Ik,{component:on,children:(0,pc.jsxs)(wv,{size:"small",children:[(0,pc.jsx)(Dk,{sx:{"& th":{whiteSpace:"nowrap"}},children:(0,pc.jsxs)(Gu,{children:[(0,pc.jsx)(_n,{children:"Window"}),(0,pc.jsx)(_n,{children:"Peak usage"}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Mean context-window usage across all readings in this rate-limit cycle \u2014 distinct from the Peak usage quota above.",children:(0,pc.jsx)("span",{children:"Avg context"})})}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Number of phase readings behind the average.",children:(0,pc.jsx)("span",{children:"Phases"})})}),(0,pc.jsx)(_n,{align:"right",children:"Tokens spent"}),(0,pc.jsx)(_n,{align:"right",children:"Cycle reset"})]})}),(0,pc.jsx)(_v,{children:e.map(r=>(0,pc.jsx)(Xmr,{peak:r,now:t},`${r.window}-${r.resetsAt}-${r.segment}`))})]})})}var R_=L(z(),1);function Qmr({rows:e,total:t,page:r,pageSize:n,onPageChange:i}){let{ref:o,height:a}=Sge(e.length,n);return(0,R_.jsxs)(R_.Fragment,{children:[(0,R_.jsx)(fe,{ref:o,sx:{minHeight:a},children:(0,R_.jsx)(Zmr,{peaks:e})}),(0,R_.jsx)(jF,{component:"div",count:t,page:r,rowsPerPage:n,rowsPerPageOptions:[n],onPageChange:(s,l)=>i(l)})]})}var m$e=L(z(),1),Jmr=["five_hour","seven_day"],QUn=["codex:five_hour","codex:seven_day"];function JUn(e){let t=e?[...Jmr,...QUn]:Jmr;return[{value:"all",label:"All"},...t.map(r=>({value:r,label:rB(r).label}))]}function egr({window:e,onChange:t}){let{exposeCodexActions:r}=$T();return(0,m$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(n,i)=>i&&t(i),"aria-label":"Filter peaks by rate-limit window",children:JUn(r).map(n=>(0,m$e.jsx)(hs,{value:n.value,children:n.label},n.value))})}var X1=L(z(),1);function tgr({history:e}){let{window:t,total:r}=e;return(0,X1.jsxs)(X1.Fragment,{children:[(0,X1.jsx)(egr,{window:t,onChange:e.selectWindow}),(0,X1.jsx)(fe,{sx:{height:4,my:1},children:e.fetching&&(0,X1.jsx)(Mk,{})}),r===0?(0,X1.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:t==="all"?"No usage peaks recorded yet.":`No ${rB(t).label} usage peaks recorded yet.`}):(0,X1.jsx)(Qmr,{rows:e.rows,total:r,page:e.page,pageSize:e.pageSize,onPageChange:e.setPage})]})}var Lge=L(ge(),1);async function rgr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r!=="all"&&n.set("window",r);let i=await fetch(`/api/usage/history?${n}`);if(!i.ok)throw new Error(`Failed to load usage history (HTTP ${i.status}).`);return i.json()}var A_=L(ge(),1);function Pge(e,t,r=!0){let[n,i]=(0,A_.useState)(0),[o,a]=(0,A_.useState)(null),[s,l]=(0,A_.useState)(!1),[u,f]=(0,A_.useState)(null);(0,A_.useEffect)(()=>{if(!r)return;let p=!1;return l(!0),e(n,t).then(m=>{p||(a(m),l(!1))},m=>{p||(f(m instanceof Error?m:new Error(String(m))),l(!1))}),()=>{p=!0}},[e,n,t,r]);let d=o?.total??0;(0,A_.useEffect)(()=>{if(d===0)return;let p=Math.ceil(d/t)-1;n>p&&i(p)},[n,t,d]);let h=o?.rows??[];return{data:o,rows:h,total:d,loaded:o!==null,fetching:s,error:u,page:n,setPage:i,pageSize:t}}var eWn=30;function ngr(){let[e,t]=(0,Lge.useState)("all"),r=(0,Lge.useCallback)((o,a)=>rgr(o,a,e),[e]),n=Pge(r,eWn);return{...n,window:e,selectWindow:o=>{t(o),n.setPage(0)}}}var nB=L(ge(),1);function igr(e,t){return e.field!==t?{field:t,direction:"desc"}:{field:t,direction:e.direction==="desc"?"asc":"desc"}}var tWn=30;function ogr(e){let[t,r]=(0,nB.useState)(Jj),[n,i]=(0,nB.useState)(eY),[o,a]=(0,nB.useState)(Qj),s=(0,nB.useCallback)((h,p)=>bmr(h,p,{origin:t,status:n,sort:o}),[t,n,o]),l=Pge(s,tWn,e);return{...l,origin:t,selectOrigin:h=>{r(h),l.setPage(0)},status:n,selectStatus:h=>{i(h),l.setPage(0)},sort:o,sortBy:h=>{a(p=>igr(p,h)),l.setPage(0)}}}var P_=L(z(),1),rWn={borderBottom:1,borderColor:"divider",mb:2};function sgr(){let[e,t]=(0,agr.useState)("limits"),r=ngr(),n=ogr(e==="items");if(r.error)throw r.error;if(n.error)throw n.error;return(0,P_.jsxs)(nc,{loading:!r.loaded,title:"Usage history",maxWidth:"lg",children:[(0,P_.jsxs)(Nk,{value:e,onChange:(i,o)=>t(o),textColor:"inherit",indicatorColor:"secondary",sx:rWn,"aria-label":"Usage history views",children:[(0,P_.jsx)(Cv,{label:"Rate limits",value:"limits"}),(0,P_.jsx)(Cv,{label:"Items",value:"items"})]}),e==="limits"?(0,P_.jsx)(tgr,{history:r}):(0,P_.jsx)(Hmr,{items:n})]})}var hi=L(z(),1);function nWn({socket:e}){return(0,hi.jsx)(SF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,hi.jsx)(dGt,{socket:e})})}function lgr({socket:e}){return W0("AppRoutes"),(0,hi.jsxs)(hi.Fragment,{children:[(0,hi.jsx)(gsr,{}),(0,hi.jsx)(c5,{children:(0,hi.jsxs)(gs,{element:(0,hi.jsx)(XYt,{socket:e}),children:[(0,hi.jsx)(gs,{path:"sessions",element:(0,hi.jsx)(Xpr,{socket:e})}),(0,hi.jsx)(gs,{path:"backlog/*",element:(0,hi.jsx)(nWn,{socket:e})}),(0,hi.jsx)(gs,{path:"next",element:(0,hi.jsx)(Aar,{sessions:e.sessions,selectSession:e.selectSession})}),(0,hi.jsx)(gs,{path:"news",element:(0,hi.jsx)(zor,{})}),(0,hi.jsx)(gs,{path:"releases",element:(0,hi.jsx)(dsr,{})}),(0,hi.jsx)(gs,{path:"usage",element:(0,hi.jsx)(sgr,{})}),(0,hi.jsx)(gs,{path:"backups",element:(0,hi.jsx)(nKt,{})}),(0,hi.jsx)(gs,{path:"config",element:(0,hi.jsx)(jXt,{})}),(0,hi.jsx)(gs,{path:"updates",element:(0,hi.jsx)(vmr,{})}),(0,hi.jsx)(gs,{path:"diff",element:(0,hi.jsx)(ior,{socket:e})}),(0,hi.jsx)(gs,{path:"file",element:(0,hi.jsx)(Oor,{socket:e})}),(0,hi.jsx)(gs,{path:"*",element:(0,hi.jsx)(Qxe,{to:"/sessions",replace:!0})})]})})]})}var Nge=L(ge(),1);var Oge=L(ge(),1);function cgr(e,t,r){if(!e)return"Select a repo to search files.";if(r.error)return"Couldn't search files in this repo.";if(!(r.files.length>0||r.loading))return t?"No matching files.":"No files in this repo."}var L_=L(z(),1),iWn={display:"flex",gap:1,alignItems:"center",minWidth:0},oWn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},aWn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},sWn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function lWn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function ugr({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,L_.jsx)(Sp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=lWn(i);return(0,L_.jsxs)(cn,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:iWn,children:[(0,L_.jsx)(c9,{path:i}),(0,L_.jsxs)(fe,{sx:oWn,children:[(0,L_.jsx)($e,{component:"span",sx:aWn,children:s}),(0,L_.jsx)($e,{component:"span",color:"text.secondary",sx:sWn,children:a})]})]},i)})})}var Mge=L(z(),1),cWn={maxHeight:420,overflowY:"auto"},uWn={px:2,py:2,fontSize:13};function fgr({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,Mge.jsx)(fe,{sx:cWn,children:e?(0,Mge.jsx)($e,{color:"text.secondary",sx:uWn,children:e}):(0,Mge.jsx)(ugr,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var dgr=L(z(),1),fWn={mt:6,alignSelf:"flex-start"};function Ige({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,dgr.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:fWn},transition:{onEntered:t}},children:n})}var Dge=L(ge(),1);var hgr={files:[],loading:!1,error:!1};function pgr(e,t){let[r,n]=(0,Dge.useState)(hgr),i=vr();return(0,Dge.useEffect)(()=>{if(!e){n(hgr);return}let o=!1;return n(s=>({...s,loading:!0})),(async()=>{try{let s=await fetch(un(`/api/files?cwd=${encodeURIComponent(e)}&q=${encodeURIComponent(t)}`,i));if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json();if(o)return;n({files:Array.isArray(l.files)?l.files:[],loading:!1,error:!1})}catch{o||n({files:[],loading:!1,error:!0})}})(),()=>{o=!0}},[e,t,i]),r}var CR=L(z(),1);function dWn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function mgr({onClose:e}){let{worktreeNode:t}=$n();return(0,CR.jsx)(Yu.Provider,{value:t,children:(0,CR.jsx)(hWn,{onClose:e})})}function hWn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,Oge.useState)(""),o=pgr(t,n),a=Xi(),s=(0,Oge.useRef)(null),l=p=>a(dWn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=HT(o.files,n,l,e),h=p=>{l(p),e()};return(0,CR.jsxs)(Ige,{onClose:e,onEntered:()=>s.current?.focus(),children:[(0,CR.jsx)(mP,{autoFocus:!0,inputRef:s,value:n,onChange:i,onKeyDown:d,placeholder:"Search files by name..."}),(0,CR.jsx)(fgr,{message:cgr(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function ggr(e){zo(Xn("quickOpen").matches,e)}var vgr=L(z(),1);function ygr(){let[e,t]=(0,Nge.useState)(!1);return ggr((0,Nge.useCallback)(()=>t(!0),[])),e?(0,vgr.jsx)(mgr,{onClose:()=>t(!1)}):null}var Bge=L(z(),1);function bgr({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,Bge.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Bge.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,Bge.jsx)(Jt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var Uge=L(ge(),1);function xgr(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var Igr=L(ge(),1);var Tgr=L(z(),1),Sgr=ft((0,Tgr.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"}),"Circle");var M_="0.775.5";var pWn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function Cgr(e){return e?pWn[e]:"success.main"}function wgr(e){return e.split("-")[0].split(".").map(Number)}function _gr(e,t){if(!e||!t||e===t)return;let r=wgr(e),n=wgr(t);for(let i=0;i<Math.max(r.length,n.length);i++){let o=(r[i]??0)-(n[i]??0);if(Number.isNaN(o))return;if(o!==0)return o<0?"behind":"ahead"}}var Fge=L(ge(),1),g$e=(0,Fge.createContext)(null);function $ge(){return(0,Fge.useContext)(g$e)}var wR=L(z(),1),mWn={height:16,fontSize:10},gWn={opacity:.6,fontSize:"0.85em"};function yWn(e,t){if(t===e.local)return"this machine";let r=e.links.find(n=>n.name===t);return r?r.error?`${r.state}: ${r.error}`:r.state:""}function sY({nodes:e,name:t,showVersion:r=!1}){let n=$ge()??M_,i=e.links.find(a=>a.name===t),o=_gr(i?.peerVersion,n);return(0,wR.jsx)(lr,{title:yWn(e,t),placement:"right",children:(0,wR.jsxs)(fe,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,wR.jsx)(Sgr,{sx:{fontSize:8,color:Cgr(i?.state)}}),t,r&&i?.peerVersion&&(0,wR.jsxs)(fe,{component:"span",sx:gWn,children:["v",i.peerVersion]}),o&&(0,wR.jsx)(bn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:mWn})]})})}var _R=L(z(),1),vWn={opacity:.6},bWn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function kgr({nodes:e,name:t,clone:r}){let n=(0,_R.jsx)(sY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,_R.jsx)(fe,{component:"span",sx:vWn,children:n}):(0,_R.jsx)(lr,{title:uP(t,r.cloneTarget),children:(0,_R.jsxs)(fe,{component:"span",sx:bWn,children:[(0,_R.jsx)(cP,{sx:{fontSize:14}}),n]})})}var Rgr=L(z(),1),xWn={px:1.5,borderRadius:.75,fontSize:12,fontWeight:600,color:"text.secondary","&:hover":{color:"text.primary",bgcolor:"action.hover"},"&[aria-checked='true']":{color:"primary.main",bgcolor:"action.selected"},"&.Mui-focusVisible":{outline:2,outlineColor:"primary.main"}};function Egr({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,Rgr.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:xWn,children:t})}var Agr={ArrowRight:1,ArrowLeft:-1};function TWn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+Agr[e.key]+r)%r}function Pgr(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!Agr[i.key]){Bx(i);return}let o=TWn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var Lgr=L(ge(),1);function iB(e){return e?.querySelector('[aria-checked="true"]')}function Mgr(e,t){(0,Lgr.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=iB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var y$e=L(z(),1),SWn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function zge({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return Mgr(o,r),(0,y$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:Pgr(t,r,n,l),sx:SWn,children:t.map(u=>(0,y$e.jsx)(Egr,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var v$e=L(z(),1);function Dgr({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=gu(),a=(0,Igr.useRef)(null);return!o||!n||!e?null:(0,v$e.jsx)(zge,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,v$e.jsx)(kgr,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var Ngr=L(z(),1);function Ogr({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,Ngr.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:Bx,onFocus:o,onSelect:o,inputRef:n,placeholder:r,autoFocus:i,fullWidth:!0,multiline:!0,minRows:3,maxRows:12,slotProps:{htmlInput:{"aria-label":"Prompt"},input:{sx:{fontSize:14}}}})}var zgr=L(ge(),1);var M2={draft:{placeholder:"Describe the backlog item to draft...",submitLabel:"Start draft",sessionMode:"assist-draft"},bug:{placeholder:"Describe the bug: what happened, what you expected...",submitLabel:"File bug",sessionMode:"assist-bug"},prompt:{placeholder:fde,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},Bgr=Object.keys(M2);var b$e=L(z(),1);function Fgr({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,b$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,b$e.jsx)(cn,{role:"menuitemradio","aria-checked":o===t,selected:o===t,onClick:()=>{n(o),i()},sx:{fontSize:13},children:Lu(o)},o))})}var kR=L(z(),1);function $gr(e){return t=>t==="prompt"&&e?(0,kR.jsxs)(kR.Fragment,{children:["prompt",(0,kR.jsx)(fe,{component:"span",sx:{fontWeight:400,whiteSpace:"pre"},children:` \xB7 ${Lu(e)}`}),(0,kR.jsx)(Bp,{sx:{fontSize:18,mr:-.75}})]}):t}var ER=L(z(),1);function Hgr({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,zgr.useState)(null),a=e.mode==="prompt"&&r.length>1,s=()=>o(iB(n.modeRef.current)??null),l=u=>{a&&u==="prompt"?s():e.setMode(u)};return(0,ER.jsxs)(ER.Fragment,{children:[(0,ER.jsx)(zge,{label:"Mode",options:Bgr,value:e.mode,onChange:l,optionLabel:$gr(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,ER.jsx)(Fgr,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var Qgr=L(ge(),1);var x$e=L(z(),1),CWn={zIndex:e=>e.zIndex.modal+1};function Ugr({open:e,anchor:t,children:r}){return(0,x$e.jsx)(MA,{open:e,anchorEl:t,placement:"bottom-start",sx:CWn,children:(0,x$e.jsx)(on,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function Wgr(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var Vgr=L(QB(),1);function Ggr({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}Bx(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,Vgr.flushSync)(()=>{r(t),n()}),Bx(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function qgr(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>H0(n).toLowerCase().includes(r)):e}var T$e=L(ge(),1);function jgr(){let[e,t]=(0,T$e.useState)(!1),[r,n]=(0,T$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var Kgr=L(ge(),1);var Ygr=e=>e?H0(e):"";function Xgr(e){let[t,r]=(0,Kgr.useState)(()=>Ygr(e));return{text:t,setText:r,showRepo:n=>r(Ygr(n))}}function Zgr(e,t,r){let n=jgr(),i=Xgr(t),o=qgr(e,n.query),a=f=>{r(f),i.showRepo(f)},s=HT(o,n.query,a,n.close),l=()=>s.setHighlight(Math.max(e.indexOf(t),0)),u=()=>{l(),n.show()};return{open:n.open,text:i.text,filtered:o,highlight:s.highlight,setHighlight:s.setHighlight,onKeyDown:Ggr({open:n.open,highlighted:o[s.highlight],accept:a,close:n.close,navigate:s.onKeyDown,openList:u}),onClick:()=>{n.open||u()},onType:f=>{i.setText(f),n.filterBy(f)},onFocus:l,onBlur:()=>{n.close(),i.showRepo(t)},pick:f=>{a(f),n.close()}}}var oB=L(z(),1);function Jgr({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=Zgr(e,t,r),s=(0,Qgr.useRef)(null);return(0,oB.jsxs)(fe,{ref:s,sx:{flex:1,minWidth:0},children:[(0,oB.jsx)(ni,{value:a.text,onChange:l=>a.onType(l.target.value),onFocus:l=>{l.target.select(),a.onFocus(),o()},inputRef:n,autoFocus:i,onClick:a.onClick,onBlur:a.onBlur,onKeyDown:a.onKeyDown,placeholder:"Repo",size:"small",fullWidth:!0,slotProps:Wgr(a.open)}),(0,oB.jsx)(Ugr,{open:a.open,anchor:s.current,children:(0,oB.jsx)(AJ,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var I_=L(z(),1);function e0r({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,I_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,I_.jsx)(Ogr,{value:r.prompt,onChange:r.setPrompt,placeholder:M2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,I_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,I_.jsx)(Jgr,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,I_.jsx)(Hgr,{...t})]}),(0,I_.jsx)(Dgr,{value:r.node,onChange:r.setNode,cloneState:e})]})}var aB=L(z(),1),wWn=["Enter start","Shift+Enter newline","Esc close"],_Wn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function t0r({submitLabel:e,disabled:t=!1}){return(0,aB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:_Wn,children:[(0,aB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:wWn.map(r=>(0,aB.jsx)($e,{variant:"caption",color:"text.secondary",children:r},r))}),(0,aB.jsx)(Jt,{type:"submit",variant:"contained",size:"small",disabled:t,children:e})]})}function r0r({mode:e,harness:t,prompt:r,cwd:n,node:i},o){let a=n||void 0,s=i?[i]:[];if(e==="prompt"){t==="claude"?o.onCreate(r,a,...s):o.onCreateHarness(t,r,a,...s);return}if(e==="design"){o.onCreateDesign(r,a,...s);return}let l=i?[{node:i}]:[];Gjt(M2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function n0r(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(gJ(r.prompt,n.onCreateAssist),!0):(r0r({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var RR=L(ge(),1);function i0r(e,t){let r=(0,RR.useRef)(e),n=(0,RR.useRef)(null),i=(0,RR.useRef)(null),o=(0,RR.useRef)(null),a=(0,RR.useCallback)(u=>{n.current=u;let{field:f,selectionStart:d,selectionEnd:h}=r.current;u&&f==="prompt"&&u.setSelectionRange(d,h)},[]),s=u=>{let f=u.target;t({field:"prompt",selectionStart:f.selectionStart,selectionEnd:f.selectionEnd})},l=()=>{if(o.current?.closest("form")?.contains(document.activeElement))return;let{field:u}=r.current;({repo:i.current,mode:iB(o.current),prompt:n.current}[u]??n.current)?.focus()};return{autoFocus:e.field,promptRef:a,repoRef:i,modeRef:o,trackPrompt:s,trackRepo:()=>t({...e,field:"repo"}),trackMode:()=>t({...e,field:"mode"}),restore:l}}function kWn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:LJ(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function o0r(e,t){let{names:r,visible:n}=gu(),i=TJ(t,n?r:[void 0]);return{cloneState:i,target:kWn(t,e,i(e))}}var sB=L(z(),1);function a0r({draft:e,launchers:t,onClose:r}){let n=i0r(e.focus,e.setFocus),i=xgr($T()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=o0r(e.node,e.cwd),l=u=>{u.preventDefault(),n0r(e,o,a,t)&&r()};return(0,sB.jsx)(Ige,{onClose:r,onEntered:n.restore,centered:!0,children:(0,sB.jsxs)("form",{onSubmit:l,children:[(0,sB.jsx)(e0r,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,sB.jsx)(t0r,{submitLabel:a.kind==="clone"?"Clone":M2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var Hge=L(ge(),1);function s0r(e){let[t,r]=(0,Hge.useState)(null);return(0,Hge.useEffect)(()=>{let n=!1;return(async()=>{let i="draft";try{let o=e?`?cwd=${encodeURIComponent(e)}`:"",s=await(await fetch(`/api/new-session-defaults${o}`)).json();Object.hasOwn(M2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function l0r(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var I2=L(ge(),1),c0r={field:"prompt",selectionStart:0,selectionEnd:0};function u0r(){let[e,t]=(0,I2.useState)(""),[r,n]=(0,I2.useState)(),[i,o]=(0,I2.useState)(),[a,s]=(0,I2.useState)("claude"),[l,u]=(0,I2.useState)(),[f,d]=(0,I2.useState)(c0r),h=(0,I2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(c0r)},[]);return{prompt:e,cwd:r,mode:i,harness:a,node:l,focus:f,setPrompt:t,setNode:u,setCwd:n,setMode:o,setHarness:s,setFocus:d,clear:h}}function f0r(e=s0r){let{selectedCwd:t}=$n(),r=gu(),n=u0r(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:l0r(n.node,r)}:null}function d0r(e){zo(Xn("newSession").matches,e)}var h0r=L(ge(),1);function p0r(e,t){let{selectedCwd:r}=$n(),[n,i]=Pc(),o=n.get("new"),a=n.get("newCwd")??r,{setPrompt:s,setCwd:l,setFocus:u}=e??{};(0,h0r.useEffect)(()=>{o===null||!s||!l||!u||(o&&(s(o),l(a),u({field:"prompt",selectionStart:o.length,selectionEnd:o.length})),t(),i(f=>(f.delete("new"),f.delete("newCwd"),f),{replace:!0}))},[o,a,s,l,u,t,i])}var g0r=L(z(),1);function m0r({launchers:e}){let[t,r]=(0,Uge.useState)(!1),n=f0r(),i=(0,Uge.useCallback)(()=>r(!0),[]);return d0r(i),p0r(n,i),!t||!n?null:(0,g0r.jsx)(a0r,{draft:n,launchers:e,onClose:()=>r(!1)})}var Wge=L(z(),1);function y0r({reconnecting:e}){return(0,Wge.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Wge.jsx)(ri,{severity:"info",variant:"filled",icon:(0,Wge.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var Z1=L(z(),1);function v0r({socket:e,onViewLaunchedSession:t}){return(0,Z1.jsxs)(Z1.Fragment,{children:[(0,Z1.jsx)(ygr,{}),(0,Z1.jsx)(m0r,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,Z1.jsx)(y0r,{reconnecting:e.reconnecting}),(0,Z1.jsx)(Mu,{error:e.error,onClose:e.clearError}),(0,Z1.jsx)(bgr,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var l0=L(ge(),1);async function b0r(e,t){try{let r=await fetch(un("/api/updates",t?void 0:e)),n=await r.json();if(!r.ok)throw new Error(n?.error??`HTTP ${r.status}`);return{name:e,local:t,status:n}}catch(r){return{name:e,local:t,error:r instanceof Error?r.message:"Failed to load update state"}}}var EWn=6e4;function x0r(e){let t=e.nodes?.local,r=e.names.join(`
|
|
3976
|
+
`)})}var Q9=L(z(),1);function tmr({entry:e,state:t}){return(0,Q9.jsxs)(fe,{sx:{px:2,pb:2,pl:{xs:2,sm:7.5},display:"grid",gap:1.5},children:[(0,Q9.jsx)(Jpr,{entry:e,state:t}),(0,Q9.jsx)($e,{variant:"caption",color:"text.secondary",children:"History \xB7 ~/.assist/watchers/"}),(0,Q9.jsx)(emr,{lines:e.status?.history??[]})]})}var RUn={ready:"warning",diverged:"error"},rmr=e=>t=>{let r=RUn[e];return{display:"grid",gridTemplateColumns:{xs:"28px minmax(0,1fr)",sm:"28px minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.6fr)"},alignItems:"center",columnGap:1.5,rowGap:1,px:2,py:1.5,boxShadow:r?`inset 3px 0 0 ${t.palette[r].main}`:"none"}};var nmr=L(z(),1),imr=ft((0,nmr.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward");var omr=L(z(),1),amr=ft((0,omr.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96M3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4z"}),"CloudOff");var smr=L(z(),1),lmr=ft((0,smr.jsx)("path",{d:"M6 19h4V5H6zm8-14v14h4V5z"}),"Pause");var cmr=L(z(),1),umr=ft((0,cmr.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var P2=L(z(),1),AUn={ok:{tone:"success",icon:(0,P2.jsx)(x1,{})},ready:{tone:"warning",icon:(0,P2.jsx)(imr,{})},diverged:{tone:"error",icon:(0,P2.jsx)(umr,{})},retrying:{tone:"warning",icon:(0,P2.jsx)(ode,{})},off:{tone:"neutral",icon:(0,P2.jsx)(lmr,{})},unavailable:{tone:"neutral",icon:(0,P2.jsx)(amr,{})}};function PUn(e,t){return t==="neutral"?e.palette.text.secondary:e.palette[t].main}function fmr({state:e}){let{tone:t,icon:r}=AUn[e.kind];return(0,P2.jsxs)(fe,{component:"span",sx:n=>({alignSelf:"flex-start",display:"inline-flex",alignItems:"center",gap:.75,height:24,px:1.25,borderRadius:3,fontSize:12,fontWeight:500,whiteSpace:"nowrap",color:PUn(n,t),bgcolor:t==="neutral"?n.palette.action.hover:Ea(n.palette[t].main,.1),border:t==="neutral"?`1px solid ${n.palette.divider}`:0,"& svg":{fontSize:14}}),children:[r,e.label]})}var Y1=L(z(),1),dmr={gridColumn:{xs:"2",sm:"auto"}},LUn={fontFamily:"'Roboto Mono', ui-monospace, Menlo, monospace",fontSize:12,fontVariantNumeric:"tabular-nums"};function hmr({entry:e}){let t=e.status;if(!t)return(0,Y1.jsx)($e,{variant:"caption",color:"text.secondary",sx:dmr,children:"\u2014"});let r=t.running!==t.built;return(0,Y1.jsxs)(fe,{sx:{...dmr,display:"flex",flexDirection:"column"},children:[(0,Y1.jsxs)(fe,{component:"span",sx:LUn,children:["v",t.running,r&&(0,Y1.jsxs)(Y1.Fragment,{children:[" ",(0,Y1.jsx)(fe,{component:"span",sx:{color:"warning.main"},children:"\u2192"})," ","v",t.built]})]}),(0,Y1.jsx)($e,{variant:"caption",color:"text.secondary",children:r?"running \u2192 built":"running"})]})}function xge(e){return(e.status?.restart.length??0)>0}function Tge(e){let{status:t}=e;if(!t)return{kind:"unavailable",label:"Unavailable",line:e.error??"no update state"};let{loop:r}=t,n=fa(r.since);return r.phase==="diverged"?{kind:"diverged",label:"Diverged \xB7 fixing",line:`diverged ${n}${r.escalationId?` \xB7 session ${r.escalationId}`:""}`}:xge(e)?{kind:"ready",label:"Restart to update",line:`restart ${t.restart.map(vge).join(" + ")}`}:r.phase==="off"?{kind:"off",label:"Off",line:r.reason??"not running"}:r.phase==="retrying"?{kind:"retrying",label:"Retrying",line:`${r.reason??"lap failed"} \xB7 ${n}`}:{kind:"ok",label:"Up to date",line:`watching origin since ${n}`}}var np=L(z(),1),pmr={display:"flex",flexDirection:"column",minWidth:0};function gmr({entry:e}){let[t,r]=(0,mmr.useState)(!1),n=Tge(e),i=e.local?"this machine":"linked";return(0,np.jsxs)(fe,{component:"article",sx:{"& + &":{borderTop:1,borderColor:"divider"}},children:[(0,np.jsxs)(fe,{sx:rmr(n.kind),children:[(0,np.jsx)(Zpr,{open:t,label:`${t?"Hide":"Show"} history for ${e.name}`,onToggle:()=>r(o=>!o)}),(0,np.jsxs)(fe,{sx:pmr,children:[(0,np.jsx)($e,{variant:"body2",sx:{fontWeight:500},children:e.name}),(0,np.jsx)($e,{variant:"caption",color:"text.secondary",noWrap:!0,children:e.status?`${i} \xB7 ${e.status.installDir}`:i})]}),(0,np.jsx)(hmr,{entry:e}),(0,np.jsxs)(fe,{sx:{...pmr,gridColumn:{xs:"2",sm:"auto"},gap:.25},children:[(0,np.jsx)(fmr,{state:n}),(0,np.jsx)($e,{variant:"caption",color:"text.secondary",noWrap:!0,children:n.line})]})]}),t&&(0,np.jsx)(tmr,{entry:e,state:n})]})}function ymr(e){let t=e.map(o=>Tge(o).kind),r=o=>t.filter(a=>a===o).length,n=r("ready"),i=[`${e.length} node${e.length===1?"":"s"}`];return i.push(n?`${n} ready to restart`:"all running their latest build"),r("diverged")&&i.push(`${r("diverged")} diverged`),r("unavailable")&&i.push(`${r("unavailable")} unavailable`),i.join(" \xB7 ")}var K1=L(z(),1);function vmr(){let{entries:e,loading:t}=yge();return(0,K1.jsx)(nc,{loading:t,header:(0,K1.jsxs)(K1.Fragment,{children:[(0,K1.jsx)($e,{variant:"h5",component:"h1",children:"Updates"}),(0,K1.jsx)($e,{variant:"body2",color:"text.secondary",sx:{mb:3},children:ymr(e)})]}),children:(0,K1.jsx)(on,{variant:"outlined",component:"section","aria-label":"Nodes",children:e.map(r=>(0,K1.jsx)(gmr,{entry:r},r.name))})})}var agr=L(ge(),1);var J9=L(ge(),1);function Sge(e,t){let r=(0,J9.useRef)(null),[n,i]=(0,J9.useState)();return(0,J9.useLayoutEffect)(()=>{e===t&&r.current&&i(r.current.offsetHeight)},[e,t]),{ref:r,height:n}}var xmr=L(ge(),1);function Cge(e){if(e.startsWith("local:")){let n=e.slice(6).replace(/\/+$/,"").split("/").filter(Boolean);return n[n.length-1]??e}let t=e.indexOf("/");return t===-1?e:e.slice(t+1)}function wge(e){let t=o=>o.startsWith("local:"),r=o=>{let a=Cge(o),s=a.split("/");return s[s.length-1]??a},n=new Map;for(let o of new Set(e)){if(t(o))continue;let a=r(o);n.set(a,(n.get(a)??0)+1)}let i=new Map;for(let o of e){if(t(o)){i.set(o,Cge(o));continue}let a=r(o),s=(n.get(a)??0)>1;i.set(o,s?Cge(o):a)}return i}var Qj={field:"lastPhase",direction:"desc"};var Jj="all",eY="all";async function bmr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r.origin!==Jj&&n.set("origin",r.origin),r.status!==eY&&n.set("status",r.status),r.sort.field!==Qj.field&&n.set("sort",r.sort.field),r.sort.direction!==Qj.direction&&n.set("direction",r.sort.direction);let i=await fetch(`/api/usage/items?${n}`);if(!i.ok)throw new Error(`Failed to load item usage (HTTP ${i.status}).`);return i.json()}var tY=L(z(),1);function Tmr({origins:e,origin:t,onChange:r}){let n=(0,xmr.useMemo)(()=>wge(e.map(o=>o.origin)),[e]),i=e.reduce((o,a)=>o+a.count,0);return(0,tY.jsxs)(ni,{select:!0,size:"small",label:"Repo",value:t,onChange:o=>r(o.target.value),sx:{minWidth:220},children:[(0,tY.jsx)(cn,{value:Jj,children:`All repos (${i})`}),e.map(o=>(0,tY.jsx)(cn,{value:o.origin,children:`${n.get(o.origin)??o.origin} (${o.count})`},o.origin))]})}var f$e=L(z(),1),MUn=[{value:eY,label:"All"},{value:"done",label:"Done"},{value:"running",label:"Running"}];function Smr({status:e,onChange:t}){return(0,f$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(r,n)=>n&&t(n),"aria-label":"Filter items by status",children:MUn.map(r=>(0,f$e.jsx)(hs,{value:r.value,children:r.label},r.value))})}var eB=L(z(),1),IUn={display:"flex",alignItems:"center",gap:2,flexWrap:"wrap",mb:2},DUn="Repos show their bare name, or org/repo when two share one. Totals sum every phase's recorded usage.";function Cmr({origins:e,origin:t,onOriginChange:r,status:n,onStatusChange:i}){return(0,eB.jsxs)(fe,{sx:IUn,children:[(0,eB.jsx)(Smr,{status:n,onChange:i}),(0,eB.jsx)(Tmr,{origins:e,origin:t,onChange:r}),(0,eB.jsx)($e,{variant:"caption",color:"text.disabled",children:DUn})]})}var Omr=L(ge(),1);var kge=L(z(),1),OUn={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},wmr={display:"block",fontSize:"0.75rem",color:"text.disabled",whiteSpace:"nowrap"},NUn={...wmr,fontStyle:"italic"};function _ge({total:e,perPhase:t,partial:r}){return(0,kge.jsxs)(_n,{align:"right",sx:OUn,children:[e,t?(0,kge.jsx)($e,{component:"span",sx:r?NUn:wmr,children:t}):null]})}var rY=L(z(),1),BUn={width:"100%",maxWidth:0},FUn={display:"block",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},$Un={display:"block",mt:"2px",fontSize:"0.75rem",color:"text.secondary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function _mr({id:e,name:t,type:r,repoLabel:n}){return(0,rY.jsxs)(_n,{sx:BUn,children:[(0,rY.jsx)(xn,{component:ys,to:BT(e),underline:"hover",color:"text.primary",title:t,sx:FUn,children:t}),(0,rY.jsxs)($e,{component:"span",sx:$Un,children:[so(e)," \xB7 ",r," \xB7 ",n]})]})}function kmr(e){let t=Math.max(1,e.recordedPhases);return{active:`${sg(e.activeMs/t)} / phase`,tokens:`${Zf(Math.round((e.tokensUp+e.tokensDown)/t))} / phase`}}function Emr(e){if(!(e.status==="done"||e.recordedPhases>e.phaseCount))return`${e.recordedPhases} of ${e.phaseCount} phases`}var zUn=new Set(["done","wontdo"]);function Rmr(e){return zUn.has(e)?{label:e,color:cJ[e]}:{label:"running",color:"warning"}}var d$e=L(z(),1),HUn={height:20,fontSize:"0.6875rem"};function Amr({status:e}){let t=Rmr(e);return(0,d$e.jsx)(_n,{children:(0,d$e.jsx)(bn,{label:t.label,size:"small",variant:"outlined",color:t.color,sx:HUn})})}var a0=L(z(),1),Pmr={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"};function Lmr({row:e,repoLabel:t}){let r=kmr(e);return(0,a0.jsxs)(Gu,{hover:!0,children:[(0,a0.jsx)(_mr,{id:e.id,name:e.name,type:e.type,repoLabel:t}),(0,a0.jsx)(Amr,{status:e.status}),(0,a0.jsx)(_ge,{total:String(e.phaseCount||e.recordedPhases),perPhase:Emr(e),partial:!0}),(0,a0.jsx)(_ge,{total:sg(e.activeMs),perPhase:r.active}),(0,a0.jsx)(_ge,{total:`\u2191 ${Zf(e.tokensUp)} \u2193 ${Zf(e.tokensDown)}`,perPhase:r.tokens}),(0,a0.jsx)(_n,{align:"right",sx:Pmr,children:(0,a0.jsxs)(fe,{component:"span",sx:{color:Ife(e.peakContextPct)},children:[Math.round(e.peakContextPct),"%"]})}),(0,a0.jsx)(_n,{align:"right",sx:Pmr,children:e.lastPhaseAt?fa(e.lastPhaseAt):"\u2014"})]})}var Mmr=[{label:"Item"},{label:"Status"},{label:"Phases",sort:"phases",numeric:!0},{label:"Active",sort:"active",numeric:!0,tooltip:"Accumulated active time across the item's phases \u2014 not wall clock."},{label:"Tokens",sort:"tokens",numeric:!0},{label:"Peak ctx",sort:"peakContext",numeric:!0,tooltip:"The highest context-window usage any one phase reached."},{label:"Last phase",sort:"lastPhase",numeric:!0,tooltip:"When the item's most recent phase session started."}];var zm=L(z(),1),UUn={"& th":{whiteSpace:"nowrap"}};function Imr({column:e}){return e.tooltip?(0,zm.jsx)(lr,{title:e.tooltip,describeChild:!0,children:(0,zm.jsx)("span",{children:e.label})}):(0,zm.jsx)(zm.Fragment,{children:e.label})}function Dmr({sort:e,onSort:t}){return(0,zm.jsx)(Dk,{sx:UUn,children:(0,zm.jsx)(Gu,{children:Mmr.map(r=>{let n=r.sort,i=n!==void 0&&e.field===n;return(0,zm.jsx)(_n,{align:r.numeric?"right":"left",sortDirection:i?e.direction:!1,children:n===void 0?(0,zm.jsx)(Imr,{column:r}):(0,zm.jsx)(q1e,{active:i,direction:i?e.direction:"desc",onClick:()=>t(n),children:(0,zm.jsx)(Imr,{column:r})})},r.label)})})})}var TR=L(z(),1),WUn={"& td, & th":{px:1.5}};function Nmr({rows:e,origins:t,sort:r,onSort:n}){let i=(0,Omr.useMemo)(()=>wge([...t,...e.map(o=>o.origin)]),[t,e]);return(0,TR.jsx)(Ik,{component:on,children:(0,TR.jsxs)(wv,{size:"small",sx:WUn,children:[(0,TR.jsx)(Dmr,{sort:r,onSort:n}),(0,TR.jsx)(_v,{children:e.map(o=>(0,TR.jsx)(Lmr,{row:o,repoLabel:i.get(o.origin)??o.origin},o.id))})]})})}function Bmr(e){let t=Math.max(1,e.medianPhases),r=e.repoCount===1?"repo":"repos";return{items:String(e.itemCount),itemsFoot:`across ${e.repoCount} ${r} \xB7 ${e.doneCount} done`,phases:String(Math.round(e.medianPhases*10)/10),active:sg(e.medianActiveMs),activeFoot:`${sg(e.medianActiveMs/t)} per phase`,tokens:Zf(Math.round(e.medianTokens)),tokensFoot:`${Zf(Math.round(e.medianTokens/t))} per phase`}}var tB=L(z(),1),Fmr={display:"block"},VUn={fontWeight:400,fontVariantNumeric:"tabular-nums"};function nY({label:e,value:t,foot:r}){return(0,tB.jsxs)(fe,{children:[(0,tB.jsx)($e,{variant:"caption",color:"text.secondary",sx:Fmr,children:e}),(0,tB.jsx)($e,{variant:"h5",sx:VUn,children:t}),r?(0,tB.jsx)($e,{variant:"caption",color:"text.disabled",sx:Fmr,children:r}):null]})}var SR=L(z(),1),GUn={display:"flex",flexDirection:{xs:"column",sm:"row"},mb:3,"& > *":{flex:1,minWidth:0,p:2},"& > * + *":{borderColor:"divider",borderTop:{xs:1,sm:0},borderLeft:{xs:0,sm:1}}};function $mr({summary:e}){let t=Bmr(e);return(0,SR.jsxs)(on,{sx:GUn,children:[(0,SR.jsx)(nY,{label:"Items with recorded usage",value:t.items,foot:t.itemsFoot}),(0,SR.jsx)(nY,{label:"Median phases",value:t.phases}),(0,SR.jsx)(nY,{label:"Median active time",value:t.active,foot:t.activeFoot}),(0,SR.jsx)(nY,{label:"Median tokens",value:t.tokens,foot:t.tokensFoot})]})}var ip=L(z(),1);function zmr({items:e,data:t}){let{rows:r,total:n,page:i,pageSize:o}=e,{ref:a,height:s}=Sge(r.length,o);return(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)($mr,{summary:t.summary}),(0,ip.jsx)(Cmr,{origins:t.origins,origin:e.origin,onOriginChange:e.selectOrigin,status:e.status,onStatusChange:e.selectStatus}),n===0?(0,ip.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:"No items match this filter."}):(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)(fe,{ref:a,sx:{minHeight:s},children:(0,ip.jsx)(Nmr,{rows:r,origins:t.origins.map(l=>l.origin),sort:e.sort,onSort:e.sortBy})}),(0,ip.jsx)(jF,{component:"div",count:n,page:i,rowsPerPage:o,rowsPerPageOptions:[o],onPageChange:(l,u)=>e.setPage(u)})]})]})}var L2=L(z(),1);function Hmr({items:e}){let{data:t}=e;return(0,L2.jsxs)(L2.Fragment,{children:[(0,L2.jsx)(fe,{sx:{height:4,mb:1},children:e.fetching&&(0,L2.jsx)(Mk,{})}),t?t.origins.length===0?(0,L2.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:"No item usage recorded yet."}):(0,L2.jsx)(zmr,{items:e,data:t}):null]})}function h$e(e,t,r){if(e==null)return;let n=Math.max(0,e-r),i=Math.max(0,t-n)/t;if(!(i<.05))return i}function Ege(e,t){let r=Math.max(0,e-t),n=Math.floor(r/86400),i=Math.floor(r%86400/3600),o=Math.floor(r%3600/60);return n>0?`${n}d ${i}h`:i>0?`${i}h ${o}m`:`${o}m`}function qUn(e,t,r,n){let i=h$e(t,r,n);if(i!=null)return e/i}function __(e,t,r,n){let i=qUn(e,t,r,n);return i==null?"ok":i>100?"over":i>75?"warn":"ok"}var jUn=["five_hour","seven_day"],YUn=["claude","codex","pi"];function Umr(e){let[t,r]=e.includes(":")?e.split(":",2):["claude",e],n=YUn.find(o=>o===t),i=jUn.find(o=>o===r);if(!(!n||!i)&&!(n==="claude"&&e.includes(":")))return{harness:n,window:i}}var Wmr={five_hour:{label:"5h",seconds:18e3},seven_day:{label:"7d",seconds:604800,tint:{light:"rgba(0, 0, 0, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}}};function rB(e){let t=Umr(e);if(!t)return Wmr.five_hour;let r=Wmr[t.window];return t.harness==="claude"?r:{...r,label:`${Lu(t.harness)} ${r.label}`}}var KUn={ok:"success.main",warn:"warning.main",over:"error.main"};function k_(e){return KUn[e]}var aY=L(z(),1),XUn={ok:"success",warn:"warning",over:"error"};function Vmr({percentage:e,level:t}){return(0,aY.jsxs)(fe,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,aY.jsx)(Mk,{variant:"determinate",value:Math.min(100,e),color:XUn[t],sx:{flexGrow:1,height:8,borderRadius:1}}),(0,aY.jsxs)(fe,{sx:{minWidth:40,textAlign:"right",color:k_(t)},children:[Math.round(e),"%"]})]})}function Gmr(e){return e.avgContextPct==null?"\u2014":`${Math.round(e.avgContextPct)}%`}var ZUn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function p$e(e){return ZUn.format(e)}var Rge=L(z(),1);function qmr({peak:e}){return(0,Rge.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:(0,Rge.jsx)(lr,{title:`Cycle started ${p$e(new Date(e.createdAt))}`,children:(0,Rge.jsx)("span",{children:p$e(new Date(e.resetsAt*1e3))})})})}var Ymr=L(z(),1);function jmr(){return(0,Ymr.jsx)(bn,{label:"reset",size:"small",color:"warning",variant:"outlined",title:"Quota reset mid-cycle \u2014 this is the peak reached before the reset.",sx:{ml:1}})}function Kmr(e){return!e.tokensUp&&!e.tokensDown?"\u2014":`\u2191 ${Zf(e.tokensUp)} \u2193 ${Zf(e.tokensDown)}`}var s0=L(z(),1);function Xmr({peak:e,now:t}){let{label:r,seconds:n,tint:i}=rB(e.window),o=__(e.usedPercentage,e.resetsAt,n,t);return(0,s0.jsxs)(Gu,{sx:a=>({backgroundColor:i?a.palette.mode==="dark"?i.dark:i.light:void 0}),children:[(0,s0.jsxs)(_n,{children:[r,e.resetDetected&&(0,s0.jsx)(jmr,{})]}),(0,s0.jsx)(_n,{sx:{minWidth:160},children:(0,s0.jsx)(Vmr,{percentage:e.usedPercentage,level:o})}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:Gmr(e)}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:e.phaseCount??0}),(0,s0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:Kmr(e)}),(0,s0.jsx)(qmr,{peak:e})]})}var Age=L(ge(),1);function E_(e){let[t,r]=(0,Age.useState)(()=>Math.floor(Date.now()/1e3));return(0,Age.useEffect)(()=>{let n=setInterval(()=>r(Math.floor(Date.now()/1e3)),e);return()=>clearInterval(n)},[e]),t}var pc=L(z(),1);function Zmr({peaks:e}){let t=E_(3e4);return(0,pc.jsx)(Ik,{component:on,children:(0,pc.jsxs)(wv,{size:"small",children:[(0,pc.jsx)(Dk,{sx:{"& th":{whiteSpace:"nowrap"}},children:(0,pc.jsxs)(Gu,{children:[(0,pc.jsx)(_n,{children:"Window"}),(0,pc.jsx)(_n,{children:"Peak usage"}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Mean context-window usage across all readings in this rate-limit cycle \u2014 distinct from the Peak usage quota above.",children:(0,pc.jsx)("span",{children:"Avg context"})})}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Number of phase readings behind the average.",children:(0,pc.jsx)("span",{children:"Phases"})})}),(0,pc.jsx)(_n,{align:"right",children:"Tokens spent"}),(0,pc.jsx)(_n,{align:"right",children:"Cycle reset"})]})}),(0,pc.jsx)(_v,{children:e.map(r=>(0,pc.jsx)(Xmr,{peak:r,now:t},`${r.window}-${r.resetsAt}-${r.segment}`))})]})})}var R_=L(z(),1);function Qmr({rows:e,total:t,page:r,pageSize:n,onPageChange:i}){let{ref:o,height:a}=Sge(e.length,n);return(0,R_.jsxs)(R_.Fragment,{children:[(0,R_.jsx)(fe,{ref:o,sx:{minHeight:a},children:(0,R_.jsx)(Zmr,{peaks:e})}),(0,R_.jsx)(jF,{component:"div",count:t,page:r,rowsPerPage:n,rowsPerPageOptions:[n],onPageChange:(s,l)=>i(l)})]})}var m$e=L(z(),1),Jmr=["five_hour","seven_day"],QUn=["codex:five_hour","codex:seven_day"];function JUn(e){let t=e?[...Jmr,...QUn]:Jmr;return[{value:"all",label:"All"},...t.map(r=>({value:r,label:rB(r).label}))]}function egr({window:e,onChange:t}){let{exposeCodexActions:r}=$T();return(0,m$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(n,i)=>i&&t(i),"aria-label":"Filter peaks by rate-limit window",children:JUn(r).map(n=>(0,m$e.jsx)(hs,{value:n.value,children:n.label},n.value))})}var X1=L(z(),1);function tgr({history:e}){let{window:t,total:r}=e;return(0,X1.jsxs)(X1.Fragment,{children:[(0,X1.jsx)(egr,{window:t,onChange:e.selectWindow}),(0,X1.jsx)(fe,{sx:{height:4,my:1},children:e.fetching&&(0,X1.jsx)(Mk,{})}),r===0?(0,X1.jsx)($e,{color:"text.secondary",align:"center",sx:{py:6},children:t==="all"?"No usage peaks recorded yet.":`No ${rB(t).label} usage peaks recorded yet.`}):(0,X1.jsx)(Qmr,{rows:e.rows,total:r,page:e.page,pageSize:e.pageSize,onPageChange:e.setPage})]})}var Lge=L(ge(),1);async function rgr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r!=="all"&&n.set("window",r);let i=await fetch(`/api/usage/history?${n}`);if(!i.ok)throw new Error(`Failed to load usage history (HTTP ${i.status}).`);return i.json()}var A_=L(ge(),1);function Pge(e,t,r=!0){let[n,i]=(0,A_.useState)(0),[o,a]=(0,A_.useState)(null),[s,l]=(0,A_.useState)(!1),[u,f]=(0,A_.useState)(null);(0,A_.useEffect)(()=>{if(!r)return;let p=!1;return l(!0),e(n,t).then(m=>{p||(a(m),l(!1))},m=>{p||(f(m instanceof Error?m:new Error(String(m))),l(!1))}),()=>{p=!0}},[e,n,t,r]);let d=o?.total??0;(0,A_.useEffect)(()=>{if(d===0)return;let p=Math.ceil(d/t)-1;n>p&&i(p)},[n,t,d]);let h=o?.rows??[];return{data:o,rows:h,total:d,loaded:o!==null,fetching:s,error:u,page:n,setPage:i,pageSize:t}}var eWn=30;function ngr(){let[e,t]=(0,Lge.useState)("all"),r=(0,Lge.useCallback)((o,a)=>rgr(o,a,e),[e]),n=Pge(r,eWn);return{...n,window:e,selectWindow:o=>{t(o),n.setPage(0)}}}var nB=L(ge(),1);function igr(e,t){return e.field!==t?{field:t,direction:"desc"}:{field:t,direction:e.direction==="desc"?"asc":"desc"}}var tWn=30;function ogr(e){let[t,r]=(0,nB.useState)(Jj),[n,i]=(0,nB.useState)(eY),[o,a]=(0,nB.useState)(Qj),s=(0,nB.useCallback)((h,p)=>bmr(h,p,{origin:t,status:n,sort:o}),[t,n,o]),l=Pge(s,tWn,e);return{...l,origin:t,selectOrigin:h=>{r(h),l.setPage(0)},status:n,selectStatus:h=>{i(h),l.setPage(0)},sort:o,sortBy:h=>{a(p=>igr(p,h)),l.setPage(0)}}}var P_=L(z(),1),rWn={borderBottom:1,borderColor:"divider",mb:2};function sgr(){let[e,t]=(0,agr.useState)("limits"),r=ngr(),n=ogr(e==="items");if(r.error)throw r.error;if(n.error)throw n.error;return(0,P_.jsxs)(nc,{loading:!r.loaded,title:"Usage history",maxWidth:"lg",children:[(0,P_.jsxs)(Nk,{value:e,onChange:(i,o)=>t(o),textColor:"inherit",indicatorColor:"secondary",sx:rWn,"aria-label":"Usage history views",children:[(0,P_.jsx)(Cv,{label:"Rate limits",value:"limits"}),(0,P_.jsx)(Cv,{label:"Items",value:"items"})]}),e==="limits"?(0,P_.jsx)(tgr,{history:r}):(0,P_.jsx)(Hmr,{items:n})]})}var hi=L(z(),1);function nWn({socket:e}){return(0,hi.jsx)(SF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,hi.jsx)(dGt,{socket:e})})}function lgr({socket:e}){return W0("AppRoutes"),(0,hi.jsxs)(hi.Fragment,{children:[(0,hi.jsx)(gsr,{}),(0,hi.jsx)(c5,{children:(0,hi.jsxs)(gs,{element:(0,hi.jsx)(XYt,{socket:e}),children:[(0,hi.jsx)(gs,{path:"sessions",element:(0,hi.jsx)(Xpr,{socket:e})}),(0,hi.jsx)(gs,{path:"backlog/*",element:(0,hi.jsx)(nWn,{socket:e})}),(0,hi.jsx)(gs,{path:"next",element:(0,hi.jsx)(Aar,{sessions:e.sessions,selectSession:e.selectSession})}),(0,hi.jsx)(gs,{path:"news",element:(0,hi.jsx)(zor,{})}),(0,hi.jsx)(gs,{path:"releases",element:(0,hi.jsx)(dsr,{})}),(0,hi.jsx)(gs,{path:"usage",element:(0,hi.jsx)(sgr,{})}),(0,hi.jsx)(gs,{path:"backups",element:(0,hi.jsx)(nKt,{})}),(0,hi.jsx)(gs,{path:"config",element:(0,hi.jsx)(jXt,{})}),(0,hi.jsx)(gs,{path:"updates",element:(0,hi.jsx)(vmr,{})}),(0,hi.jsx)(gs,{path:"diff",element:(0,hi.jsx)(ior,{socket:e})}),(0,hi.jsx)(gs,{path:"file",element:(0,hi.jsx)(Oor,{socket:e})}),(0,hi.jsx)(gs,{path:"*",element:(0,hi.jsx)(Qxe,{to:"/sessions",replace:!0})})]})})]})}var Nge=L(ge(),1);var Oge=L(ge(),1);function cgr(e,t,r){if(!e)return"Select a repo to search files.";if(r.error)return"Couldn't search files in this repo.";if(!(r.files.length>0||r.loading))return t?"No matching files.":"No files in this repo."}var L_=L(z(),1),iWn={display:"flex",gap:1,alignItems:"center",minWidth:0},oWn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},aWn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},sWn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function lWn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function ugr({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,L_.jsx)(Sp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=lWn(i);return(0,L_.jsxs)(cn,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:iWn,children:[(0,L_.jsx)(c9,{path:i}),(0,L_.jsxs)(fe,{sx:oWn,children:[(0,L_.jsx)($e,{component:"span",sx:aWn,children:s}),(0,L_.jsx)($e,{component:"span",color:"text.secondary",sx:sWn,children:a})]})]},i)})})}var Mge=L(z(),1),cWn={maxHeight:420,overflowY:"auto"},uWn={px:2,py:2,fontSize:13};function fgr({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,Mge.jsx)(fe,{sx:cWn,children:e?(0,Mge.jsx)($e,{color:"text.secondary",sx:uWn,children:e}):(0,Mge.jsx)(ugr,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var dgr=L(z(),1),fWn={mt:6,alignSelf:"flex-start"};function Ige({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,dgr.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:fWn},transition:{onEntered:t}},children:n})}var Dge=L(ge(),1);var hgr={files:[],loading:!1,error:!1};function pgr(e,t){let[r,n]=(0,Dge.useState)(hgr),i=vr();return(0,Dge.useEffect)(()=>{if(!e){n(hgr);return}let o=!1;return n(s=>({...s,loading:!0})),(async()=>{try{let s=await fetch(un(`/api/files?cwd=${encodeURIComponent(e)}&q=${encodeURIComponent(t)}`,i));if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json();if(o)return;n({files:Array.isArray(l.files)?l.files:[],loading:!1,error:!1})}catch{o||n({files:[],loading:!1,error:!0})}})(),()=>{o=!0}},[e,t,i]),r}var CR=L(z(),1);function dWn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function mgr({onClose:e}){let{worktreeNode:t}=$n();return(0,CR.jsx)(Yu.Provider,{value:t,children:(0,CR.jsx)(hWn,{onClose:e})})}function hWn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,Oge.useState)(""),o=pgr(t,n),a=Xi(),s=(0,Oge.useRef)(null),l=p=>a(dWn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=HT(o.files,n,l,e),h=p=>{l(p),e()};return(0,CR.jsxs)(Ige,{onClose:e,onEntered:()=>s.current?.focus(),children:[(0,CR.jsx)(mP,{autoFocus:!0,inputRef:s,value:n,onChange:i,onKeyDown:d,placeholder:"Search files by name..."}),(0,CR.jsx)(fgr,{message:cgr(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function ggr(e){zo(Xn("quickOpen").matches,e)}var vgr=L(z(),1);function ygr(){let[e,t]=(0,Nge.useState)(!1);return ggr((0,Nge.useCallback)(()=>t(!0),[])),e?(0,vgr.jsx)(mgr,{onClose:()=>t(!1)}):null}var Bge=L(z(),1);function bgr({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,Bge.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Bge.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,Bge.jsx)(Jt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var Uge=L(ge(),1);function xgr(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var Igr=L(ge(),1);var Tgr=L(z(),1),Sgr=ft((0,Tgr.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"}),"Circle");var M_="0.775.6";var pWn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function Cgr(e){return e?pWn[e]:"success.main"}function wgr(e){return e.split("-")[0].split(".").map(Number)}function _gr(e,t){if(!e||!t||e===t)return;let r=wgr(e),n=wgr(t);for(let i=0;i<Math.max(r.length,n.length);i++){let o=(r[i]??0)-(n[i]??0);if(Number.isNaN(o))return;if(o!==0)return o<0?"behind":"ahead"}}var Fge=L(ge(),1),g$e=(0,Fge.createContext)(null);function $ge(){return(0,Fge.useContext)(g$e)}var wR=L(z(),1),mWn={height:16,fontSize:10},gWn={opacity:.6,fontSize:"0.85em"};function yWn(e,t){if(t===e.local)return"this machine";let r=e.links.find(n=>n.name===t);return r?r.error?`${r.state}: ${r.error}`:r.state:""}function sY({nodes:e,name:t,showVersion:r=!1}){let n=$ge()??M_,i=e.links.find(a=>a.name===t),o=_gr(i?.peerVersion,n);return(0,wR.jsx)(lr,{title:yWn(e,t),placement:"right",children:(0,wR.jsxs)(fe,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,wR.jsx)(Sgr,{sx:{fontSize:8,color:Cgr(i?.state)}}),t,r&&i?.peerVersion&&(0,wR.jsxs)(fe,{component:"span",sx:gWn,children:["v",i.peerVersion]}),o&&(0,wR.jsx)(bn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:mWn})]})})}var _R=L(z(),1),vWn={opacity:.6},bWn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function kgr({nodes:e,name:t,clone:r}){let n=(0,_R.jsx)(sY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,_R.jsx)(fe,{component:"span",sx:vWn,children:n}):(0,_R.jsx)(lr,{title:uP(t,r.cloneTarget),children:(0,_R.jsxs)(fe,{component:"span",sx:bWn,children:[(0,_R.jsx)(cP,{sx:{fontSize:14}}),n]})})}var Rgr=L(z(),1),xWn={px:1.5,borderRadius:.75,fontSize:12,fontWeight:600,color:"text.secondary","&:hover":{color:"text.primary",bgcolor:"action.hover"},"&[aria-checked='true']":{color:"primary.main",bgcolor:"action.selected"},"&.Mui-focusVisible":{outline:2,outlineColor:"primary.main"}};function Egr({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,Rgr.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:xWn,children:t})}var Agr={ArrowRight:1,ArrowLeft:-1};function TWn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+Agr[e.key]+r)%r}function Pgr(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!Agr[i.key]){Bx(i);return}let o=TWn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var Lgr=L(ge(),1);function iB(e){return e?.querySelector('[aria-checked="true"]')}function Mgr(e,t){(0,Lgr.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=iB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var y$e=L(z(),1),SWn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function zge({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return Mgr(o,r),(0,y$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:Pgr(t,r,n,l),sx:SWn,children:t.map(u=>(0,y$e.jsx)(Egr,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var v$e=L(z(),1);function Dgr({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=gu(),a=(0,Igr.useRef)(null);return!o||!n||!e?null:(0,v$e.jsx)(zge,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,v$e.jsx)(kgr,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var Ngr=L(z(),1);function Ogr({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,Ngr.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:Bx,onFocus:o,onSelect:o,inputRef:n,placeholder:r,autoFocus:i,fullWidth:!0,multiline:!0,minRows:3,maxRows:12,slotProps:{htmlInput:{"aria-label":"Prompt"},input:{sx:{fontSize:14}}}})}var zgr=L(ge(),1);var M2={draft:{placeholder:"Describe the backlog item to draft...",submitLabel:"Start draft",sessionMode:"assist-draft"},bug:{placeholder:"Describe the bug: what happened, what you expected...",submitLabel:"File bug",sessionMode:"assist-bug"},prompt:{placeholder:fde,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},Bgr=Object.keys(M2);var b$e=L(z(),1);function Fgr({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,b$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,b$e.jsx)(cn,{role:"menuitemradio","aria-checked":o===t,selected:o===t,onClick:()=>{n(o),i()},sx:{fontSize:13},children:Lu(o)},o))})}var kR=L(z(),1);function $gr(e){return t=>t==="prompt"&&e?(0,kR.jsxs)(kR.Fragment,{children:["prompt",(0,kR.jsx)(fe,{component:"span",sx:{fontWeight:400,whiteSpace:"pre"},children:` \xB7 ${Lu(e)}`}),(0,kR.jsx)(Bp,{sx:{fontSize:18,mr:-.75}})]}):t}var ER=L(z(),1);function Hgr({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,zgr.useState)(null),a=e.mode==="prompt"&&r.length>1,s=()=>o(iB(n.modeRef.current)??null),l=u=>{a&&u==="prompt"?s():e.setMode(u)};return(0,ER.jsxs)(ER.Fragment,{children:[(0,ER.jsx)(zge,{label:"Mode",options:Bgr,value:e.mode,onChange:l,optionLabel:$gr(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,ER.jsx)(Fgr,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var Qgr=L(ge(),1);var x$e=L(z(),1),CWn={zIndex:e=>e.zIndex.modal+1};function Ugr({open:e,anchor:t,children:r}){return(0,x$e.jsx)(MA,{open:e,anchorEl:t,placement:"bottom-start",sx:CWn,children:(0,x$e.jsx)(on,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function Wgr(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var Vgr=L(QB(),1);function Ggr({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}Bx(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,Vgr.flushSync)(()=>{r(t),n()}),Bx(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function qgr(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>H0(n).toLowerCase().includes(r)):e}var T$e=L(ge(),1);function jgr(){let[e,t]=(0,T$e.useState)(!1),[r,n]=(0,T$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var Kgr=L(ge(),1);var Ygr=e=>e?H0(e):"";function Xgr(e){let[t,r]=(0,Kgr.useState)(()=>Ygr(e));return{text:t,setText:r,showRepo:n=>r(Ygr(n))}}function Zgr(e,t,r){let n=jgr(),i=Xgr(t),o=qgr(e,n.query),a=f=>{r(f),i.showRepo(f)},s=HT(o,n.query,a,n.close),l=()=>s.setHighlight(Math.max(e.indexOf(t),0)),u=()=>{l(),n.show()};return{open:n.open,text:i.text,filtered:o,highlight:s.highlight,setHighlight:s.setHighlight,onKeyDown:Ggr({open:n.open,highlighted:o[s.highlight],accept:a,close:n.close,navigate:s.onKeyDown,openList:u}),onClick:()=>{n.open||u()},onType:f=>{i.setText(f),n.filterBy(f)},onFocus:l,onBlur:()=>{n.close(),i.showRepo(t)},pick:f=>{a(f),n.close()}}}var oB=L(z(),1);function Jgr({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=Zgr(e,t,r),s=(0,Qgr.useRef)(null);return(0,oB.jsxs)(fe,{ref:s,sx:{flex:1,minWidth:0},children:[(0,oB.jsx)(ni,{value:a.text,onChange:l=>a.onType(l.target.value),onFocus:l=>{l.target.select(),a.onFocus(),o()},inputRef:n,autoFocus:i,onClick:a.onClick,onBlur:a.onBlur,onKeyDown:a.onKeyDown,placeholder:"Repo",size:"small",fullWidth:!0,slotProps:Wgr(a.open)}),(0,oB.jsx)(Ugr,{open:a.open,anchor:s.current,children:(0,oB.jsx)(AJ,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var I_=L(z(),1);function e0r({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,I_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,I_.jsx)(Ogr,{value:r.prompt,onChange:r.setPrompt,placeholder:M2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,I_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,I_.jsx)(Jgr,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,I_.jsx)(Hgr,{...t})]}),(0,I_.jsx)(Dgr,{value:r.node,onChange:r.setNode,cloneState:e})]})}var aB=L(z(),1),wWn=["Enter start","Shift+Enter newline","Esc close"],_Wn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function t0r({submitLabel:e,disabled:t=!1}){return(0,aB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:_Wn,children:[(0,aB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:wWn.map(r=>(0,aB.jsx)($e,{variant:"caption",color:"text.secondary",children:r},r))}),(0,aB.jsx)(Jt,{type:"submit",variant:"contained",size:"small",disabled:t,children:e})]})}function r0r({mode:e,harness:t,prompt:r,cwd:n,node:i},o){let a=n||void 0,s=i?[i]:[];if(e==="prompt"){t==="claude"?o.onCreate(r,a,...s):o.onCreateHarness(t,r,a,...s);return}if(e==="design"){o.onCreateDesign(r,a,...s);return}let l=i?[{node:i}]:[];Gjt(M2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function n0r(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(gJ(r.prompt,n.onCreateAssist),!0):(r0r({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var RR=L(ge(),1);function i0r(e,t){let r=(0,RR.useRef)(e),n=(0,RR.useRef)(null),i=(0,RR.useRef)(null),o=(0,RR.useRef)(null),a=(0,RR.useCallback)(u=>{n.current=u;let{field:f,selectionStart:d,selectionEnd:h}=r.current;u&&f==="prompt"&&u.setSelectionRange(d,h)},[]),s=u=>{let f=u.target;t({field:"prompt",selectionStart:f.selectionStart,selectionEnd:f.selectionEnd})},l=()=>{if(o.current?.closest("form")?.contains(document.activeElement))return;let{field:u}=r.current;({repo:i.current,mode:iB(o.current),prompt:n.current}[u]??n.current)?.focus()};return{autoFocus:e.field,promptRef:a,repoRef:i,modeRef:o,trackPrompt:s,trackRepo:()=>t({...e,field:"repo"}),trackMode:()=>t({...e,field:"mode"}),restore:l}}function kWn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:LJ(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function o0r(e,t){let{names:r,visible:n}=gu(),i=TJ(t,n?r:[void 0]);return{cloneState:i,target:kWn(t,e,i(e))}}var sB=L(z(),1);function a0r({draft:e,launchers:t,onClose:r}){let n=i0r(e.focus,e.setFocus),i=xgr($T()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=o0r(e.node,e.cwd),l=u=>{u.preventDefault(),n0r(e,o,a,t)&&r()};return(0,sB.jsx)(Ige,{onClose:r,onEntered:n.restore,centered:!0,children:(0,sB.jsxs)("form",{onSubmit:l,children:[(0,sB.jsx)(e0r,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,sB.jsx)(t0r,{submitLabel:a.kind==="clone"?"Clone":M2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var Hge=L(ge(),1);function s0r(e){let[t,r]=(0,Hge.useState)(null);return(0,Hge.useEffect)(()=>{let n=!1;return(async()=>{let i="draft";try{let o=e?`?cwd=${encodeURIComponent(e)}`:"",s=await(await fetch(`/api/new-session-defaults${o}`)).json();Object.hasOwn(M2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function l0r(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var I2=L(ge(),1),c0r={field:"prompt",selectionStart:0,selectionEnd:0};function u0r(){let[e,t]=(0,I2.useState)(""),[r,n]=(0,I2.useState)(),[i,o]=(0,I2.useState)(),[a,s]=(0,I2.useState)("claude"),[l,u]=(0,I2.useState)(),[f,d]=(0,I2.useState)(c0r),h=(0,I2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(c0r)},[]);return{prompt:e,cwd:r,mode:i,harness:a,node:l,focus:f,setPrompt:t,setNode:u,setCwd:n,setMode:o,setHarness:s,setFocus:d,clear:h}}function f0r(e=s0r){let{selectedCwd:t}=$n(),r=gu(),n=u0r(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:l0r(n.node,r)}:null}function d0r(e){zo(Xn("newSession").matches,e)}var h0r=L(ge(),1);function p0r(e,t){let{selectedCwd:r}=$n(),[n,i]=Pc(),o=n.get("new"),a=n.get("newCwd")??r,{setPrompt:s,setCwd:l,setFocus:u}=e??{};(0,h0r.useEffect)(()=>{o===null||!s||!l||!u||(o&&(s(o),l(a),u({field:"prompt",selectionStart:o.length,selectionEnd:o.length})),t(),i(f=>(f.delete("new"),f.delete("newCwd"),f),{replace:!0}))},[o,a,s,l,u,t,i])}var g0r=L(z(),1);function m0r({launchers:e}){let[t,r]=(0,Uge.useState)(!1),n=f0r(),i=(0,Uge.useCallback)(()=>r(!0),[]);return d0r(i),p0r(n,i),!t||!n?null:(0,g0r.jsx)(a0r,{draft:n,launchers:e,onClose:()=>r(!1)})}var Wge=L(z(),1);function y0r({reconnecting:e}){return(0,Wge.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Wge.jsx)(ri,{severity:"info",variant:"filled",icon:(0,Wge.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var Z1=L(z(),1);function v0r({socket:e,onViewLaunchedSession:t}){return(0,Z1.jsxs)(Z1.Fragment,{children:[(0,Z1.jsx)(ygr,{}),(0,Z1.jsx)(m0r,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,Z1.jsx)(y0r,{reconnecting:e.reconnecting}),(0,Z1.jsx)(Mu,{error:e.error,onClose:e.clearError}),(0,Z1.jsx)(bgr,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var l0=L(ge(),1);async function b0r(e,t){try{let r=await fetch(un("/api/updates",t?void 0:e)),n=await r.json();if(!r.ok)throw new Error(n?.error??`HTTP ${r.status}`);return{name:e,local:t,status:n}}catch(r){return{name:e,local:t,error:r instanceof Error?r.message:"Failed to load update state"}}}var EWn=6e4;function x0r(e){let t=e.nodes?.local,r=e.names.join(`
|
|
3977
3977
|
`),[n,i]=(0,l0.useState)([]),[o,a]=(0,l0.useState)(!0),s=(0,l0.useRef)(0),l=(0,l0.useCallback)(()=>{let u=r?r.split(`
|
|
3978
3978
|
`):[];if(u.length===0)return;let f=++s.current;Promise.all(u.map(d=>b0r(d,d===t))).then(d=>{f===s.current&&(i(d),a(!1))})},[r,t]);return(0,l0.useEffect)(()=>{l();let u=setInterval(l,EWn);return()=>clearInterval(u)},[l]),(0,l0.useMemo)(()=>({entries:n,loading:o,refresh:l}),[n,o,l])}var D_=L(z(),1);function T0r({shell:e,children:t}){let{socket:r,selection:n,launch:i,topBar:o,sidebarCollapse:a}=e,s=x0r(r.nodeSelection);return(0,D_.jsx)(l$e.Provider,{value:s,children:(0,D_.jsx)(IDe.Provider,{value:o,children:(0,D_.jsx)(aOe.Provider,{value:a,children:(0,D_.jsx)(sz.Provider,{value:n,children:(0,D_.jsx)(y2e.Provider,{value:r.nodeSelection,children:(0,D_.jsx)(Yu.Provider,{value:n.selectedNode,children:(0,D_.jsx)(p2e.Provider,{value:i,children:t})})})})})})})}var S0r=L(z(),1),C0r=ft((0,S0r.jsx)("path",{d:"M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2zM4 6h16v10H4z"}),"Computer");var w0r=L(ge(),1);var c0=L(z(),1),RWn={ml:1,textTransform:"none",fontSize:12};function _0r(){let{nodes:e,names:t,visible:r,selected:n,select:i}=gu(),[o,a]=(0,w0r.useState)(null);return!r||!e||!n?null:(0,c0.jsxs)(c0.Fragment,{children:[(0,c0.jsx)(Jt,{size:"small",color:"inherit",startIcon:(0,c0.jsx)(C0r,{fontSize:"small"}),"aria-label":"Machine","aria-haspopup":"menu",onClick:s=>a(s.currentTarget),sx:RWn,children:(0,c0.jsx)(sY,{nodes:e,name:n})}),(0,c0.jsx)(Dl,{anchorEl:o,open:!!o,onClose:()=>a(null),children:t.map(s=>(0,c0.jsx)(cn,{selected:s===n,onClick:()=>{i(s),a(null)},sx:{fontSize:13},children:(0,c0.jsx)(sY,{nodes:e,name:s,showVersion:!0})},s))})]})}var lY=L(ge(),1);function k0r(e,t){return[...e[0].slice(0,-1),String(t+1)]}var Vge=L(z(),1);function E0r({index:e,label:t,...r}){let{chords:n}=Xn("navTab");return(0,Vge.jsx)(lr,{describeChild:!0,title:(0,Vge.jsx)(Md,{label:t,chords:[k0r(n,e)]}),children:(0,Vge.jsx)(Cv,{label:t,...r})})}var S$e=L(ge(),1);function R0r(e,t){let{bound:r}=Xn("navTab"),n=e.length,i=(0,S$e.useCallback)(a=>(YG(a,r)??n)<n,[r,n]),o=(0,S$e.useCallback)(a=>{let s=e[YG(a,r)??-1];s&&t(s)},[e,t,r]);zo(i,o)}var Gge=L(ge(),1);function A0r(){let[e,t]=(0,Gge.useState)(!1);return(0,Gge.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/news/nav")).json();r||t(i?.showInNav===!0)}catch{r||t(!1)}})(),()=>{r=!0}},[]),e}var qge=L(ge(),1);async function AWn(e,t){let r=await fetch(un(`/api/releases/configured?cwd=${encodeURIComponent(e)}`,t));return r.ok?(await r.json())?.configured===!0:void 0}function P0r(e){let[t,r]=(0,qge.useState)(null),n=vr(),i=`${n??""}\0${e}`;return(0,qge.useEffect)(()=>{if(!e)return;let o=!1;return AWn(e,n).catch(()=>{}).then(a=>{o||r({key:i,configured:a})}),()=>{o=!0}},[e,n,i]),t?.key===i?t.configured:void 0}var L0r=L(ge(),1);function M0r(e){let{pathname:t}=ua(),r=Xi(),n=t==="/releases"||t.startsWith("/releases/");(0,L0r.useEffect)(()=>{e===!1&&n&&r("/sessions",{replace:!0})},[e,n,r])}var PWn={path:"/sessions",label:"Sessions"},LWn={path:"/backlog",label:"Backlog"},MWn={path:"/next",label:"Next"},IWn={path:"/releases",label:"Releases"},DWn={path:"/news",label:"News"};function I0r(e,t){return[PWn,LWn,MWn,...e?[IWn]:[],...t?[DWn]:[]]}var C$e=L(z(),1);function D0r({cwd:e}){let t=ua(),r=Xi(),n=P0r(e),i=A0r();M0r(n);let o=n===!0,a=(0,lY.useMemo)(()=>I0r(o,i),[o,i]),s=(0,lY.useMemo)(()=>a.map(f=>f.path),[a]),l=a.findIndex(f=>t.pathname.startsWith(f.path)),u=(0,lY.useCallback)(f=>{t.pathname!==f&&r(f)},[t.pathname,r]);return R0r(s,u),(0,C$e.jsx)(Nk,{value:l===-1?!1:l,textColor:"inherit",indicatorColor:"secondary",children:a.map((f,d)=>(0,C$e.jsx)(E0r,{index:d,label:f.label,onClick:()=>u(f.path)},f.path))})}var O0r=L(z(),1),N0r=ft((0,O0r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m5 11h-4v4h-2v-4H7v-2h4V7h2v4h4z"}),"AddCircle");var cY=L(z(),1),OWn={color:"success.light"};function B0r(){let[,e]=Pc(),{label:t,chords:r}=Xn("newSession");return(0,cY.jsx)(lr,{title:(0,cY.jsx)(Md,{label:t,chords:r}),children:(0,cY.jsx)(sr,{size:"small",sx:OWn,"aria-label":"New session",onClick:()=>e(i=>(i.set("new",""),i),{replace:!0}),children:(0,cY.jsx)(N0r,{})})})}var Yge=L(ge(),1);var jge=L(z(),1),NWn={color:"inherit"};function F0r({cwd:e}){let[t,r]=(0,Yge.useState)(null),n=vr();return(0,Yge.useEffect)(()=>{if(!e){r(null);return}let i=!1;return(async()=>{try{let a=await(await fetch(un(`/api/github-url?cwd=${encodeURIComponent(e)}`,n))).json();i||r(a?.url??null)}catch{i||r(null)}})(),()=>{i=!0}},[e,n]),t?(0,jge.jsx)(lr,{title:"Open in GitHub",children:(0,jge.jsx)(sr,{sx:NWn,onClick:()=>window.open(t,"_blank"),children:(0,jge.jsx)(rP,{})})}):null}var H0r=L(ge(),1);var z0r=L(ge(),1);var Kge=L(z(),1);function $0r({window:e,windowSeconds:t,fallbackLabel:r,now:n}){let i=e?.used_percentage;if(i==null)return null;let o=__(i,e?.resets_at,t,n),a=e?.resets_at!=null?Ege(e.resets_at,n):r;return(0,Kge.jsxs)(fe,{component:"span",children:[(0,Kge.jsxs)(fe,{component:"span",sx:{color:k_(o)},children:[Math.round(i),"%"]})," ",(0,Kge.jsxs)(fe,{component:"span",sx:{color:"text.secondary"},children:["(",a,")"]})]})}var O_=L(z(),1);function Xge({rateLimits:e}){let t=E_(3e4),r=[{window:e.five_hour,windowSeconds:18e3,fallbackLabel:"5h"},{window:e.seven_day,windowSeconds:604800,fallbackLabel:"7d"}].filter(n=>n.window?.used_percentage!=null);return(0,O_.jsx)(O_.Fragment,{children:r.map((n,i)=>(0,O_.jsxs)(z0r.Fragment,{children:[i>0?(0,O_.jsx)(fe,{component:"span",sx:{color:"text.secondary",mr:.5},children:","}):null,(0,O_.jsx)($0r,{window:n.window,windowSeconds:n.windowSeconds,fallbackLabel:n.fallbackLabel,now:t})]},n.fallbackLabel))})}var N_=L(z(),1);function U0r({groups:e}){return(0,N_.jsx)(N_.Fragment,{children:e.map((t,r)=>(0,N_.jsxs)(H0r.Fragment,{children:[(0,N_.jsx)(fe,{component:"span",sx:{color:"text.secondary",ml:r>0?1:0,mr:.5},children:Lu(t.harness)}),(0,N_.jsx)(Xge,{rateLimits:t.rateLimits})]},t.harness))})}function BWn(e){if(e==="over")return{level:"warn",boundary:100};if(e==="warn")return{level:"ok",boundary:75}}function FWn(e){if(e==="ok")return{level:"warn",boundary:75};if(e==="warn")return{level:"over",boundary:100}}function $Wn(e,t,r,n){if(e>=t)return;let i=e/t;return Math.round(r-n*(1-i))}function G0r(e,t,r,n){if(t==null)return{kind:"unprojectable"};let i=h$e(t,r,n);if(i==null)return{kind:"unprojectable"};let o=__(e,t,r,n),a=BWn(o),s=FWn(o);return{kind:"projected",recovery:a&&{level:a.level,pct:a.boundary*i,at:$Wn(e,a.boundary,t,r)},worse:s&&{level:s.level,pct:s.boundary*i}}}function q0r(e,t){return e.at==null?"not before reset":`${e.level==="ok"?"green":"under"} in ${Ege(e.at,t)}`}var u0=L(z(),1);function w$e({direction:e,threshold:t}){let r=e==="back",n={display:"inline-flex",gap:.5,minWidth:"6ch",justifyContent:r?"flex-end":"flex-start"};if(!t)return(0,u0.jsx)(fe,{component:"span",sx:n});let i=(0,u0.jsx)(fe,{component:"span",sx:{opacity:.6},children:r?"\u2190":"\u2192"}),o=(0,u0.jsxs)(fe,{component:"span",sx:{color:k_(t.level)},children:[Math.round(t.pct),"%"]});return(0,u0.jsx)(fe,{component:"span",sx:n,children:r?(0,u0.jsxs)(u0.Fragment,{children:[o,i]}):(0,u0.jsxs)(u0.Fragment,{children:[i,o]})})}var B_=L(z(),1);function j0r({label:e,pct:t,resetsAt:r,windowSeconds:n,now:i}){let o=__(t,r,n,i),a=G0r(t,r,n,i),s=a.kind==="projected"?a:void 0;return(0,B_.jsxs)(fe,{sx:{display:"flex",alignItems:"baseline",gap:.75},children:[(0,B_.jsx)(fe,{component:"span",sx:{minWidth:"2ch"},children:e}),(0,B_.jsx)(w$e,{direction:"back",threshold:s?.recovery}),(0,B_.jsxs)(fe,{component:"span",sx:{minWidth:"4ch",textAlign:"right",color:k_(o)},children:[Math.round(t),"%"]}),(0,B_.jsx)(w$e,{direction:"forward",threshold:s?.worse}),(0,B_.jsx)(fe,{component:"span",sx:{opacity:.6},children:s?s.recovery&&q0r(s.recovery,i):"no projection yet"})]})}function Y0r(e){return[{label:"5h",window:e.five_hour,windowSeconds:18e3},{label:"7d",window:e.seven_day,windowSeconds:604800}].flatMap(t=>t.window?.used_percentage==null?[]:[{label:t.label,pct:t.window.used_percentage,resetsAt:t.window.resets_at,windowSeconds:t.windowSeconds}])}var K0r=L(z(),1);function Zge({rateLimits:e,now:t}){return Y0r(e).map(r=>(0,K0r.jsx)(j0r,{label:r.label,pct:r.pct,resetsAt:r.resetsAt,windowSeconds:r.windowSeconds,now:t},r.label))}var AR=L(z(),1);function X0r({groups:e}){let t=E_(3e4);return(0,AR.jsxs)(fe,{sx:{fontFamily:"monospace",fontSize:12},children:[e.map(r=>(0,AR.jsxs)(fe,{sx:{mb:.5},children:[(0,AR.jsx)(fe,{sx:{opacity:.8},children:Lu(r.harness)}),(0,AR.jsx)(Zge,{rateLimits:r.rateLimits,now:t})]},r.harness)),(0,AR.jsx)(fe,{sx:{mt:.5,opacity:.6},children:"Account usage per harness \u2014 view history"})]})}function Z0r(e){return e?.five_hour?.used_percentage!=null||e?.seven_day?.used_percentage!=null}function Q0r(e,t){let r=[];Z0r(e)&&r.push({harness:"claude",rateLimits:e});for(let[n,i]of Object.entries(t))Z0r(i)&&r.push({harness:n,rateLimits:i});return r}var uY=L(z(),1),_$e="Claude account usage (5h / 7d windows) \u2014 view history";function J0r({rateLimits:e}){let t=E_(3e4);return(0,uY.jsxs)(fe,{sx:{fontFamily:"monospace",fontSize:12},children:[(0,uY.jsx)(Zge,{rateLimits:e,now:t}),(0,uY.jsx)(fe,{sx:{mt:.5,opacity:.6},children:_$e})]})}var PR=L(z(),1),zWn={display:"flex",alignItems:"center",ml:2,fontFamily:"monospace",fontSize:13},HWn={};function eyr({rateLimits:e,harnessRateLimits:t=HWn}){let r=Q0r(e,t),n=r.every(s=>s.harness==="claude"),i=e,o=_$e,a="Usage";return r.length>0&&n?(o=(0,PR.jsx)(J0r,{rateLimits:i}),a=(0,PR.jsx)(Xge,{rateLimits:i})):r.length>0&&(o=(0,PR.jsx)(X0r,{groups:r}),a=(0,PR.jsx)(U0r,{groups:r})),(0,PR.jsx)(lr,{title:o,children:(0,PR.jsx)(xn,{component:ys,to:"/usage",underline:"hover",color:"inherit",sx:zWn,children:a})})}var tyr=L(z(),1),ryr=ft((0,tyr.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh");var O2=L(ge(),1);var lB={target:"both",label:"Restart daemon",message:"This restarts the sessions daemon and the web server, then reloads the page once the server is back."};function cB(e,t){let r=t?`&node=${encodeURIComponent(t)}`:"";return fetch(`/api/restart?target=${e}${r}`,{method:"POST"})}var D2=L(ge(),1);var UWn="/api/session-layout";async function WWn(){try{return(await fetch(UWn,{cache:"no-store"})).ok}catch{return!1}}async function nyr(e){let t=0;for(;!e();){if(t=await WWn()?t+1:0,t>=2)return!e();await new Promise(r=>setTimeout(r,300))}return!1}function VWn(){return{sawDisconnect:!1,waiting:!1,abandoned:!0}}function iyr(e,t,r){let n=(0,D2.useRef)(VWn()),i=(0,D2.useRef)(r);i.current=r,(0,D2.useEffect)(()=>{let s=n.current;if(!(!e||s.abandoned)){if(t){s.sawDisconnect=!0;return}!s.sawDisconnect||s.waiting||(s.waiting=!0,nyr(()=>s.abandoned).then(l=>{l&&i.current()}))}},[e,t]);let o=(0,D2.useCallback)(()=>{n.current.abandoned=!0},[]),a=(0,D2.useCallback)(()=>{n.current.abandoned=!0,n.current={sawDisconnect:!1,waiting:!1,abandoned:!1}},[]);return(0,D2.useEffect)(()=>o,[o]),{arm:a,abandon:o}}var GWn=15e3;function uB(e,t,r){let[n,i]=(0,O2.useState)(!1),[o,a]=(0,O2.useState)(null),s=(0,O2.useRef)(void 0),{arm:l,abandon:u}=iyr(n,t,()=>{clearTimeout(s.current),r?.(),globalThis.location.reload()});(0,O2.useEffect)(()=>()=>clearTimeout(s.current),[]);let f=(0,O2.useCallback)(async()=>{i(!0),l(),s.current=setTimeout(()=>{u(),i(!1),a("Web server did not come back")},GWn);try{if(!(await cB(e)).ok)throw new Error("restart failed")}catch{u(),clearTimeout(s.current),i(!1),a("Failed to restart web server")}},[e,l,u]);return{pending:n,error:o,clearError:()=>a(null),restart:f}}var f0=L(z(),1),qWn={color:"inherit",mr:1.5};function oyr({reconnecting:e}){let{pending:t,error:r,clearError:n,restart:i}=uB("webserver",e);return(0,f0.jsxs)(f0.Fragment,{children:[(0,f0.jsx)(lr,{title:"Restart web server",children:(0,f0.jsx)("span",{children:(0,f0.jsx)(sr,{sx:qWn,disabled:t,onClick:i,children:t?(0,f0.jsx)(mo,{size:24}):(0,f0.jsx)(ryr,{})})})}),(0,f0.jsx)(Mu,{error:r,onClose:n})]})}var lyr=L(ge(),1);var ayr=L(ge(),1);function syr(e){let t=Ni().palette.primary.main;zo(Xn("focusRepoPicker").matches,(0,ayr.useCallback)(()=>Rf({locate:()=>e.current?.querySelector("button")??null,focus:r=>r.focus()},t),[e,t]))}var fY=L(z(),1),jWn={width:240,ml:2};function cyr({repos:e,selected:t,onSelect:r}){let n=(0,lyr.useRef)(null);syr(n);let{chords:i}=Xn("focusRepoPicker");return(0,fY.jsx)(fe,{ref:n,sx:jWn,children:(0,fY.jsx)(_J,{label:t?H0(t):"Select repo...",tooltip:(0,fY.jsx)(Md,{label:"Repo",chords:i}),children:o=>(0,fY.jsx)(vet,{repos:e,selected:t,onSelect:r,close:o})})})}var byr=L(ge(),1);var dY=L(ge(),1);function Qge(e){let[t,r]=(0,dY.useState)([]),[n,i]=(0,dY.useState)(!0),o=vr();return(0,dY.useEffect)(()=>{if(!e){r([]),i(!1);return}let a=!1;return i(!0),fetch(un(`/api/pr-list?cwd=${encodeURIComponent(e)}`,o)).then(s=>s.json()).then(s=>{a||(r(Array.isArray(s?.prs)?s.prs:[]),i(!1))}).catch(()=>{a||(r([]),i(!1))}),()=>{a=!0}},[e,o]),{prs:t,loading:n}}var k$e=L(z(),1);function E$e({text:e}){return(0,k$e.jsx)(fe,{sx:{p:1.5},children:(0,k$e.jsx)($e,{sx:{fontSize:13,color:"text.secondary"},children:e})})}var fB=L(z(),1);function uyr({pr:e,highlighted:t,onHover:r,onPick:n}){let i=RJ(t);return(0,fB.jsx)(cn,{ref:i,selected:t,onMouseDown:o=>o.preventDefault(),onMouseEnter:r,onClick:()=>n(e),sx:{alignItems:"flex-start",py:.75,whiteSpace:"normal"},children:(0,fB.jsxs)(Rt,{spacing:.25,sx:{minWidth:0},children:[(0,fB.jsx)($e,{sx:{fontSize:13,lineHeight:1.3,fontWeight:500},children:e.title}),(0,fB.jsxs)($e,{sx:{fontSize:11,color:"text.secondary"},children:["#",e.number," \xB7 ",e.author," \xB7 ",fa(e.createdAt)]})]})})}var R$e=L(z(),1);function fyr({prs:e,highlight:t,onHighlight:r,onPick:n}){return(0,R$e.jsx)(Sp,{dense:!0,disablePadding:!0,sx:{maxHeight:200,overflowY:"auto"},children:e.map((i,o)=>(0,R$e.jsx)(uyr,{pr:i,highlighted:o===t,onHover:()=>r(o),onPick:n},i.number))})}var hyr=L(ge(),1);function dyr(e,t){let r=t.trim().toLowerCase();if(!r)return e;let n=r.replace(/^#/,"");return e.filter(i=>i.title.toLowerCase().includes(r)||i.author.toLowerCase().includes(r)||n!==""&&String(i.number).includes(n))}function pyr(e,t,r){let[n,i]=(0,hyr.useState)(""),o=dyr(e,n),{highlight:a,setHighlight:s,onKeyDown:l}=HT(o,n,t,r);return{filter:n,setFilter:i,filtered:o,highlight:a,setHighlight:s,onKeyDown:l,select:f=>{t(f),r()}}}var F_=L(z(),1),myr={...pP,left:"auto",width:320,maxHeight:"none",overflowY:"visible"};function gyr({cwd:e,onPick:t,close:r}){let{prs:n,loading:i}=Qge(e),o=pyr(n,t,r);return i||n.length===0?(0,F_.jsx)(on,{elevation:4,sx:myr,children:(0,F_.jsx)(E$e,{text:i?"Loading open PRs\u2026":"No open PRs"})}):(0,F_.jsxs)(on,{elevation:4,sx:myr,children:[(0,F_.jsx)(mP,{autoFocus:!0,value:o.filter,onChange:o.setFilter,onKeyDown:o.onKeyDown,placeholder:"Filter PRs..."}),o.filtered.length===0?(0,F_.jsx)(E$e,{text:"No PRs match"}):(0,F_.jsx)(fyr,{prs:o.filtered,highlight:o.highlight,onHighlight:o.setHighlight,onPick:o.select})]})}var vyr=L(z(),1);function yyr({cwd:e,onPick:t,close:r}){return(0,vyr.jsx)(gyr,{cwd:e,onPick:t,close:r})}var $_=L(z(),1);function xyr({cwd:e,disabled:t,onSelect:r}){let{prs:n,loading:i}=Qge(e),[o,a]=(0,byr.useState)(null);return i||n.length===0?null:(0,$_.jsxs)($_.Fragment,{children:[(0,$_.jsx)(_J,{label:"prs",disabled:t,children:s=>(0,$_.jsx)(yyr,{cwd:e,onPick:a,close:s})}),o&&(0,$_.jsx)(Gpe,{pr:o,onSelect:s=>{r(o,s),a(null)},onCancel:()=>a(null)})]})}var Syr=L(z(),1);function Tyr({onStartRun:e,cwd:t}){let r=cde(t);return!t||r.length===0?null:(0,Syr.jsx)(sde,{runs:r,onSelect:n=>e(n,t)})}var hY=L(z(),1);function Cyr({onCreateAssist:e,onStartRun:t}){let{selectedCwd:r,selectedNode:n}=$n();return(0,hY.jsxs)(Rt,{direction:"row",spacing:.5,sx:{alignItems:"center","&:not(:empty)":{ml:2}},children:[(0,hY.jsx)(xyr,{cwd:r,disabled:!r,onSelect:(i,o)=>e([...o,String(i.number)],r,{...dN(i),node:n})}),(0,hY.jsx)(Tyr,{onStartRun:(i,o)=>t(i,o,void 0,void 0,n),cwd:r})]})}var Hd=L(z(),1),YWn={minHeight:48,pl:1,pr:14};function wyr({socket:e,selection:t}){let{collapsed:r,onToggleCollapsed:n}=vw();return(0,Hd.jsxs)(Ok,{variant:"dense",disableGutters:!0,sx:YWn,children:[r&&(0,Hd.jsx)(xde,{collapsed:r,onToggleCollapsed:n}),(0,Hd.jsx)(oyr,{reconnecting:e.reconnecting}),(0,Hd.jsx)(D0r,{cwd:t.selectedCwd}),(0,Hd.jsx)(_0r,{}),(0,Hd.jsx)(cyr,{repos:t.repos,selected:t.selectedCwd,onSelect:t.setSelectedCwd}),(0,Hd.jsxs)(fe,{sx:{display:"flex",alignItems:"center",ml:1},children:[(0,Hd.jsx)(dde,{cwd:t.selectedCwd}),(0,Hd.jsx)(F0r,{cwd:t.selectedCwd}),(0,Hd.jsx)(B0r,{})]}),(0,Hd.jsx)(Cyr,{onCreateAssist:e.createAssistSession,onStartRun:e.startRun}),(0,Hd.jsx)(eyr,{rateLimits:e.rateLimits,harnessRateLimits:e.harnessRateLimits})]})}var Jge=L(ge(),1);function _yr(){let[e,t]=(0,Jge.useState)(null);return(0,Jge.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/health")).json();!r&&typeof i?.nodeName=="string"&&t(i.nodeName)}catch{}})(),()=>{r=!0}},[]),e}var Eyr=L(z(),1),KWn={lineHeight:"32px",bgcolor:"transparent"};function kyr(){let e=_yr();return e?(0,Eyr.jsx)(e1e,{sx:KWn,children:e}):null}var Ryr=L(z(),1),Ayr=ft((0,Ryr.jsx)("path",{d:"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m-9 3h2v2h-2zm0 3h2v2h-2zM8 8h2v2H8zm0 3h2v2H8zm-1 2H5v-2h2zm0-3H5V8h2zm9 7H8v-2h8zm0-4h-2v-2h2zm0-3h-2V8h2zm3 3h-2v-2h2zm0-3h-2V8h2z"}),"Keyboard");var Pyr=L(z(),1),Lyr=ft((0,Pyr.jsx)("path",{d:"m12 16.5 4-4h-3v-9h-2v9H8zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2"}),"SystemUpdateAlt");var Myr=L(z(),1),Iyr=ft((0,Myr.jsx)("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness4");var Dyr=L(z(),1),Oyr=ft((0,Dyr.jsx)("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6m0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4"}),"Brightness7");var A$e=L(z(),1);function Nyr({mode:e}){return e==="dark"?(0,A$e.jsx)(Oyr,{fontSize:"small"}):(0,A$e.jsx)(Iyr,{fontSize:"small"})}var Byr=L(z(),1),Fyr=ft((0,Byr.jsx)("path",{d:"m20.38 8.57-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83"}),"Speed");var dB=L(z(),1);function $yr(){let e=Zpe();return(0,dB.jsxs)(cn,{onClick:()=>Xet(!e),children:[(0,dB.jsx)(rT,{children:(0,dB.jsx)(Fyr,{fontSize:"small"})}),(0,dB.jsx)(Tp,{children:e?"Hide render HUD":"Show render HUD"})]})}var el=L(z(),1);function zyr({mode:e,restartLabel:t,updateLabel:r,onToggleColorMode:n,onShowShortcuts:i,onRestart:o,onUpdate:a}){return[(0,el.jsxs)(cn,{onClick:n,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(Nyr,{mode:e})}),(0,el.jsx)(Tp,{children:"Toggle dark mode"})]},"color-mode"),(0,el.jsx)($yr,{},"render-hud"),(0,el.jsxs)(cn,{onClick:i,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(Ayr,{fontSize:"small"})}),(0,el.jsx)(Tp,{children:"Keyboard shortcuts"})]},"shortcuts"),(0,el.jsx)(no,{},"restart-divider"),(0,el.jsxs)(cn,{onClick:o,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(Kfe,{fontSize:"small"})}),(0,el.jsx)(Tp,{children:t})]},"restart"),(0,el.jsxs)(cn,{onClick:a,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(Lyr,{fontSize:"small"})}),(0,el.jsx)(Tp,{children:r})]},"update")]}var Hyr=L(ge(),1);var Wyr=L(z(),1);function Uyr({peer:e,onRestart:t,onClose:r}){let[n,i]=(0,Hyr.useState)(!1);return(0,Wyr.jsx)(vo,{title:`Restart ${e}?`,message:`Restarts the sessions daemon and web server on ${e}. Its sessions resume when the daemon is back. This page stays open.`,confirmLabel:"Restart",busy:n,autoFocusConfirm:!0,onConfirm:()=>{i(!0),t(e).finally(r)},onCancel:r})}var Q1=L(z(),1);function P$e({notices:e}){let{back:t,clearBack:r,error:n,clearError:i,progress:o}=e;return(0,Q1.jsxs)(Q1.Fragment,{children:[(0,Q1.jsx)(ol,{open:!!o,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Q1.jsx)(ri,{severity:"info",variant:"filled",children:o})}),(0,Q1.jsx)(ol,{open:t!==null,autoHideDuration:6e3,onClose:r,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,Q1.jsx)(ri,{severity:"success",variant:"filled",onClose:r,children:t})}),(0,Q1.jsx)(Mu,{error:n,onClose:i})]})}function Vyr(e){let t=new Map;for(let r of e){let n=t.get(r.group)??[];n.push(r),t.set(r.group,n)}return[...t].map(([r,n])=>({name:r,shortcuts:n}))}var XWn=Object.keys(iN);function Gyr(){let e=oN();return Vyr(XWn.map(t=>lw(t,e)))}var op=L(z(),1),ZWn={display:"flex",alignItems:"center",justifyContent:"space-between",pr:1},QWn={display:"flex",alignItems:"center",justifyContent:"space-between",gap:2,py:.5};function qyr({onClose:e}){let t=Gyr();return(0,op.jsxs)(Ps,{open:!0,onClose:e,maxWidth:"xs",fullWidth:!0,"aria-labelledby":"shortcuts-dialog-title",children:[(0,op.jsxs)(Il,{id:"shortcuts-dialog-title",sx:ZWn,children:["Keyboard shortcuts",(0,op.jsx)(sr,{size:"small","aria-label":"Close",onClick:e,children:(0,op.jsx)(xa,{fontSize:"small"})})]}),(0,op.jsx)(Ml,{dividers:!0,children:t.map(r=>(0,op.jsxs)(fe,{component:"section",sx:{mb:1.5},children:[(0,op.jsx)($e,{variant:"overline",color:"text.secondary",children:r.name}),r.shortcuts.map(n=>(0,op.jsxs)(fe,{sx:QWn,children:[(0,op.jsx)($e,{variant:"body2",children:n.label}),(0,op.jsx)(Rt,{direction:"row",spacing:.5,children:(0,op.jsx)(Afe,{chords:n.chords})})]},n.label))]},r.name))})]})}var LR=L(z(),1);function jyr({reconnecting:e,onClose:t}){let{pending:r,error:n,clearError:i,restart:o}=uB(lB.target,e);return(0,LR.jsxs)(LR.Fragment,{children:[(0,LR.jsx)(vo,{title:lB.label,message:lB.message,confirmLabel:"Restart",busy:r,autoFocusConfirm:!0,onConfirm:()=>{o()},onCancel:t}),(0,LR.jsx)(Mu,{error:n,onClose:i})]})}var Kyr=L(z(),1);function JWn(e){return e?{title:`Update assist on ${e}?`,message:`This runs 'assist update' on ${e} as a new session, then restarts its web server. This page stays open.`}:{title:"Update assist",message:"This starts a new session running 'assist update'. Its output will appear in the terminal."}}function Yyr({peer:e,onConfirm:t,onClose:r}){return(0,Kyr.jsx)(vo,{...JWn(e),confirmLabel:"Update",onConfirm:()=>{t(),r()},onCancel:r})}var d0=L(ge(),1);async function eVn(e){try{let t=await fetch(`/api/node-doctor?link=${encodeURIComponent(e)}`);return t.ok?(await t.json()).hop:null}catch{return null}}async function Xyr(e,t){let r=await eVn(e);if(!r)return t;let n=r.remediation?` \u2014 ${r.remediation}`:"";return`${t}: ${r.hop} hop failed: ${r.error}${n}`}async function Zyr(e){if(!e)return"web server unreachable";try{return(await e.json()).error??`HTTP ${e.status}`}catch{return`HTTP ${e.status}`}}var N2=L(ge(),1);function Qyr(e){let{nodes:t}=gu(),[r,n]=(0,N2.useState)(null),i=(0,N2.useRef)(!1),o=r?t?.links.find(l=>l.name===r.peer):void 0;(0,N2.useEffect)(()=>{if(!(!r||!o)){if(o.state!=="connected"){i.current=!0;return}i.current&&(n(null),e(r.describe(r.peer,o.peerVersion)))}},[r,o,e]);let a=(0,N2.useCallback)((l,u)=>{i.current=!1,n({peer:l,describe:u})},[]),s=(0,N2.useCallback)(()=>n(null),[]);return{watch:a,stop:s}}var tVn=9e4;function e0e(){let[e,t]=(0,d0.useState)(null),[r,n]=(0,d0.useState)(null),i=(0,d0.useRef)(void 0),o=(0,d0.useCallback)(f=>{clearTimeout(i.current),t(f)},[]),{watch:a,stop:s}=Qyr(o);(0,d0.useEffect)(()=>()=>clearTimeout(i.current),[]);let l=(0,d0.useCallback)(async(f,d)=>{n(await Xyr(f,d))},[]);return{requestThenAwait:(0,d0.useCallback)(async(f,d,h,p)=>{let m;try{m=await h()}catch{}return m?.ok?(a(f,p),clearTimeout(i.current),i.current=setTimeout(()=>{s(),l(f,`${f} did not come back`)},tVn),!0):(await l(f,`${d} failed (${await Zyr(m)})`),!1)},[l,a,s]),back:e,clearBack:()=>t(null),error:r,clearError:()=>n(null)}}var rVn=(e,t)=>t?`${e} is back (v${t})`:`${e} is back`;function Jyr(){let{requestThenAwait:e,...t}=e0e();return{restart:n=>e(n,`Restart ${n}`,()=>cB("both",n),rVn),...t}}var pY=L(ge(),1);var h0=L(ge(),1);function e1r(e){return e.commandType==="assist"&&e.assistArgs?.[0]==="update"&&e.status==="done"}function t0e(e,t,r){let[n,i]=(0,h0.useState)(!1),[o,a]=(0,h0.useState)(!1),s=(0,h0.useRef)(!1),l=(0,h0.useRef)(e);l.current=e;let u=(0,h0.useRef)(new Set),f=(0,h0.useCallback)(()=>{s.current=!1,a(!1),u.current=new Set(l.current.filter(e1r).map(d=>d.id)),i(!0)},[]);return(0,h0.useEffect)(()=>{if(!n||o)return;if(t){s.current=!0;return}if(!s.current)return;e.some(h=>e1r(h)&&h.node===r&&!u.current.has(h.id))&&a(!0)},[n,o,t,e,r]),{arm:f,completed:o}}var t1r=(e,t)=>t?`${e} updated to v${t}`:`${e} updated`;function nVn(e){return fetch(`/api/self-update?node=${encodeURIComponent(e)}`,{method:"POST"})}function r1r(e){let{nodes:t}=gu(),{launchAssist:r}=$l(),{requestThenAwait:n,...i}=e0e(),[o,a]=(0,pY.useState)(null),[s,l]=(0,pY.useState)(),u=m=>t?.links.find(g=>g.name===m)?.state,{arm:f,completed:d}=t0e(e,u(s)!=="connected",s);(0,pY.useEffect)(()=>{!d||!s||(l(void 0),n(s,`Restart ${s}'s web server`,()=>cB("webserver",s),t1r))},[d,s,n]);let h=async m=>{a(`Updating assist on ${m}\u2026`),await n(m,`Update ${m}`,()=>nVn(m),t1r),a(null)};return{update:m=>{if(u(m)!=="connected"){h(m);return}l(m),f(),r(["update"],void 0,{node:m})},progress:o,...i}}var p0=L(z(),1);function n1r({dialog:e,peer:t,sessions:r,reconnecting:n,onClose:i}){let{launchAssist:o,armUpdateReload:a}=$l(),s=Jyr(),l=r1r(r);return(0,p0.jsxs)(p0.Fragment,{children:[e==="shortcuts"&&(0,p0.jsx)(qyr,{onClose:i}),e==="restart"&&t&&(0,p0.jsx)(Uyr,{peer:t,onRestart:s.restart,onClose:i}),e==="restart"&&!t&&(0,p0.jsx)(jyr,{reconnecting:n,onClose:i}),e==="update"&&(0,p0.jsx)(Yyr,{peer:t,onConfirm:()=>{if(t){l.update(t);return}a(),o(["update"])},onClose:i}),(0,p0.jsx)(P$e,{notices:s}),(0,p0.jsx)(P$e,{notices:l})]})}var i1r=L(z(),1),o1r=ft((0,i1r.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var a1r=L(ge(),1);var mY=L(z(),1);function s1r(){let e=Xi(),t=(0,a1r.useCallback)(()=>e("/config"),[e]),{matches:r,chords:n}=Xn("openConfig");return zo(r,t),(0,mY.jsx)(lr,{describeChild:!0,title:(0,mY.jsx)(Md,{label:"Config",chords:n}),children:(0,mY.jsx)(sr,{size:"small",sx:{color:"inherit"},"aria-label":"Config",onClick:t,children:(0,mY.jsx)(o1r,{fontSize:"small"})})})}var l1r=L(z(),1),c1r=ft((0,l1r.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var r0e=L(ge(),1);var gY=L(z(),1);function u1r({open:e,onOpen:t}){let r=(0,r0e.useRef)(null),{matches:n,chords:i}=Xn("openMenu");return zo(n,(0,r0e.useCallback)(()=>{r.current&&t(r.current)},[t])),(0,gY.jsx)(lr,{describeChild:!0,title:(0,gY.jsx)(Md,{label:"Menu",chords:i}),children:(0,gY.jsx)(sr,{ref:r,onClick:o=>t(o.currentTarget),size:"small",sx:{color:"inherit"},"aria-label":"Open menu","aria-haspopup":"true","aria-expanded":e?"true":void 0,children:(0,gY.jsx)(c1r,{fontSize:"small"})})})}var L$e=L(z(),1),f1r=ft([(0,L$e.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,L$e.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber");var M$e=L(z(),1);function d1r(){let e=$ge();return!e||e===M_?null:(0,M$e.jsx)(lr,{title:`Daemon is running v${e}, but this page was served by v${M_}. Restart the daemon to match.`,children:(0,M$e.jsx)(f1r,{fontSize:"small",color:"warning","aria-label":"Version mismatch"})})}var h1r=e=>({display:"inline-flex",alignItems:"center",gap:.75,px:1,py:.25,borderRadius:999,fontSize:12,lineHeight:1.5,color:"inherit",opacity:e?1:.55,bgcolor:e?"rgba(255,255,255,0.16)":"transparent",transition:"opacity .2s ease, background-color .2s ease","&:hover, &:focus-visible":{opacity:1,bgcolor:"rgba(255,255,255,0.12)"},"& .ready-dot":{width:8,height:8,borderRadius:"50%",bgcolor:"#ffb74d",boxShadow:"0 0 0 2px rgba(0,0,0,.15)"},"& .ready-count":{fontWeight:500}});var J1=L(z(),1);function p1r(){let{entries:e}=yge();if(!M_)return null;let t=e.filter(xge).length;return(0,J1.jsxs)(J1.Fragment,{children:[(0,J1.jsxs)(Dn,{component:ys,to:"/updates","aria-label":t?`Updates: ${t} node${t>1?"s have":" has"} an update ready`:"Updates",sx:h1r(t>0),children:[t>0&&(0,J1.jsx)("span",{className:"ready-dot","aria-hidden":!0}),(0,J1.jsxs)("span",{children:["v",M_]}),t>0&&(0,J1.jsxs)("span",{className:"ready-count",children:[t," ready"]})]}),(0,J1.jsx)(d1r,{})]})}var hB=L(z(),1);function m1r({open:e,onOpen:t}){return(0,hB.jsxs)(fe,{sx:{position:"fixed",top:8,right:16,zIndex:r=>r.zIndex.drawer+2,display:"flex",alignItems:"center",gap:.5,color:"inherit"},children:[(0,hB.jsx)(p1r,{}),(0,hB.jsx)(s1r,{}),(0,hB.jsx)(u1r,{open:e,onOpen:t})]})}var MR=L(ge(),1);var y1r=L(ge(),1);var g1r=!0,iVn=new Set(["openMenu","cycleCards"]),oVn=Object.keys(iN).filter(e=>!iVn.has(e));function v1r(e,t){let r=oN();(0,y1r.useEffect)(()=>{if(!e)return;let n=i=>{oVn.some(o=>lw(o,r).matches(i))&&t()};return globalThis.addEventListener("keydown",n,g1r),()=>globalThis.removeEventListener("keydown",n,g1r)},[e,t,r])}function b1r(){let[e,t]=(0,MR.useState)(null),[r,n]=(0,MR.useState)(!0),i=!!e,o=(0,MR.useCallback)(()=>t(null),[]),a=(0,MR.useCallback)(s=>{n(!0),t(s)},[]);return v1r(i,(0,MR.useCallback)(()=>{n(!1),t(null)},[])),{anchorEl:e,open:i,close:o,openAt:a,restoreFocus:r}}var yY=L(ge(),1);function x1r(e){zo(Xn("shortcutsSheet").matches,e)}function T1r(){let[e,t]=(0,yY.useState)(null);x1r((0,yY.useCallback)(()=>t("shortcuts"),[]));let r=(0,yY.useCallback)(()=>t(null),[]);return{dialog:e,showDialog:t,closeDialog:r}}function S1r(){let{nodes:e,selected:t}=gu();return e&&t&&t!==e.local?t:void 0}function C1r(e){return{restartLabel:e?`Restart ${e}`:lB.label,updateLabel:e?`Update assist on ${e}`:"Update assist"}}var B2=L(z(),1);function w1r({mode:e,toggle:t,sessions:r,reconnecting:n}){let{anchorEl:i,open:o,close:a,openAt:s,restoreFocus:l}=b1r(),{dialog:u,showDialog:f,closeDialog:d}=T1r(),h=S1r(),p=m=>()=>{a(),f(m)};return(0,B2.jsxs)(B2.Fragment,{children:[(0,B2.jsx)(m1r,{open:o,onOpen:s}),(0,B2.jsxs)(Dl,{anchorEl:i,open:o,onClose:a,disableRestoreFocus:!l,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,B2.jsx)(kyr,{}),zyr({mode:e,...C1r(h),onToggleColorMode:()=>{t(),a()},onShowShortcuts:p("shortcuts"),onRestart:p("restart"),onUpdate:p("update")})]}),(0,B2.jsx)(n1r,{dialog:u,peer:h,sessions:r,reconnecting:n,onClose:d})]})}var E1r=L(ge(),1);var k1r=L(z(),1);function _1r({conflict:e,onConfirm:t,onCancel:r}){let{name:n,cwd:i,port:o,group:a}=e.existing,s=xm(i),l=o?` on port ${o}`:"",u=s?` in ${s}`:"",f=a?`, holding the ${a} server slot`:"";return(0,k1r.jsx)(vo,{title:a?`Replace the ${a} server?`:"Replace running server?",message:`"${n}" is already serving${l}${u}${f}. Replace it \u2014 stop the running server and start this one?`,confirmLabel:"Replace",confirmColor:"error",onConfirm:t,onCancel:r})}var n0e=L(z(),1);function R1r({socket:e,children:t}){let{serverConflict:r,clearServerConflict:n,retrySession:i,stopSession:o,startRun:a,discardSession:s}=e,l=(0,E1r.useMemo)(()=>({onStop:o,onStart:a,onDiscard:s}),[o,a,s]),u=()=>{r&&(r.runName?a(r.runName,r.cwd,!0,r.launchedFrom,r.node):r.sessionId&&i(r.sessionId,!0),n())};return(0,n0e.jsxs)(GDe.Provider,{value:l,children:[t,r&&(0,n0e.jsx)(_1r,{conflict:r,onConfirm:u,onCancel:n})]})}var A1r=new Map;function P1r(e,t){if(!UJ())return;let r=A1r.get(e);if(A1r.set(e,t),!!r)for(let[n,i]of Object.entries(t))Object.is(i,r[n])||W0(`\u0394 ${e}.${n}`)}var o0e=L(ge(),1);function L1r(e,t,r){if(!t)return null;let n=e[t];if(!n)return null;let i=r.find(o=>o.id===n);return!i||Tm(i)!==t?null:n}function ev(e,t,r){if(e)return t.find(n=>n.id===e)??r.find(n=>n.sessionId===e)}function i0e(){let{pathname:e}=ua();return e.startsWith("/backlog")||e.startsWith("/usage")}function M1r({selectedCwd:e,selectedCardId:t,sessions:r,history:n,activeByRepo:i,onSelect:o}){let a=ev(t,r,n),s=a&&Tm(a),l=!!(s&&s===e),u=L1r(i,e,r),f=(0,o0e.useRef)(t),d=i0e();(0,o0e.useEffect)(()=>{let h=f.current!==t&&!!s;f.current=t,!(d||h||l||!u)&&o(u)},[t,s,l,u,o,d])}var l0e=L(ge(),1);function I1r(e,t,r,n){return ev(e,t,r)?.cwd||n}function D1r(e,t,r,n){let i=I1r(e,t,r,n.cwd),o=ev(e,t,r);return{cwd:i,node:o?.cwd?o.node:n.node}}function O1r(e,t){let r=new Set,n=new Set,i=[];for(let o of t){if(o.cwdMissing)continue;let a=iw(o),s=Tm(o);!a||!s||r.has(a)||n.has(s)||(r.add(a),n.add(s),i.push(s))}return e&&!r.has(tN(e,t))&&!n.has(e)&&i.unshift(e),i}var ap="";function aVn(e){let t=new Map([[ap,[]]]);for(let r of e){let n=r.node??ap;t.set(n,[...t.get(n)??[],r])}return t}function N1r(e,t){var n;let r=new Map;for(let[i,o]of aVn(t)){let a=i===ap?e:"";for(let s of O1r(a,o)){let l=tN(s,o),u=r.get(l)??{key:l,origin:l===s?void 0:l,clones:{}};(n=u.clones)[i]??(n[i]=s),r.set(l,u)}}return[...r.values()]}function B1r(e,t){return e.clones[t]??e.clones[ap]??Object.values(e.clones)[0]}function vY(e,t){return e.find(r=>Object.values(r.clones).includes(t))}function pB(e,t){return!e||e===t?ap:e}var I$e=L(ge(),1);function F1r(e,t){let r=(0,I$e.useCallback)((i,o)=>{let a=pB(o,t),s=vY(e,i);return s?s.clones[a]:a===ap?i:void 0},[e,t]),n=(0,I$e.useCallback)(i=>vY(e,i)?.origin,[e]);return{cloneOn:r,originOf:n}}var a0e=L(ge(),1);function $1r(e,t,r,n){let i=(0,a0e.useRef)(e);(0,a0e.useEffect)(()=>{if(i.current===e)return;i.current=e;let o=vY(t,r)?.clones[e];o&&n(o,e)},[e,t,r,n])}var mB=L(ge(),1);function z1r(e,t,r){if(t.node!==void 0)return t.node;let n=new Set(e.flatMap(i=>Object.entries(i.clones).filter(([,o])=>o===t.cwd).map(([o])=>o)));return n.has(r)?r:n.size===0||n.has(ap)?ap:[...n][0]}function H1r(e,t,r,n){let[i,o]=(0,mB.useState)({cwd:e}),a=(0,mB.useCallback)((l,u)=>o({cwd:l,node:u}),[]);(0,mB.useEffect)(()=>{e&&!i.cwd&&o({cwd:e})},[e,i.cwd]);let s=z1r(t,{cwd:i.cwd,node:i.node===void 0?void 0:pB(i.node,n)},r);return{selectedCwd:i.cwd,selectedNode:s||void 0,setSelectedCwd:a}}var U1r=L(ge(),1);function s0e(e,t,r){let n=ev(e,t,r);return n&&Tm(n)}function W1r(e,t,r,n){let i=s0e(e,t,r),o=ev(e,t,r)?.node??ap;(0,U1r.useEffect)(()=>{i&&n(i,o)},[i,o,n])}function V1r(e,t,r,n,i){let o=i.nodes?.local,a=pB(i.selected,o),s=(0,l0e.useMemo)(()=>N1r(e,t),[e,t]),{selectedCwd:l,selectedNode:u,setSelectedCwd:f}=H1r(e,s,a,o);W1r(r,n,t,f),$1r(a,s,l,f);let{cloneOn:d,originOf:h}=F1r(s,o),p=(0,l0e.useMemo)(()=>s.map(y=>B1r(y,a)),[s,a]),{cwd:m,node:g}=D1r(r,n,t,{cwd:l,node:u});return(0,l0e.useMemo)(()=>({repos:p,selectedCwd:l,selectedNode:u,worktreeCwd:m,worktreeNode:g,setSelectedCwd:f,cloneOn:d,originOf:h}),[p,l,u,m,g,f,d,h])}var u0e=L(ge(),1);var z_=L(ge(),1);var G1r=L(ge(),1),c0e="assist:reloaded-after-update";function q1r(e){(0,G1r.useEffect)(()=>{globalThis.sessionStorage?.getItem(c0e)&&(globalThis.sessionStorage.removeItem(c0e),e({message:"Reloaded after updating assist",sessionId:null}))},[e])}function j1r(e,t,r,n){let{arm:i,completed:o}=t0e(e,t),a=(0,z_.useRef)(!1),s=(0,z_.useCallback)(()=>{globalThis.sessionStorage?.setItem(c0e,"1")},[]),{error:l,restart:u}=uB("webserver",t,s);return q1r(r),(0,z_.useEffect)(()=>{l&&n(l)},[l,n]),(0,z_.useEffect)(()=>{!o||a.current||(a.current=!0,u())},[o,u]),{armUpdateReload:(0,z_.useCallback)(()=>{a.current=!1,i()},[i])}}function Y1r(e){let{armUpdateReload:t}=j1r(e.sessions,e.reconnecting,e.setSuccess,e.setError),r=(0,u0e.useMemo)(()=>({launchAssist:e.createAssistSession,launchAgentInStream:e.createSessionInStream,resumeSession:e.resumeSession,armUpdateReload:t}),[e.createAssistSession,e.createSessionInStream,e.resumeSession,t]),n=Xi(),i=(0,u0e.useCallback)(o=>{e.selectSession(o),n("/sessions"),e.clearSuccess()},[n,e.selectSession,e.clearSuccess]);return{launch:r,viewLaunchedSession:i}}var K1r=L(ge(),1);function X1r(e,t,r,n){let i=s0e(e,t,r);(0,K1r.useEffect)(()=>{e&&i&&n({type:"set-active",cwd:i,sessionId:e})},[e,i,n])}var f0e=L(ge(),1);function Z1r(e,t){let r=(0,f0e.useRef)(new Map);(0,f0e.useEffect)(()=>{let n=new Set;for(let{id:i,status:o}of e)n.add(i),r.current.get(i)!==o&&(r.current.set(i,o),console.debug(`[sessions] render session ${i} status=${o}`),t({type:"ui-status",sessionId:i,status:o}));for(let i of r.current.keys())n.has(i)||r.current.delete(i)},[e,t])}var gB=L(ge(),1),Q1r="assist.sessions.node";function sVn(){try{return localStorage.getItem(Q1r)}catch{return null}}function lVn(e){try{localStorage.setItem(Q1r,e)}catch{}}function J1r(e){let[t,r]=(0,gB.useState)(sVn),n=(0,gB.useCallback)(i=>{r(i),lVn(i)},[]);return(0,gB.useMemo)(()=>{let i=e?[e.local,...e.links.map(o=>o.name)]:[];return{nodes:e,names:i,visible:i.length>1,selected:t&&i.includes(t)?t:e?.local,select:n}},[e,t,n])}var tvr=L(ge(),1);function evr(e){let t=e;if(t.type==="create")return{cwd:t.cwd,title:t.prompt?.trim()||(t.design?"New design session":"New session"),node:t.node};if(t.type==="create-assist"){let r=t.title?.trim();return{cwd:t.cwd,title:r||"New session",named:!!r,node:t.node}}return null}function rvr(e,t){return(0,tvr.useCallback)(r=>{let n=e.current;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify(r));let i=evr(r);i&&t(i)},[e,t])}var tv=L(ge(),1);function d0e(e,t,r,n,i){e({type:"create",prompt:r||void 0,cwd:n,...t,...i?{node:i}:{}})}function nvr(e){return(t,r,n)=>d0e(e,{design:!0},t,r,n)}function ivr(e){return(t,r,n,i)=>d0e(e,{harness:t},r,n,i)}function ovr(e){return(t,r,n)=>d0e(e,{auto:!0},t,r,n)}function avr(e){return(t,r,n)=>e({type:"create-assist",assistArgs:t,cwd:r,...n})}function svr(e){return(t,r,n,i,o)=>e({type:"resume",sessionId:t,cwd:r,name:n,harness:i,node:o})}function lvr(e,t){return(r,n)=>{t.delete(r),e({type:"retry",sessionId:r,replace:n})}}function cvr(e,t){return r=>{t.delete(r),e({type:"restart",sessionId:r})}}function uvr(e,t){return r=>{e({type:"dismiss",sessionId:r}),t.delete(r)}}function fvr(e,t){return r=>{e({type:"discard",sessionId:r}),t.delete(r)}}function dvr(e){return t=>e({type:"stop",sessionId:t})}function hvr(e){return(t,r,n,i,o)=>e({type:"create-run",runName:t,cwd:r,replace:n,launchedFrom:i,node:o})}function pvr(e){return(t,r)=>e({type:"set-autorun",sessionId:t,enabled:r})}function mvr(e){return(t,r)=>e({type:"set-autoadvance",sessionId:t,enabled:r})}function gvr(e){return(t,r)=>e({type:"set-starred",sessionId:t,starred:r})}function yvr(e){return(t,r)=>e({type:"input",sessionId:t,data:r,viewerId:Zj})}function vvr(e){return(t,r,n,i)=>e({type:"resize",sessionId:t,cols:r,rows:n,viewerId:Zj,claim:i})}function bvr(e,t){return(r,n)=>{let i=e.get(r);return i&&n(i),t.set(r,n),()=>t.delete(r)}}function xvr(e){return(t,r,n,i)=>e({type:"pr-decision",sessionId:t,requestId:r,decision:n,...i})}var IR=L(ge(),1);function Tvr(e){return(t,r,n)=>e({type:"create",prompt:r||void 0,cwd:n,joinSessionId:t,auto:!0})}function Svr(e){return{createSession:(0,IR.useMemo)(()=>ovr(e),[e]),createSessionInStream:(0,IR.useMemo)(()=>Tvr(e),[e]),createDesignSession:(0,IR.useMemo)(()=>nvr(e),[e]),createHarnessSession:(0,IR.useMemo)(()=>ivr(e),[e]),createAssistSession:(0,IR.useMemo)(()=>avr(e),[e]),resumeSession:(0,IR.useMemo)(()=>svr(e),[e])}}var bY=L(ge(),1);function Cvr(e,t){let r=(0,bY.useCallback)((a,s)=>{lvr(e,t.current)(a,s)},[e,t]),n=(0,bY.useCallback)(a=>{cvr(e,t.current)(a)},[e,t]),i=(0,bY.useCallback)(a=>{uvr(e,t.current)(a)},[e,t]),o=(0,bY.useCallback)(a=>{fvr(e,t.current)(a)},[e,t]);return{retrySession:r,restartSession:n,dismissSession:i,discardSession:o}}function wvr(e,t,r){let n={...Svr(e),sendInput:(0,tv.useMemo)(()=>yvr(e),[e]),sendResize:(0,tv.useMemo)(()=>vvr(e),[e]),sendPrDecision:(0,tv.useMemo)(()=>xvr(e),[e]),setAutoRun:(0,tv.useMemo)(()=>pvr(e),[e]),setAutoAdvance:(0,tv.useMemo)(()=>mvr(e),[e]),setStarred:(0,tv.useMemo)(()=>gvr(e),[e]),stopSession:(0,tv.useMemo)(()=>dvr(e),[e]),startRun:(0,tv.useMemo)(()=>hvr(e),[e])},i=(0,tv.useMemo)(()=>bvr(t.current,r.current),[t,r]);return{...n,...Cvr(e,t),onOutput:i}}var xY=L(ge(),1);function _vr(e,t,r){let n=(0,xY.useCallback)(s=>{r(s),e({type:"fetch-transcript",sessionId:s})},[e,r]),i=(0,xY.useCallback)(s=>e({type:"fetch-user-messages",sessionId:s}),[e]),o=(0,xY.useCallback)(()=>{r(null)},[r]),a=(0,xY.useCallback)(s=>{r(null),t(s)},[t,r]);return{viewTranscript:n,fetchUserMessages:i,clearTranscript:o,selectSession:a}}var W_=L(ge(),1);function kvr(e,t){let r=new Set(t.map(i=>i.id)),n=null;for(let i of Object.values(e))r.has(i)&&(n=i);return n}var Rvr=L(ge(),1);function Evr(e,t,r=null){return t!==null?e.some(n=>n.id===t)?t:e[0]?.id??null:r&&e.some(n=>n.id===r)?r:e[0]?.id??null}function Avr(e,t,r){let n=i0e();(0,Rvr.useEffect)(()=>{if(n){t(null);return}t(i=>Evr(e,i,r))},[e,t,r,n])}var h0e=L(ge(),1);function Pvr(){let[e,t]=(0,h0e.useState)({}),[r,n]=(0,h0e.useState)(null),[i,o]=(0,h0e.useState)(null);return{activeByRepo:e,setActiveByRepo:t,daemonVersion:r,setDaemonVersion:n,nodes:i,setNodes:o}}var m0=L(ge(),1);function Lvr(e,t){if(!t.some(n=>e.has(n)))return e;let r=new Set(e);for(let n of t)r.delete(n);return r}function Mvr(e,t){let r=[];for(let n of t){let i=e.get(n.id);i!==void 0&&i!==n.startedAt&&r.push(n.id)}return r}function Ivr(e,t){return t.filter(r=>r.commandType==="run"&&e.get(r.id)!==r.startedAt).map(r=>r.id)}var cVn=1500;function Dvr(){let[e,t]=(0,m0.useState)(new Set),r=(0,m0.useRef)(new Map),n=(0,m0.useRef)(new Map),i=(0,m0.useCallback)(s=>{t(l=>l.has(s)?l:new Set(l).add(s))},[]),o=(0,m0.useCallback)(s=>{let l=n.current;for(let u of s)clearTimeout(l.get(u)),l.set(u,setTimeout(()=>{l.delete(u),i(u)},cVn))},[i]);(0,m0.useEffect)(()=>{let s=n.current;return()=>{for(let l of s.values())clearTimeout(l)}},[]);let a=(0,m0.useCallback)(s=>{let l=Mvr(r.current,s),u=Ivr(r.current,s);r.current=new Map(s.map(f=>[f.id,f.startedAt])),l.length&&t(f=>Lvr(f,l)),o(u)},[o]);return{initialized:e,markInitialized:i,syncSessions:a}}var H_=L(ge(),1);function Ovr(){let[e,t]=(0,H_.useState)(null),[r,n]=(0,H_.useState)(null),[i,o]=(0,H_.useState)(null),a=(0,H_.useCallback)(()=>t(null),[]),s=(0,H_.useCallback)(()=>n(null),[]),l=(0,H_.useCallback)(()=>o(null),[]);return{error:e,setError:t,clearError:a,success:r,setSuccess:n,clearSuccess:s,serverConflict:i,setServerConflict:o,clearServerConflict:l}}var rv=L(ge(),1);function Nvr(e,t){return[...e,{...t,status:"launching"}]}function p0e(e){return e.find(t=>t.status==="launching")}function Bvr(e){let t=p0e(e);return t?e.filter(r=>r.id!==t.id):e}function Fvr(e,t){let r=p0e(e);return r?D$e(e,r.id,t):e}function D$e(e,t,r){return e.map(n=>n.id===t&&n.status==="launching"?{...n,status:"error",error:r}:n)}function $vr(e,t){return e.filter(r=>r.id!==t)}var zvr=L(ge(),1);var uVn=6e4,fVn="Launch timed out \u2014 the session did not start.";function Hvr(e,t){(0,zvr.useEffect)(()=>{let r=e.filter(i=>i.status==="launching");if(r.length===0)return;let n=r.map(i=>setTimeout(()=>t(o=>D$e(o,i.id,fVn)),Math.max(0,uVn-(Date.now()-i.startedAt))));return()=>n.forEach(clearTimeout)},[e,t])}function Uvr(){let[e,t]=(0,rv.useState)([]),r=(0,rv.useRef)([]),n=(0,rv.useCallback)(l=>{r.current=l(r.current),t(r.current)},[]),i=(0,rv.useCallback)(l=>{n(u=>Nvr(u,{id:crypto.randomUUID(),startedAt:Date.now(),...l}))},[n]),o=(0,rv.useCallback)(()=>{let l=p0e(r.current);return n(Bvr),l?.named?l.title:void 0},[n]),a=(0,rv.useCallback)(l=>n(u=>Fvr(u,l)),[n]),s=(0,rv.useCallback)(l=>n(u=>$vr(u,l)),[n]);return Hvr(e,n),{pendingLaunches:e,addPendingLaunch:i,resolvePendingLaunch:o,failPendingLaunch:a,dismissPendingLaunch:s}}var TY=L(ge(),1);function Wvr(){let[e,t]=(0,TY.useState)(null),[r,n]=(0,TY.useState)({}),i=(0,TY.useCallback)((o,a)=>{o!=="claude"&&n(s=>({...s,[o]:a}))},[]);return{rateLimits:e,setRateLimits:t,harnessRateLimits:r,setHarnessRateLimits:i}}var Vvr=L(ge(),1);function Gvr(e,t){return(0,Vvr.useCallback)(r=>{e(r),t(r)},[e,t])}var m0e=L(ge(),1);function qvr(){let[e,t]=(0,m0e.useState)(null),[r,n]=(0,m0e.useState)(null),[i,o]=(0,m0e.useState)(null);return{transcript:e,setTranscript:t,viewingTranscriptSessionId:r,setViewingTranscriptSessionId:n,userMessages:i,setUserMessages:o}}var U_=L(ge(),1);function jvr(e,t){let r=e.sessionId;t.buffers.current?.delete(r),t.handlers.current?.get(r)?.("\x1Bc")}function Yvr(e,t){let r=e.sessionId,n=t.resolvePendingLaunch();t.setViewingTranscriptSessionId(null),t.setActiveId(r),e.isNew&&t.setSuccess({message:n?`Started ${n}`:"New session started",sessionId:r})}function Kvr(e,t){let r=e.message;t.setError(r),t.failPendingLaunch(r)}function Xvr(e,t){let r=e.rateLimits,n=e.harness;!n||n==="claude"?t.setRateLimits(r):t.setHarnessRateLimits?.(n,r)}function Zvr(e,t){t.setNodes({local:e.local,links:e.links??[]})}function Qvr(e,t){t.setSuccess({message:e.message,sessionId:null})}function Jvr(e,t){let r=e.sessionId,n=t.buffers.current?.get(r)??"";t.buffers.current?.set(r,n+e.data),t.handlers.current?.get(r)?.(e.data),t.markInitialized(r)}function ebr(e,t){t.setServerConflict({existing:e.existing,runName:e.runName,cwd:e.cwd,sessionId:e.sessionId,launchedFrom:e.launchedFrom,node:e.node})}function tbr(e,t){let r=e.sessions;t.setSessions(r),e.cwd&&t.setCurrentCwd(e.cwd),t.setActiveByRepo(e.active??{})}var dVn={sessions:tbr,created:Yvr,history:(e,t)=>t.setHistory(e.sessions),transcript:(e,t)=>t.setTranscript({sessionId:e.sessionId,messages:e.messages}),"user-messages":(e,t)=>t.setUserMessages({sessionId:e.sessionId,messages:e.messages}),hello:(e,t)=>t.setDaemonVersion(e.version),nodes:Zvr,error:Kvr,notice:Qvr,"run-conflict":ebr,limits:Xvr,clear:jvr,output:Jvr};function rbr(e,t){dVn[e.type]?.(e,t)}function nbr(e,t={}){let r=location.protocol==="https:"?"wss:":"ws:",n=new WebSocket(`${r}//${location.host}/ws`);return n.onopen=()=>{t.onOpen?.(),n.send(JSON.stringify({type:"hello"})),n.send(JSON.stringify({type:"history"}))},n.onmessage=i=>{rbr(JSON.parse(i.data),e)},n.onclose=()=>t.onClose?.(),n}function ibr(e,t,r,n){let i=!1,o,a=0,s=!1,l=()=>{i||t(nbr(e,{onOpen:()=>{s&&r(),s=!1,n(!1),a=0},onClose:()=>{if(i)return;s=!0,n(!0);let u=Math.min(300*2**a,2e3);a+=1,o=setTimeout(l,u)}}))};return l(),()=>{i=!0,o&&clearTimeout(o)}}function obr(e){let t=(0,U_.useRef)(null),[r,n]=(0,U_.useState)(!1),{handleSessions:i,markInitialized:o,buffers:a,handlers:s}=e;(0,U_.useEffect)(()=>{let u=()=>{a.current?.clear();let d=s.current;if(d)for(let h of d.values())h("\x1Bc")},f=ibr({...e,setSessions:i},d=>{t.current=d},u,n);return()=>{f(),t.current?.close()}},[i,o,a,s]);let l=(0,U_.useCallback)(()=>{let u=t.current;u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"history"}))},[]);return{wsRef:t,requestHistory:l,reconnecting:r}}function abr(){let[e,t]=(0,W_.useState)([]),[r,n]=(0,W_.useState)([]),[i,o]=(0,W_.useState)(null),a=Pvr(),s=qvr(),[l,u]=(0,W_.useState)(""),f=Ovr(),d=Uvr(),h=Wvr(),{initialized:p,markInitialized:m,syncSessions:g}=Dvr(),y=(0,W_.useRef)(new Map),v=(0,W_.useRef)(new Map),b=Gvr(g,t),{wsRef:x,requestHistory:S,reconnecting:C}=obr({handleSessions:b,setHistory:n,setActiveId:o,...a,...s,setCurrentCwd:u,...f,...d,...h,markInitialized:m,buffers:y,handlers:v});return Avr(e,o,kvr(a.activeByRepo,e)),{sessions:e,history:r,activeId:i,setActiveId:o,...a,...s,currentCwd:l,...f,...d,...h,initialized:p,wsRef:x,buffers:y,handlers:v,requestHistory:S,reconnecting:C}}function sbr(){let e=abr(),{wsRef:t,buffers:r,handlers:n,addPendingLaunch:i,activeId:o,sessions:a}=e,s=J1r(e.nodes),l=rvr(t,i),u=wvr(l,r,n);X1r(o,a,e.history,l),Z1r(a,l);let f=_vr(l,e.setActiveId,e.setViewingTranscriptSessionId);return{...e,...u,...f,nodeSelection:s}}var yB=L(ge(),1);var lbr="assist:sidebar-collapsed";function cbr(){let[e,t]=(0,yB.useState)(()=>Bd(lbr).length>0),r=(0,yB.useCallback)(()=>{t(n=>{let i=!n;return Fd(lbr,i?[!0]:[]),i})},[]);return(0,yB.useMemo)(()=>({collapsed:e,onToggleCollapsed:r}),[e,r])}var ubr=L(ge(),1);function fbr(){(0,ubr.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/hotkeys");if(!t.ok)return;let r=await t.json();e||T3.set(r)}catch{}})(),()=>{e=!0}},[])}var g0e=L(ge(),1);function dbr(){let[e,t]=(0,g0e.useState)(!0);return(0,g0e.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/session-layout")).json();r||t(!!i?.topBar)}catch{t(!0)}})(),()=>{r=!0}},[]),e}function hbr(){let e=sbr(),t=Epe(e),r=V1r(e.currentCwd,e.history,t,e.sessions,e.nodeSelection);M1r({selectedCwd:r.selectedCwd,selectedCardId:t,sessions:e.sessions,history:e.history,activeByRepo:e.activeByRepo,onSelect:e.selectSession});let{launch:n,viewLaunchedSession:i}=Y1r(e),o=dbr();fbr();let a=cbr();return P1r("shell",{...e,selection:r,launch:n,topBar:o,sidebarCollapse:a}),{socket:e,selection:r,launch:n,viewLaunchedSession:i,topBar:o,sidebarCollapse:a}}var g0=L(z(),1),hVn={zIndex:e=>e.zIndex.drawer+1},pVn={minHeight:48};function pbr({mode:e,toggle:t}){let r=hbr(),{socket:n,selection:i,viewLaunchedSession:o}=r;return(0,g0.jsx)(T0r,{shell:r,children:(0,g0.jsxs)(g$e.Provider,{value:n.daemonVersion,children:[(0,g0.jsx)(w1r,{mode:e,toggle:t,sessions:n.sessions,reconnecting:n.reconnecting}),(0,g0.jsx)(Fye,{position:"fixed",elevation:1,sx:hVn,children:(0,g0.jsx)(wyr,{socket:n,selection:i})}),(0,g0.jsx)(Ok,{variant:"dense",sx:pVn}),(0,g0.jsx)(R1r,{socket:n,children:(0,g0.jsx)(lgr,{socket:n})}),(0,g0.jsx)(v0r,{socket:n,onViewLaunchedSession:o})]})})}var mbr=L(ge(),1);function gbr(){let[e,t]=(0,mbr.useState)(()=>{try{return localStorage.getItem("theme-mode")??"dark"}catch{return"dark"}});return{mode:e,toggle:()=>t(n=>{let i=n==="dark"?"light":"dark";try{localStorage.setItem("theme-mode",i)}catch{}return i})}}var V_=L(z(),1),mVn={MuiButtonBase:{styleOverrides:{root:{cursor:"pointer","&.Mui-disabled":{cursor:"default"}}}},MuiLink:{styleOverrides:{root:{cursor:"pointer"}}}};function gVn(){let{mode:e,toggle:t}=gbr(),r=(0,vbr.useMemo)(()=>C0({palette:{mode:e,...e==="dark"&&{background:{default:"#1e1e1e",paper:"#252526"}}},components:mVn}),[e]);return(0,V_.jsxs)(AK,{theme:r,children:[(0,V_.jsx)(gX,{}),(0,V_.jsx)(pbr,{mode:e,toggle:t})]})}var yVn=o2e([{path:"*",element:(0,V_.jsx)(gVn,{})}]);function vVn(){return(0,V_.jsx)(Zxe,{router:yVn})}var ybr=document.getElementById("app");ybr&&(0,bbr.createRoot)(ybr).render((0,V_.jsx)(vVn,{}));})();
|
|
3979
3979
|
/*! Bundled license information:
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Command } from "commander";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "@staff0rd/assist",
|
|
9
|
-
version: "0.775.
|
|
9
|
+
version: "0.775.6",
|
|
10
10
|
type: "module",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
bin: {
|
|
@@ -46142,6 +46142,7 @@ function createRelayState(node, { viewers, onSessionsChanged, onHistoryChanged }
|
|
|
46142
46142
|
scrollback: /* @__PURE__ */ new Map(),
|
|
46143
46143
|
pendingCreators: [],
|
|
46144
46144
|
historyWaiters: [],
|
|
46145
|
+
unrecognisedTypes: /* @__PURE__ */ new Set(),
|
|
46145
46146
|
viewers,
|
|
46146
46147
|
onSessionsChanged,
|
|
46147
46148
|
onHistoryChanged
|
|
@@ -46427,6 +46428,17 @@ var LinkHealer = class {
|
|
|
46427
46428
|
};
|
|
46428
46429
|
|
|
46429
46430
|
// src/commands/sessions/daemon/links/acceptPeerHello.ts
|
|
46431
|
+
var helloFields = /* @__PURE__ */ new Set([
|
|
46432
|
+
"type",
|
|
46433
|
+
"version",
|
|
46434
|
+
"protocol",
|
|
46435
|
+
"nodeName",
|
|
46436
|
+
"peer"
|
|
46437
|
+
]);
|
|
46438
|
+
function unrecognisedHelloFields(msg) {
|
|
46439
|
+
const extra = Object.keys(msg).filter((key) => !helloFields.has(key));
|
|
46440
|
+
return extra.length ? `; ignoring unrecognised fields ${extra.join(",")}` : "";
|
|
46441
|
+
}
|
|
46430
46442
|
function acceptPeerHello(linkName, msg) {
|
|
46431
46443
|
if (!isHello(msg)) return { kind: "reject", reason: "malformed hello" };
|
|
46432
46444
|
const peer = { version: msg.version, protocol: msg.protocol };
|
|
@@ -46437,7 +46449,9 @@ function acceptPeerHello(linkName, msg) {
|
|
|
46437
46449
|
peer
|
|
46438
46450
|
};
|
|
46439
46451
|
if (helloCompatible(msg)) {
|
|
46440
|
-
daemonLog(
|
|
46452
|
+
daemonLog(
|
|
46453
|
+
`link ${linkName} ws: hello ok (${msg.version})${unrecognisedHelloFields(msg)}`
|
|
46454
|
+
);
|
|
46441
46455
|
return { kind: "accept", peer };
|
|
46442
46456
|
}
|
|
46443
46457
|
const mode = linkVersionCheck();
|
|
@@ -46452,6 +46466,14 @@ function acceptPeerHello(linkName, msg) {
|
|
|
46452
46466
|
return { kind: "heal", peer };
|
|
46453
46467
|
}
|
|
46454
46468
|
|
|
46469
|
+
// src/commands/sessions/daemon/logUnrecognisedType.ts
|
|
46470
|
+
function logUnrecognisedType(seen, prefix2, type) {
|
|
46471
|
+
const key = String(type);
|
|
46472
|
+
if (seen.has(key)) return;
|
|
46473
|
+
seen.add(key);
|
|
46474
|
+
daemonLog(`${prefix2}ignoring unrecognised message type ${key} (logged once)`);
|
|
46475
|
+
}
|
|
46476
|
+
|
|
46455
46477
|
// src/commands/sessions/daemon/links/relayLinkSessions.ts
|
|
46456
46478
|
function relayLinkSessions(state, msg) {
|
|
46457
46479
|
const snapshot = JSON.stringify(msg.sessions ?? []);
|
|
@@ -46532,8 +46554,16 @@ var relays = {
|
|
|
46532
46554
|
if (typeof msg.line === "string") relayDaemonLog(state.node, msg.line);
|
|
46533
46555
|
}
|
|
46534
46556
|
};
|
|
46557
|
+
var notRelayed = /* @__PURE__ */ new Set(["limits", "nodes"]);
|
|
46535
46558
|
function relayLinkMessage(state, msg) {
|
|
46536
|
-
|
|
46559
|
+
const type = msg.type;
|
|
46560
|
+
if (Object.hasOwn(relays, type)) relays[type](state, msg);
|
|
46561
|
+
else if (!notRelayed.has(type))
|
|
46562
|
+
logUnrecognisedType(
|
|
46563
|
+
state.unrecognisedTypes,
|
|
46564
|
+
`link ${state.node} ws: `,
|
|
46565
|
+
msg.type
|
|
46566
|
+
);
|
|
46537
46567
|
}
|
|
46538
46568
|
|
|
46539
46569
|
// src/commands/sessions/daemon/links/onLinkLine.ts
|
|
@@ -47760,12 +47790,15 @@ var messageHandlers = {
|
|
|
47760
47790
|
};
|
|
47761
47791
|
|
|
47762
47792
|
// src/commands/sessions/daemon/dispatchMessage.ts
|
|
47793
|
+
var unrecognisedTypes = /* @__PURE__ */ new Set();
|
|
47763
47794
|
function dispatchMessage(client, manager, data) {
|
|
47764
47795
|
if (typeof data.traceId === "string")
|
|
47765
47796
|
daemonLog(
|
|
47766
47797
|
`linked ${data.type} received (cwd=${data.cwd ?? "default"}) trace=${data.traceId}`
|
|
47767
47798
|
);
|
|
47768
|
-
messageHandlers[data.type]
|
|
47799
|
+
const handler = Object.hasOwn(messageHandlers, data.type) ? messageHandlers[data.type] : void 0;
|
|
47800
|
+
if (handler) handler(client, manager, data);
|
|
47801
|
+
else logUnrecognisedType(unrecognisedTypes, "", data.type);
|
|
47769
47802
|
}
|
|
47770
47803
|
|
|
47771
47804
|
// src/commands/sessions/daemon/handleConnection.ts
|