@dmrlzz/davecode 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{ChatApp-YMHKIAAH.js → ChatApp-Z6PQIZ5J.js} +7 -6
  2. package/dist/{ChatApp-YMHKIAAH.js.map → ChatApp-Z6PQIZ5J.js.map} +1 -1
  3. package/dist/{account-5QFYCVYM.js → account-RTPS2V6O.js} +4 -3
  4. package/dist/{accounts-756BMMAL.js → accounts-IYQ4ZRL7.js} +6 -5
  5. package/dist/{budget-PGSNCVVK.js → budget-N2ZB66FF.js} +5 -4
  6. package/dist/{budget-PGSNCVVK.js.map → budget-N2ZB66FF.js.map} +1 -1
  7. package/dist/{chat-D3T4YG5D.js → chat-6TX6JX45.js} +9 -8
  8. package/dist/{chat-D3T4YG5D.js.map → chat-6TX6JX45.js.map} +1 -1
  9. package/dist/chunk-732GIHRQ.js +23 -0
  10. package/dist/chunk-732GIHRQ.js.map +1 -0
  11. package/dist/{chunk-6SHOBL2X.js → chunk-BJTXMET2.js} +2 -2
  12. package/dist/{chunk-JFWMLYV7.js → chunk-KUY3QHGS.js} +130 -89
  13. package/dist/chunk-KUY3QHGS.js.map +1 -0
  14. package/dist/{chunk-K5AA65RS.js → chunk-LEU46DGH.js} +2 -2
  15. package/dist/{chunk-HENE4DA6.js → chunk-QKY3OKVG.js} +71 -3
  16. package/dist/chunk-QKY3OKVG.js.map +1 -0
  17. package/dist/{chunk-6WUVR3R2.js → chunk-UEV5K3DH.js} +3 -3
  18. package/dist/{chunk-JSRPO2AR.js → chunk-UNK3EQD6.js} +4 -4
  19. package/dist/{chunk-IOATP7KH.js → chunk-WAARDGCZ.js} +5 -21
  20. package/dist/chunk-WAARDGCZ.js.map +1 -0
  21. package/dist/{chunk-ZNUNYYN6.js → chunk-YNAMNQLW.js} +3 -3
  22. package/dist/{config-TKGGYEN7.js → config-YQKY2AA4.js} +4 -3
  23. package/dist/{config-TKGGYEN7.js.map → config-YQKY2AA4.js.map} +1 -1
  24. package/dist/dashboard/assets/{Accounts-DciFUg4y.js → Accounts-DXiGsutB.js} +1 -1
  25. package/dist/dashboard/assets/{Callout-WgXHDPg0.js → Callout-1E8Wsl9W.js} +1 -1
  26. package/dist/dashboard/assets/{Goals-C6HL1PNE.js → Goals-kL4VAxw3.js} +1 -1
  27. package/dist/dashboard/assets/{Library-DwpBYTbK.js → Library-DZxBVUo_.js} +1 -1
  28. package/dist/dashboard/assets/{Panes-DxFSwhb7.js → Panes-C-TJekjs.js} +1 -1
  29. package/dist/dashboard/assets/{RoutesPage-Cyo0MNd7.js → RoutesPage-DWYm9tW8.js} +1 -1
  30. package/dist/dashboard/assets/{Runner-CIL7RxpN.js → Runner-CmHBjECR.js} +1 -1
  31. package/dist/dashboard/assets/{Settings-B_PEB585.js → Settings-BANphxva.js} +1 -1
  32. package/dist/dashboard/assets/{Tasks-DEfPSaE6.js → Tasks-cSx1PKyQ.js} +1 -1
  33. package/dist/dashboard/assets/{Traffic-Dcz-WhsP.js → Traffic-DEAuM6jq.js} +1 -1
  34. package/dist/dashboard/assets/{Workspace-9UCw9q7C.js → Workspace-BQFjc1jH.js} +1 -1
  35. package/dist/dashboard/assets/index-B8kld9xo.js +104 -0
  36. package/dist/dashboard/index.html +1 -1
  37. package/dist/{dist-F3NRJ5FK.js → dist-PIC255RX.js} +4 -2
  38. package/dist/{doctor-V4XXVVGK.js → doctor-PQC7JQPP.js} +4 -3
  39. package/dist/{doctor-V4XXVVGK.js.map → doctor-PQC7JQPP.js.map} +1 -1
  40. package/dist/{goal-RUHYPVPA.js → goal-STLEU7C7.js} +4 -3
  41. package/dist/{goal-RUHYPVPA.js.map → goal-STLEU7C7.js.map} +1 -1
  42. package/dist/index.js +31 -31
  43. package/dist/{init-54FKQZ2Z.js → init-NHU5LJSS.js} +4 -3
  44. package/dist/{init-54FKQZ2Z.js.map → init-NHU5LJSS.js.map} +1 -1
  45. package/dist/{run-4R25J2VN.js → run-7HWSHMRJ.js} +4 -3
  46. package/dist/{run-4R25J2VN.js.map → run-7HWSHMRJ.js.map} +1 -1
  47. package/dist/runtime.js +3 -2
  48. package/dist/{start-GRHW3TGE.js → start-WVAEAQWL.js} +4 -3
  49. package/dist/{start-GRHW3TGE.js.map → start-WVAEAQWL.js.map} +1 -1
  50. package/dist/{status-QR2HNPBK.js → status-ZRHPFLFT.js} +5 -4
  51. package/dist/{tasks-BHWDV4JS.js → tasks-JVWXUNXN.js} +5 -4
  52. package/dist/{tasks-BHWDV4JS.js.map → tasks-JVWXUNXN.js.map} +1 -1
  53. package/package.json +4 -4
  54. package/dist/chunk-HENE4DA6.js.map +0 -1
  55. package/dist/chunk-IOATP7KH.js.map +0 -1
  56. package/dist/chunk-JFWMLYV7.js.map +0 -1
  57. package/dist/dashboard/assets/index-CpztPbom.js +0 -104
  58. /package/dist/{account-5QFYCVYM.js.map → account-RTPS2V6O.js.map} +0 -0
  59. /package/dist/{accounts-756BMMAL.js.map → accounts-IYQ4ZRL7.js.map} +0 -0
  60. /package/dist/{chunk-6SHOBL2X.js.map → chunk-BJTXMET2.js.map} +0 -0
  61. /package/dist/{chunk-K5AA65RS.js.map → chunk-LEU46DGH.js.map} +0 -0
  62. /package/dist/{chunk-6WUVR3R2.js.map → chunk-UEV5K3DH.js.map} +0 -0
  63. /package/dist/{chunk-JSRPO2AR.js.map → chunk-UNK3EQD6.js.map} +0 -0
  64. /package/dist/{chunk-ZNUNYYN6.js.map → chunk-YNAMNQLW.js.map} +0 -0
  65. /package/dist/{dist-F3NRJ5FK.js.map → dist-PIC255RX.js.map} +0 -0
  66. /package/dist/{status-QR2HNPBK.js.map → status-ZRHPFLFT.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as e,i as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{A as a,E as o,T as s,c,z as l}from"./index-CpztPbom.js";var u=e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.FitAddon=r():n.FitAddon=r()})(self,(()=>(()=>{var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core,t=e._renderService.dimensions;if(t.css.cell.width===0||t.css.cell.height===0)return;let n=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,r=window.getComputedStyle(this._terminal.element.parentElement),i=parseInt(r.getPropertyValue(`height`)),a=Math.max(0,parseInt(r.getPropertyValue(`width`))),o=window.getComputedStyle(this._terminal.element),s=i-(parseInt(o.getPropertyValue(`padding-top`))+parseInt(o.getPropertyValue(`padding-bottom`))),c=a-(parseInt(o.getPropertyValue(`padding-right`))+parseInt(o.getPropertyValue(`padding-left`)))-n;return{cols:Math.max(2,Math.floor(c/t.css.cell.width)),rows:Math.max(1,Math.floor(s/t.css.cell.height))}}}})(),e})()))})),d=e(((e,t)=>{(function(n,r){if(typeof e==`object`&&typeof t==`object`)t.exports=r();else if(typeof define==`function`&&define.amd)define([],r);else{var i=r();for(var a in i)(typeof e==`object`?e:n)[a]=i[a]}})(globalThis,(()=>(()=>{var e={4567:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;let a=n(9042),o=n(9924),s=n(844),c=n(4725),l=n(2585),u=n(3656),d=t.AccessibilityManager=class extends s.Disposable{constructor(e,t,n,r){super(),this._terminal=e,this._coreBrowserService=n,this._renderService=r,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce=``,this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement(`div`),this._accessibilityContainer.classList.add(`xterm-accessibility`),this._rowContainer=this._coreBrowserService.mainDocument.createElement(`div`),this._rowContainer.setAttribute(`role`,`list`),this._rowContainer.classList.add(`xterm-accessibility-tree`),this._rowElements=[];for(let e=0;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);if(this._topBoundaryFocusListener=e=>this._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement(`div`),this._liveRegion.classList.add(`live-region`),this._liveRegion.setAttribute(`aria-live`,`assertive`),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw Error(`Cannot enable accessibility before Terminal.open`);this._terminal.element.insertAdjacentElement(`afterbegin`,this._accessibilityContainer),this.register(this._terminal.onResize((e=>this._handleResize(e.rows)))),this.register(this._terminal.onRender((e=>this._refreshRows(e.start,e.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((e=>this._handleChar(e)))),this.register(this._terminal.onLineFeed((()=>this._handleChar(`
1
+ import{a as e,i as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{A as a,E as o,T as s,c,z as l}from"./index-B8kld9xo.js";var u=e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.FitAddon=r():n.FitAddon=r()})(self,(()=>(()=>{var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core,t=e._renderService.dimensions;if(t.css.cell.width===0||t.css.cell.height===0)return;let n=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,r=window.getComputedStyle(this._terminal.element.parentElement),i=parseInt(r.getPropertyValue(`height`)),a=Math.max(0,parseInt(r.getPropertyValue(`width`))),o=window.getComputedStyle(this._terminal.element),s=i-(parseInt(o.getPropertyValue(`padding-top`))+parseInt(o.getPropertyValue(`padding-bottom`))),c=a-(parseInt(o.getPropertyValue(`padding-right`))+parseInt(o.getPropertyValue(`padding-left`)))-n;return{cols:Math.max(2,Math.floor(c/t.css.cell.width)),rows:Math.max(1,Math.floor(s/t.css.cell.height))}}}})(),e})()))})),d=e(((e,t)=>{(function(n,r){if(typeof e==`object`&&typeof t==`object`)t.exports=r();else if(typeof define==`function`&&define.amd)define([],r);else{var i=r();for(var a in i)(typeof e==`object`?e:n)[a]=i[a]}})(globalThis,(()=>(()=>{var e={4567:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;let a=n(9042),o=n(9924),s=n(844),c=n(4725),l=n(2585),u=n(3656),d=t.AccessibilityManager=class extends s.Disposable{constructor(e,t,n,r){super(),this._terminal=e,this._coreBrowserService=n,this._renderService=r,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce=``,this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement(`div`),this._accessibilityContainer.classList.add(`xterm-accessibility`),this._rowContainer=this._coreBrowserService.mainDocument.createElement(`div`),this._rowContainer.setAttribute(`role`,`list`),this._rowContainer.classList.add(`xterm-accessibility-tree`),this._rowElements=[];for(let e=0;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);if(this._topBoundaryFocusListener=e=>this._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement(`div`),this._liveRegion.classList.add(`live-region`),this._liveRegion.setAttribute(`aria-live`,`assertive`),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw Error(`Cannot enable accessibility before Terminal.open`);this._terminal.element.insertAdjacentElement(`afterbegin`,this._accessibilityContainer),this.register(this._terminal.onResize((e=>this._handleResize(e.rows)))),this.register(this._terminal.onRender((e=>this._refreshRows(e.start,e.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((e=>this._handleChar(e)))),this.register(this._terminal.onLineFeed((()=>this._handleChar(`
2
2
  `)))),this.register(this._terminal.onA11yTab((e=>this._handleTab(e)))),this.register(this._terminal.onKey((e=>this._handleKey(e.key)))),this.register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this.register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this.register((0,u.addDisposableDomListener)(document,`selectionchange`,(()=>this._handleSelectionChange()))),this.register(this._coreBrowserService.onDprChange((()=>this._refreshRowsDimensions()))),this._refreshRows(),this.register((0,s.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(e){for(let t=0;t<e;t++)this._handleChar(` `)}_handleChar(e){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,e===`
3
3
  `&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=a.tooMuchOutput)))}_clearLiveRegion(){this._liveRegion.textContent=``,this._liveRegionLineCount=0}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_renderRows(e,t){let n=this._terminal.buffer,r=n.lines.length.toString();for(let i=e;i<=t;i++){let e=n.lines.get(n.ydisp+i),t=[],a=e?.translateToString(!0,void 0,void 0,t)||``,o=(n.ydisp+i+1).toString(),s=this._rowElements[i];s&&(a.length===0?(s.innerText=`\xA0`,this._rowColumns.set(s,[0,1])):(s.textContent=a,this._rowColumns.set(s,t)),s.setAttribute(`aria-posinset`,o),s.setAttribute(`aria-setsize`,r))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce=``)}_handleBoundaryFocus(e,t){let n=e.target,r=this._rowElements[t===0?1:this._rowElements.length-2];if(n.getAttribute(`aria-posinset`)===(t===0?`1`:`${this._terminal.buffer.lines.length}`)||e.relatedTarget!==r)return;let i,a;if(t===0?(i=n,a=this._rowElements.pop(),this._rowContainer.removeChild(a)):(i=this._rowElements.shift(),a=n,this._rowContainer.removeChild(i)),i.removeEventListener(`focus`,this._topBoundaryFocusListener),a.removeEventListener(`focus`,this._bottomBoundaryFocusListener),t===0){let e=this._createAccessibilityTreeNode();this._rowElements.unshift(e),this._rowContainer.insertAdjacentElement(`afterbegin`,e)}else{let e=this._createAccessibilityTreeNode();this._rowElements.push(e),this._rowContainer.appendChild(e)}this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._terminal.scrollLines(t===0?-1:1),this._rowElements[t===0?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;let e=document.getSelection();if(!e)return;if(e.isCollapsed)return void(this._rowContainer.contains(e.anchorNode)&&this._terminal.clearSelection());if(!e.anchorNode||!e.focusNode)return void console.error(`anchorNode and/or focusNode are null`);let t={node:e.anchorNode,offset:e.anchorOffset},n={node:e.focusNode,offset:e.focusOffset};if((t.node.compareDocumentPosition(n.node)&Node.DOCUMENT_POSITION_PRECEDING||t.node===n.node&&t.offset>n.offset)&&([t,n]=[n,t]),t.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(t={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(t.node))return;let r=this._rowElements.slice(-1)[0];if(n.node.compareDocumentPosition(r)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(n={node:r,offset:r.textContent?.length??0}),!this._rowContainer.contains(n.node))return;let i=({node:e,offset:t})=>{let n=e instanceof Text?e.parentNode:e,r=parseInt(n?.getAttribute(`aria-posinset`),10)-1;if(isNaN(r))return console.warn(`row is invalid. Race condition?`),null;let i=this._rowColumns.get(n);if(!i)return console.warn(`columns is null. Race condition?`),null;let a=t<i.length?i[t]:i.slice(-1)[0]+1;return a>=this._terminal.cols&&(++r,a=0),{row:r,column:a}},a=i(t),o=i(n);if(a&&o){if(a.row>o.row||a.row===o.row&&a.column>=o.column)throw Error(`invalid range`);this._terminal.select(a.column,a.row,(o.row-a.row)*this._terminal.cols-a.column+o.column)}}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener(`focus`,this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);for(;this._rowElements.length>e;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let e=this._coreBrowserService.mainDocument.createElement(`div`);return e.setAttribute(`role`,`listitem`),e.tabIndex=-1,this._refreshRowDimensions(e),e}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}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])}}_refreshRowDimensions(e){e.style.height=`${this._renderService.dimensions.css.cell.height}px`}};t.AccessibilityManager=d=r([i(1,l.IInstantiationService),i(2,c.ICoreBrowserService),i(3,c.IRenderService)],d)},3614:(e,t)=>{function n(e){return e.replace(/\r?\n/g,`\r`)}function r(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function i(e,t,i,a){e=r(e=n(e),i.decPrivateModes.bracketedPasteMode&&!0!==a.rawOptions.ignoreBracketedPasteMode),i.triggerDataEvent(e,!0),t.value=``}function a(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.rightClickHandler=t.moveTextAreaUnderMouseCursor=t.paste=t.handlePasteEvent=t.copyHandler=t.bracketTextForPaste=t.prepareTextForTerminal=void 0,t.prepareTextForTerminal=n,t.bracketTextForPaste=r,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,n,r){e.stopPropagation(),e.clipboardData&&i(e.clipboardData.getData(`text/plain`),t,n,r)},t.paste=i,t.moveTextAreaUnderMouseCursor=a,t.rightClickHandler=function(e,t,n,r,i){a(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}},7239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;let r=n(1505);t.ColorContrastCache=class{constructor(){this._color=new r.TwoKeyMap,this._css=new r.TwoKeyMap}setCss(e,t,n){this._css.set(e,t,n)}getCss(e,t){return this._css.get(e,t)}setColor(e,t,n){this._color.set(e,t,n)}getColor(e,t){return this._color.get(e,t)}clear(){this._color.clear(),this._css.clear()}}},3656:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=void 0,t.addDisposableDomListener=function(e,t,n,r){e.addEventListener(t,n,r);let i=!1;return{dispose:()=>{i||(i=!0,e.removeEventListener(t,n,r))}}}},3551:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier=void 0;let a=n(3656),o=n(8460),s=n(844),c=n(2585),l=n(4725),u=t.Linkifier=class extends s.Disposable{get currentLink(){return this._currentLink}constructor(e,t,n,r,i){super(),this._element=e,this._mouseService=t,this._renderService=n,this._bufferService=r,this._linkProviderService=i,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new o.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new o.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,s.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,s.toDisposable)((()=>{this._lastMouseEvent=void 0,this._activeProviderReplies?.clear()}))),this.register(this._bufferService.onResize((()=>{this._clearCurrentLink(),this._wasResized=!0}))),this.register((0,a.addDisposableDomListener)(this._element,`mouseleave`,(()=>{this._isMouseOut=!0,this._clearCurrentLink()}))),this.register((0,a.addDisposableDomListener)(this._element,`mousemove`,this._handleMouseMove.bind(this))),this.register((0,a.addDisposableDomListener)(this._element,`mousedown`,this._handleMouseDown.bind(this))),this.register((0,a.addDisposableDomListener)(this._element,`mouseup`,this._handleMouseUp.bind(this)))}_handleMouseMove(e){this._lastMouseEvent=e;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!t)return;this._isMouseOut=!1;let n=e.composedPath();for(let e=0;e<n.length;e++){let t=n[e];if(t.classList.contains(`xterm`))break;if(t.classList.contains(`xterm-hover`))return}this._lastBufferCell&&t.x===this._lastBufferCell.x&&t.y===this._lastBufferCell.y||(this._handleHover(t),this._lastBufferCell=t)}_handleHover(e){if(this._activeLine!==e.y||this._wasResized)return this._clearCurrentLink(),this._askForLink(e,!1),void(this._wasResized=!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,e)||(this._clearCurrentLink(),this._askForLink(e,!0))}_askForLink(e,t){this._activeProviderReplies&&t||(this._activeProviderReplies?.forEach((e=>{e?.forEach((e=>{e.link.dispose&&e.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=e.y);let n=!1;for(let[r,i]of this._linkProviderService.linkProviders.entries())t?this._activeProviderReplies?.get(r)&&(n=this._checkLinkProviderResult(r,e,n)):i.provideLinks(e.y,(t=>{if(this._isMouseOut)return;let i=t?.map((e=>({link:e})));this._activeProviderReplies?.set(r,i),n=this._checkLinkProviderResult(r,e,n),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)}))}_removeIntersectingLinks(e,t){let n=new Set;for(let r=0;r<t.size;r++){let i=t.get(r);if(i)for(let t=0;t<i.length;t++){let r=i[t],a=r.link.range.start.y<e?0:r.link.range.start.x,o=r.link.range.end.y>e?this._bufferService.cols:r.link.range.end.x;for(let e=a;e<=o;e++){if(n.has(e)){i.splice(t--,1);break}n.add(e)}}}}_checkLinkProviderResult(e,t,n){if(!this._activeProviderReplies)return n;let r=this._activeProviderReplies.get(e),i=!1;for(let t=0;t<e;t++)this._activeProviderReplies.has(t)&&!this._activeProviderReplies.get(t)||(i=!0);if(!i&&r){let e=r.find((e=>this._linkAtPosition(e.link,t)));e&&(n=!0,this._handleNewLink(e))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!n)for(let e=0;e<this._activeProviderReplies.size;e++){let r=this._activeProviderReplies.get(e)?.find((e=>this._linkAtPosition(e.link,t)));if(r){n=!0,this._handleNewLink(r);break}}return n}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._currentLink)return;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink===this._currentLink&&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,(0,s.disposeArray)(this._linkCacheDisposables))}_handleNewLink(e){if(!this._lastMouseEvent)return;let t=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);t&&this._linkAtPosition(e.link,t)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:e.link.decorations===void 0||e.link.decorations.underline,pointerCursor:e.link.decorations===void 0||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:e=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&this._element.classList.toggle(`xterm-cursor-pointer`,e))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:t=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e=>{if(!this._currentLink)return;let t=e.start===0?0:e.start+1+this._bufferService.buffer.ydisp,n=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=n&&(this._clearCurrentLink(t,n),this._lastMouseEvent)){let e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._askForLink(e,!1)}}))))}_linkHover(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add(`xterm-cursor-pointer`)),t.hover&&t.hover(n,t.text)}_fireUnderlineEvent(e,t){let n=e.range,r=this._bufferService.buffer.ydisp,i=this._createLinkUnderlineEvent(n.start.x-1,n.start.y-r-1,n.end.x,n.end.y-r-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(i)}_linkLeave(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove(`xterm-cursor-pointer`)),t.leave&&t.leave(n,t.text)}_linkAtPosition(e,t){let n=e.range.start.y*this._bufferService.cols+e.range.start.x,r=e.range.end.y*this._bufferService.cols+e.range.end.x,i=t.y*this._bufferService.cols+t.x;return n<=i&&i<=r}_positionFromMouseEvent(e,t,n){let r=n.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(r)return{x:r[0],y:r[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,n,r,i){return{x1:e,y1:t,x2:n,y2:r,cols:this._bufferService.cols,fg:i}}};t.Linkifier=u=r([i(1,l.IMouseService),i(2,l.IRenderService),i(3,c.IBufferService),i(4,l.ILinkProviderService)],u)},9042:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0,t.promptLabel=`Terminal input`,t.tooMuchOutput=`Too much output to announce, navigate to rows manually to read`},3730:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkProvider=void 0;let a=n(511),o=n(2585),s=t.OscLinkProvider=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n)return void t(void 0);let r=[],i=this._optionsService.rawOptions.linkHandler,o=new a.CellData,s=n.getTrimmedLength(),l=-1,u=-1,d=!1;for(let t=0;t<s;t++)if(u!==-1||n.hasContent(t)){if(n.loadCell(t,o),o.hasExtendedAttrs()&&o.extended.urlId){if(u===-1){u=t,l=o.extended.urlId;continue}d=o.extended.urlId!==l}else u!==-1&&(d=!0);if(d||u!==-1&&t===s-1){let n=this._oscLinkService.getLinkData(l)?.uri;if(n){let a={start:{x:u+1,y:e},end:{x:t+(d||t!==s-1?0:1),y:e}},o=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(o=!0)}catch{o=!0}o||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):c(0,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}d=!1,o.hasExtendedAttrs()&&o.extended.urlId?(u=t,l=o.extended.urlId):(u=-1,l=-1)}}t(r)}};function c(e,t){if(confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}t.OscLinkProvider=s=r([i(0,o.IBufferService),i(1,o.IOptionsService),i(2,o.IOscLinkService)],s)},6193:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RenderDebouncer=void 0,t.RenderDebouncer=class{constructor(e,t){this._renderCallback=e,this._coreBrowserService=t,this._refreshCallbacks=[]}dispose(){this._animationFrame&&=(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),void 0)}addRefreshCallback(e){return this._refreshCallbacks.push(e),this._animationFrame||=this._coreBrowserService.window.requestAnimationFrame((()=>this._innerRefresh())),this._animationFrame}refresh(e,t,n){this._rowCount=n,e=e===void 0?0:e,t=t===void 0?this._rowCount-1:t,this._rowStart=this._rowStart===void 0?e:Math.min(this._rowStart,e),this._rowEnd=this._rowEnd===void 0?t:Math.max(this._rowEnd,t),this._animationFrame||=this._coreBrowserService.window.requestAnimationFrame((()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return void this._runRefreshCallbacks();let e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(let e of this._refreshCallbacks)e(0);this._refreshCallbacks=[]}}},3236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;let r=n(3614),i=n(3656),a=n(3551),o=n(9042),s=n(3730),c=n(1680),l=n(3107),u=n(5744),d=n(2950),f=n(1296),p=n(428),m=n(4269),h=n(5114),g=n(8934),_=n(3230),v=n(9312),y=n(4725),b=n(6731),x=n(8055),S=n(8969),C=n(8460),w=n(844),T=n(6114),E=n(8437),D=n(2584),O=n(7399),k=n(5941),A=n(9074),j=n(2585),M=n(5435),N=n(4567),P=n(779);class F extends S.CoreTerminal{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(e={}){super(e),this.browser=T,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this.register(new w.MutableDisposable),this._onCursorMove=this.register(new C.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this.register(new C.EventEmitter),this.onKey=this._onKey.event,this._onRender=this.register(new C.EventEmitter),this.onRender=this._onRender.event,this._onSelectionChange=this.register(new C.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this.register(new C.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this.register(new C.EventEmitter),this.onBell=this._onBell.event,this._onFocus=this.register(new C.EventEmitter),this._onBlur=this.register(new C.EventEmitter),this._onA11yCharEmitter=this.register(new C.EventEmitter),this._onA11yTabEmitter=this.register(new C.EventEmitter),this._onWillOpen=this.register(new C.EventEmitter),this._setup(),this._decorationService=this._instantiationService.createInstance(A.DecorationService),this._instantiationService.setService(j.IDecorationService,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(P.LinkProviderService),this._instantiationService.setService(y.ILinkProviderService,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(s.OscLinkProvider)),this.register(this._inputHandler.onRequestBell((()=>this._onBell.fire()))),this.register(this._inputHandler.onRequestRefreshRows(((e,t)=>this.refresh(e,t)))),this.register(this._inputHandler.onRequestSendFocus((()=>this._reportFocus()))),this.register(this._inputHandler.onRequestReset((()=>this.reset()))),this.register(this._inputHandler.onRequestWindowsOptionsReport((e=>this._reportWindowsOptions(e)))),this.register(this._inputHandler.onColor((e=>this._handleColorEvent(e)))),this.register((0,C.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,C.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,C.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,C.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize((e=>this._afterResize(e.cols,e.rows)))),this.register((0,w.toDisposable)((()=>{this._customKeyEventHandler=void 0,this.element?.parentNode?.removeChild(this.element)})))}_handleColorEvent(e){if(this._themeService)for(let t of e){let e,n=``;switch(t.index){case 256:e=`foreground`,n=`10`;break;case 257:e=`background`,n=`11`;break;case 258:e=`cursor`,n=`12`;break;default:e=`ansi`,n=`4;`+t.index}switch(t.type){case 0:let r=x.color.toColorRGB(e===`ansi`?this._themeService.colors.ansi[t.index]:this._themeService.colors[e]);this.coreService.triggerDataEvent(`${D.C0.ESC}]${n};${(0,k.toRgbString)(r)}${D.C1_ESCAPED.ST}`);break;case 1:if(e===`ansi`)this._themeService.modifyColors((e=>e.ansi[t.index]=x.channels.toColor(...t.color)));else{let n=e;this._themeService.modifyColors((e=>e[n]=x.channels.toColor(...t.color)))}break;case 2:this._themeService.restoreColor(t.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(N.AccessibilityManager,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(D.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(D.C0.ESC+`[O`),this.element.classList.remove(`focus`),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(!t)return;let n=Math.min(this.buffer.x,this.cols-1),r=this._renderService.dimensions.css.cell.height,i=t.getWidth(n),a=this._renderService.dimensions.css.cell.width*i,o=this.buffer.y*this._renderService.dimensions.css.cell.height,s=n*this._renderService.dimensions.css.cell.width;this.textarea.style.left=s+`px`,this.textarea.style.top=o+`px`,this.textarea.style.width=a+`px`,this.textarea.style.height=r+`px`,this.textarea.style.lineHeight=r+`px`,this.textarea.style.zIndex=`-5`}_initGlobal(){this._bindKeys(),this.register((0,i.addDisposableDomListener)(this.element,`copy`,(e=>{this.hasSelection()&&(0,r.copyHandler)(e,this._selectionService)})));let e=e=>(0,r.handlePasteEvent)(e,this.textarea,this.coreService,this.optionsService);this.register((0,i.addDisposableDomListener)(this.textarea,`paste`,e)),this.register((0,i.addDisposableDomListener)(this.element,`paste`,e)),T.isFirefox?this.register((0,i.addDisposableDomListener)(this.element,`mousedown`,(e=>{e.button===2&&(0,r.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))):this.register((0,i.addDisposableDomListener)(this.element,`contextmenu`,(e=>{(0,r.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))),T.isLinux&&this.register((0,i.addDisposableDomListener)(this.element,`auxclick`,(e=>{e.button===1&&(0,r.moveTextAreaUnderMouseCursor)(e,this.textarea,this.screenElement)})))}_bindKeys(){this.register((0,i.addDisposableDomListener)(this.textarea,`keyup`,(e=>this._keyUp(e)),!0)),this.register((0,i.addDisposableDomListener)(this.textarea,`keydown`,(e=>this._keyDown(e)),!0)),this.register((0,i.addDisposableDomListener)(this.textarea,`keypress`,(e=>this._keyPress(e)),!0)),this.register((0,i.addDisposableDomListener)(this.textarea,`compositionstart`,(()=>this._compositionHelper.compositionstart()))),this.register((0,i.addDisposableDomListener)(this.textarea,`compositionupdate`,(e=>this._compositionHelper.compositionupdate(e)))),this.register((0,i.addDisposableDomListener)(this.textarea,`compositionend`,(()=>this._compositionHelper.compositionend()))),this.register((0,i.addDisposableDomListener)(this.textarea,`input`,(e=>this._inputEvent(e)),!0)),this.register(this.onRender((()=>this._compositionHelper.updateCompositionElements())))}open(e){if(!e)throw Error(`Terminal requires a parent element.`);if(e.isConnected||this._logService.debug(`Terminal.open was called on an element that was not attached to the DOM`),this.element?.ownerDocument.defaultView&&this._coreBrowserService)return void(this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView));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._viewportScrollArea=this._document.createElement(`div`),this._viewportScrollArea.classList.add(`xterm-scroll-area`),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=this._document.createElement(`div`),this.screenElement.classList.add(`xterm-screen`),this.register((0,i.addDisposableDomListener)(this.screenElement,`mousemove`,(e=>this.updateCursorStyle(e)))),this._helperContainer=this._document.createElement(`div`),this._helperContainer.classList.add(`xterm-helpers`),this.screenElement.appendChild(this._helperContainer),t.appendChild(this.screenElement),this.textarea=this._document.createElement(`textarea`),this.textarea.classList.add(`xterm-helper-textarea`),this.textarea.setAttribute(`aria-label`,o.promptLabel),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._coreBrowserService=this.register(this._instantiationService.createInstance(h.CoreBrowserService,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<`u`?window.document:null)),this._instantiationService.setService(y.ICoreBrowserService,this._coreBrowserService),this.register((0,i.addDisposableDomListener)(this.textarea,`focus`,(e=>this._handleTextAreaFocus(e)))),this.register((0,i.addDisposableDomListener)(this.textarea,`blur`,(()=>this._handleTextAreaBlur()))),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(p.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(y.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(b.ThemeService),this._instantiationService.setService(y.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(m.CharacterJoinerService),this._instantiationService.setService(y.ICharacterJoinerService,this._characterJoinerService),this._renderService=this.register(this._instantiationService.createInstance(_.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(y.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange((e=>this._onRender.fire(e)))),this.onResize((e=>this._renderService.resize(e.cols,e.rows))),this._compositionView=this._document.createElement(`div`),this._compositionView.classList.add(`composition-view`),this._compositionHelper=this._instantiationService.createInstance(d.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(g.MouseService),this._instantiationService.setService(y.IMouseService,this._mouseService),this.linkifier=this.register(this._instantiationService.createInstance(a.Linkifier,this.screenElement)),this.element.appendChild(t);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this.viewport=this._instantiationService.createInstance(c.Viewport,this._viewportElement,this._viewportScrollArea),this.viewport.onRequestScrollLines((e=>this.scrollLines(e.amount,e.suppressScrollEvent,1))),this.register(this._inputHandler.onRequestSyncScrollBar((()=>this.viewport.syncScrollArea()))),this.register(this.viewport),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.register(this._renderService.onDimensionsChange((()=>this.viewport.syncScrollArea()))),this._selectionService=this.register(this._instantiationService.createInstance(v.SelectionService,this.element,this.screenElement,this.linkifier)),this._instantiationService.setService(y.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines((e=>this.scrollLines(e.amount,e.suppressScrollEvent)))),this.register(this._selectionService.onSelectionChange((()=>this._onSelectionChange.fire()))),this.register(this._selectionService.onRequestRedraw((e=>this._renderService.handleSelectionChanged(e.start,e.end,e.columnSelectMode)))),this.register(this._selectionService.onLinuxMouseSelection((e=>{this.textarea.value=e,this.textarea.focus(),this.textarea.select()}))),this.register(this._onScroll.event((e=>{this.viewport.syncScrollArea(),this._selectionService.refresh()}))),this.register((0,i.addDisposableDomListener)(this._viewportElement,`scroll`,(()=>this._selectionService.refresh()))),this.register(this._instantiationService.createInstance(l.BufferDecorationRenderer,this.screenElement)),this.register((0,i.addDisposableDomListener)(this.element,`mousedown`,(e=>this._selectionService.handleMouseDown(e)))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add(`enable-mouse-events`)):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(N.AccessibilityManager,this)),this.register(this.optionsService.onSpecificOptionChange(`screenReaderMode`,(e=>this._handleScreenReaderModeOptionChange(e)))),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(u.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange(`overviewRulerWidth`,(e=>{!this._overviewRulerRenderer&&e&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(u.OverviewRulerRenderer,this._viewportElement,this.screenElement)))})),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(f.DomRenderer,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,t=this.element;function n(t){let n=e._mouseService.getMouseReportCoords(t,e.screenElement);if(!n)return!1;let r,i;switch(t.overrideType||t.type){case`mousemove`:i=32,t.buttons===void 0?(r=3,t.button!==void 0&&(r=t.button<3?t.button:3)):r=1&t.buttons?0:4&t.buttons?1:2&t.buttons?2:3;break;case`mouseup`:i=0,r=t.button<3?t.button:3;break;case`mousedown`:i=1,r=t.button<3?t.button:3;break;case`wheel`:if(e._customWheelEventHandler&&!1===e._customWheelEventHandler(t)||e.viewport.getLinesScrolled(t)===0)return!1;i=t.deltaY<0?0:1,r=4;break;default:return!1}return!(i===void 0||r===void 0||r>4)&&e.coreMouseService.triggerMouseEvent({col:n.col,row:n.row,x:n.x,y:n.y,button:r,action:i,ctrl:t.ctrlKey,alt:t.altKey,shift:t.shiftKey})}let r={mouseup:null,wheel:null,mousedrag:null,mousemove:null},a={mouseup:e=>(n(e),e.buttons||(this._document.removeEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.removeEventListener(`mousemove`,r.mousedrag)),this.cancel(e)),wheel:e=>(n(e),this.cancel(e,!0)),mousedrag:e=>{e.buttons&&n(e)},mousemove:e=>{e.buttons||n(e)}};this.register(this.coreMouseService.onProtocolChange((e=>{e?(this.optionsService.rawOptions.logLevel===`debug`&&this._logService.debug(`Binding to mouse events:`,this.coreMouseService.explainEvents(e)),this.element.classList.add(`enable-mouse-events`),this._selectionService.disable()):(this._logService.debug(`Unbinding from mouse events.`),this.element.classList.remove(`enable-mouse-events`),this._selectionService.enable()),8&e?r.mousemove||=(t.addEventListener(`mousemove`,a.mousemove),a.mousemove):(t.removeEventListener(`mousemove`,r.mousemove),r.mousemove=null),16&e?r.wheel||=(t.addEventListener(`wheel`,a.wheel,{passive:!1}),a.wheel):(t.removeEventListener(`wheel`,r.wheel),r.wheel=null),2&e?r.mouseup||=a.mouseup:(this._document.removeEventListener(`mouseup`,r.mouseup),r.mouseup=null),4&e?r.mousedrag||=a.mousedrag:(this._document.removeEventListener(`mousemove`,r.mousedrag),r.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,i.addDisposableDomListener)(t,`mousedown`,(e=>{if(e.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(e))return n(e),r.mouseup&&this._document.addEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.addEventListener(`mousemove`,r.mousedrag),this.cancel(e)}))),this.register((0,i.addDisposableDomListener)(t,`wheel`,(e=>{if(!r.wheel){if(this._customWheelEventHandler&&!1===this._customWheelEventHandler(e))return!1;if(!this.buffer.hasScrollback){let t=this.viewport.getLinesScrolled(e);if(t===0)return;let n=D.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?`O`:`[`)+(e.deltaY<0?`A`:`B`),r=``;for(let e=0;e<Math.abs(t);e++)r+=n;return this.coreService.triggerDataEvent(r,!0),this.cancel(e,!0)}return this.viewport.handleWheel(e)?this.cancel(e):void 0}}),{passive:!1})),this.register((0,i.addDisposableDomListener)(t,`touchstart`,(e=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchStart(e),this.cancel(e)}),{passive:!0})),this.register((0,i.addDisposableDomListener)(t,`touchmove`,(e=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchMove(e)?void 0:this.cancel(e)}),{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,n=0){n===1?(super.scrollLines(e,t,n),this.refresh(0,this.rows-1)):this.viewport?.scrollLines(e)}paste(e){(0,r.paste)(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}attachCustomWheelEventHandler(e){this._customWheelEventHandler=e}registerLinkProvider(e){return this._linkProviderService.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);let t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(e,t,n){this._selectionService.setSelection(e,t,n)}getSelection(){return this._selectionService?this._selectionService.selectionText:``}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){this._selectionService?.clearSelection()}selectAll(){this._selectionService?.selectAll()}selectLines(e,t){this._selectionService?.selectLines(e,t)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))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(),!1;t||e.key!==`Dead`&&e.key!==`AltGraph`||(this._unprocessedDeadKey=!0);let n=(0,O.evaluateKeyboardEvent)(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),n.type===3||n.type===2){let t=this.rows-1;return this.scrollLines(n.type===2?-t:t),this.cancel(e,!0)}return n.type===1&&this.selectAll(),!!this._isThirdLevelShift(this.browser,e)||(n.cancel&&this.cancel(e,!0),!n.key||!!(e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.key.length===1&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(n.key!==D.C0.ETX&&n.key!==D.C0.CR||(this.textarea.value=``),this._onKey.fire({key:n.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(n.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey?this.cancel(e,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(e,t){let n=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState(`AltGraph`);return t.type===`keypress`?n:n&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return e.keyCode===16||e.keyCode===17||e.keyCode===18}(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let t;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))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)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)||(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){e!==this.cols||t!==this.rows?super.resize(e,t):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(e,t){this._charSizeService?.measure(),this.viewport?.syncScrollArea(!0)}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(E.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp,source:0}),this.viewport?.reset(),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.viewport?.reset(),this._customKeyEventHandler=e,this.refresh(0,this.rows-1)}clearTextureAtlas(){this._renderService?.clearTextureAtlas()}_reportFocus(){this.element?.classList.contains(`focus`)?this.coreService.triggerDataEvent(D.C0.ESC+`[I`):this.coreService.triggerDataEvent(D.C0.ESC+`[O`)}_reportWindowsOptions(e){if(this._renderService)switch(e){case M.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:let e=this._renderService.dimensions.css.canvas.width.toFixed(0),t=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${D.C0.ESC}[4;${t};${e}t`);break;case M.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:let n=this._renderService.dimensions.css.cell.width.toFixed(0),r=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${D.C0.ESC}[6;${r};${n}t`)}}cancel(e,t){if(this.options.cancelEvents||t)return e.preventDefault(),e.stopPropagation(),!1}}t.Terminal=F},9924:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TimeBasedDebouncer=void 0,t.TimeBasedDebouncer=class{constructor(e,t=1e3){this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(e,t,n){this._rowCount=n,e=e===void 0?0:e,t=t===void 0?this._rowCount-1:t,this._rowStart=this._rowStart===void 0?e:Math.min(this._rowStart,e),this._rowEnd=this._rowEnd===void 0?t:Math.max(this._rowEnd,t);let r=Date.now();if(r-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=r,this._innerRefresh();else if(!this._additionalRefreshRequested){let e=r-this._lastRefreshMs,t=this._debounceThresholdMS-e;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout((()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0}),t)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;let e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}}},1680:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Viewport=void 0;let a=n(3656),o=n(4725),s=n(8460),c=n(844),l=n(2585),u=t.Viewport=class extends c.Disposable{constructor(e,t,n,r,i,o,c,l){super(),this._viewportElement=e,this._scrollArea=t,this._bufferService=n,this._optionsService=r,this._charSizeService=i,this._renderService=o,this._coreBrowserService=c,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this._onRequestScrollLines=this.register(new s.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,a.addDisposableDomListener)(this._viewportElement,`scroll`,this._handleScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate((e=>this._activeBuffer=e.activeBuffer))),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange((e=>this._renderDimensions=e))),this._handleThemeChange(l.colors),this.register(l.onChangeColors((e=>this._handleThemeChange(e)))),this.register(this._optionsService.onSpecificOptionChange(`scrollback`,(()=>this.syncScrollArea()))),setTimeout((()=>this.syncScrollArea()))}_handleThemeChange(e){this._viewportElement.style.backgroundColor=e.background.css}reset(){this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._coreBrowserService.window.requestAnimationFrame((()=>this.syncScrollArea()))}_refresh(e){if(e)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>this._innerRefresh())))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderDimensions.device.cell.height/this._coreBrowserService.dpr,this._currentDeviceCellHeight=this._renderDimensions.device.cell.height,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;let e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderDimensions.css.canvas.height);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+`px`)}let e=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==e&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=e),this._refreshAnimationFrame=null}syncScrollArea(e=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.css.canvas.height&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.device.cell.height===this._currentDeviceCellHeight||this._refresh(e)}_handleScroll(e){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._onRequestScrollLines.fire({amount:0,suppressScrollEvent:!0});let t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._onRequestScrollLines.fire({amount:t,suppressScrollEvent:!0})}_smoothScroll(){if(this._isDisposed||this._smoothScrollState.origin===-1||this._smoothScrollState.target===-1)return;let e=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(e*(this._smoothScrollState.target-this._smoothScrollState.origin)),e<1?this._coreBrowserService.window.requestAnimationFrame((()=>this._smoothScroll())):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(e,t){let n=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&this._viewportElement.scrollTop!==0||t>0&&n<this._lastRecordedBufferHeight)||(e.cancelable&&e.preventDefault(),!1)}handleWheel(e){let t=this._getPixelsScrolled(e);return t!==0&&(this._optionsService.rawOptions.smoothScrollDuration?(this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target===-1?this._smoothScrollState.target=this._viewportElement.scrollTop+t:this._smoothScrollState.target+=t,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()):this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))}scrollLines(e){if(e!==0){if(this._optionsService.rawOptions.smoothScrollDuration){let t=e*this._currentRowHeight;this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target=this._smoothScrollState.origin+t,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()}else this._onRequestScrollLines.fire({amount:e,suppressScrollEvent:!1})}}_getPixelsScrolled(e){if(e.deltaY===0||e.shiftKey)return 0;let t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_LINE?t*=this._currentRowHeight:e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._currentRowHeight*this._bufferService.rows),t}getBufferElements(e,t){let n,r=``,i=[],a=t??this._bufferService.buffer.lines.length,o=this._bufferService.buffer.lines;for(let t=e;t<a;t++){let e=o.get(t);if(!e)continue;let a=o.get(t+1)?.isWrapped;if(r+=e.translateToString(!a),!a||t===o.length-1){let e=document.createElement(`div`);e.textContent=r,i.push(e),r.length>0&&(n=e),r=``}}return{bufferElements:i,cursorElement:n}}getLinesScrolled(e){if(e.deltaY===0||e.shiftKey)return 0;let t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(t/=this._currentRowHeight+0,this._wheelPartialScroll+=t,t=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t}_applyScrollModifier(e,t){let n=this._optionsService.rawOptions.fastScrollModifier;return n===`alt`&&t.altKey||n===`ctrl`&&t.ctrlKey||n===`shift`&&t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity}handleTouchStart(e){this._lastTouchY=e.touches[0].pageY}handleTouchMove(e){let t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,t!==0&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))}};t.Viewport=u=r([i(2,l.IBufferService),i(3,l.IOptionsService),i(4,o.ICharSizeService),i(5,o.IRenderService),i(6,o.ICoreBrowserService),i(7,o.IThemeService)],u)},3107:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferDecorationRenderer=void 0;let a=n(4725),o=n(844),s=n(2585),c=t.BufferDecorationRenderer=class extends o.Disposable{constructor(e,t,n,r,i){super(),this._screenElement=e,this._bufferService=t,this._coreBrowserService=n,this._decorationService=r,this._renderService=i,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement(`div`),this._container.classList.add(`xterm-decoration-container`),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange((()=>this._doRefreshDecorations()))),this.register(this._renderService.onDimensionsChange((()=>{this._dimensionsChanged=!0,this._queueRefresh()}))),this.register(this._coreBrowserService.onDprChange((()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt}))),this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh()))),this.register(this._decorationService.onDecorationRemoved((e=>this._removeDecoration(e)))),this.register((0,o.toDisposable)((()=>{this._container.remove(),this._decorationElements.clear()})))}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback((()=>{this._doRefreshDecorations(),this._animationFrame=void 0})))}_doRefreshDecorations(){for(let e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){let t=this._coreBrowserService.mainDocument.createElement(`div`);t.classList.add(`xterm-decoration`),t.classList.toggle(`xterm-decoration-top-layer`,e?.options?.layer===`top`),t.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,t.style.height=(e.options.height||1)*this._renderService.dimensions.css.cell.height+`px`,t.style.top=(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height+`px`,t.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;let n=e.options.x??0;return n&&n>this._bufferService.cols&&(t.style.display=`none`),this._refreshXPosition(e,t),t}_refreshStyle(e){let t=e.marker.line-this._bufferService.buffers.active.ydisp;if(t<0||t>=this._bufferService.rows)e.element&&(e.element.style.display=`none`,e.onRenderEmitter.fire(e.element));else{let n=this._decorationElements.get(e);n||(n=this._createElement(e),e.element=n,this._decorationElements.set(e,n),this._container.appendChild(n),e.onDispose((()=>{this._decorationElements.delete(e),n.remove()}))),n.style.top=t*this._renderService.dimensions.css.cell.height+`px`,n.style.display=this._altBufferIsActive?`none`:`block`,e.onRenderEmitter.fire(n)}}_refreshXPosition(e,t=e.element){if(!t)return;let n=e.options.x??0;(e.options.anchor||`left`)===`right`?t.style.right=n?n*this._renderService.dimensions.css.cell.width+`px`:``:t.style.left=n?n*this._renderService.dimensions.css.cell.width+`px`:``}_removeDecoration(e){this._decorationElements.get(e)?.remove(),this._decorationElements.delete(e),e.dispose()}};t.BufferDecorationRenderer=c=r([i(1,s.IBufferService),i(2,a.ICoreBrowserService),i(3,s.IDecorationService),i(4,a.IRenderService)],c)},5871:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorZoneStore=void 0,t.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(e){if(e.options.overviewRulerOptions){for(let t of this._zones)if(t.color===e.options.overviewRulerOptions.color&&t.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(t,e.marker.line))return;if(this._lineAdjacentToZone(t,e.marker.line,e.options.overviewRulerOptions.position))return void this._addLineToZone(t,e.marker.line)}if(this._zonePoolIndex<this._zonePool.length)return this._zonePool[this._zonePoolIndex].color=e.options.overviewRulerOptions.color,this._zonePool[this._zonePoolIndex].position=e.options.overviewRulerOptions.position,this._zonePool[this._zonePoolIndex].startBufferLine=e.marker.line,this._zonePool[this._zonePoolIndex].endBufferLine=e.marker.line,void this._zones.push(this._zonePool[this._zonePoolIndex++]);this._zones.push({color:e.options.overviewRulerOptions.color,position:e.options.overviewRulerOptions.position,startBufferLine:e.marker.line,endBufferLine:e.marker.line}),this._zonePool.push(this._zones[this._zones.length-1]),this._zonePoolIndex++}}setPadding(e){this._linePadding=e}_lineIntersectsZone(e,t){return t>=e.startBufferLine&&t<=e.endBufferLine}_lineAdjacentToZone(e,t,n){return t>=e.startBufferLine-this._linePadding[n||`full`]&&t<=e.endBufferLine+this._linePadding[n||`full`]}_addLineToZone(e,t){e.startBufferLine=Math.min(e.startBufferLine,t),e.endBufferLine=Math.max(e.endBufferLine,t)}}},5744:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OverviewRulerRenderer=void 0;let a=n(5871),o=n(4725),s=n(844),c=n(2585),l={full:0,left:0,center:0,right:0},u={full:0,left:0,center:0,right:0},d={full:0,left:0,center:0,right:0},f=t.OverviewRulerRenderer=class extends s.Disposable{get _width(){return this._optionsService.options.overviewRulerWidth||0}constructor(e,t,n,r,i,o,c){super(),this._viewportElement=e,this._screenElement=t,this._bufferService=n,this._decorationService=r,this._renderService=i,this._optionsService=o,this._coreBrowserService=c,this._colorZoneStore=new a.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`),this._canvas.classList.add(`xterm-decoration-overview-ruler`),this._refreshCanvasDimensions(),this._viewportElement.parentElement?.insertBefore(this._canvas,this._viewportElement);let l=this._canvas.getContext(`2d`);if(!l)throw Error(`Ctx cannot be null`);this._ctx=l,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners(),this.register((0,s.toDisposable)((()=>{this._canvas?.remove()})))}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh(void 0,!0)))),this.register(this._decorationService.onDecorationRemoved((()=>this._queueRefresh(void 0,!0))))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange((()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?`none`:`block`}))),this.register(this._bufferService.onScroll((()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())})))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender((()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)}))),this.register(this._optionsService.onSpecificOptionChange(`overviewRulerWidth`,(()=>this._queueRefresh(!0)))),this.register(this._coreBrowserService.onDprChange((()=>this._queueRefresh(!0)))),this._queueRefresh(!0)}_refreshDrawConstants(){let e=Math.floor(this._canvas.width/3),t=Math.ceil(this._canvas.width/3);u.full=this._canvas.width,u.left=e,u.center=t,u.right=e,this._refreshDrawHeightConstants(),d.full=0,d.left=0,d.center=u.left,d.right=u.left+u.center}_refreshDrawHeightConstants(){l.full=Math.round(2*this._coreBrowserService.dpr);let e=this._canvas.height/this._bufferService.buffer.lines.length,t=Math.round(Math.max(Math.min(e,12),6)*this._coreBrowserService.dpr);l.left=t,l.center=t,l.right=t}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowserService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowserService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(let e of this._decorationService.decorations)this._colorZoneStore.addDecoration(e);this._ctx.lineWidth=1;let e=this._colorZoneStore.zones;for(let t of e)t.position!==`full`&&this._renderColorZone(t);for(let t of e)t.position===`full`&&this._renderColorZone(t);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(d[e.position||`full`],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-l[e.position||`full`]/2),u[e.position||`full`],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+l[e.position||`full`]))}_queueRefresh(e,t){this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=t||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>{this._refreshDecorations(),this._animationFrame=void 0})))}};t.OverviewRulerRenderer=f=r([i(2,c.IBufferService),i(3,c.IDecorationService),i(4,o.IRenderService),i(5,c.IOptionsService),i(6,o.ICoreBrowserService)],f)},2950:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CompositionHelper=void 0;let a=n(4725),o=n(2585),s=n(2584),c=t.CompositionHelper=class{get isComposing(){return this._isComposing}constructor(e,t,n,r,i,a){this._textarea=e,this._compositionView=t,this._bufferService=n,this._optionsService=r,this._coreService=i,this._renderService=a,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=``}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent=``,this._dataAlreadySent=``,this._compositionView.classList.add(`active`)}compositionupdate(e){this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout((()=>{this._compositionPosition.end=this._textarea.value.length}),0)}compositionend(){this._finalizeComposition(!0)}keydown(e){if(this._isComposing||this._isSendingComposition){if(e.keyCode===229||e.keyCode===16||e.keyCode===17||e.keyCode===18)return!1;this._finalizeComposition(!1)}return e.keyCode!==229||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(e){if(this._compositionView.classList.remove(`active`),this._isComposing=!1,e){let e={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout((()=>{if(this._isSendingComposition){let t;this._isSendingComposition=!1,e.start+=this._dataAlreadySent.length,t=this._isComposing?this._textarea.value.substring(e.start,e.end):this._textarea.value.substring(e.start),t.length>0&&this._coreService.triggerDataEvent(t,!0)}}),0)}else{this._isSendingComposition=!1;let e=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(e,!0)}}_handleAnyTextareaChanges(){let e=this._textarea.value;setTimeout((()=>{if(!this._isComposing){let t=this._textarea.value,n=t.replace(e,``);this._dataAlreadySent=n,t.length>e.length?this._coreService.triggerDataEvent(n,!0):t.length<e.length?this._coreService.triggerDataEvent(`${s.C0.DEL}`,!0):t.length===e.length&&t!==e&&this._coreService.triggerDataEvent(t,!0)}}),0)}updateCompositionElements(e){if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){let e=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),t=this._renderService.dimensions.css.cell.height,n=this._bufferService.buffer.y*this._renderService.dimensions.css.cell.height,r=e*this._renderService.dimensions.css.cell.width;this._compositionView.style.left=r+`px`,this._compositionView.style.top=n+`px`,this._compositionView.style.height=t+`px`,this._compositionView.style.lineHeight=t+`px`,this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+`px`;let i=this._compositionView.getBoundingClientRect();this._textarea.style.left=r+`px`,this._textarea.style.top=n+`px`,this._textarea.style.width=Math.max(i.width,1)+`px`,this._textarea.style.height=Math.max(i.height,1)+`px`,this._textarea.style.lineHeight=i.height+`px`}e||setTimeout((()=>this.updateCompositionElements(!0)),0)}}};t.CompositionHelper=c=r([i(2,o.IBufferService),i(3,o.IOptionsService),i(4,o.ICoreService),i(5,a.IRenderService)],c)},9806:(e,t)=>{function n(e,t,n){let r=n.getBoundingClientRect(),i=e.getComputedStyle(n),a=parseInt(i.getPropertyValue(`padding-left`)),o=parseInt(i.getPropertyValue(`padding-top`));return[t.clientX-r.left-a,t.clientY-r.top-o]}Object.defineProperty(t,"__esModule",{value:!0}),t.getCoords=t.getCoordsRelativeToElement=void 0,t.getCoordsRelativeToElement=n,t.getCoords=function(e,t,r,i,a,o,s,c,l){if(!o)return;let u=n(e,t,r);return u?(u[0]=Math.ceil((u[0]+(l?s/2:0))/s),u[1]=Math.ceil(u[1]/c),u[0]=Math.min(Math.max(u[0],1),i+ +!!l),u[1]=Math.min(Math.max(u[1],1),a),u):void 0}},9504:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.moveToCellSequence=void 0;let r=n(2584);function i(e,t,n,r){let i=e-a(e,n),s=t-a(t,n);return l(Math.abs(i-s)-function(e,t,n){let r=0,i=e-a(e,n),s=t-a(t,n);for(let a=0;a<Math.abs(i-s);a++){let s=o(e,t)===`A`?-1:1;n.buffer.lines.get(i+s*a)?.isWrapped&&r++}return r}(e,t,n),c(o(e,t),r))}function a(e,t){let n=0,r=t.buffer.lines.get(e),i=r?.isWrapped;for(;i&&e>=0&&e<t.rows;)n++,r=t.buffer.lines.get(--e),i=r?.isWrapped;return n}function o(e,t){return e>t?`A`:`B`}function s(e,t,n,r,i,a){let o=e,s=t,c=``;for(;o!==n||s!==r;)o+=i?1:-1,i&&o>a.cols-1?(c+=a.buffer.translateBufferLineToString(s,!1,e,o),o=0,e=0,s++):!i&&o<0&&(c+=a.buffer.translateBufferLineToString(s,!1,0,e+1),o=a.cols-1,e=o,s--);return c+a.buffer.translateBufferLineToString(s,!1,e,o)}function c(e,t){let n=t?`O`:`[`;return r.C0.ESC+n+e}function l(e,t){e=Math.floor(e);let n=``;for(let r=0;r<e;r++)n+=t;return n}t.moveToCellSequence=function(e,t,n,r){let o=n.buffer.x,u=n.buffer.y;if(!n.buffer.hasScrollback)return function(e,t,n,r,o,u){return i(t,r,o,u).length===0?``:l(s(e,t,e,t-a(t,o),!1,o).length,c(`D`,u))}(o,u,0,t,n,r)+i(u,t,n,r)+function(e,t,n,r,o,u){let d;d=i(t,r,o,u).length>0?r-a(r,o):t;let f=r,p=function(e,t,n,r,o,s){let c;return c=i(n,r,o,s).length>0?r-a(r,o):t,e<n&&c<=r||e>=n&&c<r?`C`:`D`}(e,t,n,r,o,u);return l(s(e,d,n,f,p===`C`,o).length,c(p,u))}(o,u,e,t,n,r);let d;if(u===t)return d=o>e?`D`:`C`,l(Math.abs(o-e),c(d,r));d=u>t?`D`:`C`;let f=Math.abs(u-t);return l(function(e,t){return t.cols-e}(u>t?e:o,n)+(f-1)*n.cols+1+((u>t?o:e)-1),c(d,r))}},1296:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRenderer=void 0;let a=n(3787),o=n(2550),s=n(2223),c=n(6171),l=n(6052),u=n(4725),d=n(8055),f=n(8460),p=n(844),m=n(2585),h=`xterm-dom-renderer-owner-`,g=`xterm-rows`,_=`xterm-fg-`,v=`xterm-bg-`,y=`xterm-focus`,b=`xterm-selection`,x=1,S=t.DomRenderer=class extends p.Disposable{constructor(e,t,n,r,i,s,u,d,m,_,v,y,S){super(),this._terminal=e,this._document=t,this._element=n,this._screenElement=r,this._viewportElement=i,this._helperContainer=s,this._linkifier2=u,this._charSizeService=m,this._optionsService=_,this._bufferService=v,this._coreBrowserService=y,this._themeService=S,this._terminalClass=x++,this._rowElements=[],this._selectionRenderModel=(0,l.createSelectionRenderModel)(),this.onRequestRedraw=this.register(new f.EventEmitter).event,this._rowContainer=this._document.createElement(`div`),this._rowContainer.classList.add(g),this._rowContainer.style.lineHeight=`normal`,this._rowContainer.setAttribute(`aria-hidden`,`true`),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=this._document.createElement(`div`),this._selectionContainer.classList.add(b),this._selectionContainer.setAttribute(`aria-hidden`,`true`),this.dimensions=(0,c.createRenderDimensions)(),this._updateDimensions(),this.register(this._optionsService.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._themeService.onChangeColors((e=>this._injectCss(e)))),this._injectCss(this._themeService.colors),this._rowFactory=d.createInstance(a.DomRendererRowFactory,document),this._element.classList.add(h+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline((e=>this._handleLinkHover(e)))),this.register(this._linkifier2.onHideLinkUnderline((e=>this._handleLinkLeave(e)))),this.register((0,p.toDisposable)((()=>{this._element.classList.remove(h+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()}))),this._widthCache=new o.WidthCache(this._document,this._helperContainer),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){let e=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*e,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*e),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/e),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/e),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(let e of this._rowElements)e.style.width=`${this.dimensions.css.canvas.width}px`,e.style.height=`${this.dimensions.css.cell.height}px`,e.style.lineHeight=`${this.dimensions.css.cell.height}px`,e.style.overflow=`hidden`;this._dimensionsStyleElement||(this._dimensionsStyleElement=this._document.createElement(`style`),this._screenElement.appendChild(this._dimensionsStyleElement));let t=`${this._terminalSelector} .${g} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=t,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(e){this._themeStyleElement||(this._themeStyleElement=this._document.createElement(`style`),this._screenElement.appendChild(this._themeStyleElement));let t=`${this._terminalSelector} .${g} { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;t+=`${this._terminalSelector} .${g} .xterm-dim { color: ${d.color.multiplyOpacity(e.foreground,.5).css};}`,t+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;let n=`blink_underline_${this._terminalClass}`,r=`blink_bar_${this._terminalClass}`,i=`blink_block_${this._terminalClass}`;t+=`@keyframes ${n} { 50% { border-bottom-style: hidden; }}`,t+=`@keyframes ${r} { 50% { box-shadow: none; }}`,t+=`@keyframes ${i} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`,t+=`${this._terminalSelector} .${g}.${y} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${n} 1s step-end infinite;}${this._terminalSelector} .${g}.${y} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${g}.${y} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${i} 1s step-end infinite;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,t+=`${this._terminalSelector} .${b} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${b} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${b} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;for(let[n,r]of e.ansi.entries())t+=`${this._terminalSelector} .${_}${n} { color: ${r.css}; }${this._terminalSelector} .${_}${n}.xterm-dim { color: ${d.color.multiplyOpacity(r,.5).css}; }${this._terminalSelector} .${v}${n} { background-color: ${r.css}; }`;t+=`${this._terminalSelector} .${_}${s.INVERTED_DEFAULT_COLOR} { color: ${d.color.opaque(e.background).css}; }${this._terminalSelector} .${_}${s.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${d.color.multiplyOpacity(d.color.opaque(e.background),.5).css}; }${this._terminalSelector} .${v}${s.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`,this._themeStyleElement.textContent=t}_setDefaultSpacing(){let e=this.dimensions.css.cell.width-this._widthCache.get(`W`,!1,!1);this._rowContainer.style.letterSpacing=`${e}px`,this._rowFactory.defaultSpacing=e}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(e,t){for(let e=this._rowElements.length;e<=t;e++){let e=this._document.createElement(`div`);this._rowContainer.appendChild(e),this._rowElements.push(e)}for(;this._rowElements.length>t;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(e,t){this._refreshRowElements(e,t),this._updateDimensions(),this.handleSelectionChanged(this._selectionRenderModel.selectionStart,this._selectionRenderModel.selectionEnd,this._selectionRenderModel.columnSelectMode)}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(y),this.renderRows(0,this._bufferService.rows-1)}handleFocus(){this._rowContainer.classList.add(y),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(e,t,n){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(e,t,n),this.renderRows(0,this._bufferService.rows-1),!e||!t)return;this._selectionRenderModel.update(this._terminal,e,t,n);let r=this._selectionRenderModel.viewportStartRow,i=this._selectionRenderModel.viewportEndRow,a=this._selectionRenderModel.viewportCappedStartRow,o=this._selectionRenderModel.viewportCappedEndRow;if(a>=this._bufferService.rows||o<0)return;let s=this._document.createDocumentFragment();if(n){let n=e[0]>t[0];s.appendChild(this._createSelectionElement(a,n?t[0]:e[0],n?e[0]:t[0],o-a+1))}else{let n=r===a?e[0]:0,c=a===i?t[0]:this._bufferService.cols;s.appendChild(this._createSelectionElement(a,n,c));let l=o-a-1;if(s.appendChild(this._createSelectionElement(a+1,0,this._bufferService.cols,l)),a!==o){let e=i===o?t[0]:this._bufferService.cols;s.appendChild(this._createSelectionElement(o,0,e))}}this._selectionContainer.appendChild(s)}_createSelectionElement(e,t,n,r=1){let i=this._document.createElement(`div`),a=t*this.dimensions.css.cell.width,o=this.dimensions.css.cell.width*(n-t);return a+o>this.dimensions.css.canvas.width&&(o=this.dimensions.css.canvas.width-a),i.style.height=r*this.dimensions.css.cell.height+`px`,i.style.top=e*this.dimensions.css.cell.height+`px`,i.style.left=`${a}px`,i.style.width=`${o}px`,i}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(let e of this._rowElements)e.replaceChildren()}renderRows(e,t){let n=this._bufferService.buffer,r=n.ybase+n.y,i=Math.min(n.x,this._bufferService.cols-1),a=this._optionsService.rawOptions.cursorBlink,o=this._optionsService.rawOptions.cursorStyle,s=this._optionsService.rawOptions.cursorInactiveStyle;for(let c=e;c<=t;c++){let e=c+n.ydisp,t=this._rowElements[c],l=n.lines.get(e);if(!t||!l)break;t.replaceChildren(...this._rowFactory.createRow(l,e,e===r,o,s,i,a,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${h}${this._terminalClass}`}_handleLinkHover(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)}_handleLinkLeave(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)}_setCellUnderline(e,t,n,r,i,a){n<0&&(e=0),r<0&&(t=0);let o=this._bufferService.rows-1;n=Math.max(Math.min(n,o),0),r=Math.max(Math.min(r,o),0),i=Math.min(i,this._bufferService.cols);let s=this._bufferService.buffer,c=s.ybase+s.y,l=Math.min(s.x,i-1),u=this._optionsService.rawOptions.cursorBlink,d=this._optionsService.rawOptions.cursorStyle,f=this._optionsService.rawOptions.cursorInactiveStyle;for(let o=n;o<=r;++o){let p=o+s.ydisp,m=this._rowElements[o],h=s.lines.get(p);if(!m||!h)break;m.replaceChildren(...this._rowFactory.createRow(h,p,p===c,d,f,l,u,this.dimensions.css.cell.width,this._widthCache,a?o===n?e:0:-1,a?(o===r?t:i)-1:-1))}}};t.DomRenderer=S=r([i(7,m.IInstantiationService),i(8,u.ICharSizeService),i(9,m.IOptionsService),i(10,m.IBufferService),i(11,u.ICoreBrowserService),i(12,u.IThemeService)],S)},3787:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRendererRowFactory=void 0;let a=n(2223),o=n(643),s=n(511),c=n(2585),l=n(8055),u=n(4725),d=n(4269),f=n(6171),p=n(3734),m=t.DomRendererRowFactory=class{constructor(e,t,n,r,i,a,o){this._document=e,this._characterJoinerService=t,this._optionsService=n,this._coreBrowserService=r,this._coreService=i,this._decorationService=a,this._themeService=o,this._workCell=new s.CellData,this._columnSelectMode=!1,this.defaultSpacing=0}handleSelectionChanged(e,t,n){this._selectionStart=e,this._selectionEnd=t,this._columnSelectMode=n}createRow(e,t,n,r,i,s,c,u,f,m,g){let _=[],v=this._characterJoinerService.getJoinedCharacters(t),y=this._themeService.colors,b,x=e.getNoBgTrimmedLength();n&&x<s+1&&(x=s+1);let S=0,C=``,w=0,T=0,E=0,D=!1,O=0,k=!1,A=0,j=[],M=m!==-1&&g!==-1;for(let N=0;N<x;N++){e.loadCell(N,this._workCell);let x=this._workCell.getWidth();if(x===0)continue;let P=!1,F=N,I=this._workCell;if(v.length>0&&N===v[0][0]){P=!0;let t=v.shift();I=new d.JoinedCellData(this._workCell,e.translateToString(!0,t[0],t[1]),t[1]-t[0]),F=t[1]-1,x=I.getWidth()}let L=this._isCellInSelection(N,t),R=n&&N===s,z=M&&N>=m&&N<=g,B=!1;this._decorationService.forEachDecorationAtCell(N,t,void 0,(e=>{B=!0}));let V=I.getChars()||o.WHITESPACE_CELL_CHAR;if(V===` `&&(I.isUnderline()||I.isOverline())&&(V=`\xA0`),A=x*u-f.get(V,I.isBold(),I.isItalic()),b){if(S&&(L&&k||!L&&!k&&I.bg===w)&&(L&&k&&y.selectionForeground||I.fg===T)&&I.extended.ext===E&&z===D&&A===O&&!R&&!P&&!B){I.isInvisible()?C+=o.WHITESPACE_CELL_CHAR:C+=V,S++;continue}S&&(b.textContent=C),b=this._document.createElement(`span`),S=0,C=``}else b=this._document.createElement(`span`);if(w=I.bg,T=I.fg,E=I.extended.ext,D=z,O=A,k=L,P&&s>=N&&s<=F&&(s=N),!this._coreService.isCursorHidden&&R&&this._coreService.isCursorInitialized){if(j.push(`xterm-cursor`),this._coreBrowserService.isFocused)c&&j.push(`xterm-cursor-blink`),j.push(r===`bar`?`xterm-cursor-bar`:r===`underline`?`xterm-cursor-underline`:`xterm-cursor-block`);else if(i)switch(i){case`outline`:j.push(`xterm-cursor-outline`);break;case`block`:j.push(`xterm-cursor-block`);break;case`bar`:j.push(`xterm-cursor-bar`);break;case`underline`:j.push(`xterm-cursor-underline`)}}if(I.isBold()&&j.push(`xterm-bold`),I.isItalic()&&j.push(`xterm-italic`),I.isDim()&&j.push(`xterm-dim`),C=I.isInvisible()?o.WHITESPACE_CELL_CHAR:I.getChars()||o.WHITESPACE_CELL_CHAR,I.isUnderline()&&(j.push(`xterm-underline-${I.extended.underlineStyle}`),C===` `&&(C=`\xA0`),!I.isUnderlineColorDefault())){if(I.isUnderlineColorRGB())b.style.textDecorationColor=`rgb(${p.AttributeData.toColorRGB(I.getUnderlineColor()).join(`,`)})`;else{let e=I.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&I.isBold()&&e<8&&(e+=8),b.style.textDecorationColor=y.ansi[e].css}}I.isOverline()&&(j.push(`xterm-overline`),C===` `&&(C=`\xA0`)),I.isStrikethrough()&&j.push(`xterm-strikethrough`),z&&(b.style.textDecoration=`underline`);let H=I.getFgColor(),U=I.getFgColorMode(),W=I.getBgColor(),G=I.getBgColorMode(),K=!!I.isInverse();if(K){let e=H;H=W,W=e;let t=U;U=G,G=t}let q,J,Y,X=!1;switch(this._decorationService.forEachDecorationAtCell(N,t,void 0,(e=>{e.options.layer!==`top`&&X||(e.backgroundColorRGB&&(G=50331648,W=e.backgroundColorRGB.rgba>>8&16777215,q=e.backgroundColorRGB),e.foregroundColorRGB&&(U=50331648,H=e.foregroundColorRGB.rgba>>8&16777215,J=e.foregroundColorRGB),X=e.options.layer===`top`)})),!X&&L&&(q=this._coreBrowserService.isFocused?y.selectionBackgroundOpaque:y.selectionInactiveBackgroundOpaque,W=q.rgba>>8&16777215,G=50331648,X=!0,y.selectionForeground&&(U=50331648,H=y.selectionForeground.rgba>>8&16777215,J=y.selectionForeground)),X&&j.push(`xterm-decoration-top`),G){case 16777216:case 33554432:Y=y.ansi[W],j.push(`xterm-bg-${W}`);break;case 50331648:Y=l.channels.toColor(W>>16,W>>8&255,255&W),this._addStyle(b,`background-color:#${h((W>>>0).toString(16),`0`,6)}`);break;default:K?(Y=y.foreground,j.push(`xterm-bg-${a.INVERTED_DEFAULT_COLOR}`)):Y=y.background}switch(q||I.isDim()&&(q=l.color.multiplyOpacity(Y,.5)),U){case 16777216:case 33554432:I.isBold()&&H<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(H+=8),this._applyMinimumContrast(b,Y,y.ansi[H],I,q,void 0)||j.push(`xterm-fg-${H}`);break;case 50331648:let e=l.channels.toColor(H>>16&255,H>>8&255,255&H);this._applyMinimumContrast(b,Y,e,I,q,J)||this._addStyle(b,`color:#${h(H.toString(16),`0`,6)}`);break;default:this._applyMinimumContrast(b,Y,y.foreground,I,q,J)||K&&j.push(`xterm-fg-${a.INVERTED_DEFAULT_COLOR}`)}j.length&&=(b.className=j.join(` `),0),R||P||B?b.textContent=C:S++,A!==this.defaultSpacing&&(b.style.letterSpacing=`${A}px`),_.push(b),N=F}return b&&S&&(b.textContent=C),_}_applyMinimumContrast(e,t,n,r,i,a){if(this._optionsService.rawOptions.minimumContrastRatio===1||(0,f.treatGlyphAsBackgroundColor)(r.getCode()))return!1;let o=this._getContrastCache(r),s;if(i||a||(s=o.getColor(t.rgba,n.rgba)),s===void 0){let e=this._optionsService.rawOptions.minimumContrastRatio/(r.isDim()?2:1);s=l.color.ensureContrastRatio(i||t,a||n,e),o.setColor((i||t).rgba,(a||n).rgba,s??null)}return!!s&&(this._addStyle(e,`color:${s.css}`),!0)}_getContrastCache(e){return e.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(e,t){e.setAttribute(`style`,`${e.getAttribute(`style`)||``}${t};`)}_isCellInSelection(e,t){let n=this._selectionStart,r=this._selectionEnd;return!(!n||!r)&&(this._columnSelectMode?n[0]<=r[0]?e>=n[0]&&t>=n[1]&&e<r[0]&&t<=r[1]:e<n[0]&&t>=n[1]&&e>=r[0]&&t<=r[1]:t>n[1]&&t<r[1]||n[1]===r[1]&&t===n[1]&&e>=n[0]&&e<r[0]||n[1]<r[1]&&t===r[1]&&e<r[0]||n[1]<r[1]&&t===n[1]&&e>=n[0])}};function h(e,t,n){for(;e.length<n;)e=t+e;return e}t.DomRendererRowFactory=m=r([i(1,u.ICharacterJoinerService),i(2,c.IOptionsService),i(3,u.ICoreBrowserService),i(4,c.ICoreService),i(5,c.IDecorationService),i(6,u.IThemeService)],m)},2550:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WidthCache=void 0,t.WidthCache=class{constructor(e,t){this._flat=new Float32Array(256),this._font=``,this._fontSize=0,this._weight=`normal`,this._weightBold=`bold`,this._measureElements=[],this._container=e.createElement(`div`),this._container.classList.add(`xterm-width-cache-measure-container`),this._container.setAttribute(`aria-hidden`,`true`),this._container.style.whiteSpace=`pre`,this._container.style.fontKerning=`none`;let n=e.createElement(`span`);n.classList.add(`xterm-char-measure-element`);let r=e.createElement(`span`);r.classList.add(`xterm-char-measure-element`),r.style.fontWeight=`bold`;let i=e.createElement(`span`);i.classList.add(`xterm-char-measure-element`),i.style.fontStyle=`italic`;let a=e.createElement(`span`);a.classList.add(`xterm-char-measure-element`),a.style.fontWeight=`bold`,a.style.fontStyle=`italic`,this._measureElements=[n,r,i,a],this._container.appendChild(n),this._container.appendChild(r),this._container.appendChild(i),this._container.appendChild(a),t.appendChild(this._container),this.clear()}dispose(){this._container.remove(),this._measureElements.length=0,this._holey=void 0}clear(){this._flat.fill(-9999),this._holey=new Map}setFont(e,t,n,r){e===this._font&&t===this._fontSize&&n===this._weight&&r===this._weightBold||(this._font=e,this._fontSize=t,this._weight=n,this._weightBold=r,this._container.style.fontFamily=this._font,this._container.style.fontSize=`${this._fontSize}px`,this._measureElements[0].style.fontWeight=`${n}`,this._measureElements[1].style.fontWeight=`${r}`,this._measureElements[2].style.fontWeight=`${n}`,this._measureElements[3].style.fontWeight=`${r}`,this.clear())}get(e,t,n){let r=0;if(!t&&!n&&e.length===1&&(r=e.charCodeAt(0))<256){if(this._flat[r]!==-9999)return this._flat[r];let t=this._measure(e,0);return t>0&&(this._flat[r]=t),t}let i=e;t&&(i+=`B`),n&&(i+=`I`);let a=this._holey.get(i);if(a===void 0){let r=0;t&&(r|=1),n&&(r|=2),a=this._measure(e,r),a>0&&this._holey.set(i,a)}return a}_measure(e,t){let n=this._measureElements[t];return n.textContent=e.repeat(32),n.offsetWidth/32}}},2223:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TEXT_BASELINE=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0;let r=n(6114);t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.TEXT_BASELINE=r.isFirefox||r.isLegacyEdge?`bottom`:`ideographic`},6171:(e,t)=>{function n(e){return 57508<=e&&e<=57558}function r(e){return e>=128512&&e<=128591||e>=127744&&e<=128511||e>=128640&&e<=128767||e>=9728&&e<=9983||e>=9984&&e<=10175||e>=65024&&e<=65039||e>=129280&&e<=129535||e>=127462&&e<=127487}Object.defineProperty(t,"__esModule",{value:!0}),t.computeNextVariantOffset=t.createRenderDimensions=t.treatGlyphAsBackgroundColor=t.allowRescaling=t.isEmoji=t.isRestrictedPowerlineGlyph=t.isPowerlineGlyph=t.throwIfFalsy=void 0,t.throwIfFalsy=function(e){if(!e)throw Error(`value must not be falsy`);return e},t.isPowerlineGlyph=n,t.isRestrictedPowerlineGlyph=function(e){return 57520<=e&&e<=57527},t.isEmoji=r,t.allowRescaling=function(e,t,i,a){return t===1&&i>Math.ceil(1.5*a)&&e!==void 0&&e>255&&!r(e)&&!n(e)&&!function(e){return 57344<=e&&e<=63743}(e)},t.treatGlyphAsBackgroundColor=function(e){return n(e)||function(e){return 9472<=e&&e<=9631}(e)},t.createRenderDimensions=function(){return{css:{canvas:{width:0,height:0},cell:{width:0,height:0}},device:{canvas:{width:0,height:0},cell:{width:0,height:0},char:{width:0,height:0,left:0,top:0}}}},t.computeNextVariantOffset=function(e,t,n=0){return(e-(2*Math.round(t)-n))%(2*Math.round(t))}},6052:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createSelectionRenderModel=void 0;class n{constructor(){this.clear()}clear(){this.hasSelection=!1,this.columnSelectMode=!1,this.viewportStartRow=0,this.viewportEndRow=0,this.viewportCappedStartRow=0,this.viewportCappedEndRow=0,this.startCol=0,this.endCol=0,this.selectionStart=void 0,this.selectionEnd=void 0}update(e,t,n,r=!1){if(this.selectionStart=t,this.selectionEnd=n,!t||!n||t[0]===n[0]&&t[1]===n[1])return void this.clear();let i=e.buffers.active.ydisp,a=t[1]-i,o=n[1]-i,s=Math.max(a,0),c=Math.min(o,e.rows-1);s>=e.rows||c<0?this.clear():(this.hasSelection=!0,this.columnSelectMode=r,this.viewportStartRow=a,this.viewportEndRow=o,this.viewportCappedStartRow=s,this.viewportCappedEndRow=c,this.startCol=t[0],this.endCol=n[0])}isCellSelected(e,t,n){return!!this.hasSelection&&(n-=e.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?t>=this.startCol&&n>=this.viewportCappedStartRow&&t<this.endCol&&n<=this.viewportCappedEndRow:t<this.startCol&&n>=this.viewportCappedStartRow&&t>=this.endCol&&n<=this.viewportCappedEndRow:n>this.viewportStartRow&&n<this.viewportEndRow||this.viewportStartRow===this.viewportEndRow&&n===this.viewportStartRow&&t>=this.startCol&&t<this.endCol||this.viewportStartRow<this.viewportEndRow&&n===this.viewportEndRow&&t<this.endCol||this.viewportStartRow<this.viewportEndRow&&n===this.viewportStartRow&&t>=this.startCol)}}t.createSelectionRenderModel=function(){return new n}},456:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionModel=void 0,t.SelectionModel=class{constructor(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){let e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?e%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)-1]:[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){let e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[Math.max(e,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){let e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])}handleTrim(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharSizeService=void 0;let a=n(2585),o=n(8460),s=n(844),c=t.CharSizeService=class extends s.Disposable{get hasValidSize(){return this.width>0&&this.height>0}constructor(e,t,n){super(),this._optionsService=n,this.width=0,this.height=0,this._onCharSizeChange=this.register(new o.EventEmitter),this.onCharSizeChange=this._onCharSizeChange.event;try{this._measureStrategy=this.register(new d(this._optionsService))}catch{this._measureStrategy=this.register(new u(e,t,this._optionsService))}this.register(this._optionsService.onMultipleOptionChange([`fontFamily`,`fontSize`],(()=>this.measure())))}measure(){let e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())}};t.CharSizeService=c=r([i(2,a.IOptionsService)],c);class l extends s.Disposable{constructor(){super(...arguments),this._result={width:0,height:0}}_validateAndSet(e,t){e!==void 0&&e>0&&t!==void 0&&t>0&&(this._result.width=e,this._result.height=t)}}class u extends l{constructor(e,t,n){super(),this._document=e,this._parentElement=t,this._optionsService=n,this._measureElement=this._document.createElement(`span`),this._measureElement.classList.add(`xterm-char-measure-element`),this._measureElement.textContent=`W`.repeat(32),this._measureElement.setAttribute(`aria-hidden`,`true`),this._measureElement.style.whiteSpace=`pre`,this._measureElement.style.fontKerning=`none`,this._parentElement.appendChild(this._measureElement)}measure(){return this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`,this._validateAndSet(Number(this._measureElement.offsetWidth)/32,Number(this._measureElement.offsetHeight)),this._result}}class d extends l{constructor(e){super(),this._optionsService=e,this._canvas=new OffscreenCanvas(100,100),this._ctx=this._canvas.getContext(`2d`);let t=this._ctx.measureText(`W`);if(!(`width`in t&&`fontBoundingBoxAscent`in t&&`fontBoundingBoxDescent`in t))throw Error(`Required font metrics not supported`)}measure(){this._ctx.font=`${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;let e=this._ctx.measureText(`W`);return this._validateAndSet(e.width,e.fontBoundingBoxAscent+e.fontBoundingBoxDescent),this._result}}},4269:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterJoinerService=t.JoinedCellData=void 0;let a=n(3734),o=n(643),s=n(511),c=n(2585);class l extends a.AttributeData{constructor(e,t,n){super(),this.content=0,this.combinedData=``,this.fg=e.fg,this.bg=e.bg,this.combinedData=t,this._width=n}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(e){throw Error(`not implemented`)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}t.JoinedCellData=l;let u=t.CharacterJoinerService=class e{constructor(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new s.CellData}register(e){let t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id}deregister(e){for(let t=0;t<this._characterJoiners.length;t++)if(this._characterJoiners[t].id===e)return this._characterJoiners.splice(t,1),!0;return!1}getJoinedCharacters(e){if(this._characterJoiners.length===0)return[];let t=this._bufferService.buffer.lines.get(e);if(!t||t.length===0)return[];let n=[],r=t.translateToString(!0),i=0,a=0,s=0,c=t.getFg(0),l=t.getBg(0);for(let e=0;e<t.getTrimmedLength();e++)if(t.loadCell(e,this._workCell),this._workCell.getWidth()!==0){if(this._workCell.fg!==c||this._workCell.bg!==l){if(e-i>1){let e=this._getJoinedRanges(r,s,a,t,i);for(let t=0;t<e.length;t++)n.push(e[t])}i=e,s=a,c=this._workCell.fg,l=this._workCell.bg}a+=this._workCell.getChars().length||o.WHITESPACE_CELL_CHAR.length}if(this._bufferService.cols-i>1){let e=this._getJoinedRanges(r,s,a,t,i);for(let t=0;t<e.length;t++)n.push(e[t])}return n}_getJoinedRanges(t,n,r,i,a){let o=t.substring(n,r),s=[];try{s=this._characterJoiners[0].handler(o)}catch(e){console.error(e)}for(let t=1;t<this._characterJoiners.length;t++)try{let n=this._characterJoiners[t].handler(o);for(let t=0;t<n.length;t++)e._mergeRanges(s,n[t])}catch(e){console.error(e)}return this._stringRangesToCellRanges(s,i,a),s}_stringRangesToCellRanges(e,t,n){let r=0,i=!1,a=0,s=e[r];if(s){for(let c=n;c<this._bufferService.cols;c++){let n=t.getWidth(c),l=t.getString(c).length||o.WHITESPACE_CELL_CHAR.length;if(n!==0){if(!i&&s[0]<=a&&(s[0]=c,i=!0),s[1]<=a){if(s[1]=c,s=e[++r],!s)break;s[0]<=a?(s[0]=c,i=!0):i=!1}a+=l}}s&&(s[1]=this._bufferService.cols)}}static _mergeRanges(e,t){let n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(t[1]<=i[0])return e[r-1][1]=t[1],e;if(t[1]<=i[1])return e[r-1][1]=Math.max(t[1],i[1]),e.splice(r,1),e;e.splice(r,1),r--}else{if(t[1]<=i[0])return e.splice(r,0,t),e;if(t[1]<=i[1])return i[0]=Math.min(t[0],i[0]),e;t[0]<i[1]&&(i[0]=Math.min(t[0],i[0]),n=!0)}}return n?e[e.length-1][1]=t[1]:e.push(t),e}};t.CharacterJoinerService=u=r([i(0,c.IBufferService)],u)},5114:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserService=void 0;let r=n(844),i=n(8460),a=n(3656);class o extends r.Disposable{constructor(e,t,n){super(),this._textarea=e,this._window=t,this.mainDocument=n,this._isFocused=!1,this._cachedIsFocused=void 0,this._screenDprMonitor=new s(this._window),this._onDprChange=this.register(new i.EventEmitter),this.onDprChange=this._onDprChange.event,this._onWindowChange=this.register(new i.EventEmitter),this.onWindowChange=this._onWindowChange.event,this.register(this.onWindowChange((e=>this._screenDprMonitor.setWindow(e)))),this.register((0,i.forwardEvent)(this._screenDprMonitor.onDprChange,this._onDprChange)),this._textarea.addEventListener(`focus`,(()=>this._isFocused=!0)),this._textarea.addEventListener(`blur`,(()=>this._isFocused=!1))}get window(){return this._window}set window(e){this._window!==e&&(this._window=e,this._onWindowChange.fire(this._window))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return this._cachedIsFocused===void 0&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask((()=>this._cachedIsFocused=void 0))),this._cachedIsFocused}}t.CoreBrowserService=o;class s extends r.Disposable{constructor(e){super(),this._parentWindow=e,this._windowResizeListener=this.register(new r.MutableDisposable),this._onDprChange=this.register(new i.EventEmitter),this.onDprChange=this._onDprChange.event,this._outerListener=()=>this._setDprAndFireIfDiffers(),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._updateDpr(),this._setWindowResizeListener(),this.register((0,r.toDisposable)((()=>this.clearListener())))}setWindow(e){this._parentWindow=e,this._setWindowResizeListener(),this._setDprAndFireIfDiffers()}_setWindowResizeListener(){this._windowResizeListener.value=(0,a.addDisposableDomListener)(this._parentWindow,`resize`,(()=>this._setDprAndFireIfDiffers()))}_setDprAndFireIfDiffers(){this._parentWindow.devicePixelRatio!==this._currentDevicePixelRatio&&this._onDprChange.fire(this._parentWindow.devicePixelRatio),this._updateDpr()}_updateDpr(){this._outerListener&&(this._resolutionMediaMatchList?.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._outerListener=void 0)}}},779:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkProviderService=void 0;let r=n(844);class i extends r.Disposable{constructor(){super(),this.linkProviders=[],this.register((0,r.toDisposable)((()=>this.linkProviders.length=0)))}registerLinkProvider(e){return this.linkProviders.push(e),{dispose:()=>{let t=this.linkProviders.indexOf(e);t!==-1&&this.linkProviders.splice(t,1)}}}}t.LinkProviderService=i},8934:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseService=void 0;let a=n(4725),o=n(9806),s=t.MouseService=class{constructor(e,t){this._renderService=e,this._charSizeService=t}getCoords(e,t,n,r,i){return(0,o.getCoords)(window,e,t,n,r,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,i)}getMouseReportCoords(e,t){let n=(0,o.getCoordsRelativeToElement)(window,e,t);if(this._charSizeService.hasValidSize)return n[0]=Math.min(Math.max(n[0],0),this._renderService.dimensions.css.canvas.width-1),n[1]=Math.min(Math.max(n[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(n[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(n[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(n[0]),y:Math.floor(n[1])}}};t.MouseService=s=r([i(0,a.IRenderService),i(1,a.ICharSizeService)],s)},3230:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderService=void 0;let a=n(6193),o=n(4725),s=n(8460),c=n(844),l=n(7226),u=n(2585),d=t.RenderService=class extends c.Disposable{get dimensions(){return this._renderer.value.dimensions}constructor(e,t,n,r,i,o,u,d){super(),this._rowCount=e,this._charSizeService=r,this._renderer=this.register(new c.MutableDisposable),this._pausedResizeTask=new l.DebouncedIdleTask,this._observerDisposable=this.register(new c.MutableDisposable),this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this.register(new s.EventEmitter),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this.register(new s.EventEmitter),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this.register(new s.EventEmitter),this.onRender=this._onRender.event,this._onRefreshRequest=this.register(new s.EventEmitter),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new a.RenderDebouncer(((e,t)=>this._renderRows(e,t)),u),this.register(this._renderDebouncer),this.register(u.onDprChange((()=>this.handleDevicePixelRatioChange()))),this.register(o.onResize((()=>this._fullRefresh()))),this.register(o.buffers.onBufferActivate((()=>this._renderer.value?.clear()))),this.register(n.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._charSizeService.onCharSizeChange((()=>this.handleCharSizeChanged()))),this.register(i.onDecorationRegistered((()=>this._fullRefresh()))),this.register(i.onDecorationRemoved((()=>this._fullRefresh()))),this.register(n.onMultipleOptionChange([`customGlyphs`,`drawBoldTextInBrightColors`,`letterSpacing`,`lineHeight`,`fontFamily`,`fontSize`,`fontWeight`,`fontWeightBold`,`minimumContrastRatio`,`rescaleOverlappingGlyphs`],(()=>{this.clear(),this.handleResize(o.cols,o.rows),this._fullRefresh()}))),this.register(n.onMultipleOptionChange([`cursorBlink`,`cursorStyle`],(()=>this.refreshRows(o.buffer.y,o.buffer.y,!0)))),this.register(d.onChangeColors((()=>this._fullRefresh()))),this._registerIntersectionObserver(u.window,t),this.register(u.onWindowChange((e=>this._registerIntersectionObserver(e,t))))}_registerIntersectionObserver(e,t){if(`IntersectionObserver`in e){let n=new e.IntersectionObserver((e=>this._handleIntersectionChange(e[e.length-1])),{threshold:0});n.observe(t),this._observerDisposable.value=(0,c.toDisposable)((()=>n.disconnect()))}}_handleIntersectionChange(e){this._isPaused=e.isIntersecting===void 0?e.intersectionRatio===0:!e.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(e,t,n=!1){this._isPaused?this._needsFullRefresh=!0:(n||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,t,this._rowCount))}_renderRows(e,t){this._renderer.value&&(e=Math.min(e,this._rowCount-1),t=Math.min(t,this._rowCount-1),this._renderer.value.renderRows(e,t),this._needsSelectionRefresh&&=(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:t}),this._onRender.fire({start:e,end:t}),this._isNextRenderRedrawOnly=!0)}resize(e,t){this._rowCount=t,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(e){this._renderer.value=e,this._renderer.value&&(this._renderer.value.onRequestRedraw((e=>this.refreshRows(e.start,e.end,!0))),this._needsSelectionRefresh=!0,this._fullRefresh())}addRefreshCallback(e){return this._renderDebouncer.addRefreshCallback(e)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){this._renderer.value&&(this._renderer.value.clearTextureAtlas?.(),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(e,t){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set((()=>this._renderer.value?.handleResize(e,t))):this._renderer.value.handleResize(e,t),this._fullRefresh())}handleCharSizeChanged(){this._renderer.value?.handleCharSizeChanged()}handleBlur(){this._renderer.value?.handleBlur()}handleFocus(){this._renderer.value?.handleFocus()}handleSelectionChanged(e,t,n){this._selectionState.start=e,this._selectionState.end=t,this._selectionState.columnSelectMode=n,this._renderer.value?.handleSelectionChanged(e,t,n)}handleCursorMove(){this._renderer.value?.handleCursorMove()}clear(){this._renderer.value?.clear()}};t.RenderService=d=r([i(2,u.IOptionsService),i(3,o.ICharSizeService),i(4,u.IDecorationService),i(5,u.IBufferService),i(6,o.ICoreBrowserService),i(7,o.IThemeService)],d)},9312:function(e,t,n){var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o},i=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionService=void 0;let a=n(9806),o=n(9504),s=n(456),c=n(4725),l=n(8460),u=n(844),d=n(6114),f=n(4841),p=n(511),m=n(2585),h=RegExp(`\xA0`,`g`),g=t.SelectionService=class extends u.Disposable{constructor(e,t,n,r,i,a,o,c,d){super(),this._element=e,this._screenElement=t,this._linkifier=n,this._bufferService=r,this._coreService=i,this._mouseService=a,this._optionsService=o,this._renderService=c,this._coreBrowserService=d,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new p.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new l.EventEmitter),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this.register(new l.EventEmitter),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this.register(new l.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this.register(new l.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=e=>this._handleMouseMove(e),this._mouseUpListener=e=>this._handleMouseUp(e),this._coreService.onUserInput((()=>{this.hasSelection&&this.clearSelection()})),this._trimListener=this._bufferService.buffer.lines.onTrim((e=>this._handleTrim(e))),this.register(this._bufferService.buffers.onBufferActivate((e=>this._handleBufferActivate(e)))),this.enable(),this._model=new s.SelectionModel(this._bufferService),this._activeSelectionMode=0,this.register((0,u.toDisposable)((()=>{this._removeMouseDownListeners()})))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){let e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t||e[0]===t[0]&&e[1]===t[1])}get selectionText(){let e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return``;let n=this._bufferService.buffer,r=[];if(this._activeSelectionMode===3){if(e[0]===t[0])return``;let i=e[0]<t[0]?e[0]:t[0],a=e[0]<t[0]?t[0]:e[0];for(let o=e[1];o<=t[1];o++){let e=n.translateBufferLineToString(o,!0,i,a);r.push(e)}}else{let i=e[1]===t[1]?t[0]:void 0;r.push(n.translateBufferLineToString(e[1],!0,e[0],i));for(let i=e[1]+1;i<=t[1]-1;i++){let e=n.lines.get(i),t=n.translateBufferLineToString(i,!0);e?.isWrapped?r[r.length-1]+=t:r.push(t)}if(e[1]!==t[1]){let e=n.lines.get(t[1]),i=n.translateBufferLineToString(t[1],!0,0,t[0]);e&&e.isWrapped?r[r.length-1]+=i:r.push(i)}}return r.map((e=>e.replace(h,` `))).join(d.isWindows?`\r
4
4
  `:`
@@ -1,4 +1,4 @@
1
- import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{$ as a,D as o,I as s,O as c,Q as l,at as u,et as d,ft as f,it as p,n as m,nt as h,ot as g,p as _,rt as v,st as y,t as b,tt as x,yt as S}from"./Badge-DUGKlx3Z.js";import{t as C}from"./arrow-up-DjhzZprp.js";import{t as w}from"./Callout-WgXHDPg0.js";import{n as T,t as E}from"./task-errors-r-WYZ_S3.js";import{t as D}from"./trash-BTuDcSaQ.js";import{A as O,C as k,E as A,L as j,O as M,_ as N,f as P,h as F,i as I,k as L,m as R,n as z,r as B,s as V,u as H,w as U,z as W}from"./index-CpztPbom.js";import{n as G,r as K,t as q}from"./Field-Cmpgg_1z.js";var J={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};J.node;var Y=t(J),X=n(e(),1),Z=r();function Q({open:e,onClose:t,routes:n,defaultRoute:r}){return(0,Z.jsx)(P,{open:e,onClose:t,title:`Edit routes`,description:(0,Z.jsxs)(Z.Fragment,{children:[`Saved to the global `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`~/.davecode/config.json`}),` and applied to the router immediately.`]}),width:`w-[min(680px,100vw)]`,children:e&&(0,Z.jsx)($,{routes:n,defaultRoute:r,onDone:t})})}function $({routes:e,defaultRoute:t,onDone:n}){let r=_(),c=o(),f=s(),m=r.data??[],[g,y]=(0,X.useState)(()=>v(e,t)),[b,S]=(0,X.useState)(!1),[C,T]=(0,X.useState)(null),O=(0,X.useMemo)(()=>u(g,m),[g,m]),A=l(g,e,t),j=(0,X.useMemo)(()=>{let e=new Map;for(let t of c.data??[]){if(t.owned_by===`davecode`)continue;let n=t.owned_by,r=`${n}/`,i=e.get(n)??[];i.push(t.id.startsWith(r)?t.id.slice(r.length):t.id),e.set(n,i)}return e},[c.data]),M=(e,t)=>y(n=>({...n,routes:n.routes.map(n=>n.key===e?t(n):n)})),N=(e,t,n)=>M(e,e=>({...e,targets:e.targets.map(e=>e.key===t?{...e,...n}:e)})),P=()=>y(e=>{let t=d(h(e.routes));return{routes:[...e.routes,t],defaultKey:e.defaultKey??t.key}}),F=e=>y(t=>{let n=t.routes.filter(t=>t.key!==e);return{routes:n,defaultKey:t.defaultKey===e?n[0]?.key??null:t.defaultKey}});return(0,Z.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),S(!0),T(null),O.valid)try{let e=await f.mutateAsync(p(g));k({tone:`ok`,title:`Routes saved`,description:`${e.routes.length} route${e.routes.length===1?``:`s`}, default davecode/${e.defaultRoute}`}),e.shadowedByProject&&k({tone:`info`,title:`This project overrides routes`,description:`The project .davecode/config.json also sets routing and wins after a restart.`}),n()}catch(e){T(E(e))}},noValidate:!0,className:`flex flex-col gap-4`,children:[g.routes.length===0&&(0,Z.jsxs)(`p`,{className:`rounded-md border border-dashed border-line-strong px-3 py-6 text-center text-[12px] text-muted`,children:[`No routes. Clients can still call `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`provider/model`}),` ids directly. Add a route to expose `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`davecode/<name>`}),`.`]}),g.routes.map(e=>{let t=O.byRoute[e.key],n=g.defaultKey===e.key,r=b;return(0,Z.jsxs)(`section`,{"aria-label":`Route ${e.name||`unnamed`}`,className:i(`flex flex-col gap-3 rounded-lg border bg-raised p-3`,n?`border-accent/50`:`border-line`),children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsx)(q,{label:`Name`,error:r?t?.name:null,className:`min-w-0 flex-1`,children:({id:t,describedBy:n,invalid:r})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[12px] text-muted`,children:`davecode/`}),(0,Z.jsx)(G,{id:t,value:e.name,onChange:t=>M(e.key,e=>({...e,name:t.target.value})),"aria-describedby":n,"aria-invalid":r||void 0,spellCheck:!1,autoCapitalize:`off`,className:`font-mono`})]})}),(0,Z.jsxs)(`label`,{className:`mt-6 flex shrink-0 cursor-pointer items-center gap-1.5 text-[12px] text-fg-2`,children:[(0,Z.jsx)(`input`,{type:`radio`,name:`default-route`,checked:n,onChange:()=>y(t=>({...t,defaultKey:e.key})),className:`size-3.5 accent-accent`}),`Default`]}),(0,Z.jsx)(U,{variant:`ghost`,size:`sm`,iconOnly:!0,icon:D,"aria-label":`Remove route ${e.name||`unnamed`}`,onClick:()=>F(e.key),className:`mt-6 text-err hover:bg-err-soft hover:text-err`})]}),(0,Z.jsx)(q,{label:`Description`,children:({id:t,describedBy:n})=>(0,Z.jsx)(G,{id:t,value:e.description,onChange:t=>M(e.key,e=>({...e,description:t.target.value})),"aria-describedby":n,placeholder:`When to use this route`})}),(0,Z.jsxs)(`fieldset`,{className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`legend`,{className:`mb-1 text-[12px] font-medium text-fg-2`,children:[`Targets`,` `,(0,Z.jsx)(`span`,{className:`font-normal text-muted`,children:`tried in order, then fail over`})]}),r&&t?.targets&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:t.targets}),(0,Z.jsx)(`ol`,{className:`flex flex-col gap-2`,children:e.targets.map((n,i)=>(0,Z.jsx)(ee,{index:i,count:e.targets.length,target:n,accounts:m,models:j.get(n.provider)??[],error:r?t?.target[n.key]:void 0,onChange:t=>N(e.key,n.key,t),onMove:t=>M(e.key,e=>({...e,targets:a(e.targets,i,t)})),onRemove:()=>M(e.key,e=>({...e,targets:e.targets.filter(e=>e.key!==n.key)}))},n.key))}),(0,Z.jsx)(U,{size:`sm`,variant:`secondary`,icon:W,className:`self-start`,onClick:()=>M(e.key,e=>({...e,targets:[...e.targets,x(e.targets.at(-1)?.provider)]})),children:`Add target`})]})]},e.key)}),b&&O.defaultRoute&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:O.defaultRoute}),(0,Z.jsx)(U,{variant:`secondary`,icon:W,className:`self-start`,onClick:P,children:`Add route`}),C&&(0,Z.jsx)(w,{tone:`err`,title:`Could not save the routes`,children:C}),(0,Z.jsxs)(`div`,{className:`sticky -bottom-4 -mx-5 -mb-4 flex items-center justify-end gap-2 border-t border-line bg-panel px-5 py-3`,children:[!A&&(0,Z.jsx)(`span`,{className:`mr-auto text-[12px] text-muted`,children:`No changes`}),(0,Z.jsx)(U,{variant:`ghost`,onClick:n,children:`Cancel`}),(0,Z.jsx)(U,{type:`submit`,variant:`primary`,loading:f.isPending,disabled:!A,children:`Save routes`})]})]})}function ee({index:e,count:t,target:n,accounts:r,models:i,error:a,onChange:o,onMove:s,onRemove:c}){let l=`models-${n.key}`,u=r.filter(e=>e.provider===n.provider),d=n.accountId&&!r.some(e=>e.id===n.accountId);return(0,Z.jsxs)(`li`,{className:`flex items-start gap-2 rounded-md border border-line bg-panel p-2`,children:[(0,Z.jsx)(`span`,{className:`mt-1.5 flex size-6 shrink-0 items-center justify-center rounded-full border border-line-strong bg-raised font-mono text-[11px] text-fg-2`,children:e+1}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-1 gap-2 sm:grid-cols-2`,children:[(0,Z.jsx)(q,{label:`Provider`,children:({id:e})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(N,{provider:n.provider,size:`sm`}),(0,Z.jsx)(K,{id:e,value:n.provider,onChange:e=>{let t=e.target.value;o({provider:t,...r.find(e=>e.id===n.accountId)?.provider===t?{}:{accountId:``}})},children:g.map(e=>(0,Z.jsx)(`option`,{value:e,children:y(e).label},e))})]})}),(0,Z.jsx)(q,{label:`Model`,error:a?.model,children:({id:e,describedBy:t,invalid:r})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{id:e,list:l,value:n.model,onChange:e=>o({model:e.target.value}),"aria-describedby":t,"aria-invalid":r||void 0,spellCheck:!1,autoCapitalize:`off`,placeholder:`claude-sonnet-5-5`,className:`font-mono`}),(0,Z.jsx)(`datalist`,{id:l,children:i.map(e=>(0,Z.jsx)(`option`,{value:e},e))})]})}),(0,Z.jsx)(q,{label:`Account`,error:a?.accountId,className:`sm:col-span-2`,children:({id:e,describedBy:t,invalid:r})=>(0,Z.jsxs)(K,{id:e,value:n.accountId,onChange:e=>o({accountId:e.target.value}),"aria-describedby":t,"aria-invalid":r||void 0,children:[(0,Z.jsx)(`option`,{value:``,children:`Balanced across matching accounts`}),d&&(0,Z.jsxs)(`option`,{value:n.accountId,children:[n.accountId,` (missing)`]}),u.map(e=>(0,Z.jsxs)(`option`,{value:e.id,children:[`Pinned to `,e.label,` (`,e.id,`)`]},e.id))]})})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex shrink-0 flex-col gap-0.5`,children:[(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:C,"aria-label":`Move target ${e+1} up`,disabled:e===0,onClick:()=>s(e-1)}),(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:Y,"aria-label":`Move target ${e+1} down`,disabled:e===t-1,onClick:()=>s(e+1)}),(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:O,"aria-label":`Remove target ${e+1}`,onClick:c})]})]})}function te(e,t){return t.filter(t=>{if(e.accountId)return t.id===e.accountId;if(t.provider!==e.provider)return!1;let n=t.config.models;return!Array.isArray(n)||n.length===0||n.includes(e.model)})}function ne(){let e=c(),{params:t}=L(),n=t.get(`edit`)===`1`,r=_(),i=o(),a=S(),s=r.data??[],l=`${a.gatewayUrl||`http://127.0.0.1:4040`}/v1`,u=e.data?.defaultRoute??`auto`,d=(0,X.useMemo)(()=>{let e=i.data??[];return{total:e.length,routes:e.filter(e=>e.owned_by===`davecode`).length}},[i.data]),p=`curl ${l}/chat/completions \\
1
+ import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{$ as a,D as o,I as s,O as c,Q as l,at as u,et as d,ft as f,it as p,n as m,nt as h,ot as g,p as _,rt as v,st as y,t as b,tt as x,yt as S}from"./Badge-DUGKlx3Z.js";import{t as C}from"./arrow-up-DjhzZprp.js";import{t as w}from"./Callout-1E8Wsl9W.js";import{n as T,t as E}from"./task-errors-r-WYZ_S3.js";import{t as D}from"./trash-BTuDcSaQ.js";import{A as O,C as k,E as A,L as j,O as M,_ as N,f as P,h as F,i as I,k as L,m as R,n as z,r as B,s as V,u as H,w as U,z as W}from"./index-B8kld9xo.js";import{n as G,r as K,t as q}from"./Field-Cmpgg_1z.js";var J={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};J.node;var Y=t(J),X=n(e(),1),Z=r();function Q({open:e,onClose:t,routes:n,defaultRoute:r}){return(0,Z.jsx)(P,{open:e,onClose:t,title:`Edit routes`,description:(0,Z.jsxs)(Z.Fragment,{children:[`Saved to the global `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`~/.davecode/config.json`}),` and applied to the router immediately.`]}),width:`w-[min(680px,100vw)]`,children:e&&(0,Z.jsx)($,{routes:n,defaultRoute:r,onDone:t})})}function $({routes:e,defaultRoute:t,onDone:n}){let r=_(),c=o(),f=s(),m=r.data??[],[g,y]=(0,X.useState)(()=>v(e,t)),[b,S]=(0,X.useState)(!1),[C,T]=(0,X.useState)(null),O=(0,X.useMemo)(()=>u(g,m),[g,m]),A=l(g,e,t),j=(0,X.useMemo)(()=>{let e=new Map;for(let t of c.data??[]){if(t.owned_by===`davecode`)continue;let n=t.owned_by,r=`${n}/`,i=e.get(n)??[];i.push(t.id.startsWith(r)?t.id.slice(r.length):t.id),e.set(n,i)}return e},[c.data]),M=(e,t)=>y(n=>({...n,routes:n.routes.map(n=>n.key===e?t(n):n)})),N=(e,t,n)=>M(e,e=>({...e,targets:e.targets.map(e=>e.key===t?{...e,...n}:e)})),P=()=>y(e=>{let t=d(h(e.routes));return{routes:[...e.routes,t],defaultKey:e.defaultKey??t.key}}),F=e=>y(t=>{let n=t.routes.filter(t=>t.key!==e);return{routes:n,defaultKey:t.defaultKey===e?n[0]?.key??null:t.defaultKey}});return(0,Z.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),S(!0),T(null),O.valid)try{let e=await f.mutateAsync(p(g));k({tone:`ok`,title:`Routes saved`,description:`${e.routes.length} route${e.routes.length===1?``:`s`}, default davecode/${e.defaultRoute}`}),e.shadowedByProject&&k({tone:`info`,title:`This project overrides routes`,description:`The project .davecode/config.json also sets routing and wins after a restart.`}),n()}catch(e){T(E(e))}},noValidate:!0,className:`flex flex-col gap-4`,children:[g.routes.length===0&&(0,Z.jsxs)(`p`,{className:`rounded-md border border-dashed border-line-strong px-3 py-6 text-center text-[12px] text-muted`,children:[`No routes. Clients can still call `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`provider/model`}),` ids directly. Add a route to expose `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`davecode/<name>`}),`.`]}),g.routes.map(e=>{let t=O.byRoute[e.key],n=g.defaultKey===e.key,r=b;return(0,Z.jsxs)(`section`,{"aria-label":`Route ${e.name||`unnamed`}`,className:i(`flex flex-col gap-3 rounded-lg border bg-raised p-3`,n?`border-accent/50`:`border-line`),children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsx)(q,{label:`Name`,error:r?t?.name:null,className:`min-w-0 flex-1`,children:({id:t,describedBy:n,invalid:r})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[12px] text-muted`,children:`davecode/`}),(0,Z.jsx)(G,{id:t,value:e.name,onChange:t=>M(e.key,e=>({...e,name:t.target.value})),"aria-describedby":n,"aria-invalid":r||void 0,spellCheck:!1,autoCapitalize:`off`,className:`font-mono`})]})}),(0,Z.jsxs)(`label`,{className:`mt-6 flex shrink-0 cursor-pointer items-center gap-1.5 text-[12px] text-fg-2`,children:[(0,Z.jsx)(`input`,{type:`radio`,name:`default-route`,checked:n,onChange:()=>y(t=>({...t,defaultKey:e.key})),className:`size-3.5 accent-accent`}),`Default`]}),(0,Z.jsx)(U,{variant:`ghost`,size:`sm`,iconOnly:!0,icon:D,"aria-label":`Remove route ${e.name||`unnamed`}`,onClick:()=>F(e.key),className:`mt-6 text-err hover:bg-err-soft hover:text-err`})]}),(0,Z.jsx)(q,{label:`Description`,children:({id:t,describedBy:n})=>(0,Z.jsx)(G,{id:t,value:e.description,onChange:t=>M(e.key,e=>({...e,description:t.target.value})),"aria-describedby":n,placeholder:`When to use this route`})}),(0,Z.jsxs)(`fieldset`,{className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`legend`,{className:`mb-1 text-[12px] font-medium text-fg-2`,children:[`Targets`,` `,(0,Z.jsx)(`span`,{className:`font-normal text-muted`,children:`tried in order, then fail over`})]}),r&&t?.targets&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:t.targets}),(0,Z.jsx)(`ol`,{className:`flex flex-col gap-2`,children:e.targets.map((n,i)=>(0,Z.jsx)(ee,{index:i,count:e.targets.length,target:n,accounts:m,models:j.get(n.provider)??[],error:r?t?.target[n.key]:void 0,onChange:t=>N(e.key,n.key,t),onMove:t=>M(e.key,e=>({...e,targets:a(e.targets,i,t)})),onRemove:()=>M(e.key,e=>({...e,targets:e.targets.filter(e=>e.key!==n.key)}))},n.key))}),(0,Z.jsx)(U,{size:`sm`,variant:`secondary`,icon:W,className:`self-start`,onClick:()=>M(e.key,e=>({...e,targets:[...e.targets,x(e.targets.at(-1)?.provider)]})),children:`Add target`})]})]},e.key)}),b&&O.defaultRoute&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:O.defaultRoute}),(0,Z.jsx)(U,{variant:`secondary`,icon:W,className:`self-start`,onClick:P,children:`Add route`}),C&&(0,Z.jsx)(w,{tone:`err`,title:`Could not save the routes`,children:C}),(0,Z.jsxs)(`div`,{className:`sticky -bottom-4 -mx-5 -mb-4 flex items-center justify-end gap-2 border-t border-line bg-panel px-5 py-3`,children:[!A&&(0,Z.jsx)(`span`,{className:`mr-auto text-[12px] text-muted`,children:`No changes`}),(0,Z.jsx)(U,{variant:`ghost`,onClick:n,children:`Cancel`}),(0,Z.jsx)(U,{type:`submit`,variant:`primary`,loading:f.isPending,disabled:!A,children:`Save routes`})]})]})}function ee({index:e,count:t,target:n,accounts:r,models:i,error:a,onChange:o,onMove:s,onRemove:c}){let l=`models-${n.key}`,u=r.filter(e=>e.provider===n.provider),d=n.accountId&&!r.some(e=>e.id===n.accountId);return(0,Z.jsxs)(`li`,{className:`flex items-start gap-2 rounded-md border border-line bg-panel p-2`,children:[(0,Z.jsx)(`span`,{className:`mt-1.5 flex size-6 shrink-0 items-center justify-center rounded-full border border-line-strong bg-raised font-mono text-[11px] text-fg-2`,children:e+1}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-1 gap-2 sm:grid-cols-2`,children:[(0,Z.jsx)(q,{label:`Provider`,children:({id:e})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(N,{provider:n.provider,size:`sm`}),(0,Z.jsx)(K,{id:e,value:n.provider,onChange:e=>{let t=e.target.value;o({provider:t,...r.find(e=>e.id===n.accountId)?.provider===t?{}:{accountId:``}})},children:g.map(e=>(0,Z.jsx)(`option`,{value:e,children:y(e).label},e))})]})}),(0,Z.jsx)(q,{label:`Model`,error:a?.model,children:({id:e,describedBy:t,invalid:r})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{id:e,list:l,value:n.model,onChange:e=>o({model:e.target.value}),"aria-describedby":t,"aria-invalid":r||void 0,spellCheck:!1,autoCapitalize:`off`,placeholder:`claude-sonnet-5-5`,className:`font-mono`}),(0,Z.jsx)(`datalist`,{id:l,children:i.map(e=>(0,Z.jsx)(`option`,{value:e},e))})]})}),(0,Z.jsx)(q,{label:`Account`,error:a?.accountId,className:`sm:col-span-2`,children:({id:e,describedBy:t,invalid:r})=>(0,Z.jsxs)(K,{id:e,value:n.accountId,onChange:e=>o({accountId:e.target.value}),"aria-describedby":t,"aria-invalid":r||void 0,children:[(0,Z.jsx)(`option`,{value:``,children:`Balanced across matching accounts`}),d&&(0,Z.jsxs)(`option`,{value:n.accountId,children:[n.accountId,` (missing)`]}),u.map(e=>(0,Z.jsxs)(`option`,{value:e.id,children:[`Pinned to `,e.label,` (`,e.id,`)`]},e.id))]})})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex shrink-0 flex-col gap-0.5`,children:[(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:C,"aria-label":`Move target ${e+1} up`,disabled:e===0,onClick:()=>s(e-1)}),(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:Y,"aria-label":`Move target ${e+1} down`,disabled:e===t-1,onClick:()=>s(e+1)}),(0,Z.jsx)(U,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:O,"aria-label":`Remove target ${e+1}`,onClick:c})]})]})}function te(e,t){return t.filter(t=>{if(e.accountId)return t.id===e.accountId;if(t.provider!==e.provider)return!1;let n=t.config.models;return!Array.isArray(n)||n.length===0||n.includes(e.model)})}function ne(){let e=c(),{params:t}=L(),n=t.get(`edit`)===`1`,r=_(),i=o(),a=S(),s=r.data??[],l=`${a.gatewayUrl||`http://127.0.0.1:4040`}/v1`,u=e.data?.defaultRoute??`auto`,d=(0,X.useMemo)(()=>{let e=i.data??[];return{total:e.length,routes:e.filter(e=>e.owned_by===`davecode`).length}},[i.data]),p=`curl ${l}/chat/completions \\
2
2
  -H "Content-Type: application/json" \\
3
3
  -H "Authorization: Bearer $DAVECODE_TOKEN" \\
4
4
  -d '{"model": "davecode/${u}", "messages": [{"role": "user", "content": "Hello"}]}'`;return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Z.jsx)(z,{title:`Routes`,description:(0,Z.jsxs)(Z.Fragment,{children:[`Exposed to clients as`,` `,(0,Z.jsx)(`code`,{className:`font-mono text-fg-2`,children:`davecode/<route>`}),`. Targets are tried in order; the router fails over down the list before the first byte.`]}),actions:(0,Z.jsxs)(Z.Fragment,{children:[i.data&&(0,Z.jsxs)(b,{mono:!0,children:[d.total,` models · `,d.routes,` routes on /v1/models`]}),(0,Z.jsx)(U,{variant:`primary`,icon:T,disabled:!e.data,onClick:()=>M(`edit`,`1`),children:`Edit routes`})]})}),e.isError&&(0,Z.jsx)(w,{tone:`err`,title:`Could not load routes`,children:f(e.error)}),e.isPending?(0,Z.jsx)(B,{children:(0,Z.jsx)(H,{rows:6})}):(e.data?.routes.length??0)===0?(0,Z.jsx)(B,{children:(0,Z.jsx)(V,{icon:j,title:`No routes configured`,description:`Until you add one, clients can call provider/model ids directly. Routes are saved to ~/.davecode/config.json.`,action:(0,Z.jsx)(U,{variant:`primary`,icon:W,onClick:()=>M(`edit`,`1`),children:`Add a route`})})}):(0,Z.jsx)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2`,children:e.data?.routes.map(e=>(0,Z.jsxs)(B,{"aria-labelledby":`route-${e.name}`,children:[(0,Z.jsx)(I,{id:`route-${e.name}`,title:(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-mono`,children:[`davecode/`,e.name,(0,Z.jsx)(R,{value:`davecode/${e.name}`,label:`Copy davecode/${e.name}`})]}),actions:e.name===u?(0,Z.jsx)(b,{tone:`accent`,children:`default`}):void 0}),e.description&&(0,Z.jsx)(`p`,{className:`px-3.5 pt-3 text-[12px] text-muted`,children:e.description}),(0,Z.jsx)(`ol`,{className:`flex flex-col p-3.5`,children:e.targets.map((t,n)=>{let r=te(t,s),i=r.filter(e=>e.enabled&&e.status!==`disabled`);return(0,Z.jsxs)(`li`,{className:`relative flex gap-3 pb-3 last:pb-0`,children:[n<e.targets.length-1&&(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`absolute top-7 bottom-0 left-[11px] w-px bg-line-strong`}),(0,Z.jsx)(`span`,{className:`z-10 flex size-6 shrink-0 items-center justify-center rounded-full border border-line-strong bg-raised font-mono text-[11px] text-fg-2`,children:n+1}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1 rounded-md border border-line bg-raised px-2.5 py-2`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(N,{provider:t.provider,size:`sm`}),(0,Z.jsxs)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:[t.provider,`/`,t.model]}),i.length===0&&(0,Z.jsx)(b,{tone:`err`,className:`ml-auto`,children:`no usable account`})]}),(0,Z.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[12px] text-muted`,children:[(0,Z.jsx)(`span`,{children:t.accountId?`pinned to`:`balanced · ${y(t.provider).label}`}),r.length===0&&(0,Z.jsx)(`span`,{className:`text-faint`,children:`no matching account`}),r.map(e=>(0,Z.jsxs)(A,{to:`/accounts?account=${encodeURIComponent(e.id)}`,className:`inline-flex items-center gap-1.5 text-fg-2 hover:text-fg`,children:[(0,Z.jsx)(m,{tone:F[e.status]}),e.label,(0,Z.jsxs)(`span`,{className:`sr-only`,children:[`(`,e.status,`)`]})]},e.id))]})]})]},`${t.provider}/${t.model}/${t.accountId??``}`)})})]},e.name))}),(0,Z.jsx)(Q,{open:n&&!!e.data,onClose:()=>M(`edit`,null),routes:e.data?.routes??[],defaultRoute:u}),(0,Z.jsxs)(B,{"aria-labelledby":`usage-title`,children:[(0,Z.jsx)(I,{id:`usage-title`,title:`Use a route`,meta:`any OpenAI-compatible client`,actions:(0,Z.jsx)(R,{value:p,label:`Copy snippet`})}),(0,Z.jsx)(`pre`,{className:`overflow-x-auto p-3.5 font-mono text-[12px] leading-5 text-fg-2`,children:p})]})]})}export{ne as RoutesPage};
@@ -1 +1 @@
1
- import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{A as a,B as o,N as s,V as c,ft as l,j as u,o as d,pt as f,r as p,t as m}from"./Badge-DUGKlx3Z.js";import{t as h}from"./Callout-WgXHDPg0.js";import{B as g,C as _,E as v,F as y,G as b,I as x,J as S,V as C,d as w,i as T,l as E,n as D,p as O,q as k,r as A,w as j,x as M,y as ee}from"./index-CpztPbom.js";var N={name:`arrow-down-to-line`,size:24,node:[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]};N.node;var P=t(N),F={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};F.node;var I=t(F),L={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};L.node;var R=t(L),z={name:`text-wrap`,size:24,node:[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]],aliases:[`wrap-text`]};z.node;var B=t(z),V=n(e(),1),H=r(),U=[`debug`,`info`,`warn`,`error`],W={debug:`text-muted`,info:`text-info`,warn:`text-warn`,error:`text-err`};function G(e){return e.level===`error`?`text-err`:e.level===`warn`?`text-warn`:e.message.startsWith(`$ `)?`text-fg`:e.message.startsWith(`✓`)?`text-ok`:e.message.startsWith(`→`)?`text-info`:e.level===`debug`?`text-muted`:`text-fg-2`}function K({lines:e,onClear:t,className:n}){let[r,a]=(0,V.useState)(()=>new Set([`info`,`warn`,`error`])),[o,s]=(0,V.useState)(`runner`),[c,l]=(0,V.useState)(``),[u,d]=(0,V.useState)(!0),[f,m]=(0,V.useState)(!0),h=(0,V.useRef)(null),g=(0,V.useMemo)(()=>{let t={debug:0,info:0,warn:0,error:0};for(let n of e)(o===`all`||n.source===`runner`)&&(t[n.level]+=1);return t},[e,o]),_=c.trim().toLowerCase(),v=(0,V.useMemo)(()=>e.filter(e=>r.has(e.level)&&(o===`all`||e.source===`runner`)&&(!_||e.message.toLowerCase().includes(_)||(e.taskId??e.scope??``).includes(_))),[e,r,o,_]);(0,V.useLayoutEffect)(()=>{let e=h.current;e&&f&&(e.scrollTop=e.scrollHeight)},[v,f]),(0,V.useEffect)(()=>{let e=h.current;if(!e)return;let t=()=>{let t=e.scrollHeight-e.scrollTop-e.clientHeight<24;m(t)};return e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[]);let y=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,H.jsxs)(`section`,{"aria-label":`Runner log`,className:i(`term flex min-h-0 flex-col overflow-hidden rounded-lg border border-line bg-term`,n),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-line px-3 py-2`,children:[(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log levels`}),U.map(e=>(0,H.jsxs)(`button`,{type:`button`,"aria-pressed":r.has(e),onClick:()=>y(e),className:i(`inline-flex h-6 items-center gap-1.5 rounded border px-2 font-mono text-2xs uppercase transition-colors duration-150`,r.has(e)?`border-line-strong bg-hover text-fg`:`border-transparent text-faint hover:text-muted`),children:[(0,H.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 rounded-full bg-current`,r.has(e)&&W[e])}),e,(0,H.jsx)(`span`,{className:`tnum text-muted`,children:g[e]})]},e))]}),(0,H.jsx)(`span`,{"aria-hidden":!0,className:`h-4 w-px bg-line-strong`}),(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log source`}),[`runner`,`all`].map(e=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":o===e,onClick:()=>s(e),className:i(`h-6 rounded px-2 text-[12px] transition-colors duration-150`,o===e?`bg-hover text-fg`:`text-muted hover:text-fg-2`),children:e===`runner`?`Runner`:`All logs`},e))]}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(x,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2 size-3 -translate-y-1/2 text-muted`,strokeWidth:1.75}),(0,H.jsx)(`input`,{type:`search`,"aria-label":`Filter log lines`,placeholder:`Filter`,value:c,onChange:e=>l(e.target.value),className:`h-6 w-32 rounded border border-line-strong bg-transparent pr-2 pl-6 font-mono text-[11px] text-fg placeholder:text-faint focus-visible:border-accent focus-visible:outline-none`,"data-filter-input":!0})]}),(0,H.jsx)(`button`,{type:`button`,"aria-pressed":u,onClick:()=>d(e=>!e),"aria-label":`Wrap long lines`,title:`Wrap long lines`,className:i(`inline-flex size-6 items-center justify-center rounded`,u?`bg-hover text-fg`:`text-muted hover:text-fg`),children:(0,H.jsx)(B,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})}),(0,H.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Clear console`,title:`Clear console`,className:`inline-flex size-6 items-center justify-center rounded text-muted hover:bg-hover hover:text-fg`,children:(0,H.jsx)(I,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})})]})]}),(0,H.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[(0,H.jsx)(`div`,{ref:h,role:`log`,"aria-live":`off`,"aria-label":`Log lines`,tabIndex:0,className:`absolute inset-0 overflow-auto py-2 font-mono text-[12px] leading-[1.6]`,children:v.length===0?(0,H.jsx)(`p`,{className:`px-3 text-muted`,children:e.length===0?`Waiting for runner output…`:`No lines match the filters.`}):v.map(e=>(0,H.jsxs)(`div`,{className:i(`flex gap-3 px-3 hover:bg-hover/60`,u?`whitespace-pre-wrap break-words`:`whitespace-pre`,e.level===`error`&&`bg-err/[0.06]`),children:[(0,H.jsx)(`span`,{className:`tnum shrink-0 text-faint select-none`,children:p(e.ts,!0)}),(0,H.jsx)(`span`,{className:i(`w-10 shrink-0 uppercase select-none`,W[e.level]),children:e.level}),o===`all`&&(0,H.jsx)(`span`,{className:`w-16 shrink-0 truncate text-muted`,children:e.source===`runner`?`runner`:e.scope}),(0,H.jsx)(`span`,{className:i(`min-w-0`,G(e)),children:e.message})]},e.key))}),!f&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{let e=h.current;e&&(e.scrollTop=e.scrollHeight),m(!0)},className:`absolute right-4 bottom-3 inline-flex animate-pop-in items-center gap-1.5 rounded-md border border-line-strong bg-raised px-2.5 py-1 text-[12px] text-fg shadow-overlay`,children:[(0,H.jsx)(P,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),`Jump to latest`]})]}),(0,H.jsx)(`p`,{className:`sr-only`,"aria-live":`polite`,children:f?``:`Autoscroll paused.`})]})}var q=[`idle`,`selecting`,`preparing`,`implementing`,`validating`,`repairing`,`merging`],J={idle:`Waiting for work`,selecting:`Picking the next unblocked task`,preparing:`Creating the task branch and loading the brain`,implementing:`Writing code through the gateway`,validating:`Running lint, typecheck and tests`,repairing:`Feeding failures back for another attempt`,merging:`Merging the task branch`,paused:`Paused; resumes at the same step`,stopped:`Stopped`,error:`Stopped on an error`},Y={idle:`neutral`,selecting:`info`,preparing:`info`,implementing:`info`,validating:`info`,repairing:`warn`,merging:`ok`,paused:`warn`,stopped:`neutral`,error:`err`},X=3;function Z(){let e=a(),t=s(),n=c(),{live:r}=o(),p=u(),x=M(1e3),[N,P]=(0,V.useState)(!1),F=f(e.error)&&e.error.status===501,I=F?void 0:e.data,L=I?.state,z=t.data?.graph.tasks.find(e=>e.id===I?.taskId),B=(0,V.useMemo)(()=>{if(!F){if(L&&q.includes(L))return L;for(let e=n.events.length-1;e>=0;e--){let t=n.events[e];if(t?.type===`runner.status`&&q.includes(t.status.state))return t.status.state}}},[F,L,n.events]),U=async e=>{try{let t=await p.mutateAsync(e);_({tone:`info`,title:`Runner ${t.state}`,description:J[t.state]})}catch(t){_({tone:`err`,title:`Could not ${e} the runner`,description:f(t)&&t.code===`runner_unavailable`?`This gateway was started without the autonomous runner.`:l(t)})}},W=L!==void 0&&![`idle`,`paused`,`stopped`,`error`].includes(L),G=!F&&(L===`idle`||L===`paused`||L===`stopped`||L===`error`),Z=I?.startedAt?(x-Date.parse(I.startedAt))/1e3:void 0,Q=I?.repairCycle??0,te=t.data?.graph.tasks.filter(e=>e.status===`SUCCESS`).length??0,$=t.data?.graph.tasks.length??0;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(D,{title:`Runner`,description:`The autonomous engineer: one task at a time, on its own branch, merged only when checks pass.`,actions:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(j,{variant:`primary`,icon:g,disabled:!G||p.isPending,loading:p.isPending&&p.variables===`start`,onClick:()=>U(`start`),children:L===`paused`?`Resume`:`Start`}),(0,H.jsx)(j,{icon:C,disabled:F||!W||p.isPending,loading:p.isPending&&p.variables===`pause`,onClick:()=>U(`pause`),children:`Pause`}),(0,H.jsx)(j,{variant:`danger`,icon:y,disabled:F||L===`stopped`||L===`idle`||L===void 0||p.isPending,onClick:()=>P(!0),children:`Stop`})]})}),F&&(0,H.jsxs)(h,{tone:`warn`,title:`Runner unavailable`,children:[(0,H.jsxs)(`p`,{children:[`This gateway answered `,(0,H.jsx)(`code`,{className:`font-mono text-fg`,children:`501 runner_unavailable`}),`: it is running without the autonomous engine. Routing and the dashboard keep working; start the runner from a project directory to drive the task graph:`]}),(0,H.jsx)(O,{command:`davecode run`,className:`mt-2 max-w-sm`})]}),e.isError&&!F&&(0,H.jsx)(h,{tone:`err`,title:`Could not read the runner status`,children:l(e.error)}),(0,H.jsxs)(A,{"aria-labelledby":`machine-title`,children:[(0,H.jsx)(T,{id:`machine-title`,title:`State machine`,meta:L?J[L]:void 0,actions:L&&(0,H.jsx)(m,{tone:Y[L],dot:!0,pulse:W,children:L})}),(0,H.jsxs)(`div`,{className:`p-4`,children:[e.isPending?(0,H.jsx)(E,{className:`h-16 w-full`}):(0,H.jsx)(`ol`,{className:`flex flex-wrap items-center gap-y-3`,"aria-label":`Runner pipeline`,children:q.map((e,t)=>{let n=e===B,r=n&&W,a=B?q.indexOf(B):-1,o=a>0&&t>0&&t<a&&(e!==`repairing`||Q!==0);return(0,H.jsxs)(`li`,{className:`flex items-center`,"aria-current":n?`step`:void 0,children:[t>0&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:i(`mx-1.5 h-px w-4 sm:w-6`,o||n?`bg-fg-2/50`:`bg-line-strong`)}),(0,H.jsxs)(`span`,{className:i(`inline-flex h-7 items-center gap-1.5 rounded-full border px-3 font-mono text-[12px] transition-colors duration-200`,n?L===`paused`||L===`stopped`||e===`repairing`?`border-warn/50 bg-warn-soft text-warn`:`border-accent/60 bg-accent-soft text-accent-text shadow-[0_0_0_3px_var(--dc-accent-soft)]`:o?`border-line-strong text-fg-2`:`border-line text-faint`),children:[o&&(0,H.jsx)(k,{"aria-hidden":!0,className:`size-3`,strokeWidth:2.25}),e===`repairing`&&!o&&(0,H.jsx)(R,{"aria-hidden":!0,className:`size-3`,strokeWidth:2}),r&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse-dot rounded-full bg-current`}),e,n&&(0,H.jsxs)(`span`,{className:`sr-only`,children:[` (current`,L===e?``:`, ${L}`,`)`]})]})]},e)})}),(0,H.jsxs)(`p`,{className:`mt-3 text-[12px] text-muted`,children:[(0,H.jsx)(R,{"aria-hidden":!0,className:`mr-1 inline size-3 align-[-2px]`,strokeWidth:2}),`Failed validation loops `,(0,H.jsx)(`span`,{className:`font-mono`,children:`repairing → implementing`}),` up to `,X,` times; then the task is marked FAILED and the runner moves on.`]})]})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1fr)_340px]`,children:[(0,H.jsxs)(A,{"aria-labelledby":`current-title`,className:`xl:order-2 xl:self-start`,children:[(0,H.jsx)(T,{id:`current-title`,title:`Current task`,meta:$?`${te}/${$} tasks done`:void 0}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[e.isPending?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(E,{className:`h-4 w-40`}),(0,H.jsx)(E,{className:`h-4 w-56`})]}):z?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(v,{to:`/tasks?task=${encodeURIComponent(z.id)}`,className:`font-mono text-2xs text-muted hover:text-fg`,children:z.id}),(0,H.jsx)(`p`,{className:`text-[13px] leading-5 font-medium text-fg`,children:z.title})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,H.jsx)(ee,{status:z.status}),z.attempts!==void 0&&(0,H.jsxs)(m,{mono:!0,children:[`attempt `,z.attempts]})]}),(0,H.jsxs)(`p`,{className:`flex items-center gap-1.5 font-mono text-[12px] text-fg-2`,children:[(0,H.jsx)(b,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),z.branch??`davecode/task-${z.id}`]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Repair cycle`}),(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`flex gap-1`,"aria-hidden":!0,children:Array.from({length:X},(e,t)=>(0,H.jsx)(`span`,{className:i(`h-1.5 w-5 rounded-full`,t<Q?`bg-warn`:`bg-track`)},t))}),(0,H.jsxs)(`span`,{className:`tnum font-mono text-fg`,children:[Q,`/`,X]})]})]}),Z!==void 0&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Running for`}),(0,H.jsx)(`span`,{className:`tnum font-mono text-fg`,children:d(Z)})]})]}):(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 text-[12px] text-muted`,children:[(0,H.jsx)(S,{"aria-hidden":!0,className:`size-4`,strokeWidth:1.5}),F?`No runner attached to this gateway.`:`No task in progress.`]}),I?.lastError&&(0,H.jsx)(`p`,{className:`rounded-md border border-err/30 bg-err-soft p-2 font-mono text-2xs text-err`,children:I.lastError})]})]}),(0,H.jsx)(K,{lines:n.logs,onClear:()=>r.clearLogs(),className:`h-[480px] xl:order-1`})]}),(0,H.jsx)(w,{open:N,onClose:()=>P(!1),title:`Stop the runner?`,description:`The current step is abandoned. Work done so far stays on the task branch.`,footer:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(j,{variant:`ghost`,onClick:()=>P(!1),children:`Keep running`}),(0,H.jsx)(j,{variant:`danger`,icon:y,onClick:()=>{P(!1),U(`stop`)},children:`Stop runner`})]}),children:z&&(0,H.jsx)(`p`,{className:`font-mono text-[12px] text-muted`,children:z.id})})]})}export{Z as Runner};
1
+ import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{A as a,B as o,N as s,V as c,ft as l,j as u,o as d,pt as f,r as p,t as m}from"./Badge-DUGKlx3Z.js";import{t as h}from"./Callout-1E8Wsl9W.js";import{B as g,C as _,E as v,F as y,G as b,I as x,J as S,V as C,d as w,i as T,l as E,n as D,p as O,q as k,r as A,w as j,x as M,y as ee}from"./index-B8kld9xo.js";var N={name:`arrow-down-to-line`,size:24,node:[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]};N.node;var P=t(N),F={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};F.node;var I=t(F),L={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};L.node;var R=t(L),z={name:`text-wrap`,size:24,node:[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]],aliases:[`wrap-text`]};z.node;var B=t(z),V=n(e(),1),H=r(),U=[`debug`,`info`,`warn`,`error`],W={debug:`text-muted`,info:`text-info`,warn:`text-warn`,error:`text-err`};function G(e){return e.level===`error`?`text-err`:e.level===`warn`?`text-warn`:e.message.startsWith(`$ `)?`text-fg`:e.message.startsWith(`✓`)?`text-ok`:e.message.startsWith(`→`)?`text-info`:e.level===`debug`?`text-muted`:`text-fg-2`}function K({lines:e,onClear:t,className:n}){let[r,a]=(0,V.useState)(()=>new Set([`info`,`warn`,`error`])),[o,s]=(0,V.useState)(`runner`),[c,l]=(0,V.useState)(``),[u,d]=(0,V.useState)(!0),[f,m]=(0,V.useState)(!0),h=(0,V.useRef)(null),g=(0,V.useMemo)(()=>{let t={debug:0,info:0,warn:0,error:0};for(let n of e)(o===`all`||n.source===`runner`)&&(t[n.level]+=1);return t},[e,o]),_=c.trim().toLowerCase(),v=(0,V.useMemo)(()=>e.filter(e=>r.has(e.level)&&(o===`all`||e.source===`runner`)&&(!_||e.message.toLowerCase().includes(_)||(e.taskId??e.scope??``).includes(_))),[e,r,o,_]);(0,V.useLayoutEffect)(()=>{let e=h.current;e&&f&&(e.scrollTop=e.scrollHeight)},[v,f]),(0,V.useEffect)(()=>{let e=h.current;if(!e)return;let t=()=>{let t=e.scrollHeight-e.scrollTop-e.clientHeight<24;m(t)};return e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[]);let y=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,H.jsxs)(`section`,{"aria-label":`Runner log`,className:i(`term flex min-h-0 flex-col overflow-hidden rounded-lg border border-line bg-term`,n),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-line px-3 py-2`,children:[(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log levels`}),U.map(e=>(0,H.jsxs)(`button`,{type:`button`,"aria-pressed":r.has(e),onClick:()=>y(e),className:i(`inline-flex h-6 items-center gap-1.5 rounded border px-2 font-mono text-2xs uppercase transition-colors duration-150`,r.has(e)?`border-line-strong bg-hover text-fg`:`border-transparent text-faint hover:text-muted`),children:[(0,H.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 rounded-full bg-current`,r.has(e)&&W[e])}),e,(0,H.jsx)(`span`,{className:`tnum text-muted`,children:g[e]})]},e))]}),(0,H.jsx)(`span`,{"aria-hidden":!0,className:`h-4 w-px bg-line-strong`}),(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log source`}),[`runner`,`all`].map(e=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":o===e,onClick:()=>s(e),className:i(`h-6 rounded px-2 text-[12px] transition-colors duration-150`,o===e?`bg-hover text-fg`:`text-muted hover:text-fg-2`),children:e===`runner`?`Runner`:`All logs`},e))]}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(x,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2 size-3 -translate-y-1/2 text-muted`,strokeWidth:1.75}),(0,H.jsx)(`input`,{type:`search`,"aria-label":`Filter log lines`,placeholder:`Filter`,value:c,onChange:e=>l(e.target.value),className:`h-6 w-32 rounded border border-line-strong bg-transparent pr-2 pl-6 font-mono text-[11px] text-fg placeholder:text-faint focus-visible:border-accent focus-visible:outline-none`,"data-filter-input":!0})]}),(0,H.jsx)(`button`,{type:`button`,"aria-pressed":u,onClick:()=>d(e=>!e),"aria-label":`Wrap long lines`,title:`Wrap long lines`,className:i(`inline-flex size-6 items-center justify-center rounded`,u?`bg-hover text-fg`:`text-muted hover:text-fg`),children:(0,H.jsx)(B,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})}),(0,H.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Clear console`,title:`Clear console`,className:`inline-flex size-6 items-center justify-center rounded text-muted hover:bg-hover hover:text-fg`,children:(0,H.jsx)(I,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})})]})]}),(0,H.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[(0,H.jsx)(`div`,{ref:h,role:`log`,"aria-live":`off`,"aria-label":`Log lines`,tabIndex:0,className:`absolute inset-0 overflow-auto py-2 font-mono text-[12px] leading-[1.6]`,children:v.length===0?(0,H.jsx)(`p`,{className:`px-3 text-muted`,children:e.length===0?`Waiting for runner output…`:`No lines match the filters.`}):v.map(e=>(0,H.jsxs)(`div`,{className:i(`flex gap-3 px-3 hover:bg-hover/60`,u?`whitespace-pre-wrap break-words`:`whitespace-pre`,e.level===`error`&&`bg-err/[0.06]`),children:[(0,H.jsx)(`span`,{className:`tnum shrink-0 text-faint select-none`,children:p(e.ts,!0)}),(0,H.jsx)(`span`,{className:i(`w-10 shrink-0 uppercase select-none`,W[e.level]),children:e.level}),o===`all`&&(0,H.jsx)(`span`,{className:`w-16 shrink-0 truncate text-muted`,children:e.source===`runner`?`runner`:e.scope}),(0,H.jsx)(`span`,{className:i(`min-w-0`,G(e)),children:e.message})]},e.key))}),!f&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{let e=h.current;e&&(e.scrollTop=e.scrollHeight),m(!0)},className:`absolute right-4 bottom-3 inline-flex animate-pop-in items-center gap-1.5 rounded-md border border-line-strong bg-raised px-2.5 py-1 text-[12px] text-fg shadow-overlay`,children:[(0,H.jsx)(P,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),`Jump to latest`]})]}),(0,H.jsx)(`p`,{className:`sr-only`,"aria-live":`polite`,children:f?``:`Autoscroll paused.`})]})}var q=[`idle`,`selecting`,`preparing`,`implementing`,`validating`,`repairing`,`merging`],J={idle:`Waiting for work`,selecting:`Picking the next unblocked task`,preparing:`Creating the task branch and loading the brain`,implementing:`Writing code through the gateway`,validating:`Running lint, typecheck and tests`,repairing:`Feeding failures back for another attempt`,merging:`Merging the task branch`,paused:`Paused; resumes at the same step`,stopped:`Stopped`,error:`Stopped on an error`},Y={idle:`neutral`,selecting:`info`,preparing:`info`,implementing:`info`,validating:`info`,repairing:`warn`,merging:`ok`,paused:`warn`,stopped:`neutral`,error:`err`},X=3;function Z(){let e=a(),t=s(),n=c(),{live:r}=o(),p=u(),x=M(1e3),[N,P]=(0,V.useState)(!1),F=f(e.error)&&e.error.status===501,I=F?void 0:e.data,L=I?.state,z=t.data?.graph.tasks.find(e=>e.id===I?.taskId),B=(0,V.useMemo)(()=>{if(!F){if(L&&q.includes(L))return L;for(let e=n.events.length-1;e>=0;e--){let t=n.events[e];if(t?.type===`runner.status`&&q.includes(t.status.state))return t.status.state}}},[F,L,n.events]),U=async e=>{try{let t=await p.mutateAsync(e);_({tone:`info`,title:`Runner ${t.state}`,description:J[t.state]})}catch(t){_({tone:`err`,title:`Could not ${e} the runner`,description:f(t)&&t.code===`runner_unavailable`?`This gateway was started without the autonomous runner.`:l(t)})}},W=L!==void 0&&![`idle`,`paused`,`stopped`,`error`].includes(L),G=!F&&(L===`idle`||L===`paused`||L===`stopped`||L===`error`),Z=I?.startedAt?(x-Date.parse(I.startedAt))/1e3:void 0,Q=I?.repairCycle??0,te=t.data?.graph.tasks.filter(e=>e.status===`SUCCESS`).length??0,$=t.data?.graph.tasks.length??0;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(D,{title:`Runner`,description:`The autonomous engineer: one task at a time, on its own branch, merged only when checks pass.`,actions:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(j,{variant:`primary`,icon:g,disabled:!G||p.isPending,loading:p.isPending&&p.variables===`start`,onClick:()=>U(`start`),children:L===`paused`?`Resume`:`Start`}),(0,H.jsx)(j,{icon:C,disabled:F||!W||p.isPending,loading:p.isPending&&p.variables===`pause`,onClick:()=>U(`pause`),children:`Pause`}),(0,H.jsx)(j,{variant:`danger`,icon:y,disabled:F||L===`stopped`||L===`idle`||L===void 0||p.isPending,onClick:()=>P(!0),children:`Stop`})]})}),F&&(0,H.jsxs)(h,{tone:`warn`,title:`Runner unavailable`,children:[(0,H.jsxs)(`p`,{children:[`This gateway answered `,(0,H.jsx)(`code`,{className:`font-mono text-fg`,children:`501 runner_unavailable`}),`: it is running without the autonomous engine. Routing and the dashboard keep working; start the runner from a project directory to drive the task graph:`]}),(0,H.jsx)(O,{command:`davecode run`,className:`mt-2 max-w-sm`})]}),e.isError&&!F&&(0,H.jsx)(h,{tone:`err`,title:`Could not read the runner status`,children:l(e.error)}),(0,H.jsxs)(A,{"aria-labelledby":`machine-title`,children:[(0,H.jsx)(T,{id:`machine-title`,title:`State machine`,meta:L?J[L]:void 0,actions:L&&(0,H.jsx)(m,{tone:Y[L],dot:!0,pulse:W,children:L})}),(0,H.jsxs)(`div`,{className:`p-4`,children:[e.isPending?(0,H.jsx)(E,{className:`h-16 w-full`}):(0,H.jsx)(`ol`,{className:`flex flex-wrap items-center gap-y-3`,"aria-label":`Runner pipeline`,children:q.map((e,t)=>{let n=e===B,r=n&&W,a=B?q.indexOf(B):-1,o=a>0&&t>0&&t<a&&(e!==`repairing`||Q!==0);return(0,H.jsxs)(`li`,{className:`flex items-center`,"aria-current":n?`step`:void 0,children:[t>0&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:i(`mx-1.5 h-px w-4 sm:w-6`,o||n?`bg-fg-2/50`:`bg-line-strong`)}),(0,H.jsxs)(`span`,{className:i(`inline-flex h-7 items-center gap-1.5 rounded-full border px-3 font-mono text-[12px] transition-colors duration-200`,n?L===`paused`||L===`stopped`||e===`repairing`?`border-warn/50 bg-warn-soft text-warn`:`border-accent/60 bg-accent-soft text-accent-text shadow-[0_0_0_3px_var(--dc-accent-soft)]`:o?`border-line-strong text-fg-2`:`border-line text-faint`),children:[o&&(0,H.jsx)(k,{"aria-hidden":!0,className:`size-3`,strokeWidth:2.25}),e===`repairing`&&!o&&(0,H.jsx)(R,{"aria-hidden":!0,className:`size-3`,strokeWidth:2}),r&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse-dot rounded-full bg-current`}),e,n&&(0,H.jsxs)(`span`,{className:`sr-only`,children:[` (current`,L===e?``:`, ${L}`,`)`]})]})]},e)})}),(0,H.jsxs)(`p`,{className:`mt-3 text-[12px] text-muted`,children:[(0,H.jsx)(R,{"aria-hidden":!0,className:`mr-1 inline size-3 align-[-2px]`,strokeWidth:2}),`Failed validation loops `,(0,H.jsx)(`span`,{className:`font-mono`,children:`repairing → implementing`}),` up to `,X,` times; then the task is marked FAILED and the runner moves on.`]})]})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1fr)_340px]`,children:[(0,H.jsxs)(A,{"aria-labelledby":`current-title`,className:`xl:order-2 xl:self-start`,children:[(0,H.jsx)(T,{id:`current-title`,title:`Current task`,meta:$?`${te}/${$} tasks done`:void 0}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[e.isPending?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(E,{className:`h-4 w-40`}),(0,H.jsx)(E,{className:`h-4 w-56`})]}):z?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(v,{to:`/tasks?task=${encodeURIComponent(z.id)}`,className:`font-mono text-2xs text-muted hover:text-fg`,children:z.id}),(0,H.jsx)(`p`,{className:`text-[13px] leading-5 font-medium text-fg`,children:z.title})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,H.jsx)(ee,{status:z.status}),z.attempts!==void 0&&(0,H.jsxs)(m,{mono:!0,children:[`attempt `,z.attempts]})]}),(0,H.jsxs)(`p`,{className:`flex items-center gap-1.5 font-mono text-[12px] text-fg-2`,children:[(0,H.jsx)(b,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),z.branch??`davecode/task-${z.id}`]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Repair cycle`}),(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`flex gap-1`,"aria-hidden":!0,children:Array.from({length:X},(e,t)=>(0,H.jsx)(`span`,{className:i(`h-1.5 w-5 rounded-full`,t<Q?`bg-warn`:`bg-track`)},t))}),(0,H.jsxs)(`span`,{className:`tnum font-mono text-fg`,children:[Q,`/`,X]})]})]}),Z!==void 0&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Running for`}),(0,H.jsx)(`span`,{className:`tnum font-mono text-fg`,children:d(Z)})]})]}):(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 text-[12px] text-muted`,children:[(0,H.jsx)(S,{"aria-hidden":!0,className:`size-4`,strokeWidth:1.5}),F?`No runner attached to this gateway.`:`No task in progress.`]}),I?.lastError&&(0,H.jsx)(`p`,{className:`rounded-md border border-err/30 bg-err-soft p-2 font-mono text-2xs text-err`,children:I.lastError})]})]}),(0,H.jsx)(K,{lines:n.logs,onClear:()=>r.clearLogs(),className:`h-[480px] xl:order-1`})]}),(0,H.jsx)(w,{open:N,onClose:()=>P(!1),title:`Stop the runner?`,description:`The current step is abandoned. Work done so far stays on the task branch.`,footer:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(j,{variant:`ghost`,onClick:()=>P(!1),children:`Keep running`}),(0,H.jsx)(j,{variant:`danger`,icon:y,onClick:()=>{P(!1),U(`stop`)},children:`Stop runner`})]}),children:z&&(0,H.jsx)(`p`,{className:`font-mono text-[12px] text-muted`,children:z.id})})]})}export{Z as Runner};
@@ -1 +1 @@
1
- import{i as e,n as t,o as n,r}from"./cn-BwE4cei0.js";import{B as i,E as a,dt as o,ft as s,gt as c,o as l,t as u,vt as d,yt as f}from"./Badge-DUGKlx3Z.js";import{i as p,n as m}from"./forms-DVIUAxAc.js";import{t as h}from"./Callout-WgXHDPg0.js";import{C as g,H as _,P as v,S as y,U as b,Y as x,i as S,n as C,r as w,t as T,w as E}from"./index-CpztPbom.js";import{n as D,t as O}from"./Field-Cmpgg_1z.js";var k={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};k.node;var A=t(k),j={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};j.node;var M=t(j),N={name:`plug-zap`,size:24,node:[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]],aliases:[`plug-zap-2`]};N.node;var P=t(N),F=n(e(),1),I=r(),L=`https://github.com/DMRLZZ/DaveCode`;function R(){let e=f(),t=a(),{connection:n}=i(),[r,k]=(0,F.useState)(e.gatewayUrl),[j,N]=(0,F.useState)(e.token),[R,z]=(0,F.useState)(null),[B,V]=(0,F.useState)(!1),[H,U]=(0,F.useState)(null),W=()=>{let e=r.trim();return e&&!p(e)?`Enter an http(s) origin such as http://127.0.0.1:4040, or leave empty.`:null},G=e=>{e.preventDefault();let t=W();z(t),!t&&(d({gatewayUrl:r.trim().replace(/\/+$/,``),token:j.trim()}),g({tone:`ok`,title:`Connection settings saved`,description:`Stored in this browser only.`}))},K=async()=>{let e=W();if(z(e),!e){V(!0),U(null);try{let e=await o({baseUrl:r.trim(),token:j.trim()}).health();U({ok:!0,text:`Connected: DaveCode ${e.version}, ${e.status}, up ${l(e.uptimeSec)}.`})}catch(e){U({ok:!1,text:s(e)})}finally{V(!1)}}},q=c();return(0,I.jsxs)(`div`,{className:`flex max-w-3xl flex-col gap-4`,children:[(0,I.jsx)(C,{title:`Settings`,description:`Preferences are stored in this browser's localStorage.`}),(0,I.jsxs)(w,{"aria-labelledby":`conn-title`,children:[(0,I.jsx)(S,{id:`conn-title`,title:`Gateway connection`}),(0,I.jsxs)(`form`,{onSubmit:G,noValidate:!0,className:`flex flex-col gap-4 p-4`,children:[(0,I.jsx)(O,{label:`Gateway URL`,error:R,hint:`Leave empty when the dashboard is served by the gateway or the Vite dev proxy (same origin).`,children:({id:e,describedBy:t,invalid:n})=>(0,I.jsx)(D,{id:e,type:`url`,value:r,placeholder:`same origin`,onChange:e=>k(e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,className:`font-mono`})}),(0,I.jsx)(O,{label:`Bearer token`,hint:`Needed when server.authToken is set. Sent as Authorization: Bearer, and as ?token= for the event stream.`,children:({id:e,describedBy:t})=>(0,I.jsx)(m,{id:e,value:j,onChange:N,placeholder:`not set`,describedBy:t})}),H&&(0,I.jsx)(h,{tone:H.ok?`info`:`err`,title:H.ok?`Gateway reachable`:`Connection failed`,children:H.text}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(E,{type:`submit`,variant:`primary`,children:`Save`}),(0,I.jsx)(E,{icon:P,onClick:K,loading:B,children:`Test connection`}),n.unauthorized&&(0,I.jsx)(u,{tone:`err`,children:`gateway returned 401`})]})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`data-title`,children:[(0,I.jsx)(S,{id:`data-title`,title:`Data source`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,I.jsx)(T,{label:`Data source`,value:e.dataMode,onChange:e=>d({dataMode:e}),options:[{value:`auto`,label:`Auto`},{value:`live`,label:`Live only`},{value:`mock`,label:`Mock data`}]}),(0,I.jsxs)(`p`,{className:`text-[12px] leading-5 text-muted`,children:[(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Auto`}),` uses the gateway and falls back to simulated data when it is unreachable, re-checking every 15 s.`,` `,(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Mock data`}),` always simulates a busy gateway, handy for demos and screenshots.`]}),q&&(0,I.jsxs)(h,{tone:`info`,children:[`Mock mode is currently forced by `,(0,I.jsx)(`code`,{className:`font-mono`,children:`?mock=1`}),` or`,` `,(0,I.jsx)(`code`,{className:`font-mono`,children:`VITE_DAVECODE_MOCK=1`}),`; this setting applies once that is removed.`]})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`look-title`,children:[(0,I.jsx)(S,{id:`look-title`,title:`Appearance`}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 p-4`,children:[(0,I.jsx)(T,{label:`Theme`,value:e.theme,onChange:e=>d({theme:e}),options:[{value:`dark`,label:`Dark`,icon:_},{value:`light`,label:`Light`,icon:v},{value:`system`,label:`System`,icon:M}]}),(0,I.jsx)(E,{variant:`ghost`,icon:b,onClick:y.openHelp,children:`Keyboard shortcuts`})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`about-title`,children:[(0,I.jsx)(S,{id:`about-title`,title:`About`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4 text-[13px]`,children:[(0,I.jsxs)(`dl`,{className:`grid grid-cols-[120px_1fr] gap-y-1.5`,children:[(0,I.jsx)(`dt`,{className:`text-muted`,children:`Gateway`}),(0,I.jsx)(`dd`,{className:`font-mono text-fg-2`,children:t.data?`v${t.data.version} · ${t.data.status}`:n.mode===`probing`?`checking…`:`unreachable`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Data`}),(0,I.jsx)(`dd`,{className:`text-fg-2`,children:n.mode===`mock`?`Simulated (mock mode)`:`Live gateway`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Experimental`}),(0,I.jsxs)(`dd`,{className:`flex flex-wrap gap-1.5`,children:[(0,I.jsxs)(u,{tone:t.data?.experimental.geminiWeb?`warn`:`neutral`,mono:!0,children:[`geminiWeb `,t.data?.experimental.geminiWeb?`on`:`off`]}),(0,I.jsxs)(u,{tone:t.data?.experimental.multiAccountRotation?`warn`:`neutral`,mono:!0,children:[`multiAccountRotation `,t.data?.experimental.multiAccountRotation?`on`:`off`]})]})]}),(0,I.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:[[`README`,`${L}#readme`],[`Architecture`,`${L}/blob/main/docs/ARCHITECTURE.md`],[`HTTP API`,`${L}/blob/main/docs/API.md`]].map(([e,t])=>(0,I.jsx)(`li`,{children:(0,I.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex h-7 items-center gap-1.5 rounded-md border border-line px-2.5 text-[12px] text-fg-2 transition-colors duration-150 hover:border-line-strong hover:text-fg`,children:[(0,I.jsx)(x,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),e,(0,I.jsx)(A,{"aria-hidden":!0,className:`size-3 text-muted`,strokeWidth:1.75}),(0,I.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})},e))})]})]})]})}export{R as Settings};
1
+ import{i as e,n as t,o as n,r}from"./cn-BwE4cei0.js";import{B as i,E as a,dt as o,ft as s,gt as c,o as l,t as u,vt as d,yt as f}from"./Badge-DUGKlx3Z.js";import{i as p,n as m}from"./forms-DVIUAxAc.js";import{t as h}from"./Callout-1E8Wsl9W.js";import{C as g,H as _,P as v,S as y,U as b,Y as x,i as S,n as C,r as w,t as T,w as E}from"./index-B8kld9xo.js";import{n as D,t as O}from"./Field-Cmpgg_1z.js";var k={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};k.node;var A=t(k),j={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};j.node;var M=t(j),N={name:`plug-zap`,size:24,node:[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]],aliases:[`plug-zap-2`]};N.node;var P=t(N),F=n(e(),1),I=r(),L=`https://github.com/DMRLZZ/DaveCode`;function R(){let e=f(),t=a(),{connection:n}=i(),[r,k]=(0,F.useState)(e.gatewayUrl),[j,N]=(0,F.useState)(e.token),[R,z]=(0,F.useState)(null),[B,V]=(0,F.useState)(!1),[H,U]=(0,F.useState)(null),W=()=>{let e=r.trim();return e&&!p(e)?`Enter an http(s) origin such as http://127.0.0.1:4040, or leave empty.`:null},G=e=>{e.preventDefault();let t=W();z(t),!t&&(d({gatewayUrl:r.trim().replace(/\/+$/,``),token:j.trim()}),g({tone:`ok`,title:`Connection settings saved`,description:`Stored in this browser only.`}))},K=async()=>{let e=W();if(z(e),!e){V(!0),U(null);try{let e=await o({baseUrl:r.trim(),token:j.trim()}).health();U({ok:!0,text:`Connected: DaveCode ${e.version}, ${e.status}, up ${l(e.uptimeSec)}.`})}catch(e){U({ok:!1,text:s(e)})}finally{V(!1)}}},q=c();return(0,I.jsxs)(`div`,{className:`flex max-w-3xl flex-col gap-4`,children:[(0,I.jsx)(C,{title:`Settings`,description:`Preferences are stored in this browser's localStorage.`}),(0,I.jsxs)(w,{"aria-labelledby":`conn-title`,children:[(0,I.jsx)(S,{id:`conn-title`,title:`Gateway connection`}),(0,I.jsxs)(`form`,{onSubmit:G,noValidate:!0,className:`flex flex-col gap-4 p-4`,children:[(0,I.jsx)(O,{label:`Gateway URL`,error:R,hint:`Leave empty when the dashboard is served by the gateway or the Vite dev proxy (same origin).`,children:({id:e,describedBy:t,invalid:n})=>(0,I.jsx)(D,{id:e,type:`url`,value:r,placeholder:`same origin`,onChange:e=>k(e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,className:`font-mono`})}),(0,I.jsx)(O,{label:`Bearer token`,hint:`Needed when server.authToken is set. Sent as Authorization: Bearer, and as ?token= for the event stream.`,children:({id:e,describedBy:t})=>(0,I.jsx)(m,{id:e,value:j,onChange:N,placeholder:`not set`,describedBy:t})}),H&&(0,I.jsx)(h,{tone:H.ok?`info`:`err`,title:H.ok?`Gateway reachable`:`Connection failed`,children:H.text}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(E,{type:`submit`,variant:`primary`,children:`Save`}),(0,I.jsx)(E,{icon:P,onClick:K,loading:B,children:`Test connection`}),n.unauthorized&&(0,I.jsx)(u,{tone:`err`,children:`gateway returned 401`})]})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`data-title`,children:[(0,I.jsx)(S,{id:`data-title`,title:`Data source`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,I.jsx)(T,{label:`Data source`,value:e.dataMode,onChange:e=>d({dataMode:e}),options:[{value:`auto`,label:`Auto`},{value:`live`,label:`Live only`},{value:`mock`,label:`Mock data`}]}),(0,I.jsxs)(`p`,{className:`text-[12px] leading-5 text-muted`,children:[(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Auto`}),` uses the gateway and falls back to simulated data when it is unreachable, re-checking every 15 s.`,` `,(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Mock data`}),` always simulates a busy gateway, handy for demos and screenshots.`]}),q&&(0,I.jsxs)(h,{tone:`info`,children:[`Mock mode is currently forced by `,(0,I.jsx)(`code`,{className:`font-mono`,children:`?mock=1`}),` or`,` `,(0,I.jsx)(`code`,{className:`font-mono`,children:`VITE_DAVECODE_MOCK=1`}),`; this setting applies once that is removed.`]})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`look-title`,children:[(0,I.jsx)(S,{id:`look-title`,title:`Appearance`}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 p-4`,children:[(0,I.jsx)(T,{label:`Theme`,value:e.theme,onChange:e=>d({theme:e}),options:[{value:`dark`,label:`Dark`,icon:_},{value:`light`,label:`Light`,icon:v},{value:`system`,label:`System`,icon:M}]}),(0,I.jsx)(E,{variant:`ghost`,icon:b,onClick:y.openHelp,children:`Keyboard shortcuts`})]})]}),(0,I.jsxs)(w,{"aria-labelledby":`about-title`,children:[(0,I.jsx)(S,{id:`about-title`,title:`About`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4 text-[13px]`,children:[(0,I.jsxs)(`dl`,{className:`grid grid-cols-[120px_1fr] gap-y-1.5`,children:[(0,I.jsx)(`dt`,{className:`text-muted`,children:`Gateway`}),(0,I.jsx)(`dd`,{className:`font-mono text-fg-2`,children:t.data?`v${t.data.version} · ${t.data.status}`:n.mode===`probing`?`checking…`:`unreachable`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Data`}),(0,I.jsx)(`dd`,{className:`text-fg-2`,children:n.mode===`mock`?`Simulated (mock mode)`:`Live gateway`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Experimental`}),(0,I.jsxs)(`dd`,{className:`flex flex-wrap gap-1.5`,children:[(0,I.jsxs)(u,{tone:t.data?.experimental.geminiWeb?`warn`:`neutral`,mono:!0,children:[`geminiWeb `,t.data?.experimental.geminiWeb?`on`:`off`]}),(0,I.jsxs)(u,{tone:t.data?.experimental.multiAccountRotation?`warn`:`neutral`,mono:!0,children:[`multiAccountRotation `,t.data?.experimental.multiAccountRotation?`on`:`off`]})]})]}),(0,I.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:[[`README`,`${L}#readme`],[`Architecture`,`${L}/blob/main/docs/ARCHITECTURE.md`],[`HTTP API`,`${L}/blob/main/docs/API.md`]].map(([e,t])=>(0,I.jsx)(`li`,{children:(0,I.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex h-7 items-center gap-1.5 rounded-md border border-line px-2.5 text-[12px] text-fg-2 transition-colors duration-150 hover:border-line-strong hover:text-fg`,children:[(0,I.jsx)(x,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),e,(0,I.jsx)(A,{"aria-hidden":!0,className:`size-3 text-muted`,strokeWidth:1.75}),(0,I.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})},e))})]})]})]})}export{R as Settings};
@@ -1,2 +1,2 @@
1
- import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{G as a,H as o,J as s,K as c,L as l,N as u,S as d,U as f,W as p,X as m,Y as h,Z as g,b as _,d as v,ft as y,k as b,m as x,q as S,t as C}from"./Badge-DUGKlx3Z.js";import{n as w,t as T}from"./Markdown-CGgIydUh.js";import{t as E}from"./Callout-WgXHDPg0.js";import{n as D,t as O}from"./task-errors-r-WYZ_S3.js";import{t as k}from"./trash-BTuDcSaQ.js";import{A as ee,B as te,C as A,G as j,I as ne,K as re,O as M,b as N,d as ie,f as ae,i as oe,k as se,l as ce,m as le,n as ue,r as P,s as de,t as F,u as fe,v as I,w as L,y as R,z}from"./index-CpztPbom.js";import{i as B,n as V,t as H}from"./Field-Cmpgg_1z.js";var U={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};U.node;var pe=t(U),W={name:`kanban`,size:24,node:[[`path`,{d:`M5 3v14`,key:`9nsxs2`}],[`path`,{d:`M12 3v8`,key:`1h2ygw`}],[`path`,{d:`M19 3v18`,key:`1sk56x`}]]};W.node;var me=t(W),G={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};G.node;var he=t(G),K={name:`network`,size:24,node:[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]};K.node;var ge=t(K),q=n(e(),1),_e={nodeWidth:220,nodeHeight:60,gapX:64,gapY:16,padding:16,sweeps:4,direction:`LR`};function J(e,t={}){let n={..._e,...t},r=new Map(e.map(e=>[e.id,e])),i=[],a=[],o=new Map;for(let t of e){let e=[];for(let n of t.dependsOn)r.has(n)?e.push(n):i.push({task:t.id,dependsOn:n});o.set(t.id,e)}let s=new Map,c=new Set,l=e=>{let t=s.get(e);if(t!==void 0)return t;c.add(e);let n=0,r=[];for(let t of o.get(e)??[])c.has(t)?a.push({from:t,to:e}):(r.push(t),n=Math.max(n,l(t)+1));return o.set(e,r),c.delete(e),s.set(e,n),n};for(let t of e)l(t.id);let u=e.length?Math.max(...s.values())+1:0,d=Array.from({length:u},()=>[]),f=[...e].sort((e,t)=>(t.priority??0)-(e.priority??0)||e.id.localeCompare(t.id));for(let e of f)d[s.get(e.id)??0]?.push(e.id);let p=new Map;for(let[e,t]of o)for(let n of t)p.set(n,[...p.get(n)??[],e]);let m=new Map,h=()=>{for(let e of d)e.forEach((e,t)=>{m.set(e,t)})};h();let g=(e,t)=>{let n=(t??[]).map(e=>m.get(e)).filter(e=>e!==void 0);return n.length?n.reduce((e,t)=>e+t,0)/n.length:m.get(e)??0};for(let e=0;e<n.sweeps;e++){for(let e=1;e<d.length;e++){let t=d[e];t&&(t.sort((e,t)=>g(e,o.get(e))-g(t,o.get(t))),h())}for(let e=d.length-2;e>=0;e--){let t=d[e];t&&(t.sort((e,t)=>g(e,p.get(e))-g(t,p.get(t))),h())}}let _=n.direction===`TB`,v=Math.max(0,...d.map(e=>e.length)),y=_?n.nodeWidth:n.nodeHeight,b=_?n.gapX:n.gapY,x=_?n.nodeHeight:n.nodeWidth,S=_?n.gapY:n.gapX,C=v*y+Math.max(0,v-1)*b,w=u*x+Math.max(0,u-1)*S,T=n.padding*2+(_?C:w),E=n.padding*2+(_?w:C),D=[],O=new Map;d.forEach((e,t)=>{let r=e.length*y+Math.max(0,e.length-1)*b,i=n.padding+(C-r)/2;e.forEach((e,r)=>{let a=n.padding+t*(x+S),o=i+r*(y+b),s=_?o:a,c=_?a:o;O.set(e,{x:s,y:c}),D.push({id:e,layer:t,order:r,x:s,y:c})})});let k=[];for(let t of e){let e=O.get(t.id);if(e)for(let r of o.get(t.id)??[]){let i=O.get(r);if(!i)continue;let a;if(_){let t=i.x+n.nodeWidth/2,r=i.y+n.nodeHeight,o=e.x+n.nodeWidth/2,s=e.y,c=Math.max(20,(s-r)/2);a=`M${t},${r} C${t},${r+c} ${o},${s-c} ${o},${s}`}else{let t=i.x+n.nodeWidth,r=i.y+n.nodeHeight/2,o=e.x,s=e.y+n.nodeHeight/2,c=Math.max(24,(o-t)/2);a=`M${t},${r} C${t+c},${r} ${o-c},${s} ${o},${s}`}k.push({from:r,to:t.id,path:a})}}return{nodes:D,edges:k,width:T,height:E,layers:u,missing:i,cycleEdges:a}}function ve(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map,r=new Set,i=e=>{let a=n.get(e);if(a)return a;let o=t.get(e);if(!o)return`waiting`;let s={SUCCESS:`done`,IN_PROGRESS:`running`,FAILED:`failed`,PENDING:null}[o.status];if(!s){if(r.has(e))return`waiting`;r.add(e);let n=o.dependsOn.filter(e=>t.has(e)).map(i);r.delete(e),s=n.some(e=>e===`failed`||e===`blocked`)?`blocked`:n.every(e=>e===`done`)?`ready`:`waiting`}return n.set(e,s),s};for(let t of e)i(t.id);return n}function ye(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map;for(let t of e)for(let e of t.dependsOn)r.set(e,[...r.get(e)??[],t.id]);let i=(e,t)=>{let n=new Set,r=[...t(e)];for(;r.length;){let e=r.pop();e===void 0||n.has(e)||(n.add(e),r.push(...t(e)))}return n};return{up:i(t,e=>n.get(e)?.dependsOn??[]),down:i(t,e=>r.get(e)??[])}}var Y=r();function be({task:e,tasks:t,readiness:n,onSelect:r,onClose:i,onEdit:a}){let o=l(),s=d(),c=b(),[u,f]=(0,q.useState)(!1),[p,m]=(0,q.useState)(null),g=(t,n)=>o.mutate({id:e.id,patch:{status:t}},{onSuccess:()=>A({tone:`ok`,title:n,description:e.id}),onError:e=>A({tone:`err`,title:`Could not ${n.toLowerCase()}`,description:O(e)})}),_=()=>c.mutate(e.id,{onSuccess:()=>A({tone:`info`,title:`Runner started`,description:e.id}),onError:e=>A({tone:`err`,title:`Could not start the runner`,description:O(e)})}),y=()=>s.mutate(e.id,{onSuccess:()=>{A({tone:`ok`,title:`Task deleted`,description:e.id}),f(!1),i()},onError:e=>m(O(e))}),x=new Map(t.map(e=>[e.id,e])),S=t.filter(t=>t.dependsOn.includes(e.id)),w=e.status===`SUCCESS`;return(0,Y.jsxs)(`article`,{"aria-labelledby":`task-title`,className:`flex flex-col gap-4 p-4`,children:[(0,Y.jsxs)(`header`,{className:`flex items-start gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`p`,{className:`flex items-center gap-1 font-mono text-2xs text-muted`,children:[e.id,(0,Y.jsx)(le,{value:e.id,label:`Copy task id`,className:`size-5`})]}),(0,Y.jsx)(`h3`,{id:`task-title`,className:`mt-0.5 text-[15px] leading-5 font-semibold tracking-tight text-fg`,children:e.title})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Close task details`,className:`-mr-1 inline-flex size-7 items-center justify-center rounded-md text-muted hover:bg-hover hover:text-fg`,children:(0,Y.jsx)(ee,{"aria-hidden":!0,className:`size-4`,strokeWidth:1.75})})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,Y.jsx)(R,{status:e.status}),n===`ready`&&(0,Y.jsx)(C,{tone:`ok`,children:`ready to run`}),n===`blocked`&&(0,Y.jsx)(C,{tone:`err`,children:`blocked by a failed dependency`}),e.priority!==void 0&&(0,Y.jsxs)(C,{mono:!0,children:[`priority `,e.priority]}),e.attempts!==void 0&&(0,Y.jsxs)(C,{mono:!0,children:[`attempt `,e.attempts]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[n===`ready`&&(0,Y.jsx)(L,{size:`sm`,variant:`primary`,icon:te,loading:c.isPending,onClick:_,children:`Run now`}),h(e.status).map(e=>(0,Y.jsx)(L,{size:`sm`,variant:e.variant,disabled:o.isPending,onClick:()=>g(e.to,e.label),children:e.label},e.to)),(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,Y.jsx)(L,{size:`sm`,variant:`ghost`,icon:D,onClick:a,children:`Edit`}),(0,Y.jsx)(L,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:k,"aria-label":`Delete task ${e.id}`,onClick:()=>{m(null),f(!0)},className:`text-err hover:bg-err-soft hover:text-err`})]})]}),e.branch&&(0,Y.jsxs)(`p`,{className:`flex items-center gap-1.5 font-mono text-[12px] text-fg-2`,children:[(0,Y.jsx)(j,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),e.branch]}),e.description&&(0,Y.jsx)(`p`,{className:`text-[13px] leading-5 text-fg-2`,children:e.description}),e.acceptance&&e.acceptance.length>0&&(0,Y.jsxs)(`section`,{"aria-labelledby":`acc-title`,children:[(0,Y.jsx)(`h4`,{id:`acc-title`,className:`eyebrow mb-1.5`,children:`Acceptance criteria`}),(0,Y.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.acceptance.map(e=>(0,Y.jsxs)(`li`,{className:`flex items-start gap-2 text-[13px] leading-5 text-fg-2`,children:[w?(0,Y.jsx)(re,{"aria-label":`met`,className:`mt-0.5 size-3.5 shrink-0 text-ok`,strokeWidth:1.75}):(0,Y.jsx)(pe,{"aria-label":`not verified yet`,className:`mt-0.5 size-3.5 shrink-0 text-faint`,strokeWidth:1.75}),e]},e))})]}),e.notes&&(0,Y.jsxs)(`section`,{"aria-labelledby":`notes-title`,children:[(0,Y.jsx)(`h4`,{id:`notes-title`,className:`eyebrow mb-1.5`,children:`Notes`}),(0,Y.jsx)(`p`,{className:`rounded-md border border-line bg-raised p-2.5 text-[12px] leading-5 text-fg-2`,children:e.notes})]}),(0,Y.jsxs)(`section`,{"aria-labelledby":`deps-title`,className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{id:`deps-title`,className:`eyebrow mb-1.5`,children:`Depends on`}),(0,Y.jsx)(X,{ids:e.dependsOn,byId:x,onSelect:r})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`eyebrow mb-1.5`,children:`Unblocks`}),(0,Y.jsx)(X,{ids:S.map(e=>e.id),byId:x,onSelect:r})]})]}),e.updatedAt&&(0,Y.jsxs)(`p`,{className:`text-2xs text-muted`,children:[`Updated `,v(Date.parse(e.updatedAt))]}),(0,Y.jsxs)(ie,{open:u,onClose:()=>f(!1),title:`Delete ${e.id}?`,description:S.length>0?`Other tasks depend on this one, so the gateway will refuse until those dependencies are removed.`:`The task is removed from TASK_GRAPH.json. Its branch and any merged work stay in git.`,footer:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(L,{variant:`ghost`,onClick:()=>f(!1),children:`Keep task`}),(0,Y.jsx)(L,{variant:`danger`,icon:k,loading:s.isPending,onClick:y,children:`Delete task`})]}),children:[(0,Y.jsx)(`p`,{className:`truncate text-[13px] text-fg-2`,children:e.title}),S.length>0&&(0,Y.jsxs)(`p`,{className:`mt-2 font-mono text-[12px] text-muted`,children:[`Needed by `,S.map(e=>e.id).join(`, `)]}),p&&(0,Y.jsx)(E,{tone:`err`,title:`Could not delete the task`,className:`mt-3`,children:p})]})]})}function X({ids:e,byId:t,onSelect:n}){return e.length===0?(0,Y.jsx)(`p`,{className:`text-[12px] text-faint`,children:`None`}):(0,Y.jsx)(`ul`,{className:`flex flex-col gap-0.5`,children:e.map(e=>{let r=t.get(e);return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:`flex w-full min-w-0 items-center gap-1.5 rounded px-1 py-0.5 text-left font-mono text-[12px] text-fg-2 hover:bg-hover hover:text-fg`,children:[r?(0,Y.jsx)(N,{status:r.status}):(0,Y.jsx)(`span`,{className:`text-err`,children:`?`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e})]})},e)})})}var Z=204,Q=56,xe={SUCCESS:`stroke-ok/50`,IN_PROGRESS:`stroke-info/70`,FAILED:`stroke-err/70`,PENDING:`stroke-line-strong`},Se={SUCCESS:`border-line-strong`,IN_PROGRESS:`border-info/50 shadow-[0_0_0_3px_var(--dc-info-soft)]`,FAILED:`border-err/50`,PENDING:`border-line-strong border-dashed`};function Ce({tasks:e,ready:t,selectedId:n,onSelect:r}){let a=(0,q.useMemo)(()=>J(e,{nodeWidth:Z,nodeHeight:Q,gapX:14,gapY:40,padding:20,direction:`TB`}),[e]),[o,s]=(0,q.useState)(null),c=o??n,l=(0,q.useMemo)(()=>c?ye(e,c):null,[e,c]),u=(0,q.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]),d=e=>!l||e===c||l.up.has(e)||l.down.has(e),f=(e,t)=>!l||(e===c||l.up.has(e))&&(t===c||l.up.has(t))||(t===c||l.down.has(t))&&(e===c||l.down.has(e));return(0,Y.jsx)(`div`,{className:`relative overflow-x-auto`,children:(0,Y.jsxs)(`div`,{className:`relative mx-auto`,style:{width:a.width,height:a.height},children:[(0,Y.jsxs)(`svg`,{width:a.width,height:a.height,className:`pointer-events-none absolute inset-0`,"aria-hidden":!0,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`marker`,{id:`dag-arrow`,viewBox:`0 0 8 8`,refX:`7`,refY:`4`,markerWidth:`6`,markerHeight:`6`,orient:`auto`,children:(0,Y.jsx)(`path`,{d:`M0,0 L8,4 L0,8 z`,className:`fill-faint`})})}),a.edges.map(e=>{let t=u.get(e.from),n=f(e.from,e.to);return(0,Y.jsx)(`path`,{d:e.path,fill:`none`,strokeWidth:n&&l?1.75:1.25,markerEnd:`url(#dag-arrow)`,className:i(`transition-opacity duration-200`,t?xe[t.status]:`stroke-line-strong`,!n&&`opacity-20`)},`${e.from}->${e.to}`)})]}),a.nodes.map(e=>{let a=u.get(e.id);if(!a)return null;let o=t.get(a.id),c=a.id===n;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(a.id),onPointerEnter:()=>s(a.id),onPointerLeave:()=>s(null),onFocus:()=>s(a.id),onBlur:()=>s(null),"aria-pressed":c,"aria-label":`${a.id}: ${a.title}. ${a.status.toLowerCase().replace(`_`,` `)}${o===`ready`?`, ready to run`:o===`blocked`?`, blocked by a failed dependency`:``}`,className:i(`absolute flex flex-col justify-center gap-1 rounded-md border bg-panel px-2.5 text-left transition-[opacity,border-color,box-shadow,transform] duration-200 ease-snappy`,`hover:-translate-y-px hover:border-fg-2/40`,Se[a.status],c&&`border-accent shadow-[0_0_0_3px_var(--dc-accent-soft)]`,!d(a.id)&&`opacity-35`),style:{left:e.x,top:e.y,width:Z,height:Q},children:[(0,Y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,Y.jsx)(N,{status:a.status}),(0,Y.jsx)(`span`,{className:`truncate font-mono text-2xs text-muted`,children:a.id}),o===`ready`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-ok/30 px-1 text-[10px] leading-4 text-ok`,children:`ready`}),o===`blocked`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-err/30 px-1 text-[10px] leading-4 text-err`,children:`blocked`}),a.status===`IN_PROGRESS`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-info/30 px-1 text-[10px] leading-4 text-info`,children:`running`})]}),(0,Y.jsx)(`span`,{className:`truncate text-[12px] leading-4 text-fg`,children:a.title})]},e.id)})]})})}function $({open:e,task:t,tasks:n,onClose:r}){let i=t!==void 0;return(0,Y.jsx)(ae,{open:e,onClose:r,title:i?`Edit task`:`New task`,description:i?(0,Y.jsx)(`span`,{className:`font-mono`,children:t.id}):`The task starts as pending and is picked up in dependency order.`,width:`w-[min(560px,100vw)]`,children:e&&(0,Y.jsx)(we,{task:t,tasks:n,onDone:r},t?.id??`new`)})}function we({task:e,tasks:t,onDone:n}){let r=_(),i=l(),[u,d]=(0,q.useState)(()=>e?p(e):a()),[f,h]=(0,q.useState)(!1),[v,y]=(0,q.useState)({}),[b,x]=(0,q.useState)(null),C=r.isPending||i.isPending,w=(e,t)=>d(n=>({...n,[e]:t})),T=n=>d(r=>({...r,title:n,...!e&&!f?{id:m(s(n),t)}:{}}));return(0,Y.jsxs)(`form`,{onSubmit:async a=>{a.preventDefault(),x(null);let s=g(u,t,e?.id);if(y(s),!(Object.keys(s).length>0))try{if(e){let t=S(e,u);c(t)||await i.mutateAsync({id:e.id,patch:t}),A({tone:`ok`,title:`Task updated`,description:e.id})}else{let e=await r.mutateAsync(o(u));A({tone:`ok`,title:`Task created`,description:e.id})}n()}catch(e){x(O(e))}},noValidate:!0,className:`flex flex-col gap-5`,children:[(0,Y.jsx)(H,{label:`Title`,required:!0,error:v.title,children:({id:e,describedBy:t,invalid:n})=>(0,Y.jsx)(V,{id:e,autoFocus:!0,value:u.title,onChange:e=>T(e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,placeholder:`Add the /health endpoint`})}),!e&&(0,Y.jsx)(H,{label:`Id`,required:!0,error:v.id,hint:`Lowercase kebab-case. Used for the branch name and in dependencies; it cannot change later.`,children:({id:e,describedBy:t,invalid:n})=>(0,Y.jsx)(V,{id:e,value:u.id,onChange:e=>{h(!0),w(`id`,e.target.value)},"aria-describedby":t,"aria-invalid":n||void 0,spellCheck:!1,autoCapitalize:`off`,className:`font-mono`})}),(0,Y.jsx)(H,{label:`Description`,children:({id:e,describedBy:t})=>(0,Y.jsx)(B,{id:e,value:u.description,onChange:e=>w(`description`,e.target.value),"aria-describedby":t,placeholder:`What needs to be done and why.`})}),(0,Y.jsx)(H,{label:`Acceptance criteria`,hint:`One per line. The validator and judge check the result against these.`,children:({id:e,describedBy:t})=>(0,Y.jsx)(B,{id:e,value:u.acceptance,onChange:e=>w(`acceptance`,e.target.value),"aria-describedby":t,placeholder:`GET /health returns 200
1
+ import{i as e,n as t,o as n,r,t as i}from"./cn-BwE4cei0.js";import{G as a,H as o,J as s,K as c,L as l,N as u,S as d,U as f,W as p,X as m,Y as h,Z as g,b as _,d as v,ft as y,k as b,m as x,q as S,t as C}from"./Badge-DUGKlx3Z.js";import{n as w,t as T}from"./Markdown-CGgIydUh.js";import{t as E}from"./Callout-1E8Wsl9W.js";import{n as D,t as O}from"./task-errors-r-WYZ_S3.js";import{t as k}from"./trash-BTuDcSaQ.js";import{A as ee,B as te,C as A,G as j,I as ne,K as re,O as M,b as N,d as ie,f as ae,i as oe,k as se,l as ce,m as le,n as ue,r as P,s as de,t as F,u as fe,v as I,w as L,y as R,z}from"./index-B8kld9xo.js";import{i as B,n as V,t as H}from"./Field-Cmpgg_1z.js";var U={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};U.node;var pe=t(U),W={name:`kanban`,size:24,node:[[`path`,{d:`M5 3v14`,key:`9nsxs2`}],[`path`,{d:`M12 3v8`,key:`1h2ygw`}],[`path`,{d:`M19 3v18`,key:`1sk56x`}]]};W.node;var me=t(W),G={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};G.node;var he=t(G),K={name:`network`,size:24,node:[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]};K.node;var ge=t(K),q=n(e(),1),_e={nodeWidth:220,nodeHeight:60,gapX:64,gapY:16,padding:16,sweeps:4,direction:`LR`};function J(e,t={}){let n={..._e,...t},r=new Map(e.map(e=>[e.id,e])),i=[],a=[],o=new Map;for(let t of e){let e=[];for(let n of t.dependsOn)r.has(n)?e.push(n):i.push({task:t.id,dependsOn:n});o.set(t.id,e)}let s=new Map,c=new Set,l=e=>{let t=s.get(e);if(t!==void 0)return t;c.add(e);let n=0,r=[];for(let t of o.get(e)??[])c.has(t)?a.push({from:t,to:e}):(r.push(t),n=Math.max(n,l(t)+1));return o.set(e,r),c.delete(e),s.set(e,n),n};for(let t of e)l(t.id);let u=e.length?Math.max(...s.values())+1:0,d=Array.from({length:u},()=>[]),f=[...e].sort((e,t)=>(t.priority??0)-(e.priority??0)||e.id.localeCompare(t.id));for(let e of f)d[s.get(e.id)??0]?.push(e.id);let p=new Map;for(let[e,t]of o)for(let n of t)p.set(n,[...p.get(n)??[],e]);let m=new Map,h=()=>{for(let e of d)e.forEach((e,t)=>{m.set(e,t)})};h();let g=(e,t)=>{let n=(t??[]).map(e=>m.get(e)).filter(e=>e!==void 0);return n.length?n.reduce((e,t)=>e+t,0)/n.length:m.get(e)??0};for(let e=0;e<n.sweeps;e++){for(let e=1;e<d.length;e++){let t=d[e];t&&(t.sort((e,t)=>g(e,o.get(e))-g(t,o.get(t))),h())}for(let e=d.length-2;e>=0;e--){let t=d[e];t&&(t.sort((e,t)=>g(e,p.get(e))-g(t,p.get(t))),h())}}let _=n.direction===`TB`,v=Math.max(0,...d.map(e=>e.length)),y=_?n.nodeWidth:n.nodeHeight,b=_?n.gapX:n.gapY,x=_?n.nodeHeight:n.nodeWidth,S=_?n.gapY:n.gapX,C=v*y+Math.max(0,v-1)*b,w=u*x+Math.max(0,u-1)*S,T=n.padding*2+(_?C:w),E=n.padding*2+(_?w:C),D=[],O=new Map;d.forEach((e,t)=>{let r=e.length*y+Math.max(0,e.length-1)*b,i=n.padding+(C-r)/2;e.forEach((e,r)=>{let a=n.padding+t*(x+S),o=i+r*(y+b),s=_?o:a,c=_?a:o;O.set(e,{x:s,y:c}),D.push({id:e,layer:t,order:r,x:s,y:c})})});let k=[];for(let t of e){let e=O.get(t.id);if(e)for(let r of o.get(t.id)??[]){let i=O.get(r);if(!i)continue;let a;if(_){let t=i.x+n.nodeWidth/2,r=i.y+n.nodeHeight,o=e.x+n.nodeWidth/2,s=e.y,c=Math.max(20,(s-r)/2);a=`M${t},${r} C${t},${r+c} ${o},${s-c} ${o},${s}`}else{let t=i.x+n.nodeWidth,r=i.y+n.nodeHeight/2,o=e.x,s=e.y+n.nodeHeight/2,c=Math.max(24,(o-t)/2);a=`M${t},${r} C${t+c},${r} ${o-c},${s} ${o},${s}`}k.push({from:r,to:t.id,path:a})}}return{nodes:D,edges:k,width:T,height:E,layers:u,missing:i,cycleEdges:a}}function ve(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map,r=new Set,i=e=>{let a=n.get(e);if(a)return a;let o=t.get(e);if(!o)return`waiting`;let s={SUCCESS:`done`,IN_PROGRESS:`running`,FAILED:`failed`,PENDING:null}[o.status];if(!s){if(r.has(e))return`waiting`;r.add(e);let n=o.dependsOn.filter(e=>t.has(e)).map(i);r.delete(e),s=n.some(e=>e===`failed`||e===`blocked`)?`blocked`:n.every(e=>e===`done`)?`ready`:`waiting`}return n.set(e,s),s};for(let t of e)i(t.id);return n}function ye(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map;for(let t of e)for(let e of t.dependsOn)r.set(e,[...r.get(e)??[],t.id]);let i=(e,t)=>{let n=new Set,r=[...t(e)];for(;r.length;){let e=r.pop();e===void 0||n.has(e)||(n.add(e),r.push(...t(e)))}return n};return{up:i(t,e=>n.get(e)?.dependsOn??[]),down:i(t,e=>r.get(e)??[])}}var Y=r();function be({task:e,tasks:t,readiness:n,onSelect:r,onClose:i,onEdit:a}){let o=l(),s=d(),c=b(),[u,f]=(0,q.useState)(!1),[p,m]=(0,q.useState)(null),g=(t,n)=>o.mutate({id:e.id,patch:{status:t}},{onSuccess:()=>A({tone:`ok`,title:n,description:e.id}),onError:e=>A({tone:`err`,title:`Could not ${n.toLowerCase()}`,description:O(e)})}),_=()=>c.mutate(e.id,{onSuccess:()=>A({tone:`info`,title:`Runner started`,description:e.id}),onError:e=>A({tone:`err`,title:`Could not start the runner`,description:O(e)})}),y=()=>s.mutate(e.id,{onSuccess:()=>{A({tone:`ok`,title:`Task deleted`,description:e.id}),f(!1),i()},onError:e=>m(O(e))}),x=new Map(t.map(e=>[e.id,e])),S=t.filter(t=>t.dependsOn.includes(e.id)),w=e.status===`SUCCESS`;return(0,Y.jsxs)(`article`,{"aria-labelledby":`task-title`,className:`flex flex-col gap-4 p-4`,children:[(0,Y.jsxs)(`header`,{className:`flex items-start gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`p`,{className:`flex items-center gap-1 font-mono text-2xs text-muted`,children:[e.id,(0,Y.jsx)(le,{value:e.id,label:`Copy task id`,className:`size-5`})]}),(0,Y.jsx)(`h3`,{id:`task-title`,className:`mt-0.5 text-[15px] leading-5 font-semibold tracking-tight text-fg`,children:e.title})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Close task details`,className:`-mr-1 inline-flex size-7 items-center justify-center rounded-md text-muted hover:bg-hover hover:text-fg`,children:(0,Y.jsx)(ee,{"aria-hidden":!0,className:`size-4`,strokeWidth:1.75})})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,Y.jsx)(R,{status:e.status}),n===`ready`&&(0,Y.jsx)(C,{tone:`ok`,children:`ready to run`}),n===`blocked`&&(0,Y.jsx)(C,{tone:`err`,children:`blocked by a failed dependency`}),e.priority!==void 0&&(0,Y.jsxs)(C,{mono:!0,children:[`priority `,e.priority]}),e.attempts!==void 0&&(0,Y.jsxs)(C,{mono:!0,children:[`attempt `,e.attempts]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[n===`ready`&&(0,Y.jsx)(L,{size:`sm`,variant:`primary`,icon:te,loading:c.isPending,onClick:_,children:`Run now`}),h(e.status).map(e=>(0,Y.jsx)(L,{size:`sm`,variant:e.variant,disabled:o.isPending,onClick:()=>g(e.to,e.label),children:e.label},e.to)),(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,Y.jsx)(L,{size:`sm`,variant:`ghost`,icon:D,onClick:a,children:`Edit`}),(0,Y.jsx)(L,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:k,"aria-label":`Delete task ${e.id}`,onClick:()=>{m(null),f(!0)},className:`text-err hover:bg-err-soft hover:text-err`})]})]}),e.branch&&(0,Y.jsxs)(`p`,{className:`flex items-center gap-1.5 font-mono text-[12px] text-fg-2`,children:[(0,Y.jsx)(j,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),e.branch]}),e.description&&(0,Y.jsx)(`p`,{className:`text-[13px] leading-5 text-fg-2`,children:e.description}),e.acceptance&&e.acceptance.length>0&&(0,Y.jsxs)(`section`,{"aria-labelledby":`acc-title`,children:[(0,Y.jsx)(`h4`,{id:`acc-title`,className:`eyebrow mb-1.5`,children:`Acceptance criteria`}),(0,Y.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.acceptance.map(e=>(0,Y.jsxs)(`li`,{className:`flex items-start gap-2 text-[13px] leading-5 text-fg-2`,children:[w?(0,Y.jsx)(re,{"aria-label":`met`,className:`mt-0.5 size-3.5 shrink-0 text-ok`,strokeWidth:1.75}):(0,Y.jsx)(pe,{"aria-label":`not verified yet`,className:`mt-0.5 size-3.5 shrink-0 text-faint`,strokeWidth:1.75}),e]},e))})]}),e.notes&&(0,Y.jsxs)(`section`,{"aria-labelledby":`notes-title`,children:[(0,Y.jsx)(`h4`,{id:`notes-title`,className:`eyebrow mb-1.5`,children:`Notes`}),(0,Y.jsx)(`p`,{className:`rounded-md border border-line bg-raised p-2.5 text-[12px] leading-5 text-fg-2`,children:e.notes})]}),(0,Y.jsxs)(`section`,{"aria-labelledby":`deps-title`,className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{id:`deps-title`,className:`eyebrow mb-1.5`,children:`Depends on`}),(0,Y.jsx)(X,{ids:e.dependsOn,byId:x,onSelect:r})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`eyebrow mb-1.5`,children:`Unblocks`}),(0,Y.jsx)(X,{ids:S.map(e=>e.id),byId:x,onSelect:r})]})]}),e.updatedAt&&(0,Y.jsxs)(`p`,{className:`text-2xs text-muted`,children:[`Updated `,v(Date.parse(e.updatedAt))]}),(0,Y.jsxs)(ie,{open:u,onClose:()=>f(!1),title:`Delete ${e.id}?`,description:S.length>0?`Other tasks depend on this one, so the gateway will refuse until those dependencies are removed.`:`The task is removed from TASK_GRAPH.json. Its branch and any merged work stay in git.`,footer:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(L,{variant:`ghost`,onClick:()=>f(!1),children:`Keep task`}),(0,Y.jsx)(L,{variant:`danger`,icon:k,loading:s.isPending,onClick:y,children:`Delete task`})]}),children:[(0,Y.jsx)(`p`,{className:`truncate text-[13px] text-fg-2`,children:e.title}),S.length>0&&(0,Y.jsxs)(`p`,{className:`mt-2 font-mono text-[12px] text-muted`,children:[`Needed by `,S.map(e=>e.id).join(`, `)]}),p&&(0,Y.jsx)(E,{tone:`err`,title:`Could not delete the task`,className:`mt-3`,children:p})]})]})}function X({ids:e,byId:t,onSelect:n}){return e.length===0?(0,Y.jsx)(`p`,{className:`text-[12px] text-faint`,children:`None`}):(0,Y.jsx)(`ul`,{className:`flex flex-col gap-0.5`,children:e.map(e=>{let r=t.get(e);return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:`flex w-full min-w-0 items-center gap-1.5 rounded px-1 py-0.5 text-left font-mono text-[12px] text-fg-2 hover:bg-hover hover:text-fg`,children:[r?(0,Y.jsx)(N,{status:r.status}):(0,Y.jsx)(`span`,{className:`text-err`,children:`?`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e})]})},e)})})}var Z=204,Q=56,xe={SUCCESS:`stroke-ok/50`,IN_PROGRESS:`stroke-info/70`,FAILED:`stroke-err/70`,PENDING:`stroke-line-strong`},Se={SUCCESS:`border-line-strong`,IN_PROGRESS:`border-info/50 shadow-[0_0_0_3px_var(--dc-info-soft)]`,FAILED:`border-err/50`,PENDING:`border-line-strong border-dashed`};function Ce({tasks:e,ready:t,selectedId:n,onSelect:r}){let a=(0,q.useMemo)(()=>J(e,{nodeWidth:Z,nodeHeight:Q,gapX:14,gapY:40,padding:20,direction:`TB`}),[e]),[o,s]=(0,q.useState)(null),c=o??n,l=(0,q.useMemo)(()=>c?ye(e,c):null,[e,c]),u=(0,q.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]),d=e=>!l||e===c||l.up.has(e)||l.down.has(e),f=(e,t)=>!l||(e===c||l.up.has(e))&&(t===c||l.up.has(t))||(t===c||l.down.has(t))&&(e===c||l.down.has(e));return(0,Y.jsx)(`div`,{className:`relative overflow-x-auto`,children:(0,Y.jsxs)(`div`,{className:`relative mx-auto`,style:{width:a.width,height:a.height},children:[(0,Y.jsxs)(`svg`,{width:a.width,height:a.height,className:`pointer-events-none absolute inset-0`,"aria-hidden":!0,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`marker`,{id:`dag-arrow`,viewBox:`0 0 8 8`,refX:`7`,refY:`4`,markerWidth:`6`,markerHeight:`6`,orient:`auto`,children:(0,Y.jsx)(`path`,{d:`M0,0 L8,4 L0,8 z`,className:`fill-faint`})})}),a.edges.map(e=>{let t=u.get(e.from),n=f(e.from,e.to);return(0,Y.jsx)(`path`,{d:e.path,fill:`none`,strokeWidth:n&&l?1.75:1.25,markerEnd:`url(#dag-arrow)`,className:i(`transition-opacity duration-200`,t?xe[t.status]:`stroke-line-strong`,!n&&`opacity-20`)},`${e.from}->${e.to}`)})]}),a.nodes.map(e=>{let a=u.get(e.id);if(!a)return null;let o=t.get(a.id),c=a.id===n;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(a.id),onPointerEnter:()=>s(a.id),onPointerLeave:()=>s(null),onFocus:()=>s(a.id),onBlur:()=>s(null),"aria-pressed":c,"aria-label":`${a.id}: ${a.title}. ${a.status.toLowerCase().replace(`_`,` `)}${o===`ready`?`, ready to run`:o===`blocked`?`, blocked by a failed dependency`:``}`,className:i(`absolute flex flex-col justify-center gap-1 rounded-md border bg-panel px-2.5 text-left transition-[opacity,border-color,box-shadow,transform] duration-200 ease-snappy`,`hover:-translate-y-px hover:border-fg-2/40`,Se[a.status],c&&`border-accent shadow-[0_0_0_3px_var(--dc-accent-soft)]`,!d(a.id)&&`opacity-35`),style:{left:e.x,top:e.y,width:Z,height:Q},children:[(0,Y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,Y.jsx)(N,{status:a.status}),(0,Y.jsx)(`span`,{className:`truncate font-mono text-2xs text-muted`,children:a.id}),o===`ready`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-ok/30 px-1 text-[10px] leading-4 text-ok`,children:`ready`}),o===`blocked`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-err/30 px-1 text-[10px] leading-4 text-err`,children:`blocked`}),a.status===`IN_PROGRESS`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 rounded border border-info/30 px-1 text-[10px] leading-4 text-info`,children:`running`})]}),(0,Y.jsx)(`span`,{className:`truncate text-[12px] leading-4 text-fg`,children:a.title})]},e.id)})]})})}function $({open:e,task:t,tasks:n,onClose:r}){let i=t!==void 0;return(0,Y.jsx)(ae,{open:e,onClose:r,title:i?`Edit task`:`New task`,description:i?(0,Y.jsx)(`span`,{className:`font-mono`,children:t.id}):`The task starts as pending and is picked up in dependency order.`,width:`w-[min(560px,100vw)]`,children:e&&(0,Y.jsx)(we,{task:t,tasks:n,onDone:r},t?.id??`new`)})}function we({task:e,tasks:t,onDone:n}){let r=_(),i=l(),[u,d]=(0,q.useState)(()=>e?p(e):a()),[f,h]=(0,q.useState)(!1),[v,y]=(0,q.useState)({}),[b,x]=(0,q.useState)(null),C=r.isPending||i.isPending,w=(e,t)=>d(n=>({...n,[e]:t})),T=n=>d(r=>({...r,title:n,...!e&&!f?{id:m(s(n),t)}:{}}));return(0,Y.jsxs)(`form`,{onSubmit:async a=>{a.preventDefault(),x(null);let s=g(u,t,e?.id);if(y(s),!(Object.keys(s).length>0))try{if(e){let t=S(e,u);c(t)||await i.mutateAsync({id:e.id,patch:t}),A({tone:`ok`,title:`Task updated`,description:e.id})}else{let e=await r.mutateAsync(o(u));A({tone:`ok`,title:`Task created`,description:e.id})}n()}catch(e){x(O(e))}},noValidate:!0,className:`flex flex-col gap-5`,children:[(0,Y.jsx)(H,{label:`Title`,required:!0,error:v.title,children:({id:e,describedBy:t,invalid:n})=>(0,Y.jsx)(V,{id:e,autoFocus:!0,value:u.title,onChange:e=>T(e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,placeholder:`Add the /health endpoint`})}),!e&&(0,Y.jsx)(H,{label:`Id`,required:!0,error:v.id,hint:`Lowercase kebab-case. Used for the branch name and in dependencies; it cannot change later.`,children:({id:e,describedBy:t,invalid:n})=>(0,Y.jsx)(V,{id:e,value:u.id,onChange:e=>{h(!0),w(`id`,e.target.value)},"aria-describedby":t,"aria-invalid":n||void 0,spellCheck:!1,autoCapitalize:`off`,className:`font-mono`})}),(0,Y.jsx)(H,{label:`Description`,children:({id:e,describedBy:t})=>(0,Y.jsx)(B,{id:e,value:u.description,onChange:e=>w(`description`,e.target.value),"aria-describedby":t,placeholder:`What needs to be done and why.`})}),(0,Y.jsx)(H,{label:`Acceptance criteria`,hint:`One per line. The validator and judge check the result against these.`,children:({id:e,describedBy:t})=>(0,Y.jsx)(B,{id:e,value:u.acceptance,onChange:e=>w(`acceptance`,e.target.value),"aria-describedby":t,placeholder:`GET /health returns 200
2
2
  The route has a test`})}),(0,Y.jsx)(H,{label:`Priority`,error:v.priority,hint:`Higher runs first among unblocked tasks. Empty means 0.`,className:`max-w-40`,children:({id:e,describedBy:t,invalid:n})=>(0,Y.jsx)(V,{id:e,inputMode:`decimal`,value:u.priority,onChange:e=>w(`priority`,e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,className:`tnum font-mono`})}),(0,Y.jsx)(Te,{tasks:t,selfId:e?.id,value:u.dependsOn,onChange:e=>w(`dependsOn`,e),error:v.dependsOn}),e&&(0,Y.jsx)(H,{label:`Notes`,hint:`Written by the runner after each attempt; edit to leave a hint.`,children:({id:e,describedBy:t})=>(0,Y.jsx)(B,{id:e,value:u.notes,onChange:e=>w(`notes`,e.target.value),"aria-describedby":t})}),b&&(0,Y.jsx)(E,{tone:`err`,title:e?`Could not save the task`:`Could not create the task`,children:b}),(0,Y.jsxs)(`div`,{className:`sticky -bottom-4 -mx-5 -mb-4 flex items-center justify-end gap-2 border-t border-line bg-panel px-5 py-3`,children:[(0,Y.jsx)(L,{variant:`ghost`,onClick:n,children:`Cancel`}),(0,Y.jsx)(L,{type:`submit`,variant:`primary`,loading:C,children:e?`Save changes`:`Create task`})]})]})}function Te({tasks:e,selfId:t,value:n,onChange:r,error:a}){let[o,s]=(0,q.useState)(``),c=(0,q.useMemo)(()=>f(e,t),[e,t]),l=new Set(e.map(e=>e.id)),u=e.length-c.length-+!!t,d=o.trim().toLowerCase(),p=c.filter(e=>!d||e.id.toLowerCase().includes(d)||e.title.toLowerCase().includes(d)),m=n.filter(e=>!l.has(e)),h=(e,t)=>r(t?[...n,e]:n.filter(t=>t!==e));return(0,Y.jsxs)(`fieldset`,{className:`flex flex-col gap-1.5`,"aria-describedby":a?`deps-error`:void 0,children:[(0,Y.jsxs)(`legend`,{className:`mb-1.5 flex w-full items-baseline gap-2 text-[12px] font-medium text-fg-2`,children:[`Depends on`,(0,Y.jsx)(`span`,{className:`tnum font-normal text-muted`,children:n.length===0?`none`:`${n.length} selected`})]}),(0,Y.jsxs)(`div`,{className:`rounded-md border border-line-strong bg-bg`,children:[(0,Y.jsxs)(`div`,{className:`relative border-b border-line`,children:[(0,Y.jsx)(ne,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted`,strokeWidth:1.75}),(0,Y.jsx)(`input`,{type:`search`,"aria-label":`Filter tasks`,placeholder:`Filter tasks`,value:o,onChange:e=>s(e.target.value),className:`h-8 w-full bg-transparent pr-2.5 pl-8 text-[13px] text-fg placeholder:text-faint focus-visible:outline-none`})]}),(0,Y.jsxs)(`ul`,{className:`max-h-48 overflow-y-auto p-1`,children:[m.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-[12px] hover:bg-hover`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:!0,onChange:()=>h(e,!1),className:`size-3.5 accent-accent`}),(0,Y.jsx)(`span`,{className:`font-mono text-err`,children:e}),(0,Y.jsx)(`span`,{className:`text-muted`,children:`unknown task, uncheck to remove`})]})},e)),p.length===0&&m.length===0&&(0,Y.jsx)(`li`,{className:`px-2 py-3 text-center text-[12px] text-faint`,children:e.length===0?`No other tasks yet.`:`No tasks match.`}),p.map(e=>{let t=n.includes(e.id);return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`label`,{className:i(`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-[12px] hover:bg-hover`,t&&`bg-hover/60`),children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:t,onChange:t=>h(e.id,t.target.checked),className:`size-3.5 accent-accent`}),(0,Y.jsx)(N,{status:e.status}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-fg`,children:e.title}),(0,Y.jsx)(`span`,{className:`shrink-0 font-mono text-2xs text-muted`,children:e.id})]})},e.id)})]})]}),a?(0,Y.jsx)(`p`,{id:`deps-error`,role:`alert`,className:`text-[12px] leading-4 text-err`,children:a}):(0,Y.jsxs)(`p`,{className:`text-[12px] leading-4 text-muted`,children:[`This task waits until every selected task is done.`,t&&u>0&&` ${u} dependent task${u===1?``:`s`} hidden: choosing them would create a cycle.`]})]})}var Ee=[`IN_PROGRESS`,`PENDING`,`FAILED`,`SUCCESS`];function De(){let e=u(),t=x(),{params:n}=se(),r=[`graph`,`board`,`list`].includes(n.get(`view`)??``)?n.get(`view`):`graph`,i=n.get(`task`),a=n.get(`panel`),o=n.get(`new`)===`1`,s=n.get(`edit`),c=e.data?.graph.tasks??[],l=(0,q.useMemo)(()=>ve(c),[c]),d=c.find(e=>e.id===i),f=c.find(e=>e.id===s),p=a??(d?`task`:`state`),m=(0,q.useMemo)(()=>J(c),[c]),h=(0,q.useMemo)(()=>{let e={PENDING:0,IN_PROGRESS:0,SUCCESS:0,FAILED:0};for(let t of c)e[t.status]+=1;return e},[c]),g=c.length?h.SUCCESS/c.length:0,_=e=>{M(`panel`,null),M(`task`,e)},v=e.data?.project;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsx)(ue,{title:`Tasks`,description:v?(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`span`,{className:`text-fg-2`,children:v.name}),` `,(0,Y.jsxs)(`span`,{className:`font-mono text-2xs text-faint`,children:[v.root,`/.davecode/TASK_GRAPH.json`]})]}):`The project task graph the autonomous runner works through.`,actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(L,{variant:`primary`,icon:z,onClick:()=>M(`new`,`1`),children:`New task`}),(0,Y.jsx)(F,{label:`Task view`,value:r,onChange:e=>M(`view`,e===`graph`?null:e),options:[{value:`graph`,label:`Graph`,icon:ge},{value:`board`,label:`Board`,icon:me},{value:`list`,label:`List`,icon:he}]})]})}),e.isError&&(0,Y.jsx)(E,{tone:`err`,title:`Could not load the task graph`,children:y(e.error)}),c.length>0&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-5 gap-y-2 text-[12px]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Y.jsx)(`div`,{className:`h-1.5 w-40 overflow-hidden rounded-full bg-track`,role:`progressbar`,"aria-label":`Tasks done`,"aria-valuemin":0,"aria-valuemax":c.length,"aria-valuenow":h.SUCCESS,children:(0,Y.jsx)(`div`,{className:`h-full rounded-full bg-ok transition-[width] duration-500 ease-snappy`,style:{width:`${g*100}%`}})}),(0,Y.jsxs)(`span`,{className:`tnum text-fg-2`,children:[h.SUCCESS,` of `,c.length,` done`]})]}),Ee.map(e=>(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-muted`,children:[(0,Y.jsx)(N,{status:e}),I[e],` `,(0,Y.jsx)(`span`,{className:`tnum text-fg-2`,children:h[e]})]},e)),m.missing.length>0&&(0,Y.jsxs)(C,{tone:`warn`,children:[m.missing.length,` unknown dependencies`]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1fr)_380px]`,children:[(0,Y.jsx)(P,{className:`min-h-[420px]`,children:e.isPending?(0,Y.jsx)(`div`,{className:`p-4`,children:(0,Y.jsx)(ce,{className:`h-[380px] w-full`})}):c.length===0?(0,Y.jsx)(de,{icon:j,title:`No task graph yet`,description:`Describe the work as a DAG of tasks and the runner will pick them up in dependency order. You can also edit .davecode/TASK_GRAPH.json by hand.`,command:`davecode run`,action:(0,Y.jsx)(L,{variant:`primary`,icon:z,onClick:()=>M(`new`,`1`),children:`New task`}),className:`py-20`}):r===`graph`?(0,Y.jsx)(Ce,{tasks:c,ready:l,selectedId:i,onSelect:_}):r===`board`?(0,Y.jsx)(ke,{tasks:c,ready:l,selectedId:i,onSelect:_}):(0,Y.jsx)(Ae,{tasks:c,ready:l,selectedId:i,onSelect:_})}),(0,Y.jsxs)(P,{className:`xl:sticky xl:top-16 xl:max-h-[calc(100dvh-5rem)] xl:self-start`,children:[(0,Y.jsx)(oe,{title:(0,Y.jsx)(F,{size:`sm`,label:`Side panel`,value:p,onChange:e=>M(`panel`,e),options:[...d?[{value:`task`,label:`Task`,icon:j}]:[],{value:`state`,label:`STATE.md`,icon:w},{value:`architecture`,label:`ARCHITECTURE.md`,icon:w}]})}),(0,Y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:p===`task`&&d?(0,Y.jsx)(be,{task:d,tasks:c,readiness:l.get(d.id),onSelect:_,onEdit:()=>M(`edit`,d.id),onClose:()=>{M(`task`,null),M(`panel`,null)}}):t.isPending?(0,Y.jsx)(fe,{rows:6}):t.isError?(0,Y.jsx)(`p`,{className:`p-4 text-[12px] text-err`,children:y(t.error)}):(0,Y.jsx)(T,{className:`p-4`,source:(p===`architecture`?t.data?.architecture:t.data?.state)||`_This file is empty._`})})]})]}),(0,Y.jsx)($,{open:o,tasks:c,onClose:()=>M(`new`,null)}),(0,Y.jsx)($,{open:!!f,task:f,tasks:c,onClose:()=>M(`edit`,null)})]})}function Oe({r:e}){return e===`ready`?(0,Y.jsx)(C,{tone:`ok`,children:`ready`}):e===`blocked`?(0,Y.jsx)(C,{tone:`err`,children:`blocked`}):null}function ke({tasks:e,ready:t,selectedId:n,onSelect:r}){return(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-px overflow-x-auto bg-line sm:grid-cols-2 lg:grid-cols-4`,children:Ee.map(a=>{let o=e.filter(e=>e.status===a).sort((e,t)=>(t.priority??0)-(e.priority??0));return(0,Y.jsxs)(`section`,{"aria-label":I[a],className:`flex min-w-0 flex-col bg-panel`,children:[(0,Y.jsxs)(`h3`,{className:`flex items-center gap-2 border-b border-line px-3 py-2 text-[12px] font-medium text-fg-2`,children:[(0,Y.jsx)(N,{status:a}),I[a],(0,Y.jsx)(`span`,{className:`tnum ml-auto text-muted`,children:o.length})]}),(0,Y.jsxs)(`ul`,{className:`flex flex-col gap-2 p-2`,children:[o.length===0&&(0,Y.jsx)(`li`,{className:`px-1 py-3 text-center text-[12px] text-faint`,children:`Empty`}),o.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":e.id===n,className:i(`flex w-full flex-col gap-1.5 rounded-md border bg-raised p-2.5 text-left transition-colors duration-150 hover:border-fg-2/30`,e.id===n?`border-accent`:`border-line`),children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`truncate font-mono text-2xs text-muted`,children:e.id}),(0,Y.jsx)(`span`,{className:`ml-auto`,children:(0,Y.jsx)(Oe,{r:t.get(e.id)})})]}),(0,Y.jsx)(`span`,{className:`text-[12px] leading-4 text-fg`,children:e.title}),e.dependsOn.length>0&&(0,Y.jsxs)(`span`,{className:`truncate font-mono text-[10px] text-faint`,children:[`after `,e.dependsOn.join(`, `)]})]})},e.id))]})]},a)})})}function Ae({tasks:e,ready:t,selectedId:n,onSelect:r}){let a=(0,q.useMemo)(()=>new Map(J(e).nodes.map(e=>[e.id,e.layer])),[e]),o=[...e].sort((e,t)=>(a.get(e.id)??0)-(a.get(t.id)??0)||(t.priority??0)-(e.priority??0));return(0,Y.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full min-w-[640px] text-[12px]`,children:[(0,Y.jsx)(`caption`,{className:`sr-only`,children:`Tasks in dependency order`}),(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`border-b border-line text-left text-muted`,children:[(0,Y.jsx)(`th`,{scope:`col`,className:`px-3.5 py-2 font-medium`,children:`Task`}),(0,Y.jsx)(`th`,{scope:`col`,className:`px-2 py-2 font-medium`,children:`Status`}),(0,Y.jsx)(`th`,{scope:`col`,className:`px-2 py-2 text-right font-medium`,children:`Priority`}),(0,Y.jsx)(`th`,{scope:`col`,className:`px-2 py-2 font-medium`,children:`Depends on`})]})}),(0,Y.jsx)(`tbody`,{children:o.map(e=>(0,Y.jsxs)(`tr`,{className:i(`border-b border-line last:border-b-0`,e.id===n&&`bg-hover/60`),children:[(0,Y.jsx)(`td`,{className:`max-w-0 px-3.5 py-2`,children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(e.id),className:`block w-full min-w-0 text-left hover:underline`,children:[(0,Y.jsx)(`span`,{className:`block truncate text-[13px] text-fg`,children:e.title}),(0,Y.jsx)(`span`,{className:`block truncate font-mono text-2xs text-muted`,children:e.id})]})}),(0,Y.jsx)(`td`,{className:`px-2 py-2`,children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(R,{status:e.status}),(0,Y.jsx)(Oe,{r:t.get(e.id)})]})}),(0,Y.jsx)(`td`,{className:`tnum px-2 py-2 text-right font-mono text-fg-2`,children:e.priority??`—`}),(0,Y.jsx)(`td`,{className:`max-w-0 truncate px-2 py-2 font-mono text-2xs text-muted`,children:e.dependsOn.join(`, `)||`—`})]},e.id))})]})})}export{De as Tasks};