@openscout/scout 0.2.75 → 0.2.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/{RepoDiffViewer-CTXJvjIL.js → RepoDiffViewer-DLVleMPW.js} +1 -1
- package/dist/client/assets/{addon-fit-3IrvLm2n.js → addon-fit-BOSszMLK.js} +1 -1
- package/dist/client/assets/{addon-webgl-BgxIDUI-.js → addon-webgl-WE840gr0.js} +1 -1
- package/dist/client/assets/{arc.es-Bh8P_xre.js → arc.es-KGqGKGIy.js} +1 -1
- package/dist/client/assets/{embed-entry-wAEtYUEM.js → embed-entry-BdmREZuc.js} +1 -1
- package/dist/client/assets/{index-BK3mRYyN.js → index-DPFmfHm5.js} +107 -108
- package/dist/client/assets/index-jpYnsyHM.css +1 -0
- package/dist/client/assets/{xterm-CoGJTxj9.js → xterm-6eL7V7pF.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/main.mjs +22 -1
- package/dist/pairing-runtime-controller.mjs +110 -6
- package/dist/runtime/broker-daemon.mjs +21 -0
- package/dist/scout-control-plane-web.mjs +193 -75
- package/dist/scout-web-server.mjs +193 -75
- package/package.json +3 -3
- package/dist/client/assets/index-Dm1ZQS9G.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as We}from"./index-
|
|
1
|
+
import{o as We}from"./index-DPFmfHm5.js";function He(Te,Ie){for(var Le=0;Le<Ie.length;Le++){const ge=Ie[Le];if(typeof ge!="string"&&!Array.isArray(ge)){for(const ae in ge)if(ae!=="default"&&!(ae in Te)){const Re=Object.getOwnPropertyDescriptor(ge,ae);Re&&Object.defineProperty(Te,ae,Re.get?Re:{enumerable:!0,get:()=>ge[ae]})}}}return Object.freeze(Object.defineProperty(Te,Symbol.toStringTag,{value:"Module"}))}var Pe={exports:{}},Ne;function Ke(){return Ne||(Ne=1,(function(Te,Ie){(function(Le,ge){Te.exports=ge()})(globalThis,(()=>(()=>{var Le={2840:function(K,t,_){var i=this&&this.__decorate||function(s,e,l,o){var u,c=arguments.length,a=c<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,l):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(s,e,l,o);else for(var m=s.length-1;m>=0;m--)(u=s[m])&&(a=(c<3?u(a):c>3?u(e,l,a):u(e,l))||a);return c>3&&a&&Object.defineProperty(e,l,a),a},v=this&&this.__param||function(s,e){return function(l,o){e(l,o,s)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;const n=_(7721),f=_(4292),g=_(7150),p=_(7098),d=_(6501),r=_(7093);let h=class extends g.Disposable{constructor(s,e,l,o){super(),this._terminal=s,this._coreBrowserService=l,this._renderService=o,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="";const u=this._coreBrowserService.mainDocument;this._accessibilityContainer=u.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=u.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let c=0;c<this._terminal.rows;c++)this._rowElements[c]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[c]);if(this._topBoundaryFocusListener=c=>this._handleBoundaryFocus(c,0),this._bottomBoundaryFocusListener=c=>this._handleBoundaryFocus(c,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=u.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this._register(new f.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this._register(this._terminal.onResize((c=>this._handleResize(c.rows)))),this._register(this._terminal.onRender((c=>this._refreshRows(c.start,c.end)))),this._register(this._terminal.onScroll((()=>this._refreshRows()))),this._register(this._terminal.onA11yChar((c=>this._handleChar(c)))),this._register(this._terminal.onLineFeed((()=>this._handleChar(`
|
|
2
2
|
`)))),this._register(this._terminal.onA11yTab((c=>this._handleTab(c)))),this._register(this._terminal.onKey((c=>this._handleKey(c.key)))),this._register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this._register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this._register((0,r.addDisposableListener)(u,"selectionchange",(()=>this._handleSelectionChange()))),this._register(this._coreBrowserService.onDprChange((()=>this._refreshRowsDimensions()))),this._refreshRowsDimensions(),this._refreshRows(),this._register((0,g.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(s){for(let e=0;e<s;e++)this._handleChar(" ")}_handleChar(s){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==s&&(this._charsToAnnounce+=s):this._charsToAnnounce+=s,s===`
|
|
3
3
|
`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=n.tooMuchOutput.get())))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(s){this._clearLiveRegion(),new RegExp("\\p{Control}","u").test(s)||this._charsToConsume.push(s)}_refreshRows(s,e){this._liveRegionDebouncer.refresh(s,e,this._terminal.rows)}_renderRows(s,e){const l=this._terminal.buffer,o=l.lines.length.toString();for(let u=s;u<=e;u++){const c=l.lines.get(l.ydisp+u),a=[],m=c?.translateToString(!0,void 0,void 0,a)||"",S=(l.ydisp+u+1).toString(),R=this._rowElements[u];R&&(m.length===0?(R.textContent=" ",this._rowColumns.set(R,[0,1])):(R.textContent=m,this._rowColumns.set(R,a)),R.setAttribute("aria-posinset",S),R.setAttribute("aria-setsize",o),this._alignRowWidth(R))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(s,e){const l=s.target,o=this._rowElements[e===0?1:this._rowElements.length-2];if(l.getAttribute("aria-posinset")===(e===0?"1":`${this._terminal.buffer.lines.length}`)||s.relatedTarget!==o)return;let u,c;if(e===0?(u=l,c=this._rowElements.pop(),this._rowContainer.removeChild(c)):(u=this._rowElements.shift(),c=l,this._rowContainer.removeChild(u)),u.removeEventListener("focus",this._topBoundaryFocusListener),c.removeEventListener("focus",this._bottomBoundaryFocusListener),e===0){const a=this._createAccessibilityTreeNode();this._rowElements.unshift(a),this._rowContainer.insertAdjacentElement("afterbegin",a)}else{const a=this._createAccessibilityTreeNode();this._rowElements.push(a),this._rowContainer.appendChild(a)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(e===0?-1:1),this._rowElements[e===0?1:this._rowElements.length-2].focus(),s.preventDefault(),s.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;const s=this._coreBrowserService.mainDocument.getSelection();if(!s)return;if(s.isCollapsed)return void(this._rowContainer.contains(s.anchorNode)&&this._terminal.clearSelection());if(!s.anchorNode||!s.focusNode)return void console.error("anchorNode and/or focusNode are null");let e={node:s.anchorNode,offset:s.anchorOffset},l={node:s.focusNode,offset:s.focusOffset};if((e.node.compareDocumentPosition(l.node)&Node.DOCUMENT_POSITION_PRECEDING||e.node===l.node&&e.offset>l.offset)&&([e,l]=[l,e]),e.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(e={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(e.node))return;const o=this._rowElements.slice(-1)[0];if(l.node.compareDocumentPosition(o)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(l={node:o,offset:o.textContent?.length??0}),!this._rowContainer.contains(l.node))return;const u=({node:m,offset:S})=>{const R=m instanceof Text?m.parentNode:m;let T=parseInt(R?.getAttribute("aria-posinset"),10)-1;if(isNaN(T))return console.warn("row is invalid. Race condition?"),null;const C=this._rowColumns.get(R);if(!C)return console.warn("columns is null. Race condition?"),null;let y=S<C.length?C[S]:C.slice(-1)[0]+1;return y>=this._terminal.cols&&(++T,y=0),{row:T,column:y}},c=u(e),a=u(l);if(c&&a){if(c.row>a.row||c.row===a.row&&c.column>=a.column)throw new Error("invalid range");this._terminal.select(c.column,c.row,(a.row-c.row)*this._terminal.cols-c.column+a.column)}}_handleResize(s){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);for(;this._rowElements.length>s;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){const s=this._coreBrowserService.mainDocument.createElement("div");return s.setAttribute("role","listitem"),s.tabIndex=-1,this._refreshRowDimensions(s),s}_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 s=0;s<this._terminal.rows;s++)this._refreshRowDimensions(this._rowElements[s]),this._alignRowWidth(this._rowElements[s])}}_refreshRowDimensions(s){s.style.height=`${this._renderService.dimensions.css.cell.height}px`}_alignRowWidth(s){s.style.transform="";const e=s.getBoundingClientRect().width,l=this._rowColumns.get(s)?.slice(-1)?.[0];if(!l)return;const o=l*this._renderService.dimensions.css.cell.width;s.style.transform=`scaleX(${o/e})`}};t.AccessibilityManager=h,t.AccessibilityManager=h=i([v(1,d.IInstantiationService),v(2,p.ICoreBrowserService),v(3,p.IRenderService)],h)},7861:(K,t)=>{function _(f){return f.replace(/\r?\n/g,"\r")}function i(f,g){return g?"\x1B[200~"+f+"\x1B[201~":f}function v(f,g,p,d){f=i(f=_(f),p.decPrivateModes.bracketedPasteMode&&d.rawOptions.ignoreBracketedPasteMode!==!0),p.triggerDataEvent(f,!0),g.value=""}function n(f,g,p){const d=p.getBoundingClientRect(),r=f.clientX-d.left-10,h=f.clientY-d.top-10;g.style.width="20px",g.style.height="20px",g.style.left=`${r}px`,g.style.top=`${h}px`,g.style.zIndex="1000",g.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.prepareTextForTerminal=_,t.bracketTextForPaste=i,t.copyHandler=function(f,g){f.clipboardData&&f.clipboardData.setData("text/plain",g.selectionText),f.preventDefault()},t.handlePasteEvent=function(f,g,p,d){f.stopPropagation(),f.clipboardData&&v(f.clipboardData.getData("text/plain"),g,p,d)},t.paste=v,t.moveTextAreaUnderMouseCursor=n,t.rightClickHandler=function(f,g,p,d,r){n(f,g,p),r&&d.rightClickSelect(f),g.value=d.selectionText,g.select()}},7174:(K,t,_)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;const i=_(7710);t.ColorContrastCache=class{constructor(){this._color=new i.TwoKeyMap,this._css=new i.TwoKeyMap}setCss(v,n,f){this._css.set(v,n,f)}getCss(v,n){return this._css.get(v,n)}setColor(v,n,f){this._color.set(v,n,f)}getColor(v,n){return this._color.get(v,n)}clear(){this._color.clear(),this._css.clear()}}},1718:(K,t,_)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserTerminal=void 0;const i=_(7861),v=_(7721),n=_(3285),f=_(4017),g=_(4196),p=_(9925),d=_(3618),r=_(3955),h=_(4792),s=_(945),e=_(9574),l=_(9820),o=_(9784),u=_(5783),c=_(2079),a=_(7098),m=_(9078),S=_(4103),R=_(5777),T=_(701),C=_(6107),y=_(3534),A=_(706),N=_(8693),I=_(4720),F=_(6501),E=_(2486),w=_(2840),b=_(8906),L=_(802),M=_(7093),P=_(7150);class U extends R.CoreTerminal{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}constructor(x={}){super(x),this._linkifier=this._register(new P.MutableDisposable),this.browser=T,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new P.MutableDisposable),this._onCursorMove=this._register(new L.Emitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new L.Emitter),this.onKey=this._onKey.event,this._onRender=this._register(new L.Emitter),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new L.Emitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new L.Emitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new L.Emitter),this.onBell=this._onBell.event,this._onFocus=this._register(new L.Emitter),this._onBlur=this._register(new L.Emitter),this._onA11yCharEmitter=this._register(new L.Emitter),this._onA11yTabEmitter=this._register(new L.Emitter),this._onWillOpen=this._register(new L.Emitter),this._setup(),this._decorationService=this._instantiationService.createInstance(I.DecorationService),this._instantiationService.setService(F.IDecorationService,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(l.LinkProviderService),this._instantiationService.setService(a.ILinkProviderService,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(n.OscLinkProvider)),this._register(this._inputHandler.onRequestBell((()=>this._onBell.fire()))),this._register(this._inputHandler.onRequestRefreshRows((k=>this.refresh(k?.start??0,k?.end??this.rows-1)))),this._register(this._inputHandler.onRequestSendFocus((()=>this._reportFocus()))),this._register(this._inputHandler.onRequestReset((()=>this.reset()))),this._register(this._inputHandler.onRequestWindowsOptionsReport((k=>this._reportWindowsOptions(k)))),this._register(this._inputHandler.onColor((k=>this._handleColorEvent(k)))),this._register(L.Event.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(L.Event.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(L.Event.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(L.Event.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize((k=>this._afterResize(k.cols,k.rows)))),this._register((0,P.toDisposable)((()=>{this._customKeyEventHandler=void 0,this.element?.parentNode?.removeChild(this.element)})))}_handleColorEvent(x){if(this._themeService)for(const k of x){let $,j="";switch(k.index){case 256:$="foreground",j="10";break;case 257:$="background",j="11";break;case 258:$="cursor",j="12";break;default:$="ansi",j="4;"+k.index}switch(k.type){case 0:const V=S.color.toColorRGB($==="ansi"?this._themeService.colors.ansi[k.index]:this._themeService.colors[$]);this.coreService.triggerDataEvent(`${y.C0.ESC}]${j};${(0,N.toRgbString)(V)}${y.C1_ESCAPED.ST}`);break;case 1:if($==="ansi")this._themeService.modifyColors((q=>q.ansi[k.index]=S.channels.toColor(...k.color)));else{const q=$;this._themeService.modifyColors((J=>J[q]=S.channels.toColor(...k.color)))}break;case 2:this._themeService.restoreColor(k.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(x){x?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(w.AccessibilityManager,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(x){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(y.C0.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(y.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;const x=this.buffer.ybase+this.buffer.y,k=this.buffer.lines.get(x);if(!k)return;const $=Math.min(this.buffer.x,this.cols-1),j=this._renderService.dimensions.css.cell.height,V=k.getWidth($),q=this._renderService.dimensions.css.cell.width*V,J=this.buffer.y*this._renderService.dimensions.css.cell.height,se=$*this._renderService.dimensions.css.cell.width;this.textarea.style.left=se+"px",this.textarea.style.top=J+"px",this.textarea.style.width=q+"px",this.textarea.style.height=j+"px",this.textarea.style.lineHeight=j+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this._register((0,M.addDisposableListener)(this.element,"copy",(k=>{this.hasSelection()&&(0,i.copyHandler)(k,this._selectionService)})));const x=k=>(0,i.handlePasteEvent)(k,this.textarea,this.coreService,this.optionsService);this._register((0,M.addDisposableListener)(this.textarea,"paste",x)),this._register((0,M.addDisposableListener)(this.element,"paste",x)),T.isFirefox?this._register((0,M.addDisposableListener)(this.element,"mousedown",(k=>{k.button===2&&(0,i.rightClickHandler)(k,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))):this._register((0,M.addDisposableListener)(this.element,"contextmenu",(k=>{(0,i.rightClickHandler)(k,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))),T.isLinux&&this._register((0,M.addDisposableListener)(this.element,"auxclick",(k=>{k.button===1&&(0,i.moveTextAreaUnderMouseCursor)(k,this.textarea,this.screenElement)})))}_bindKeys(){this._register((0,M.addDisposableListener)(this.textarea,"keyup",(x=>this._keyUp(x)),!0)),this._register((0,M.addDisposableListener)(this.textarea,"keydown",(x=>this._keyDown(x)),!0)),this._register((0,M.addDisposableListener)(this.textarea,"keypress",(x=>this._keyPress(x)),!0)),this._register((0,M.addDisposableListener)(this.textarea,"compositionstart",(()=>this._compositionHelper.compositionstart()))),this._register((0,M.addDisposableListener)(this.textarea,"compositionupdate",(x=>this._compositionHelper.compositionupdate(x)))),this._register((0,M.addDisposableListener)(this.textarea,"compositionend",(()=>this._compositionHelper.compositionend()))),this._register((0,M.addDisposableListener)(this.textarea,"input",(x=>this._inputEvent(x)),!0)),this._register(this.onRender((()=>this._compositionHelper.updateCompositionElements())))}open(x){if(!x)throw new Error("Terminal requires a parent element.");if(x.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this.element?.ownerDocument.defaultView&&this._coreBrowserService)return void(this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView));this._document=x.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"),x.appendChild(this.element);const k=this._document.createDocumentFragment();this._viewportElement=this._document.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),k.appendChild(this._viewportElement),this.screenElement=this._document.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._register((0,M.addDisposableListener)(this.screenElement,"mousemove",(V=>this.updateCursorStyle(V)))),this._helperContainer=this._document.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),k.appendChild(this.screenElement);const $=this.textarea=this._document.createElement("textarea");this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",v.promptLabel.get()),T.isChromeOS||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",(()=>$.readOnly=this.optionsService.rawOptions.disableStdin))),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(e.CoreBrowserService,this.textarea,x.ownerDocument.defaultView??window,this._document??typeof window<"u"?window.document:null)),this._instantiationService.setService(a.ICoreBrowserService,this._coreBrowserService),this._register((0,M.addDisposableListener)(this.textarea,"focus",(V=>this._handleTextAreaFocus(V)))),this._register((0,M.addDisposableListener)(this.textarea,"blur",(()=>this._handleTextAreaBlur()))),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(h.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(a.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(m.ThemeService),this._instantiationService.setService(a.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(s.CharacterJoinerService),this._instantiationService.setService(a.ICharacterJoinerService,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(u.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(a.IRenderService,this._renderService),this._register(this._renderService.onRenderedViewportChange((V=>this._onRender.fire(V)))),this.onResize((V=>this._renderService.resize(V.cols,V.rows))),this._compositionView=this._document.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(d.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(o.MouseService),this._instantiationService.setService(a.IMouseService,this._mouseService);const j=this._linkifier.value=this._register(this._instantiationService.createInstance(b.Linkifier,this.screenElement));this.element.appendChild(k);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(f.Viewport,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines((V=>{super.scrollLines(V,!1),this.refresh(0,this.rows-1)}))),this._selectionService=this._register(this._instantiationService.createInstance(c.SelectionService,this.element,this.screenElement,j)),this._instantiationService.setService(a.ISelectionService,this._selectionService),this._register(this._selectionService.onRequestScrollLines((V=>this.scrollLines(V.amount,V.suppressScrollEvent)))),this._register(this._selectionService.onSelectionChange((()=>this._onSelectionChange.fire()))),this._register(this._selectionService.onRequestRedraw((V=>this._renderService.handleSelectionChanged(V.start,V.end,V.columnSelectMode)))),this._register(this._selectionService.onLinuxMouseSelection((V=>{this.textarea.value=V,this.textarea.focus(),this.textarea.select()}))),this._register(L.Event.any(this._onScroll.event,this._inputHandler.onScroll)((()=>{this._selectionService.refresh(),this._viewport?.queueSync()}))),this._register(this._instantiationService.createInstance(g.BufferDecorationRenderer,this.screenElement)),this._register((0,M.addDisposableListener)(this.element,"mousedown",(V=>this._selectionService.handleMouseDown(V)))),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(w.AccessibilityManager,this)),this._register(this.optionsService.onSpecificOptionChange("screenReaderMode",(V=>this._handleScreenReaderModeOptionChange(V)))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(p.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRuler",(V=>{!this._overviewRulerRenderer&&V&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(p.OverviewRulerRenderer,this._viewportElement,this.screenElement)))})),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(r.DomRenderer,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){const x=this,k=this.element;function $(q){const J=x._mouseService.getMouseReportCoords(q,x.screenElement);if(!J)return!1;let se,te;switch(q.overrideType||q.type){case"mousemove":te=32,q.buttons===void 0?(se=3,q.button!==void 0&&(se=q.button<3?q.button:3)):se=1&q.buttons?0:4&q.buttons?1:2&q.buttons?2:3;break;case"mouseup":te=0,se=q.button<3?q.button:3;break;case"mousedown":te=1,se=q.button<3?q.button:3;break;case"wheel":if(x._customWheelEventHandler&&x._customWheelEventHandler(q)===!1)return!1;const re=q.deltaY;if(re===0||x.coreMouseService.consumeWheelEvent(q,x._renderService?.dimensions?.device?.cell?.height,x._coreBrowserService?.dpr)===0)return!1;te=re<0?0:1,se=4;break;default:return!1}return!(te===void 0||se===void 0||se>4)&&x.coreMouseService.triggerMouseEvent({col:J.col,row:J.row,x:J.x,y:J.y,button:se,action:te,ctrl:q.ctrlKey,alt:q.altKey,shift:q.shiftKey})}const j={mouseup:null,wheel:null,mousedrag:null,mousemove:null},V={mouseup:q=>($(q),q.buttons||(this._document.removeEventListener("mouseup",j.mouseup),j.mousedrag&&this._document.removeEventListener("mousemove",j.mousedrag)),this.cancel(q)),wheel:q=>($(q),this.cancel(q,!0)),mousedrag:q=>{q.buttons&&$(q)},mousemove:q=>{q.buttons||$(q)}};this._register(this.coreMouseService.onProtocolChange((q=>{q?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(q)),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()),8&q?j.mousemove||(k.addEventListener("mousemove",V.mousemove),j.mousemove=V.mousemove):(k.removeEventListener("mousemove",j.mousemove),j.mousemove=null),16&q?j.wheel||(k.addEventListener("wheel",V.wheel,{passive:!1}),j.wheel=V.wheel):(k.removeEventListener("wheel",j.wheel),j.wheel=null),2&q?j.mouseup||(j.mouseup=V.mouseup):(this._document.removeEventListener("mouseup",j.mouseup),j.mouseup=null),4&q?j.mousedrag||(j.mousedrag=V.mousedrag):(this._document.removeEventListener("mousemove",j.mousedrag),j.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register((0,M.addDisposableListener)(k,"mousedown",(q=>{if(q.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(q))return $(q),j.mouseup&&this._document.addEventListener("mouseup",j.mouseup),j.mousedrag&&this._document.addEventListener("mousemove",j.mousedrag),this.cancel(q)}))),this._register((0,M.addDisposableListener)(k,"wheel",(q=>{if(!j.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(q)===!1)return!1;if(!this.buffer.hasScrollback){if(q.deltaY===0)return!1;if(x.coreMouseService.consumeWheelEvent(q,x._renderService?.dimensions?.device?.cell?.height,x._coreBrowserService?.dpr)===0)return this.cancel(q,!0);const J=y.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(q.deltaY<0?"A":"B");return this.coreService.triggerDataEvent(J,!0),this.cancel(q,!0)}}}),{passive:!1}))}refresh(x,k){this._renderService?.refreshRows(x,k)}updateCursorStyle(x){this._selectionService?.shouldColumnSelect(x)?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(x,k){this._viewport?this._viewport.scrollLines(x):super.scrollLines(x,k),this.refresh(0,this.rows-1)}scrollPages(x){this.scrollLines(x*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(x){x&&this._viewport?this._viewport.scrollToLine(this.buffer.ybase,!0):this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(x){const k=x-this._bufferService.buffer.ydisp;k!==0&&this.scrollLines(k)}paste(x){(0,i.paste)(x,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(x){this._customKeyEventHandler=x}attachCustomWheelEventHandler(x){this._customWheelEventHandler=x}registerLinkProvider(x){return this._linkProviderService.registerLinkProvider(x)}registerCharacterJoiner(x){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");const k=this._characterJoinerService.register(x);return this.refresh(0,this.rows-1),k}deregisterCharacterJoiner(x){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(x)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(x){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+x)}registerDecoration(x){return this._decorationService.registerDecoration(x)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(x,k,$){this._selectionService.setSelection(x,k,$)}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(x,k){this._selectionService?.selectLines(x,k)}_keyDown(x){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(x)===!1)return!1;const k=this.browser.isMac&&this.options.macOptionIsMeta&&x.altKey;if(!k&&!this._compositionHelper.keydown(x))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(!0),!1;k||x.key!=="Dead"&&x.key!=="AltGraph"||(this._unprocessedDeadKey=!0);const $=(0,A.evaluateKeyboardEvent)(x,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(x),$.type===3||$.type===2){const j=this.rows-1;return this.scrollLines($.type===2?-j:j),this.cancel(x,!0)}return $.type===1&&this.selectAll(),!!this._isThirdLevelShift(this.browser,x)||($.cancel&&this.cancel(x,!0),!$.key||!!(x.key&&!x.ctrlKey&&!x.altKey&&!x.metaKey&&x.key.length===1&&x.key.charCodeAt(0)>=65&&x.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):($.key!==y.C0.ETX&&$.key!==y.C0.CR||(this.textarea.value=""),this._onKey.fire({key:$.key,domEvent:x}),this._showCursor(),this.coreService.triggerDataEvent($.key,!0),!this.optionsService.rawOptions.screenReaderMode||x.altKey||x.ctrlKey?this.cancel(x,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(x,k){const $=x.isMac&&!this.options.macOptionIsMeta&&k.altKey&&!k.ctrlKey&&!k.metaKey||x.isWindows&&k.altKey&&k.ctrlKey&&!k.metaKey||x.isWindows&&k.getModifierState("AltGraph");return k.type==="keypress"?$:$&&(!k.keyCode||k.keyCode>47)}_keyUp(x){this._keyDownSeen=!1,this._customKeyEventHandler&&this._customKeyEventHandler(x)===!1||((function(k){return k.keyCode===16||k.keyCode===17||k.keyCode===18})(x)||this.focus(),this.updateCursorStyle(x),this._keyPressHandled=!1)}_keyPress(x){let k;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(x)===!1)return!1;if(this.cancel(x),x.charCode)k=x.charCode;else if(x.which===null||x.which===void 0)k=x.keyCode;else{if(x.which===0||x.charCode===0)return!1;k=x.which}return!(!k||(x.altKey||x.ctrlKey||x.metaKey)&&!this._isThirdLevelShift(this.browser,x)||(k=String.fromCharCode(k),this._onKey.fire({key:k,domEvent:x}),this._showCursor(),this.coreService.triggerDataEvent(k,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(x){if(x.data&&x.inputType==="insertText"&&(!x.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;const k=x.data;return this.coreService.triggerDataEvent(k,!0),this.cancel(x),!0}return!1}resize(x,k){x!==this.cols||k!==this.rows?super.resize(x,k):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(x,k){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 x=1;x<this.rows;x++)this.buffer.lines.push(this.buffer.getBlankLine(C.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp}),this.refresh(0,this.rows-1)}}reset(){this.options.rows=this.rows,this.options.cols=this.cols;const x=this._customKeyEventHandler;this._setup(),super.reset(),this._selectionService?.reset(),this._decorationService.reset(),this._customKeyEventHandler=x,this.refresh(0,this.rows-1)}clearTextureAtlas(){this._renderService?.clearTextureAtlas()}_reportFocus(){this.element?.classList.contains("focus")?this.coreService.triggerDataEvent(y.C0.ESC+"[I"):this.coreService.triggerDataEvent(y.C0.ESC+"[O")}_reportWindowsOptions(x){if(this._renderService)switch(x){case E.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:const k=this._renderService.dimensions.css.canvas.width.toFixed(0),$=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${y.C0.ESC}[4;${$};${k}t`);break;case E.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:const j=this._renderService.dimensions.css.cell.width.toFixed(0),V=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${y.C0.ESC}[6;${V};${j}t`)}}cancel(x,k){if(this.options.cancelEvents||k)return x.preventDefault(),x.stopPropagation(),!1}}t.CoreBrowserTerminal=U},8906:function(K,t,_){var i=this&&this.__decorate||function(h,s,e,l){var o,u=arguments.length,c=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,e):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(h,s,e,l);else for(var a=h.length-1;a>=0;a--)(o=h[a])&&(c=(u<3?o(c):u>3?o(s,e,c):o(s,e))||c);return u>3&&c&&Object.defineProperty(s,e,c),c},v=this&&this.__param||function(h,s){return function(e,l){s(e,l,h)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier=void 0;const n=_(7150),f=_(6501),g=_(7098),p=_(802),d=_(7093);let r=class extends n.Disposable{get currentLink(){return this._currentLink}constructor(h,s,e,l,o){super(),this._element=h,this._mouseService=s,this._renderService=e,this._bufferService=l,this._linkProviderService=o,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this._register(new p.Emitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this._register(new p.Emitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this._register((0,n.toDisposable)((()=>{(0,n.dispose)(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((0,d.addDisposableListener)(this._element,"mouseleave",(()=>{this._isMouseOut=!0,this._clearCurrentLink()}))),this._register((0,d.addDisposableListener)(this._element,"mousemove",this._handleMouseMove.bind(this))),this._register((0,d.addDisposableListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this._register((0,d.addDisposableListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_handleMouseMove(h){this._lastMouseEvent=h;const s=this._positionFromMouseEvent(h,this._element,this._mouseService);if(!s)return;this._isMouseOut=!1;const e=h.composedPath();for(let l=0;l<e.length;l++){const o=e[l];if(o.classList.contains("xterm"))break;if(o.classList.contains("xterm-hover"))return}this._lastBufferCell&&s.x===this._lastBufferCell.x&&s.y===this._lastBufferCell.y||(this._handleHover(s),this._lastBufferCell=s)}_handleHover(h){if(this._activeLine!==h.y||this._wasResized)return this._clearCurrentLink(),this._askForLink(h,!1),void(this._wasResized=!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,h)||(this._clearCurrentLink(),this._askForLink(h,!0))}_askForLink(h,s){this._activeProviderReplies&&s||(this._activeProviderReplies?.forEach((l=>{l?.forEach((o=>{o.link.dispose&&o.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=h.y);let e=!1;for(const[l,o]of this._linkProviderService.linkProviders.entries())s?this._activeProviderReplies?.get(l)&&(e=this._checkLinkProviderResult(l,h,e)):o.provideLinks(h.y,(u=>{if(this._isMouseOut)return;const c=u?.map((a=>({link:a})));this._activeProviderReplies?.set(l,c),e=this._checkLinkProviderResult(l,h,e),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(h.y,this._activeProviderReplies)}))}_removeIntersectingLinks(h,s){const e=new Set;for(let l=0;l<s.size;l++){const o=s.get(l);if(o)for(let u=0;u<o.length;u++){const c=o[u],a=c.link.range.start.y<h?0:c.link.range.start.x,m=c.link.range.end.y>h?this._bufferService.cols:c.link.range.end.x;for(let S=a;S<=m;S++){if(e.has(S)){o.splice(u--,1);break}e.add(S)}}}}_checkLinkProviderResult(h,s,e){if(!this._activeProviderReplies)return e;const l=this._activeProviderReplies.get(h);let o=!1;for(let u=0;u<h;u++)this._activeProviderReplies.has(u)&&!this._activeProviderReplies.get(u)||(o=!0);if(!o&&l){const u=l.find((c=>this._linkAtPosition(c.link,s)));u&&(e=!0,this._handleNewLink(u))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!e)for(let u=0;u<this._activeProviderReplies.size;u++){const c=this._activeProviderReplies.get(u)?.find((a=>this._linkAtPosition(a.link,s)));if(c){e=!0,this._handleNewLink(c);break}}return e}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(h){if(!this._currentLink)return;const s=this._positionFromMouseEvent(h,this._element,this._mouseService);var e,l;s&&this._mouseDownLink&&(e=this._mouseDownLink.link,l=this._currentLink.link,e.text===l.text&&e.range.start.x===l.range.start.x&&e.range.start.y===l.range.start.y&&e.range.end.x===l.range.end.x&&e.range.end.y===l.range.end.y)&&this._linkAtPosition(this._currentLink.link,s)&&this._currentLink.link.activate(h,this._currentLink.link.text)}_clearCurrentLink(h,s){this._currentLink&&this._lastMouseEvent&&(!h||!s||this._currentLink.link.range.start.y>=h&&this._currentLink.link.range.end.y<=s)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,n.dispose)(this._linkCacheDisposables),this._linkCacheDisposables.length=0)}_handleNewLink(h){if(!this._lastMouseEvent)return;const s=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);s&&this._linkAtPosition(h.link,s)&&(this._currentLink=h,this._currentLink.state={decorations:{underline:h.link.decorations===void 0||h.link.decorations.underline,pointerCursor:h.link.decorations===void 0||h.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,h.link,this._lastMouseEvent),h.link.decorations={},Object.defineProperties(h.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:e=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",e))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:e=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==e&&(this._currentLink.state.decorations.underline=e,this._currentLink.state.isHovered&&this._fireUnderlineEvent(h.link,e))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e=>{if(!this._currentLink)return;const l=e.start===0?0:e.start+1+this._bufferService.buffer.ydisp,o=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=l&&this._currentLink.link.range.end.y<=o&&(this._clearCurrentLink(l,o),this._lastMouseEvent)){const u=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);u&&this._askForLink(u,!1)}}))))}_linkHover(h,s,e){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(s,!0),this._currentLink.state.decorations.pointerCursor&&h.classList.add("xterm-cursor-pointer")),s.hover&&s.hover(e,s.text)}_fireUnderlineEvent(h,s){const e=h.range,l=this._bufferService.buffer.ydisp,o=this._createLinkUnderlineEvent(e.start.x-1,e.start.y-l-1,e.end.x,e.end.y-l-1,void 0);(s?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(o)}_linkLeave(h,s,e){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(s,!1),this._currentLink.state.decorations.pointerCursor&&h.classList.remove("xterm-cursor-pointer")),s.leave&&s.leave(e,s.text)}_linkAtPosition(h,s){const e=h.range.start.y*this._bufferService.cols+h.range.start.x,l=h.range.end.y*this._bufferService.cols+h.range.end.x,o=s.y*this._bufferService.cols+s.x;return e<=o&&o<=l}_positionFromMouseEvent(h,s,e){const l=e.getCoords(h,s,this._bufferService.cols,this._bufferService.rows);if(l)return{x:l[0],y:l[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(h,s,e,l,o){return{x1:h,y1:s,x2:e,y2:l,cols:this._bufferService.cols,fg:o}}};t.Linkifier=r,t.Linkifier=r=i([v(1,g.IMouseService),v(2,g.IRenderService),v(3,f.IBufferService),v(4,g.ILinkProviderService)],r)},7721:(K,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0;let _="Terminal input";const i={get:()=>_,set:f=>_=f};t.promptLabel=i;let v="Too much output to announce, navigate to rows manually to read";const n={get:()=>v,set:f=>v=f};t.tooMuchOutput=n},3285:function(K,t,_){var i=this&&this.__decorate||function(d,r,h,s){var e,l=arguments.length,o=l<3?r:s===null?s=Object.getOwnPropertyDescriptor(r,h):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(d,r,h,s);else for(var u=d.length-1;u>=0;u--)(e=d[u])&&(o=(l<3?e(o):l>3?e(r,h,o):e(r,h))||o);return l>3&&o&&Object.defineProperty(r,h,o),o},v=this&&this.__param||function(d,r){return function(h,s){r(h,s,d)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkProvider=void 0;const n=_(3055),f=_(6501);let g=class{constructor(d,r,h){this._bufferService=d,this._optionsService=r,this._oscLinkService=h}provideLinks(d,r){const h=this._bufferService.buffer.lines.get(d-1);if(!h)return void r(void 0);const s=[],e=this._optionsService.rawOptions.linkHandler,l=new n.CellData,o=h.getTrimmedLength();let u=-1,c=-1,a=!1;for(let m=0;m<o;m++)if(c!==-1||h.hasContent(m)){if(h.loadCell(m,l),l.hasExtendedAttrs()&&l.extended.urlId){if(c===-1){c=m,u=l.extended.urlId;continue}a=l.extended.urlId!==u}else c!==-1&&(a=!0);if(a||c!==-1&&m===o-1){const S=this._oscLinkService.getLinkData(u)?.uri;if(S){const R={start:{x:c+1,y:d},end:{x:m+(a||m!==o-1?0:1),y:d}};let T=!1;if(!e?.allowNonHttpProtocols)try{const C=new URL(S);["http:","https:"].includes(C.protocol)||(T=!0)}catch{T=!0}T||s.push({text:S,range:R,activate:(C,y)=>e?e.activate(C,y,R):p(0,y),hover:(C,y)=>e?.hover?.(C,y,R),leave:(C,y)=>e?.leave?.(C,y,R)})}a=!1,l.hasExtendedAttrs()&&l.extended.urlId?(c=m,u=l.extended.urlId):(c=-1,u=-1)}}r(s)}};function p(d,r){if(confirm(`Do you want to navigate to ${r}?
|
|
4
4
|
|
package/dist/client/index.html
CHANGED
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
</script>
|
|
50
|
-
<script type="module" crossorigin src="/assets/index-
|
|
51
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
50
|
+
<script type="module" crossorigin src="/assets/index-DPFmfHm5.js"></script>
|
|
51
|
+
<link rel="stylesheet" crossorigin href="/assets/index-jpYnsyHM.css">
|
|
52
52
|
</head>
|
|
53
53
|
<body>
|
|
54
54
|
<div id="root"></div>
|
package/dist/main.mjs
CHANGED
|
@@ -22930,6 +22930,9 @@ function isLocalAgentRecordOnline(agentName, record2) {
|
|
|
22930
22930
|
}
|
|
22931
22931
|
return isLocalAgentSessionAlive(normalizedRecord.tmuxSession);
|
|
22932
22932
|
}
|
|
22933
|
+
function localAgentOnlineFlightKey(agentName, record2) {
|
|
22934
|
+
return [agentName, record2.transport, record2.tmuxSession].join("\x00");
|
|
22935
|
+
}
|
|
22933
22936
|
function isLocalAgentSessionAlive(sessionName) {
|
|
22934
22937
|
return readTmuxSessionExistsSnapshot(sessionName);
|
|
22935
22938
|
}
|
|
@@ -23141,6 +23144,23 @@ function areHarnessBinariesAvailable(record2) {
|
|
|
23141
23144
|
return true;
|
|
23142
23145
|
}
|
|
23143
23146
|
async function ensureLocalAgentOnline(agentName, record2) {
|
|
23147
|
+
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
23148
|
+
const flightKey = localAgentOnlineFlightKey(agentName, normalizedRecord);
|
|
23149
|
+
const existingFlight = localAgentOnlineFlights.get(flightKey);
|
|
23150
|
+
if (existingFlight) {
|
|
23151
|
+
return await existingFlight;
|
|
23152
|
+
}
|
|
23153
|
+
const flight = ensureLocalAgentOnlineOnce(agentName, normalizedRecord);
|
|
23154
|
+
localAgentOnlineFlights.set(flightKey, flight);
|
|
23155
|
+
try {
|
|
23156
|
+
return await flight;
|
|
23157
|
+
} finally {
|
|
23158
|
+
if (localAgentOnlineFlights.get(flightKey) === flight) {
|
|
23159
|
+
localAgentOnlineFlights.delete(flightKey);
|
|
23160
|
+
}
|
|
23161
|
+
}
|
|
23162
|
+
}
|
|
23163
|
+
async function ensureLocalAgentOnlineOnce(agentName, record2) {
|
|
23144
23164
|
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
23145
23165
|
if (isLocalAgentRecordOnline(agentName, normalizedRecord)) {
|
|
23146
23166
|
return normalizedRecord;
|
|
@@ -24038,7 +24058,7 @@ async function ensureLocalAgentBindingOnline(agentId, nodeId, options = {}) {
|
|
|
24038
24058
|
const onlineRecord = await ensureLocalAgentOnline(agentId, recordForHarness(localAgentRecordFromRelayAgentOverride(agentId, override), options.harness));
|
|
24039
24059
|
return buildLocalAgentBinding(agentId, onlineRecord, isLocalAgentRecordOnline(agentId, onlineRecord), nodeId, "relay-agent-registry");
|
|
24040
24060
|
}
|
|
24041
|
-
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", DEFAULT_ONE_TIME_LOCAL_AGENT_CARD_TTL_MS, SUPPORTED_LOCAL_AGENT_HARNESSES, SUPPORTED_SCOUT_HARNESSES, DEFAULT_CLAUDE_SCOUT_ALLOWED_TOOLS, TMUX_DEFAULT_COLUMNS, TMUX_DEFAULT_ROWS, TMUX_READY_TIMEOUT_MS = 20000, TMUX_READY_POLL_MS = 250, TMUX_READY_TAIL_LINES = 80;
|
|
24061
|
+
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", DEFAULT_ONE_TIME_LOCAL_AGENT_CARD_TTL_MS, SUPPORTED_LOCAL_AGENT_HARNESSES, SUPPORTED_SCOUT_HARNESSES, DEFAULT_CLAUDE_SCOUT_ALLOWED_TOOLS, localAgentOnlineFlights, TMUX_DEFAULT_COLUMNS, TMUX_DEFAULT_ROWS, TMUX_READY_TIMEOUT_MS = 20000, TMUX_READY_POLL_MS = 250, TMUX_READY_TAIL_LINES = 80;
|
|
24042
24062
|
var init_local_agents = __esm(() => {
|
|
24043
24063
|
init_codex_executable();
|
|
24044
24064
|
init_src();
|
|
@@ -24085,6 +24105,7 @@ var init_local_agents = __esm(() => {
|
|
|
24085
24105
|
"mcp__scout__work_update",
|
|
24086
24106
|
"Bash(scout:*)"
|
|
24087
24107
|
];
|
|
24108
|
+
localAgentOnlineFlights = new Map;
|
|
24088
24109
|
TMUX_DEFAULT_COLUMNS = parsePositiveInteger2(process.env.OPENSCOUT_LOCAL_AGENT_TMUX_COLUMNS, 160);
|
|
24089
24110
|
TMUX_DEFAULT_ROWS = parsePositiveInteger2(process.env.OPENSCOUT_LOCAL_AGENT_TMUX_ROWS, 48);
|
|
24090
24111
|
});
|
|
@@ -22461,6 +22461,9 @@ function isLocalAgentRecordOnline(agentName, record2) {
|
|
|
22461
22461
|
}
|
|
22462
22462
|
return isLocalAgentSessionAlive(normalizedRecord.tmuxSession);
|
|
22463
22463
|
}
|
|
22464
|
+
function localAgentOnlineFlightKey(agentName, record2) {
|
|
22465
|
+
return [agentName, record2.transport, record2.tmuxSession].join("\x00");
|
|
22466
|
+
}
|
|
22464
22467
|
function isLocalAgentSessionAlive(sessionName) {
|
|
22465
22468
|
return readTmuxSessionExistsSnapshot(sessionName);
|
|
22466
22469
|
}
|
|
@@ -22672,6 +22675,23 @@ function areHarnessBinariesAvailable(record2) {
|
|
|
22672
22675
|
return true;
|
|
22673
22676
|
}
|
|
22674
22677
|
async function ensureLocalAgentOnline(agentName, record2) {
|
|
22678
|
+
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
22679
|
+
const flightKey = localAgentOnlineFlightKey(agentName, normalizedRecord);
|
|
22680
|
+
const existingFlight = localAgentOnlineFlights.get(flightKey);
|
|
22681
|
+
if (existingFlight) {
|
|
22682
|
+
return await existingFlight;
|
|
22683
|
+
}
|
|
22684
|
+
const flight = ensureLocalAgentOnlineOnce(agentName, normalizedRecord);
|
|
22685
|
+
localAgentOnlineFlights.set(flightKey, flight);
|
|
22686
|
+
try {
|
|
22687
|
+
return await flight;
|
|
22688
|
+
} finally {
|
|
22689
|
+
if (localAgentOnlineFlights.get(flightKey) === flight) {
|
|
22690
|
+
localAgentOnlineFlights.delete(flightKey);
|
|
22691
|
+
}
|
|
22692
|
+
}
|
|
22693
|
+
}
|
|
22694
|
+
async function ensureLocalAgentOnlineOnce(agentName, record2) {
|
|
22675
22695
|
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
22676
22696
|
if (isLocalAgentRecordOnline(agentName, normalizedRecord)) {
|
|
22677
22697
|
return normalizedRecord;
|
|
@@ -23444,7 +23464,7 @@ async function ensureLocalAgentBindingOnline(agentId, nodeId, options = {}) {
|
|
|
23444
23464
|
const onlineRecord = await ensureLocalAgentOnline(agentId, recordForHarness(localAgentRecordFromRelayAgentOverride(agentId, override), options.harness));
|
|
23445
23465
|
return buildLocalAgentBinding(agentId, onlineRecord, isLocalAgentRecordOnline(agentId, onlineRecord), nodeId, "relay-agent-registry");
|
|
23446
23466
|
}
|
|
23447
|
-
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", DEFAULT_ONE_TIME_LOCAL_AGENT_CARD_TTL_MS, SUPPORTED_LOCAL_AGENT_HARNESSES, SUPPORTED_SCOUT_HARNESSES, DEFAULT_CLAUDE_SCOUT_ALLOWED_TOOLS, TMUX_DEFAULT_COLUMNS, TMUX_DEFAULT_ROWS, TMUX_READY_TIMEOUT_MS = 20000, TMUX_READY_POLL_MS = 250, TMUX_READY_TAIL_LINES = 80;
|
|
23467
|
+
var MODULE_DIRECTORY, OPENSCOUT_REPO_ROOT, DEFAULT_LOCAL_AGENT_CAPABILITIES, DEFAULT_LOCAL_AGENT_HARNESS = "claude", DEFAULT_ONE_TIME_LOCAL_AGENT_CARD_TTL_MS, SUPPORTED_LOCAL_AGENT_HARNESSES, SUPPORTED_SCOUT_HARNESSES, DEFAULT_CLAUDE_SCOUT_ALLOWED_TOOLS, localAgentOnlineFlights, TMUX_DEFAULT_COLUMNS, TMUX_DEFAULT_ROWS, TMUX_READY_TIMEOUT_MS = 20000, TMUX_READY_POLL_MS = 250, TMUX_READY_TAIL_LINES = 80;
|
|
23448
23468
|
var init_local_agents = __esm(() => {
|
|
23449
23469
|
init_codex_executable();
|
|
23450
23470
|
init_src();
|
|
@@ -23491,6 +23511,7 @@ var init_local_agents = __esm(() => {
|
|
|
23491
23511
|
"mcp__scout__work_update",
|
|
23492
23512
|
"Bash(scout:*)"
|
|
23493
23513
|
];
|
|
23514
|
+
localAgentOnlineFlights = new Map;
|
|
23494
23515
|
TMUX_DEFAULT_COLUMNS = parsePositiveInteger2(process.env.OPENSCOUT_LOCAL_AGENT_TMUX_COLUMNS, 160);
|
|
23495
23516
|
TMUX_DEFAULT_ROWS = parsePositiveInteger2(process.env.OPENSCOUT_LOCAL_AGENT_TMUX_ROWS, 48);
|
|
23496
23517
|
});
|
|
@@ -33465,6 +33486,11 @@ init_support_paths();
|
|
|
33465
33486
|
|
|
33466
33487
|
// ../runtime/src/conversations/legacy-ids.ts
|
|
33467
33488
|
init_user_config();
|
|
33489
|
+
function configuredOperatorActorIds() {
|
|
33490
|
+
const operatorName = resolveOperatorName().trim() || "operator";
|
|
33491
|
+
const operatorHandle = resolveOperatorHandle().trim() || operatorName;
|
|
33492
|
+
return Array.from(new Set(["operator", operatorName, operatorHandle]));
|
|
33493
|
+
}
|
|
33468
33494
|
|
|
33469
33495
|
// ../web/server/core/broker/service.ts
|
|
33470
33496
|
init_user_config();
|
|
@@ -33486,6 +33512,43 @@ function displayNameForBrokerActor(snapshot, actorId) {
|
|
|
33486
33512
|
function firstEndpointForActor(snapshot, actorId) {
|
|
33487
33513
|
return Object.values(snapshot.endpoints).filter((endpoint) => endpoint.agentId === actorId).sort((lhs, rhs) => lhs.id.localeCompare(rhs.id))[0];
|
|
33488
33514
|
}
|
|
33515
|
+
function endpointRank(endpoint) {
|
|
33516
|
+
switch (endpoint.state) {
|
|
33517
|
+
case "active":
|
|
33518
|
+
return 5;
|
|
33519
|
+
case "working":
|
|
33520
|
+
return 5;
|
|
33521
|
+
case "waiting":
|
|
33522
|
+
return 4;
|
|
33523
|
+
case "idle":
|
|
33524
|
+
return 3;
|
|
33525
|
+
case "registered":
|
|
33526
|
+
return 2;
|
|
33527
|
+
default:
|
|
33528
|
+
return 0;
|
|
33529
|
+
}
|
|
33530
|
+
}
|
|
33531
|
+
function endpointTimestamp(endpoint) {
|
|
33532
|
+
return Math.max(epochMs(endpoint.metadata?.lastStartedAt) ?? 0, epochMs(endpoint.metadata?.lastCompletedAt) ?? 0, epochMs(endpoint.metadata?.lastFailedAt) ?? 0, epochMs(endpoint.metadata?.startedAt) ?? 0);
|
|
33533
|
+
}
|
|
33534
|
+
function bestEndpointForActor(snapshot, actorId) {
|
|
33535
|
+
return Object.values(snapshot.endpoints).filter((endpoint) => endpoint.agentId === actorId).sort((left, right) => endpointRank(right) - endpointRank(left) || endpointTimestamp(right) - endpointTimestamp(left) || right.id.localeCompare(left.id))[0];
|
|
33536
|
+
}
|
|
33537
|
+
function isSteerAvailableEndpoint(endpoint) {
|
|
33538
|
+
switch (endpoint?.state) {
|
|
33539
|
+
case "active":
|
|
33540
|
+
case "working":
|
|
33541
|
+
case "waiting":
|
|
33542
|
+
case "idle":
|
|
33543
|
+
return true;
|
|
33544
|
+
default:
|
|
33545
|
+
return false;
|
|
33546
|
+
}
|
|
33547
|
+
}
|
|
33548
|
+
function bestSteerAvailableEndpointForActor(snapshot, actorId) {
|
|
33549
|
+
const endpoint = bestEndpointForActor(snapshot, actorId);
|
|
33550
|
+
return isSteerAvailableEndpoint(endpoint) ? endpoint : undefined;
|
|
33551
|
+
}
|
|
33489
33552
|
function buildScoutReturnAddress2(snapshot, actorId, options = {}) {
|
|
33490
33553
|
const agent = snapshot.agents[actorId];
|
|
33491
33554
|
const actor = snapshot.actors[actorId];
|
|
@@ -33524,6 +33587,28 @@ function isSupersededBrokerAgent(snapshot, agentId) {
|
|
|
33524
33587
|
}
|
|
33525
33588
|
return metadataBoolean(agent.metadata, "retiredFromFleet") || metadataBoolean(agent.metadata, "staleLocalRegistration");
|
|
33526
33589
|
}
|
|
33590
|
+
function operatorActorIdSet(senderId) {
|
|
33591
|
+
return new Set([
|
|
33592
|
+
"operator",
|
|
33593
|
+
senderId?.trim(),
|
|
33594
|
+
process.env.OPENSCOUT_OPERATOR_NAME?.trim(),
|
|
33595
|
+
...configuredOperatorActorIds()
|
|
33596
|
+
].filter((value) => Boolean(value)));
|
|
33597
|
+
}
|
|
33598
|
+
function isSteerableParticipant(snapshot, participantId, senderId) {
|
|
33599
|
+
const actorId = participantId.trim();
|
|
33600
|
+
if (!actorId || operatorActorIdSet(senderId).has(actorId)) {
|
|
33601
|
+
return false;
|
|
33602
|
+
}
|
|
33603
|
+
if (snapshot.agents[actorId]) {
|
|
33604
|
+
return true;
|
|
33605
|
+
}
|
|
33606
|
+
if (bestSteerAvailableEndpointForActor(snapshot, actorId)) {
|
|
33607
|
+
return true;
|
|
33608
|
+
}
|
|
33609
|
+
const actorKind = snapshot.actors[actorId]?.kind;
|
|
33610
|
+
return actorKind === "agent" || actorKind === "helper" || actorKind === "bridge";
|
|
33611
|
+
}
|
|
33527
33612
|
async function brokerReadJson(baseUrl, path2, options = {}) {
|
|
33528
33613
|
return requestScoutBrokerJson(baseUrl, path2, {
|
|
33529
33614
|
socketPath: resolveBrokerSocketPathForBaseUrl(baseUrl),
|
|
@@ -34296,8 +34381,16 @@ async function sendScoutConversationMessage(input) {
|
|
|
34296
34381
|
const createdAtMs = input.createdAtMs ?? Date.now();
|
|
34297
34382
|
const senderId = await resolveConversationActorId(broker2.baseUrl, broker2.snapshot, broker2.node.id, input.senderId, currentDirectory);
|
|
34298
34383
|
const mentionResolution = await resolveMentionTargets(broker2.snapshot, input.body, currentDirectory);
|
|
34299
|
-
const
|
|
34300
|
-
const
|
|
34384
|
+
const mentionedTargetIds = new Set(mentionResolution.resolved.map((target) => target.agentId));
|
|
34385
|
+
const participantTargetIds = input.notifyParticipantAgents && (conversation.kind === "channel" || conversation.kind === "group_direct" || conversation.kind === "thread") ? conversation.participantIds.filter((participantId) => isSteerableParticipant(broker2.snapshot, participantId, senderId)) : [];
|
|
34386
|
+
const candidateTargetIds = [...new Set([
|
|
34387
|
+
...mentionedTargetIds,
|
|
34388
|
+
...participantTargetIds
|
|
34389
|
+
])];
|
|
34390
|
+
const availableTargets = (await Promise.all(candidateTargetIds.map(async (agentId) => await ensureTargetRelayAgentRegistered(broker2.baseUrl, broker2.snapshot, broker2.node.id, agentId, currentDirectory) ? agentId : null))).filter((agentId) => Boolean(agentId));
|
|
34391
|
+
const validTargets = [...new Set(availableTargets.filter((target) => target !== senderId && Boolean(broker2.snapshot.agents[target])))].sort();
|
|
34392
|
+
const mentionedValidTargets = validTargets.filter((targetId) => mentionedTargetIds.has(targetId));
|
|
34393
|
+
const participantValidTargets = validTargets.filter((targetId) => participantTargetIds.includes(targetId));
|
|
34301
34394
|
const unresolvedTargets = mentionResolution.resolved.filter((target) => !validTargets.includes(target.agentId)).map((target) => target.label).concat(mentionResolution.unresolved).concat(mentionResolution.ambiguous.map((entry) => entry.label));
|
|
34302
34395
|
const messageId = `m-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
|
|
34303
34396
|
const returnAddress = buildScoutReturnAddress2(broker2.snapshot, senderId, {
|
|
@@ -34312,9 +34405,9 @@ async function sendScoutConversationMessage(input) {
|
|
|
34312
34405
|
class: conversation.kind === "system" ? "system" : "agent",
|
|
34313
34406
|
body: input.body,
|
|
34314
34407
|
...input.replyToMessageId?.trim() ? { replyToMessageId: input.replyToMessageId.trim() } : {},
|
|
34315
|
-
mentions: mentionResolution.resolved.filter((target) =>
|
|
34408
|
+
mentions: mentionResolution.resolved.filter((target) => mentionedValidTargets.includes(target.agentId)).map((target) => ({ actorId: target.agentId, label: target.label })),
|
|
34316
34409
|
attachments: normalizeOutgoingAttachments(input.attachments),
|
|
34317
|
-
audience:
|
|
34410
|
+
audience: participantValidTargets.length > 0 ? { notify: participantValidTargets, reason: "conversation_visibility" } : mentionedValidTargets.length > 0 ? { notify: mentionedValidTargets, reason: "mention" } : undefined,
|
|
34318
34411
|
visibility: conversation.visibility,
|
|
34319
34412
|
policy: "durable",
|
|
34320
34413
|
createdAt: createdAtMs,
|
|
@@ -34323,11 +34416,22 @@ async function sendScoutConversationMessage(input) {
|
|
|
34323
34416
|
destinationKind: "conversation",
|
|
34324
34417
|
destinationId: conversation.id,
|
|
34325
34418
|
relayMessageId: messageId,
|
|
34419
|
+
...participantValidTargets.length ? {
|
|
34420
|
+
deliveryIntent: "group_message",
|
|
34421
|
+
relayTargetIds: participantValidTargets
|
|
34422
|
+
} : {},
|
|
34326
34423
|
...clientMessageMetadata(input.clientMessageId),
|
|
34327
34424
|
returnAddress
|
|
34328
34425
|
}
|
|
34329
34426
|
});
|
|
34330
|
-
return {
|
|
34427
|
+
return {
|
|
34428
|
+
usedBroker: true,
|
|
34429
|
+
conversationId: conversation.id,
|
|
34430
|
+
messageId,
|
|
34431
|
+
invokedTargets: mentionedValidTargets,
|
|
34432
|
+
...participantValidTargets.length ? { notifiedTargets: participantValidTargets } : {},
|
|
34433
|
+
unresolvedTargets
|
|
34434
|
+
};
|
|
34331
34435
|
}
|
|
34332
34436
|
async function openScoutPeerSession(input) {
|
|
34333
34437
|
const broker2 = await requireScoutBrokerContext();
|
|
@@ -40900,6 +40900,10 @@ function isLocalAgentRecordOnline(agentName, record2) {
|
|
|
40900
40900
|
}
|
|
40901
40901
|
return isLocalAgentSessionAlive(normalizedRecord.tmuxSession);
|
|
40902
40902
|
}
|
|
40903
|
+
var localAgentOnlineFlights = new Map;
|
|
40904
|
+
function localAgentOnlineFlightKey(agentName, record2) {
|
|
40905
|
+
return [agentName, record2.transport, record2.tmuxSession].join("\x00");
|
|
40906
|
+
}
|
|
40903
40907
|
function isLocalAgentSessionAlive(sessionName) {
|
|
40904
40908
|
return readTmuxSessionExistsSnapshot(sessionName);
|
|
40905
40909
|
}
|
|
@@ -41684,6 +41688,23 @@ function areHarnessBinariesAvailable(record2) {
|
|
|
41684
41688
|
return true;
|
|
41685
41689
|
}
|
|
41686
41690
|
async function ensureLocalAgentOnline(agentName, record2) {
|
|
41691
|
+
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
41692
|
+
const flightKey = localAgentOnlineFlightKey(agentName, normalizedRecord);
|
|
41693
|
+
const existingFlight = localAgentOnlineFlights.get(flightKey);
|
|
41694
|
+
if (existingFlight) {
|
|
41695
|
+
return await existingFlight;
|
|
41696
|
+
}
|
|
41697
|
+
const flight = ensureLocalAgentOnlineOnce(agentName, normalizedRecord);
|
|
41698
|
+
localAgentOnlineFlights.set(flightKey, flight);
|
|
41699
|
+
try {
|
|
41700
|
+
return await flight;
|
|
41701
|
+
} finally {
|
|
41702
|
+
if (localAgentOnlineFlights.get(flightKey) === flight) {
|
|
41703
|
+
localAgentOnlineFlights.delete(flightKey);
|
|
41704
|
+
}
|
|
41705
|
+
}
|
|
41706
|
+
}
|
|
41707
|
+
async function ensureLocalAgentOnlineOnce(agentName, record2) {
|
|
41687
41708
|
const normalizedRecord = normalizeLocalAgentRecord(agentName, record2);
|
|
41688
41709
|
if (isLocalAgentRecordOnline(agentName, normalizedRecord)) {
|
|
41689
41710
|
return normalizedRecord;
|