@sma1lboy/rove 0.9.278-next.23 → 0.9.278-next.24
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.
|
@@ -6,7 +6,7 @@ var e=Object.defineProperty,t=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=nu
|
|
|
6
6
|
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ge=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?he(n):``}function ve(e,t){switch(e.tag){case 26:case 27:case 5:return he(e.type);case 16:return he(`Lazy`);case 13:return e.child!==t&&t!==null?he(`Suspense Fallback`):he(`Suspense`);case 19:return he(`SuspenseList`);case 0:case 15:return _e(e.type,!1);case 11:return _e(e.type.render,!1);case 1:return _e(e.type,!0);case 31:return he(`Activity`);default:return``}}function ye(e){try{var t=``,n=null;do t+=ve(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
|
|
7
7
|
Error generating stack: `+e.message+`
|
|
8
8
|
`+e.stack}}var be=Object.prototype.hasOwnProperty,xe=t.unstable_scheduleCallback,Se=t.unstable_cancelCallback,Ce=t.unstable_shouldYield,we=t.unstable_requestPaint,Te=t.unstable_now,Ee=t.unstable_getCurrentPriorityLevel,De=t.unstable_ImmediatePriority,Oe=t.unstable_UserBlockingPriority,ke=t.unstable_NormalPriority,z=t.unstable_LowPriority,Ae=t.unstable_IdlePriority,B=t.log,je=t.unstable_setDisableYieldValue,Me=null,Ne=null;function V(e){if(typeof B==`function`&&je(e),Ne&&typeof Ne.setStrictMode==`function`)try{Ne.setStrictMode(Me,e)}catch{}}var Pe=Math.clz32?Math.clz32:H,Fe=Math.log,Ie=Math.LN2;function H(e){return e>>>=0,e===0?32:31-(Fe(e)/Ie|0)|0}var Le=256,Re=262144,ze=4194304;function Be(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ve(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Be(n))):i=Be(o):i=Be(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Be(n))):i=Be(o)):i=Be(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function He(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ue(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function We(){var e=ze;return ze<<=1,!(ze&62914560)&&(ze=4194304),e}function Ge(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ke(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function qe(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Pe(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&Je(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function Je(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Pe(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function Ye(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Pe(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function Xe(e,t){var n=t&-t;return n=n&42?1:Ze(n),(n&(e.suspendedLanes|t))===0?n:0}function Ze(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Qe(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function $e(){var e=I.p;return e===0?(e=window.event,e===void 0?32:gp(e.type)):e}function et(e,t){var n=I.p;try{return I.p=e,t()}finally{I.p=n}}var tt=Math.random().toString(36).slice(2),nt=`__reactFiber$`+tt,rt=`__reactProps$`+tt,it=`__reactContainer$`+tt,at=`__reactEvents$`+tt,ot=`__reactListeners$`+tt,st=`__reactHandles$`+tt,ct=`__reactResources$`+tt,lt=`__reactMarker$`+tt;function ut(e){delete e[nt],delete e[rt],delete e[at],delete e[ot],delete e[st]}function dt(e){var t=e[nt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[it]||n[nt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=mf(e);e!==null;){if(n=e[nt])return n;e=mf(e)}return t}e=n,n=e.parentNode}return null}function ft(e){if(e=e[nt]||e[it]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function pt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function mt(e){var t=e[ct];return t||=e[ct]={hoistableStyles:new Map,hoistableScripts:new Map},t}function ht(e){e[lt]=!0}var gt=new Set,_t={};function vt(e,t){yt(e,t),yt(e+`Capture`,t)}function yt(e,t){for(_t[e]=t,e=0;e<t.length;e++)gt.add(t[e])}var bt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),xt={},St={};function Ct(e){return be.call(St,e)?!0:be.call(xt,e)?!1:bt.test(e)?St[e]=!0:(xt[e]=!0,!1)}function wt(e,t,n){if(Ct(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}}function Tt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function Et(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function Dt(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function Ot(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function kt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function At(e){if(!e._valueTracker){var t=Ot(e)?`checked`:`value`;e._valueTracker=kt(e,t,``+e[t])}}function jt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=Ot(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function Mt(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Nt=/[\n"\\]/g;function Pt(e){return e.replace(Nt,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Ft(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+Dt(t)):e.value!==``+Dt(t)&&(e.value=``+Dt(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):Lt(e,o,Dt(n)):Lt(e,o,Dt(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+Dt(s):e.removeAttribute(`name`)}function It(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){At(e);return}n=n==null?``:``+Dt(n),t=t==null?n:``+Dt(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),At(e)}function Lt(e,t,n){t===`number`&&Mt(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function Rt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+Dt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function zt(e,t,n){if(t!=null&&(t=``+Dt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+Dt(n)}function Bt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(P(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=Dt(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),At(e)}function Vt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ht=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function Ut(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||Ht.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function Wt(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&Ut(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&Ut(e,o,t[o])}function Gt(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var Kt=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),qt=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Jt(e){return qt.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function Yt(){}var Xt=null;function Zt(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Qt=null,$t=null;function U(e){var t=ft(e);if(t&&(e=t.stateNode)){var n=e[rt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Ft(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Pt(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[rt]||null;if(!a)throw Error(i(90));Ft(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&jt(r)}break a;case`textarea`:zt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&Rt(e,!!n.multiple,t,!1)}}}var en=!1;function tn(e,t,n){if(en)return e(t,n);en=!0;try{return e(t)}finally{if(en=!1,(Qt!==null||$t!==null)&&(xu(),Qt&&(t=Qt,e=$t,$t=Qt=null,U(t),e)))for(t=0;t<e.length;t++)U(e[t])}}function nn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[rt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var rn=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),an=!1;if(rn)try{var on={};Object.defineProperty(on,"passive",{get:function(){an=!0}}),window.addEventListener(`test`,on,on),window.removeEventListener(`test`,on,on)}catch{an=!1}var sn=null,W=null,cn=null;function ln(){if(cn)return cn;var e,t=W,n=t.length,r,i=`value`in sn?sn.value:sn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return cn=i.slice(e,1<r?1-r:void 0)}function un(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function dn(){return!0}function fn(){return!1}function pn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?dn:fn,this.isPropagationStopped=fn,this}return h(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=dn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=dn)},persist:function(){},isPersistent:dn}),t}var mn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},hn=pn(mn),gn=h({},mn,{view:0,detail:0}),_n=pn(gn),vn,yn,bn,G=h({},gn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:jn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==bn&&(bn&&e.type===`mousemove`?(vn=e.screenX-bn.screenX,yn=e.screenY-bn.screenY):yn=vn=0,bn=e),vn)},movementY:function(e){return`movementY`in e?e.movementY:yn}}),xn=pn(G),Sn=pn(h({},G,{dataTransfer:0})),Cn=pn(h({},gn,{relatedTarget:0})),wn=pn(h({},mn,{animationName:0,elapsedTime:0,pseudoElement:0})),Tn=pn(h({},mn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),En=pn(h({},mn,{data:0})),Dn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},On={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},kn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function An(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=kn[e])?!!t[e]:!1}function jn(){return An}var Mn=pn(h({},gn,{key:function(e){if(e.key){var t=Dn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=un(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?On[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:jn,charCode:function(e){return e.type===`keypress`?un(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?un(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),Nn=pn(h({},G,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Pn=pn(h({},gn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:jn})),Fn=pn(h({},mn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=pn(h({},G,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Ln=pn(h({},mn,{newState:0,oldState:0})),Rn=[9,13,27,32],zn=rn&&`CompositionEvent`in window,Bn=null;rn&&`documentMode`in document&&(Bn=document.documentMode);var Vn=rn&&`TextEvent`in window&&!Bn,Hn=rn&&(!zn||Bn&&8<Bn&&11>=Bn),Un=` `,Wn=!1;function Gn(e,t){switch(e){case`keyup`:return Rn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Kn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var qn=!1;function Jn(e,t){switch(e){case`compositionend`:return Kn(t);case`keypress`:return t.which===32?(Wn=!0,Un):null;case`textInput`:return e=t.data,e===Un&&Wn?null:e;default:return null}}function Yn(e,t){if(qn)return e===`compositionend`||!zn&&Gn(e,t)?(e=ln(),cn=W=sn=null,qn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return Hn&&t.locale!==`ko`?null:t.data;default:return null}}var Xn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!Xn[e.type]:t===`textarea`}function Qn(e,t,n,r){Qt?$t?$t.push(r):$t=[r]:Qt=r,t=Od(t,`onChange`),0<t.length&&(n=new hn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var $n=null,er=null;function tr(e){bd(e,0)}function nr(e){if(jt(pt(e)))return e}function rr(e,t){if(e===`change`)return t}var ir=!1;if(rn){var ar;if(rn){var or=`oninput`in document;if(!or){var sr=document.createElement(`div`);sr.setAttribute(`oninput`,`return;`),or=typeof sr.oninput==`function`}ar=or}else ar=!1;ir=ar&&(!document.documentMode||9<document.documentMode)}function K(){$n&&($n.detachEvent(`onpropertychange`,cr),er=$n=null)}function cr(e){if(e.propertyName===`value`&&nr(er)){var t=[];Qn(t,er,e,Zt(e)),tn(tr,t)}}function lr(e,t,n){e===`focusin`?(K(),$n=t,er=n,$n.attachEvent(`onpropertychange`,cr)):e===`focusout`&&K()}function ur(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return nr(er)}function dr(e,t){if(e===`click`)return nr(t)}function fr(e,t){if(e===`input`||e===`change`)return nr(t)}function pr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var mr=typeof Object.is==`function`?Object.is:pr;function hr(e,t){if(mr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!be.call(t,i)||!mr(e[i],t[i]))return!1}return!0}function gr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function _r(e,t){var n=gr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=gr(n)}}function vr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?vr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function yr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Mt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Mt(e.document)}return t}function br(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var xr=rn&&`documentMode`in document&&11>=document.documentMode,Sr=null,Cr=null,wr=null,Tr=!1;function Er(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Tr||Sr==null||Sr!==Mt(r)||(r=Sr,`selectionStart`in r&&br(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),wr&&hr(wr,r)||(wr=r,r=Od(Cr,`onSelect`),0<r.length&&(t=new hn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Sr)))}function Dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Or={animationend:Dr(`Animation`,`AnimationEnd`),animationiteration:Dr(`Animation`,`AnimationIteration`),animationstart:Dr(`Animation`,`AnimationStart`),transitionrun:Dr(`Transition`,`TransitionRun`),transitionstart:Dr(`Transition`,`TransitionStart`),transitioncancel:Dr(`Transition`,`TransitionCancel`),transitionend:Dr(`Transition`,`TransitionEnd`)},kr={},Ar={};rn&&(Ar=document.createElement(`div`).style,`AnimationEvent`in window||(delete Or.animationend.animation,delete Or.animationiteration.animation,delete Or.animationstart.animation),`TransitionEvent`in window||delete Or.transitionend.transition);function jr(e){if(kr[e])return kr[e];if(!Or[e])return e;var t=Or[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Ar)return kr[e]=t[n];return e}var Mr=jr(`animationend`),Nr=jr(`animationiteration`),Pr=jr(`animationstart`),Fr=jr(`transitionrun`),Ir=jr(`transitionstart`),Lr=jr(`transitioncancel`),Rr=jr(`transitionend`),zr=new Map,Br=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);Br.push(`scrollEnd`);function Vr(e,t){zr.set(e,t),vt(t,[e])}var q=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},Hr=[],Ur=0,Wr=0;function Gr(){for(var e=Ur,t=Wr=Ur=0;t<e;){var n=Hr[t];Hr[t++]=null;var r=Hr[t];Hr[t++]=null;var i=Hr[t];Hr[t++]=null;var a=Hr[t];if(Hr[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&Yr(n,i,a)}}function Kr(e,t,n,r){Hr[Ur++]=e,Hr[Ur++]=t,Hr[Ur++]=n,Hr[Ur++]=r,Wr|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function qr(e,t,n,r){return Kr(e,t,n,r),Xr(e)}function Jr(e,t){return Kr(e,null,null,t),Xr(e)}function Yr(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-Pe(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function Xr(e){if(50<fu)throw fu=0,pu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Zr={};function Qr(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $r(e,t,n,r){return new Qr(e,t,n,r)}function ei(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ti(e,t){var n=e.alternate;return n===null?(n=$r(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function ni(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function ri(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)ei(e)&&(s=1);else if(typeof e==`string`)s=Gf(e,n,ae.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case k:return e=$r(31,n,t,a),e.elementType=k,e.lanes=o,e;case y:return ii(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=$r(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case T:return e=$r(13,n,t,a),e.elementType=T,e.lanes=o,e;case E:return e=$r(19,n,t,a),e.elementType=E,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case C:s=10;break a;case S:s=9;break a;case w:s=11;break a;case D:s=14;break a;case O:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=$r(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function ii(e,t,n,r){return e=$r(7,e,r,t),e.lanes=n,e}function ai(e,t,n){return e=$r(6,e,null,t),e.lanes=n,e}function oi(e){var t=$r(18,null,null,0);return t.stateNode=e,t}function si(e,t,n){return t=$r(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var ci=new WeakMap;function li(e,t){if(typeof e==`object`&&e){var n=ci.get(e);return n===void 0?(t={value:e,source:t,stack:ye(t)},ci.set(e,t),t):n}return{value:e,source:t,stack:ye(t)}}var ui=[],di=0,fi=null,pi=0,mi=[],hi=0,gi=null,_i=1,vi=``;function yi(e,t){ui[di++]=pi,ui[di++]=fi,fi=e,pi=t}function bi(e,t,n){mi[hi++]=_i,mi[hi++]=vi,mi[hi++]=gi,gi=e;var r=_i;e=vi;var i=32-Pe(r)-1;r&=~(1<<i),n+=1;var a=32-Pe(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,_i=1<<32-Pe(t)+i|n<<i|r,vi=a+e}else _i=1<<a|n<<i|r,vi=e}function xi(e){e.return!==null&&(yi(e,1),bi(e,1,0))}function Si(e){for(;e===fi;)fi=ui[--di],ui[di]=null,pi=ui[--di],ui[di]=null;for(;e===gi;)gi=mi[--hi],mi[hi]=null,vi=mi[--hi],mi[hi]=null,_i=mi[--hi],mi[hi]=null}function Ci(e,t){mi[hi++]=_i,mi[hi++]=vi,mi[hi++]=gi,_i=t.id,vi=t.overflow,gi=e}var wi=null,Ti=null,Ei=!1,Di=null,Oi=!1,ki=Error(i(519));function Ai(e){throw Ii(li(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),ki}function ji(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[nt]=e,t[rt]=r,n){case`dialog`:xd(`cancel`,t),xd(`close`,t);break;case`iframe`:case`object`:case`embed`:xd(`load`,t);break;case`video`:case`audio`:for(n=0;n<vd.length;n++)xd(vd[n],t);break;case`source`:xd(`error`,t);break;case`img`:case`image`:case`link`:xd(`error`,t),xd(`load`,t);break;case`details`:xd(`toggle`,t);break;case`input`:xd(`invalid`,t),It(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:xd(`invalid`,t);break;case`textarea`:xd(`invalid`,t),Bt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||Pd(t.textContent,n)?(r.popover!=null&&(xd(`beforetoggle`,t),xd(`toggle`,t)),r.onScroll!=null&&xd(`scroll`,t),r.onScrollEnd!=null&&xd(`scrollend`,t),r.onClick!=null&&(t.onclick=Yt),t=!0):t=!1,t||Ai(e,!0)}function Mi(e){for(wi=e.return;wi;)switch(wi.tag){case 5:case 31:case 13:Oi=!1;return;case 27:case 3:Oi=!0;return;default:wi=wi.return}}function Ni(e){if(e!==wi)return!1;if(!Ei)return Mi(e),Ei=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||Kd(e.type,e.memoizedProps)),n=!n),n&&Ti&&Ai(e),Mi(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Ti=pf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Ti=pf(e)}else t===27?(t=Ti,ef(e.type)?(e=ff,ff=null,Ti=e):Ti=t):Ti=wi?df(e.stateNode.nextSibling):null;return!0}function Pi(){Ti=wi=null,Ei=!1}function Fi(){var e=Di;return e!==null&&(Ql===null?Ql=e:Ql.push.apply(Ql,e),Di=null),e}function Ii(e){Di===null?Di=[e]:Di.push(e)}var Li=re(null),Ri=null,zi=null;function Bi(e,t,n){R(Li,t._currentValue),t._currentValue=n}function Vi(e){e._currentValue=Li.current,ie(Li)}function Hi(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function Ui(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),Hi(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),Hi(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function Wi(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;mr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===ce.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[ep]:e.push(ep))}a=a.return}e!==null&&Ui(t,e,n,r),t.flags|=262144}function Gi(e){for(e=e.firstContext;e!==null;){if(!mr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Ki(e){Ri=e,zi=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function qi(e){return Yi(Ri,e)}function Ji(e,t){return Ri===null&&Ki(e),Yi(e,t)}function Yi(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},zi===null){if(e===null)throw Error(i(308));zi=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else zi=zi.next=t;return n}var Xi=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Zi=t.unstable_scheduleCallback,Qi=t.unstable_NormalPriority,$i={$$typeof:C,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ea(){return{controller:new Xi,data:new Map,refCount:0}}function ta(e){e.refCount--,e.refCount===0&&Zi(Qi,function(){e.controller.abort()})}var na=null,ra=0,ia=0,aa=null;function oa(e,t){if(na===null){var n=na=[];ra=0,ia=fd(),aa={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ra++,t.then(sa,sa),t}function sa(){if(--ra===0&&na!==null){aa!==null&&(aa.status=`fulfilled`);var e=na;na=null,ia=0,aa=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function ca(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var la=F.S;F.S=function(e,t){tu=Te(),typeof t==`object`&&t&&typeof t.then==`function`&&oa(e,t),la!==null&&la(e,t)};var ua=re(null);function da(){var e=ua.current;return e===null?Ll.pooledCache:e}function fa(e,t){t===null?R(ua,ua.current):R(ua,t.pool)}function pa(){var e=da();return e===null?null:{parent:$i._currentValue,pool:e}}var ma=Error(i(460)),ha=Error(i(474)),ga=Error(i(542)),_a={then:function(){}};function va(e){return e=e.status,e===`fulfilled`||e===`rejected`}function ya(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(Yt,Yt),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ca(e),e;default:if(typeof t.status==`string`)t.then(Yt,Yt);else{if(e=Ll,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ca(e),e}throw xa=t,ma}}function ba(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(xa=e,ma):e}}var xa=null;function Sa(){if(xa===null)throw Error(i(459));var e=xa;return xa=null,e}function Ca(e){if(e===ma||e===ga)throw Error(i(483))}var wa=null,Ta=0;function Ea(e){var t=Ta;return Ta+=1,wa===null&&(wa=[]),ya(wa,e,t)}function Da(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Oa(e,t){throw t.$$typeof===g?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function ka(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=ti(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=ai(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===y?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===O&&ba(i)===t.type)?(t=a(t,n.props),Da(t,n),t.return=e,t):(t=ri(n.type,n.key,n.props,null,e.mode,r),Da(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=si(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=ii(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=ai(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case _:return n=ri(t.type,t.key,t.props,null,e.mode,n),Da(n,t),n.return=e,n;case v:return t=si(t,e.mode,n),t.return=e,t;case O:return t=ba(t),f(e,t,n)}if(P(t)||ee(t))return t=ii(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,Ea(t),n);if(t.$$typeof===C)return f(e,Ji(e,t),n);Oa(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case _:return n.key===i?l(e,t,n,r):null;case v:return n.key===i?u(e,t,n,r):null;case O:return n=ba(n),p(e,t,n,r)}if(P(n)||ee(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,Ea(n),r);if(n.$$typeof===C)return p(e,t,Ji(e,n),r);Oa(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case _:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case v:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case O:return r=ba(r),m(e,t,n,r,i)}if(P(r)||ee(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,Ea(r),i);if(r.$$typeof===C)return m(e,t,n,Ji(t,r),i);Oa(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),Ei&&yi(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return Ei&&yi(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),Ei&&yi(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),Ei&&yi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return Ei&&yi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),Ei&&yi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&ba(l)===r.type){n(e,r.sibling),c=a(r,o.props),Da(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===y?(c=ii(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ri(o.type,o.key,o.props,null,e.mode,c),Da(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=si(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=ba(o),b(e,r,o,c)}if(P(o))return h(e,r,o,c);if(ee(o)){if(l=ee(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Ea(o),c);if(o.$$typeof===C)return b(e,r,Ji(e,o),c);Oa(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ai(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ta=0;var i=b(e,t,n,r);return wa=null,i}catch(t){if(t===ma||t===ga)throw t;var a=$r(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Aa=ka(!0),ja=ka(!1),Ma=!1;function Na(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Pa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Fa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ia(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Il&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Xr(e),Yr(e,null,n),t}return Kr(e,r,t,n),Xr(e)}function La(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ye(e,n)}}function Ra(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var za=!1;function Ba(){if(za){var e=aa;if(e!==null)throw e}}function Va(e,t,n,r){za=!1;var i=e.updateQueue;Ma=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Rl&f)===f:(r&f)===f){f!==0&&f===ia&&(za=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ma=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Kl|=o,e.lanes=o,e.memoizedState=d}}function Ha(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ua(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Ha(n[e],t)}var Wa=re(null),Ga=re(0);function Ka(e,t){e=Wl,R(Ga,e),R(Wa,t),Wl=e|t.baseLanes}function qa(){R(Ga,Wl),R(Wa,Wa.current)}function Ja(){Wl=Ga.current,ie(Wa),ie(Ga)}var Ya=re(null),Xa=null;function Za(e){var t=e.alternate;R(no,no.current&1),R(Ya,e),Xa===null&&(t===null||Wa.current!==null||t.memoizedState!==null)&&(Xa=e)}function Qa(e){R(no,no.current),R(Ya,e),Xa===null&&(Xa=e)}function $a(e){e.tag===22?(R(no,no.current),R(Ya,e),Xa===null&&(Xa=e)):eo(e)}function eo(){R(no,no.current),R(Ya,Ya.current)}function to(e){ie(Ya),Xa===e&&(Xa=null),ie(no)}var no=re(0);function ro(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||cf(n)||lf(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var io=0,ao=null,oo=null,so=null,co=!1,lo=!1,uo=!1,fo=0,po=0,mo=null,ho=0;function go(){throw Error(i(321))}function _o(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!mr(e[n],t[n]))return!1;return!0}function vo(e,t,n,r,i,a){return io=a,ao=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,F.H=e===null||e.memoizedState===null?Fs:Is,uo=!1,a=n(r,i),uo=!1,lo&&(a=bo(t,n,r,i)),yo(e),a}function yo(e){F.H=Ps;var t=oo!==null&&oo.next!==null;if(io=0,so=oo=ao=null,co=!1,po=0,mo=null,t)throw Error(i(300));e===null||$s||(e=e.dependencies,e!==null&&Gi(e)&&($s=!0))}function bo(e,t,n,r){ao=e;var a=0;do{if(lo&&(mo=null),po=0,lo=!1,25<=a)throw Error(i(301));if(a+=1,so=oo=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}F.H=Ls,o=t(n,r)}while(lo);return o}function xo(){var e=F.H,t=e.useState()[0];return t=typeof t.then==`function`?Oo(t):t,e=e.useState()[0],(oo===null?null:oo.memoizedState)!==e&&(ao.flags|=1024),t}function So(){var e=fo!==0;return fo=0,e}function Co(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function wo(e){if(co){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}co=!1}io=0,so=oo=ao=null,lo=!1,po=fo=0,mo=null}function To(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return so===null?ao.memoizedState=so=e:so=so.next=e,so}function Eo(){if(oo===null){var e=ao.alternate;e=e===null?null:e.memoizedState}else e=oo.next;var t=so===null?ao.memoizedState:so.next;if(t!==null)so=t,oo=e;else{if(e===null)throw ao.alternate===null?Error(i(467)):Error(i(310));oo=e,e={memoizedState:oo.memoizedState,baseState:oo.baseState,baseQueue:oo.baseQueue,queue:oo.queue,next:null},so===null?ao.memoizedState=so=e:so=so.next=e}return so}function Do(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Oo(e){var t=po;return po+=1,mo===null&&(mo=[]),e=ya(mo,e,t),t=ao,(so===null?t.memoizedState:so.next)===null&&(t=t.alternate,F.H=t===null||t.memoizedState===null?Fs:Is),e}function ko(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return Oo(e);if(e.$$typeof===C)return qi(e)}throw Error(i(438,String(e)))}function Ao(e){var t=null,n=ao.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=ao.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Do(),ao.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=A;return t.index++,n}function jo(e,t){return typeof t==`function`?t(e):t}function Mo(e){return No(Eo(),oo,e)}function No(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(io&f)===f:(Rl&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===ia&&(d=!0);else if((io&p)===p){u=u.next,p===ia&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,ao.lanes|=p,Kl|=p;f=u.action,uo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,ao.lanes|=f,Kl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!mr(o,e.memoizedState)&&($s=!0,d&&(n=aa,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Po(e){var t=Eo(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);mr(o,t.memoizedState)||($s=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Fo(e,t,n){var r=ao,a=Eo(),o=Ei;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!mr((oo||a).memoizedState,n);if(s&&(a.memoizedState=n,$s=!0),a=a.queue,os(Ro.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||so!==null&&so.memoizedState.tag&1){if(r.flags|=2048,ts(9,{destroy:void 0},Lo.bind(null,r,a,n,t),null),Ll===null)throw Error(i(349));o||io&127||Io(r,t,n)}return n}function Io(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=ao.updateQueue,t===null?(t=Do(),ao.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Lo(e,t,n,r){t.value=n,t.getSnapshot=r,zo(t)&&Bo(e)}function Ro(e,t,n){return n(function(){zo(t)&&Bo(e)})}function zo(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!mr(e,n)}catch{return!0}}function Bo(e){var t=Jr(e,2);t!==null&&gu(t,e,2)}function Vo(e){var t=To();if(typeof e==`function`){var n=e;if(e=n(),uo){V(!0);try{n()}finally{V(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:e},t}function Ho(e,t,n,r){return e.baseState=n,No(e,oo,typeof r==`function`?r:jo)}function Uo(e,t,n,r,a){if(js(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};F.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Wo(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Wo(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=F.T,o={};F.T=o;try{var s=n(i,r),c=F.S;c!==null&&c(o,s),Go(e,t,s)}catch(n){qo(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),F.T=a}}else try{a=n(i,r),Go(e,t,a)}catch(n){qo(e,t,n)}}function Go(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){Ko(e,t,n)},function(n){return qo(e,t,n)}):Ko(e,t,n)}function Ko(e,t,n){t.status=`fulfilled`,t.value=n,Jo(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Wo(e,n)))}function qo(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Jo(t),t=t.next;while(t!==r)}e.action=null}function Jo(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Yo(e,t){return t}function Xo(e,t){if(Ei){var n=Ll.formState;if(n!==null){a:{var r=ao;if(Ei){if(Ti){b:{for(var i=Ti,a=Oi;i.nodeType!==8;){if(!a){i=null;break b}if(i=df(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){Ti=df(i.nextSibling),r=i.data===`F!`;break a}}Ai(r)}r=!1}r&&(t=n[0])}}return n=To(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yo,lastRenderedState:t},n.queue=r,n=Os.bind(null,ao,r),r.dispatch=n,r=Vo(!1),a=As.bind(null,ao,!1,r.queue),r=To(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Uo.bind(null,ao,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function Zo(e){return Qo(Eo(),oo,e)}function Qo(e,t,n){if(t=No(e,t,Yo)[0],e=Mo(jo)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=Oo(t)}catch(e){throw e===ma?ga:e}else r=t;t=Eo();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(ao.flags|=2048,ts(9,{destroy:void 0},$o.bind(null,i,n),null)),[r,a,e]}function $o(e,t){e.action=t}function es(e){var t=Eo(),n=oo;if(n!==null)return Qo(t,n,e);Eo(),t=t.memoizedState,n=Eo();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function ts(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=ao.updateQueue,t===null&&(t=Do(),ao.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ns(){return Eo().memoizedState}function rs(e,t,n,r){var i=To();ao.flags|=e,i.memoizedState=ts(1|t,{destroy:void 0},n,r===void 0?null:r)}function is(e,t,n,r){var i=Eo();r=r===void 0?null:r;var a=i.memoizedState.inst;oo!==null&&r!==null&&_o(r,oo.memoizedState.deps)?i.memoizedState=ts(t,a,n,r):(ao.flags|=e,i.memoizedState=ts(1|t,a,n,r))}function as(e,t){rs(8390656,8,e,t)}function os(e,t){is(2048,8,e,t)}function ss(e){ao.flags|=4;var t=ao.updateQueue;if(t===null)t=Do(),ao.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function cs(e){var t=Eo().memoizedState;return ss({ref:t,nextImpl:e}),function(){if(Il&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function ls(e,t){return is(4,2,e,t)}function us(e,t){return is(4,4,e,t)}function ds(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function fs(e,t,n){n=n==null?null:n.concat([e]),is(4,4,ds.bind(null,t,e),n)}function ps(){}function ms(e,t){var n=Eo();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&_o(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function hs(e,t){var n=Eo();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&_o(t,r[1]))return r[0];if(r=e(),uo){V(!0);try{e()}finally{V(!1)}}return n.memoizedState=[r,t],r}function gs(e,t,n){return n===void 0||io&1073741824&&!(Rl&261930)?e.memoizedState=t:(e.memoizedState=n,e=hu(),ao.lanes|=e,Kl|=e,n)}function _s(e,t,n,r){return mr(n,t)?n:Wa.current===null?!(io&42)||io&1073741824&&!(Rl&261930)?($s=!0,e.memoizedState=n):(e=hu(),ao.lanes|=e,Kl|=e,t):(e=gs(e,n,r),mr(e,t)||($s=!0),e)}function vs(e,t,n,r,i){var a=I.p;I.p=a!==0&&8>a?a:8;var o=F.T,s={};F.T=s,As(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?ks(e,t,ca(c,r),mu(e)):ks(e,t,r,mu(e))}catch(n){ks(e,t,{then:function(){},status:`rejected`,reason:n},mu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function ys(){}function bs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=xs(e).queue;vs(e,a,t,te,n===null?ys:function(){return Ss(e),n(r)})}function xs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ss(e){var t=xs(e);t.next===null&&(t=e.alternate.memoizedState),ks(e,t.next.queue,{},mu())}function Cs(){return qi(ep)}function ws(){return Eo().memoizedState}function Ts(){return Eo().memoizedState}function Es(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=mu();e=Fa(n);var r=Ia(t,e,n);r!==null&&(gu(r,t,n),La(r,t,n)),t={cache:ea()},e.payload=t;return}t=t.return}}function Ds(e,t,n){var r=mu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},js(e)?Ms(t,n):(n=qr(e,t,n,r),n!==null&&(gu(n,e,r),Ns(n,t,r)))}function Os(e,t,n){ks(e,t,n,mu())}function ks(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(js(e))Ms(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,mr(s,o))return Kr(e,t,i,0),Ll===null&&Gr(),!1}catch{}if(n=qr(e,t,i,r),n!==null)return gu(n,e,r),Ns(n,t,r),!0}return!1}function As(e,t,n,r){if(r={lane:2,revertLane:fd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},js(e)){if(t)throw Error(i(479))}else t=qr(e,n,r,2),t!==null&&gu(t,e,2)}function js(e){var t=e.alternate;return e===ao||t!==null&&t===ao}function Ms(e,t){lo=co=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ns(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ye(e,n)}}var Ps={readContext:qi,use:ko,useCallback:go,useContext:go,useEffect:go,useImperativeHandle:go,useLayoutEffect:go,useInsertionEffect:go,useMemo:go,useReducer:go,useRef:go,useState:go,useDebugValue:go,useDeferredValue:go,useTransition:go,useSyncExternalStore:go,useId:go,useHostTransitionStatus:go,useFormState:go,useActionState:go,useOptimistic:go,useMemoCache:go,useCacheRefresh:go};Ps.useEffectEvent=go;var Fs={readContext:qi,use:ko,useCallback:function(e,t){return To().memoizedState=[e,t===void 0?null:t],e},useContext:qi,useEffect:as,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),rs(4194308,4,ds.bind(null,t,e),n)},useLayoutEffect:function(e,t){return rs(4194308,4,e,t)},useInsertionEffect:function(e,t){rs(4,2,e,t)},useMemo:function(e,t){var n=To();t=t===void 0?null:t;var r=e();if(uo){V(!0);try{e()}finally{V(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=To();if(n!==void 0){var i=n(t);if(uo){V(!0);try{n(t)}finally{V(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ds.bind(null,ao,e),[r.memoizedState,e]},useRef:function(e){var t=To();return e={current:e},t.memoizedState=e},useState:function(e){e=Vo(e);var t=e.queue,n=Os.bind(null,ao,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ps,useDeferredValue:function(e,t){return gs(To(),e,t)},useTransition:function(){var e=Vo(!1);return e=vs.bind(null,ao,e.queue,!0,!1),To().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=ao,a=To();if(Ei){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Ll===null)throw Error(i(349));Rl&127||Io(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,as(Ro.bind(null,r,o,e),[e]),r.flags|=2048,ts(9,{destroy:void 0},Lo.bind(null,r,o,n,t),null),n},useId:function(){var e=To(),t=Ll.identifierPrefix;if(Ei){var n=vi,r=_i;n=(r&~(1<<32-Pe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=fo++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=ho++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:Cs,useFormState:Xo,useActionState:Xo,useOptimistic:function(e){var t=To();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=As.bind(null,ao,!0,n),n.dispatch=t,[e,t]},useMemoCache:Ao,useCacheRefresh:function(){return To().memoizedState=Es.bind(null,ao)},useEffectEvent:function(e){var t=To(),n={impl:e};return t.memoizedState=n,function(){if(Il&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},Is={readContext:qi,use:ko,useCallback:ms,useContext:qi,useEffect:os,useImperativeHandle:fs,useInsertionEffect:ls,useLayoutEffect:us,useMemo:hs,useReducer:Mo,useRef:ns,useState:function(){return Mo(jo)},useDebugValue:ps,useDeferredValue:function(e,t){return _s(Eo(),oo.memoizedState,e,t)},useTransition:function(){var e=Mo(jo)[0],t=Eo().memoizedState;return[typeof e==`boolean`?e:Oo(e),t]},useSyncExternalStore:Fo,useId:ws,useHostTransitionStatus:Cs,useFormState:Zo,useActionState:Zo,useOptimistic:function(e,t){return Ho(Eo(),oo,e,t)},useMemoCache:Ao,useCacheRefresh:Ts};Is.useEffectEvent=cs;var Ls={readContext:qi,use:ko,useCallback:ms,useContext:qi,useEffect:os,useImperativeHandle:fs,useInsertionEffect:ls,useLayoutEffect:us,useMemo:hs,useReducer:Po,useRef:ns,useState:function(){return Po(jo)},useDebugValue:ps,useDeferredValue:function(e,t){var n=Eo();return oo===null?gs(n,e,t):_s(n,oo.memoizedState,e,t)},useTransition:function(){var e=Po(jo)[0],t=Eo().memoizedState;return[typeof e==`boolean`?e:Oo(e),t]},useSyncExternalStore:Fo,useId:ws,useHostTransitionStatus:Cs,useFormState:es,useActionState:es,useOptimistic:function(e,t){var n=Eo();return oo===null?(n.baseState=e,[e,n.queue.dispatch]):Ho(n,oo,e,t)},useMemoCache:Ao,useCacheRefresh:Ts};Ls.useEffectEvent=cs;function Rs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:h({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var zs={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=mu(),i=Fa(r);i.payload=t,n!=null&&(i.callback=n),t=Ia(e,i,r),t!==null&&(gu(t,e,r),La(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=mu(),i=Fa(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Ia(e,i,r),t!==null&&(gu(t,e,r),La(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=mu(),r=Fa(n);r.tag=2,t!=null&&(r.callback=t),t=Ia(e,r,n),t!==null&&(gu(t,e,n),La(t,e,n))}};function Bs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!hr(n,r)||!hr(i,a):!0}function Vs(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&zs.enqueueReplaceState(t,t.state,null)}function Hs(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=h({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Us(e){q(e)}function Ws(e){console.error(e)}function Gs(e){q(e)}function Ks(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function qs(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Js(e,t,n){return n=Fa(n),n.tag=3,n.payload={element:null},n.callback=function(){Ks(e,t)},n}function Ys(e){return e=Fa(e),e.tag=3,e}function Xs(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){qs(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){qs(t,n,r),typeof i!=`function`&&(iu===null?iu=new Set([this]):iu.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function Zs(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&Wi(t,n,a,!0),n=Ya.current,n!==null){switch(n.tag){case 31:case 13:return Xa===null?Ou():n.alternate===null&&Gl===0&&(Gl=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===_a?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),qu(e,r,a)),!1;case 22:return n.flags|=65536,r===_a?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),qu(e,r,a)),!1}throw Error(i(435,n.tag))}return qu(e,r,a),Ou(),!1}if(Ei)return t=Ya.current,t===null?(r!==ki&&(t=Error(i(423),{cause:r}),Ii(li(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=li(r,n),a=Js(e.stateNode,r,a),Ra(e,a),Gl!==4&&(Gl=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==ki&&(e=Error(i(422),{cause:r}),Ii(li(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=li(o,n),Zl===null?Zl=[o]:Zl.push(o),Gl!==4&&(Gl=2),t===null)return!0;r=li(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Js(n.stateNode,r,e),Ra(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(iu===null||!iu.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Ys(a),Xs(a,e,n,r),Ra(n,a),!1}n=n.return}while(n!==null);return!1}var Qs=Error(i(461)),$s=!1;function ec(e,t,n,r){t.child=e===null?ja(t,null,n,r):Aa(t,e.child,n,r)}function tc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return Ki(t),r=vo(e,t,n,o,a,i),s=So(),e!==null&&!$s?(Co(e,t,i),Tc(e,t,i)):(Ei&&s&&xi(t),t.flags|=1,ec(e,t,r,i),t.child)}function nc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!ei(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,rc(e,t,a,r,i)):(e=ri(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!Ec(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?hr:n,n(o,r)&&e.ref===t.ref)return Tc(e,t,i)}return t.flags|=1,e=ti(a,r),e.ref=t.ref,e.return=t,t.child=e}function rc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(hr(a,r)&&e.ref===t.ref){if($s=!1,t.pendingProps=r=a,Ec(e,i))e.flags&131072&&($s=!0);else return t.lanes=e.lanes,Tc(e,t,i)}}return dc(e,t,n,r,i)}function ic(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return oc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&fa(t,a===null?null:a.cachePool),a===null?qa():Ka(t,a),$a(t);else return r=t.lanes=536870912,oc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&fa(t,null),qa(),eo(t)):(fa(t,a.cachePool),Ka(t,a),eo(t),t.memoizedState=null);return ec(e,t,i,n),t.child}function ac(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function oc(e,t,n,r,i){var a=da();return a=a===null?null:{parent:$i._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&fa(t,null),qa(),$a(t),e!==null&&Wi(e,t,r,!0),t.childLanes=i,null}function sc(e,t){return t=bc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function cc(e,t,n){return Aa(t,e.child,null,n),e=sc(t,t.pendingProps),e.flags|=2,to(t),t.memoizedState=null,e}function lc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(Ei){if(r.mode===`hidden`)return e=sc(t,r),t.lanes=536870912,ac(null,e);if(Qa(t),(e=Ti)?(e=sf(e,Oi),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:gi===null?null:{id:_i,overflow:vi},retryLane:536870912,hydrationErrors:null},n=oi(e),n.return=t,t.child=n,wi=t,Ti=null)):e=null,e===null)throw Ai(t);return t.lanes=536870912,null}return sc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(Qa(t),a){if(t.flags&256)t.flags&=-257,t=cc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if($s||Wi(e,t,n,!1),a=(n&e.childLanes)!==0,$s||a){if(r=Ll,r!==null&&(s=Xe(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,Jr(e,s),gu(r,e,s),Qs;Ou(),t=cc(e,t,n)}else e=o.treeContext,Ti=df(s.nextSibling),wi=t,Ei=!0,Di=null,Oi=!1,e!==null&&Ci(t,e),t=sc(t,r),t.flags|=4096;return t}return e=ti(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function uc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function dc(e,t,n,r,i){return Ki(t),n=vo(e,t,n,r,void 0,i),r=So(),e!==null&&!$s?(Co(e,t,i),Tc(e,t,i)):(Ei&&r&&xi(t),t.flags|=1,ec(e,t,n,i),t.child)}function fc(e,t,n,r,i,a){return Ki(t),t.updateQueue=null,n=bo(t,r,n,i),yo(e),r=So(),e!==null&&!$s?(Co(e,t,a),Tc(e,t,a)):(Ei&&r&&xi(t),t.flags|=1,ec(e,t,n,a),t.child)}function pc(e,t,n,r,i){if(Ki(t),t.stateNode===null){var a=Zr,o=n.contextType;typeof o==`object`&&o&&(a=qi(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=zs,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Na(t),o=n.contextType,a.context=typeof o==`object`&&o?qi(o):Zr,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Rs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&zs.enqueueReplaceState(a,a.state,null),Va(t,r,a,i),Ba(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Hs(n,s);a.props=c;var l=a.context,u=n.contextType;o=Zr,typeof u==`object`&&u&&(o=qi(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Vs(t,a,r,o),Ma=!1;var f=t.memoizedState;a.state=f,Va(t,r,a,i),Ba(),l=t.memoizedState,s||f!==l||Ma?(typeof d==`function`&&(Rs(t,n,d,r),l=t.memoizedState),(c=Ma||Bs(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Pa(e,t),o=t.memoizedProps,u=Hs(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=Zr,typeof l==`object`&&l&&(c=qi(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Vs(t,a,r,c),Ma=!1,f=t.memoizedState,a.state=f,Va(t,r,a,i),Ba();var p=t.memoizedState;o!==d||f!==p||Ma||e!==null&&e.dependencies!==null&&Gi(e.dependencies)?(typeof s==`function`&&(Rs(t,n,s,r),p=t.memoizedState),(u=Ma||Bs(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&Gi(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,uc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Aa(t,e.child,null,i),t.child=Aa(t,null,n,i)):ec(e,t,n,i),t.memoizedState=a.state,e=t.child):e=Tc(e,t,i),e}function mc(e,t,n,r){return Pi(),t.flags|=256,ec(e,t,n,r),t.child}var hc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function gc(e){return{baseLanes:e,cachePool:pa()}}function _c(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=Yl),e}function vc(e,t,n){var r=t.pendingProps,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(no.current&2)),s&&(a=!0,t.flags&=-129),s=!!(t.flags&32),t.flags&=-33,e===null){if(Ei){if(a?Za(t):eo(t),(e=Ti)?(e=sf(e,Oi),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:gi===null?null:{id:_i,overflow:vi},retryLane:536870912,hydrationErrors:null},n=oi(e),n.return=t,t.child=n,wi=t,Ti=null)):e=null,e===null)throw Ai(t);return lf(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(eo(t),a=t.mode,c=bc({mode:`hidden`,children:c},a),r=ii(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=gc(n),r.childLanes=_c(e,s,n),t.memoizedState=hc,ac(null,r)):(Za(t),yc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(Za(t),t.flags&=-257,t=xc(e,t,n)):t.memoizedState===null?(eo(t),c=r.fallback,a=t.mode,r=bc({mode:`visible`,children:r.children},a),c=ii(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Aa(t,e.child,null,n),r=t.child,r.memoizedState=gc(n),r.childLanes=_c(e,s,n),t.memoizedState=hc,t=ac(null,r)):(eo(t),t.child=e.child,t.flags|=128,t=null);else if(Za(t),lf(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Ii({value:r,source:null,stack:null}),t=xc(e,t,n)}else if($s||Wi(e,t,n,!1),s=(n&e.childLanes)!==0,$s||s){if(s=Ll,s!==null&&(r=Xe(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,Jr(e,r),gu(s,e,r),Qs;cf(c)||Ou(),t=xc(e,t,n)}else cf(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,Ti=df(c.nextSibling),wi=t,Ei=!0,Di=null,Oi=!1,e!==null&&Ci(t,e),t=yc(t,r.children),t.flags|=4096);return t}return a?(eo(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=ti(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=ii(c,a,n,null),c.flags|=2):c=ti(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,ac(null,r),r=t.child,c=e.child.memoizedState,c===null?c=gc(n):(a=c.cachePool,a===null?a=pa():(l=$i._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=_c(e,s,n),t.memoizedState=hc,ac(e.child,r)):(Za(t),n=e.child,e=n.sibling,n=ti(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function yc(e,t){return t=bc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function bc(e,t){return e=$r(22,e,null,t),e.lanes=0,e}function xc(e,t,n){return Aa(t,e.child,null,n),e=yc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Sc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Hi(e.return,t,n)}function Cc(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function wc(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=no.current,s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,R(no,o),ec(e,t,r,n),r=Ei?pi:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Sc(e,n,t);else if(e.tag===19)Sc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&ro(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Cc(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&ro(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Cc(t,!0,n,null,a,r);break;case`together`:Cc(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function Tc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Kl|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(Wi(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=ti(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=ti(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Ec(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&Gi(e)))}function Dc(e,t,n){switch(t.tag){case 3:le(t,t.stateNode.containerInfo),Bi(t,$i,e.memoizedState.cache),Pi();break;case 27:case 5:de(t);break;case 4:le(t,t.stateNode.containerInfo);break;case 10:Bi(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Qa(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(Za(t),e=Tc(e,t,n),e===null?null:e.sibling):vc(e,t,n):(Za(t),t.flags|=128,null);Za(t);break;case 19:var i=!!(e.flags&128);if(r=(n&t.childLanes)!==0,r||=(Wi(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return wc(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),R(no,no.current),r)break;return null;case 22:return t.lanes=0,ic(e,t,n,t.pendingProps);case 24:Bi(t,$i,e.memoizedState.cache)}return Tc(e,t,n)}function Oc(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)$s=!0;else{if(!Ec(e,n)&&!(t.flags&128))return $s=!1,Dc(e,t,n);$s=!!(e.flags&131072)}}else $s=!1,Ei&&t.flags&1048576&&bi(t,pi,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=ba(t.elementType),t.type=e,typeof e==`function`)ei(e)?(r=Hs(e,r),t.tag=1,t=pc(null,t,e,r,n)):(t.tag=0,t=dc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===w){t.tag=11,t=tc(null,t,e,r,n);break a}if(a===D){t.tag=14,t=nc(null,t,e,r,n);break a}}throw t=N(e)||e,Error(i(306,t,``))}}return t;case 0:return dc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Hs(r,t.pendingProps),pc(e,t,r,a,n);case 3:a:{if(le(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,Pa(e,t),Va(t,r,null,n);var s=t.memoizedState;if(r=s.cache,Bi(t,$i,r),r!==o.cache&&Ui(t,[$i],n,!0),Ba(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=mc(e,t,r,n);break a}if(r!==a){a=li(Error(i(424)),t),Ii(a),t=mc(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(Ti=df(e.firstChild),wi=t,Ei=!0,Di=null,Oi=!0,n=ja(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Pi(),r===a){t=Tc(e,t,n);break a}ec(e,t,r,n)}t=t.child}return t;case 26:return uc(e,t),e===null?(n=jf(t.type,null,t.pendingProps,null))?t.memoizedState=n:Ei||(n=t.type,e=t.pendingProps,r=Ud(se.current).createElement(n),r[nt]=t,r[rt]=e,Ld(r,n,e),ht(r),t.stateNode=r):t.memoizedState=jf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return de(t),e===null&&Ei&&(r=t.stateNode=hf(t.type,t.pendingProps,se.current),wi=t,Oi=!0,a=Ti,ef(t.type)?(ff=a,Ti=df(r.firstChild)):Ti=a),ec(e,t,t.pendingProps.children,n),uc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ei&&((a=r=Ti)&&(r=af(r,t.type,t.pendingProps,Oi),r===null?a=!1:(t.stateNode=r,wi=t,Ti=df(r.firstChild),Oi=!1,a=!0)),a||Ai(t)),de(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Kd(a,o)?r=null:s!==null&&Kd(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=vo(e,t,xo,null,null,n),ep._currentValue=a),uc(e,t),ec(e,t,r,n),t.child;case 6:return e===null&&Ei&&((e=n=Ti)&&(n=of(n,t.pendingProps,Oi),n===null?e=!1:(t.stateNode=n,wi=t,Ti=null,e=!0)),e||Ai(t)),null;case 13:return vc(e,t,n);case 4:return le(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Aa(t,null,r,n):ec(e,t,r,n),t.child;case 11:return tc(e,t,t.type,t.pendingProps,n);case 7:return ec(e,t,t.pendingProps,n),t.child;case 8:return ec(e,t,t.pendingProps.children,n),t.child;case 12:return ec(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,Bi(t,t.type,r.value),ec(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Ki(t),a=qi(a),r=r(a),t.flags|=1,ec(e,t,r,n),t.child;case 14:return nc(e,t,t.type,t.pendingProps,n);case 15:return rc(e,t,t.type,t.pendingProps,n);case 19:return wc(e,t,n);case 31:return lc(e,t,n);case 22:return ic(e,t,n,t.pendingProps);case 24:return Ki(t),r=qi($i),e===null?(a=da(),a===null&&(a=Ll,o=ea(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Na(t),Bi(t,$i,a)):((e.lanes&n)!==0&&(Pa(e,t),Va(t,null,null,n),Ba()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,Bi(t,$i,r),r!==a.cache&&Ui(t,[$i],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),Bi(t,$i,r))),ec(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function kc(e){e.flags|=4}function Ac(e,t,n,r,i){if((t=!!(e.mode&32))&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(Tu())e.flags|=8192;else throw xa=_a,ha}}else e.flags&=-16777217}function jc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Kf(t)){if(Tu())e.flags|=8192;else throw xa=_a,ha}}function Mc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:We(),e.lanes|=t,Xl|=t)}function Nc(e,t){if(!Ei)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Pc(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Fc(e,t,n){var r=t.pendingProps;switch(Si(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Pc(t),null;case 1:return Pc(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Vi($i),ue(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Ni(t)?kc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Fi())),Pc(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(kc(t),o===null?(Pc(t),Ac(t,a,null,r,n)):(Pc(t),jc(t,o))):o?o===e.memoizedState?(Pc(t),t.flags&=-16777217):(kc(t),Pc(t),jc(t,o)):(e=e.memoizedProps,e!==r&&kc(t),Pc(t),Ac(t,a,e,r,n)),null;case 27:if(fe(t),n=se.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Pc(t),null}e=ae.current,Ni(t)?ji(t,e):(e=hf(a,r,n),t.stateNode=e,kc(t))}return Pc(t),null;case 5:if(fe(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Pc(t),null}if(o=ae.current,Ni(t))ji(t,o);else{var s=Ud(se.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[nt]=t,o[rt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Ld(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&kc(t)}}return Pc(t),Ac(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=se.current,Ni(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=wi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[nt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Pd(e.nodeValue,n)),e||Ai(t,!0)}else e=Ud(e).createTextNode(r),e[nt]=t,t.stateNode=e}return Pc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ni(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[nt]=t}else Pi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Pc(t),e=!1}else n=Fi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(to(t),t):(to(t),null);if(t.flags&128)throw Error(i(558))}return Pc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ni(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[nt]=t}else Pi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Pc(t),a=!1}else a=Fi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(to(t),t):(to(t),null)}return to(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Mc(t,t.updateQueue),Pc(t),null);case 4:return ue(),e===null&&wd(t.stateNode.containerInfo),Pc(t),null;case 10:return Vi(t.type),Pc(t),null;case 19:if(ie(no),r=t.memoizedState,r===null)return Pc(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Nc(r,!1);else{if(Gl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=ro(e),o!==null){for(t.flags|=128,Nc(r,!1),e=o.updateQueue,t.updateQueue=e,Mc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ni(n,e),n=n.sibling;return R(no,no.current&1|2),Ei&&yi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Te()>nu&&(t.flags|=128,a=!0,Nc(r,!1),t.lanes=4194304)}}else{if(!a){if(e=ro(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Mc(t,e),Nc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!Ei)return Pc(t),null}else 2*Te()-r.renderingStartTime>nu&&n!==536870912&&(t.flags|=128,a=!0,Nc(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Pc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Te(),e.sibling=null,n=no.current,R(no,a?n&1|2:n&1),Ei&&yi(t,r.treeForkCount),e);case 22:case 23:return to(t),Ja(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Pc(t),t.subtreeFlags&6&&(t.flags|=8192)):Pc(t),n=t.updateQueue,n!==null&&Mc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ie(ua),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Vi($i),Pc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Ic(e,t){switch(Si(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Vi($i),ue(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return fe(t),null;case 31:if(t.memoizedState!==null){if(to(t),t.alternate===null)throw Error(i(340));Pi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(to(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Pi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ie(no),null;case 4:return ue(),null;case 10:return Vi(t.type),null;case 22:case 23:return to(t),Ja(),e!==null&&ie(ua),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Vi($i),null;case 25:return null;default:return null}}function Lc(e,t){switch(Si(t),t.tag){case 3:Vi($i),ue();break;case 26:case 27:case 5:fe(t);break;case 4:ue();break;case 31:t.memoizedState!==null&&to(t);break;case 13:to(t);break;case 19:ie(no);break;case 10:Vi(t.type);break;case 22:case 23:to(t),Ja(),e!==null&&ie(ua);break;case 24:Vi($i)}}function Rc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Ku(t,t.return,e)}}function zc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Ku(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Ku(t,t.return,e)}}function Bc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ua(t,n)}catch(t){Ku(e,e.return,t)}}}function Vc(e,t,n){n.props=Hs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Ku(e,t,n)}}function Hc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Ku(e,t,n)}}function Uc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Ku(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Ku(e,t,n)}else n.current=null}}function Wc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Ku(e,e.return,t)}}function Gc(e,t,n){try{var r=e.stateNode;Rd(r,e.type,n,t),r[rt]=t}catch(t){Ku(e,e.return,t)}}function Kc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ef(e.type)||e.tag===4}function qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Kc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ef(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Jc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Yt));else if(r!==4&&(r===27&&ef(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Jc(e,t,n),e=e.sibling;e!==null;)Jc(e,t,n),e=e.sibling}function Yc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&ef(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Yc(e,t,n),e=e.sibling;e!==null;)Yc(e,t,n),e=e.sibling}function Xc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Ld(t,r,n),t[nt]=e,t[rt]=n}catch(t){Ku(e,e.return,t)}}var Zc=!1,Qc=!1,$c=!1,el=typeof WeakSet==`function`?WeakSet:Set,tl=null;function nl(e,t){if(e=e.containerInfo,Vd=lp,e=yr(e),br(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Hd={focusedElem:e,selectionRange:n},lp=!1,tl=t;tl!==null;)if(t=tl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,tl=e;else for(;tl!==null;){switch(t=tl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Hs(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Ku(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)rf(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:rf(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,tl=e;break}tl=t.return}}function rl(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:vl(e,n),r&4&&Rc(5,n);break;case 1:if(vl(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Ku(n,n.return,e)}else{var i=Hs(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Ku(n,n.return,e)}}}r&64&&Bc(n),r&512&&Hc(n,n.return);break;case 3:if(vl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Ua(e,t)}catch(e){Ku(n,n.return,e)}}break;case 27:t===null&&r&4&&Xc(n);case 26:case 5:vl(e,n),t===null&&r&4&&Wc(n),r&512&&Hc(n,n.return);break;case 12:vl(e,n);break;case 31:vl(e,n),r&4&&ll(e,n);break;case 13:vl(e,n),r&4&&ul(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Xu.bind(null,n),uf(e,n))));break;case 22:if(r=n.memoizedState!==null||Zc,!r){t=t!==null&&t.memoizedState!==null||Qc,i=Zc;var a=Qc;Zc=r,(Qc=t)&&!a?yl(e,n,!!(n.subtreeFlags&8772)):vl(e,n),Zc=i,Qc=a}break;case 30:break;default:vl(e,n)}}function il(e){var t=e.alternate;t!==null&&(e.alternate=null,il(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&ut(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var al=null,ol=!1;function sl(e,t,n){for(n=n.child;n!==null;)cl(e,t,n),n=n.sibling}function cl(e,t,n){if(Ne&&typeof Ne.onCommitFiberUnmount==`function`)try{Ne.onCommitFiberUnmount(Me,n)}catch{}switch(n.tag){case 26:Qc||Uc(n,t),sl(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Qc||Uc(n,t);var r=al,i=ol;ef(n.type)&&(al=n.stateNode,ol=!1),sl(e,t,n),gf(n.stateNode),al=r,ol=i;break;case 5:Qc||Uc(n,t);case 6:if(r=al,i=ol,al=null,sl(e,t,n),al=r,ol=i,al!==null){if(ol)try{(al.nodeType===9?al.body:al.nodeName===`HTML`?al.ownerDocument.body:al).removeChild(n.stateNode)}catch(e){Ku(n,t,e)}else try{al.removeChild(n.stateNode)}catch(e){Ku(n,t,e)}}break;case 18:al!==null&&(ol?(e=al,tf(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Pp(e)):tf(al,n.stateNode));break;case 4:r=al,i=ol,al=n.stateNode.containerInfo,ol=!0,sl(e,t,n),al=r,ol=i;break;case 0:case 11:case 14:case 15:zc(2,n,t),Qc||zc(4,n,t),sl(e,t,n);break;case 1:Qc||(Uc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Vc(n,t,r)),sl(e,t,n);break;case 21:sl(e,t,n);break;case 22:Qc=(r=Qc)||n.memoizedState!==null,sl(e,t,n),Qc=r;break;default:sl(e,t,n)}}function ll(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Pp(e)}catch(e){Ku(t,t.return,e)}}}function ul(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Pp(e)}catch(e){Ku(t,t.return,e)}}function dl(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new el),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new el),t;default:throw Error(i(435,e.tag))}}function fl(e,t){var n=dl(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Zu.bind(null,e,t);t.then(r,r)}})}function pl(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(ef(c.type)){al=c.stateNode,ol=!1;break a}break;case 5:al=c.stateNode,ol=!1;break a;case 3:case 4:al=c.stateNode.containerInfo,ol=!0;break a}c=c.return}if(al===null)throw Error(i(160));cl(o,s,a),al=null,ol=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)hl(t,e),t=t.sibling}var ml=null;function hl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:pl(t,e),gl(e),r&4&&(zc(3,e,e.return),Rc(3,e),zc(5,e,e.return));break;case 1:pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),r&64&&Zc&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=ml;if(pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null){if(r===null){if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[lt]||o[nt]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Ld(o,r,n),o[nt]=e,ht(o),r=o;break a;case`link`:var s=Uf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),Ld(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Uf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),Ld(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[nt]=e,ht(o),r=o}e.stateNode=r}else Wf(a,e.type,e.stateNode)}else e.stateNode=Rf(a,r,e.memoizedProps)}else o===r?r===null&&e.stateNode!==null&&Gc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Wf(a,e.type,e.stateNode):Rf(a,r,e.memoizedProps))}break;case 27:pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),n!==null&&r&4&&Gc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),e.flags&32){a=e.stateNode;try{Vt(a,``)}catch(t){Ku(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Gc(e,a,n===null?a:n.memoizedProps)),r&1024&&($c=!0);break;case 6:if(pl(t,e),gl(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Ku(e,e.return,t)}}break;case 3:if(Hf=null,a=ml,ml=yf(t.containerInfo),pl(t,e),ml=a,gl(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Pp(t.containerInfo)}catch(t){Ku(e,e.return,t)}$c&&($c=!1,_l(e));break;case 4:r=ml,ml=yf(e.stateNode.containerInfo),pl(t,e),gl(e),ml=r;break;case 12:pl(t,e),gl(e);break;case 31:pl(t,e),gl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 13:pl(t,e),gl(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(eu=Te()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=Zc,d=Qc;if(Zc=u||a,Qc=d||l,pl(t,e),Qc=d,Zc=u,gl(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||Zc||Qc||J(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){Ku(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Ku(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?nf(m,!0):nf(l.stateNode,!1)}catch(e){Ku(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,fl(e,n))));break;case 19:pl(t,e),gl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 30:break;case 21:break;default:pl(t,e),gl(e)}}function gl(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Kc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Yc(e,qc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Vt(o,``),n.flags&=-33),Yc(e,qc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;Jc(e,qc(e),s);break;default:throw Error(i(161))}}catch(t){Ku(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function _l(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;_l(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function vl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)rl(e,t.alternate,t),t=t.sibling}function J(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:zc(4,t,t.return),J(t);break;case 1:Uc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Vc(t,t.return,n),J(t);break;case 27:gf(t.stateNode);case 26:case 5:Uc(t,t.return),J(t);break;case 22:t.memoizedState===null&&J(t);break;case 30:J(t);break;default:J(t)}e=e.sibling}}function yl(e,t,n){for(n&&=!!(t.subtreeFlags&8772),t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:yl(i,a,n),Rc(4,a);break;case 1:if(yl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Ku(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)Ha(c[i],s)}catch(e){Ku(r,r.return,e)}}n&&o&64&&Bc(a),Hc(a,a.return);break;case 27:Xc(a);case 26:case 5:yl(i,a,n),n&&r===null&&o&4&&Wc(a),Hc(a,a.return);break;case 12:yl(i,a,n);break;case 31:yl(i,a,n),n&&o&4&&ll(i,a);break;case 13:yl(i,a,n),n&&o&4&&ul(i,a);break;case 22:a.memoizedState===null&&yl(i,a,n),Hc(a,a.return);break;case 30:break;default:yl(i,a,n)}t=t.sibling}}function bl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&ta(n))}function xl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ta(e))}function Sl(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Cl(e,t,n,r),t=t.sibling}function Cl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:Sl(e,t,n,r),i&2048&&Rc(9,t);break;case 1:Sl(e,t,n,r);break;case 3:Sl(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ta(e)));break;case 12:if(i&2048){Sl(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){Ku(t,t.return,e)}}else Sl(e,t,n,r);break;case 31:Sl(e,t,n,r);break;case 13:Sl(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?Sl(e,t,n,r):(a._visibility|=2,wl(e,t,n,r,!!(t.subtreeFlags&10256)||!1)):a._visibility&2?Sl(e,t,n,r):Tl(e,t),i&2048&&bl(o,t);break;case 24:Sl(e,t,n,r),i&2048&&xl(t.alternate,t);break;default:Sl(e,t,n,r)}}function wl(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:wl(a,o,s,c,i),Rc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,wl(a,o,s,c,i)):u._visibility&2?wl(a,o,s,c,i):Tl(a,o),i&&l&2048&&bl(o.alternate,o);break;case 24:wl(a,o,s,c,i),i&&l&2048&&xl(o.alternate,o);break;default:wl(a,o,s,c,i)}t=t.sibling}}function Tl(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:Tl(n,r),i&2048&&bl(r.alternate,r);break;case 24:Tl(n,r),i&2048&&xl(r.alternate,r);break;default:Tl(n,r)}t=t.sibling}}var El=8192;function Dl(e,t,n){if(e.subtreeFlags&El)for(e=e.child;e!==null;)Ol(e,t,n),e=e.sibling}function Ol(e,t,n){switch(e.tag){case 26:Dl(e,t,n),e.flags&El&&e.memoizedState!==null&&qf(n,ml,e.memoizedState,e.memoizedProps);break;case 5:Dl(e,t,n);break;case 3:case 4:var r=ml;ml=yf(e.stateNode.containerInfo),Dl(e,t,n),ml=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=El,El=16777216,Dl(e,t,n),El=r):Dl(e,t,n));break;default:Dl(e,t,n)}}function kl(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Al(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];tl=r,Nl(r,e)}kl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)jl(e),e=e.sibling}function jl(e){switch(e.tag){case 0:case 11:case 15:Al(e),e.flags&2048&&zc(9,e,e.return);break;case 3:Al(e);break;case 12:Al(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Ml(e)):Al(e);break;default:Al(e)}}function Ml(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];tl=r,Nl(r,e)}kl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:zc(8,t,t.return),Ml(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Ml(t));break;default:Ml(t)}e=e.sibling}}function Nl(e,t){for(;tl!==null;){var n=tl;switch(n.tag){case 0:case 11:case 15:zc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:ta(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,tl=r;else a:for(n=e;tl!==null;){r=tl;var i=r.sibling,a=r.return;if(il(r),r===n){tl=null;break a}if(i!==null){i.return=a,tl=i;break a}tl=a}}}var Pl={getCacheForType:function(e){var t=qi($i),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return qi($i).controller.signal}},Fl=typeof WeakMap==`function`?WeakMap:Map,Il=0,Ll=null,Y=null,Rl=0,zl=0,Bl=null,Vl=!1,Hl=!1,Ul=!1,Wl=0,Gl=0,Kl=0,ql=0,Jl=0,Yl=0,Xl=0,Zl=null,Ql=null,$l=!1,eu=0,tu=0,nu=1/0,ru=null,iu=null,au=0,ou=null,su=null,cu=0,lu=0,uu=null,du=null,fu=0,pu=null;function mu(){return Il&2&&Rl!==0?Rl&-Rl:F.T===null?$e():fd()}function hu(){if(Yl===0){if(!(Rl&536870912)||Ei){var e=Re;Re<<=1,!(Re&3932160)&&(Re=262144),Yl=e}else Yl=536870912}return e=Ya.current,e!==null&&(e.flags|=32),Yl}function gu(e,t,n){(e===Ll&&(zl===2||zl===9)||e.cancelPendingCommit!==null)&&(Cu(e,0),bu(e,Rl,Yl,!1)),Ke(e,n),(!(Il&2)||e!==Ll)&&(e===Ll&&(!(Il&2)&&(ql|=n),Gl===4&&bu(e,Rl,Yl,!1)),id(e))}function _u(e,t,n){if(Il&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||He(e,t),a=r?ju(e,t):ku(e,t,!0),o=r;do{if(a===0){Hl&&!r&&bu(e,t,0,!1);break}if(n=e.current.alternate,o&&!yu(n)){a=ku(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=Zl;var l=c.current.memoizedState.isDehydrated;if(l&&(Cu(c,s).flags|=256),s=ku(c,s,!1),s!==2){if(Ul&&!l){c.errorRecoveryDisabledLanes|=o,ql|=o,a=4;break a}o=Ql,Ql=a,o!==null&&(Ql===null?Ql=o:Ql.push.apply(Ql,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Cu(e,0),bu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:bu(r,t,Yl,!Vl);break a;case 2:Ql=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=eu+300-Te(),10<a)){if(bu(r,t,Yl,!Vl),Ve(r,0,!0)!==0)break a;cu=t,r.timeoutHandle=Yd(vu.bind(null,r,n,Ql,ru,$l,t,Yl,ql,Xl,Vl,o,`Throttled`,-0,0),a);break a}vu(r,n,Ql,ru,$l,t,Yl,ql,Xl,Vl,o,null,-0,0)}break}while(1);id(e)}function vu(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Yt},Ol(t,a,d);var m=(a&62914560)===a?eu-Te():(a&4194048)===a?tu-Te():0;if(m=Yf(d,m),m!==null){cu=a,e.cancelPendingCommit=m(Ru.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),bu(e,a,o,!l);return}}Ru(e,t,a,n,r,i,o,s,c)}function yu(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!mr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function bu(e,t,n,r){t&=~Jl,t&=~ql,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-Pe(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&Je(e,n,t)}function xu(){return Il&6?!0:(ad(0,!1),!1)}function Su(){if(Y!==null){if(zl===0)var e=Y.return;else e=Y,zi=Ri=null,wo(e),wa=null,Ta=0,e=Y;for(;e!==null;)Lc(e.alternate,e),e=e.return;Y=null}}function Cu(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,Xd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),cu=0,Su(),Ll=e,Y=n=ti(e.current,null),Rl=t,zl=0,Bl=null,Vl=!1,Hl=He(e,t),Ul=!1,Xl=Yl=Jl=ql=Kl=Gl=0,Ql=Zl=null,$l=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-Pe(r),a=1<<i;t|=e[i],r&=~a}return Wl=t,Gr(),n}function wu(e,t){ao=null,F.H=Ps,t===ma||t===ga?(t=Sa(),zl=3):t===ha?(t=Sa(),zl=4):zl=t===Qs?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Bl=t,Y===null&&(Gl=1,Ks(e,li(t,e.current)))}function Tu(){var e=Ya.current;return e===null?!0:(Rl&4194048)===Rl?Xa===null:(Rl&62914560)===Rl||Rl&536870912?e===Xa:!1}function Eu(){var e=F.H;return F.H=Ps,e===null?Ps:e}function Du(){var e=F.A;return F.A=Pl,e}function Ou(){Gl=4,Vl||(Rl&4194048)!==Rl&&Ya.current!==null||(Hl=!0),!(Kl&134217727)&&!(ql&134217727)||Ll===null||bu(Ll,Rl,Yl,!1)}function ku(e,t,n){var r=Il;Il|=2;var i=Eu(),a=Du();(Ll!==e||Rl!==t)&&(ru=null,Cu(e,t)),t=!1;var o=Gl;a:do try{if(zl!==0&&Y!==null){var s=Y,c=Bl;switch(zl){case 8:Su(),o=6;break a;case 3:case 2:case 9:case 6:Ya.current===null&&(t=!0);var l=zl;if(zl=0,Bl=null,Fu(e,s,c,l),n&&Hl){o=0;break a}break;default:l=zl,zl=0,Bl=null,Fu(e,s,c,l)}}Au(),o=Gl;break}catch(t){wu(e,t)}while(1);return t&&e.shellSuspendCounter++,zi=Ri=null,Il=r,F.H=i,F.A=a,Y===null&&(Ll=null,Rl=0,Gr()),o}function Au(){for(;Y!==null;)Nu(Y)}function ju(e,t){var n=Il;Il|=2;var r=Eu(),a=Du();Ll!==e||Rl!==t?(ru=null,nu=Te()+500,Cu(e,t)):Hl=He(e,t);a:do try{if(zl!==0&&Y!==null){t=Y;var o=Bl;b:switch(zl){case 1:zl=0,Bl=null,Fu(e,t,o,1);break;case 2:case 9:if(va(o)){zl=0,Bl=null,Pu(t);break}t=function(){zl!==2&&zl!==9||Ll!==e||(zl=7),id(e)},o.then(t,t);break a;case 3:zl=7;break a;case 4:zl=5;break a;case 7:va(o)?(zl=0,Bl=null,Pu(t)):(zl=0,Bl=null,Fu(e,t,o,7));break;case 5:var s=null;switch(Y.tag){case 26:s=Y.memoizedState;case 5:case 27:var c=Y;if(s?Kf(s):c.stateNode.complete){zl=0,Bl=null;var l=c.sibling;if(l!==null)Y=l;else{var u=c.return;u===null?Y=null:(Y=u,Iu(u))}break b}}zl=0,Bl=null,Fu(e,t,o,5);break;case 6:zl=0,Bl=null,Fu(e,t,o,6);break;case 8:Su(),Gl=6;break a;default:throw Error(i(462))}}Mu();break}catch(t){wu(e,t)}while(1);return zi=Ri=null,F.H=r,F.A=a,Il=n,Y===null?(Ll=null,Rl=0,Gr(),Gl):0}function Mu(){for(;Y!==null&&!Ce();)Nu(Y)}function Nu(e){var t=Oc(e.alternate,e,Wl);e.memoizedProps=e.pendingProps,t===null?Iu(e):Y=t}function Pu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=fc(n,t,t.pendingProps,t.type,void 0,Rl);break;case 11:t=fc(n,t,t.pendingProps,t.type.render,t.ref,Rl);break;case 5:wo(t);default:Lc(n,t),t=Y=ni(t,Wl),t=Oc(n,t,Wl)}e.memoizedProps=e.pendingProps,t===null?Iu(e):Y=t}function Fu(e,t,n,r){zi=Ri=null,wo(t),wa=null,Ta=0;var i=t.return;try{if(Zs(e,i,t,n,Rl)){Gl=1,Ks(e,li(n,e.current)),Y=null;return}}catch(t){if(i!==null)throw Y=i,t;Gl=1,Ks(e,li(n,e.current)),Y=null;return}t.flags&32768?(Ei||r===1?e=!0:Hl||Rl&536870912?e=!1:(Vl=e=!0,(r===2||r===9||r===3||r===6)&&(r=Ya.current,r!==null&&r.tag===13&&(r.flags|=16384))),Lu(t,e)):Iu(t)}function Iu(e){var t=e;do{if(t.flags&32768){Lu(t,Vl);return}e=t.return;var n=Fc(t.alternate,t,Wl);if(n!==null){Y=n;return}if(t=t.sibling,t!==null){Y=t;return}Y=t=e}while(t!==null);Gl===0&&(Gl=5)}function Lu(e,t){do{var n=Ic(e.alternate,e);if(n!==null){n.flags&=32767,Y=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Y=e;return}Y=e=n}while(e!==null);Gl=6,Y=null}function Ru(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Uu();while(au!==0);if(Il&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=Wr,qe(e,n,o,s,c,l),e===Ll&&(Y=Ll=null,Rl=0),su=t,ou=e,cu=n,lu=o,uu=a,du=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,Qu(ke,function(){return Wu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=F.T,F.T=null,a=I.p,I.p=2,s=Il,Il|=4;try{nl(e,t,n)}finally{Il=s,I.p=a,F.T=r}}au=1,zu(),Bu(),Vu()}}function zu(){if(au===1){au=0;var e=ou,t=su,n=!!(t.flags&13878);if(t.subtreeFlags&13878||n){n=F.T,F.T=null;var r=I.p;I.p=2;var i=Il;Il|=4;try{hl(t,e);var a=Hd,o=yr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&vr(s.ownerDocument.documentElement,s)){if(c!==null&&br(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=_r(s,h),v=_r(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}lp=!!Vd,Hd=Vd=null}finally{Il=i,I.p=r,F.T=n}}e.current=t,au=2}}function Bu(){if(au===2){au=0;var e=ou,t=su,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=F.T,F.T=null;var r=I.p;I.p=2;var i=Il;Il|=4;try{rl(e,t.alternate,t)}finally{Il=i,I.p=r,F.T=n}}au=3}}function Vu(){if(au===4||au===3){au=0,we();var e=ou,t=su,n=cu,r=du;t.subtreeFlags&10256||t.flags&10256?au=5:(au=0,su=ou=null,Hu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(iu=null),Qe(n),t=t.stateNode,Ne&&typeof Ne.onCommitFiberRoot==`function`)try{Ne.onCommitFiberRoot(Me,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=F.T,i=I.p,I.p=2,F.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{F.T=t,I.p=i}}cu&3&&Uu(),id(e),i=e.pendingLanes,n&261930&&i&42?e===pu?fu++:(fu=0,pu=e):fu=0,ad(0,!1)}}function Hu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,ta(t)))}function Uu(){return zu(),Bu(),Vu(),Wu()}function Wu(){if(au!==5)return!1;var e=ou,t=lu;lu=0;var n=Qe(cu),r=F.T,a=I.p;try{I.p=32>n?32:n,F.T=null,n=uu,uu=null;var o=ou,s=cu;if(au=0,su=ou=null,cu=0,Il&6)throw Error(i(331));var c=Il;if(Il|=4,jl(o.current),Cl(o,o.current,s,n),Il=c,ad(0,!1),Ne&&typeof Ne.onPostCommitFiberRoot==`function`)try{Ne.onPostCommitFiberRoot(Me,o)}catch{}return!0}finally{I.p=a,F.T=r,Hu(e,t)}}function Gu(e,t,n){t=li(n,t),t=Js(e.stateNode,t,2),e=Ia(e,t,2),e!==null&&(Ke(e,2),id(e))}function Ku(e,t,n){if(e.tag===3)Gu(e,e,n);else for(;t!==null;){if(t.tag===3){Gu(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(iu===null||!iu.has(r))){e=li(n,e),n=Ys(2),r=Ia(t,n,2),r!==null&&(Xs(n,r,t,e),Ke(r,2),id(r));break}}t=t.return}}function qu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Fl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=Ju.bind(null,e,t,n),t.then(e,e))}function Ju(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ll===e&&(Rl&n)===n&&(Gl===4||Gl===3&&(Rl&62914560)===Rl&&300>Te()-eu?!(Il&2)&&Cu(e,0):Jl|=n,Xl===Rl&&(Xl=0)),id(e)}function Yu(e,t){t===0&&(t=We()),e=Jr(e,t),e!==null&&(Ke(e,t),id(e))}function Xu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yu(e,n)}function Zu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Yu(e,n)}function Qu(e,t){return xe(e,t)}var X=null,$u=null,ed=!1,td=!1,nd=!1,rd=0;function id(e){e!==$u&&e.next===null&&($u===null?X=$u=e:$u=$u.next=e),td=!0,ed||(ed=!0,dd())}function ad(e,t){if(!nd&&td){nd=!0;do for(var n=!1,r=X;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Pe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ud(r,a))}else a=Rl,a=Ve(r,r===Ll?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||He(r,a)||(n=!0,ud(r,a))}r=r.next}while(n);nd=!1}}function od(){sd()}function sd(){td=ed=!1;var e=0;rd!==0&&Jd()&&(e=rd);for(var t=Te(),n=null,r=X;r!==null;){var i=r.next,a=cd(r,t);a===0?(r.next=null,n===null?X=i:n.next=i,i===null&&($u=n)):(n=r,(e!==0||a&3)&&(td=!0)),r=i}au!==0&&au!==5||ad(e,!1),rd!==0&&(rd=0)}function cd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-Pe(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=Ue(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=Ll,n=Rl,n=Ve(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(zl===2||zl===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&Se(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||He(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&Se(r),Qe(n)){case 2:case 8:n=Oe;break;case 32:n=ke;break;case 268435456:n=Ae;break;default:n=ke}return r=ld.bind(null,e),n=xe(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&Se(r),e.callbackPriority=2,e.callbackNode=null,2}function ld(e,t){if(au!==0&&au!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Uu()&&e.callbackNode!==n)return null;var r=Rl;return r=Ve(e,e===Ll?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(_u(e,r,t),cd(e,Te()),e.callbackNode!=null&&e.callbackNode===n?ld.bind(null,e):null)}function ud(e,t){if(Uu())return null;_u(e,t,!0)}function dd(){Qd(function(){Il&6?xe(De,od):sd()})}function fd(){if(rd===0){var e=ia;e===0&&(e=Le,Le<<=1,!(Le&261888)&&(Le=256)),rd=e}return rd}function pd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:Jt(``+e)}function md(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function hd(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=pd((i[rt]||null).action),o=r.submitter;o&&(t=(t=o[rt]||null)?pd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new hn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(rd!==0){var e=o?md(i,o):new FormData(i);bs(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?md(i,o):new FormData(i),bs(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var gd=0;gd<Br.length;gd++){var _d=Br[gd];Vr(_d.toLowerCase(),`on`+(_d[0].toUpperCase()+_d.slice(1)))}Vr(Mr,`onAnimationEnd`),Vr(Nr,`onAnimationIteration`),Vr(Pr,`onAnimationStart`),Vr(`dblclick`,`onDoubleClick`),Vr(`focusin`,`onFocus`),Vr(`focusout`,`onBlur`),Vr(Fr,`onTransitionRun`),Vr(Ir,`onTransitionStart`),Vr(Lr,`onTransitionCancel`),Vr(Rr,`onTransitionEnd`),yt(`onMouseEnter`,[`mouseout`,`mouseover`]),yt(`onMouseLeave`,[`mouseout`,`mouseover`]),yt(`onPointerEnter`,[`pointerout`,`pointerover`]),yt(`onPointerLeave`,[`pointerout`,`pointerover`]),vt(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),vt(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),vt(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),vt(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),vt(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),vt(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var vd=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),yd=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(vd));function bd(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){q(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){q(e)}i.currentTarget=null,a=c}}}}function xd(e,t){var n=t[at];n===void 0&&(n=t[at]=new Set);var r=e+`__bubble`;n.has(r)||(Td(t,e,2,!1),n.add(r))}function Sd(e,t,n){var r=0;t&&(r|=4),Td(n,e,r,t)}var Cd=`_reactListening`+Math.random().toString(36).slice(2);function wd(e){if(!e[Cd]){e[Cd]=!0,gt.forEach(function(t){t!==`selectionchange`&&(yd.has(t)||Sd(t,!1,e),Sd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Cd]||(t[Cd]=!0,Sd(`selectionchange`,!1,t))}}function Td(e,t,n,r){switch(gp(t)){case 2:var i=up;break;case 8:i=dp;break;default:i=fp}n=i.bind(null,t,n,e),i=void 0,!an||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Ed(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=dt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}tn(function(){var r=a,i=Zt(n),s=[];a:{var c=zr.get(e);if(c!==void 0){var l=hn,u=e;switch(e){case`keypress`:if(un(n)===0)break a;case`keydown`:case`keyup`:l=Mn;break;case`focusin`:u=`focus`,l=Cn;break;case`focusout`:u=`blur`,l=Cn;break;case`beforeblur`:case`afterblur`:l=Cn;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=xn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=Sn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Pn;break;case Mr:case Nr:case Pr:l=wn;break;case Rr:l=Fn;break;case`scroll`:case`scrollend`:l=_n;break;case`wheel`:l=In;break;case`copy`:case`cut`:case`paste`:l=Tn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=Nn;break;case`toggle`:case`beforetoggle`:l=Ln}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=nn(m,p),g!=null&&d.push(Dd(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==Xt&&(u=n.relatedTarget||n.fromElement)&&(dt(u)||u[it]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?dt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=xn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=Nn,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:pt(l),h=u==null?c:pt(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,dt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=kd,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Ad(s,c,l,d,!1),u!==null&&f!==null&&Ad(s,f,u,d,!0)}}a:{if(c=r?pt(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=rr;else if(Zn(c)){if(ir)v=fr;else{v=ur;var y=lr}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&Gt(r.elementType)&&(v=rr):v=dr;if(v&&=v(e,r)){Qn(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&Lt(c,`number`,c.value)}switch(y=r?pt(r):window,e){case`focusin`:(Zn(y)||y.contentEditable===`true`)&&(Sr=y,Cr=r,wr=null);break;case`focusout`:wr=Cr=Sr=null;break;case`mousedown`:Tr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Tr=!1,Er(s,n,i);break;case`selectionchange`:if(xr)break;case`keydown`:case`keyup`:Er(s,n,i)}var b;if(zn)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else qn?Gn(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(Hn&&n.locale!==`ko`&&(qn||x!==`onCompositionStart`?x===`onCompositionEnd`&&qn&&(b=ln()):(sn=i,W=`value`in sn?sn.value:sn.textContent,qn=!0)),y=Od(r,x),0<y.length&&(x=new En(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=Kn(n),b!==null&&(x.data=b)))),(b=Vn?Jn(e,n):Yn(e,n))&&(x=Od(r,`onBeforeInput`),0<x.length&&(y=new En(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),hd(s,e,r,n,i)}bd(s,t)})}function Dd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Od(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=nn(e,n),i!=null&&r.unshift(Dd(e,i,a)),i=nn(e,t),i!=null&&r.push(Dd(e,i,a))),e.tag===3)return r;e=e.return}return[]}function kd(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Ad(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=nn(n,a),l!=null&&o.unshift(Dd(n,l,c))):i||(l=nn(n,a),l!=null&&o.push(Dd(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var jd=/\r\n?/g,Md=/\u0000|\uFFFD/g;function Nd(e){return(typeof e==`string`?e:``+e).replace(jd,`
|
|
9
|
-
`).replace(Md,``)}function Pd(e,t){return t=Nd(t),Nd(e)===t}function Fd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Vt(e,``+r);break;case`className`:Tt(e,`class`,r);break;case`tabIndex`:Tt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Tt(e,n,r);break;case`style`:Wt(e,r,o);break;case`data`:if(t!==`object`){Tt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&Fd(e,t,`name`,a.name,a,null),Fd(e,t,`formEncType`,a.formEncType,a,null),Fd(e,t,`formMethod`,a.formMethod,a,null),Fd(e,t,`formTarget`,a.formTarget,a,null)):(Fd(e,t,`encType`,a.encType,a,null),Fd(e,t,`method`,a.method,a,null),Fd(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`onScroll`:r!=null&&xd(`scroll`,e);break;case`onScrollEnd`:r!=null&&xd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=Jt(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:xd(`beforetoggle`,e),xd(`toggle`,e),wt(e,`popover`,r);break;case`xlinkActuate`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:wt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=Kt.get(n)||n,wt(e,n,r))}}function Id(e,t,n,r,a,o){switch(n){case`style`:Wt(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Vt(e,``+r);break;case`onScroll`:r!=null&&xd(`scroll`,e);break;case`onScrollEnd`:r!=null&&xd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!_t.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[rt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):wt(e,n,r)}}}function Ld(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:xd(`error`,e),xd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Fd(e,t,o,s,n,null)}}a&&Fd(e,t,`srcSet`,n.srcSet,n,null),r&&Fd(e,t,`src`,n.src,n,null);return;case`input`:xd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Fd(e,t,r,d,n,null)}}It(e,o,c,l,u,s,a,!1);return;case`select`:for(a in xd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Fd(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Rt(e,!!r,n,!0):Rt(e,!!r,t,!1);return;case`textarea`:for(s in xd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Fd(e,t,s,c,n,null)}Bt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Fd(e,t,l,r,n,null)}return;case`dialog`:xd(`beforetoggle`,e),xd(`toggle`,e),xd(`cancel`,e),xd(`close`,e);break;case`iframe`:case`object`:xd(`load`,e);break;case`video`:case`audio`:for(r=0;r<vd.length;r++)xd(vd[r],e);break;case`image`:xd(`error`,e),xd(`load`,e);break;case`details`:xd(`toggle`,e);break;case`embed`:case`source`:case`link`:xd(`error`,e),xd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Fd(e,t,u,r,n,null)}return;default:if(Gt(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Id(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Fd(e,t,c,r,n,null))}function Rd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Fd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Fd(e,t,p,m,r,f)}}Ft(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Fd(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Fd(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Rt(e,!!n,n?[]:``,!1):Rt(e,!!n,t,!0)):Rt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Fd(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Fd(e,t,s,a,r,o)}zt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Fd(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Fd(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Fd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Fd(e,t,u,p,r,m)}return;default:if(Gt(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Id(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Id(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Fd(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Fd(e,t,f,p,r,m)}function zd(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Bd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&zd(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&zd(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Vd=null,Hd=null;function Ud(e){return e.nodeType===9?e:e.ownerDocument}function Wd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Gd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Kd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var qd=null;function Jd(){var e=window.event;return e&&e.type===`popstate`?e!==qd&&(qd=e,!0):(qd=null,!1)}var Yd=typeof setTimeout==`function`?setTimeout:void 0,Xd=typeof clearTimeout==`function`?clearTimeout:void 0,Zd=typeof Promise==`function`?Promise:void 0,Qd=typeof queueMicrotask==`function`?queueMicrotask:Zd===void 0?Yd:function(e){return Zd.resolve(null).then(e).catch($d)};function $d(e){setTimeout(function(){throw e})}function ef(e){return e===`head`}function tf(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Pp(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)gf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,gf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[lt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&gf(e.ownerDocument.body)}n=i}while(n);Pp(t)}function nf(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function rf(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:rf(n),ut(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function af(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[lt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=df(e.nextSibling),e===null)break}return null}function of(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=df(e.nextSibling),e===null))return null;return e}function sf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=df(e.nextSibling),e===null))return null;return e}function cf(e){return e.data===`$?`||e.data===`$~`}function lf(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function uf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function df(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var ff=null;function pf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return df(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function mf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function hf(e,t,n){switch(t=Ud(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function gf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ut(e)}var _f=new Map,vf=new Set;function yf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var bf=I.d;I.d={f:xf,r:Sf,D:wf,C:Tf,L:Ef,m:Df,X:kf,S:Of,M:Af};function xf(){var e=bf.f(),t=xu();return e||t}function Sf(e){var t=ft(e);t!==null&&t.tag===5&&t.type===`form`?Ss(t):bf.r(e)}var Cf=typeof document>`u`?null:document;function Z(e,t,n){var r=Cf;if(r&&typeof t==`string`&&t){var i=Pt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),vf.has(i)||(vf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Ld(t,`link`,e),ht(t),r.head.appendChild(t)))}}function wf(e){bf.D(e),Z(`dns-prefetch`,e,null)}function Tf(e,t){bf.C(e,t),Z(`preconnect`,e,t)}function Ef(e,t,n){bf.L(e,t,n);var r=Cf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Pt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Pt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Pt(n.imageSizes)+`"]`)):i+=`[href="`+Pt(e)+`"]`;var a=i;switch(t){case`style`:a=Mf(e);break;case`script`:a=If(e)}_f.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),_f.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Nf(a))||t===`script`&&r.querySelector(Lf(a))||(t=r.createElement(`link`),Ld(t,`link`,e),ht(t),r.head.appendChild(t)))}}function Df(e,t){bf.m(e,t);var n=Cf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Pt(r)+`"][href="`+Pt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=If(e)}if(!_f.has(a)&&(e=h({rel:`modulepreload`,href:e},t),_f.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Lf(a)))return}r=n.createElement(`link`),Ld(r,`link`,e),ht(r),n.head.appendChild(r)}}}function Of(e,t,n){bf.S(e,t,n);var r=Cf;if(r&&e){var i=mt(r).hoistableStyles,a=Mf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Nf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=_f.get(a))&&Bf(e,n);var c=o=r.createElement(`link`);ht(c),Ld(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,zf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function kf(e,t){bf.X(e,t);var n=Cf;if(n&&e){var r=mt(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=h({src:e,async:!0},t),(t=_f.get(i))&&Vf(e,t),a=n.createElement(`script`),ht(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Af(e,t){bf.M(e,t);var n=Cf;if(n&&e){var r=mt(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=_f.get(i))&&Vf(e,t),a=n.createElement(`script`),ht(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function jf(e,t,n,r){var a=(a=se.current)?yf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Mf(n.href),n=mt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Mf(n.href);var o=mt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Nf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),_f.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},_f.set(e,n),o||Ff(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=If(n),n=mt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Mf(e){return`href="`+Pt(e)+`"`}function Nf(e){return`link[rel="stylesheet"][`+e+`]`}function Pf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Ff(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Ld(t,`link`,n),ht(t),e.head.appendChild(t))}function If(e){return`[src="`+Pt(e)+`"]`}function Lf(e){return`script[async]`+e}function Rf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Pt(n.href)+`"]`);if(r)return t.instance=r,ht(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),ht(r),Ld(r,`style`,a),zf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Mf(n.href);var o=e.querySelector(Nf(a));if(o)return t.state.loading|=4,t.instance=o,ht(o),o;r=Pf(n),(a=_f.get(a))&&Bf(r,a),o=(e.ownerDocument||e).createElement(`link`),ht(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Ld(o,`link`,r),t.state.loading|=4,zf(o,n.precedence,e),t.instance=o;case`script`:return o=If(n.src),(a=e.querySelector(Lf(o)))?(t.instance=a,ht(a),a):(r=n,(a=_f.get(o))&&(r=h({},n),Vf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),ht(a),Ld(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,zf(r,n.precedence,e));return t.instance}function zf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Bf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Vf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Hf=null;function Uf(e,t,n){if(Hf===null){var r=new Map,i=Hf=new Map;i.set(n,r)}else i=Hf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[lt]||a[nt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Wf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Gf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Kf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function qf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Mf(r.href),a=t.querySelector(Nf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Xf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,ht(a);return}a=t.ownerDocument||t,r=Pf(r),(i=_f.get(i))&&Bf(r,i),a=a.createElement(`link`),ht(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Ld(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Xf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Jf=0;function Yf(e,t){return e.stylesheets&&e.count===0&&Qf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Jf===0&&(Jf=62500*Bd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Jf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Xf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Qf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Zf=null;function Qf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Zf=new Map,t.forEach($f,e),Zf=null,Xf.call(e))}function $f(e,t){if(!(t.state.loading&4)){var n=Zf.get(e);if(n)var r=n.get(null);else{n=new Map,Zf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Xf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var ep={$$typeof:C,Provider:null,Consumer:null,_currentValue:te,_currentValue2:te,_threadCount:0};function tp(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Ge(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ge(0),this.hiddenUpdates=Ge(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function np(e,t,n,r,i,a,o,s,c,l,u,d){return e=new tp(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=$r(3,null,null,t),e.current=a,a.stateNode=e,t=ea(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Na(a),e}function rp(e){return e?(e=Zr,e):Zr}function ip(e,t,n,r,i,a){i=rp(i),r.context===null?r.context=i:r.pendingContext=i,r=Fa(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ia(e,r,t),n!==null&&(gu(n,e,t),La(n,e,t))}function ap(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function op(e,t){ap(e,t),(e=e.alternate)&&ap(e,t)}function sp(e){if(e.tag===13||e.tag===31){var t=Jr(e,67108864);t!==null&&gu(t,e,67108864),op(e,67108864)}}function cp(e){if(e.tag===13||e.tag===31){var t=mu();t=Ze(t);var n=Jr(e,t);n!==null&&gu(n,e,t),op(e,t)}}var lp=!0;function up(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=2,fp(e,t,n,r)}finally{I.p=a,F.T=i}}function dp(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=8,fp(e,t,n,r)}finally{I.p=a,F.T=i}}function fp(e,t,n,r){if(lp){var i=pp(r);if(i===null)Ed(e,t,r,mp,n),wp(e,r);else if(Ep(i,e,t,n,r))r.stopPropagation();else if(wp(e,r),t&4&&-1<Cp.indexOf(e)){for(;i!==null;){var a=ft(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Be(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Pe(o);s.entanglements[1]|=c,o&=~c}id(a),!(Il&6)&&(nu=Te()+500,ad(0,!1))}}break;case 31:case 13:s=Jr(a,2),s!==null&&gu(s,a,2),xu(),op(a,2)}if(a=pp(r),a===null&&Ed(e,t,r,mp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Ed(e,t,r,null,n)}}function pp(e){return e=Zt(e),hp(e)}var mp=null;function hp(e){if(mp=null,e=dt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return mp=e,null}function gp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Ee()){case De:return 2;case Oe:return 8;case ke:case z:return 32;case Ae:return 268435456;default:return 32}default:return 32}}var _p=!1,vp=null,yp=null,Q=null,bp=new Map,xp=new Map,Sp=[],Cp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function wp(e,t){switch(e){case`focusin`:case`focusout`:vp=null;break;case`dragenter`:case`dragleave`:yp=null;break;case`mouseover`:case`mouseout`:Q=null;break;case`pointerover`:case`pointerout`:bp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:xp.delete(t.pointerId)}}function Tp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=ft(t),t!==null&&sp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Ep(e,t,n,r,i){switch(t){case`focusin`:return vp=Tp(vp,e,t,n,r,i),!0;case`dragenter`:return yp=Tp(yp,e,t,n,r,i),!0;case`mouseover`:return Q=Tp(Q,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return bp.set(a,Tp(bp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,xp.set(a,Tp(xp.get(a)||null,e,t,n,r,i)),!0}return!1}function Dp(e){var t=dt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,et(e.priority,function(){cp(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,et(e.priority,function(){cp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Op(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=pp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Xt=r,n.target.dispatchEvent(r),Xt=null}else return t=ft(n),t!==null&&sp(t),e.blockedOn=n,!1;t.shift()}return!0}function kp(e,t,n){Op(e)&&n.delete(t)}function Ap(){_p=!1,vp!==null&&Op(vp)&&(vp=null),yp!==null&&Op(yp)&&(yp=null),Q!==null&&Op(Q)&&(Q=null),bp.forEach(kp),xp.forEach(kp)}function jp(e,n){e.blockedOn===n&&(e.blockedOn=null,_p||(_p=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Ap)))}var Mp=null;function Np(e){Mp!==e&&(Mp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Mp===e&&(Mp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(hp(r||n)===null)continue;break}var a=ft(n);a!==null&&(e.splice(t,3),t-=3,bs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Pp(e){function t(t){return jp(t,e)}vp!==null&&jp(vp,e),yp!==null&&jp(yp,e),Q!==null&&jp(Q,e),bp.forEach(t),xp.forEach(t);for(var n=0;n<Sp.length;n++){var r=Sp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Sp.length&&(n=Sp[0],n.blockedOn===null);)Dp(n),n.blockedOn===null&&Sp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[rt]||null;if(typeof a==`function`)o||Np(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[rt]||null)s=o.formAction;else if(hp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Np(n)}}}function Fp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Ip(e){this._internalRoot=e}Lp.prototype.render=Ip.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;ip(n,mu(),e,t,null,null)},Lp.prototype.unmount=Ip.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;ip(e.current,2,null,e,null,null),xu(),t[it]=null}};function Lp(e){this._internalRoot=e}Lp.prototype.unstable_scheduleHydration=function(e){if(e){var t=$e();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Sp.length&&t!==0&&t<Sp[n].priority;n++);Sp.splice(n,0,e),n===0&&Dp(e)}};var Rp=n.version;if(Rp!==`19.2.8`)throw Error(i(527,Rp,`19.2.8`));I.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=f(t),e=e===null?null:m(e),e=e===null?null:e.stateNode,e};var zp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:F,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Bp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Bp.isDisabled&&Bp.supportsFiber)try{Me=Bp.inject(zp),Ne=Bp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Us,s=Ws,c=Gs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=np(e,1,!1,null,null,n,r,null,o,s,c,Fp),e[it]=t.current,wd(e),new Ip(t)}})),h=t(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()}))(),g=l();function _(e){let t=e,n=new Set;return{get:()=>t,set(e){if(!Object.is(e,t)){t=e;for(let e of n)e()}},subscribe(e){return n.add(e),()=>n.delete(e)}}}function v(e){return(0,g.useSyncExternalStore)(e.subscribe,e.get)}var y=n({en:()=>b,zh:()=>x}),b={artifact:{preview:`preview`,source:`source`,open:`[ open ]`,loading:`Loading…`,tooLarge:`Too large to preview ({size}); the source view reads it as text.`,notPreviewable:`This file cannot be previewed.`,gone:`The file is gone.`,failed:`Could not read the file: {error}`}},x={artifact:{preview:`预览`,source:`源码`,open:`[ 打开 ]`,loading:`加载中…`,tooLarge:`文件太大,无法预览({size});可在源码视图中按文本查看。`,notPreviewable:`这个文件无法预览。`,gone:`文件已不存在。`,failed:`无法读取文件:{error}`}},S=n({en:()=>C,zh:()=>w}),C={compare:{title:`Compare attempts`,menu:`Compare attempts`,severalEngines:`[ compare engines ]`,oneEngine:`[ one engine ]`,needsPrompt:`Compare runs the prompt, so it needs one`,empty:`No attempts left in this round.`,noReply:`no reply yet`,noChanges:`no changes`,status:{working:`working`,waiting:`waiting for you`,error:`needs a look`,done:`done`,idle:`idle`},files:`files: {count}`,more:`+{count} more`,kept:`kept`,strip:`[ compare ]`,stackLabel:`Stacked tasks`,landBottom:`[ land bottom ]`,terminal:`[ terminal ]`,diff:`[ diff ]`,keep:`[ keep this one ]`,unkeep:`[ unkeep ]`,keptToast:`kept {title}`,unkeptToast:`no longer kept: {title}`,keepFailed:`could not mark it kept: {error}`,archiveTitle:`Archive the other attempts?`,archiveBody:`Hides the other {count} from the rail. Their worktrees and branches stay, and nothing running is stopped.`,archiveConfirm:`Archive`,archiveBusyTitle:`Some attempts are still working`,archiveBusyBody:`Archive them anyway? Their worktrees and branches stay, and nothing is stopped.`,archiveBusyConfirm:`Archive anyway`,archived:`archived {count} attempts`,archiveFailed:`could not archive: {error}`}},w={compare:{title:`对比方案`,menu:`对比方案`,severalEngines:`[ 多引擎对比 ]`,oneEngine:`[ 单引擎 ]`,needsPrompt:`对比要运行提示词,请先写一个`,empty:`这一轮没有剩下的方案。`,noReply:`还没有回复`,noChanges:`没有改动`,status:{working:`运行中`,waiting:`等你处理`,error:`需要看一眼`,done:`已完成`,idle:`空闲`},files:`文件:{count}`,more:`另有 {count} 个`,kept:`已保留`,strip:`[ 对比 ]`,stackLabel:`堆叠任务`,landBottom:`[ 合并底部 ]`,terminal:`[ 终端 ]`,diff:`[ diff ]`,keep:`[ 保留这个 ]`,unkeep:`[ 取消保留 ]`,keptToast:`已保留 {title}`,unkeptToast:`已取消保留:{title}`,keepFailed:`无法标记保留:{error}`,archiveTitle:`归档其他方案?`,archiveBody:`把其余 {count} 个从侧栏收起。它们的 worktree 和分支都保留,运行中的也不会被停掉。`,archiveConfirm:`归档`,archiveBusyTitle:`有方案还在运行`,archiveBusyBody:`仍要归档吗?它们的 worktree 和分支都保留,也不会停掉任何东西。`,archiveBusyConfirm:`仍然归档`,archived:`已归档 {count} 个方案`,archiveFailed:`无法归档:{error}`}},T=n({en:()=>E,zh:()=>D}),E={context:{title:`Context`,used:`{percent} used`,usedTokens:`{tokens} used`,loading:`Reading context…`,none:`No context reading for this conversation: its engine records none, or it has not answered yet.`,failed:`Couldn't read context: {error}`,approximate:`Approximate.`,part:{system:`System prompt & tools`,messages:`Messages`,used:`Used`,free:`Free space`}}},D={context:{title:`上下文`,used:`已用 {percent}`,usedTokens:`已用 {tokens}`,loading:`正在读取上下文…`,none:`这个会话没有上下文读数:它的引擎不记录,或者还没回复过。`,failed:`读取上下文失败:{error}`,approximate:`近似值。`,part:{system:`系统提示与工具`,messages:`消息`,used:`已用`,free:`剩余空间`}}},O=n({en:()=>k,zh:()=>A}),k={dialog:{cancel:`cancel`,save:`save`,close:`close`},whatsNew:{continue:`Continue`,openRelease:`Open release notes`,keys:`q / esc`},menu:{closeTab:`Close tab`,newChat:`New conversation`,newChatPick:`New conversation with…`,retryEdit:`Retry with edited prompt…`,retryNoPrompt:`This task has no stored prompt`,startNow:`Start now`,cancelStart:`Cancel scheduled start`,continueEngine:`Continue in another engine…`,newShell:`New shell`,newChatNoFolder:`New conversation (no folder)`,renameTab:`Rename tab`,splitRight:`Split right`,splitDown:`Split down`,renamePane:`Rename pane`,closePane:`Close pane`,newTask:`New task`,rename:`Rename`,pin:`Pin`,unpin:`Unpin`,setStatus:`Set status`,copy:`Copy`,copyWhat:{id:`Task ID`,branch:`Branch name`,path:`Worktree path`},renameBranch:`Rename branch`,changeEngine:`Change engine`,land:`Land into base branch`,delete:`Delete`,removeSession:`Remove session`,copied:`copied {text}`,copyFailed:`the browser refused the clipboard`,nothingToCopy:`this task has no {what} yet`,what:{id:`id`,branch:`branch`,path:`worktree path`}},confirm:{closeTabTitle:`Close "{tab}"?`,closeTabBody:`Stops the session in this tab. The task and its worktree stay.`,closePaneTitle:`Close "{pane}"?`,closePaneBody:`The engine session in this pane ends. The tab's other panes stay.`,delete:`delete`,forceDelete:`force delete`},newTask:{title:`new task`,repo:`project`,engine:`engine`,notReady:`not installed or not signed in`,taskTitle:`title`,titlePlaceholder:`optional; derived from the prompt otherwise`,prompt:`first message`,promptPlaceholder:`optional; ⌘↵ creates`,create:`create`,needRepo:`pick a project first`},newChat:{title:`new conversation`,prompt:`first message`,start:`start`,promptPlaceholder:`optional; empty opens the engine without a message`},newSession:{title:`New session`,tagline:`Pick a project and a model, then describe the task. The session starts with your first message.`,placeholder:`Describe a task or ask a question`,start:`Start session`,createOnly:`Create without starting`,later:`Later…`,laterConfirm:`Start later`,laterPlaceholder:`22:30 · tomorrow 9:00 · +30m`,laterBad:`That is not a time ahead. Try 22:30, tomorrow 9:00 or +2h.`,laterSet:`Starts at {time}`,retryArchiveTitle:`Archive "{title}"?`,retryArchiveBody:`The retry has started. Archive the original? Nothing is stopped or deleted.`,needRepo:`Pick a project first`,needPrompt:`Describe the task first`,repo:`Project`,repoSearch:`Search projects or type a path`,repoEmpty:`No matching project`,cloneRow:`Clone {source}`,cloning:`Cloning {source}…`,githubGroup:`Your GitHub repositories`,branch:`Branch`,branchSearch:`Search branches`,branches:`Branches`,branchName:`Branch name, shared by every repo`,branchNamePlaceholder:`derived from the prompt`,primary:`primary`,repoCount:`{count} repos: the first is the primary`,branchEmpty:`No matching branch`,model:`Model`,modelHeading:`Model for this session`,engine:`Engine`,effort:`Effort`,modelDefault:`Default`,effortDefault:`Default`,moreWays:`Clone or adopt a worktree…`,attach:`Attach`,attachHint:`Add images or PDFs to the first message; you can also paste or drop them on the prompt`,removeAttachment:`Remove {name}`,worktree:`Worktree`,worktreeOn:`Runs in its own worktree and branch. Click to run in the project's checkout instead`,worktreeOff:`Runs in the project's checkout as it is, on its current branch. Click for a worktree`,worktreeMulti:`A task across several repos always gets a worktree in each`,machine:`Machine`,thisMachine:`This machine`,cloneRowOn:`Clone {source} on {machine}`,cloningOn:`Cloning {source} on {machine}…`,startingOn:`Starting the task on {machine}…`,repoSearchRemote:`Search or type owner/repo`,cloneTag:`clone`,remoteOffline:`{machine} is offline`,remoteOutdated:`{machine} runs a Rove too old to list its projects`,remoteFailed:`Could not read {machine}'s projects: {message}`,remoteNone:`{machine} has no projects yet. Type owner/repo to clone one there`,remoteLoading:`Reading {machine}'s projects…`,branchTypeRef:`Type a branch or ref to start from`,branchRemoteDefault:`Its current branch`},search:{tasks:`Tasks`,commands:`Commands`,inConversations:`In conversations`,searching:`searching…`,none:`Nothing said matches “{query}”.`,you:`you`,agent:`agent`,truncated:`Stopped early to stay fast; add a word to narrow it.`,skipped:`{count} task(s) not searched: another machine's, or an engine Rove cannot read.`},taskops:{publishTitle:`publish to the remote`,publishBody:`{branch} lives on {host}. Push it from there and open a pull request?`,publishButton:`push & open PR`,publishedPr:`pushed {branch} — PR {url}`,publishedNoPr:`pushed {branch}, but no PR: {reason}`,set:`set`,retire:`delete`,close:`close`,moveHint:`j/k move · enter or esc done`,fixSent:`asked the agent to fix the failing checks`,forkNeedsMessage:`a message is required to fork a task`,forkLeftBehind:`Started from the last commit — uncommitted work stays in the original task ({reason})`,forkBranch:`fork from branch`,openedExternal:`opened in the Mac's app`}},A={dialog:{cancel:`取消`,save:`保存`,close:`关闭`},whatsNew:{continue:`继续`,openRelease:`打开发布说明`,keys:`q / esc`},menu:{closeTab:`关闭该标签页`,newChat:`新建会话`,newChatPick:`选择引擎新建会话…`,retryEdit:`改提示词后重试…`,retryNoPrompt:`这个任务没有保存的提示词`,startNow:`立即启动`,cancelStart:`取消定时启动`,continueEngine:`换个引擎继续…`,newShell:`新建终端`,newChatNoFolder:`新建会话(无文件夹)`,renameTab:`重命名标签页`,splitRight:`向右分屏`,splitDown:`向下分屏`,renamePane:`重命名分屏`,closePane:`关闭分屏`,newTask:`新建任务`,rename:`重命名`,pin:`置顶`,unpin:`取消置顶`,setStatus:`设置状态`,copy:`复制`,copyWhat:{id:`任务 ID`,branch:`分支名`,path:`worktree 路径`},renameBranch:`重命名分支`,changeEngine:`切换引擎`,land:`合入基础分支`,delete:`删除`,removeSession:`移除会话`,copied:`已复制 {text}`,copyFailed:`浏览器拒绝了剪贴板访问`,nothingToCopy:`这个任务还没有{what}`,what:{id:`ID`,branch:`分支`,path:`worktree 路径`}},confirm:{closeTabTitle:`关闭「{tab}」?`,closeTabBody:`停止这个标签里的会话。任务和它的 worktree 会保留。`,closePaneTitle:`关闭「{pane}」?`,closePaneBody:`这个分屏里的引擎会话会结束。标签里的其他分屏会保留。`,delete:`删除`,forceDelete:`强制删除`},newTask:{title:`新建任务`,repo:`项目`,engine:`引擎`,notReady:`未安装或未登录`,taskTitle:`标题`,titlePlaceholder:`可选;不填就从第一条消息生成`,prompt:`第一条消息`,promptPlaceholder:`可选;⌘↵ 创建`,create:`创建`,needRepo:`先选一个项目`},newChat:{title:`新建会话`,prompt:`第一条消息`,start:`开始`,promptPlaceholder:`可选;留空则直接打开引擎,不发消息`},newSession:{title:`新会话`,tagline:`选好项目和模型,再描述任务。会话从你的第一条消息开始。`,placeholder:`描述一个任务,或提个问题`,start:`开始会话`,createOnly:`仅创建,不启动`,later:`稍后…`,laterConfirm:`稍后启动`,laterPlaceholder:`22:30 · 明天 9:00 · +30m`,laterBad:`这不是一个未来的时间。试试 22:30、明天 9:00 或 +2h。`,laterSet:`{time} 启动`,retryArchiveTitle:`归档「{title}」?`,retryArchiveBody:`重试已经开始。要把原来的会话归档吗?不会停止或删除任何东西。`,needRepo:`先选一个项目`,needPrompt:`先描述一下任务`,repo:`项目`,repoSearch:`搜索项目,或输入路径`,repoEmpty:`没有匹配的项目`,cloneRow:`克隆 {source}`,cloning:`正在克隆 {source}…`,githubGroup:`你的 GitHub 仓库`,branch:`分支`,branchSearch:`搜索分支`,branches:`分支`,branchName:`分支名,所有仓库共用`,branchNamePlaceholder:`不填就从提示词生成`,primary:`主仓库`,repoCount:`{count} 个仓库,第一个是主仓库`,branchEmpty:`没有匹配的分支`,model:`模型`,modelHeading:`本次会话的模型`,engine:`引擎`,effort:`强度`,modelDefault:`默认`,effortDefault:`默认`,moreWays:`克隆,或接管 worktree…`,attach:`附件`,attachHint:`给第一条消息加图片或 PDF;也可以直接粘贴或拖到输入框里`,removeAttachment:`移除 {name}`,worktree:`Worktree`,worktreeOn:`在独立的 worktree 和分支里运行。点击改为直接在项目目录里运行`,worktreeOff:`直接在项目目录里运行,用它当前的分支。点击改为独立 worktree`,worktreeMulti:`跨多个仓库的任务每个仓库都会有 worktree`,machine:`机器`,thisMachine:`本机`,cloneRowOn:`在 {machine} 上克隆 {source}`,cloningOn:`正在 {machine} 上克隆 {source}…`,startingOn:`正在 {machine} 上启动任务…`,repoSearchRemote:`搜索,或输入 owner/repo`,cloneTag:`克隆`,remoteOffline:`{machine} 已离线`,remoteOutdated:`{machine} 上的 Rove 太旧,列不出它的项目`,remoteFailed:`读不到 {machine} 上的项目:{message}`,remoteNone:`{machine} 上还没有项目。输入 owner/repo 就能在那里克隆`,remoteLoading:`正在读取 {machine} 上的项目…`,branchTypeRef:`输入要基于的分支或 ref`,branchRemoteDefault:`它当前的分支`},search:{tasks:`任务`,commands:`命令`,inConversations:`在对话里`,searching:`搜索中…`,none:`没有说过「{query}」。`,you:`你`,agent:`agent`,truncated:`为了快提前停了;多加一个词缩小范围。`,skipped:`有 {count} 个任务没搜:在别的机器上,或 Rove 读不了它的引擎记录。`},taskops:{publishTitle:`推送到远端`,publishBody:`{branch} 在 {host} 上。要从那台机器推送它并开一个 PR 吗?`,publishButton:`推送并开 PR`,publishedPr:`已推送 {branch} — PR {url}`,publishedNoPr:`已推送 {branch},但没开成 PR:{reason}`,set:`设置`,retire:`删除`,close:`关闭`,moveHint:`j/k 移动 · enter 或 esc 完成`,fixSent:`已请 agent 修复失败的检查`,forkNeedsMessage:`fork 任务需要填写消息`,forkLeftBehind:`已从最近一次提交开始——未提交的改动留在原任务里({reason})`,forkBranch:`基于分支`,openedExternal:`已在 Mac 上用系统应用打开`}},j=n({en:()=>ee,zh:()=>M}),ee={machines:{title:`Machines`,open:`[ machines ]`,none:"No other machines registered. Add one with `rove machine add`.",newHere:`[ new task here ]`,tasks:`[ tasks ]`,repos:`[ repos ]`,hide:`[ hide ]`,noTasks:`no tasks`,noRepos:`no repos`,loading:`…`,reposFailed:`couldn't read its repos: {message}`,reason:{refused:`ssh was refused (nothing is listening or a firewall is in the way)`,timeout:`ssh timed out`,"host-key-changed":`its ssh host key changed; check it, then update known_hosts`,"host-key-unverified":`its ssh host key is not known yet; connect once by hand to trust it`,"auth-denied":`ssh refused the login (no key or password accepted)`,unresolved:`its hostname does not resolve`,"ssh-failed":`ssh failed`,"no-rove":`rove is not installed there`,"no-daemon":`its rove daemon is not running`,"bad-status":`it answered with something rove could not read`,handshake:`the link came up but the handshake failed`,"no-forwarding":`ssh forwarding is disabled there`,lost:`the link dropped; reconnecting`}}},M={machines:{title:`机器`,open:`[ 机器 ]`,none:"没有注册其他机器。用 `rove machine add` 添加。",newHere:`[ 在这台新建任务 ]`,tasks:`[ 任务 ]`,repos:`[ 仓库 ]`,hide:`[ 收起 ]`,noTasks:`没有任务`,noRepos:`没有仓库`,loading:`…`,reposFailed:`读不到它的仓库:{message}`,reason:{refused:`ssh 被拒绝(没有进程在监听,或被防火墙挡住)`,timeout:`ssh 超时`,"host-key-changed":`它的 ssh 主机密钥变了;确认无误后更新 known_hosts`,"host-key-unverified":`还不认识它的 ssh 主机密钥;先手动连一次以信任它`,"auth-denied":`ssh 拒绝了登录(没有被接受的密钥或密码)`,unresolved:`它的主机名解析不了`,"ssh-failed":`ssh 失败`,"no-rove":`那里没有安装 rove`,"no-daemon":`它的 rove 守护进程没在运行`,"bad-status":`它返回了 rove 读不懂的内容`,handshake:`链路通了但握手失败`,"no-forwarding":`那里禁用了 ssh 端口转发`,lost:`链路断了;正在重连`}}},N=n({en:()=>P,zh:()=>F}),P={files:{autoFix:{on:`[ auto-fix CI ]`,off:`[ turn off ]`,count:`auto-fix {n}/{max}`,stopped:`auto-fix stopped {n}/{max}`,hint:`When checks fail on a new push and the agent is idle, send it the failing logs. At most once per push, 3 times in all, then it stops and tells your Inbox.`},stripCreate:`[ create PR ]`,stripFixCi:`[ fix CI ]`,stripConflicts:`[ resolve conflicts ]`,stripComments:`[ address comments ]`,stripArchive:`[ archive ]`,stripFilled:`prompt is in the input; edit it and press Enter`,stripNoEngine:`No engine session open in this task — nowhere to put the prompt.`,stripUnavailable:`couldn't read the PR's checks: {detail}`,stripNothing:`nothing to ask the agent about right now`,run:{run:`[ run ]`,stop:`[ stop ]`,open:`[ open :{port} ]`},checks:{title:`checks`,summary:`{pass}/{total} passed`,failed:`{count} failed`,running:`{count} running`,none:`no checks`,refresh:`[ refresh ]`,loading:`…`,unavailable:`couldn't read the PR: {detail}`,log:`[ log ]`,hideLog:`[ hide ]`,noLog:`no log excerpt for this job`,logUnavailable:`couldn't read the log: {detail}`,more:`{count} more not shown`},merge:{draft:`draft`,conflicts:`conflicts`,behind:`behind base`,unstable:`checks not passing`,blocked:`blocked`,clean:`mergeable`,approved:`approved`,changes:`changes requested`,reviewRequired:`review required`},stripCommit:`[ commit ]`,prRequested:`asked the agent to create the PR`,remoteNoExternal:`this file is on {host}; open it there`,mentionNoEngine:`No engine session open in this task — nothing to mention into.`,all:`All`,changes:`Changes`,scopeWorking:`scope: working tree`,scopeBranch:`scope: vs {base}`,toggleScope:`b to toggle`,toggleScopeTouch:`switch`,noBase:`no base ref for branch scope`,legend:`M modified · A added · D deleted · ? untracked`,landTodos:`{count} todo(s) on this task are still unchecked.`,diffAll:`[D] diff everything`,diffAllTouch:`diff everything`,emptyAll:`(empty worktree)`,emptyChanges:`(no changes — clean worktree)`},preview:{loading:`loading…`,whole:`whole worktree`,unknown:`nothing to show`,binary:`binary file — not shown as text`,empty:`no changes`,noHunks:`no text changes ({kind})`,noteTitle:`note on {location}`,noteSubmit:`add note`,askInChat:`ask in chat`,askInChatHint:`Put the selected lines in the engine's prompt`,sent:`sent {count} notes to the engine`,notSent:`notes not sent: {reason}`},review:{comment:`comment`,range:`range`,count:`{count} comments`,countOne:`1 comment`,send:`send {count}`,sending:`sending…`,edit:`edit`,drop:`drop`,moved:`moved`,movedHint:`The code under this comment changed since it was written.`,show:`Show in the diff`,editTitle:`edit note on {location}`,editSubmit:`save note`,fold:`Fold {path}`,unfold:`Unfold {path}`,foldAll:`fold all`,unfoldAll:`unfold all`,ignoreWs:`[ ws ]`,ignoreWsHint:`Hide whitespace-only changes (git diff -w)`,viewed:`[ viewed ]`,markViewed:`Mark {path} viewed`,viewedOn:`[x] viewed`,unmarkViewed:`Unmark {path} viewed`,totals:`{files} files · +{added} −{removed}`,viewedCount:`{done}/{files} viewed`,nextFile:`[ next file ]`,nextComment:`[ next comment ]`,scopeMenu:`{base} → {scope} ▾`,compareAgainst:`Compare against {base}…`,baseDefault:`task base`,baseBranch:`branch`,baseRemote:`remote`,baseTag:`tag`,basePlaceholder:`branch, tag or commit`,shape:{effort:`effort {n}/5`,lockfile:`{count} lockfile`,lockfiles:`{count} lockfiles`,generated:`{count} generated`,tests:`{count} tests`,config:`{count} config`,docs:`{count} docs`,source:`{count} source`},scopeWorking:`Uncommitted changes`,scopeBranch:`Committed changes`,scopeTask:`All changes`,notSupported:`This bridge is older than the page and can't do that; restart it.`},panel:{tabs:`Side panel views`,files:`Files`,chat:`Chat`,diff:`Diff`,browser:`Browser`,quota:`Context`,resize:`Drag to resize the panel, double-click to reset`,empty:`Nothing open. Use + to open Files, a diff or a Browser.`,new:`New tab`,newChat:`Chat`,newFiles:`New Files`,newDiff:`Diff of whole worktree`,newBrowser:`New Browser`,newQuota:`Context window`,close:`Close`,hide:`Close the side panel`,expand:`Expand the side panel`,restore:`Restore the side panel size`,closeOthers:`Close others`,splitDown:`Split down`,moveBottom:`Move to bottom`,moveTop:`Move to top`,resizeSplit:`Drag to resize, double-click to split evenly`},browser:{address:`Address`,placeholder:`https://… or localhost:3000`,back:`Back`,forward:`Forward`,reload:`Reload`,openTab:`Open in a new tab`,invalid:`That is not a web address; only http and https pages open here.`,empty:`Enter a web address, or a local dev server.`,noFrame:`Only https pages open here; this address uses plain http. Use ↗ to open it in a new tab.`,self:`That address is Rove itself, which can't be framed. Use ↗ to open it in a new tab.`,refuses:`{host} doesn't allow being shown inside another page.`,unreachable:`{host} can't be reached from here.`,remote:`{host} runs on the Rove machine, not on this one.`}},F={files:{autoFix:{on:`[ 自动修复 CI ]`,off:`[ 关闭 ]`,count:`自动修复 {n}/{max}`,stopped:`自动修复已停止 {n}/{max}`,hint:`检查在新提交上失败且代理空闲时,自动把失败日志发给它。每次提交最多一次、总共 3 次,之后停止并通知收件箱。`},stripCreate:`[ 创建 PR ]`,stripFixCi:`[ 修复 CI ]`,stripConflicts:`[ 解决冲突 ]`,stripComments:`[ 处理评论 ]`,stripArchive:`[ 归档 ]`,stripFilled:`提示词已放进输入框,修改后按 Enter 发送`,stripNoEngine:`这个任务没有打开的引擎会话,提示词无处可放。`,stripUnavailable:`读不到 PR 的检查结果:{detail}`,stripNothing:`现在没有需要让代理处理的事`,run:{run:`[ 运行 ]`,stop:`[ 停止 ]`,open:`[ 打开 :{port} ]`},checks:{title:`检查`,summary:`{pass}/{total} 通过`,failed:`{count} 个失败`,running:`{count} 个进行中`,none:`没有检查`,refresh:`[ 刷新 ]`,loading:`…`,unavailable:`读不到这个 PR:{detail}`,log:`[ 日志 ]`,hideLog:`[ 收起 ]`,noLog:`这个作业没有日志摘录`,logUnavailable:`读不到日志:{detail}`,more:`还有 {count} 个未显示`},merge:{draft:`草稿`,conflicts:`有冲突`,behind:`落后于基线`,unstable:`检查未通过`,blocked:`被阻塞`,clean:`可合并`,approved:`已批准`,changes:`要求修改`,reviewRequired:`需要评审`},stripCommit:`[ 提交 ]`,prRequested:`已让代理去创建 PR`,remoteNoExternal:`这个文件在 {host} 上,请到那台机器上打开`,mentionNoEngine:`这个任务没有打开的引擎会话——没有地方可以提及。`,all:`全部`,changes:`变更`,scopeWorking:`范围:工作区`,scopeBranch:`范围:对比 {base}`,toggleScope:`b 切换`,toggleScopeTouch:`切换`,noBase:`没有基础分支,无法按分支范围查看`,legend:`M 修改 · A 新增 · D 删除 · ? 未跟踪`,landTodos:`此任务还有 {count} 条待办未完成。`,diffAll:`[D] 查看全部差异`,diffAllTouch:`查看全部差异`,emptyAll:`(空工作区)`,emptyChanges:`(没有变更——工作区是干净的)`},preview:{loading:`加载中…`,whole:`整个工作区`,unknown:`没有可显示的内容`,binary:`二进制文件——不以文本显示`,empty:`没有变更`,noHunks:`没有文本变更({kind})`,noteTitle:`批注 {location}`,noteSubmit:`添加批注`,askInChat:`在对话里问`,askInChatHint:`把选中的几行放进引擎的输入框`,sent:`已把 {count} 条批注发给引擎`,notSent:`批注没有发出:{reason}`},review:{comment:`批注`,range:`选范围`,count:`{count} 条批注`,countOne:`1 条批注`,send:`发送 {count} 条`,sending:`发送中…`,edit:`编辑`,drop:`删除`,moved:`已移位`,movedHint:`这条批注下面的代码在写下之后变了。`,show:`在差异里定位`,editTitle:`编辑批注 {location}`,editSubmit:`保存批注`,fold:`折叠 {path}`,unfold:`展开 {path}`,foldAll:`全部折叠`,unfoldAll:`全部展开`,ignoreWs:`[ ws ]`,ignoreWsHint:`隐藏仅空白的改动 (git diff -w)`,viewed:`[ 已看 ]`,markViewed:`标记 {path} 为已看`,viewedOn:`[x] 已看`,unmarkViewed:`取消 {path} 的已看`,totals:`{files} 个文件 · +{added} −{removed}`,viewedCount:`已看 {done}/{files}`,nextFile:`[ 下个文件 ]`,nextComment:`[ 下条评论 ]`,scopeMenu:`{base} → {scope} ▾`,compareAgainst:`对比基准:{base}…`,baseDefault:`任务基准`,baseBranch:`分支`,baseRemote:`远程`,baseTag:`标签`,basePlaceholder:`分支、标签或提交`,shape:{effort:`评审量 {n}/5`,lockfile:`{count} 个锁文件`,lockfiles:`{count} 个锁文件`,generated:`{count} 个生成文件`,tests:`{count} 个测试`,config:`{count} 个配置`,docs:`{count} 个文档`,source:`{count} 个源码`},scopeWorking:`未提交的改动`,scopeBranch:`已提交的改动`,scopeTask:`全部改动`,notSupported:`这个 bridge 比页面旧,做不了这个;请重启它。`},panel:{tabs:`侧边栏视图`,files:`文件`,chat:`对话`,diff:`差异`,browser:`浏览器`,quota:`上下文`,resize:`拖动调整侧边栏宽度,双击复位`,empty:`没有打开的内容。点 + 打开文件、差异或浏览器。`,new:`新建标签页`,newChat:`对话`,newFiles:`新建文件`,newDiff:`整个工作区的差异`,newBrowser:`新建浏览器`,newQuota:`上下文窗口`,close:`关闭`,hide:`关闭侧边栏`,expand:`展开侧边栏`,restore:`还原侧边栏大小`,closeOthers:`关闭其他`,splitDown:`向下分屏`,moveBottom:`移到下方`,moveTop:`移到上方`,resizeSplit:`拖动调整高度,双击恢复均分`},browser:{address:`地址`,placeholder:`https://… 或 localhost:3000`,back:`后退`,forward:`前进`,reload:`刷新`,openTab:`在新标签页打开`,invalid:`这不是网页地址;这里只能打开 http 和 https 页面。`,empty:`输入网页地址,或本地开发服务器的地址。`,noFrame:`这里只能打开 https 页面;这个地址用的是 http。点 ↗ 在新标签页打开。`,self:`这个地址就是 Rove 本身,不能嵌入。点 ↗ 在新标签页打开。`,refuses:`{host} 不允许嵌入其他页面。`,unreachable:`从这里访问不到 {host}。`,remote:`{host} 运行在 Rove 所在的机器上,不在这台设备上。`}},I=n({en:()=>te,zh:()=>L}),te={quote:{action:`[ quote ]`,title:`Put the selection in the prompt as a quote`,atMenu:`The agent is waiting on a choice. Answer it first, then quote.`,notReady:`The agent's prompt is not taking pasted text yet. Try again in a moment.`},snippets:{empty:`No snippets yet.`,name:`Name`,namePlaceholder:`review`,text:`Text`,textPlaceholder:`Review this change for bugs and missing tests.`,add:`[ add ]`,save:`[ save ]`,edit:`[ edit ]`,cancel:`[ cancel ]`,remove:`[ remove ]`,removed:`Removed @{name}`,badName:`A name is letters, digits, - or _, up to 32.`}},L={quote:{action:`[ 引用 ]`,title:`把选中的内容作为引用放进提示词`,atMenu:`agent 正在等你做选择。先回答它,再引用。`,notReady:`agent 的输入框暂时还不接受粘贴。稍等一下再试。`},snippets:{empty:`还没有片段。`,name:`名称`,namePlaceholder:`review`,text:`内容`,textPlaceholder:`检查这次改动有没有 bug,有没有漏掉的测试。`,add:`[ 添加 ]`,save:`[ 保存 ]`,edit:`[ 编辑 ]`,cancel:`[ 取消 ]`,remove:`[ 删除 ]`,removed:`已删除 @{name}`,badName:`名称只能是字母、数字、- 或 _,最长 32 位。`}},ne=n({en:()=>re,zh:()=>ie}),re={rail:{inbox:`inbox {count}`,empty:`no tasks yet`,skillCue:`skill missing`,newTask:`New task`,settings:`Settings`,noProject:`Ungrouped`,state:{needs:`needs you`,working:`working`,ready:`ready`,idle:`idle`},extraRepos:`{count} more repos in this task`,todos:`{done} of {total} todos done`,startsAt:`Starts {time}`,recap:{since:`since {time}`,finished:`{count} finished`,needs:`{count} needs you`,failed:`{count} failed`,merged:`{count} merged`,dismiss:`Dismiss`},pr:{state:{open:`open`,merged:`merged`,closed:`closed`},many:`{count} PRs in this task and its children`,checks:{conflict:`conflicts with its base`,failing:`checks failing`,passing:`checks passing`,pending:`checks running`}},searchPlaceholder:`fuzzy filter`,engineSwitched:`Engine → {engine} (applies on reopen)`,engineSwitchFailed:`could not switch engine: {error}`},inbox:{title:`inbox`,hints:`↑↓ move · enter open · d clear · esc close`,attention:`attention`,recent:`recent`,empty:`no pending attention`,reply:`[ reply ]`,hide:`[ hide ]`,send:`[ send ]`,openTab:`[ open ]`,noOutput:`no output yet`,replyPlaceholder:`reply to this session`,gateKept:`Saved; the engine isn't running and will get it with its next message.`,state:{done:`done`,needsInput:`needs input`,error:`error`,rateLimited:`rate limited`,dead:`engine exited`,routineFailed:`routine needs you`,decision:`needs a decision`}}},ie={rail:{inbox:`收件箱 {count}`,empty:`还没有任务`,skillCue:`缺少技能`,newTask:`新建任务`,settings:`设置`,noProject:`未分组`,state:{needs:`等你处理`,working:`进行中`,ready:`待收尾`,idle:`空闲`},extraRepos:`这个任务还含 {count} 个仓库`,todos:`{done}/{total} 条待办已完成`,startsAt:`{time} 启动`,recap:{since:`自 {time}`,finished:`{count} 个已完成`,needs:`{count} 个等你处理`,failed:`{count} 个失败`,merged:`{count} 个已合并`,dismiss:`关闭`},pr:{state:{open:`进行中`,merged:`已合并`,closed:`已关闭`},many:`这个任务及子任务共 {count} 个 PR`,checks:{conflict:`与基础分支冲突`,failing:`检查未通过`,passing:`检查已通过`,pending:`检查进行中`}},searchPlaceholder:`模糊搜索`,engineSwitched:`引擎 → {engine}(重新打开后生效)`,engineSwitchFailed:`切换引擎失败:{error}`},inbox:{title:`收件箱`,hints:`↑↓ 移动 · enter 打开 · d 清除 · esc 关闭`,attention:`待处理`,recent:`最近使用`,empty:`暂无待处理`,reply:`[ 回复 ]`,hide:`[ 收起 ]`,send:`[ 发送 ]`,openTab:`[ 打开 ]`,noOutput:`还没有输出`,replyPlaceholder:`回复这个会话`,gateKept:`已记下;引擎没在运行,下次发消息时一并送达。`,state:{done:`完成`,needsInput:`需要输入`,error:`出错`,rateLimited:`限流`,dead:`引擎已退出`,routineFailed:`例行任务需要处理`,decision:`等你决定`}}},R=n({en:()=>ae,zh:()=>oe}),ae={reviewQueue:{sourceIssues:`[ issues ]`,sourceReviews:`[ PRs waiting on me ]`,palette:`Review queue`,title:`PRs waiting on me`,empty:`No open PR asks for your review in your projects.`,other:`{count} more in projects Rove doesn't know.`,draft:`draft`,fork:`fork`,checksPassing:`checks passing`,checksFailing:`checks failing`,checksPending:`checks running`,start:`[ review ]`,preparing:`Fetching #{number}…`,failed:`Could not start the review of #{number}: {error}`,gh:{missing:"The `gh` CLI is not installed or not on PATH.",unauthenticated:"`gh` is not signed in: run `gh auth login` on this Mac.",failed:`GitHub could not be read just now. Press r to retry.`},prompt:`Review pull request #{number} in {repo}: {title}
|
|
9
|
+
`).replace(Md,``)}function Pd(e,t){return t=Nd(t),Nd(e)===t}function Fd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Vt(e,``+r);break;case`className`:Tt(e,`class`,r);break;case`tabIndex`:Tt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Tt(e,n,r);break;case`style`:Wt(e,r,o);break;case`data`:if(t!==`object`){Tt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&Fd(e,t,`name`,a.name,a,null),Fd(e,t,`formEncType`,a.formEncType,a,null),Fd(e,t,`formMethod`,a.formMethod,a,null),Fd(e,t,`formTarget`,a.formTarget,a,null)):(Fd(e,t,`encType`,a.encType,a,null),Fd(e,t,`method`,a.method,a,null),Fd(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`onScroll`:r!=null&&xd(`scroll`,e);break;case`onScrollEnd`:r!=null&&xd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=Jt(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:xd(`beforetoggle`,e),xd(`toggle`,e),wt(e,`popover`,r);break;case`xlinkActuate`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:wt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=Kt.get(n)||n,wt(e,n,r))}}function Id(e,t,n,r,a,o){switch(n){case`style`:Wt(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Vt(e,``+r);break;case`onScroll`:r!=null&&xd(`scroll`,e);break;case`onScrollEnd`:r!=null&&xd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!_t.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[rt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):wt(e,n,r)}}}function Ld(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:xd(`error`,e),xd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Fd(e,t,o,s,n,null)}}a&&Fd(e,t,`srcSet`,n.srcSet,n,null),r&&Fd(e,t,`src`,n.src,n,null);return;case`input`:xd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Fd(e,t,r,d,n,null)}}It(e,o,c,l,u,s,a,!1);return;case`select`:for(a in xd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Fd(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Rt(e,!!r,n,!0):Rt(e,!!r,t,!1);return;case`textarea`:for(s in xd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Fd(e,t,s,c,n,null)}Bt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Fd(e,t,l,r,n,null)}return;case`dialog`:xd(`beforetoggle`,e),xd(`toggle`,e),xd(`cancel`,e),xd(`close`,e);break;case`iframe`:case`object`:xd(`load`,e);break;case`video`:case`audio`:for(r=0;r<vd.length;r++)xd(vd[r],e);break;case`image`:xd(`error`,e),xd(`load`,e);break;case`details`:xd(`toggle`,e);break;case`embed`:case`source`:case`link`:xd(`error`,e),xd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Fd(e,t,u,r,n,null)}return;default:if(Gt(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Id(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Fd(e,t,c,r,n,null))}function Rd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Fd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Fd(e,t,p,m,r,f)}}Ft(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Fd(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Fd(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Rt(e,!!n,n?[]:``,!1):Rt(e,!!n,t,!0)):Rt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Fd(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Fd(e,t,s,a,r,o)}zt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Fd(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Fd(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Fd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Fd(e,t,u,p,r,m)}return;default:if(Gt(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Id(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Id(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Fd(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Fd(e,t,f,p,r,m)}function zd(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Bd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&zd(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&zd(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Vd=null,Hd=null;function Ud(e){return e.nodeType===9?e:e.ownerDocument}function Wd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Gd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Kd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var qd=null;function Jd(){var e=window.event;return e&&e.type===`popstate`?e!==qd&&(qd=e,!0):(qd=null,!1)}var Yd=typeof setTimeout==`function`?setTimeout:void 0,Xd=typeof clearTimeout==`function`?clearTimeout:void 0,Zd=typeof Promise==`function`?Promise:void 0,Qd=typeof queueMicrotask==`function`?queueMicrotask:Zd===void 0?Yd:function(e){return Zd.resolve(null).then(e).catch($d)};function $d(e){setTimeout(function(){throw e})}function ef(e){return e===`head`}function tf(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Pp(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)gf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,gf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[lt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&gf(e.ownerDocument.body)}n=i}while(n);Pp(t)}function nf(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function rf(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:rf(n),ut(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function af(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[lt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=df(e.nextSibling),e===null)break}return null}function of(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=df(e.nextSibling),e===null))return null;return e}function sf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=df(e.nextSibling),e===null))return null;return e}function cf(e){return e.data===`$?`||e.data===`$~`}function lf(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function uf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function df(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var ff=null;function pf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return df(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function mf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function hf(e,t,n){switch(t=Ud(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function gf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ut(e)}var _f=new Map,vf=new Set;function yf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var bf=I.d;I.d={f:xf,r:Sf,D:wf,C:Tf,L:Ef,m:Df,X:kf,S:Of,M:Af};function xf(){var e=bf.f(),t=xu();return e||t}function Sf(e){var t=ft(e);t!==null&&t.tag===5&&t.type===`form`?Ss(t):bf.r(e)}var Cf=typeof document>`u`?null:document;function Z(e,t,n){var r=Cf;if(r&&typeof t==`string`&&t){var i=Pt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),vf.has(i)||(vf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Ld(t,`link`,e),ht(t),r.head.appendChild(t)))}}function wf(e){bf.D(e),Z(`dns-prefetch`,e,null)}function Tf(e,t){bf.C(e,t),Z(`preconnect`,e,t)}function Ef(e,t,n){bf.L(e,t,n);var r=Cf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Pt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Pt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Pt(n.imageSizes)+`"]`)):i+=`[href="`+Pt(e)+`"]`;var a=i;switch(t){case`style`:a=Mf(e);break;case`script`:a=If(e)}_f.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),_f.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Nf(a))||t===`script`&&r.querySelector(Lf(a))||(t=r.createElement(`link`),Ld(t,`link`,e),ht(t),r.head.appendChild(t)))}}function Df(e,t){bf.m(e,t);var n=Cf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Pt(r)+`"][href="`+Pt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=If(e)}if(!_f.has(a)&&(e=h({rel:`modulepreload`,href:e},t),_f.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Lf(a)))return}r=n.createElement(`link`),Ld(r,`link`,e),ht(r),n.head.appendChild(r)}}}function Of(e,t,n){bf.S(e,t,n);var r=Cf;if(r&&e){var i=mt(r).hoistableStyles,a=Mf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Nf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=_f.get(a))&&Bf(e,n);var c=o=r.createElement(`link`);ht(c),Ld(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,zf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function kf(e,t){bf.X(e,t);var n=Cf;if(n&&e){var r=mt(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=h({src:e,async:!0},t),(t=_f.get(i))&&Vf(e,t),a=n.createElement(`script`),ht(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Af(e,t){bf.M(e,t);var n=Cf;if(n&&e){var r=mt(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=_f.get(i))&&Vf(e,t),a=n.createElement(`script`),ht(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function jf(e,t,n,r){var a=(a=se.current)?yf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Mf(n.href),n=mt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Mf(n.href);var o=mt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Nf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),_f.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},_f.set(e,n),o||Ff(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=If(n),n=mt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Mf(e){return`href="`+Pt(e)+`"`}function Nf(e){return`link[rel="stylesheet"][`+e+`]`}function Pf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Ff(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Ld(t,`link`,n),ht(t),e.head.appendChild(t))}function If(e){return`[src="`+Pt(e)+`"]`}function Lf(e){return`script[async]`+e}function Rf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Pt(n.href)+`"]`);if(r)return t.instance=r,ht(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),ht(r),Ld(r,`style`,a),zf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Mf(n.href);var o=e.querySelector(Nf(a));if(o)return t.state.loading|=4,t.instance=o,ht(o),o;r=Pf(n),(a=_f.get(a))&&Bf(r,a),o=(e.ownerDocument||e).createElement(`link`),ht(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Ld(o,`link`,r),t.state.loading|=4,zf(o,n.precedence,e),t.instance=o;case`script`:return o=If(n.src),(a=e.querySelector(Lf(o)))?(t.instance=a,ht(a),a):(r=n,(a=_f.get(o))&&(r=h({},n),Vf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),ht(a),Ld(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,zf(r,n.precedence,e));return t.instance}function zf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Bf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Vf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Hf=null;function Uf(e,t,n){if(Hf===null){var r=new Map,i=Hf=new Map;i.set(n,r)}else i=Hf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[lt]||a[nt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Wf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Gf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Kf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function qf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Mf(r.href),a=t.querySelector(Nf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Xf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,ht(a);return}a=t.ownerDocument||t,r=Pf(r),(i=_f.get(i))&&Bf(r,i),a=a.createElement(`link`),ht(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Ld(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Xf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Jf=0;function Yf(e,t){return e.stylesheets&&e.count===0&&Qf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Jf===0&&(Jf=62500*Bd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Jf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Xf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Qf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Zf=null;function Qf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Zf=new Map,t.forEach($f,e),Zf=null,Xf.call(e))}function $f(e,t){if(!(t.state.loading&4)){var n=Zf.get(e);if(n)var r=n.get(null);else{n=new Map,Zf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Xf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var ep={$$typeof:C,Provider:null,Consumer:null,_currentValue:te,_currentValue2:te,_threadCount:0};function tp(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Ge(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ge(0),this.hiddenUpdates=Ge(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function np(e,t,n,r,i,a,o,s,c,l,u,d){return e=new tp(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=$r(3,null,null,t),e.current=a,a.stateNode=e,t=ea(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Na(a),e}function rp(e){return e?(e=Zr,e):Zr}function ip(e,t,n,r,i,a){i=rp(i),r.context===null?r.context=i:r.pendingContext=i,r=Fa(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ia(e,r,t),n!==null&&(gu(n,e,t),La(n,e,t))}function ap(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function op(e,t){ap(e,t),(e=e.alternate)&&ap(e,t)}function sp(e){if(e.tag===13||e.tag===31){var t=Jr(e,67108864);t!==null&&gu(t,e,67108864),op(e,67108864)}}function cp(e){if(e.tag===13||e.tag===31){var t=mu();t=Ze(t);var n=Jr(e,t);n!==null&&gu(n,e,t),op(e,t)}}var lp=!0;function up(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=2,fp(e,t,n,r)}finally{I.p=a,F.T=i}}function dp(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=8,fp(e,t,n,r)}finally{I.p=a,F.T=i}}function fp(e,t,n,r){if(lp){var i=pp(r);if(i===null)Ed(e,t,r,mp,n),wp(e,r);else if(Ep(i,e,t,n,r))r.stopPropagation();else if(wp(e,r),t&4&&-1<Cp.indexOf(e)){for(;i!==null;){var a=ft(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Be(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Pe(o);s.entanglements[1]|=c,o&=~c}id(a),!(Il&6)&&(nu=Te()+500,ad(0,!1))}}break;case 31:case 13:s=Jr(a,2),s!==null&&gu(s,a,2),xu(),op(a,2)}if(a=pp(r),a===null&&Ed(e,t,r,mp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Ed(e,t,r,null,n)}}function pp(e){return e=Zt(e),hp(e)}var mp=null;function hp(e){if(mp=null,e=dt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return mp=e,null}function gp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Ee()){case De:return 2;case Oe:return 8;case ke:case z:return 32;case Ae:return 268435456;default:return 32}default:return 32}}var _p=!1,vp=null,yp=null,Q=null,bp=new Map,xp=new Map,Sp=[],Cp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function wp(e,t){switch(e){case`focusin`:case`focusout`:vp=null;break;case`dragenter`:case`dragleave`:yp=null;break;case`mouseover`:case`mouseout`:Q=null;break;case`pointerover`:case`pointerout`:bp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:xp.delete(t.pointerId)}}function Tp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=ft(t),t!==null&&sp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Ep(e,t,n,r,i){switch(t){case`focusin`:return vp=Tp(vp,e,t,n,r,i),!0;case`dragenter`:return yp=Tp(yp,e,t,n,r,i),!0;case`mouseover`:return Q=Tp(Q,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return bp.set(a,Tp(bp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,xp.set(a,Tp(xp.get(a)||null,e,t,n,r,i)),!0}return!1}function Dp(e){var t=dt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,et(e.priority,function(){cp(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,et(e.priority,function(){cp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Op(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=pp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Xt=r,n.target.dispatchEvent(r),Xt=null}else return t=ft(n),t!==null&&sp(t),e.blockedOn=n,!1;t.shift()}return!0}function kp(e,t,n){Op(e)&&n.delete(t)}function Ap(){_p=!1,vp!==null&&Op(vp)&&(vp=null),yp!==null&&Op(yp)&&(yp=null),Q!==null&&Op(Q)&&(Q=null),bp.forEach(kp),xp.forEach(kp)}function jp(e,n){e.blockedOn===n&&(e.blockedOn=null,_p||(_p=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Ap)))}var Mp=null;function Np(e){Mp!==e&&(Mp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Mp===e&&(Mp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(hp(r||n)===null)continue;break}var a=ft(n);a!==null&&(e.splice(t,3),t-=3,bs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Pp(e){function t(t){return jp(t,e)}vp!==null&&jp(vp,e),yp!==null&&jp(yp,e),Q!==null&&jp(Q,e),bp.forEach(t),xp.forEach(t);for(var n=0;n<Sp.length;n++){var r=Sp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Sp.length&&(n=Sp[0],n.blockedOn===null);)Dp(n),n.blockedOn===null&&Sp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[rt]||null;if(typeof a==`function`)o||Np(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[rt]||null)s=o.formAction;else if(hp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Np(n)}}}function Fp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Ip(e){this._internalRoot=e}Lp.prototype.render=Ip.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;ip(n,mu(),e,t,null,null)},Lp.prototype.unmount=Ip.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;ip(e.current,2,null,e,null,null),xu(),t[it]=null}};function Lp(e){this._internalRoot=e}Lp.prototype.unstable_scheduleHydration=function(e){if(e){var t=$e();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Sp.length&&t!==0&&t<Sp[n].priority;n++);Sp.splice(n,0,e),n===0&&Dp(e)}};var Rp=n.version;if(Rp!==`19.2.8`)throw Error(i(527,Rp,`19.2.8`));I.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=f(t),e=e===null?null:m(e),e=e===null?null:e.stateNode,e};var zp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:F,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Bp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Bp.isDisabled&&Bp.supportsFiber)try{Me=Bp.inject(zp),Ne=Bp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Us,s=Ws,c=Gs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=np(e,1,!1,null,null,n,r,null,o,s,c,Fp),e[it]=t.current,wd(e),new Ip(t)}})),h=t(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()}))(),g=l();function _(e){let t=e,n=new Set;return{get:()=>t,set(e){if(!Object.is(e,t)){t=e;for(let e of n)e()}},subscribe(e){return n.add(e),()=>n.delete(e)}}}function v(e){return(0,g.useSyncExternalStore)(e.subscribe,e.get)}var y=n({en:()=>b,zh:()=>x}),b={artifact:{preview:`preview`,source:`source`,open:`[ open ]`,loading:`Loading…`,tooLarge:`Too large to preview ({size}); the source view reads it as text.`,notPreviewable:`This file cannot be previewed.`,gone:`The file is gone.`,failed:`Could not read the file: {error}`}},x={artifact:{preview:`预览`,source:`源码`,open:`[ 打开 ]`,loading:`加载中…`,tooLarge:`文件太大,无法预览({size});可在源码视图中按文本查看。`,notPreviewable:`这个文件无法预览。`,gone:`文件已不存在。`,failed:`无法读取文件:{error}`}},S=n({en:()=>C,zh:()=>w}),C={compare:{title:`Compare attempts`,menu:`Compare attempts`,severalEngines:`[ compare engines ]`,oneEngine:`[ one engine ]`,needsPrompt:`Compare runs the prompt, so it needs one`,empty:`No attempts left in this round.`,noReply:`no reply yet`,noChanges:`no changes`,status:{working:`working`,waiting:`waiting for you`,error:`needs a look`,done:`done`,idle:`idle`},files:`files: {count}`,more:`+{count} more`,kept:`kept`,strip:`[ compare ]`,stackLabel:`Stacked tasks`,landBottom:`[ land bottom ]`,terminal:`[ terminal ]`,diff:`[ diff ]`,keep:`[ keep this one ]`,unkeep:`[ unkeep ]`,keptToast:`kept {title}`,unkeptToast:`no longer kept: {title}`,keepFailed:`could not mark it kept: {error}`,archiveTitle:`Archive the other attempts?`,archiveBody:`Hides the other {count} from the rail. Their worktrees and branches stay, and nothing running is stopped.`,archiveConfirm:`Archive`,archiveBusyTitle:`Some attempts are still working`,archiveBusyBody:`Archive them anyway? Their worktrees and branches stay, and nothing is stopped.`,archiveBusyConfirm:`Archive anyway`,archived:`archived {count} attempts`,archiveFailed:`could not archive: {error}`}},w={compare:{title:`对比方案`,menu:`对比方案`,severalEngines:`[ 多引擎对比 ]`,oneEngine:`[ 单引擎 ]`,needsPrompt:`对比要运行提示词,请先写一个`,empty:`这一轮没有剩下的方案。`,noReply:`还没有回复`,noChanges:`没有改动`,status:{working:`运行中`,waiting:`等你处理`,error:`需要看一眼`,done:`已完成`,idle:`空闲`},files:`文件:{count}`,more:`另有 {count} 个`,kept:`已保留`,strip:`[ 对比 ]`,stackLabel:`堆叠任务`,landBottom:`[ 合并底部 ]`,terminal:`[ 终端 ]`,diff:`[ diff ]`,keep:`[ 保留这个 ]`,unkeep:`[ 取消保留 ]`,keptToast:`已保留 {title}`,unkeptToast:`已取消保留:{title}`,keepFailed:`无法标记保留:{error}`,archiveTitle:`归档其他方案?`,archiveBody:`把其余 {count} 个从侧栏收起。它们的 worktree 和分支都保留,运行中的也不会被停掉。`,archiveConfirm:`归档`,archiveBusyTitle:`有方案还在运行`,archiveBusyBody:`仍要归档吗?它们的 worktree 和分支都保留,也不会停掉任何东西。`,archiveBusyConfirm:`仍然归档`,archived:`已归档 {count} 个方案`,archiveFailed:`无法归档:{error}`}},T=n({en:()=>E,zh:()=>D}),E={context:{title:`Context`,used:`{percent} used`,usedTokens:`{tokens} used`,loading:`Reading context…`,none:`No context reading for this conversation: its engine records none, or it has not answered yet.`,failed:`Couldn't read context: {error}`,approximate:`Approximate.`,part:{system:`System prompt & tools`,messages:`Messages`,used:`Used`,free:`Free space`}}},D={context:{title:`上下文`,used:`已用 {percent}`,usedTokens:`已用 {tokens}`,loading:`正在读取上下文…`,none:`这个会话没有上下文读数:它的引擎不记录,或者还没回复过。`,failed:`读取上下文失败:{error}`,approximate:`近似值。`,part:{system:`系统提示与工具`,messages:`消息`,used:`已用`,free:`剩余空间`}}},O=n({en:()=>k,zh:()=>A}),k={dialog:{cancel:`cancel`,save:`save`,close:`close`},whatsNew:{continue:`Continue`,openRelease:`Open release notes`,keys:`q / esc`},menu:{closeTab:`Close tab`,newChat:`New conversation`,newChatPick:`New conversation with…`,retryEdit:`Retry with edited prompt…`,retryNoPrompt:`This task has no stored prompt`,startNow:`Start now`,cancelStart:`Cancel scheduled start`,continueEngine:`Continue in another engine…`,newShell:`New shell`,newChatNoFolder:`New conversation (no folder)`,renameTab:`Rename tab`,splitRight:`Split right`,splitDown:`Split down`,renamePane:`Rename pane`,closePane:`Close pane`,newTask:`New task`,rename:`Rename`,pin:`Pin`,unpin:`Unpin`,setStatus:`Set status`,copy:`Copy`,copyWhat:{id:`Task ID`,branch:`Branch name`,path:`Worktree path`},renameBranch:`Rename branch`,changeEngine:`Change engine`,land:`Land into base branch`,delete:`Delete`,removeSession:`Remove session`,copied:`copied {text}`,copyFailed:`the browser refused the clipboard`,nothingToCopy:`this task has no {what} yet`,what:{id:`id`,branch:`branch`,path:`worktree path`}},confirm:{closeTabTitle:`Close "{tab}"?`,closeTabBody:`Stops the session in this tab. The task and its worktree stay.`,closePaneTitle:`Close "{pane}"?`,closePaneBody:`The engine session in this pane ends. The tab's other panes stay.`,delete:`delete`,forceDelete:`force delete`},newTask:{title:`new task`,repo:`project`,engine:`engine`,notReady:`not installed or not signed in`,taskTitle:`title`,titlePlaceholder:`optional; derived from the prompt otherwise`,prompt:`first message`,promptPlaceholder:`optional; ⌘↵ creates`,create:`create`,needRepo:`pick a project first`},newChat:{title:`new conversation`,prompt:`first message`,start:`start`,promptPlaceholder:`optional; empty opens the engine without a message`},newSession:{title:`New session`,tagline:`Pick a project and a model, then describe the task. The session starts with your first message.`,placeholder:`Describe a task or ask a question`,start:`Start session`,createOnly:`Create without starting`,later:`Later…`,laterConfirm:`Start later`,laterPlaceholder:`22:30 · tomorrow 9:00 · +30m`,laterBad:`That is not a time ahead. Try 22:30, tomorrow 9:00 or +2h.`,laterSet:`Starts at {time}`,retryArchiveTitle:`Archive "{title}"?`,retryArchiveBody:`The retry has started. Archive the original? Nothing is stopped or deleted.`,needRepo:`Pick a project first`,needPrompt:`Describe the task first`,repo:`Project`,repoSearch:`Search projects or type a path`,repoEmpty:`No matching project`,cloneRow:`Clone {source}`,cloning:`Cloning {source}…`,githubGroup:`Your GitHub repositories`,branch:`Branch`,branchSearch:`Search branches`,branches:`Branches`,branchName:`Branch name, shared by every repo`,branchNamePlaceholder:`derived from the prompt`,primary:`primary`,repoCount:`{count} repos: the first is the primary`,branchEmpty:`No matching branch`,model:`Model`,modelHeading:`Model for this session`,engine:`Engine`,effort:`Effort`,modelDefault:`Default`,effortDefault:`Default`,moreWays:`Clone or adopt a worktree…`,attach:`Attach`,attachHint:`Add images or PDFs to the first message; you can also paste or drop them on the prompt`,removeAttachment:`Remove {name}`,worktree:`Worktree`,worktreeOn:`Runs in its own worktree and branch. Click to run in the project's checkout instead`,worktreeOff:`Runs in the project's checkout as it is, on its current branch. Click for a worktree`,worktreeMulti:`A task across several repos always gets a worktree in each`,machine:`Machine`,thisMachine:`This machine`,cloneRowOn:`Clone {source} on {machine}`,cloningOn:`Cloning {source} on {machine}…`,startingOn:`Starting the task on {machine}…`,repoSearchRemote:`Search or type owner/repo`,cloneTag:`clone`,remoteOffline:`{machine} is offline`,remoteOutdated:`{machine} runs a Rove too old to list its projects`,remoteFailed:`Could not read {machine}'s projects: {message}`,remoteNone:`{machine} has no projects yet. Type owner/repo to clone one there`,remoteLoading:`Reading {machine}'s projects…`,branchTypeRef:`Type a branch or ref to start from`,branchRemoteDefault:`Its current branch`},search:{tasks:`Tasks`,commands:`Commands`,inConversations:`In conversations`,searching:`searching…`,none:`Nothing said matches “{query}”.`,you:`you`,agent:`agent`,truncated:`Stopped early to stay fast; add a word to narrow it.`,skipped:`{count} task(s) not searched: another machine's, or an engine Rove cannot read.`},taskops:{publishTitle:`publish to the remote`,publishBody:`{branch} lives on {host}. Push it from there and open a pull request?`,publishButton:`push & open PR`,publishedPr:`pushed {branch} — PR {url}`,publishedNoPr:`pushed {branch}, but no PR: {reason}`,set:`set`,retire:`delete`,close:`close`,moveHint:`j/k move · enter or esc done`,fixSent:`asked the agent to fix the failing checks`,forkNeedsMessage:`a message is required to fork a task`,forkLeftBehind:`Started from the last commit — uncommitted work stays in the original task ({reason})`,forkBranch:`fork from branch`,openedExternal:`opened in the Mac's app`}},A={dialog:{cancel:`取消`,save:`保存`,close:`关闭`},whatsNew:{continue:`继续`,openRelease:`打开发布说明`,keys:`q / esc`},menu:{closeTab:`关闭该标签页`,newChat:`新建会话`,newChatPick:`选择引擎新建会话…`,retryEdit:`改提示词后重试…`,retryNoPrompt:`这个任务没有保存的提示词`,startNow:`立即启动`,cancelStart:`取消定时启动`,continueEngine:`换个引擎继续…`,newShell:`新建终端`,newChatNoFolder:`新建会话(无文件夹)`,renameTab:`重命名标签页`,splitRight:`向右分屏`,splitDown:`向下分屏`,renamePane:`重命名分屏`,closePane:`关闭分屏`,newTask:`新建任务`,rename:`重命名`,pin:`置顶`,unpin:`取消置顶`,setStatus:`设置状态`,copy:`复制`,copyWhat:{id:`任务 ID`,branch:`分支名`,path:`worktree 路径`},renameBranch:`重命名分支`,changeEngine:`切换引擎`,land:`合入基础分支`,delete:`删除`,removeSession:`移除会话`,copied:`已复制 {text}`,copyFailed:`浏览器拒绝了剪贴板访问`,nothingToCopy:`这个任务还没有{what}`,what:{id:`ID`,branch:`分支`,path:`worktree 路径`}},confirm:{closeTabTitle:`关闭「{tab}」?`,closeTabBody:`停止这个标签里的会话。任务和它的 worktree 会保留。`,closePaneTitle:`关闭「{pane}」?`,closePaneBody:`这个分屏里的引擎会话会结束。标签里的其他分屏会保留。`,delete:`删除`,forceDelete:`强制删除`},newTask:{title:`新建任务`,repo:`项目`,engine:`引擎`,notReady:`未安装或未登录`,taskTitle:`标题`,titlePlaceholder:`可选;不填就从第一条消息生成`,prompt:`第一条消息`,promptPlaceholder:`可选;⌘↵ 创建`,create:`创建`,needRepo:`先选一个项目`},newChat:{title:`新建会话`,prompt:`第一条消息`,start:`开始`,promptPlaceholder:`可选;留空则直接打开引擎,不发消息`},newSession:{title:`新会话`,tagline:`选好项目和模型,再描述任务。会话从你的第一条消息开始。`,placeholder:`描述一个任务,或提个问题`,start:`开始会话`,createOnly:`仅创建,不启动`,later:`稍后…`,laterConfirm:`稍后启动`,laterPlaceholder:`22:30 · 明天 9:00 · +30m`,laterBad:`这不是一个未来的时间。试试 22:30、明天 9:00 或 +2h。`,laterSet:`{time} 启动`,retryArchiveTitle:`归档「{title}」?`,retryArchiveBody:`重试已经开始。要把原来的会话归档吗?不会停止或删除任何东西。`,needRepo:`先选一个项目`,needPrompt:`先描述一下任务`,repo:`项目`,repoSearch:`搜索项目,或输入路径`,repoEmpty:`没有匹配的项目`,cloneRow:`克隆 {source}`,cloning:`正在克隆 {source}…`,githubGroup:`你的 GitHub 仓库`,branch:`分支`,branchSearch:`搜索分支`,branches:`分支`,branchName:`分支名,所有仓库共用`,branchNamePlaceholder:`不填就从提示词生成`,primary:`主仓库`,repoCount:`{count} 个仓库,第一个是主仓库`,branchEmpty:`没有匹配的分支`,model:`模型`,modelHeading:`本次会话的模型`,engine:`引擎`,effort:`强度`,modelDefault:`默认`,effortDefault:`默认`,moreWays:`克隆,或接管 worktree…`,attach:`附件`,attachHint:`给第一条消息加图片或 PDF;也可以直接粘贴或拖到输入框里`,removeAttachment:`移除 {name}`,worktree:`Worktree`,worktreeOn:`在独立的 worktree 和分支里运行。点击改为直接在项目目录里运行`,worktreeOff:`直接在项目目录里运行,用它当前的分支。点击改为独立 worktree`,worktreeMulti:`跨多个仓库的任务每个仓库都会有 worktree`,machine:`机器`,thisMachine:`本机`,cloneRowOn:`在 {machine} 上克隆 {source}`,cloningOn:`正在 {machine} 上克隆 {source}…`,startingOn:`正在 {machine} 上启动任务…`,repoSearchRemote:`搜索,或输入 owner/repo`,cloneTag:`克隆`,remoteOffline:`{machine} 已离线`,remoteOutdated:`{machine} 上的 Rove 太旧,列不出它的项目`,remoteFailed:`读不到 {machine} 上的项目:{message}`,remoteNone:`{machine} 上还没有项目。输入 owner/repo 就能在那里克隆`,remoteLoading:`正在读取 {machine} 上的项目…`,branchTypeRef:`输入要基于的分支或 ref`,branchRemoteDefault:`它当前的分支`},search:{tasks:`任务`,commands:`命令`,inConversations:`在对话里`,searching:`搜索中…`,none:`没有说过「{query}」。`,you:`你`,agent:`agent`,truncated:`为了快提前停了;多加一个词缩小范围。`,skipped:`有 {count} 个任务没搜:在别的机器上,或 Rove 读不了它的引擎记录。`},taskops:{publishTitle:`推送到远端`,publishBody:`{branch} 在 {host} 上。要从那台机器推送它并开一个 PR 吗?`,publishButton:`推送并开 PR`,publishedPr:`已推送 {branch} — PR {url}`,publishedNoPr:`已推送 {branch},但没开成 PR:{reason}`,set:`设置`,retire:`删除`,close:`关闭`,moveHint:`j/k 移动 · enter 或 esc 完成`,fixSent:`已请 agent 修复失败的检查`,forkNeedsMessage:`fork 任务需要填写消息`,forkLeftBehind:`已从最近一次提交开始——未提交的改动留在原任务里({reason})`,forkBranch:`基于分支`,openedExternal:`已在 Mac 上用系统应用打开`}},j=n({en:()=>ee,zh:()=>M}),ee={machines:{title:`Machines`,open:`[ machines ]`,none:"No other machines registered. Add one with `rove machine add`.",newHere:`[ new task here ]`,tasks:`[ tasks ]`,repos:`[ repos ]`,hide:`[ hide ]`,noTasks:`no tasks`,noRepos:`no repos`,loading:`…`,reposFailed:`couldn't read its repos: {message}`,reason:{refused:`ssh was refused (nothing is listening or a firewall is in the way)`,timeout:`ssh timed out`,"host-key-changed":`its ssh host key changed; check it, then update known_hosts`,"host-key-unverified":`its ssh host key is not known yet; connect once by hand to trust it`,"auth-denied":`ssh refused the login (no key or password accepted)`,unresolved:`its hostname does not resolve`,"ssh-failed":`ssh failed`,"no-rove":`rove is not installed there`,"no-daemon":`its rove daemon is not running`,"bad-status":`it answered with something rove could not read`,handshake:`the link came up but the handshake failed`,"no-forwarding":`ssh forwarding is disabled there`,lost:`the link dropped; reconnecting`}}},M={machines:{title:`机器`,open:`[ 机器 ]`,none:"没有注册其他机器。用 `rove machine add` 添加。",newHere:`[ 在这台新建任务 ]`,tasks:`[ 任务 ]`,repos:`[ 仓库 ]`,hide:`[ 收起 ]`,noTasks:`没有任务`,noRepos:`没有仓库`,loading:`…`,reposFailed:`读不到它的仓库:{message}`,reason:{refused:`ssh 被拒绝(没有进程在监听,或被防火墙挡住)`,timeout:`ssh 超时`,"host-key-changed":`它的 ssh 主机密钥变了;确认无误后更新 known_hosts`,"host-key-unverified":`还不认识它的 ssh 主机密钥;先手动连一次以信任它`,"auth-denied":`ssh 拒绝了登录(没有被接受的密钥或密码)`,unresolved:`它的主机名解析不了`,"ssh-failed":`ssh 失败`,"no-rove":`那里没有安装 rove`,"no-daemon":`它的 rove 守护进程没在运行`,"bad-status":`它返回了 rove 读不懂的内容`,handshake:`链路通了但握手失败`,"no-forwarding":`那里禁用了 ssh 端口转发`,lost:`链路断了;正在重连`}}},N=n({en:()=>P,zh:()=>F}),P={files:{autoFix:{on:`[ auto-fix CI ]`,off:`[ turn off ]`,count:`auto-fix {n}/{max}`,stopped:`auto-fix stopped {n}/{max}`,hint:`When checks fail on a new push and the agent is idle, send it the failing logs. At most once per push, 3 times in all, then it stops and tells your Inbox.`},stripCreate:`[ create PR ]`,stripFixCi:`[ fix CI ]`,stripConflicts:`[ resolve conflicts ]`,stripComments:`[ address comments ]`,stripArchive:`[ archive ]`,stripFilled:`prompt is in the input; edit it and press Enter`,stripNoEngine:`No engine session open in this task — nowhere to put the prompt.`,stripUnavailable:`couldn't read the PR's checks: {detail}`,stripNothing:`nothing to ask the agent about right now`,run:{run:`[ run ]`,stop:`[ stop ]`,open:`[ open :{port} ]`},checks:{title:`checks`,summary:`{pass}/{total} passed`,failed:`{count} failed`,running:`{count} running`,none:`no checks`,refresh:`[ refresh ]`,loading:`…`,unavailable:`couldn't read the PR: {detail}`,log:`[ log ]`,hideLog:`[ hide ]`,noLog:`no log excerpt for this job`,logUnavailable:`couldn't read the log: {detail}`,more:`{count} more not shown`},merge:{draft:`draft`,conflicts:`conflicts`,behind:`behind base`,unstable:`checks not passing`,blocked:`blocked`,clean:`mergeable`,approved:`approved`,changes:`changes requested`,reviewRequired:`review required`},stripCommit:`[ commit ]`,prRequested:`asked the agent to create the PR`,remoteNoExternal:`this file is on {host}; open it there`,mentionNoEngine:`No engine session open in this task — nothing to mention into.`,landTodos:`{count} todo(s) on this task are still unchecked.`,emptyAll:`(empty worktree)`},preview:{loading:`loading…`,whole:`whole worktree`,unknown:`nothing to show`,binary:`binary file — not shown as text`,empty:`no changes`,noHunks:`no text changes ({kind})`,noteTitle:`note on {location}`,noteSubmit:`add note`,askInChat:`ask in chat`,askInChatHint:`Put the selected lines in the engine's prompt`,sent:`sent {count} notes to the engine`,notSent:`notes not sent: {reason}`},review:{comment:`comment`,range:`range`,count:`{count} comments`,countOne:`1 comment`,send:`send {count}`,sending:`sending…`,edit:`edit`,drop:`drop`,moved:`moved`,movedHint:`The code under this comment changed since it was written.`,show:`Show in the diff`,editTitle:`edit note on {location}`,editSubmit:`save note`,fold:`Fold {path}`,unfold:`Unfold {path}`,foldAll:`fold all`,unfoldAll:`unfold all`,ignoreWs:`[ ws ]`,ignoreWsHint:`Hide whitespace-only changes (git diff -w)`,viewed:`[ viewed ]`,markViewed:`Mark {path} viewed`,viewedOn:`[x] viewed`,unmarkViewed:`Unmark {path} viewed`,totals:`{files} files · +{added} −{removed}`,viewedCount:`{done}/{files} viewed`,nextFile:`[ next file ]`,nextComment:`[ next comment ]`,scopeMenu:`{base} → {scope} ▾`,compareAgainst:`Compare against {base}…`,baseDefault:`task base`,baseBranch:`branch`,baseRemote:`remote`,baseTag:`tag`,basePlaceholder:`branch, tag or commit`,shape:{effort:`effort {n}/5`,lockfile:`{count} lockfile`,lockfiles:`{count} lockfiles`,generated:`{count} generated`,tests:`{count} tests`,config:`{count} config`,docs:`{count} docs`,source:`{count} source`},scopeWorking:`Uncommitted changes`,scopeBranch:`Committed changes`,scopeTask:`All changes`,notSupported:`This bridge is older than the page and can't do that; restart it.`},panel:{tabs:`Side panel views`,files:`Files`,chat:`Chat`,diff:`Diff`,browser:`Browser`,quota:`Context`,resize:`Drag to resize the panel, double-click to reset`,empty:`Nothing open. Use + to open Files, a diff or a Browser.`,new:`New tab`,newChat:`Chat`,newFiles:`New Files`,newDiff:`Diff of whole worktree`,newBrowser:`New Browser`,newQuota:`Context window`,close:`Close`,hide:`Close the side panel`,expand:`Expand the side panel`,restore:`Restore the side panel size`,closeOthers:`Close others`,splitDown:`Split down`,moveBottom:`Move to bottom`,moveTop:`Move to top`,resizeSplit:`Drag to resize, double-click to split evenly`},browser:{address:`Address`,placeholder:`https://… or localhost:3000`,back:`Back`,forward:`Forward`,reload:`Reload`,openTab:`Open in a new tab`,invalid:`That is not a web address; only http and https pages open here.`,empty:`Enter a web address, or a local dev server.`,noFrame:`Only https pages open here; this address uses plain http. Use ↗ to open it in a new tab.`,self:`That address is Rove itself, which can't be framed. Use ↗ to open it in a new tab.`,refuses:`{host} doesn't allow being shown inside another page.`,unreachable:`{host} can't be reached from here.`,remote:`{host} runs on the Rove machine, not on this one.`}},F={files:{autoFix:{on:`[ 自动修复 CI ]`,off:`[ 关闭 ]`,count:`自动修复 {n}/{max}`,stopped:`自动修复已停止 {n}/{max}`,hint:`检查在新提交上失败且代理空闲时,自动把失败日志发给它。每次提交最多一次、总共 3 次,之后停止并通知收件箱。`},stripCreate:`[ 创建 PR ]`,stripFixCi:`[ 修复 CI ]`,stripConflicts:`[ 解决冲突 ]`,stripComments:`[ 处理评论 ]`,stripArchive:`[ 归档 ]`,stripFilled:`提示词已放进输入框,修改后按 Enter 发送`,stripNoEngine:`这个任务没有打开的引擎会话,提示词无处可放。`,stripUnavailable:`读不到 PR 的检查结果:{detail}`,stripNothing:`现在没有需要让代理处理的事`,run:{run:`[ 运行 ]`,stop:`[ 停止 ]`,open:`[ 打开 :{port} ]`},checks:{title:`检查`,summary:`{pass}/{total} 通过`,failed:`{count} 个失败`,running:`{count} 个进行中`,none:`没有检查`,refresh:`[ 刷新 ]`,loading:`…`,unavailable:`读不到这个 PR:{detail}`,log:`[ 日志 ]`,hideLog:`[ 收起 ]`,noLog:`这个作业没有日志摘录`,logUnavailable:`读不到日志:{detail}`,more:`还有 {count} 个未显示`},merge:{draft:`草稿`,conflicts:`有冲突`,behind:`落后于基线`,unstable:`检查未通过`,blocked:`被阻塞`,clean:`可合并`,approved:`已批准`,changes:`要求修改`,reviewRequired:`需要评审`},stripCommit:`[ 提交 ]`,prRequested:`已让代理去创建 PR`,remoteNoExternal:`这个文件在 {host} 上,请到那台机器上打开`,mentionNoEngine:`这个任务没有打开的引擎会话——没有地方可以提及。`,landTodos:`此任务还有 {count} 条待办未完成。`,emptyAll:`(空工作区)`},preview:{loading:`加载中…`,whole:`整个工作区`,unknown:`没有可显示的内容`,binary:`二进制文件——不以文本显示`,empty:`没有变更`,noHunks:`没有文本变更({kind})`,noteTitle:`批注 {location}`,noteSubmit:`添加批注`,askInChat:`在对话里问`,askInChatHint:`把选中的几行放进引擎的输入框`,sent:`已把 {count} 条批注发给引擎`,notSent:`批注没有发出:{reason}`},review:{comment:`批注`,range:`选范围`,count:`{count} 条批注`,countOne:`1 条批注`,send:`发送 {count} 条`,sending:`发送中…`,edit:`编辑`,drop:`删除`,moved:`已移位`,movedHint:`这条批注下面的代码在写下之后变了。`,show:`在差异里定位`,editTitle:`编辑批注 {location}`,editSubmit:`保存批注`,fold:`折叠 {path}`,unfold:`展开 {path}`,foldAll:`全部折叠`,unfoldAll:`全部展开`,ignoreWs:`[ ws ]`,ignoreWsHint:`隐藏仅空白的改动 (git diff -w)`,viewed:`[ 已看 ]`,markViewed:`标记 {path} 为已看`,viewedOn:`[x] 已看`,unmarkViewed:`取消 {path} 的已看`,totals:`{files} 个文件 · +{added} −{removed}`,viewedCount:`已看 {done}/{files}`,nextFile:`[ 下个文件 ]`,nextComment:`[ 下条评论 ]`,scopeMenu:`{base} → {scope} ▾`,compareAgainst:`对比基准:{base}…`,baseDefault:`任务基准`,baseBranch:`分支`,baseRemote:`远程`,baseTag:`标签`,basePlaceholder:`分支、标签或提交`,shape:{effort:`评审量 {n}/5`,lockfile:`{count} 个锁文件`,lockfiles:`{count} 个锁文件`,generated:`{count} 个生成文件`,tests:`{count} 个测试`,config:`{count} 个配置`,docs:`{count} 个文档`,source:`{count} 个源码`},scopeWorking:`未提交的改动`,scopeBranch:`已提交的改动`,scopeTask:`全部改动`,notSupported:`这个 bridge 比页面旧,做不了这个;请重启它。`},panel:{tabs:`侧边栏视图`,files:`文件`,chat:`对话`,diff:`差异`,browser:`浏览器`,quota:`上下文`,resize:`拖动调整侧边栏宽度,双击复位`,empty:`没有打开的内容。点 + 打开文件、差异或浏览器。`,new:`新建标签页`,newChat:`对话`,newFiles:`新建文件`,newDiff:`整个工作区的差异`,newBrowser:`新建浏览器`,newQuota:`上下文窗口`,close:`关闭`,hide:`关闭侧边栏`,expand:`展开侧边栏`,restore:`还原侧边栏大小`,closeOthers:`关闭其他`,splitDown:`向下分屏`,moveBottom:`移到下方`,moveTop:`移到上方`,resizeSplit:`拖动调整高度,双击恢复均分`},browser:{address:`地址`,placeholder:`https://… 或 localhost:3000`,back:`后退`,forward:`前进`,reload:`刷新`,openTab:`在新标签页打开`,invalid:`这不是网页地址;这里只能打开 http 和 https 页面。`,empty:`输入网页地址,或本地开发服务器的地址。`,noFrame:`这里只能打开 https 页面;这个地址用的是 http。点 ↗ 在新标签页打开。`,self:`这个地址就是 Rove 本身,不能嵌入。点 ↗ 在新标签页打开。`,refuses:`{host} 不允许嵌入其他页面。`,unreachable:`从这里访问不到 {host}。`,remote:`{host} 运行在 Rove 所在的机器上,不在这台设备上。`}},I=n({en:()=>te,zh:()=>L}),te={quote:{action:`[ quote ]`,title:`Put the selection in the prompt as a quote`,atMenu:`The agent is waiting on a choice. Answer it first, then quote.`,notReady:`The agent's prompt is not taking pasted text yet. Try again in a moment.`},snippets:{empty:`No snippets yet.`,name:`Name`,namePlaceholder:`review`,text:`Text`,textPlaceholder:`Review this change for bugs and missing tests.`,add:`[ add ]`,save:`[ save ]`,edit:`[ edit ]`,cancel:`[ cancel ]`,remove:`[ remove ]`,removed:`Removed @{name}`,badName:`A name is letters, digits, - or _, up to 32.`}},L={quote:{action:`[ 引用 ]`,title:`把选中的内容作为引用放进提示词`,atMenu:`agent 正在等你做选择。先回答它,再引用。`,notReady:`agent 的输入框暂时还不接受粘贴。稍等一下再试。`},snippets:{empty:`还没有片段。`,name:`名称`,namePlaceholder:`review`,text:`内容`,textPlaceholder:`检查这次改动有没有 bug,有没有漏掉的测试。`,add:`[ 添加 ]`,save:`[ 保存 ]`,edit:`[ 编辑 ]`,cancel:`[ 取消 ]`,remove:`[ 删除 ]`,removed:`已删除 @{name}`,badName:`名称只能是字母、数字、- 或 _,最长 32 位。`}},ne=n({en:()=>re,zh:()=>ie}),re={rail:{inbox:`inbox {count}`,empty:`no tasks yet`,skillCue:`skill missing`,newTask:`New task`,settings:`Settings`,noProject:`Ungrouped`,state:{needs:`needs you`,working:`working`,ready:`ready`,idle:`idle`},extraRepos:`{count} more repos in this task`,todos:`{done} of {total} todos done`,startsAt:`Starts {time}`,pr:{state:{open:`open`,merged:`merged`,closed:`closed`},many:`{count} PRs in this task and its children`,checks:{conflict:`conflicts with its base`,failing:`checks failing`,passing:`checks passing`,pending:`checks running`}},searchPlaceholder:`fuzzy filter`,engineSwitched:`Engine → {engine} (applies on reopen)`,engineSwitchFailed:`could not switch engine: {error}`},inbox:{title:`inbox`,hints:`↑↓ move · enter open · d clear · esc close`,attention:`attention`,recent:`recent`,empty:`no pending attention`,reply:`[ reply ]`,hide:`[ hide ]`,send:`[ send ]`,openTab:`[ open ]`,noOutput:`no output yet`,replyPlaceholder:`reply to this session`,gateKept:`Saved; the engine isn't running and will get it with its next message.`,state:{done:`done`,needsInput:`needs input`,error:`error`,rateLimited:`rate limited`,dead:`engine exited`,routineFailed:`routine needs you`,decision:`needs a decision`}}},ie={rail:{inbox:`收件箱 {count}`,empty:`还没有任务`,skillCue:`缺少技能`,newTask:`新建任务`,settings:`设置`,noProject:`未分组`,state:{needs:`等你处理`,working:`进行中`,ready:`待收尾`,idle:`空闲`},extraRepos:`这个任务还含 {count} 个仓库`,todos:`{done}/{total} 条待办已完成`,startsAt:`{time} 启动`,pr:{state:{open:`进行中`,merged:`已合并`,closed:`已关闭`},many:`这个任务及子任务共 {count} 个 PR`,checks:{conflict:`与基础分支冲突`,failing:`检查未通过`,passing:`检查已通过`,pending:`检查进行中`}},searchPlaceholder:`模糊搜索`,engineSwitched:`引擎 → {engine}(重新打开后生效)`,engineSwitchFailed:`切换引擎失败:{error}`},inbox:{title:`收件箱`,hints:`↑↓ 移动 · enter 打开 · d 清除 · esc 关闭`,attention:`待处理`,recent:`最近使用`,empty:`暂无待处理`,reply:`[ 回复 ]`,hide:`[ 收起 ]`,send:`[ 发送 ]`,openTab:`[ 打开 ]`,noOutput:`还没有输出`,replyPlaceholder:`回复这个会话`,gateKept:`已记下;引擎没在运行,下次发消息时一并送达。`,state:{done:`完成`,needsInput:`需要输入`,error:`出错`,rateLimited:`限流`,dead:`引擎已退出`,routineFailed:`例行任务需要处理`,decision:`等你决定`}}},R=n({en:()=>ae,zh:()=>oe}),ae={reviewQueue:{sourceIssues:`[ issues ]`,sourceReviews:`[ PRs waiting on me ]`,palette:`Review queue`,title:`PRs waiting on me`,empty:`No open PR asks for your review in your projects.`,other:`{count} more in projects Rove doesn't know.`,draft:`draft`,fork:`fork`,checksPassing:`checks passing`,checksFailing:`checks failing`,checksPending:`checks running`,start:`[ review ]`,preparing:`Fetching #{number}…`,failed:`Could not start the review of #{number}: {error}`,gh:{missing:"The `gh` CLI is not installed or not on PATH.",unauthenticated:"`gh` is not signed in: run `gh auth login` on this Mac.",failed:`GitHub could not be read just now. Press r to retry.`},prompt:`Review pull request #{number} in {repo}: {title}
|
|
10
10
|
{url}
|
|
11
11
|
|
|
12
12
|
This worktree is at the PR's head ({head}, going into {base}). Read the change against {base} (git diff origin/{base}...HEAD), then tell me what you find: bugs, risks, missing tests, anything unclear. Do not push, comment on or approve the PR; report here.`}},oe={reviewQueue:{sourceIssues:`[ 议题 ]`,sourceReviews:`[ 等我评审的 PR ]`,palette:`评审队列`,title:`等我评审的 PR`,empty:`你的项目里没有等你评审的 PR。`,other:`另有 {count} 个在 Rove 不认识的项目里。`,draft:`草稿`,fork:`fork`,checksPassing:`检查通过`,checksFailing:`检查未通过`,checksPending:`检查进行中`,start:`[ 评审 ]`,preparing:`正在获取 #{number}…`,failed:`无法开始评审 #{number}:{error}`,gh:{missing:"没有安装 `gh` 命令行,或不在 PATH 中。",unauthenticated:"`gh` 未登录:请在这台 Mac 上运行 `gh auth login`。",failed:`暂时读不到 GitHub。按 r 重试。`},prompt:`评审 {repo} 的拉取请求 #{number}:{title}
|
|
@@ -108,42 +108,42 @@ void main() {
|
|
|
108
108
|
}`,Ux=8,Wx=Ux*Float32Array.BYTES_PER_ELEMENT,Gx=20*Ux,Kx=class{constructor(){this.attributes=new Float32Array(Gx),this.count=0}},qx=0,Jx=0,Yx=0,Xx=0,Zx=0,Qx=0,$x=0,eS=class extends Ey{constructor(e,t,n,r){super(),this._terminal=e,this._gl=t,this._dimensions=n,this._themeService=r,this._vertices=new Kx,this._verticesCursor=new Kx;let i=this._gl;this._program=Jy(yx(i,Vx,Hx)),this._register(Cy(()=>i.deleteProgram(this._program))),this._projectionLocation=Jy(i.getUniformLocation(this._program,`u_projection`)),this._vertexArrayObject=i.createVertexArray(),i.bindVertexArray(this._vertexArrayObject);let a=new Float32Array([0,0,1,0,0,1,1,1]),o=i.createBuffer();this._register(Cy(()=>i.deleteBuffer(o))),i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,a,i.STATIC_DRAW),i.enableVertexAttribArray(3),i.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);let s=new Uint8Array([0,1,2,3]),c=i.createBuffer();this._register(Cy(()=>i.deleteBuffer(c))),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,c),i.bufferData(i.ELEMENT_ARRAY_BUFFER,s,i.STATIC_DRAW),this._attributesBuffer=Jy(i.createBuffer()),this._register(Cy(()=>i.deleteBuffer(this._attributesBuffer))),i.bindBuffer(i.ARRAY_BUFFER,this._attributesBuffer),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,Wx,0),i.vertexAttribDivisor(0,1),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,2,i.FLOAT,!1,Wx,2*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(1,1),i.enableVertexAttribArray(2),i.vertexAttribPointer(2,4,i.FLOAT,!1,Wx,4*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(2,1),this._updateCachedColors(r.colors),this._register(this._themeService.onChangeColors(e=>{this._updateCachedColors(e),this._updateViewportRectangle()}))}renderBackgrounds(){this._renderVertices(this._vertices)}renderCursor(){this._renderVertices(this._verticesCursor)}_renderVertices(e){let t=this._gl;t.useProgram(this._program),t.bindVertexArray(this._vertexArrayObject),t.uniformMatrix4fv(this._projectionLocation,!1,vx),t.bindBuffer(t.ARRAY_BUFFER,this._attributesBuffer),t.bufferData(t.ARRAY_BUFFER,e.attributes,t.DYNAMIC_DRAW),t.drawElementsInstanced(this._gl.TRIANGLE_STRIP,4,t.UNSIGNED_BYTE,0,e.count)}handleResize(){this._updateViewportRectangle()}setDimensions(e){this._dimensions=e}_updateCachedColors(e){this._bgFloat=this._colorToFloat32Array(e.background),this._cursorFloat=this._colorToFloat32Array(e.cursor)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.device.cell.width,this._terminal.rows*this._dimensions.device.cell.height,this._bgFloat)}updateBackgrounds(e){let t=this._terminal,n=this._vertices,r=1,i,a,o,s,c,l,u,d,f,p,m;for(i=0;i<t.rows;i++){for(o=-1,s=0,c=0,l=!1,a=0;a<t.cols;a++)u=(i*t.cols+a)*Fx,d=e.cells[u+Ix],f=e.cells[u+Lx],p=!!(f&67108864),(d!==s||f!==c&&(l||p))&&((s!==0||l&&c!==0)&&(m=r++*Ux,this._updateRectangle(n,m,c,s,o,a,i)),o=a,s=d,c=f,l=p);(s!==0||l&&c!==0)&&(m=r++*Ux,this._updateRectangle(n,m,c,s,o,t.cols,i))}n.count=r}updateCursor(e){let t=this._verticesCursor,n=e.cursor;if(!n||n.style===`block`){t.count=0;return}let r,i=0;(n.style===`bar`||n.style===`outline`)&&(r=i++*Ux,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.style===`bar`?n.dpr*n.cursorWidth:n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),(n.style===`underline`||n.style===`outline`)&&(r=i++*Ux,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,(n.y+1)*this._dimensions.device.cell.height-n.dpr,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat)),n.style===`outline`&&(r=i++*Ux,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat),r=i++*Ux,this._addRectangleFloat(t.attributes,r,(n.x+n.width)*this._dimensions.device.cell.width-n.dpr,n.y*this._dimensions.device.cell.height,n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),t.count=i}_updateRectangle(e,t,n,r,i,a,o){if(n&67108864)switch(n&50331648){case 16777216:case 33554432:qx=this._themeService.colors.ansi[n&255].rgba;break;case 50331648:qx=(n&16777215)<<8;break;default:qx=this._themeService.colors.foreground.rgba}else switch(r&50331648){case 16777216:case 33554432:qx=this._themeService.colors.ansi[r&255].rgba;break;case 50331648:qx=(r&16777215)<<8;break;default:qx=this._themeService.colors.background.rgba}e.attributes.length<t+4&&(e.attributes=xx(e.attributes,this._terminal.rows*this._terminal.cols*Ux)),Jx=i*this._dimensions.device.cell.width,Yx=o*this._dimensions.device.cell.height,Xx=(qx>>24&255)/255,Zx=(qx>>16&255)/255,Qx=(qx>>8&255)/255,$x=1,this._addRectangle(e.attributes,t,Jx,Yx,(a-i)*this._dimensions.device.cell.width,this._dimensions.device.cell.height,Xx,Zx,Qx,$x)}_addRectangle(e,t,n,r,i,a,o,s,c,l){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o,e[t+5]=s,e[t+6]=c,e[t+7]=l}_addRectangleFloat(e,t,n,r,i,a,o){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o[0],e[t+5]=o[1],e[t+6]=o[2],e[t+7]=o[3]}_colorToFloat32Array(e){return new Float32Array([(e.rgba>>24&255)/255,(e.rgba>>16&255)/255,(e.rgba>>8&255)/255,(e.rgba&255)/255])}},tS=class extends Ey{constructor(e,t,n,r,i,a,o,s){super(),this._container=t,this._alpha=i,this._coreBrowserService=a,this._optionsService=o,this._themeService=s,this._deviceCharWidth=0,this._deviceCharHeight=0,this._deviceCellWidth=0,this._deviceCellHeight=0,this._deviceCharLeft=0,this._deviceCharTop=0,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`),this._canvas.classList.add(`xterm-${n}-layer`),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas),this._register(this._themeService.onChangeColors(t=>{this._refreshCharAtlas(e,t),this.reset(e)})),this._register(Cy(()=>{this._canvas.remove()}))}_initCanvas(){this._ctx=Jy(this._canvas.getContext(`2d`,{alpha:this._alpha})),this._alpha||this._clearAll()}handleBlur(e){}handleFocus(e){}handleCursorMove(e){}handleGridChanged(e,t,n){}handleSelectionChanged(e,t,n,r=!1){}_setTransparency(e,t){if(t===this._alpha)return;let n=this._canvas;this._alpha=t,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,n),this._refreshCharAtlas(e,this._themeService.colors),this.handleGridChanged(e,0,e.rows-1)}_refreshCharAtlas(e,t){this._deviceCharWidth<=0&&this._deviceCharHeight<=0||(this._charAtlas=dx(e,this._optionsService.rawOptions,t,this._deviceCellWidth,this._deviceCellHeight,this._deviceCharWidth,this._deviceCharHeight,this._coreBrowserService.dpr,2048),this._charAtlas.warmUp())}resize(e,t){this._deviceCellWidth=t.device.cell.width,this._deviceCellHeight=t.device.cell.height,this._deviceCharWidth=t.device.char.width,this._deviceCharHeight=t.device.char.height,this._deviceCharLeft=t.device.char.left,this._deviceCharTop=t.device.char.top,this._canvas.width=t.device.canvas.width,this._canvas.height=t.device.canvas.height,this._canvas.style.width=`${t.css.canvas.width}px`,this._canvas.style.height=`${t.css.canvas.height}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(e,this._themeService.colors)}_fillBottomLineAtCells(e,t,n=1){this._ctx.fillRect(e*this._deviceCellWidth,(t+1)*this._deviceCellHeight-this._coreBrowserService.dpr-1,n*this._deviceCellWidth,this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(e,t,n,r){this._alpha?this._ctx.clearRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight))}_fillCharTrueColor(e,t,n,r){this._ctx.font=this._getFont(e,!1,!1),this._ctx.textBaseline=mb,this._clipCell(n,r,t.getWidth()),this._ctx.fillText(t.getChars(),n*this._deviceCellWidth+this._deviceCharLeft,r*this._deviceCellHeight+this._deviceCharTop+this._deviceCharHeight)}_clipCell(e,t,n){this._ctx.beginPath(),this._ctx.rect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,this._deviceCellHeight),this._ctx.clip()}_getFont(e,t,n){let r=t?e.options.fontWeightBold:e.options.fontWeight;return`${n?`italic`:``} ${r} ${e.options.fontSize*this._coreBrowserService.dpr}px ${e.options.fontFamily}`}},nS=class extends tS{constructor(e,t,n,r,i,a,o){super(n,e,`link`,t,!0,i,a,o),this._register(r.onShowLinkUnderline(e=>this._handleShowLinkUnderline(e))),this._register(r.onHideLinkUnderline(e=>this._handleHideLinkUnderline(e)))}resize(e,t){super.resize(e,t),this._state=void 0}reset(e){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);let e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_handleShowLinkUnderline(e){if(e.fg===257?this._ctx.fillStyle=this._themeService.colors.background.css:e.fg!==void 0&&lx(e.fg)?this._ctx.fillStyle=this._themeService.colors.ansi[e.fg].css:this._ctx.fillStyle=this._themeService.colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(let t=e.y1+1;t<e.y2;t++)this._fillBottomLineAtCells(0,t,e.cols);this._fillBottomLineAtCells(0,e.y2,e.x2)}this._state=e}_handleHideLinkUnderline(e){this._clearCurrentLink()}},rS=typeof window==`object`?window:globalThis,iS=class{constructor(){this.mapWindowIdToZoomLevel=new Map,this._onDidChangeZoomLevel=new Zb,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this.mapWindowIdToZoomFactor=new Map,this._onDidChangeFullscreen=new Zb,this.onDidChangeFullscreen=this._onDidChangeFullscreen.event,this.mapWindowIdToFullScreen=new Map}getZoomLevel(e){return this.mapWindowIdToZoomLevel.get(this.getWindowId(e))??0}setZoomLevel(e,t){if(this.getZoomLevel(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToZoomLevel.set(n,e),this._onDidChangeZoomLevel.fire(n)}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}setZoomFactor(e,t){this.mapWindowIdToZoomFactor.set(this.getWindowId(t),e)}setFullscreen(e,t){if(this.isFullscreen(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToFullScreen.set(n,e),this._onDidChangeFullscreen.fire(n)}isFullscreen(e){return!!this.mapWindowIdToFullScreen.get(this.getWindowId(e))}getWindowId(e){return e.vscodeWindowId}};iS.INSTANCE=new iS;var aS=iS;function oS(e,t,n){typeof t==`string`&&(t=e.matchMedia(t)),t.addEventListener(`change`,n)}aS.INSTANCE.onDidChangeZoomLevel,aS.INSTANCE.onDidChangeFullscreen;var sS=typeof navigator==`object`?navigator.userAgent:``;sS.indexOf(`Firefox`);var cS=sS.indexOf(`AppleWebKit`)>=0;!(sS.indexOf(`Chrome`)>=0)&&sS.indexOf(`Safari`),sS.indexOf(`Electron/`),sS.indexOf(`Android`);var lS=!1;if(typeof rS.matchMedia==`function`){let e=rS.matchMedia(`(display-mode: standalone) or (display-mode: window-controls-overlay)`),t=rS.matchMedia(`(display-mode: fullscreen)`);lS=e.matches,oS(rS,e,({matches:e})=>{lS&&t.matches||(lS=e)})}function uS(){return lS}var dS=`en`,fS=!1,pS=!1,mS=!1,hS=dS,gS,_S=globalThis,vS;typeof _S.vscode<`u`&&typeof _S.vscode.process<`u`?vS=_S.vscode.process:typeof process<`u`&&typeof process?.versions?.node==`string`&&(vS=process);var yS=typeof vS?.versions?.electron==`string`&&vS?.type===`renderer`;if(typeof vS==`object`){vS.platform,vS.platform,fS=vS.platform===`linux`,fS&&vS.env.SNAP&&vS.env.SNAP_REVISION,vS.env.CI||vS.env.BUILD_ARTIFACTSTAGINGDIRECTORY,hS=dS;let e=vS.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.userLocale,t.osLocale,hS=t.resolvedLanguage||dS,t.languagePack?.translationsConfigFile}catch{}pS=!0}else typeof navigator==`object`&&!yS?(gS=navigator.userAgent,gS.indexOf(`Windows`),gS.indexOf(`Macintosh`),(gS.indexOf(`Macintosh`)>=0||gS.indexOf(`iPad`)>=0||gS.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,fS=gS.indexOf(`Linux`)>=0,gS?.indexOf(`Mobi`),mS=!0,hS=globalThis._VSCODE_NLS_LANGUAGE||dS,navigator.language.toLowerCase()):console.error(`Unable to resolve platform.`);var bS=pS;mS&&typeof _S.importScripts==`function`&&_S.origin;var xS=gS,SS=hS,CS;(e=>{function t(){return SS}e.value=t;function n(){return SS.length===2?SS===`en`:SS.length>=3&&SS[0]===`e`&&SS[1]===`n`&&SS[2]===`-`}e.isDefaultVariant=n;function r(){return SS===`en`}e.isDefault=r})(CS||={});var wS=typeof _S.postMessage==`function`&&!_S.importScripts;(()=>{if(wS){let e=[];_S.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),_S.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})();var TS=!!(xS&&xS.indexOf(`Chrome`)>=0);xS&&xS.indexOf(`Firefox`),!TS&&xS&&xS.indexOf(`Safari`),xS&&xS.indexOf(`Edg/`),xS&&xS.indexOf(`Android`);var ES=typeof navigator==`object`?navigator:{};bS||document.queryCommandSupported&&document.queryCommandSupported(`copy`)||ES&&ES.clipboard&&ES.clipboard.writeText,bS||ES&&ES.clipboard&&ES.clipboard.readText,bS||uS()||ES.keyboard,`ontouchstart`in rS||ES.maxTouchPoints,rS.PointerEvent&&(`ontouchstart`in rS||navigator.maxTouchPoints);var DS=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}},OS=new DS,kS=new DS,AS=new DS;Array(230);var jS;(e=>{function t(e){return OS.keyCodeToStr(e)}e.toString=t;function n(e){return OS.strToKeyCode(e)}e.fromString=n;function r(e){return kS.keyCodeToStr(e)}e.toUserSettingsUS=r;function i(e){return AS.keyCodeToStr(e)}e.toUserSettingsGeneral=i;function a(e){return kS.strToKeyCode(e)||AS.strToKeyCode(e)}e.fromUserSettings=a;function o(e){if(e>=98&&e<=113)return null;switch(e){case 16:return`Up`;case 18:return`Down`;case 15:return`Left`;case 17:return`Right`}return OS.keyCodeToStr(e)}e.toElectronAccelerator=o})(jS||={});var MS=Object.freeze(function(e,t){let n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}),NS;(e=>{function t(t){return t===e.None||t===e.Cancelled||t instanceof PS?!0:!t||typeof t!=`object`?!1:typeof t.isCancellationRequested==`boolean`&&typeof t.onCancellationRequested==`function`}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:zb.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:MS})})(NS||={});var PS=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?MS:(this._emitter||=new Zb,this._emitter.event)}dispose(){this._emitter&&=(this._emitter.dispose(),null)}};(function(){typeof globalThis.requestIdleCallback!=`function`||globalThis.cancelIdleCallback})();var FS;(e=>{async function t(e){let t,n=await Promise.all(e.map(e=>e.then(e=>e,e=>{t||=e})));if(typeof t<`u`)throw t;return n}e.settled=t;function n(e){return new Promise(async(t,n)=>{try{await e(t,n)}catch(e){n(e)}})}e.withAsyncBody=n})(FS||={});var IS=class e{static fromArray(t){return new e(e=>{e.emitMany(t)})}static fromPromise(t){return new e(async e=>{e.emitMany(await t)})}static fromPromises(t){return new e(async e=>{await Promise.all(t.map(async t=>e.emitOne(await t)))})}static merge(t){return new e(async e=>{await Promise.all(t.map(async t=>{for await(let n of t)e.emitOne(n)}))})}constructor(e,t){this._state=0,this._results=[],this._error=null,this._onReturn=t,this._onStateChanged=new Zb,queueMicrotask(async()=>{let t={emitOne:e=>this.emitOne(e),emitMany:e=>this.emitMany(e),reject:e=>this.reject(e)};try{await Promise.resolve(e(t)),this.resolve()}catch(e){this.reject(e)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await zb.toPromise(this._onStateChanged.event)}while(!0)},return:async()=>(this._onReturn?.(),{done:!0,value:void 0})}}static map(t,n){return new e(async e=>{for await(let r of t)e.emitOne(n(r))})}map(t){return e.map(this,t)}static filter(t,n){return new e(async e=>{for await(let r of t)n(r)&&e.emitOne(r)})}filter(t){return e.filter(this,t)}static coalesce(t){return e.filter(t,e=>!!e)}coalesce(){return e.coalesce(this)}static async toPromise(e){let t=[];for await(let n of e)t.push(n);return t}toPromise(){return e.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};IS.EMPTY=IS.fromArray([]);function LS(e){return RS(e,0)}function RS(e,t){switch(typeof e){case`object`:return e===null?zS(349,t):Array.isArray(e)?HS(e,t):US(e,t);case`string`:return VS(e,t);case`boolean`:return BS(e,t);case`number`:return zS(e,t);case`undefined`:return zS(937,t);default:return zS(617,t)}}function zS(e,t){return(t<<5)-t+e|0}function BS(e,t){return zS(e?433:863,t)}function VS(e,t){t=zS(149417,t);for(let n=0,r=e.length;n<r;n++)t=zS(e.charCodeAt(n),t);return t}function HS(e,t){return t=zS(104579,t),e.reduce((e,t)=>RS(t,e),t)}function US(e,t){return t=zS(181387,t),Object.keys(e).sort().reduce((t,n)=>(t=VS(n,t),RS(e[n],t)),t)}var{registerWindow:WS,getWindow:GS,getDocument:KS,getWindows:qS,getWindowsCount:JS,getWindowId:YS,getWindowById:XS,hasWindow:ZS,onDidRegisterWindow:QS,onWillUnregisterWindow:$S,onDidUnregisterWindow:eC}=function(){let e=new Map,t={window:rS,disposables:new Ty};e.set(rS.vscodeWindowId,t);let n=new Zb,r=new Zb,i=new Zb;function a(n,r){return(typeof n==`number`?e.get(n):void 0)??(r?t:void 0)}return{onDidRegisterWindow:n.event,onWillUnregisterWindow:i.event,onDidUnregisterWindow:r.event,registerWindow(t){if(e.has(t.vscodeWindowId))return Ey.None;let a=new Ty,o={window:t,disposables:a.add(new Ty)};return e.set(t.vscodeWindowId,o),a.add(Cy(()=>{e.delete(t.vscodeWindowId),r.fire(t)})),a.add(nC(t,iC.BEFORE_UNLOAD,()=>{i.fire(t)})),n.fire(o),a},getWindows(){return e.values()},getWindowsCount(){return e.size},getWindowId(e){return e.vscodeWindowId},hasWindow(t){return e.has(t)},getWindowById:a,getWindow(e){let t=e;if(t?.ownerDocument?.defaultView)return t.ownerDocument.defaultView.window;let n=e;return n?.view?n.view.window:rS},getDocument(e){return GS(e).document}}}(),tC=class{constructor(e,t,n,r){this._node=e,this._type=t,this._handler=n,this._options=r||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&=(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,null)}};function nC(e,t,n,r){return new tC(e,t,n,r)}var rC=class e{constructor(e,t){this.width=e,this.height=t}with(t=this.width,n=this.height){return t!==this.width||n!==this.height?new e(t,n):this}static is(e){return typeof e==`object`&&typeof e.height==`number`&&typeof e.width==`number`}static lift(t){return t instanceof e?t:new e(t.width,t.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}};rC.None=new rC(0,0),new class{constructor(){this.mutationObservers=new Map}observe(e,t,n){let r=this.mutationObservers.get(e);r||(r=new Map,this.mutationObservers.set(e,r));let i=LS(n),a=r.get(i);if(a)a.users+=1;else{let o=new Zb,s=new MutationObserver(e=>o.fire(e));s.observe(e,n);let c=a={users:1,observer:s,onDidMutate:o.event};t.add(Cy(()=>{--c.users,c.users===0&&(o.dispose(),s.disconnect(),r?.delete(i),r?.size===0&&this.mutationObservers.delete(e))})),r.set(i,a)}return a.onDidMutate}};var iC={CLICK:`click`,AUXCLICK:`auxclick`,DBLCLICK:`dblclick`,MOUSE_UP:`mouseup`,MOUSE_DOWN:`mousedown`,MOUSE_OVER:`mouseover`,MOUSE_MOVE:`mousemove`,MOUSE_OUT:`mouseout`,MOUSE_ENTER:`mouseenter`,MOUSE_LEAVE:`mouseleave`,MOUSE_WHEEL:`wheel`,POINTER_UP:`pointerup`,POINTER_DOWN:`pointerdown`,POINTER_MOVE:`pointermove`,POINTER_LEAVE:`pointerleave`,CONTEXT_MENU:`contextmenu`,WHEEL:`wheel`,KEY_DOWN:`keydown`,KEY_PRESS:`keypress`,KEY_UP:`keyup`,LOAD:`load`,BEFORE_UNLOAD:`beforeunload`,UNLOAD:`unload`,PAGE_SHOW:`pageshow`,PAGE_HIDE:`pagehide`,PASTE:`paste`,ABORT:`abort`,ERROR:`error`,RESIZE:`resize`,SCROLL:`scroll`,FULLSCREEN_CHANGE:`fullscreenchange`,WK_FULLSCREEN_CHANGE:`webkitfullscreenchange`,SELECT:`select`,CHANGE:`change`,SUBMIT:`submit`,RESET:`reset`,FOCUS:`focus`,FOCUS_IN:`focusin`,FOCUS_OUT:`focusout`,BLUR:`blur`,INPUT:`input`,STORAGE:`storage`,DRAG_START:`dragstart`,DRAG:`drag`,DRAG_ENTER:`dragenter`,DRAG_LEAVE:`dragleave`,DRAG_OVER:`dragover`,DROP:`drop`,DRAG_END:`dragend`,ANIMATION_START:cS?`webkitAnimationStart`:`animationstart`,ANIMATION_END:cS?`webkitAnimationEnd`:`animationend`,ANIMATION_ITERATION:cS?`webkitAnimationIteration`:`animationiteration`},aC=class extends Ey{constructor(e,t,n,r,i,a,o,s,c){super(),this._terminal=e,this._characterJoinerService=t,this._charSizeService=n,this._coreBrowserService=r,this._coreService=i,this._decorationService=a,this._optionsService=o,this._themeService=s,this._cursorBlinkStateManager=new Dy,this._charAtlasDisposable=this._register(new Dy),this._observerDisposable=this._register(new Dy),this._model=new Bx,this._workCell=new _x,this._workCell2=new _x,this._rectangleRenderer=this._register(new Dy),this._glyphRenderer=this._register(new Dy),this._onChangeTextureAtlas=this._register(new Zb),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new Zb),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new Zb),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onRequestRedraw=this._register(new Zb),this.onRequestRedraw=this._onRequestRedraw.event,this._onContextLoss=this._register(new Zb),this.onContextLoss=this._onContextLoss.event,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`);let l={antialias:!1,depth:!1,preserveDrawingBuffer:c};if(this._gl=this._canvas.getContext(`webgl2`,l),!this._gl)throw Error(`WebGL2 not supported `+this._gl);this._register(this._themeService.onChangeColors(()=>this._handleColorChange())),this._cellColorResolver=new fb(this._terminal,this._optionsService,this._model.selection,this._decorationService,this._coreBrowserService,this._themeService),this._core=this._terminal._core,this._renderLayers=[new nS(this._core.screenElement,2,this._terminal,this._core.linkifier,this._coreBrowserService,o,this._themeService)],this.dimensions=nb(),this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._updateCursorBlink(),this._register(o.onOptionChange(()=>this._handleOptionsChanged())),this._deviceMaxTextureSize=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),this._register(nC(this._canvas,`webglcontextlost`,e=>{console.log(`webglcontextlost event received`),e.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,console.warn(`webgl context not restored; firing onContextLoss`),this._onContextLoss.fire(e)},3e3)})),this._register(nC(this._canvas,`webglcontextrestored`,e=>{console.warn(`webglcontextrestored event received`),clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,fx(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this._observerDisposable.value=hx(this._canvas,this._coreBrowserService.window,(e,t)=>this._setCanvasDevicePixelDimensions(e,t)),this._register(this._coreBrowserService.onWindowChange(e=>{this._observerDisposable.value=hx(this._canvas,e,(e,t)=>this._setCanvasDevicePixelDimensions(e,t))})),this._core.screenElement.appendChild(this._canvas),[this._rectangleRenderer.value,this._glyphRenderer.value]=this._initializeWebGLState(),this._isAttached=this._core.screenElement.isConnected,this._register(Cy(()=>{for(let e of this._renderLayers)e.dispose();this._canvas.parentElement?.removeChild(this._canvas),fx(this._terminal)}))}get textureAtlas(){return this._charAtlas?.pages[0].canvas}_handleColorChange(){this._refreshCharAtlas(),this._clearModel(!0)}handleDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.handleResize(this._terminal.cols,this._terminal.rows))}handleResize(e,t){this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(let e of this._renderLayers)e.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.device.canvas.width,this._canvas.height=this.dimensions.device.canvas.height,this._canvas.style.width=`${this.dimensions.css.canvas.width}px`,this._canvas.style.height=`${this.dimensions.css.canvas.height}px`,this._core.screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._core.screenElement.style.height=`${this.dimensions.css.canvas.height}px`,this._rectangleRenderer.value?.setDimensions(this.dimensions),this._rectangleRenderer.value?.handleResize(),this._glyphRenderer.value?.setDimensions(this.dimensions),this._glyphRenderer.value?.handleResize(),this._refreshCharAtlas(),this._clearModel(!1)}handleCharSizeChanged(){this.handleResize(this._terminal.cols,this._terminal.rows)}handleBlur(){for(let e of this._renderLayers)e.handleBlur(this._terminal);this._cursorBlinkStateManager.value?.pause(),this._requestRedrawViewport()}handleFocus(){for(let e of this._renderLayers)e.handleFocus(this._terminal);this._cursorBlinkStateManager.value?.resume(),this._requestRedrawViewport()}handleSelectionChanged(e,t,n){for(let r of this._renderLayers)r.handleSelectionChanged(this._terminal,e,t,n);this._model.selection.update(this._core,e,t,n),this._requestRedrawViewport()}handleCursorMove(){for(let e of this._renderLayers)e.handleCursorMove(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation()}_handleOptionsChanged(){this._updateDimensions(),this._refreshCharAtlas(),this._updateCursorBlink()}_initializeWebGLState(){return this._rectangleRenderer.value=new eS(this._terminal,this._gl,this.dimensions,this._themeService),this._glyphRenderer.value=new Mx(this._terminal,this._gl,this.dimensions,this._optionsService),this.handleCharSizeChanged(),[this._rectangleRenderer.value,this._glyphRenderer.value]}_refreshCharAtlas(){if(this.dimensions.device.char.width<=0&&this.dimensions.device.char.height<=0){this._isAttached=!1;return}let e=dx(this._terminal,this._optionsService.rawOptions,this._themeService.colors,this.dimensions.device.cell.width,this.dimensions.device.cell.height,this.dimensions.device.char.width,this.dimensions.device.char.height,this._coreBrowserService.dpr,this._deviceMaxTextureSize);this._charAtlas!==e&&(this._onChangeTextureAtlas.fire(e.pages[0].canvas),this._charAtlasDisposable.value=Sy(zb.forward(e.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas),zb.forward(e.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas))),this._charAtlas=e,this._charAtlas.warmUp(),this._glyphRenderer.value?.setAtlas(this._charAtlas)}_clearModel(e){this._model.clear(),e&&this._glyphRenderer.value?.clear()}clearTextureAtlas(){this._charAtlas?.clearTexture(),this._clearModel(!0),this._requestRedrawViewport()}clear(){this._clearModel(!0);for(let e of this._renderLayers)e.reset(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation(),this._updateCursorBlink()}renderRows(e,t){if(!this._isAttached){if(this._core.screenElement?.isConnected&&this._charSizeService.width&&this._charSizeService.height)this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0;else return}for(let n of this._renderLayers)n.handleGridChanged(this._terminal,e,t);!this._glyphRenderer.value||!this._rectangleRenderer.value||(this._glyphRenderer.value.beginFrame()?(this._clearModel(!0),this._updateModel(0,this._terminal.rows-1)):this._updateModel(e,t),this._rectangleRenderer.value.renderBackgrounds(),this._glyphRenderer.value.render(this._model),(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible)&&this._rectangleRenderer.value.renderCursor())}_updateCursorBlink(){this._coreService.decPrivateModes.cursorBlink??this._terminal.options.cursorBlink?this._cursorBlinkStateManager.value=new mx(()=>{this._requestRedrawCursor()},this._coreBrowserService):this._cursorBlinkStateManager.clear(),this._requestRedrawCursor()}_updateModel(e,t){let n=this._core,r=this._workCell,i,a,o,s,c,l,u=0,d=!0,f,p,m,h,g,_,v,y,b;e=sC(e,n.rows-1,0),t=sC(t,n.rows-1,0);let x=this._coreService.decPrivateModes.cursorStyle??n.options.cursorStyle??`block`,S=this._terminal.buffer.active.baseY+this._terminal.buffer.active.cursorY,C=S-n.buffer.ydisp,w=Math.min(this._terminal.buffer.active.cursorX,n.cols-1),T=-1,E=this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden&&(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible);this._model.cursor=void 0;let D=!1;for(a=e;a<=t;a++)for(o=a+n.buffer.ydisp,s=n.buffer.lines.get(o),this._model.lineLengths[a]=0,m=S===o,u=0,c=this._characterJoinerService.getJoinedCharacters(o),y=0;y<n.cols;y++){if(i=this._cellColorResolver.result.bg,s.loadCell(y,r),y===0&&(i=this._cellColorResolver.result.bg),l=!1,d=y>=u,f=y,c.length>0&&y===c[0][0]&&d){p=c.shift();let e=this._model.selection.isCellSelected(this._terminal,p[0],o);for(v=p[0]+1;v<p[1];v++)d&&=e===this._model.selection.isCellSelected(this._terminal,v,o);d&&=!m||w<p[0]||w>=p[1],d?(l=!0,r=new oC(r,s.translateToString(!0,p[0],p[1]),p[1]-p[0]),f=p[1]-1):u=p[1]}if(h=r.getChars(),g=r.getCode(),v=(a*n.cols+y)*Fx,this._cellColorResolver.resolve(r,y,o,this.dimensions.device.cell.width),E&&o===S&&(y===w&&(this._model.cursor={x:w,y:C,width:r.getWidth(),style:this._coreBrowserService.isFocused?x:n.options.cursorInactiveStyle,cursorWidth:n.options.cursorWidth,dpr:this._devicePixelRatio},T=w+r.getWidth()-1),y>=w&&y<=T&&(this._coreBrowserService.isFocused&&x===`block`||this._coreBrowserService.isFocused===!1&&n.options.cursorInactiveStyle===`block`)&&(this._cellColorResolver.result.fg=50331648|this._themeService.colors.cursorAccent.rgba>>8&16777215,this._cellColorResolver.result.bg=50331648|this._themeService.colors.cursor.rgba>>8&16777215)),g!==0&&(this._model.lineLengths[a]=y+1),(this._model.cells[v]!==g||this._model.cells[v+Ix]!==this._cellColorResolver.result.bg||this._model.cells[v+Lx]!==this._cellColorResolver.result.fg||this._model.cells[v+Rx]!==this._cellColorResolver.result.ext)&&(D=!0,h.length>1&&(g|=zx),this._model.cells[v]=g,this._model.cells[v+Ix]=this._cellColorResolver.result.bg,this._model.cells[v+Lx]=this._cellColorResolver.result.fg,this._model.cells[v+Rx]=this._cellColorResolver.result.ext,_=r.getWidth(),this._glyphRenderer.value.updateCell(y,a,g,this._cellColorResolver.result.bg,this._cellColorResolver.result.fg,this._cellColorResolver.result.ext,h,_,i),l)){for(r=this._workCell,y++;y<=f;y++)b=(a*n.cols+y)*Fx,this._glyphRenderer.value.updateCell(y,a,0,0,0,0,Fy,0,0),this._model.cells[b]=0,this._model.cells[b+Ix]=this._cellColorResolver.result.bg,this._model.cells[b+Lx]=this._cellColorResolver.result.fg,this._model.cells[b+Rx]=this._cellColorResolver.result.ext;y--}}D&&this._rectangleRenderer.value.updateBackgrounds(this._model),this._rectangleRenderer.value.updateCursor(this._model)}_updateDimensions(){!this._charSizeService.width||!this._charSizeService.height||(this.dimensions.device.char.width=Math.floor(this._charSizeService.width*this._devicePixelRatio),this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*this._devicePixelRatio),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.top=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.device.cell.height-this.dimensions.device.char.height)/2),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.char.left=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.device.canvas.height=this._terminal.rows*this.dimensions.device.cell.height,this.dimensions.device.canvas.width=this._terminal.cols*this.dimensions.device.cell.width,this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/this._devicePixelRatio),this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/this._devicePixelRatio),this.dimensions.css.cell.height=this.dimensions.device.cell.height/this._devicePixelRatio,this.dimensions.css.cell.width=this.dimensions.device.cell.width/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(e,t){this._canvas.width===e&&this._canvas.height===t||(this._canvas.width=e,this._canvas.height=t,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}_requestRedrawCursor(){let e=this._terminal.buffer.active.cursorY;this._onRequestRedraw.fire({start:e,end:e})}},oC=class extends Pb{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()]}};function sC(e,t,n=0){return Math.max(Math.min(e,t),n)}var cC=`di$target`,lC=`di$dependencies`,uC=new Map;function dC(e){if(uC.has(e))return uC.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);fC(t,e,r)};return t._id=e,uC.set(e,t),t}function fC(e,t,n){t[cC]===t?t[lC].push({id:e,index:n}):(t[lC]=[{id:e,index:n}],t[cC]=t)}dC(`BufferService`),dC(`CoreMouseService`),dC(`CoreService`),dC(`CharsetService`),dC(`InstantiationService`),dC(`LogService`);var pC=dC(`OptionsService`);dC(`OscLinkService`),dC(`UnicodeService`),dC(`DecorationService`);var mC={trace:0,debug:1,info:2,warn:3,error:4,off:5},hC=`xterm.js: `,gC=class extends Ey{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange(`logLevel`,()=>this._updateLogLevel())),_C=this}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=mC[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;t<e.length;t++)typeof e[t]==`function`&&(e[t]=e[t]())}_log(e,t,n){this._evalLazyOptionalParams(n),e.call(console,(this._optionsService.options.logger?``:hC)+t,...n)}trace(e,...t){this._logLevel<=0&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,e,t)}debug(e,...t){this._logLevel<=1&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,e,t)}info(e,...t){this._logLevel<=2&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,e,t)}warn(e,...t){this._logLevel<=3&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,e,t)}error(e,...t){this._logLevel<=4&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,e,t)}};gC=ay([oy(0,pC)],gC);var _C,vC=class extends Ey{constructor(e){if(Ny&&Py()<16&&!document.createElement(`canvas`).getContext(`webgl2`,{antialias:!1,depth:!1,preserveDrawingBuffer:!0}))throw Error(`Webgl2 is only supported on Safari 16 and above`);super(),this._preserveDrawingBuffer=e,this._onChangeTextureAtlas=this._register(new Zb),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new Zb),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new Zb),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onContextLoss=this._register(new Zb),this.onContextLoss=this._onContextLoss.event}activate(e){let t=e._core;if(!e.element){this._register(t.onWillOpen(()=>this.activate(e)));return}this._terminal=e;let n=t.coreService,r=t.optionsService,i=t,a=i._renderService,o=i._characterJoinerService,s=i._charSizeService,c=i._coreBrowserService,l=i._decorationService;i._logService;let u=i._themeService;this._renderer=this._register(new aC(e,o,s,c,n,l,r,u,this._preserveDrawingBuffer)),this._register(zb.forward(this._renderer.onContextLoss,this._onContextLoss)),this._register(zb.forward(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas)),this._register(zb.forward(this._renderer.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas)),this._register(zb.forward(this._renderer.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas)),a.setRenderer(this._renderer),this._register(Cy(()=>{if(this._terminal._core._store._isDisposed)return;let t=this._terminal._core._renderService;t.setRenderer(this._terminal._core._createRenderer()),t.handleResize(e.cols,e.rows)}))}get textureAtlas(){return this._renderer?.textureAtlas}clearTextureAtlas(){this._renderer?.clearTextureAtlas()}};function yC(e){let t=null,n=null;try{let r=new Set(e.element?.querySelectorAll(`canvas`)),i=new vC;i.onContextLoss(()=>{i.dispose(),t=null}),i.onRemoveTextureAtlasCanvas(()=>e.refresh(0,e.rows-1)),e.loadAddon(i),t=i,n=[...e.element?.querySelectorAll(`canvas`)??[]].find(e=>!r.has(e)&&!e.classList.contains(`xterm-link-layer`))??null}catch{}let r=new ResizeObserver(()=>{let n=e._core?._renderService;t&&n&&!n._isPaused&&typeof n._renderRows==`function`&&n._renderRows(0,e.rows-1)});if(n)try{r.observe(n,{box:`device-pixel-content-box`})}catch{}let i=()=>{t&&(t.clearTextureAtlas(),e.refresh(0,e.rows-1))};return document.fonts.addEventListener(`loadingdone`,i),{dispose(){document.fonts.removeEventListener(`loadingdone`,i),r.disconnect(),n?.getContext(`webgl2`)?.getExtension(`WEBGL_lose_context`)?.loseContext()}}}function bC(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function xC(e){return!e||typeof e!=`object`||!(`stream`in e)||typeof e.stream!=`string`?null:{stream:e.stream,...`data`in e&&typeof e.data==`string`?{data:e.data}:{},...`code`in e&&(typeof e.code==`number`||e.code===null)?{code:e.code}:{}}}var SC=65536,CC=20;function wC(e){let t=0,n=null,r=()=>{n!==null&&window.clearTimeout(n),n=null,t>0&&e(t),t=0};return{parsed(e){t+=e,t>=SC?r():n??=window.setTimeout(r,CC)},dispose(){n!==null&&window.clearTimeout(n),n=null,t=0}}}function TC(e){return!e||typeof e!=`object`||!(`stream`in e)||!(`replay`in e)?null:typeof e.stream==`string`&&typeof e.replay==`string`?{stream:e.stream,replay:e.replay}:null}var EC=8;function DC(e,t,n){return n&&n!==`leaf-1`?`${e}::${t}::${n}`:`${e}::${t}`}function OC(e){return e.type!==`keydown`||e.key.toLowerCase()!==`c`||e.altKey?null:e.metaKey||e.ctrlKey&&e.shiftKey?`copy`:e.ctrlKey?`interrupt-or-copy`:null}var kC=new WeakMap,AC=new Uint8Array([27,99]);function jC(e){let t=new Uint8Array(AC.length+e.length);return t.set(AC),t.set(e,AC.length),t}function MC(e){let{client:t,el:n,taskId:r,tabId:i}=e,a=new u_({fontFamily:K_,fontSize:13,lineHeight:1.15,theme:O_.get()??W_,cursorBlink:!0,scrollback:N_.get().prefs.scrollbackRows,allowProposedApi:!0,overviewRuler:{width:EC},scrollOnUserInput:!1}),o=new av(a);a.loadAddon(o);let s=new uc;a.loadAddon(s),a.loadAddon(new cl),a.unicode.activeVersion=`11`,a.loadAddon(new ml),a.open(n);let c=yC(a),l=Sv(a);o.fit();let u=J_(a,n,s),d=!1;e.snapshot&&u.raise(e.snapshot),e.focusOnMount&&a.focus();let f=DC(r,i,e.leafId),p=kC.get(t);p||(p=new Map,kC.set(t,p));let m=p.get(f)??{owners:0,attached:!1};m.owners++,p.set(f,m);let h=()=>void t.request(`term.detach`,{stream:f}).catch(()=>{}),g=null,_=!1,v=null,y=!1,b=jv(e=>{g&&_&&t.request(`term.input`,{stream:g,data:e}).catch(()=>{})}),x=wC(e=>{g&&t.request(`term.ack`,{stream:g,chars:e}).catch(()=>{})}),S=(e,t,n)=>{l.push(e),a.write(e,()=>{n?.(),x.parsed(t)})},C=t.on(`term.data`,e=>{let t=xC(e);if(!t?.data||t.stream!==f)return;let n=bC(t.data);v?v.push({bytes:n,chars:t.data.length}):g&&S(n,t.data.length)}),w=t.on(`term.reset`,e=>{let t=TC(e);!t||t.stream!==f||!g||v||b.replay(e=>S(jC(bC(t.replay)),t.replay.length,e))}),T=t.on(`term.exit`,t=>{let n=xC(t);!n||n.stream!==f||(_=!1,e.setNotice({kind:`exited`,code:n.code??null}),e.onExit(n.code??null))}),E=!1,D=t=>{E||(E=!0,t?requestAnimationFrame(()=>requestAnimationFrame(()=>e.onPainted?.())):e.onPainted?.())},O=async()=>{v=[],g=null;try{let n=await t.request(`term.attach`,{taskId:r,tabId:i,...e.leafId&&e.leafId!==`leaf-1`?{leafId:e.leafId}:{},cols:a.cols,rows:a.rows,acks:!0}),o=p.get(f);if(o?o.attached=!0:h(),y)return;me.reset(),d&&!u.raised&&u.raise(u.snapshot()),d=!0,de=null,fe=!0,b.replay(e=>{let t=bC(n.replay);l.push(t),a.write(jC(t),()=>{fe=!1,e(),D(!0)})});for(let e of v)S(e.bytes,e.chars);if(g=n.stream,_=n.alive,n.alive&&a.rows>2){let{cols:e,rows:r}=a,i=n.stream;t.request(`term.resize`,{stream:i,cols:e,rows:r-1}).then(()=>new Promise(e=>window.setTimeout(e,60))).then(()=>g===i?t.request(`term.resize`,{stream:i,cols:a.cols,rows:a.rows}):void 0).then(()=>window.setTimeout(u.lower,250)).catch(u.lower)}else u.lower();n.alive&&document.activeElement===a.textarea&&pn.set(n.stream),e.setNotice(n.alive?{kind:`none`}:n.restored?{kind:`restored`}:{kind:`exited`,code:null})}catch(t){if(y)return;t instanceof d_&&t.code===`TAB_NOT_LIVE`?e.setNotice({kind:`notLive`}):t instanceof d_&&t.code===`NOT_CONNECTED`||e.setNotice({kind:`failed`,message:t instanceof Error?t.message:String(t)})}finally{v=null,g||(u.lower(),D(!1))}},k=()=>n.clientWidth>0&&n.clientHeight>0,A=!1,j=t.onOpen(()=>{A=!k(),A||O()}),ee=null,M=a.onData(e=>{if(ee&&e.length===1){let t=ee;ee=null,t(),b.forward(Ov(e))}else b.forward(e)}),N=tv(a,e=>b.forward(e)),P=0,F=()=>{!g||!_||(P=Date.now(),t.request(`term.resize`,{stream:g,cols:a.cols,rows:a.rows}).catch(()=>{}))},I=a.onKey(()=>{Date.now()-P>1e3&&F()}),te=null,L=a.onResize(({cols:e,rows:n})=>{te!==null&&window.clearTimeout(te),te=window.setTimeout(()=>{g&&_&&t.request(`term.resize`,{stream:g,cols:e,rows:n}).catch(()=>{})},80)}),ne=()=>{wn.get()!==null||!k()||(o.fit(),A&&(A=!1,O()))},re=new ResizeObserver(ne);re.observe(n);let ie=wn.subscribe(ne),R=N_.subscribe(()=>{a.options.scrollback=N_.get().prefs.scrollbackRows}),ae=()=>{n.style.backgroundColor=(O_.get()??W_).background??``};ae();let oe=O_.subscribe(()=>{a.options.theme=O_.get()??W_,ae()});a.attachCustomKeyEventHandler(t=>{if(t.type===`keydown`&&t.ctrlKey&&!t.metaKey&&!t.altKey&&!t.shiftKey&&t.key.toLowerCase()===`v`&&/Mac|iPhone|iPad/.test(navigator.platform))return e.pasteImage(),!1;let n=OC(t);if(!n)return!0;let r=a.getSelection();return r.trim().length===0?n===`interrupt-or-copy`:(e.copyText(r),a.clearSelection(),!1)});let se=!1,ce=e=>{se=e.button===0},le=()=>{if(!se)return;se=!1;let t=a.getSelection();t.trim().length>0&&e.copyText(t)};n.addEventListener(`mousedown`,ce),document.addEventListener(`mouseup`,le);let ue=a.textarea,de=null,fe=!1,pe=0,me=$v(a,()=>{de=null}),he=ey(n,a,me),ge=ny(n,a,me),_e=e=>{e.target instanceof Element&&e.target.closest(`.scrollbar`)&&(de=null,me.reset())};n.addEventListener(`mousedown`,_e,{capture:!0});let ve=()=>H_(n);n.addEventListener(`wheel`,ve,{capture:!0,passive:!0}),n.addEventListener(`touchmove`,ve,{capture:!0,passive:!0});let ye=()=>{if(!fe&&a.buffer.active.type===`normal`){let e=Gv(a.buffer.active);de===null&&e>0&&(de=e),pe=performance.now()}return!1},be=a.parser.registerCsiHandler({final:`J`},e=>e[0]===3&&ye()),xe=a.parser.registerEscHandler({final:`c`},ye),Se=()=>{de=null,me.reset(),Gv(a.buffer.active)>0&&a.scrollToBottom()},Ce=a.onKey(Se);ue?.addEventListener(`paste`,Se),ue?.addEventListener(`compositionend`,Se);let we=()=>e.onScrolled(Gv(a.buffer.active)),Te=a.onScroll(we),Ee=a.onWriteParsed(()=>{de!==null&&performance.now()-pe>1e3&&(de=null);let e=Kv(de,a.buffer.active);e!==null&&a.scrollToLine(e),we()}),De=e=>{de=null,me.reset(),e()},Oe=()=>{pn.set(g),F(),e.onFocusChange(!0)},ke=()=>e.onFocusChange(!1);return ue?.addEventListener(`focus`,Oe),ue?.addEventListener(`blur`,ke),{term:a,stream:f,scrollLines:e=>De(()=>a.scrollLines(e)),scrollToTop:()=>De(()=>a.scrollToTop()),scrollToBottom:()=>De(()=>a.scrollToBottom()),armCtrl:e=>{ee=e},reattach:O,snapshot:u.snapshot,dispose(){y=!0,u.lower(),re.disconnect(),he(),ge(),me.dispose(),n.removeEventListener(`mousedown`,_e,{capture:!0}),n.removeEventListener(`wheel`,ve,{capture:!0}),n.removeEventListener(`touchmove`,ve,{capture:!0}),ue?.removeEventListener(`paste`,Se),ue?.removeEventListener(`compositionend`,Se),be.dispose(),xe.dispose(),Ce.dispose(),oe(),R(),ie(),te!==null&&window.clearTimeout(te),n.removeEventListener(`mousedown`,ce),document.removeEventListener(`mouseup`,le),ue?.removeEventListener(`focus`,Oe),ue?.removeEventListener(`blur`,ke),Te.dispose(),Ee.dispose(),M.dispose(),N(),I.dispose(),L.dispose(),j(),C(),T(),w(),x.dispose(),g&&pn.get()===g&&pn.set(null),m.owners--,m.owners===0&&(p.delete(f),m.attached&&h()),l.dispose(),a.dispose(),c.dispose()}}}function NC(e,t,n){let r=t?{repo:t}:{},[i]=(0,g.useState)(()=>{let t=Hs(e,`engines.list`,r),i=t?Cs(t.engines):[];return{offered:i,engine:t?ws(i,n??t.preferred):``}}),[a,o]=(0,g.useState)(i.offered),[s,c]=(0,g.useState)(i.engine);return(0,g.useEffect)(()=>{Ws(e,`engines.list`,r).then(e=>{let t=Cs(e.engines);o(t),c(ws(t,n??e.preferred))}).catch(()=>o([]))},[e]),{engines:a,engine:s,setEngine:c}}var PC=`shell`,FC=`pane:`,IC=e=>e.startsWith(FC),LC=e=>e.slice(5);function RC(e){let[t,n]=(0,g.useState)(()=>Hs(e,`plugin.panes`)?.panes??[]);return(0,g.useEffect)(()=>{Ws(e,`plugin.panes`).then(e=>n(e.panes)).catch(()=>n([]))},[e]),t}function zC(e){let t=[...e.engines,...e.withShell?[{id:PC,name:z(`tab.shell`)}]:[],...(e.panes??[]).map(e=>({id:FC+e.id,name:e.title}))];return(0,V.jsx)(es,{label:z(`newTask.engine`),field:`engine`,value:e.value,onChange:e.onChange,choices:t.map(e=>({id:e.id,label:e.name,dim:`ready`in e&&e.ready===!1,title:`ready`in e&&e.ready===!1?z(`newTask.notReady`):void 0}))})}function BC(e,t){return VC(e,t,{kind:`engine`,latest:!0}).catch(e=>G(String(e),`error`))}async function VC(e,t,n){let{tabId:r,taskId:i}=await e.client.request(`tab.new`,{taskId:t,kind:n.kind,...n.engine?{engine:n.engine}:{},...n.prompt?{prompt:n.prompt}:{},...n.latest?{latest:!0}:{},...n.replaceTab?{replaceTab:n.replaceTab}:{}});if(i){e.selectWhenListed(i);return}await e.refreshTabsNow(),n.replaceTab&&await ca(DC(t,r))?.reattach(),e.select(t,r)}async function HC(e){await VC(e,(await e.client.request(`task.openScratch`,{})).taskId,{kind:`shell`})}var UC=[`1`,`2`,`3`,`4`,`5`],WC=[`tab`,`fork`,`scratch`],GC=[`message`,`attempts`,`engine`,`fork-base`,`destination`];function KC(e){B();let{model:t,taskId:n}=e,r=t.tasks.get()?.tasks.find(e=>e.id===n),i=NC(t,r?.repo),[a,o]=(0,g.useState)(e.destination??`tab`),[s,c]=(0,g.useState)(e.context??`fresh`),[l,u]=(0,g.useState)(``),[d,f]=(0,g.useState)(`1`),[p,m]=(0,g.useState)(r?.branch??`main`),{busy:h,error:_,setError:v,submit:y}=lr(),{attachments:b,attach:x,remove:S}=Qo(t,v),C=s===`fresh`&&a!==`fork`,w=a===`tab`&&s===`fresh`,T=RC(t),E=i.engine===`shell`&&!C||IC(i.engine)&&!w?``:i.engine,D=E===PC,O=IC(E),k=a===`fork`,A=(e,t)=>{let n=e===`scratch`&&t===`continue`&&a===`scratch`?`tab`:e;o(n),c(n===`scratch`?`fresh`:t)},j=()=>{let r=t.selection.get();return e.sourceTabId??(r.taskId===n?r.tabId:null)??`tab-1`},ee=()=>t.tasks.get()?.tasks.find(e=>e.id===n)?.tabStatus?.[j()]?.reason===`dead`,M=async()=>{let e=await t.client.request(`tab.handoff`,{taskId:n,tabId:j()});if(e.kind===`handoff`&&e.prompt)return e.prompt;throw Error(e.kind===`no-transcript`?q(`terminal`,`tab.noTranscriptToHandOff`,{engine:e.engine??``}):q(`terminal`,`tab.nothingToFork`))},N=()=>y(async()=>{let e=s===`continue`&&a===`tab`&&!D&&!O&&ee(),i=[s===`continue`&&!e?await M():``,Xo(l.trim(),b)].filter(Boolean).join(`
|
|
109
109
|
|
|
110
110
|
`);if(a===`scratch`){let e=await t.client.request(`task.openScratch`,D?{}:{engine:E});D?await VC(t,e.taskId,{kind:`shell`}):t.selectWhenListed(e.taskId)}else if(k){if(!r)throw Error(q(`terminal`,`tab.tabGone`));if(!l.trim())throw Error(z(`taskops.forkNeedsMessage`));let e=p.trim()||r.branch,a;try{a=await t.client.request(`tab.forkTask`,{repo:r.repo,baseBranch:e,prompt:i,...E?{engine:E}:{},...Number(d)>1?{count:Number(d)}:{},...e===r.branch?{forkFrom:n}:{}})}catch(e){let t=As(e);if(!t)throw e;G(e instanceof Error?e.message:String(e),`error`),ba(t);return}a.forkRefused&&G(z(`taskops.forkLeftBehind`,{reason:a.forkRefused}));let o=a.taskIds[0];a.groupId?ba(a.groupId):o&&t.selectWhenListed(o)}else if(D)await VC(t,n,{kind:`shell`});else if(O){let{selection:e}=t,r=e.get().taskId===n?e.get().tabId:null,i=await t.client.request(`plugin.paneOpen`,{taskId:n,pane:LC(E),...r?{tabId:r}:{}});await t.refreshTabsNow(),t.select(n,i.tabId)}else await VC(t,n,{kind:`engine`,engine:E,prompt:i,...e?{replaceTab:j()}:{}})});return(0,V.jsx)(cr,{title:q(`terminal`,`tab.newChat.title`),wide:!0,children:(0,V.jsxs)(`form`,{className:Rn,onKeyDown:e=>{if(e.key===`Tab`&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(k||!e.shiftKey))e.preventDefault(),e.stopPropagation(),k?Rs(e.currentTarget,GC,e.shiftKey?-1:1):A(WC[(WC.indexOf(a)+1)%WC.length]??`tab`,s);else if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`e`){e.preventDefault(),e.stopPropagation();let t=i.engines.filter(e=>e.ready!==!1),n=t[(t.findIndex(e=>e.id===i.engine)+1)%t.length];n&&i.setEngine(n.id)}else e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`f`?(e.preventDefault(),e.stopPropagation(),A(a,s===`fresh`?`continue`:`fresh`)):e.key===`Enter`&&k&&e.target.closest(`[data-field=attempts], [data-field=engine]`)&&(e.preventDefault(),e.currentTarget.requestSubmit())},onSubmit:e=>{e.preventDefault(),N()},onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),x(Array.from(e.dataTransfer.files))},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`terminal`,`tab.newChat.engine`)}),(0,V.jsx)(zC,{engines:i.engines,value:E,onChange:i.setEngine,withShell:C,panes:w?T:[]})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`terminal`,`tab.newChat.destLabel`)}),(0,V.jsx)(es,{label:q(`terminal`,`tab.newChat.destLabel`),field:`destination`,value:a,onChange:e=>A(e,s),choices:WC.map(e=>({id:e,label:q(`terminal`,`tab.newChat.dest${e===`tab`?`Tab`:e===`fork`?`Fork`:`Scratch`}`)}))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted`,children:[q(`terminal`,`tab.newChat.ctxLabel`),` `,(0,V.jsx)(`span`,{className:`keys-only`,children:`ctrl+f`})]}),(0,V.jsx)(es,{label:q(`terminal`,`tab.newChat.ctxLabel`),field:`context`,value:s,onChange:e=>A(a,e===`continue`?`continue`:`fresh`),choices:[`fresh`,`continue`].map(e=>({id:e,label:q(`terminal`,`tab.newChat.ctx${e===`fresh`?`Fresh`:`Continue`}`)}))})]}),k&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`quickTask`,`attemptsLabel`)}),(0,V.jsx)(es,{label:q(`quickTask`,`attemptsLabel`),field:`attempts`,value:d,onChange:f,choices:UC.map(e=>({id:e,label:e}))})]}),(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:z(`taskops.forkBranch`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`fork-base`,spellCheck:!1,value:p,onChange:e=>m(e.target.value)})]})]}),!D&&!O&&a!==`scratch`&&(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:z(`newChat.prompt`)}),(0,V.jsx)(`textarea`,{className:`${nn} min-h-18 max-h-[50vh] leading-[1.45]`,"data-field":`message`,autoFocus:!0,rows:4,placeholder:z(`newChat.promptPlaceholder`),value:l,onChange:e=>u(e.target.value),onPaste:e=>{let t=Array.from(e.clipboardData.files);t.length!==0&&(e.preventDefault(),x(t))},onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&e.currentTarget.form?.requestSubmit()}})]}),(0,V.jsx)($o,{attachments:b,onRemove:S}),ts()?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`pages.attachHintTouch`)}):(0,V.jsx)(`p`,{className:`keys-only mx-0 mt-2 mb-0 ${Yt}`,children:q(`quickTask`,`legend`)}),_&&(0,V.jsx)(`p`,{className:`text-error`,children:_}),(0,V.jsx)(pr,{busy:h,submitLabel:z(`newChat.start`)})]})})}var qC=e=>e.split(`/`).filter(Boolean).pop()??e;function JC(e,t,n=``){let r=qC(e),i=t.filter(t=>(t.repo!==e||t.host!==n)&&qC(t.repo)===r);if(i.length===0)return r;let a=e=>e.split(`/`).filter(Boolean).slice(-2).join(`/`);return i.some(e=>e.host===n)?i.some(t=>t.host!==n&&a(t.repo)===a(e))&&n?`${n}:${a(e)}`:a(e):n?`${n}:${r}`:r}var YC=e=>e.startsWith(`root:`)?null:e.split(`/`).slice(-2).join(`/`);function XC(e,t){let n=qC(e.repo),r=t.filter(t=>t!==e&&qC(t.repo)===n);if(r.length===0)return n;let i=e.repoId,a=i?YC(i):null;return i&&a?r.some(e=>e.repoId&&e.repoId!==i&&YC(e.repoId)===a)?i:a:JC(e.repo,[e,...r].map(e=>({repo:e.repo,host:``})))}var ZC=/\s+#\d+\/\d+$/,QC=(e,t)=>(e.createdAt??``).localeCompare(t.createdAt??``)||e.id.localeCompare(t.id),$C=e=>e.groupId&&e.kind!==`main`?`${e.machine?.id??``}\0${e.groupId}`:null;function ew(e){let t=new Map;for(let n of e){let e=$C(n);if(e===null)continue;let r=t.get(e);r?r.push(n):t.set(e,[n])}for(let[e,n]of t)n.length<2?t.delete(e):n.sort(QC);return t}function tw(e){return(e[0]?.label??``).replace(ZC,``)}function nw(e){let t=e=>e.engine?.name??e.label,n=new Map;for(let r of e)n.set(t(r),(n.get(t(r))??0)+1);let r=new Map;return new Map(e.map(e=>{let i=t(e),a=(r.get(i)??0)+1;return r.set(i,a),[e.id,(n.get(i)??0)>1?`${i} #${a}`:i]}))}var rw=[`default`,`recent`,`attention`,`name`],iw={folded:new Set,opened:new Set},aw=e=>{let t=Date.parse(e??``);return Number.isFinite(t)?t:0},ow=e=>aw(e.updatedAt??e.createdAt),sw=e=>aw(e.createdAt),cw=(e,t)=>sw(t)-sw(e)||t.id.localeCompare(e.id),lw=(e,t)=>ow(t)-ow(e)||t.id.localeCompare(e.id),uw=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`}),dw={default:null,recent:cw,attention:(e,t)=>e.rank-t.rank||lw(e,t),name:(e,t)=>uw.compare(e.label.trim(),t.label.trim())||e.id.localeCompare(t.id)},fw=`~scratch`,pw=e=>e.kind===`dir`&&(e.scratch===!0||e.noProject===!0);function mw(e,t){return[...e].sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)).sort(_w(dw[t]))}function hw(e,t=`default`){let n=[...e].sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)),r=new Map;for(let e of n){let t=pw(e)?fw:e.repo,n=r.get(t);n?n.push(e):r.set(t,[e])}let i=dw[t],a=[...r].map(([e,t])=>{let n=t.sort(_w(i));if(e===`~scratch`&&t.every(pw))return{repo:``,label:z(`rail.noProject`),tasks:n,key:fw,noProject:!0};let r=t.find(e=>e.repoId)?.repoId;return{repo:e,label:qC(e),tasks:n,...r?{repoId:r}:{}}});return[...a.filter(e=>e.noProject),...a.filter(e=>!e.noProject)]}var gw=e=>e.kind===`main`?0:e.pinned?1:2,_w=e=>(t,n)=>gw(t)-gw(n)||(e?e(t,n):0);function vw(e,t){let n=new Set([e.id]);for(let r=e.parentTaskId;r!==void 0;r=t.get(r)?.parentTaskId){if(n.has(r))return r===e.id;n.add(r)}return!1}function yw(e){let t=new Map;for(let n of e)for(let e of n.tasks)t.set(e.id,e);let n=new Map,r=new Set;for(let e of t.values()){let i=e.parentTaskId;if(i===void 0||!t.has(i)||vw(e,t))continue;r.add(e.id);let a=n.get(i);a?a.push(e):n.set(i,[e])}return{children:n,nested:r}}function bw(e,t,n=[]){for(let r of e.get(t)??[])n.push(r.id),bw(e,r.id,n);return n}function xw(e,t,n,r){return r.folded.has(e)?!0:r.opened.has(e)||t<=5?!1:r.selectedId===void 0||!n.includes(r.selectedId)}function Sw(e,t=``,n=iw,r=0,i=!0){let a=t.trim(),o=(...e)=>e.some(e=>e!==``&&no(a,e)),{children:s,nested:c}=yw(e),l=[];for(let t of e){let e=a===``||o(t.label),u=t.machine===void 0?{}:{machine:t.machine},d=t.key??t.repo,f=t=>e||o(t.label,t.title,t.branch,qC(t.repo)),p=e=>f(e)||(s.get(e.id)??[]).some(p),m=(e,t,r,i=!1,o)=>{let c=r+1,l=t.machine?{machine:t.machine.id}:{},u=s.get(t.id),d=u?bw(s,t.id):[],m=u!==void 0&&a===``&&xw(t.id,u.length,d,n);e.push({id:t.id,kind:`task`,task:t,depth:Math.min(c,3),...c>3?{level:c}:{},...u?{fold:{count:d.length,collapsed:m,descendantIds:d}}:{},...o===void 0?{}:{attempt:o},...l});let g=i||f(t);m||h(e,(u??[]).filter(e=>g||p(e)),r+1,g)},h=(e,t,n,r)=>{let a=i?ew(t):new Map,o=new Set;for(let i of t){let t=$C(i),s=t===null?void 0:a.get(t);if(t===null||!s){m(e,i,n,r);continue}if(o.has(t))continue;o.add(t);let c=s[0];if(!c)continue;let l=n+1;e.push({id:`round:${c.machine?.id??``}:${c.groupId}`,kind:`round`,groupId:c.groupId??``,title:tw(s),tasks:s,depth:Math.min(l,3),...c.machine?{machine:c.machine.id}:{}});let u=nw(s);for(let t of s)m(e,t,n+1,r,u.get(t.id))}},g=[];h(g,t.tasks.filter(e=>!c.has(e.id)&&p(e)),r,!1),!(g.length===0&&!e)&&l.push({id:`project:${d}`,kind:`project`,repo:t.repo,label:t.label,...t.noProject?{noProject:!0}:{},...u},...g)}return l}var Cw=e=>Math.max(0,...e.tasks.map(sw));function ww(e){let t=e.tasks.filter(e=>!e.routine),n=e.remote.filter(e=>!e.routine),r=[...hw(t,e.sort).map(e=>({group:e})),...e.machines.flatMap(t=>hw(n.filter(e=>e.machine?.id===t.alias),e.sort).map(e=>({group:e,machine:t.alias})))],i=new Map;for(let e of r){let{repoId:t,repo:n}=e.group,r=e.group.noProject?fw:t??(e.machine===void 0?n:`${e.machine}\0${n}`),a=i.get(r);a?a.push(e):i.set(r,[e])}let a=dw[e.sort],o=new Map,s=[];for(let[e,t]of i){let n=t[0];if(!n)continue;let r=t.flatMap(e=>e.group.tasks),i=n.group.noProject===!0,c={repo:n.group.repo,label:i?n.group.label:``,key:e,tasks:t.length===1?n.group.tasks:r.sort(_w(a)),...n.group.repoId?{repoId:n.group.repoId}:{},...n.machine===void 0||i?{}:{machine:n.machine},...i?{noProject:!0}:{}};s.push(c);for(let e of t)o.set(e,c)}let c=new Map(s.map(e=>[e,e.noProject?e.label:XC(e,s)])),l=s.map(e=>({...e,label:c.get(e)??e.label}));return e.sort===`recent`&&l.sort((e,t)=>Cw(t)-Cw(e)),e.sort===`name`&&l.sort((e,t)=>uw.compare(e.label,t.label)),l.sort((e,t)=>Number(t.noProject===!0)-Number(e.noProject===!0)),{rows:Sw(l,e.query,e.fold),groups:r.filter(e=>e.machine===void 0).map(e=>{let t=o.get(e);return{...e.group,label:(t&&c.get(t))??e.group.label}})}}function Tw(e){return e.title??e.engineName??(e.kind===`engine`?z(`tab.engine`):z(`tab.shell`))}function Ew(e,t){if(t.size===0)return e;let n=!1;return e.filter(e=>e.kind===`project`||e.kind===`state`?(n=t.has(e.id),!0):!n)}function Dw(e){return e.kind===`leaf`?[e]:e.children.flatMap(Dw)}function Ow(e){return!!e&&Dw(e.root).length>1}function kw(e){let t=[],n=(e,r,i,a,o,s,c)=>{if(e.kind===`leaf`){t.push({id:e.id,x:r,y:i,w:a,h:o,left:s,top:c});return}let l=e.children.length;e.children.forEach((t,u)=>{e.orientation===`row`?n(t,r+a*u/l,i,a/l,o,u>0||s,c):n(t,r,i+o*u/l,a,o/l,s,u>0||c)})};return n(e,0,0,1,1,!1,!1),t}function Aw(e,t,n=1){let r=Dw(e.root).map(e=>e.id),i=r.indexOf(t);return r[(Math.max(0,i)+n+r.length)%r.length]??t}function jw(e,t){let n=new Map,r=new Map;for(let i of Dw(e.root)){if(i.title){r.set(i.id,i.title);continue}let e=i.own?t:`shell`,a=(n.get(e)??0)+1;n.set(e,a),r.set(i.id,a===1?e:`${e} ${a}`)}return r}function Mw(e,t,n){return e.kind===`engine`&&Dw(t.root).some(e=>e.id===n&&e.own)}function Nw(e){return e.alive!==!1||!!e.split&&!Dw(e.split.root).some(e=>e.own)}function Pw(e){return Dw(e.root).map(e=>e.id).join(`,`)}function Fw(e){return!(e instanceof HTMLElement)||e.closest(`.xterm`)?!1:e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName)}function Iw(e){return e instanceof HTMLElement&&!!e.closest(`.rail, button, a`)}var Lw=e=>e.tabs.get()[e.selection.get().taskId??``]??[];function Rw(e){let{taskId:t,tabId:n}=e.selection.get(),r=Lw(e);return{taskId:t,tabs:r,at:r.findIndex(e=>e.id===n)}}function zw(e,t){let{taskId:n,tabs:r}=Rw(e),i=r[t];!n||!i||e.select(n,i.id)}function Bw(e){let{taskId:t,tabs:n,at:r}=Rw(e),i=n[r];!t||!i||W.set((0,V.jsx)(ur,{title:z(`menu.renameTab`),initial:Tw(i),submitLabel:z(`dialog.save`),onSubmit:async n=>{await e.client.request(`tab.rename`,{taskId:t,tabId:i.id,title:n}),await e.refreshTabsNow()}}))}var Vw=e=>!!e.selection.get().taskId,Hw=e=>Lw(e).length>0,Uw=[{id:`help.open`,chords:[`f1`],prefix:!1,run:Mo},{id:`focus.next`,chords:[`f4`],prefix:!1,run:()=>Yi(1)},{id:`chat.tab.chooseEngine`,chords:[`ctrl+e`],prefix:!1,surface:`workspace`,live:Vw,run:e=>{let{taskId:t}=e.selection.get();t&&W.set((0,V.jsx)(KC,{model:e,taskId:t}))}},{id:`chat.tab.rename`,chords:[`f2`],prefix:!1,surface:`workspace`,live:e=>{let{tabs:t,at:n}=Rw(e);return!!t[n]&&!Ow(t[n]?.split)},run:Bw},{id:`chat.tab.cycle-next`,chords:[`ctrl+]`],prefix:!1,surface:`workspace`,live:Hw,run:e=>zw(e,(Rw(e).at+1)%Lw(e).length)},{id:`chat.tab.cycle-prev`,chords:[`ctrl+[`],prefix:!1,surface:`workspace`,live:Hw,run:e=>zw(e,(Rw(e).at-1+Lw(e).length)%Lw(e).length)},{id:`chat.tab.goto`,chords:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`].map(e=>`ctrl+${e}`),prefix:!1,surface:`workspace`,live:Hw,run:(e,t=``)=>{let n=$i().find(e=>e.id===`chat.tab.goto`&&!e.prefix)?.chords.indexOf(t)??-1;n>=0&&zw(e,n)}},{id:`attention.next`,chords:[`f7`],prefix:!1,run:e=>Gw(e)}];Zi(()=>Uw);function Ww(e){(0,g.useEffect)(()=>{let t=t=>{if(W.get()||Fw(t.target))return;let n=un.get();if(n===`worktrees`)return;let r=na()??(Vw(e)?`workspace`:`sidebar`),{taskId:i}=e.selection.get();if(!n&&i&&!t.ctrlKey&&!t.shiftKey&&!t.metaKey&&!t.altKey&&t.key===`Enter`&&!Hw(e)&&!Iw(t.target)){t.preventDefault(),t.stopPropagation(),W.set((0,V.jsx)(KC,{model:e,taskId:i}));return}let a=Qa(t),o=$i().filter(t=>!t.prefix&&!t.native&&t.chords.some(e=>a.includes(e))&&ea(t,r)&&!(n&&t.surface)&&t.live?.(e)!==!1).sort((e,t)=>ta(e,r)-ta(t,r))[0];o&&(t.preventDefault(),t.stopPropagation(),o.run(e,a.find(e=>o.chords.includes(e))))};return window.addEventListener(`keydown`,t,{capture:!0}),()=>window.removeEventListener(`keydown`,t,{capture:!0})},[e])}function Gw(e){let t=e.tasks.get();if(!t)return;let n=Vo(t.attention,t.tasks.map(e=>e.id),e.selection.get());if(!n){G(z(`inbox.empty`));return}if(Ro(n.state)){Fo(e,n);return}n.taskId!==null&&(e.select(n.taskId,n.tabId),e.client.request(`attention.dismiss`,{taskId:n.taskId,...n.tabId?{tabId:n.tabId}:{}}).catch(e=>G(String(e),`error`)))}async function Kw(e,t){try{if(t.kind===`action`){await e.client.request(`plugin.chordAction`,{chord:t.chord});return}let{taskId:n,tabId:r}=e.selection.get();if(!n){G(z(`keys.pluginNoTask`),`error`);return}let i=await e.client.request(`plugin.paneOpen`,{taskId:n,pane:t.target,...r?{tabId:r}:{}});await e.refreshTabsNow(),e.select(n,i.tabId)}catch(e){G(K(e),`error`)}}function qw(e){(0,g.useEffect)(()=>{let t=t=>{let n=Xr.get().plugins;if(n.length===0||!li({dialog:W.get()!==null,page:un.get()})||Fw(t.target))return;let r=ci(n,Qa(t));r&&(t.preventDefault(),t.stopImmediatePropagation(),Kw(e,r))};return window.addEventListener(`keydown`,t,{capture:!0}),()=>window.removeEventListener(`keydown`,t,{capture:!0})},[e])}var Jw=`prefix.moreCommands`,Yw=/^ctrl\+[^+]+$/;function Xw(e){return Yw.test(e)?e.slice(5):null}function Zw(e){let t=to(e.bindingId);if(!t)return null;if(e.reachability.direct.has(e.bindingId)){let e=t.keys[0];if(e)return Yr(e)}if(e.prefixKey&&e.reachability.prefix.has(e.bindingId)){let n=t.prefixKeys?.[0];if(n)return`${Yr(e.prefixKey)} ${Yr(n)}`}return null}function Qw(e,t){let n=Gr.filter(t=>e.direct.has(t.id)).flatMap(e=>{let t=e.keys.flatMap(e=>Xw(e)??[]);return t.length>2?[{stroke:`${t[0]}-${t.at(-1)}`,action:e.id}]:t.map(t=>({stroke:t,action:e.id}))}),r=t?Xw(t):null;return r&&e.prefix.size>0&&n.push({stroke:r,action:Jw}),n}var $w=4e3,eT=180,tT=$w,nT=_({guide:null,entries:[]}),rT=1;function iT(e,t){let n={id:rT++,stroke:e,action:t,at:Date.now()};nT.set({guide:null,entries:[...nT.get().entries,n].slice(-3)})}var aT=8,oT=32,sT=600,cT=100,lT=new WeakMap,uT=null;function dT(e){let t=lT.get(e);return t||(t={entries:new Map,snapshots:new Map,left:null},lT.set(e,t)),t}function fT(){return uT||(uT=document.createElement(`div`),uT.style.display=`none`,document.body.append(uT)),uT}function pT(e,t,n){e.snapshots.delete(t),e.snapshots.set(t,n);for(let t of e.snapshots.keys()){if(e.snapshots.size<=oT)break;e.snapshots.delete(t)}}function mT(e,t,n){e.entries.delete(t.key),t.leaving!==null&&window.clearTimeout(t.leaving),t.leaving=null,n?pT(e,t.key,t.handle.snapshot()):e.snapshots.delete(t.key),t.handle.dispose(),t.box.remove()}function hT(e){let t=[...e.entries.values()].filter(e=>e.slot.parkedAt!==null);t.sort((e,t)=>(e.slot.parkedAt??0)-(t.slot.parkedAt??0));for(let n of t.slice(0,Math.max(0,t.length-aT)))mT(e,n,!0)}function gT(e,t,n,r){return dT(e).entries.get(DC(t,n,r))?.slot.parkedAt!=null}function _T(e,t){let n=dT(e.client),r=DC(e.taskId,e.tabId,e.leafId),i=n.entries.get(r);if(i&&i.slot.parkedAt!==null){let{slot:r,handle:a,box:o}=i;return r.parkedAt=null,r.binding=t,i.leaving!==null&&(window.clearTimeout(i.leaving),i.leaving=null,o.classList.remove(`is-leaving`)),n.left=null,xT(n),e.host.append(o),t.setNotice(r.notice),t.onScrolled(r.scrolled),a.term.refresh(0,a.term.rows-1),e.focusOnMount&&a.term.focus(),{handle:a,release:()=>vT(n,i)}}let a=document.createElement(`div`);a.className=Nt,e.host.append(a),yT(n,e.host);let o=!i,s={binding:t,notice:{kind:`none`},scrolled:0,parkedAt:null},c=null,l=o?n.snapshots.get(r):void 0;l&&n.snapshots.delete(r);let u=MC({...e,el:a,snapshot:l,onPainted:()=>xT(n),setNotice:e=>{s.notice=e,s.binding?.setNotice(e)},onScrolled:e=>{s.scrolled=e,s.binding?.onScrolled(e)},onFocusChange:e=>s.binding?.onFocusChange(e),onExit:e=>{s.binding?s.binding.onExit(e):c&&n.entries.get(r)===c&&mT(n,c,!1)},copyText:e=>s.binding?.copyText(e)??Promise.resolve(!1),pasteImage:()=>s.binding?.pasteImage()??Promise.resolve()});if(!o)return{handle:u,release:()=>{u.dispose(),a.remove()}};let d={key:r,handle:u,box:a,slot:s,leaving:null};return c=d,n.entries.set(r,d),{handle:u,release:()=>vT(n,d)}}function vT(e,t){let{slot:n}=t;e.entries.get(t.key)===t&&n.parkedAt===null&&(n.binding?.onFocusChange(!1),n.binding=null,t.handle.term.blur(),n.parkedAt=performance.now(),fT().append(t.box),e.left=t,hT(e))}function yT(e,t){let n=e.left;e.left=null,!(!n||n.slot.parkedAt===null||performance.now()-n.slot.parkedAt>cT)&&e.entries.get(n.key)===n&&(n.box.classList.add(`is-leaving`),t.append(n.box),n.leaving=window.setTimeout(()=>bT(e,n),sT))}function bT(e,t){t.leaving!==null&&(window.clearTimeout(t.leaving),t.leaving=null,t.box.classList.remove(`is-leaving`),e.entries.get(t.key)===t&&t.slot.parkedAt!==null&&fT().append(t.box))}function xT(e){for(let t of e.entries.values())bT(e,t)}async function ST(e,t,n){return Ho(await e.request(`output.read`,{taskId:t,tab:n,source:`terminal`,limit:12}))}async function CT(e,t,n,r){try{let i=await e.client.request(`tab.send`,{taskId:t,tabId:n,prompt:r,queue:!0});return!i.delivered&&!i.queued?(G(z(`layout.composerNotSent`,{reason:i.reason??``}),`error`),!1):(i.queued&&G(z(`layout.composerQueued`,{position:i.position??1})),!0)}catch(e){let t=e instanceof d_?e.code:void 0;return G(t===`UNKNOWN_OP`?z(`layout.composerOldBridge`):t===`AWAITING_PERMISSION`?z(`layout.composerAtMenu`):e instanceof Error?e.message:String(e),`error`),!1}}async function wT(e,t,n,r){let{client:i}=e,a=DC(t,n),o=ca(a)!==void 0||gT(i,t,n);try{return o||await i.request(`term.attach`,{taskId:t,tabId:n}),await i.request(`term.input`,{stream:a,data:r}),!0}catch(e){return G(e instanceof Error?e.message:String(e),`error`),!1}finally{o||await i.request(`term.detach`,{stream:a}).catch(()=>{})}}async function TT(e,t,n){try{return(await e.client.request(`gate.answer`,{gateId:t,...n})).delivered||G(z(`inbox.gateKept`)),!0}catch(e){return G(e instanceof Error?e.message:String(e),`error`),!1}}var ET=`mx-2.5 mt-0.5 mb-1.5 flex min-w-0 flex-col gap-1.5 font-mono text-meta`,DT=2e3;function OT(e,t,n){let[r,i]=(0,g.useState)(null),[a,o]=(0,g.useState)(0);return(0,g.useEffect)(()=>{if(!n)return;let r=!0,a=0,o=async()=>{try{let a=await ST(e.client,t,n);r&&i(a)}catch{r&&i(e=>e??[])}r&&(a=window.setTimeout(o,DT))};return o(),()=>{r=!1,window.clearTimeout(a)}},[e,t,n,a]),{lines:r,refresh:()=>o(e=>e+1)}}function kT(e){B();let{model:t,taskId:n,tabId:r,mode:i,gate:a}=e,{lines:o,refresh:s}=OT(t,n,r),c=(0,g.useRef)(null),[l,u]=(0,g.useState)(``),[d,f]=(0,g.useState)(!1);(0,g.useEffect)(()=>{let e=c.current;e&&(e.scrollTop=e.scrollHeight)},[o]);let p=async e=>{f(!0);let t=await e();return f(!1),t&&window.setTimeout(s,600),t},m=async()=>{let e=l.trim();!e||d||await p(()=>i===`gate`&&a?TT(t,a.id,{text:e}):r?CT(t,n,r,e):Promise.resolve(!1))&&u(``)};return(0,V.jsxs)(`div`,{className:ET,children:[a&&(0,V.jsx)(`p`,{className:`m-0 whitespace-pre-wrap wrap-anywhere text-ink`,children:a.question}),r&&(0,V.jsx)(`pre`,{ref:c,className:`m-0 max-h-60 overflow-y-auto rounded-sm border-hairline border-line bg-inset px-2 py-1.5 text-ink whitespace-pre-wrap wrap-anywhere`,"data-peek-lines":12,children:o===null?`…`:o.length===0?z(`inbox.noOutput`):o.join(`
|
|
111
|
-
`)}),i===`gate`&&a&&(0,V.jsx)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:a.options.map(e=>(0,V.jsxs)(H,{disabled:d,title:e.detail,onClick:()=>void p(()=>TT(t,a.id,{option:e.key})),children:[`[ `,e.key===a.recommended?`★ `:``,e.label,` ]`]},e.key))}),i===`menu`&&r&&(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[Dv.map(e=>(0,V.jsxs)(H,{disabled:d,onClick:()=>void p(()=>wT(t,n,r,e.bytes(!1))),children:[`[ `,e.cap,` ]`]},e.id)),(0,V.jsx)(H,{onClick:e.onOpenTab,children:z(`inbox.openTab`)})]}),(i===`reply`||i===`gate`)&&(0,V.jsxs)(`form`,{className:`flex min-w-0 items-center gap-2`,onSubmit:e=>{e.preventDefault(),m()},children:[(0,V.jsx)(`input`,{className:`min-w-0 flex-1 rounded-sm border-hairline border-line bg-paper px-2 py-1.5 font-mono text-ink focus-visible:border-line-active focus-visible:outline-none touch:min-h-10 touch:text-display`,value:l,disabled:d,placeholder:z(`inbox.replyPlaceholder`),"aria-label":z(`inbox.replyPlaceholder`),autoComplete:`off`,enterKeyHint:`send`,onChange:e=>u(e.target.value)}),(0,V.jsx)(H,{type:`submit`,disabled:d||l.trim()===``,children:z(`inbox.send`)})]})]})}function AT({text:e}){return(0,V.jsx)(`span`,{className:`inline-flex flex-wrap gap-x-3 gap-y-0`,children:e.split(`·`).map(e=>e.trim()).filter(Boolean).map(e=>(0,V.jsx)(`span`,{children:e},e))})}var jT={accent:`text-accent`,muted:`text-subtle`,attention:`text-error`,warning:`text-warning`,info:`text-info`,success:`text-success`,added:`text-diff-added`,removed:`text-diff-removed`},MT={accent:`text-accent`,muted:`text-subtle`,attention:`text-error`,warning:`text-warning`,success:`text-success`,info:`text-accent`,ink:`text-ink`},NT=6;function PT(e,t){return e?`${e.repo.split(`/`).filter(Boolean).pop()??e.repo} › ${e.label}`:t}function FT({model:e}){B();let t=v(e.tasks),n=v(e.visits),r=v(e.tabs),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(Date.now());(0,g.useEffect)(()=>{let e=window.setInterval(()=>l(Date.now()),3e4);return()=>window.clearInterval(e)},[]);let u=new Map((t?.tasks??[]).map(e=>[e.id,e])),d=(e,t)=>e&&t&&r[e]?.find(e=>e.id===t)?.title||``,f=Bo(t?.attention??[],t?.tasks.map(e=>e.id)??[]).map((e,t)=>{let n=e.taskId?u.get(e.taskId):void 0;return{key:`a${t}:${e.taskId}:${e.tabId}`,section:`attention`,taskId:e.taskId,tabId:e.tabId,identity:PT(n,e.label??e.taskId??``),subtitle:d(e.taskId,e.tabId)||n?.branch||``,at:e.at,attention:e}}),p=new Set(f.map(e=>`${e.taskId}:${e.tabId}`)),m=n.filter(e=>u.has(e.taskId)&&!p.has(`${e.taskId}:${e.tabId}`)).slice(0,NT).map(e=>({key:`r:${e.taskId}:${e.tabId}`,section:`recent`,taskId:e.taskId,tabId:e.tabId,identity:PT(u.get(e.taskId),e.taskId),subtitle:d(e.taskId,e.tabId)||u.get(e.taskId)?.branch||``,at:e.at})),h=[...f,...m],_=h[Math.min(i,h.length-1)],y=async t=>{if(t.attention&&Ro(t.attention.state))return Po(e,t.attention);!t.attention?.taskId||t.attention.gateId||await e.client.request(`attention.dismiss`,{taskId:t.attention.taskId,...t.tabId?{tabId:t.tabId}:{}}).catch(e=>G(String(e),`error`))},b=t=>{if(t.attention&&Ro(t.attention.state))return Fo(e,t.attention);t.attention&&y(t),t.taskId&&u.has(t.taskId)&&(e.select(t.taskId,t.tabId),Cn())};(0,g.useEffect)(()=>{let e=e=>{if(!(e.target instanceof HTMLElement&&e.target.closest(`input, textarea`))){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(h.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`Enter`&&_)b(_);else if(e.key===`d`&&_?.attention)y(_);else return;e.preventDefault()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});let x=n=>{let r=n.attention?Io(n.attention.state):null,i=n===_,l=n.attention,d=n.taskId?u.get(n.taskId):void 0,f=l?.gateId?t?.gates?.find(e=>e.id===l.gateId&&e.status===`open`):void 0,p=n.tabId??f?.tabId??null,m=!!l&&!!d&&!d.machine&&!Ro(l.state)&&(!l.gateId||!!f)&&(!!p||!!f),g=l?.state===`permission_needed`||!!p&&d?.tabStatus?.[p]?.kind===`needs-input`,v=f?`gate`:l?.state===`dead`?`readonly`:g?`menu`:`reply`,y=`${n.taskId}:${n.tabId}:${l?.gateId??``}`,x=m&&o===y;return(0,V.jsxs)(`li`,{children:[(0,V.jsxs)(`div`,{className:Qn,children:[(0,V.jsxs)(`button`,{type:`button`,className:`${nr({selected:i,stack:!0})} ${$n}`,onMouseEnter:()=>a(h.indexOf(n)),onClick:()=>b(n),children:[(0,V.jsxs)(`span`,{className:Xn,children:[(0,V.jsx)(`span`,{className:rr,children:n.identity}),r&&(0,V.jsxs)(`span`,{className:`flex-none font-mono text-meta font-normal normal-nums ${MT[r.tone]}`,children:[r.glyph,` `,z(r.stateKey)]}),(0,V.jsx)(`span`,{className:Zn,children:Lo(c-n.at)})]}),n.subtitle&&(0,V.jsx)(`span`,{className:`truncate font-mono text-meta font-normal normal-nums text-muted`,children:n.subtitle})]}),m&&(0,V.jsx)(H,{className:`flex-none whitespace-nowrap pr-2 font-mono text-meta`,"aria-expanded":x,onClick:()=>{a(h.indexOf(n)),s(x?null:y)},children:z(x?`inbox.hide`:`inbox.reply`)})]}),x&&n.taskId&&(0,V.jsx)(kT,{model:e,taskId:n.taskId,tabId:p,mode:v,gate:f,onOpenTab:()=>b(n)})]},n.key)};return(0,V.jsx)(cr,{title:z(`inbox.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsx)(`p`,{className:`${U} text-muted ${qn} touch:hidden!`,children:(0,V.jsx)(AT,{text:z(`inbox.hints`)})}),(0,V.jsx)(`h2`,{className:`${U} text-muted ${Jn}`,children:z(`inbox.attention`)}),f.length===0?(0,V.jsx)(`p`,{className:`mono text-muted`,children:z(`inbox.empty`)}):(0,V.jsx)(`ul`,{className:Yn,children:f.map(x)}),m.length>0&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted mt-1`,children:z(`inbox.recent`)}),(0,V.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-0.5 p-0`,children:m.map(x)})]})]})})}var IT=[`project`,`state`],LT=`rove.railGroup`,RT=_(IT.find(e=>e===localStorage.getItem(LT))??`project`);function zT(e){RT.set(e),localStorage.setItem(LT,e)}var BT=`rove.activeSortMode`;function VT(){let e=localStorage.getItem(BT);return rw.find(t=>t===e)??`recent`}var HT=_(VT());function UT(e){HT.set(e),localStorage.setItem(BT,e)}function WT(){UT(rw[(rw.indexOf(HT.get())+1)%rw.length]??`default`)}var GT=_(!1),KT=_(null);function qT(e){e&&(HT.get()!=="default"||RT.get()===`state`)&&(UT(`default`),zT(`project`),G(q(`tasks`,`sort.reorderSwitched`))),e||KT.set(null),GT.set(e)}async function JT(e,t,n){let r=n<0?`up`:`down`;try{await e.client.request(`task.move`,{taskId:t.task.id,direction:r})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}}async function YT(e,t,n){let r=n<0?`up`:`down`;try{for(let i=0;i<Math.abs(n);i++)await e.client.request(`task.move`,{taskId:t,direction:r})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}}async function XT(e,t,n){if(n.pin!==void 0)try{await e.client.request(`task.pin`,{taskId:t,pinned:n.pin})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`);return}await YT(e,t,n.steps)}var ZT=`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,QT=`before:absolute before:top-0 before:left-1 before:content-[''] before:[border-left:var(--hairline)_solid_var(--line-active)]`,$T={blank:``,pipe:`${QT} before:bottom-0`,tee:`${QT} before:bottom-0`,elbow:`${QT} before:right-0 before:bottom-1/2 before:rounded-bl-[6px] before:[border-bottom:var(--hairline)_solid_var(--line-active)]`},eE=e=>`relative w-3 ${$T[e]}`,tE=`-mx-1 inline-flex min-w-6 cursor-pointer items-center justify-center gap-1 self-stretch rounded-xs px-2 font-mono hover:bg-hover`,nE=`inline-flex items-center gap-1`,rE=e=>`fixed z-35 flex max-h-[min(380px,60vh)] w-85 max-w-[calc(100vw-24px)] animate-pr-list-in flex-col overflow-y-auto overscroll-contain rounded-md border-hairline border-line bg-surface p-1.5 shadow-popover transition-[opacity,translate] duration-120 ease-in motion-reduce:animate-none motion-reduce:transition-none ${e?`-translate-x-1 opacity-0`:``}`,iE=`pointer-events-none fixed z-35 max-w-80 -translate-y-1/2 animate-row-tip-in rounded-sm border-hairline border-line bg-inset px-2.5 py-1.5 text-meta leading-[1.4] whitespace-normal wrap-anywhere text-ink shadow-popover motion-reduce:animate-none`,aE=`inline-flex flex-none items-center text-subtle`,oE=`group/rail rail @container row-1 flex min-h-0 flex-col focus:outline-none ${He}`,sE=`flex min-w-0 items-center gap-2.5 overflow-hidden px-3.5 pt-3.5 pb-2.5 whitespace-nowrap`,cE=`flex gap-1 px-3.5 pb-2 text-meta`,lE=`flex flex-col gap-0.5 px-3.5 pb-2 font-mono text-meta`,uE=`flex items-center justify-between gap-2.5 text-muted`,dE=`flex flex-wrap items-center gap-x-1.5 gap-y-0.5`,fE=e=>`${e?`text-accent`:`text-ink`} hover:underline`,pE=`min-w-0 flex-1 border-none bg-transparent p-0 text-ink [font:inherit] outline-none placeholder:text-subtle`,mE=e=>`flex-1 overflow-y-auto px-1.5 pt-1 pb-3 scrollbar-none ${e?`[&>[data-row]]:[transition:transform_150ms_ease-out] motion-reduce:[&>[data-row]]:transition-none`:``}`,hE=`group-focus-within/rail:[box-shadow:inset_0_0_0_1px_var(--focus)]`,gE=e=>`group/head mx-2 mt-1.5 mb-1 flex items-center gap-1 font-mono text-meta font-semibold normal-nums text-subtle not-first:mt-4.5 ${e.moving||e.dragging?`bg-accent-soft`:``} ${e.moving?`after:font-mono after:text-meta after:font-medium after:normal-nums after:text-accent after:content-['move']`:``}`,_E=`touch:relative touch:after:absolute touch:after:-inset-x-1.5 touch:after:-inset-y-3 touch:after:content-['']`,vE=`group/toggle -ml-1 inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-xs border-none bg-transparent px-1 py-0.5 text-inherit [font:inherit] hover:text-ink ${_E}`,yE=e=>e?``:`opacity-0 group-hover/head:opacity-100 group-focus-visible/toggle:opacity-100 touch:opacity-100`,bE=`-mr-[4.5px] ml-auto size-5 cursor-pointer rounded-xs border-none bg-transparent text-muted opacity-0 [font:400_var(--fs-display)/1_var(--sans)] group-hover/head:opacity-100 hover:bg-hover hover:text-ink focus-visible:opacity-100 touch:opacity-100 ${_E}`,xE=1e4;function SE(e,t){let n=e.hostLabel||e.alias;if(e.state===`online`)return e.version?`${n} · v${e.version}`:n;let r=t[e.state];return e.state===`mismatch`?e.version?`${n} · ⚠ v${e.version} (${r})`:`${n} · ⚠ ${r}`:`${n} · ${r}`}function CE(e,t,n,r=e){let i=t?.hostLabel&&t.hostLabel!==e?` (${t.hostLabel})`:``,a=n.runsOn.replace(`{host}`,t?`${e}${i}`:r);return!t||t.state===`online`?a:`${a}${SE(t,n).slice((t.hostLabel||t.alias).length)}`}function wE(e,t,n){if(e.kind!==`task`||e.machine===void 0)return null;let r=e.machine;return CE(r,t.find(e=>e.alias===r),n,e.task.machine?.label)}function TE({label:e}){return(0,V.jsx)(`span`,{className:aE,title:e,role:`img`,"aria-label":e,children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,width:`12`,height:`12`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M4.5 13a3 3 0 0 1-.4-5.97A4.5 4.5 0 0 1 12.8 6.6 3.2 3.2 0 0 1 12.3 13Z`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinejoin:`round`})})})}function EE({host:e,onMachines:t}){return B(),(0,V.jsxs)(`div`,{className:qt,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`machine.filesElsewhere`,{host:e})}),(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`machine.filesHint`,{host:e})}),(0,V.jsx)(`div`,{children:(0,V.jsx)(H,{hit:`tight`,onClick:t,children:z(`machines.open`)})})]})}function DE(e){let t=v(e.client.conn),n=v(e.remote),[r,i]=(0,g.useState)(()=>Hs(e,`machines.list`)?.machines??[]),a=[...new Set(n.map(e=>`${e.machine?.id}:${e.machine?.stale??!1}`))].join();return(0,g.useEffect)(()=>{if(t.state!==`open`)return;let n=!0,r=()=>Ws(e,`machines.list`).then(e=>n&&i(e.machines),()=>{});r();let a=window.setInterval(r,xE);return()=>{n=!1,window.clearInterval(a)}},[e.client,t.state,a]),r}var OE=`flex min-h-0 min-w-0 flex-1 flex-col p-4 font-mono text-meta leading-[1.5] font-normal not-italic normal-nums`,kE=`flex flex-1 flex-col items-center justify-center gap-1.5 text-center`,AE=`mx-auto flex w-full max-w-[104ch] flex-col gap-2`,jE=`flex flex-col gap-2 rounded-md border-hairline border-line bg-surface px-3 py-2.5 focus-within:border-line-active`,ME=`flex flex-wrap items-center justify-end gap-1.5`,NE=`max-h-[40vh] min-h-[4.5em] w-full bg-transparent text-ink [border:0] [outline:0]`,PE=`flex flex-wrap items-center gap-1.5 px-1`,FE=`flex-1`,IE=`size-3.25 flex-none fill-none stroke-current [stroke-linecap:round] [stroke-linejoin:round] [stroke-width:1.3]`,LE=(e=!1)=>`inline-flex max-w-[28ch] items-center gap-1.5 overflow-hidden rounded-full border-hairline px-2.5 py-0.75 text-ellipsis whitespace-nowrap touch:py-1.75 [&:hover]:bg-hover [&:hover]:text-ink aria-expanded:bg-hover aria-expanded:text-ink ${e?`border-[color-mix(in_srgb,var(--accent)_45%,transparent)] bg-accent-soft text-accent`:`border-line text-muted`}`,RE=`disabled:cursor-default disabled:opacity-60`,zE=`group/chip relative inline-flex`,BE=`flex min-h-0 flex-col gap-1 overflow-y-auto p-1.5 [outline:0]`,VE=`flex min-h-0 flex-col overflow-y-auto`,HE=`sticky top-0 z-1 m-0 bg-surface px-1.5 pt-1.5 pb-0.5 text-left`,UE=e=>`flex w-full items-baseline gap-2 rounded-[calc(var(--radius)-6px)] px-2 py-1 text-left touch:py-2.5 disabled:cursor-default disabled:opacity-50 ${e.dim?`text-subtle`:`text-ink`} ${e.cursor?`bg-hover`:``}`,WE=`flex-[0_0_1.5ch] text-accent`,GE=`ml-auto pl-3 inline-flex items-center gap-1`,KE=`flex-none whitespace-nowrap`,qE=`flex flex-col gap-0.5 px-1.5 py-0.5`,JE=`min-w-[36ch]`,YE=`flex items-center gap-1.5 p-1.5`;function XE(){return(0,V.jsx)(`svg`,{className:IE,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`})})}function ZE(){return(0,V.jsxs)(`svg`,{className:IE,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`circle`,{cx:`4.5`,cy:`3.5`,r:`1.5`}),(0,V.jsx)(`circle`,{cx:`4.5`,cy:`12.5`,r:`1.5`}),(0,V.jsx)(`circle`,{cx:`11.5`,cy:`5`,r:`1.5`}),(0,V.jsx)(`path`,{d:`M4.5 5v6M11.5 6.5c0 3-7 2-7 4.5`})]})}function QE(){return(0,V.jsx)(`svg`,{className:IE,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10.5 4.5 5.8 9.2a1.4 1.4 0 0 0 2 2l5-5a2.8 2.8 0 0 0-4-4l-5.2 5.2a4.2 4.2 0 0 0 6 6L13 9`})})}function $E(){return(0,V.jsxs)(`svg`,{className:IE,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.75`}),(0,V.jsx)(`path`,{d:`M8 4.75V8l2.25 1.5`})]})}function eD(e){let[t,n]=(0,g.useState)(!1),r=(0,g.useRef)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null);(0,g.useLayoutEffect)(()=>{let e=a.current;if(!t||!e)return;let n=e.getBoundingClientRect(),r=n.right>window.innerWidth-8?window.innerWidth-8-n.right:n.left<8?8-n.left:0;r&&(e.style.transform=`translateX(${Math.round(r)}px)`)},[t]);let o=()=>{n(!1),i.current?.focus()};return(0,g.useEffect)(()=>{if(!t)return;let e=e=>{r.current?.contains(e.target)||n(!1)};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[t]),(0,V.jsxs)(`span`,{ref:r,className:zE,onKeyDown:e=>{e.key!==`Escape`||!t||(e.preventDefault(),e.stopPropagation(),o())},children:[(0,V.jsx)(`button`,{ref:i,type:`button`,className:LE(),"data-field":e.field,title:e.title,"aria-haspopup":`menu`,"aria-expanded":t,disabled:e.disabled,onClick:()=>n(e=>!e),children:e.label}),t&&(0,V.jsx)(`div`,{ref:a,className:`absolute bottom-[calc(100%+6px)] left-0 z-20 flex max-h-[min(50vh,420px)] max-w-[min(52ch,calc(100vw-16px))] min-w-[min(34ch,calc(100vw-16px))] flex-col overflow-hidden rounded-md border-hairline border-line-active bg-surface shadow-popover group-last-of-type/chip:right-0 group-last-of-type/chip:left-auto`,children:e.children(o)})]})}function tD(e){let[t,n]=(0,g.useState)(0),r=[...e.extra?[e.extra]:[],...e.rows,...e.more??[]],i=Math.min(t,Math.max(0,r.length-1)),a=(0,g.useRef)(null);return(0,g.useEffect)(()=>{a.current?.scrollIntoView({block:`nearest`})},[i,e.rows]),(0,V.jsxs)(`div`,{className:BE,children:[(0,V.jsx)(`input`,{className:nn,autoFocus:!0,spellCheck:!1,placeholder:e.placeholder,value:e.query,onChange:t=>{n(0),e.onQuery(t.target.value)},onKeyDown:t=>{if(!t.nativeEvent.isComposing){if(t.key===`ArrowDown`||t.key===`ArrowUp`)t.preventDefault(),n(Math.max(0,Math.min(r.length-1,i+(t.key===`ArrowDown`?1:-1))));else if(t.key===`Enter`){t.preventDefault();let n=r[i];n&&e.onPick(n.key)}}}}),(0,V.jsxs)(`div`,{className:VE,children:[r.length===0&&(0,V.jsx)(`p`,{className:`mx-2 my-1 text-muted`,children:e.empty}),r.map((t,r)=>(0,V.jsxs)(g.Fragment,{children:[e.moreLabel&&t===e.more?.[0]&&(0,V.jsx)(`p`,{className:`mx-2 mt-2 mb-0.5 text-muted`,children:e.moreLabel}),(0,V.jsxs)(`button`,{type:`button`,"aria-current":t.checked===!0,ref:r===i?a:void 0,tabIndex:-1,title:t.title,className:UE({cursor:r===i}),onMouseMove:()=>n(r),onClick:()=>e.onPick(t.key),children:[(0,V.jsx)(`span`,{className:WE,children:t.checked?`✓`:``}),(0,V.jsx)(`span`,{className:KE,children:t.text}),t.dim&&(0,V.jsx)(`span`,{className:`ml-auto pl-3 text-muted ${t.title?`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`:``}`,children:t.dim})]})]},t.key))]})]})}function nD(e){return(0,V.jsxs)(`button`,{type:`button`,role:e.multi?`menuitemcheckbox`:`menuitemradio`,"aria-checked":e.checked,tabIndex:-1,disabled:e.option.disabled,className:UE({cursor:e.cursor,dim:e.option.dim}),onMouseMove:e.onHover,onClick:e.onPick,children:[(0,V.jsx)(`span`,{className:WE,children:e.checked?`✓`:``}),(0,V.jsx)(`span`,{children:e.option.label}),!e.checked&&e.digit!==void 0&&!e.option.disabled&&(0,V.jsx)(`span`,{className:`ml-auto pl-3 text-muted`,children:e.digit})]})}function rD(e){let[t,n]=(0,g.useState)(()=>Math.max(0,e.options.findIndex(t=>t.id===e.value))),r=(0,g.useRef)(null);return(0,g.useEffect)(()=>r.current?.focus(),[]),(0,V.jsxs)(`div`,{ref:r,role:`menu`,tabIndex:-1,className:BE,onKeyDown:r=>{if(!(r.ctrlKey||r.metaKey||r.altKey||r.nativeEvent.isComposing)){if(r.key===`ArrowDown`||r.key===`ArrowUp`)r.preventDefault(),n(Math.max(0,Math.min(e.options.length-1,t+(r.key===`ArrowDown`?1:-1))));else if(r.key===`Enter`){r.preventDefault();let n=e.options[t];n&&!n.disabled&&e.onPick(n.id)}else if(e.onBack&&(r.key===`Escape`||r.key===`ArrowLeft`))r.preventDefault(),r.stopPropagation(),e.onBack();else{let t=e.digits?Ns(r.key,e.options.length):null,n=t===null?void 0:e.options[t];if(!n||n.disabled)return;r.preventDefault(),e.onPick(n.id)}}},children:[e.onBack?(0,V.jsxs)(`button`,{type:`button`,className:`${HE} ${U} text-muted`,tabIndex:-1,onClick:e.onBack,children:[`‹ `,e.heading]}):(0,V.jsx)(`p`,{className:`${HE} ${U} text-muted`,children:e.heading}),e.options.map((r,i)=>(0,V.jsx)(nD,{option:r,checked:e.values?e.values.includes(r.id):r.id===e.value,multi:e.values!==void 0,cursor:i===t,digit:e.digits&&i<9?i+1:void 0,onHover:()=>n(i),onPick:()=>e.onPick(r.id)},r.id)),e.footer]})}function iD(e){let[t,n]=(0,g.useState)(`root`),r=e.models.length+ +(e.efforts.length>0),[i,a]=(0,g.useState)(()=>Math.max(0,e.models.findIndex(t=>t.id===e.model))),o=(0,g.useRef)(null);if((0,g.useEffect)(()=>{t===`root`&&o.current?.focus()},[t]),t===`effort`)return(0,V.jsx)(rD,{heading:z(`newSession.effort`),options:e.efforts,value:e.effort,onBack:()=>n(`root`),onPick:t=>{e.onEffort(t),e.close()}});let s=t=>{e.onModel(t),e.close()},c=e.efforts.find(t=>t.id===e.effort)?.label??``;return(0,V.jsxs)(`div`,{ref:o,role:`menu`,tabIndex:-1,className:BE,onKeyDown:t=>{if(!(t.ctrlKey||t.metaKey||t.altKey||t.nativeEvent.isComposing)){if(t.key===`ArrowDown`||t.key===`ArrowUp`)t.preventDefault(),a(Math.max(0,Math.min(r-1,i+(t.key===`ArrowDown`?1:-1))));else if(t.key===`Enter`||t.key===`ArrowRight`&&i>=e.models.length){t.preventDefault();let r=e.models[i];r?s(r.id):e.efforts.length>0&&n(`effort`)}else{let n=Ns(t.key,e.models.length),r=n===null?void 0:e.models[n];if(!r)return;t.preventDefault(),s(r.id)}}},children:[(0,V.jsx)(`p`,{className:`${HE} ${U} text-muted`,children:z(`newSession.modelHeading`)}),e.models.map((t,n)=>(0,V.jsx)(nD,{option:t,checked:t.id===e.model,multi:!1,cursor:n===i,digit:n<9?n+1:void 0,onHover:()=>a(n),onPick:()=>s(t.id)},t.id)),e.efforts.length>0&&(0,V.jsxs)(`button`,{type:`button`,role:`menuitem`,tabIndex:-1,className:`${UE({cursor:i===e.models.length})} mt-1 border-t-hairline border-t-line`,onMouseMove:()=>a(e.models.length),onClick:()=>n(`effort`),children:[(0,V.jsx)(`span`,{className:`flex-[0_0_1.5ch] text-accent`}),(0,V.jsx)(`span`,{children:z(`newSession.effort`)}),(0,V.jsxs)(`span`,{className:`${GE} text-muted`,children:[c,(0,V.jsx)(Ia,{right:!0})]})]})]})}function aD(e){return(0,V.jsxs)(`div`,{className:`${BE} ${JE}`,children:[(0,V.jsx)(`p`,{className:`${HE} ${U} text-muted`,children:z(`newSession.branches`)}),(0,V.jsxs)(`label`,{className:qE,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:z(`newSession.branchName`)}),(0,V.jsx)(`input`,{className:nn,autoFocus:!0,spellCheck:!1,placeholder:z(`newSession.branchNamePlaceholder`),value:e.branch,onChange:t=>e.onBranch(t.target.value)})]}),e.repos.map(t=>(0,V.jsxs)(`label`,{className:qE,children:[(0,V.jsxs)(`span`,{children:[t.name,t.primary&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,z(`newSession.primary`)]})]}),(0,V.jsx)(`select`,{className:nn,"aria-label":t.name,value:t.base||t.current,onChange:n=>e.onBase(t.path,n.target.value),children:(t.branches.includes(t.base||t.current)?t.branches:[t.base||t.current,...t.branches]).filter(e=>e!==``).map(e=>(0,V.jsx)(`option`,{value:e,children:e},e))})]},t.path))]})}function oD(e){return e.id.startsWith(`root:`)?e.primary??e.checkouts[0]??e.id:e.id}function sD(e,t){if(!e)return null;let n=t.find(t=>t.id===e||t.checkouts.includes(e));return n?{ref:oD(n),clone:!1}:e.startsWith(`/`)?{ref:e,clone:!1}:null}function cD(e,t,n){let r=t.toLowerCase();return n?e.some(e=>e.toLowerCase()===`github.com/${r}`):e.some(e=>os(e).base.toLowerCase()===(r.split(`/`)[1]??``))}function lD(e){let t=e.begin?``:as(e.prompt);return{repo:e.pick.ref,machine:e.machine,...e.pick.clone?{clone:!0}:{},...e.baseRef?{baseBranch:e.baseRef}:{},...e.begin&&e.prompt?{prompt:e.prompt}:{},...t?{title:t}:{},...e.engine?{engine:e.engine}:{}}}var uD={offline:`newSession.remoteOffline`,outdated:`newSession.remoteOutdated`},dD=(e,t)=>Ws(e,`machines.repos`,{machine:t});function fD(e,t){let n=t.filter(e=>e.state===`online`).map(e=>e.alias).join(`
|
|
111
|
+
`)}),i===`gate`&&a&&(0,V.jsx)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:a.options.map(e=>(0,V.jsxs)(H,{disabled:d,title:e.detail,onClick:()=>void p(()=>TT(t,a.id,{option:e.key})),children:[`[ `,e.key===a.recommended?`★ `:``,e.label,` ]`]},e.key))}),i===`menu`&&r&&(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[Dv.map(e=>(0,V.jsxs)(H,{disabled:d,onClick:()=>void p(()=>wT(t,n,r,e.bytes(!1))),children:[`[ `,e.cap,` ]`]},e.id)),(0,V.jsx)(H,{onClick:e.onOpenTab,children:z(`inbox.openTab`)})]}),(i===`reply`||i===`gate`)&&(0,V.jsxs)(`form`,{className:`flex min-w-0 items-center gap-2`,onSubmit:e=>{e.preventDefault(),m()},children:[(0,V.jsx)(`input`,{className:`min-w-0 flex-1 rounded-sm border-hairline border-line bg-paper px-2 py-1.5 font-mono text-ink focus-visible:border-line-active focus-visible:outline-none touch:min-h-10 touch:text-display`,value:l,disabled:d,placeholder:z(`inbox.replyPlaceholder`),"aria-label":z(`inbox.replyPlaceholder`),autoComplete:`off`,enterKeyHint:`send`,onChange:e=>u(e.target.value)}),(0,V.jsx)(H,{type:`submit`,disabled:d||l.trim()===``,children:z(`inbox.send`)})]})]})}function AT({text:e}){return(0,V.jsx)(`span`,{className:`inline-flex flex-wrap gap-x-3 gap-y-0`,children:e.split(`·`).map(e=>e.trim()).filter(Boolean).map(e=>(0,V.jsx)(`span`,{children:e},e))})}var jT={accent:`text-accent`,muted:`text-subtle`,attention:`text-error`,warning:`text-warning`,info:`text-info`,success:`text-success`,added:`text-diff-added`,removed:`text-diff-removed`},MT={accent:`text-accent`,muted:`text-subtle`,attention:`text-error`,warning:`text-warning`,success:`text-success`,info:`text-accent`,ink:`text-ink`},NT=6;function PT(e,t){return e?`${e.repo.split(`/`).filter(Boolean).pop()??e.repo} › ${e.label}`:t}function FT({model:e}){B();let t=v(e.tasks),n=v(e.visits),r=v(e.tabs),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(Date.now());(0,g.useEffect)(()=>{let e=window.setInterval(()=>l(Date.now()),3e4);return()=>window.clearInterval(e)},[]);let u=new Map((t?.tasks??[]).map(e=>[e.id,e])),d=(e,t)=>e&&t&&r[e]?.find(e=>e.id===t)?.title||``,f=Bo(t?.attention??[],t?.tasks.map(e=>e.id)??[]).map((e,t)=>{let n=e.taskId?u.get(e.taskId):void 0;return{key:`a${t}:${e.taskId}:${e.tabId}`,section:`attention`,taskId:e.taskId,tabId:e.tabId,identity:PT(n,e.label??e.taskId??``),subtitle:d(e.taskId,e.tabId)||n?.branch||``,at:e.at,attention:e}}),p=new Set(f.map(e=>`${e.taskId}:${e.tabId}`)),m=n.filter(e=>u.has(e.taskId)&&!p.has(`${e.taskId}:${e.tabId}`)).slice(0,NT).map(e=>({key:`r:${e.taskId}:${e.tabId}`,section:`recent`,taskId:e.taskId,tabId:e.tabId,identity:PT(u.get(e.taskId),e.taskId),subtitle:d(e.taskId,e.tabId)||u.get(e.taskId)?.branch||``,at:e.at})),h=[...f,...m],_=h[Math.min(i,h.length-1)],y=async t=>{if(t.attention&&Ro(t.attention.state))return Po(e,t.attention);!t.attention?.taskId||t.attention.gateId||await e.client.request(`attention.dismiss`,{taskId:t.attention.taskId,...t.tabId?{tabId:t.tabId}:{}}).catch(e=>G(String(e),`error`))},b=t=>{if(t.attention&&Ro(t.attention.state))return Fo(e,t.attention);t.attention&&y(t),t.taskId&&u.has(t.taskId)&&(e.select(t.taskId,t.tabId),Cn())};(0,g.useEffect)(()=>{let e=e=>{if(!(e.target instanceof HTMLElement&&e.target.closest(`input, textarea`))){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(h.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`Enter`&&_)b(_);else if(e.key===`d`&&_?.attention)y(_);else return;e.preventDefault()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});let x=n=>{let r=n.attention?Io(n.attention.state):null,i=n===_,l=n.attention,d=n.taskId?u.get(n.taskId):void 0,f=l?.gateId?t?.gates?.find(e=>e.id===l.gateId&&e.status===`open`):void 0,p=n.tabId??f?.tabId??null,m=!!l&&!!d&&!d.machine&&!Ro(l.state)&&(!l.gateId||!!f)&&(!!p||!!f),g=l?.state===`permission_needed`||!!p&&d?.tabStatus?.[p]?.kind===`needs-input`,v=f?`gate`:l?.state===`dead`?`readonly`:g?`menu`:`reply`,y=`${n.taskId}:${n.tabId}:${l?.gateId??``}`,x=m&&o===y;return(0,V.jsxs)(`li`,{children:[(0,V.jsxs)(`div`,{className:Qn,children:[(0,V.jsxs)(`button`,{type:`button`,className:`${nr({selected:i,stack:!0})} ${$n}`,onMouseEnter:()=>a(h.indexOf(n)),onClick:()=>b(n),children:[(0,V.jsxs)(`span`,{className:Xn,children:[(0,V.jsx)(`span`,{className:rr,children:n.identity}),r&&(0,V.jsxs)(`span`,{className:`flex-none font-mono text-meta font-normal normal-nums ${MT[r.tone]}`,children:[r.glyph,` `,z(r.stateKey)]}),(0,V.jsx)(`span`,{className:Zn,children:Lo(c-n.at)})]}),n.subtitle&&(0,V.jsx)(`span`,{className:`truncate font-mono text-meta font-normal normal-nums text-muted`,children:n.subtitle})]}),m&&(0,V.jsx)(H,{className:`flex-none whitespace-nowrap pr-2 font-mono text-meta`,"aria-expanded":x,onClick:()=>{a(h.indexOf(n)),s(x?null:y)},children:z(x?`inbox.hide`:`inbox.reply`)})]}),x&&n.taskId&&(0,V.jsx)(kT,{model:e,taskId:n.taskId,tabId:p,mode:v,gate:f,onOpenTab:()=>b(n)})]},n.key)};return(0,V.jsx)(cr,{title:z(`inbox.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsx)(`p`,{className:`${U} text-muted ${qn} touch:hidden!`,children:(0,V.jsx)(AT,{text:z(`inbox.hints`)})}),(0,V.jsx)(`h2`,{className:`${U} text-muted ${Jn}`,children:z(`inbox.attention`)}),f.length===0?(0,V.jsx)(`p`,{className:`mono text-muted`,children:z(`inbox.empty`)}):(0,V.jsx)(`ul`,{className:Yn,children:f.map(x)}),m.length>0&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted mt-1`,children:z(`inbox.recent`)}),(0,V.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-0.5 p-0`,children:m.map(x)})]})]})})}var IT=[`project`,`state`],LT=`rove.railGroup`,RT=_(IT.find(e=>e===localStorage.getItem(LT))??`project`);function zT(e){RT.set(e),localStorage.setItem(LT,e)}var BT=`rove.activeSortMode`;function VT(){let e=localStorage.getItem(BT);return rw.find(t=>t===e)??`recent`}var HT=_(VT());function UT(e){HT.set(e),localStorage.setItem(BT,e)}function WT(){UT(rw[(rw.indexOf(HT.get())+1)%rw.length]??`default`)}var GT=_(!1),KT=_(null);function qT(e){e&&(HT.get()!=="default"||RT.get()===`state`)&&(UT(`default`),zT(`project`),G(q(`tasks`,`sort.reorderSwitched`))),e||KT.set(null),GT.set(e)}async function JT(e,t,n){let r=n<0?`up`:`down`;try{await e.client.request(`task.move`,{taskId:t.task.id,direction:r})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}}async function YT(e,t,n){let r=n<0?`up`:`down`;try{for(let i=0;i<Math.abs(n);i++)await e.client.request(`task.move`,{taskId:t,direction:r})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}}async function XT(e,t,n){if(n.pin!==void 0)try{await e.client.request(`task.pin`,{taskId:t,pinned:n.pin})}catch(e){G(q(`tasks`,`toast.moveFailed`,{error:e instanceof Error?e.message:String(e)}),`error`);return}await YT(e,t,n.steps)}var ZT=`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,QT=`before:absolute before:top-0 before:left-1 before:content-[''] before:[border-left:var(--hairline)_solid_var(--line-active)]`,$T={blank:``,pipe:`${QT} before:bottom-0`,tee:`${QT} before:bottom-0`,elbow:`${QT} before:right-0 before:bottom-1/2 before:rounded-bl-[6px] before:[border-bottom:var(--hairline)_solid_var(--line-active)]`},eE=e=>`relative w-3 ${$T[e]}`,tE=`-mx-1 inline-flex min-w-6 cursor-pointer items-center justify-center gap-1 self-stretch rounded-xs px-2 font-mono hover:bg-hover`,nE=`inline-flex items-center gap-1`,rE=e=>`fixed z-35 flex max-h-[min(380px,60vh)] w-85 max-w-[calc(100vw-24px)] animate-pr-list-in flex-col overflow-y-auto overscroll-contain rounded-md border-hairline border-line bg-surface p-1.5 shadow-popover transition-[opacity,translate] duration-120 ease-in motion-reduce:animate-none motion-reduce:transition-none ${e?`-translate-x-1 opacity-0`:``}`,iE=`pointer-events-none fixed z-35 max-w-80 -translate-y-1/2 animate-row-tip-in rounded-sm border-hairline border-line bg-inset px-2.5 py-1.5 text-meta leading-[1.4] whitespace-normal wrap-anywhere text-ink shadow-popover motion-reduce:animate-none`,aE=`inline-flex flex-none items-center text-subtle`,oE=`group/rail rail @container row-1 flex min-h-0 flex-col focus:outline-none ${He}`,sE=`flex min-w-0 items-center gap-2.5 overflow-hidden px-3.5 pt-3.5 pb-2.5 whitespace-nowrap`,cE=`flex gap-1 px-3.5 pb-2 text-meta`,lE=`min-w-0 flex-1 border-none bg-transparent p-0 text-ink [font:inherit] outline-none placeholder:text-subtle`,uE=e=>`flex-1 overflow-y-auto px-1.5 pt-1 pb-3 scrollbar-none ${e?`[&>[data-row]]:[transition:transform_150ms_ease-out] motion-reduce:[&>[data-row]]:transition-none`:``}`,dE=`group-focus-within/rail:[box-shadow:inset_0_0_0_1px_var(--focus)]`,fE=e=>`group/head mx-2 mt-1.5 mb-1 flex items-center gap-1 font-mono text-meta font-semibold normal-nums text-subtle not-first:mt-4.5 ${e.moving||e.dragging?`bg-accent-soft`:``} ${e.moving?`after:font-mono after:text-meta after:font-medium after:normal-nums after:text-accent after:content-['move']`:``}`,pE=`touch:relative touch:after:absolute touch:after:-inset-x-1.5 touch:after:-inset-y-3 touch:after:content-['']`,mE=`group/toggle -ml-1 inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-xs border-none bg-transparent px-1 py-0.5 text-inherit [font:inherit] hover:text-ink ${pE}`,hE=e=>e?``:`opacity-0 group-hover/head:opacity-100 group-focus-visible/toggle:opacity-100 touch:opacity-100`,gE=`-mr-[4.5px] ml-auto size-5 cursor-pointer rounded-xs border-none bg-transparent text-muted opacity-0 [font:400_var(--fs-display)/1_var(--sans)] group-hover/head:opacity-100 hover:bg-hover hover:text-ink focus-visible:opacity-100 touch:opacity-100 ${pE}`,_E=1e4;function vE(e,t){let n=e.hostLabel||e.alias;if(e.state===`online`)return e.version?`${n} · v${e.version}`:n;let r=t[e.state];return e.state===`mismatch`?e.version?`${n} · ⚠ v${e.version} (${r})`:`${n} · ⚠ ${r}`:`${n} · ${r}`}function yE(e,t,n,r=e){let i=t?.hostLabel&&t.hostLabel!==e?` (${t.hostLabel})`:``,a=n.runsOn.replace(`{host}`,t?`${e}${i}`:r);return!t||t.state===`online`?a:`${a}${vE(t,n).slice((t.hostLabel||t.alias).length)}`}function bE(e,t,n){if(e.kind!==`task`||e.machine===void 0)return null;let r=e.machine;return yE(r,t.find(e=>e.alias===r),n,e.task.machine?.label)}function xE({label:e}){return(0,V.jsx)(`span`,{className:aE,title:e,role:`img`,"aria-label":e,children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,width:`12`,height:`12`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M4.5 13a3 3 0 0 1-.4-5.97A4.5 4.5 0 0 1 12.8 6.6 3.2 3.2 0 0 1 12.3 13Z`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinejoin:`round`})})})}function SE({host:e,onMachines:t}){return B(),(0,V.jsxs)(`div`,{className:qt,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`machine.filesElsewhere`,{host:e})}),(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`machine.filesHint`,{host:e})}),(0,V.jsx)(`div`,{children:(0,V.jsx)(H,{hit:`tight`,onClick:t,children:z(`machines.open`)})})]})}function CE(e){let t=v(e.client.conn),n=v(e.remote),[r,i]=(0,g.useState)(()=>Hs(e,`machines.list`)?.machines??[]),a=[...new Set(n.map(e=>`${e.machine?.id}:${e.machine?.stale??!1}`))].join();return(0,g.useEffect)(()=>{if(t.state!==`open`)return;let n=!0,r=()=>Ws(e,`machines.list`).then(e=>n&&i(e.machines),()=>{});r();let a=window.setInterval(r,_E);return()=>{n=!1,window.clearInterval(a)}},[e.client,t.state,a]),r}var wE=`flex min-h-0 min-w-0 flex-1 flex-col p-4 font-mono text-meta leading-[1.5] font-normal not-italic normal-nums`,TE=`flex flex-1 flex-col items-center justify-center gap-1.5 text-center`,EE=`mx-auto flex w-full max-w-[104ch] flex-col gap-2`,DE=`flex flex-col gap-2 rounded-md border-hairline border-line bg-surface px-3 py-2.5 focus-within:border-line-active`,OE=`flex flex-wrap items-center justify-end gap-1.5`,kE=`max-h-[40vh] min-h-[4.5em] w-full bg-transparent text-ink [border:0] [outline:0]`,AE=`flex flex-wrap items-center gap-1.5 px-1`,jE=`flex-1`,ME=`size-3.25 flex-none fill-none stroke-current [stroke-linecap:round] [stroke-linejoin:round] [stroke-width:1.3]`,NE=(e=!1)=>`inline-flex max-w-[28ch] items-center gap-1.5 overflow-hidden rounded-full border-hairline px-2.5 py-0.75 text-ellipsis whitespace-nowrap touch:py-1.75 [&:hover]:bg-hover [&:hover]:text-ink aria-expanded:bg-hover aria-expanded:text-ink ${e?`border-[color-mix(in_srgb,var(--accent)_45%,transparent)] bg-accent-soft text-accent`:`border-line text-muted`}`,PE=`disabled:cursor-default disabled:opacity-60`,FE=`group/chip relative inline-flex`,IE=`flex min-h-0 flex-col gap-1 overflow-y-auto p-1.5 [outline:0]`,LE=`flex min-h-0 flex-col overflow-y-auto`,RE=`sticky top-0 z-1 m-0 bg-surface px-1.5 pt-1.5 pb-0.5 text-left`,zE=e=>`flex w-full items-baseline gap-2 rounded-[calc(var(--radius)-6px)] px-2 py-1 text-left touch:py-2.5 disabled:cursor-default disabled:opacity-50 ${e.dim?`text-subtle`:`text-ink`} ${e.cursor?`bg-hover`:``}`,BE=`flex-[0_0_1.5ch] text-accent`,VE=`ml-auto pl-3 inline-flex items-center gap-1`,HE=`flex-none whitespace-nowrap`,UE=`flex flex-col gap-0.5 px-1.5 py-0.5`,WE=`min-w-[36ch]`,GE=`flex items-center gap-1.5 p-1.5`;function KE(){return(0,V.jsx)(`svg`,{className:ME,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`})})}function qE(){return(0,V.jsxs)(`svg`,{className:ME,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`circle`,{cx:`4.5`,cy:`3.5`,r:`1.5`}),(0,V.jsx)(`circle`,{cx:`4.5`,cy:`12.5`,r:`1.5`}),(0,V.jsx)(`circle`,{cx:`11.5`,cy:`5`,r:`1.5`}),(0,V.jsx)(`path`,{d:`M4.5 5v6M11.5 6.5c0 3-7 2-7 4.5`})]})}function JE(){return(0,V.jsx)(`svg`,{className:ME,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10.5 4.5 5.8 9.2a1.4 1.4 0 0 0 2 2l5-5a2.8 2.8 0 0 0-4-4l-5.2 5.2a4.2 4.2 0 0 0 6 6L13 9`})})}function YE(){return(0,V.jsxs)(`svg`,{className:ME,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.75`}),(0,V.jsx)(`path`,{d:`M8 4.75V8l2.25 1.5`})]})}function XE(e){let[t,n]=(0,g.useState)(!1),r=(0,g.useRef)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null);(0,g.useLayoutEffect)(()=>{let e=a.current;if(!t||!e)return;let n=e.getBoundingClientRect(),r=n.right>window.innerWidth-8?window.innerWidth-8-n.right:n.left<8?8-n.left:0;r&&(e.style.transform=`translateX(${Math.round(r)}px)`)},[t]);let o=()=>{n(!1),i.current?.focus()};return(0,g.useEffect)(()=>{if(!t)return;let e=e=>{r.current?.contains(e.target)||n(!1)};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[t]),(0,V.jsxs)(`span`,{ref:r,className:FE,onKeyDown:e=>{e.key!==`Escape`||!t||(e.preventDefault(),e.stopPropagation(),o())},children:[(0,V.jsx)(`button`,{ref:i,type:`button`,className:NE(),"data-field":e.field,title:e.title,"aria-haspopup":`menu`,"aria-expanded":t,disabled:e.disabled,onClick:()=>n(e=>!e),children:e.label}),t&&(0,V.jsx)(`div`,{ref:a,className:`absolute bottom-[calc(100%+6px)] left-0 z-20 flex max-h-[min(50vh,420px)] max-w-[min(52ch,calc(100vw-16px))] min-w-[min(34ch,calc(100vw-16px))] flex-col overflow-hidden rounded-md border-hairline border-line-active bg-surface shadow-popover group-last-of-type/chip:right-0 group-last-of-type/chip:left-auto`,children:e.children(o)})]})}function ZE(e){let[t,n]=(0,g.useState)(0),r=[...e.extra?[e.extra]:[],...e.rows,...e.more??[]],i=Math.min(t,Math.max(0,r.length-1)),a=(0,g.useRef)(null);return(0,g.useEffect)(()=>{a.current?.scrollIntoView({block:`nearest`})},[i,e.rows]),(0,V.jsxs)(`div`,{className:IE,children:[(0,V.jsx)(`input`,{className:nn,autoFocus:!0,spellCheck:!1,placeholder:e.placeholder,value:e.query,onChange:t=>{n(0),e.onQuery(t.target.value)},onKeyDown:t=>{if(!t.nativeEvent.isComposing){if(t.key===`ArrowDown`||t.key===`ArrowUp`)t.preventDefault(),n(Math.max(0,Math.min(r.length-1,i+(t.key===`ArrowDown`?1:-1))));else if(t.key===`Enter`){t.preventDefault();let n=r[i];n&&e.onPick(n.key)}}}}),(0,V.jsxs)(`div`,{className:LE,children:[r.length===0&&(0,V.jsx)(`p`,{className:`mx-2 my-1 text-muted`,children:e.empty}),r.map((t,r)=>(0,V.jsxs)(g.Fragment,{children:[e.moreLabel&&t===e.more?.[0]&&(0,V.jsx)(`p`,{className:`mx-2 mt-2 mb-0.5 text-muted`,children:e.moreLabel}),(0,V.jsxs)(`button`,{type:`button`,"aria-current":t.checked===!0,ref:r===i?a:void 0,tabIndex:-1,title:t.title,className:zE({cursor:r===i}),onMouseMove:()=>n(r),onClick:()=>e.onPick(t.key),children:[(0,V.jsx)(`span`,{className:BE,children:t.checked?`✓`:``}),(0,V.jsx)(`span`,{className:HE,children:t.text}),t.dim&&(0,V.jsx)(`span`,{className:`ml-auto pl-3 text-muted ${t.title?`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`:``}`,children:t.dim})]})]},t.key))]})]})}function QE(e){return(0,V.jsxs)(`button`,{type:`button`,role:e.multi?`menuitemcheckbox`:`menuitemradio`,"aria-checked":e.checked,tabIndex:-1,disabled:e.option.disabled,className:zE({cursor:e.cursor,dim:e.option.dim}),onMouseMove:e.onHover,onClick:e.onPick,children:[(0,V.jsx)(`span`,{className:BE,children:e.checked?`✓`:``}),(0,V.jsx)(`span`,{children:e.option.label}),!e.checked&&e.digit!==void 0&&!e.option.disabled&&(0,V.jsx)(`span`,{className:`ml-auto pl-3 text-muted`,children:e.digit})]})}function $E(e){let[t,n]=(0,g.useState)(()=>Math.max(0,e.options.findIndex(t=>t.id===e.value))),r=(0,g.useRef)(null);return(0,g.useEffect)(()=>r.current?.focus(),[]),(0,V.jsxs)(`div`,{ref:r,role:`menu`,tabIndex:-1,className:IE,onKeyDown:r=>{if(!(r.ctrlKey||r.metaKey||r.altKey||r.nativeEvent.isComposing)){if(r.key===`ArrowDown`||r.key===`ArrowUp`)r.preventDefault(),n(Math.max(0,Math.min(e.options.length-1,t+(r.key===`ArrowDown`?1:-1))));else if(r.key===`Enter`){r.preventDefault();let n=e.options[t];n&&!n.disabled&&e.onPick(n.id)}else if(e.onBack&&(r.key===`Escape`||r.key===`ArrowLeft`))r.preventDefault(),r.stopPropagation(),e.onBack();else{let t=e.digits?Ns(r.key,e.options.length):null,n=t===null?void 0:e.options[t];if(!n||n.disabled)return;r.preventDefault(),e.onPick(n.id)}}},children:[e.onBack?(0,V.jsxs)(`button`,{type:`button`,className:`${RE} ${U} text-muted`,tabIndex:-1,onClick:e.onBack,children:[`‹ `,e.heading]}):(0,V.jsx)(`p`,{className:`${RE} ${U} text-muted`,children:e.heading}),e.options.map((r,i)=>(0,V.jsx)(QE,{option:r,checked:e.values?e.values.includes(r.id):r.id===e.value,multi:e.values!==void 0,cursor:i===t,digit:e.digits&&i<9?i+1:void 0,onHover:()=>n(i),onPick:()=>e.onPick(r.id)},r.id)),e.footer]})}function eD(e){let[t,n]=(0,g.useState)(`root`),r=e.models.length+ +(e.efforts.length>0),[i,a]=(0,g.useState)(()=>Math.max(0,e.models.findIndex(t=>t.id===e.model))),o=(0,g.useRef)(null);if((0,g.useEffect)(()=>{t===`root`&&o.current?.focus()},[t]),t===`effort`)return(0,V.jsx)($E,{heading:z(`newSession.effort`),options:e.efforts,value:e.effort,onBack:()=>n(`root`),onPick:t=>{e.onEffort(t),e.close()}});let s=t=>{e.onModel(t),e.close()},c=e.efforts.find(t=>t.id===e.effort)?.label??``;return(0,V.jsxs)(`div`,{ref:o,role:`menu`,tabIndex:-1,className:IE,onKeyDown:t=>{if(!(t.ctrlKey||t.metaKey||t.altKey||t.nativeEvent.isComposing)){if(t.key===`ArrowDown`||t.key===`ArrowUp`)t.preventDefault(),a(Math.max(0,Math.min(r-1,i+(t.key===`ArrowDown`?1:-1))));else if(t.key===`Enter`||t.key===`ArrowRight`&&i>=e.models.length){t.preventDefault();let r=e.models[i];r?s(r.id):e.efforts.length>0&&n(`effort`)}else{let n=Ns(t.key,e.models.length),r=n===null?void 0:e.models[n];if(!r)return;t.preventDefault(),s(r.id)}}},children:[(0,V.jsx)(`p`,{className:`${RE} ${U} text-muted`,children:z(`newSession.modelHeading`)}),e.models.map((t,n)=>(0,V.jsx)(QE,{option:t,checked:t.id===e.model,multi:!1,cursor:n===i,digit:n<9?n+1:void 0,onHover:()=>a(n),onPick:()=>s(t.id)},t.id)),e.efforts.length>0&&(0,V.jsxs)(`button`,{type:`button`,role:`menuitem`,tabIndex:-1,className:`${zE({cursor:i===e.models.length})} mt-1 border-t-hairline border-t-line`,onMouseMove:()=>a(e.models.length),onClick:()=>n(`effort`),children:[(0,V.jsx)(`span`,{className:`flex-[0_0_1.5ch] text-accent`}),(0,V.jsx)(`span`,{children:z(`newSession.effort`)}),(0,V.jsxs)(`span`,{className:`${VE} text-muted`,children:[c,(0,V.jsx)(Ia,{right:!0})]})]})]})}function tD(e){return(0,V.jsxs)(`div`,{className:`${IE} ${WE}`,children:[(0,V.jsx)(`p`,{className:`${RE} ${U} text-muted`,children:z(`newSession.branches`)}),(0,V.jsxs)(`label`,{className:UE,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:z(`newSession.branchName`)}),(0,V.jsx)(`input`,{className:nn,autoFocus:!0,spellCheck:!1,placeholder:z(`newSession.branchNamePlaceholder`),value:e.branch,onChange:t=>e.onBranch(t.target.value)})]}),e.repos.map(t=>(0,V.jsxs)(`label`,{className:UE,children:[(0,V.jsxs)(`span`,{children:[t.name,t.primary&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,z(`newSession.primary`)]})]}),(0,V.jsx)(`select`,{className:nn,"aria-label":t.name,value:t.base||t.current,onChange:n=>e.onBase(t.path,n.target.value),children:(t.branches.includes(t.base||t.current)?t.branches:[t.base||t.current,...t.branches]).filter(e=>e!==``).map(e=>(0,V.jsx)(`option`,{value:e,children:e},e))})]},t.path))]})}function nD(e){return e.id.startsWith(`root:`)?e.primary??e.checkouts[0]??e.id:e.id}function rD(e,t){if(!e)return null;let n=t.find(t=>t.id===e||t.checkouts.includes(e));return n?{ref:nD(n),clone:!1}:e.startsWith(`/`)?{ref:e,clone:!1}:null}function iD(e,t,n){let r=t.toLowerCase();return n?e.some(e=>e.toLowerCase()===`github.com/${r}`):e.some(e=>os(e).base.toLowerCase()===(r.split(`/`)[1]??``))}function aD(e){let t=e.begin?``:as(e.prompt);return{repo:e.pick.ref,machine:e.machine,...e.pick.clone?{clone:!0}:{},...e.baseRef?{baseBranch:e.baseRef}:{},...e.begin&&e.prompt?{prompt:e.prompt}:{},...t?{title:t}:{},...e.engine?{engine:e.engine}:{}}}var oD={offline:`newSession.remoteOffline`,outdated:`newSession.remoteOutdated`},sD=(e,t)=>Ws(e,`machines.repos`,{machine:t});function cD(e,t){let n=t.filter(e=>e.state===`online`).map(e=>e.alias).join(`
|
|
112
112
|
`);(0,g.useEffect)(()=>{for(let t of n?n.split(`
|
|
113
|
-
`):[])dD(e,t).catch(()=>{})},[e,n])}function pD(e,t){B();let[n,r]=(0,g.useState)(null);if((0,g.useEffect)(()=>{if(!t)return;let n=!1;return dD(e,t).then(e=>!n&&r({machine:t,reply:e,failed:``})).catch(e=>!n&&r({machine:t,reply:null,failed:String(e)})),()=>{n=!0}},[e,t]),!t)return{repos:[],loaded:!0,problem:``};let i=n?.machine===t?n:void 0,a=Hs(e,`machines.repos`,{machine:t});if(!i&&!a)return{repos:[],loaded:!1,problem:``};let o=i?i.reply:a;if(!o)return{repos:[],loaded:!0,problem:z(`newSession.remoteFailed`,{machine:t,message:i?.failed??``})};let s=o.reason?uD[o.reason]:void 0,c=o.reason?s?z(s,{machine:t}):z(`newSession.remoteFailed`,{machine:t,message:o.message??o.reason}):``;return{repos:o.repos,loaded:!0,problem:c}}function mD(e,t){return t.problem?t.problem:t.loaded?z(`newSession.remoteNone`,{machine:e}):z(`newSession.remoteLoading`,{machine:e})}function hD(){return(0,V.jsxs)(`svg`,{className:IE,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`rect`,{x:`2`,y:`3`,width:`12`,height:`8`,rx:`1`}),(0,V.jsx)(`path`,{d:`M5.5 13.5h5M8 11v2.5`})]})}function gD(e){let t=(B()===`zh`?jr:Ar).machine,n=e.machines.find(t=>t.alias===e.value),r=e.value?n?.hostLabel||e.value:z(`newSession.thisMachine`);return(0,V.jsx)(eD,{field:`machine`,title:z(`newSession.machine`),label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(hD,{}),r]}),children:n=>(0,V.jsx)(rD,{heading:z(`newSession.machine`),options:[{id:``,label:z(`newSession.thisMachine`)},...e.machines.map(e=>({id:e.alias,label:SE(e,t),disabled:e.state!==`online`}))],value:e.value,digits:!0,onPick:t=>{e.onPick(t),n()}})})}function _D(e){let[t,n]=(0,g.useState)(``),r=t.trim();return(0,V.jsx)(eD,{field:`branch`,title:z(`newSession.branch`),label:e.value||z(`newSession.branch`),children:i=>(0,V.jsx)(tD,{placeholder:z(`newSession.branchTypeRef`),empty:``,rows:[{key:``,text:z(`newSession.branchRemoteDefault`),checked:e.value===``}],query:t,onQuery:n,extra:r?{key:r,text:r,checked:e.value===r}:null,onPick:t=>{e.onPick(t),n(``),i()}})})}async function vD(e,t){return(await e.client.request(`task.spawn`,lD(t))).taskIds[0]}function yD(e){return e instanceof d_&&e.code===`CLONE_FAILED`?q(`newTask`,`error.cloneFailed`,{error:e.message}):e instanceof Error?e.message:String(e)}function bD(e){let[t,n]=(0,g.useState)(``);if(e.ungrouped)return null;if(e.remote)return e.remotePick&&(0,V.jsx)(_D,{value:e.remoteBase,onPick:e.onRemoteBase});let{repos:r,bases:i,inPlace:a}=e,o=r[0]??``,s=e.probes[o]??null,c=i[o]||s?.current||``,l=ss(s?.branches??[],t).map(e=>({key:e,text:e,checked:e===(i[o]||s?.current)})),u=r.map(t=>({path:t,name:os(t).base,primary:t===o,branches:e.probes[t]?.branches??[],current:e.probes[t]?.current??``,base:i[t]??``}));return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`${LE(!a)} ${RE}`,"aria-pressed":!a,disabled:r.length>1,title:r.length>1?z(`newSession.worktreeMulti`):z(a?`newSession.worktreeOff`:`newSession.worktreeOn`),onClick:e.onToggleWorktree,children:[(0,V.jsx)(ZE,{}),z(`newSession.worktree`)]}),r.length>1?(0,V.jsx)(eD,{field:`branch`,title:z(`newSession.branches`),label:z(`newSession.branches`),children:()=>(0,V.jsx)(aD,{repos:u,branch:e.branchName,onBranch:e.onBranchName,onBase:e.onBase})}):!a&&s?.ok&&c&&(0,V.jsx)(eD,{field:`branch`,title:z(`newSession.branch`),label:c,children:r=>(0,V.jsx)(tD,{placeholder:z(`newSession.branchSearch`),empty:z(`newSession.branchEmpty`),rows:l,query:t,onQuery:n,onPick:t=>{e.onBase(o,t),n(``),r()}})})]})}function xD(e,t){let[n,r]=(0,g.useState)(null),i=t&&n!==null,a=i?n:e.engine?[e.engine]:[];return{ids:a,comparing:i,setComparing:e=>r(e?a:null),toggle(t){let n=Os(a,t);r(n),n[0]&&n[0]!==e.engine&&e.setEngine(n[0])}}}function SD(e){let{picks:t,choice:n}=e,r=n.engines;if(r.length<2)return null;let i=t.ids.map(e=>r.find(t=>t.id===e)?.name??e);return(0,V.jsx)(eD,{field:`engine`,title:z(`newSession.engine`),label:ks(i)||z(`newSession.engine`),children:i=>(0,V.jsx)(rD,{heading:z(`newSession.engine`),options:r.map(e=>({id:e.id,label:e.name,dim:e.ready===!1})),value:n.engine,...t.comparing?{values:t.ids}:{},onPick:e=>{if(t.comparing)return t.toggle(e);n.setEngine(e),i()},footer:e.available&&r.length>1?(0,V.jsx)(H,{className:`mx-2 mt-1 mb-0.5 self-start font-mono`,"data-field":`compare-engines`,hit:`tight`,onClick:()=>t.setComparing(!t.comparing),children:z(t.comparing?`compare.oneEngine`:`compare.severalEngines`)}):null})})}function CD(e){return(0,V.jsx)(eD,{field:`model`,title:z(`newSession.model`),label:Ds(e.models,e.model,e.effort,z(`newSession.modelDefault`)),children:t=>(0,V.jsx)(iD,{...e,close:t})})}var wD=6e4,TD=/^(?:(today|tomorrow|今天|明天)\s*)?(\d{1,2})(?::(\d{2}))?\s*(am|pm)?$/i,ED=/^\+\s*(?:(\d+)\s*h)?\s*(?:(\d+)\s*m)?$/i;function DD(e,t){let n=e.trim(),r=ED.exec(n);if(r&&(r[1]||r[2])){let e=Number(r[1]??0)*60+Number(r[2]??0);return e>0?new Date(t.getTime()+e*wD):null}let i=TD.exec(n);if(!i)return null;let a=i[1]?.toLowerCase(),o=Number(i[2]),s=Number(i[3]??0),c=i[4]?.toLowerCase();if(c){if(o<1||o>12)return null;o=o%12+(c===`pm`?12:0)}if(o>23||s>59)return null;let l=new Date(t.getFullYear(),t.getMonth(),t.getDate(),o,s);if(a===`tomorrow`||a===`明天`)l.setDate(l.getDate()+1);else if(l.getTime()<=t.getTime()){if(a)return null;l.setDate(l.getDate()+1)}return l.getTime()>t.getTime()?l:null}function OD(e,t=new Date){let n=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return e.toDateString()===t.toDateString()?n:`${e.toLocaleDateString([],{weekday:`short`})} ${n}`}async function kD(e,t,n,r){await e.request(`task.scheduleStart`,{taskId:t,at:n.toISOString(),prompt:r})}function AD(e){let[t,n]=(0,g.useState)(``);return(0,V.jsx)(eD,{field:`later`,title:z(`newSession.later`),disabled:e.disabled,label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)($E,{}),z(`newSession.later`)]}),children:r=>{let i=()=>{let n=DD(t,new Date);if(!n)return e.onInvalid(z(`newSession.laterBad`));r(),e.onSchedule(n)};return(0,V.jsxs)(`div`,{className:YE,children:[(0,V.jsx)(`input`,{className:`${nn} min-w-0 flex-1`,value:t,placeholder:z(`newSession.laterPlaceholder`),"aria-label":z(`newSession.later`),spellCheck:!1,autoComplete:`off`,autoFocus:!0,onChange:e=>n(e.target.value),onKeyDown:e=>{e.key!==`Enter`||e.nativeEvent.isComposing||(e.preventDefault(),e.stopPropagation(),i())}}),(0,V.jsx)(H,{variant:`filled`,disabled:!t.trim(),onClick:i,children:z(`newSession.laterConfirm`)})]})}})}var jD=`clone:`;function MD(e){let{model:t,saved:n,picked:r,primary:i,home:a,query:o,remote:s}=e,[c,l]=(0,g.useState)(()=>Hs(t,`github.repos`)??null);(0,g.useEffect)(()=>{let e=!1;return Ws(t,`github.repos`).then(t=>!e&&l(t)).catch(()=>!e&&l({repos:[],reason:`failed`})),()=>{e=!0}},[t]);let u=o.trim(),d=ss(n,o),f=z(`rail.noProject`),p=e.ungrouped&&(!u||f.toLowerCase().includes(u.toLowerCase()))?[{key:fw,text:f,dim:a,checked:e.ungrouped.on}]:[],m=d.map(e=>{let{base:t,dir:n}=os(e);return{key:e,text:t,dim:e===i&&r.length>1?`${z(`newSession.primary`)}, ${n}`:n,checked:r.includes(e)}}),h=bs(u),_=h&&(h.includes(`:`)||d.length===0)?h:null,v=!_&&cs(u)&&!n.includes(u)&&(!s||u.startsWith(`/`))?us(ls(u,a)):``,y=_?{key:jD+_,text:s?z(`newSession.cloneRowOn`,{source:_,machine:s.name}):z(`newSession.cloneRow`,{source:_})}:v?{key:v,text:v,checked:r.includes(v)}:null,b=u.toLowerCase(),x=(c?.repos??[]).filter(e=>e.nameWithOwner.toLowerCase().includes(b)).filter(e=>!cD(n,e.nameWithOwner,s!==void 0)).map(e=>({key:jD+e.nameWithOwner,text:e.nameWithOwner,dim:e.description,title:e.description}));return(0,V.jsx)(tD,{placeholder:z(s?`newSession.repoSearchRemote`:`newSession.repoSearch`),empty:s?.empty??z(`newSession.repoEmpty`),rows:s?.blocked?[]:[...p,...m],query:o,onQuery:e.onQuery,extra:s?.blocked?null:y,more:s?.blocked?[]:x,moreLabel:z(`newSession.githubGroup`),onPick:t=>{if(t===`~scratch`)return e.ungrouped?.pick(),e.close();if(!t.startsWith(`clone:`))return e.onToggle(t);e.onClone(t.slice(6)),e.close()}})}function ND(e){document.querySelector(`.dialog [data-field="${e}"]:not([hidden] *)`)?.focus()}function PD(e){let[t,n]=(0,g.useState)(0),r=e.open&&e.items.length>0,i=Math.min(t,Math.max(0,e.items.length-1)),a=(0,g.useRef)(null),{onCursor:o}=e;return(0,g.useEffect)(()=>o?.(i),[i,o]),(0,g.useEffect)(()=>{a.current?.scrollIntoView({block:`nearest`})},[i,e.items]),(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`input`,{className:nn,"data-field":e.field,spellCheck:!1,autoComplete:`off`,autoFocus:e.autoFocus,placeholder:e.placeholder,value:e.value,onChange:t=>{n(0),e.onChange(t.target.value.replace(/[\r\n]+/g,``))},onKeyDown:t=>{if(!t.nativeEvent.isComposing){if(t.key===`ArrowDown`||t.key===`ArrowUp`){if(!r)return;t.preventDefault(),n(Math.max(0,Math.min(e.items.length-1,i+(t.key===`ArrowDown`?1:-1))))}else t.key===`Tab`&&!t.shiftKey&&r&&e.onComplete?.(i)?(t.preventDefault(),n(0)):t.key===`Enter`&&!t.ctrlKey&&!t.metaKey&&(t.preventDefault(),r?((e.onEnterRow??e.onPick)(i),n(0)):e.onEnter?.())}}}),r&&(0,V.jsx)(`ul`,{className:`mx-0 mt-1 mb-0 max-h-47 list-none overflow-y-auto rounded-sm border-hairline border-line bg-inset p-0.5 font-mono text-meta`,children:e.items.map((t,n)=>(0,V.jsx)(`li`,{ref:n===i?a:void 0,children:(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":n===i,className:$t({cursor:n===i,accent:!!t.accent}),onMouseDown:t=>{t.preventDefault(),e.onPick(n)},children:[(0,V.jsx)(`span`,{children:t.text}),t.dim&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,t.dim]})]})},t.key))})]})}function FD({model:e,engine:t,busy:n,error:r,run:i}){let[a,o]=(0,g.useState)(``),[s,c]=(0,g.useState)(()=>localStorage.getItem(`rove.web.cloneParent`)||`~/`),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(`main`),[p,m]=(0,g.useState)(``),[h,_]=(0,g.useState)(!1),[v,y]=(0,g.useState)({base:``,home:``,names:[]});(0,g.useEffect)(()=>{let t=!1,n=setTimeout(()=>{e.client.request(`fs.subdirs`,{path:s}).then(e=>!t&&y(e)).catch(()=>{})},60);return()=>{t=!0,clearTimeout(n)}},[e,s]);let b=l??gs(a),x=ls(s.trim(),v.home),S=()=>i(async()=>{if(!a.trim())throw ND(`url`),Error(q(`newTask`,`error.gitUrlRequired`));let n;try{m(``),n=await e.client.request(`repo.clone`,{url:a.trim(),parentDir:x,...l?.trim()?{folder:l.trim()}:{}},m)}catch(e){throw e instanceof d_&&e.code===`CLONE_FAILED`?Error(q(`newTask`,`error.cloneFailed`,{error:e.message})):e}localStorage.setItem(_s,s.trim());let r=(await e.client.request(`task.spawn`,{repo:n.path,...t?{engine:t}:{},...d.trim()?{baseBranch:d.trim()}:{}})).taskIds[0];r&&e.selectWhenListed(r)});return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),S()},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.gitUrl`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`url`,spellCheck:!1,placeholder:`https://github.com/user/repo.git`,value:a,onChange:e=>o(e.target.value.replace(/[\r\n]+/g,``)),onKeyDown:e=>{e.key!==`Enter`||e.ctrlKey||e.metaKey||(e.preventDefault(),a.trim()&&ND(`parent`))}})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.parentDir`)}),(0,V.jsx)(PD,{field:`parent`,value:s,placeholder:`~/`,onChange:e=>{_(!0),c(e)},items:v.names.map(e=>({key:e,text:`${e}/`})),open:h,onPick:e=>{let t=v.names[e];t!==void 0&&c(fs(s,v.base,t,v.home)),_(!1),ND(`folder`)},onComplete:e=>{let t=v.names[e];if(t===void 0)return!1;let n=`${fs(s,v.base,t,v.home)}/`;return n!==s&&(c(n),!0)},onEnter:()=>ND(`folder`)}),(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`hint.remembered`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.folderName`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`folder`,spellCheck:!1,placeholder:q(`newTask`,`placeholder.folderName`),value:b,onChange:e=>u(e.target.value.replace(/[\r\n]+/g,``)),onKeyDown:e=>{e.key!==`Enter`||e.ctrlKey||e.metaKey||(e.preventDefault(),ND(`clone-base`))}})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.baseBranch`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`clone-base`,spellCheck:!1,placeholder:`main`,value:d,onChange:e=>f(e.target.value.replace(/[\r\n]+/g,``))})]}),n&&(0,V.jsx)(`p`,{className:`text-muted`,"data-field":`clone-progress`,children:p||q(`newTask`,`clone.progressInto`,{target:`${x}/${b}`})}),r&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,r]}),(0,V.jsx)(pr,{busy:n,submitLabel:q(`newTask`,n?`button.cloning`:`button.create`)})]})}function ID({model:e,engine:t,busy:n,error:r,run:i,repo:a,active:o}){let[s,c]=(0,g.useState)(``),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(new Set),[p,m]=(0,g.useState)(0),h=a.expanded;(0,g.useEffect)(()=>{if(!o||!h)return;let t=!1;return u(null),f(new Set),e.client.request(`repo.probe`,{path:h,adoptable:!0}).then(e=>!t&&u(e.worktrees??[])).catch(()=>!t&&u([])),()=>{t=!0}},[e,o,h]);let _=Ss(l??[],s),v=e=>f(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n}),y=()=>i(async()=>{let n=d.size>0?_.filter(e=>d.has(e.path)):_.slice(p,p+1);if(n.length===0)throw Error(q(`newTask`,`error.noAdoptable`));let r=0,i,a;for(let o of n){let n={repo:h,worktreePath:o.path,branch:o.branch,...t?{engine:t}:{}};try{let t;try{t=await e.client.request(`worktree.adopt`,n)}catch(r){if(!(r instanceof d_&&r.code===`UNKNOWN_REPO`))throw r;await e.client.request(`task.openMain`,{repo:h}),t=await e.client.request(`worktree.adopt`,n)}a=t.taskId,r++}catch(e){i??=e instanceof Error?e.message:String(e)}}if(r===0)throw Error(q(`newTask`,`adopt.summaryNone`,{error:i??``}));G(r<n.length?q(`newTask`,`adopt.summaryPartial`,{done:r,total:n.length}):q(`newTask`,`adopt.summaryAll`,{count:r})),a&&e.selectWhenListed(a)}),b=d.size>0?q(`newTask`,`adopt.hintSelected`,{count:d.size}):q(`newTask`,`adopt.hintDefault`);return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),y()},onKeyDown:e=>{e.ctrlKey&&!e.shiftKey&&!e.metaKey&&e.key.toLowerCase()===`a`&&(e.preventDefault(),e.stopPropagation(),f(e=>_.every(t=>e.has(t.path))?new Set:new Set(_.map(e=>e.path))))},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.adoptFilter`)}),(0,V.jsx)(PD,{field:`filter`,value:s,placeholder:q(`newTask`,`placeholder.adoptFilter`),onChange:c,items:_.map(e=>{let t=[e.dirty===!0?`dirty`:e.dirty===null?`dirty?`:``,e.roveManaged?``:`external`].filter(Boolean).join(`,`);return{key:e.path,text:`${d.has(e.path)?`[x]`:`[ ]`} ${e.branch}${t?` (${t})`:``}`,dim:e.path,accent:d.has(e.path)}}),open:!0,onPick:e=>{let t=_[e];t&&v(t.path)},onCursor:m,onEnter:()=>{}}),(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`adopt.repoLine`,{path:h||q(`newTask`,`adopt.repoNone`)})}),l===null&&h&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`hint.scanningWorktrees`)}),l!==null&&_.length===0&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,l.length===0?`adopt.noUnlinked`:`adopt.noMatch`)}),_.length>0&&(0,V.jsx)(`span`,{className:`text-muted`,children:(0,V.jsx)(AT,{text:is(b)})})]}),r&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,r]}),(0,V.jsx)(pr,{busy:n,submitLabel:q(`newTask`,`button.create`)})]})}var LD=[`existing`,`clone`,`adopt`];function RD(e,t){let n=Hs(e,`repos.list`)?.repos,[r,i]=(0,g.useState)(n??[]),[a,o]=(0,g.useState)(()=>Hs(e,`fs.subdirs`,{path:`~/`})?.home??``),[s,c]=(0,g.useState)(()=>{let e=t??n?.[0];return e?hs(e,n??[]):``}),[l,u]=(0,g.useState)(!1),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null);(0,g.useEffect)(()=>{Promise.all([Ws(e,`repos.list`),Ws(e,`fs.subdirs`,{path:`~/`})]).then(([e,n])=>{i(e.repos),o(n.home);let r=t??e.repos[0]??``;c(t=>t||hs(r,e.repos))}).catch(()=>{})},[e,t]);let h=cs(s.trim())&&!r.includes(s.trim());(0,g.useEffect)(()=>{if(!h)return;let t=!1,n=setTimeout(()=>{e.client.request(`fs.subdirs`,{path:s}).then(e=>!t&&f({base:e.base,names:e.names})).catch(()=>!t&&f({base:``,names:[]}))},60);return()=>{t=!0,clearTimeout(n)}},[e,h,s]);let _=ms(s,r),v=_.kind===`path`?_.path:``,y=v.startsWith(`~`)&&!a?``:v.replace(/^~(?=\/|$)/,a).replace(/(.)\/+$/,`$1`);(0,g.useEffect)(()=>{if(m(null),!y)return;let t=!1,n=setTimeout(()=>{e.client.request(`repo.probe`,{path:y}).then(e=>!t&&m(e)).catch(()=>{})},150);return()=>{t=!0,clearTimeout(n)}},[e,y]);let b=new Set((e.tasks.get()?.tasks??[]).filter(e=>e.kind===`main`).map(e=>e.repo.replace(/\/+$/,``))),x=h?d?.names??[]:[],S=ss(r,s),C=h?x.map(e=>({key:e,text:`${e}/`})):S.map(e=>{let{base:t,dir:n}=os(e);return{key:e,text:t,dim:n,accent:e===y}});return{text:s,saved:r,home:a,expanded:y,ambiguous:_.kind===`ambiguous`?_.name:null,mainRepos:b,open:!l,items:C,probe:p,setText:e=>{u(!1),c(e)},pick:e=>{if(h){let t=x[e];t!==void 0&&c(fs(s,d?.base??``,t,a))}else{let t=S[e];t!==void 0&&c(hs(t,r))}u(!0),ND(`branch`)},complete:e=>{if(l)return!1;if(h){let t=x[e];if(t===void 0)return!1;let n=ps(s,d?.base??``,t,a);return n!==s&&(c(n),!0)}let t=S[e];if(t===void 0)return!1;let n=hs(t,r);return n!==s.trim()&&(c(n),u(!0),!0)},reopen:()=>u(!1)}}function zD(e){let{model:t,repo:n}=e,[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(!1),[s,c]=(0,g.useState)(!0),[l,u]=(0,g.useState)(`task`),d=n.mainRepos.has(n.expanded),f=n.probe?.ok?n.probe:null,p=f?.branches??[];(0,g.useEffect)(()=>{!a&&f?.current&&i(f.current)},[a,f]),(0,g.useEffect)(()=>u(`task`),[n.expanded]);let m=ss(p,r),h=i=>e.run(async()=>{if(n.ambiguous)throw n.reopen(),ND(`repo`),Error(q(`newTask`,`error.repoAmbiguous`,{name:n.ambiguous}));if(!n.expanded)throw ND(`repo`),Error(z(`newTask.needRepo`));let e=await t.client.request(`repo.probe`,{path:n.expanded});if(!e.ok)throw ND(`repo`),Error(e.reason??n.expanded);if(l===`project`&&d){let n=await t.client.request(`task.openMain`,{repo:e.repo});t.selectWhenListed(n.taskId);return}gn(e.repo,(i??r).trim())});return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),h()},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.repo`)}),(0,V.jsx)(PD,{field:`repo`,value:n.text,onChange:n.setText,items:n.items,open:n.open,onPick:n.pick,onComplete:n.complete,onEnter:()=>ND(`branch`)})]}),d&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`newTask`,`field.opens`)}),(0,V.jsx)(es,{label:q(`newTask`,`field.opens`),field:`intent`,value:l,onChange:e=>u(e===`project`?`project`:`task`),choices:[{id:`task`,label:q(`newTask`,`intent.task`)},{id:`project`,label:q(`newTask`,`intent.project`)}]})]}),!(l===`project`&&d)&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`newTask`,`field.fromBranch`)}),(0,V.jsx)(PD,{field:`branch`,value:r,placeholder:`main`,onChange:e=>{o(!0),c(!0),i(e)},items:m.map(e=>({key:e,text:e,accent:e===r.trim()})),open:s,onPick:e=>{let t=m[e];t!==void 0&&(i(t),o(!0),c(!1),ND(`create`))},onEnterRow:e=>{let t=r.trim(),n=t?m.find(e=>e.toLowerCase()===t.toLowerCase()):void 0;h(n??m[e]??t)},onEnter:()=>void h()}),m.length===0&&e.error==null&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,p.length===0?`hint.noBranchesFound`:`hint.noMatchBranch`)})]}),e.error&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,e.error]}),(0,V.jsx)(pr,{busy:e.busy,submitLabel:q(`newTask`,`button.create`)})]})}function BD({model:e,repo:t}){B();let[n,r]=(0,g.useState)(`existing`),{busy:i,error:a,setError:o,submit:s}=lr(),c=e.selection.get().taskId,l=e.tasks.get()?.tasks.find(e=>e.id===c)?.repo,u=NC(e,t??l),d=RD(e,t??l),f=(0,g.useRef)(null),p=(0,g.useRef)(!0);(0,g.useEffect)(()=>{if(o(null),p.current){p.current=!1,f.current?.querySelector(`[data-field=mode] [aria-pressed=true]`)?.focus();return}ND(n===`existing`?`repo`:n===`clone`?`url`:`filter`)},[n]);let m=u.engines.filter(e=>e.ready!==!1),h=()=>{let e=m.length>0?m:u.engines,t=e[(e.findIndex(e=>e.id===u.engine)+1)%e.length];t&&u.setEngine(t.id)},_=e=>r(t=>LD[(LD.indexOf(t)+e+LD.length)%LD.length]),v={model:e,engine:u.engine,busy:i,error:a,setError:o,run:s};return(0,V.jsx)(cr,{title:q(`newTask`,`title`),wide:!0,children:(0,V.jsxs)(`div`,{ref:f,onKeyDown:e=>{if(!(!e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`]`||e.key===`[`)_(e.key===`]`?1:-1);else if(e.key.toLowerCase()===`e`&&!e.shiftKey)h();else return;e.preventDefault(),e.stopPropagation()}},children:[(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.mode`)}),(0,V.jsx)(es,{label:q(`newTask`,`field.mode`),field:`mode`,value:n,onChange:e=>r(e),choices:LD.map(e=>({id:e,label:q(`newTask`,`tabs.${e}`)}))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.engine`)}),(0,V.jsx)(zC,{engines:u.engines,value:u.engine,onChange:u.setEngine})]})]}),(0,V.jsx)(`div`,{hidden:n!==`existing`,children:(0,V.jsx)(zD,{...v,repo:d})}),(0,V.jsx)(`div`,{hidden:n!==`clone`,children:(0,V.jsx)(FD,{...v})}),(0,V.jsx)(`div`,{hidden:n!==`adopt`,children:(0,V.jsx)(ID,{...v,repo:d,active:n===`adopt`})}),(0,V.jsx)(`p`,{className:`keys-only mx-0 mt-2 mb-0 ${Yt}`,children:q(`newTask`,`legend`,{enter:q(`newTask`,`enterNext`)})})]})})}function VD(e,t){let n=e.scratch||e.noProject,r=n?[]:t.extraRepos??[];return{...n?{ungrouped:!0}:{repo:t.repo},...t.baseRef?{baseBranch:t.baseRef}:{},...r.length>0?{extras:r}:{},...e.machine?{machine:e.machine.id}:{},prompt:t.prompt,...t.engine?{engine:t.engine}:{},worktree:e.kind===`task`,retryOf:{id:e.id,label:e.label}}}function HD(e,t){return e?[e,...(t.extras??[]).map(e=>e.repo)]:[]}function UD(e,t){return e?{...t.baseBranch?{[e]:t.baseBranch}:{},...Object.fromEntries((t.extras??[]).flatMap(e=>e.baseRef?[[e.repo,e.baseRef]]:[]))}:{}}function WD(e,t){return e.retryOf&&e.engine&&e.engine===t?e.retryOf.id:void 0}async function GD(e,t){try{let{task:n}=await e.client.request(`task.get`,{taskId:t.id});if(!n.prompt)return void G(z(`menu.retryNoPrompt`),`error`);_n(VD(t,{...n,prompt:n.prompt}))}catch(e){G(K(e),`error`)}}function KD(e,t){let n=async n=>{await e.client.request(`task.archive`,{taskId:t.id,archived:!0,...n?{force:n}:{}}),G(q(`tasks`,`archive.done`,{title:t.label}))};W.set((0,V.jsx)(dr,{title:z(`newSession.retryArchiveTitle`,{title:t.label}),body:z(`newSession.retryArchiveBody`),confirmLabel:q(`tasks`,`menu.archive`),onConfirm:()=>n(!1),escalate:{when:e=>e instanceof d_&&e.code===`TASK_BUSY`,label:q(`tasks`,`archive.busyConfirm`),title:q(`tasks`,`archive.busyTitle`),body:()=>q(`tasks`,`archive.busyBody`,{title:t.label}),run:()=>n(!0)}}))}var qD=_([]),JD=()=>v(qD);async function YD(e){qD.set((await e.request(`snippets.get`)).snippets)}async function XD(e,t){qD.set((await e.request(`snippets.save`,{name:t.name,text:t.text})).snippets)}async function ZD(e,t){qD.set((await e.request(`snippets.remove`,{name:t})).snippets)}var QD=/^[A-Za-z0-9][\w-]{0,31}$/;function $D(e,t){let n=t;for(;n>0&&/[\w-]/.test(e[n-1]??``);)n--;if(n===0||e[n-1]!==`@`)return null;let r=e[n-2];if(r!==void 0&&!/\s/.test(r))return null;let i=t;for(;i<e.length&&/[\w-]/.test(e[i]??``);)i++;return{start:n-1,end:i,query:e.slice(n,t)}}function eO(e,t){let n=t.toLowerCase(),r=e.filter(e=>e.name.toLowerCase().startsWith(n));return[...r.filter(e=>e.name.toLowerCase()===n),...r.filter(e=>e.name.toLowerCase()!==n)]}function tO(e,t,n){return{text:e.slice(0,t.start)+n.text+e.slice(t.end),caret:t.start+n.text.length}}var nO=e=>e.split(`
|
|
114
|
-
`,1)[0]??``;function rO(e){return(0,V.jsx)(`ul`,{className:`${Qt} ${e.className}`,children:e.items.map((t,n)=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(H,{variant:`row`,tabIndex:-1,"aria-pressed":n===e.at,className:$t({cursor:n===e.at,accent:!1}),onMouseDown:t=>{t.preventDefault(),e.onPick(n)},children:[(0,V.jsxs)(`span`,{className:`text-accent`,children:[`@`,t.name]}),(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,nO(t.text)]})]})},t.name))})}function iO(e){let t=JD(),[n,r]=(0,g.useState)(0),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),c=(0,g.useRef)(null),l=$D(e.value,Math.min(n,e.value.length)),u=l?eO(t,l.query):[],d=l!==null&&u.length>0&&o!==l.start,f=Math.min(i,Math.max(0,u.length-1));(0,g.useLayoutEffect)(()=>{let t=c.current,n=e.area.current;t===null||!n||(c.current=null,n.setSelectionRange(t,t),r(t))});let p=t=>{let n=u[t];if(!l||!n)return;let r=tO(e.value,l,n);c.current=r.caret,a(0),e.onChange(r.text)},m=e=>{if(!d||e.nativeEvent.isComposing)return!1;if(e.key===`ArrowDown`||e.key===`ArrowUp`)a(Math.max(0,Math.min(u.length-1,f+(e.key===`ArrowDown`?1:-1))));else if(e.key===`Tab`&&!e.shiftKey||e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey)p(f);else if(e.key===`Escape`)s(l?.start??null),e.stopPropagation();else return!1;return e.preventDefault(),!0};return{list:d?(0,V.jsx)(rO,{items:u,at:f,className:e.listClassName??``,onPick:p}):null,field:{onChange:t=>{r(t.target.selectionStart),a(0),e.onChange(t.target.value)},onSelect:e=>r(e.currentTarget.selectionStart),onKeyDown:t=>{m(t)||!e.onEnter||t.key!==`Enter`||t.shiftKey||t.nativeEvent.isComposing||(t.preventDefault(),e.onEnter())}}}}function aO(e,t){gn(e,void 0,t)}function oO(){gn(void 0,void 0,void 0,void 0,!0)}var sO=`rove.web.newSession.worktree`,cO=``;function lO({model:e,seed:t}){let n=t.repo;B();let r=v(e.selection).taskId,i=e.tasks.get()?.tasks.find(e=>e.id===r)?.repo,a=NC(e,n??i,t.engine),o=Hs(e,`repos.list`)?.repos,s=e=>t.ungrouped?void 0:(t.machine?void 0:n)??i??e?.[0],[c,l]=(0,g.useState)(o??[]),[u,d]=(0,g.useState)(()=>Hs(e,`fs.subdirs`,{path:`~/`})?.home??``),[f,p]=(0,g.useState)(()=>HD(s(o),t)),[m,h]=(0,g.useState)(()=>Object.fromEntries(f.flatMap(t=>{let n=Hs(e,`repo.probe`,{path:t});return n?[[t,n]]:[]}))),_=(0,g.useRef)(new Set),[y,b]=(0,g.useState)(t.ungrouped===!0),x=()=>{b(!0),p([])},[S,C]=(0,g.useState)(()=>UD(s(o),t)),[w,T]=(0,g.useState)(``),[E,D]=(0,g.useState)(``),[O,k]=(0,g.useState)(()=>(t.prompt!==void 0&&(cO=t.prompt),cO)),A=e=>{cO=e,k(e)},[j,ee]=(0,g.useState)(``),[M,N]=(0,g.useState)(``),[P,F]=(0,g.useState)(!1),[I,te]=(0,g.useState)(``),[L,ne]=(0,g.useState)(()=>t.worktree??localStorage.getItem(sO)!==`0`),re=e=>{localStorage.setItem(sO,e?`1`:`0`),ne(e)},[ie,R]=(0,g.useState)(null),{attachments:ae,attach:oe,remove:se,clear:ce}=Qo(e,R),le=(0,g.useRef)(null),ue=DE(e),[de,fe]=(0,g.useState)(t.machine??``),pe=de!==``,me=pe?null:Jo(e=>void oe(e)),he=ue.find(e=>e.alias===de)?.hostLabel||de,ge=pD(e,de);fD(e,ue);let[_e,ve]=(0,g.useState)(null),[ye,be]=(0,g.useState)(``);(0,g.useEffect)(()=>{Promise.all([Ws(e,`repos.list`),Ws(e,`fs.subdirs`,{path:`~/`})]).then(([e,n])=>{l(e.repos),d(n.home);let r=s(e.repos);p(e=>e.length>0||!r?e:HD(r,t)),C(e=>({...e,...UD(r,t)}))}).catch(()=>{})},[e,n]);let xe=!pe&&!L&&f.length===1,Se=f[0]??``;(0,g.useEffect)(()=>{for(let t of f)_.current.has(t)||(_.current.add(t),Ws(e,`repo.probe`,{path:t}).then(e=>h(n=>({...n,[t]:e}))).catch(()=>{}))},[e,f]),(0,g.useEffect)(()=>{!pe||!ge.loaded||de!==t.machine||ve(e=>e??sD(n,ge.repos))},[ge.loaded]),(0,g.useEffect)(()=>le.current?.focus(),[]);let Ce=!pe&&!y&&!xe,we=xD(a,Ce),Te=a.engines.find(e=>e.id===a.engine),Ee=Ts(Te,z(`newSession.modelDefault`)),De=Es(Te,z(`newSession.effortDefault`)),Oe=Ee.some(e=>e.id===j)?j:``,ke=De.some(e=>e.id===M)?M:``,Ae=async t=>{R(null),F(!0),te(z(`newSession.cloning`,{source:t}));try{let n=us(ls((localStorage.getItem(`rove.web.cloneParent`)||`~/`).trim(),u)),r=await e.client.request(`repo.clone`,{url:t,parentDir:n},te);l(e=>e.includes(r.path)?e:[...e,r.path]),p(e=>e.includes(r.path)?e:Ms(e,r.path)),b(!1),D(``)}catch(e){R(yD(e))}finally{F(!1),te(``)}},je=async n=>{if(!_e)return R(z(`newSession.needRepo`));if(n&&!O.trim())return R(z(`newSession.needPrompt`));F(!0),te(_e.clone?z(`newSession.cloningOn`,{source:_e.ref,machine:he}):z(`newSession.startingOn`,{machine:he}));try{let r=await vD(e,{pick:_e,machine:de,engine:a.engine,prompt:O.trim(),begin:n,baseRef:ye});cO=``,hn.set(null),r&&e.selectWhenListed(r),t.retryOf&&r&&KD(e,t.retryOf)}catch(e){R(yD(e))}finally{F(!1),te(``)}},Me=async(n=!0,r)=>{if(R(null),pe)return je(n);if(!Se&&!y)return R(z(`newSession.needRepo`));if((n||r)&&!O.trim())return R(z(`newSession.needPrompt`));F(!0);let i=Xo(O.trim(),ae);try{let o=await Promise.all(f.map(t=>e.client.request(`repo.probe`,{path:t}))),s=o.find(e=>!e.ok);if(s)throw Error(s.reason??s.repo);let c,l;if(y)c=await Fs(e.client.request.bind(e.client),a.engine,O,n);else if(xe)c=await Is(e.client.request.bind(e.client),o[0]?.repo??Se,a.engine,O,n,i);else{let r=await e.client.request(`task.spawn`,Ps({repos:f.map((e,t)=>({repo:o[t]?.repo??e,baseRef:S[e]??``})),branch:w.trim(),engine:a.engine,commandFrom:WD(t,a.engine),engines:n?we.ids:[],prompt:i,begin:n,model:Oe,effort:ke}));c=r.taskIds[0],l=r.groupId}r&&c&&await kD(e.client,c,r,i).then(()=>G(z(`newSession.laterSet`,{time:OD(r)}))).catch(e=>G(yD(e),`error`)),cO=``,ce(),hn.set(null),l?ba(l):c&&e.selectWhenListed(c),t.retryOf&&c&&KD(e,t.retryOf)}catch(e){let t=As(e);t?(cO=``,ce(),hn.set(null),G(e instanceof Error?e.message:String(e),`error`),ba(t)):R(e instanceof Error?e.message:String(e))}finally{F(!1)}},Ne=iO({value:O,onChange:A,area:le,onEnter:()=>void Me()});return(0,V.jsxs)(`div`,{className:OE,children:[(0,V.jsxs)(`div`,{className:kE,children:[(0,V.jsx)(`h1`,{className:`m-0 font-sans text-title font-semibold text-accent`,children:z(`newSession.title`)}),(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:z(`newSession.tagline`)})]}),(0,V.jsxs)(`form`,{className:AE,onSubmit:e=>{e.preventDefault(),Me()},children:[(0,V.jsxs)(`div`,{className:jE,...me?.drop,children:[!pe&&(0,V.jsx)($o,{attachments:ae,onRemove:se}),(0,V.jsx)(`textarea`,{ref:le,className:NE,rows:4,spellCheck:!1,placeholder:z(`newSession.placeholder`),value:O,disabled:P,onPaste:me?.onPaste,...Ne.field}),Ne.list,(0,V.jsxs)(`div`,{className:ME,children:[(0,V.jsx)(`button`,{type:`button`,className:LE(),disabled:P||we.comparing,title:we.comparing?z(`compare.needsPrompt`):void 0,onClick:()=>void Me(!1),children:z(`newSession.createOnly`)}),(0,V.jsx)(`button`,{type:`submit`,className:Pe(),disabled:P,children:z(`newSession.start`)})]})]}),(0,V.jsxs)(`div`,{className:PE,children:[(0,V.jsx)(gD,{machines:ue,value:de,onPick:e=>{fe(e),ve(null),be(``),D(``),R(null),b(!1)}}),(0,V.jsx)(eD,{field:`repo`,title:!pe&&f.length>1?z(`newSession.repoCount`,{count:f.length}):z(`newSession.repo`),label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(XE,{}),js(pe?_e?[_e.ref]:[]:f)||z(y?`rail.noProject`:`newSession.repo`),_e?.clone&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,z(`newSession.cloneTag`)]})]}),children:t=>(0,V.jsx)(MD,{model:e,saved:pe?ge.repos.map(oD):c,picked:pe?_e?[_e.ref]:[]:f,primary:pe?``:Se,home:pe?``:u,query:E,onQuery:D,onToggle:e=>{if(R(null),!pe)return b(!1),p(t=>Ms(t,e));ve({ref:e,clone:!1}),t()},onClone:e=>pe?ve({ref:e,clone:!0}):void Ae(e),close:t,remote:pe?{name:he,empty:mD(de,ge),blocked:ge.problem!==``}:void 0,ungrouped:pe?void 0:{on:y,pick:x}})}),(0,V.jsx)(bD,{remote:pe,remotePick:_e,remoteBase:ye,onRemoteBase:be,ungrouped:y,inPlace:xe,onToggleWorktree:()=>re(!L),repos:f,probes:m,bases:S,onBase:(e,t)=>C(n=>({...n,[e]:t})),branchName:w,onBranchName:T}),me&&(0,V.jsxs)(Yo,{className:`${LE(ae.length>0)} cursor-pointer`,title:z(`newSession.attachHint`),disabled:P,onFiles:e=>void oe(e),children:[(0,V.jsx)(QE,{}),z(`newSession.attach`)]}),!pe&&!y&&!we.comparing&&(0,V.jsx)(AD,{disabled:P,onSchedule:e=>void Me(!1,e),onInvalid:R}),(0,V.jsx)(`span`,{className:FE}),(0,V.jsx)(SD,{choice:a,picks:we,available:Ce}),!xe&&!pe&&!y&&!we.comparing&&(Ee.length>0||De.length>0)&&(0,V.jsx)(CD,{models:Ee,model:Oe,onModel:ee,efforts:De,effort:ke,onEffort:N})]}),P&&I&&(0,V.jsx)(`p`,{className:`text-muted`,"data-field":`clone-progress`,children:I}),ie&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,ie]})]}),!pe&&(0,V.jsx)(`button`,{type:`button`,className:`mt-2 self-center px-1.5 py-0.5 text-subtle focus-visible:text-ink touch:mt-0.5 touch:py-2 [&:hover]:text-ink`,onClick:()=>W.set((0,V.jsx)(BD,{model:e,repo:Se||void 0})),children:z(`newSession.moreWays`)})]})}var uO=[`needs`,`working`,`ready`,`idle`],dO=`~state:`;function fO(e){switch(e.rowStatus?.kind){case`attention`:case`needs-input`:case`unseen`:return`needs`;case`busy`:case`running`:return`working`}switch(e.group){case`waiting-on-you`:return`needs`;case`working`:return`working`;case`landing`:case`ready-for-review`:return`ready`}return e.pr?.lifecycle===`open`||e.status===`done`?`ready`:`idle`}var pO=e=>e&&e.kind!==`main`&&!pw(e)?qC(e.repo):void 0;function mO(e,t){let n=mw(e,t.sort),{children:r,nested:i}=yw([{repo:``,label:``,tasks:n}]),a=n.filter(e=>!i.has(e.id)),o=ew(a),s=e=>{let t=[],n=new Set,i=e=>{if(!n.has(e.id)){n.add(e.id),t.push(e);for(let t of r.get(e.id)??[])i(t)}};return i(e),t},c=new Map;for(let e of a){let t=$C(e),n=((t===null?void 0:o.get(t))??[e]).map(s),r=n.flat().map(fO).reduce((e,t)=>uO.indexOf(t)<uO.indexOf(e)?t:e);for(let e of n)for(let t of e)c.set(t.id,r)}return uO.flatMap(e=>{let t=n.filter(t=>c.get(t.id)===e);return t.length===0?[]:[{repo:``,label:z(`rail.state.${e}`),key:`${dO}${e}`,tasks:t}]})}function hO(e){let t=new Set(e.machines.map(e=>e.alias));return{rows:gO(Sw(mO([...e.tasks.filter(e=>!e.routine),...e.remote.filter(e=>!e.routine&&e.machine!==void 0&&t.has(e.machine.id))],e),e.query,e.fold).map(e=>{if(e.kind!==`project`)return e;let t=e.id.slice(`project:${dO}`.length);return{id:`state:${t}`,kind:`state`,state:t,label:e.label,count:0}})),groups:[]}}function gO(e){let t=new Map,n=``;for(let r of e)r.kind===`state`?n=r.id:r.kind===`task`&&t.set(n,(t.get(n)??0)+1);return e.map(e=>e.kind===`state`?{...e,count:t.get(e.id)??0}:e)}var _O=new Set([`refused`,`timeout`,`host-key-changed`,`host-key-unverified`,`auth-denied`,`unresolved`,`ssh-failed`,`no-rove`,`no-daemon`,`bad-status`,`handshake`,`no-forwarding`,`lost`]);function vO(e){return e&&_O.has(e)?`machines.reason.${e}`:null}function yO(e,t){return e.filter(e=>e.machine?.id===t&&!e.routine&&!e.deleting)}function bO(e){let t=uO.map(e=>({state:e,tasks:[]}));for(let n of e)t[uO.indexOf(fO(n))]?.tasks.push(n);return t.filter(e=>e.tasks.length>0)}var xO=`flex flex-col font-mono text-meta`,SO=`flex flex-col gap-1 border-t-hairline border-line py-2.5 first:border-t-0 first:pt-0`,CO=`flex flex-wrap items-baseline gap-x-2.5 gap-y-0.5`,wO=`min-w-0 text-ink wrap-anywhere`,TO=`m-0 text-muted wrap-anywhere`,EO=`flex flex-wrap gap-x-3.5 gap-y-1 pt-0.5 whitespace-nowrap`,DO=`mt-1.5 mb-0.5 text-subtle`,OO=`flex min-w-0 items-baseline gap-2 pl-2`,kO=`min-w-0 flex-1 truncate text-left`,AO=`min-w-0 max-w-[55%] flex-none truncate text-muted`;function jO(e){W.set((0,V.jsx)(FO,{model:e}))}function MO({model:e,tasks:t}){let n=t=>{Cn(),e.select(t.id),_a()};return bO(t).map(e=>(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:`${DO} m-0`,children:z(`rail.state.${e.state}`)}),e.tasks.map(e=>(0,V.jsxs)(H,{variant:`row`,className:`${OO} w-full rounded-sm py-0.5 hover:bg-hover`,onClick:()=>n(e),children:[(0,V.jsx)(`span`,{className:kO,children:e.label}),(0,V.jsx)(`span`,{className:AO,children:e.branch})]},e.id))]},e.state))}function NO({model:e,alias:t}){let[n,r]=(0,g.useState)(null);return(0,g.useEffect)(()=>{let n=!0;return Ws(e,`machines.repos`,{machine:t}).then(e=>n&&r(e),e=>n&&r({failed:e instanceof Error?e.message:String(e)})),()=>{n=!1}},[e,t]),n?`failed`in n?(0,V.jsx)(`p`,{className:TO,children:z(`machines.reposFailed`,{message:n.failed})}):n.reason?(0,V.jsx)(`p`,{className:TO,children:z(`machines.reposFailed`,{message:n.message??n.reason})}):n.repos.length===0?(0,V.jsx)(`p`,{className:TO,children:z(`machines.noRepos`)}):n.repos.map(e=>(0,V.jsxs)(`div`,{className:OO,children:[(0,V.jsx)(`span`,{className:kO,children:e.id}),(0,V.jsx)(`span`,{className:AO,title:e.primary??e.checkouts[0],children:e.primary??e.checkouts[0]??``})]},e.id)):(0,V.jsx)(`p`,{className:TO,children:z(`machines.loading`)})}function PO(e){let{model:t,row:n,tasks:r,words:i}=e,[a,o]=(0,g.useState)(null),s=n.state===`online`,c=vO(n.reason),l=bO(r).map(e=>`${e.tasks.length} ${z(`rail.state.${e.state}`)}`),u=e=>o(a===e?null:e);return(0,V.jsxs)(`section`,{className:SO,children:[(0,V.jsxs)(`div`,{className:CO,children:[(0,V.jsx)(`span`,{className:`${wO} ${s?``:jT.warning}`,children:SE(n,i)}),(0,V.jsx)(`span`,{className:`text-muted`,children:l.length>0?l.join(` · `):z(`machines.noTasks`)})]}),c&&(0,V.jsx)(`p`,{className:`m-0 text-muted wrap-anywhere`,children:z(c)}),(0,V.jsxs)(`div`,{className:EO,children:[s&&(0,V.jsx)(H,{hit:`tight`,onClick:()=>{Cn(),aO(void 0,n.alias)},children:z(`machines.newHere`)}),r.length>0&&(0,V.jsx)(H,{hit:`tight`,"aria-expanded":a===`tasks`,onClick:()=>u(`tasks`),children:z(a===`tasks`?`machines.hide`:`machines.tasks`)}),s&&(0,V.jsx)(H,{hit:`tight`,"aria-expanded":a===`repos`,onClick:()=>u(`repos`),children:z(a===`repos`?`machines.hide`:`machines.repos`)})]}),a===`tasks`&&(0,V.jsx)(MO,{model:t,tasks:r}),a===`repos`&&(0,V.jsx)(NO,{model:t,alias:n.alias})]})}function FO({model:e}){let t=B(),n=DE(e),r=v(e.remote),i=(t===`zh`?jr:Ar).machine;return(0,V.jsx)(cr,{title:z(`machines.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:`${Rn} ${xO}`,children:[n.length===0&&(0,V.jsx)(`p`,{className:`m-0 text-muted wrap-anywhere`,children:z(`machines.none`)}),n.map(t=>(0,V.jsx)(PO,{model:e,row:t,tasks:yO(r,t.alias),words:i},t.alias))]})})}function IO(e,t,n=300){let r=0,i,a=()=>{r++,i?.(),i=void 0};return{stop:a,run:o=>{a();let s=o.trim();if(s.length<2){t({kind:`idle`});return}let c=r,l=setTimeout(()=>{t({kind:`searching`}),e(s).then(e=>c===r&&t({kind:`done`,query:s,reply:e}),e=>c===r&&t({kind:`failed`,message:e instanceof Error?e.message:String(e)}))},n);i=()=>clearTimeout(l)}}}var LO=`mx-1.5 mt-2 mb-0.5 font-mono text-meta font-semibold normal-nums text-subtle first:mt-0`,RO=`mx-1.5 my-1 text-meta text-muted [overflow-wrap:anywhere]`,zO=e=>`flex w-full min-w-0 cursor-pointer flex-col gap-0.5 rounded-sm px-1.5 py-1.5 text-left text-ink [font:inherit] touch:py-2.5 ${e?`is-selected bg-hover`:``}`,BO=`flex min-w-0 items-baseline gap-2`,VO=`min-w-0 flex-1 truncate text-body`,HO=`whitespace-nowrap text-meta text-muted`,UO=`text-meta text-muted [overflow-wrap:anywhere]`,WO=`rounded-xs bg-accent/25 text-ink`;function GO(e,t){let[n,r]=(0,g.useState)({kind:`idle`});return(0,g.useEffect)(()=>{let n=IO(t=>e.client.request(`sessions.search`,{query:t}),r);return n.run(t),n.stop},[e,t]),n}function KO(e,t){let n=[],r=e.toLowerCase(),i=t.toLowerCase(),a=0;for(let t=r.indexOf(i);i&&t>=0;t=r.indexOf(i,t+i.length))t>a&&n.push(e.slice(a,t)),n.push({hit:e.slice(t,t+i.length),at:t}),a=t+i.length;return n.push(e.slice(a)),n.map(e=>typeof e==`string`?e:(0,V.jsx)(`mark`,{className:WO,children:e.hit},e.at))}function qO({children:e}){return(0,V.jsx)(`h3`,{className:LO,children:e})}function JO({children:e,error:t}){return(0,V.jsx)(`p`,{className:`${RO} ${t?`text-error`:``}`,children:e})}function YO(e){return(0,V.jsx)(H,{variant:`row`,className:zO(e.selected),onMouseEnter:e.onHover,onClick:e.onOpen,children:(0,V.jsxs)(`span`,{className:BO,children:[(0,V.jsx)(`span`,{className:VO,children:e.title}),(0,V.jsx)(`span`,{className:HO,children:e.repo})]})})}function XO(e){let{hit:t}=e;return(0,V.jsxs)(H,{variant:`row`,className:zO(e.selected),onMouseEnter:e.onHover,onClick:e.onOpen,children:[(0,V.jsxs)(`span`,{className:BO,children:[(0,V.jsx)(`span`,{className:VO,children:t.title}),(0,V.jsxs)(`span`,{className:HO,children:[z(t.role===`user`?`search.you`:`search.agent`),` · `,Lo(Date.now()-Date.parse(t.at))]})]}),(0,V.jsx)(`span`,{className:UO,children:KO(t.snippet,e.query)})]})}var ZO=_(`issues`);function QO(e,t,n){return{repo:e.repo,baseBranch:t,prompt:n,worktree:!0}}var $O=.2,ek=[`files`,`chat`,`diff`,`browser`,`quota`];function tk(){return{top:{tabs:[{id:`t1`,kind:`files`}],active:`t1`},bottom:null,ratio:.5,focus:`top`,recent:[`t1`],next:2}}function nk(e){return e.bottom?[[`top`,e.top],[`bottom`,e.bottom]]:[[`top`,e.top]]}function rk(e){let t=e=>Number(e.id.slice(1));return nk(e).flatMap(([,e])=>e.tabs).sort((e,n)=>t(e)-t(n))}function ik(e,t){for(let[n,r]of nk(e)){let e=r.tabs.find(e=>e.id===t);if(e)return{tab:e,name:n,group:r}}return null}function ak(e,t){let n=rk(e).filter(e=>e.kind===t);for(let t of[...e.recent].reverse()){let e=n.find(e=>e.id===t);if(e)return e}return n[0]??null}function ok(e){return e.urls[e.at]??``}function sk(e){return e.slice(e.lastIndexOf(`/`)+1)}function ck(e){try{return new URL(e).host.replace(/^www\./,``)}catch{return e}}function lk(e,t){for(let[n,r]of nk(e))if(r.tabs.some(e=>e.kind===t))return n;return e.bottom?e.focus:`top`}function uk(e,t,n){let r=e.tabs.filter(e=>e.id!==n).map(e=>e.id);for(let e of[...t].reverse())if(r.includes(e))return e;return r[0]??null}function dk(e){let{top:t,bottom:n}=e;n&&n.tabs.length===0&&(n=null),t.tabs.length===0&&n&&([t,n]=[n,null]);let r=new Set([...t.tabs,...n?.tabs??[]].map(e=>e.id)),i=e.recent.filter(e=>r.has(e)),a=e=>e.active&&e.tabs.some(t=>t.id===e.active)?e:{...e,active:uk(e,i)};return{...e,top:a(t),bottom:n&&a(n),recent:i,focus:n?e.focus:`top`}}function fk(e,t,n){return t===`top`?{...e,top:n}:{...e,bottom:n}}function pk(e,t){let n=ik(e,t);if(!n)return e;let{group:r,name:i}=n,a=[...e.recent.filter(e=>e!==t),t];return r.active===t&&e.focus===i&&e.recent.at(-1)===t?e:{...fk(e,i,{...r,active:t}),focus:i,recent:a}}function mk(e){let t=rk(e);if(t.length<=12)return e;let n=new Set(nk(e).map(([,e])=>e.active)),r=t.filter(e=>!n.has(e.id)).sort((t,n)=>e.recent.indexOf(t.id)-e.recent.indexOf(n.id))[0];return r?Dk(e,r.id):e}function hk(e,t,n){let r=`t${e.next}`,i=t===`bottom`&&e.bottom?`bottom`:`top`,a=i===`bottom`&&e.bottom?e.bottom:e.top;return mk(pk(fk({...e,next:e.next+1},i,{...a,tabs:[...a.tabs,n(r)]}),r))}var gk=e=>({id:e,kind:`browser`,urls:[],at:-1});function _k(e,t){return hk(e,t,e=>({id:e,kind:`files`}))}function vk(e,t){return hk(e,t,gk)}function yk(e,t,n){let r=rk(e).find(e=>e.kind===`diff`&&e.path===t);return r?r.kind===`diff`&&r.scope!==n?pk(wk(e,{...r,scope:n}),r.id):pk(e,r.id):hk(e,lk(e,`diff`),e=>({id:e,kind:`diff`,path:t,scope:n}))}function bk(e,t){let n=rk(e).filter(e=>e.kind===`browser`),r=n.find(e=>ok(e)===t);if(r)return pk(e,r.id);let i=n.find(e=>ok(e)===``);return i?Tk(e,i.id,t):Tk(hk(e,lk(e,`browser`),gk),`t${e.next}`,t)}function xk(e,t){let n=ak(e,t);return n?pk(e,n.id):t===`diff`?yk(e,`.`,`working`):hk(e,lk(e,t),e=>t===`files`||t===`chat`||t===`quota`?{id:e,kind:t}:gk(e))}function Sk(e){let t=e.recent.at(-1),n=t?ik(e,t):null,r=n&&n.group.active===t?t:e.top.active;return(r?ik(e,r)?.tab.kind:null)??null}function Ck(e,t,n){return t&&Sk(e)===n?{panel:e,open:!1}:{panel:xk(e,n),open:!0}}function wk(e,t){let n=e=>({...e,tabs:e.tabs.map(e=>e.id===t.id?t:e)});return{...e,top:n(e.top),bottom:e.bottom&&n(e.bottom)}}function Tk(e,t,n){let r=ik(e,t)?.tab;if(r?.kind!==`browser`||ok(r)===n)return e;let i=[...r.urls.slice(0,r.at+1),n].slice(-30);return wk(e,{...r,urls:i,at:i.length-1})}function Ek(e,t,n){let r=ik(e,t)?.tab;return r?.kind!==`browser`||n===r.at||n<0||n>=r.urls.length?e:wk(e,{...r,at:n})}function Dk(e,t){let n=ik(e,t);if(!n)return e;let{group:r}=n,i=r.tabs.filter(e=>e.id!==t),a=e.recent.filter(e=>e!==t),o=r.active===t?uk(r,a,t):r.active;return dk({...fk(e,n.name,{tabs:i,active:o}),recent:a})}function Ok(e,t){return rk(e).reduce((e,n)=>n.id===t?e:Dk(e,n.id),e)}function kk(e,t,n,r){let i=ik(e,t);if(!i)return e;let a=i.group,o=a.tabs.filter(e=>e.id!==t),s=a.tabs.findIndex(e=>e.id===t);if(i.name===n){let c=Math.max(0,Math.min(o.length,(r??o.length)-+(r!==void 0&&r>s)));return pk(c===s?e:fk(e,n,{...a,tabs:[...o.slice(0,c),i.tab,...o.slice(c)]}),t)}let c=e.recent.filter(e=>e!==t),l=fk(e,i.name,{tabs:o,active:a.active===t?uk(a,c,t):a.active}),u=(n===`top`?l.top:l.bottom)?.tabs??[],d=Math.max(0,Math.min(u.length,r??u.length));return pk(dk(fk({...l,recent:c},n,{tabs:[...u.slice(0,d),i.tab,...u.slice(d)],active:t})),t)}function Ak(e,t){let n=Math.max($O,Math.min(.8,t));return Math.abs(n-e.ratio)<.001?e:{...e,ratio:n}}function jk(e,t,n){let r=new Map(n.map(e=>[e.id,e.kind])),i=[...e.filter(e=>r.has(e)&&!t.includes(e)),...t.filter(e=>r.has(e))],a=i.filter(e=>r.get(e)===`browser`),o=new Set(a.slice(0,Math.max(0,a.length-3)).filter(e=>!t.includes(e)));return i=i.filter(e=>!o.has(e)),i}function Mk(e){if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.id!=`string`||!/^t\d+$/.test(t.id))return null;if(t.kind===`files`||t.kind===`chat`||t.kind===`quota`)return{id:t.id,kind:t.kind};if(t.kind===`diff`&&typeof t.path==`string`&&t.path!==``){let e=t.scope===`branch`||t.scope===`task`?t.scope:`working`;return{id:t.id,kind:`diff`,path:t.path,scope:e}}if(t.kind===`browser`&&Array.isArray(t.urls)){let e=t.urls.filter(e=>typeof e==`string`&&e!==``).slice(-30),n=typeof t.at==`number`&&Number.isInteger(t.at)?Math.min(e.length-1,Math.max(-1,t.at)):e.length-1;return{id:t.id,kind:`browser`,urls:e,at:e.length===0?-1:Math.max(0,n)}}return null}function Nk(e,t){if(!e||typeof e!=`object`||!(`tabs`in e)||!Array.isArray(e.tabs))return null;let n=[];for(let r of e.tabs){let e=Mk(r);!e||t.has(e.id)||(t.add(e.id),n.push(e))}return{tabs:n,active:`active`in e&&typeof e.active==`string`?e.active:null}}function Pk(e){if(!e||typeof e!=`object`)return null;let t=e,n=new Set,r=Nk(t.top,n);if(!r)return null;let i=Nk(t.bottom,n),a=Math.max(0,...[...n].map(e=>Number(e.slice(1)))),o=typeof t.ratio==`number`&&Number.isFinite(t.ratio)?t.ratio:.5;return dk({top:r,bottom:i,ratio:Math.max($O,Math.min(.8,o)),focus:t.focus===`bottom`?`bottom`:`top`,recent:Array.isArray(t.recent)?t.recent.filter(e=>typeof e==`string`):[],next:Math.max(a+1,typeof t.next==`number`&&Number.isInteger(t.next)?t.next:0)})}function Fk(e,t){let n=tk(),r=typeof t==`string`&&t!==``?t:``;if(e!==`browser`&&!r)return n;let i=vk(n,`top`),a=r?Tk(i,`t2`,r):i;return e===`browser`?a:pk(a,`t1`)}function Ik(e){try{let t=JSON.parse(e??`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?Object.entries(t):[]}catch{return[]}}function Lk(e,t,n){let r=Object.fromEntries(Object.entries(e).filter(([e])=>e!==t));r[t]=n;for(let e of Object.keys(r).slice(0,-50))delete r[e];return r}function Rk(e,t){let n={};for(let[t,r]of Ik(e)){let e=Pk(r);e&&(n[t]=e)}let r=new Map(Ik(t.tab).filter(([,e])=>ek.includes(e))),i=new Map(Ik(t.url)),a=[...new Set([...r.keys(),...i.keys()])].filter(e=>!(e in n));n={...Object.fromEntries(a.map(e=>[e,Fk(r.get(e),i.get(e))])),...n};for(let e of Object.keys(n).slice(0,-50))delete n[e];return n}var zk=[`files`,`diff`,`browser`];function Bk(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.taskId==`string`&&t.taskId!==``&&zk.includes(t.view)&&typeof t.at==`number`&&(t.url===void 0||typeof t.url==`string`)&&(t.path===void 0||typeof t.path==`string`)}function Vk(e){return e.narrow?{panel:!1,panelOpen:!1,narrow:!0}:{panel:!0,panelOpen:e.panelOpen&&!e.zen,narrow:!1}}function Hk(e,t){return{tab:e.path?`diff`:e.view,...e.view===`browser`&&e.url?{url:e.url}:{},...e.view!==`browser`&&e.path?{diff:e.path}:{},show:t.taskId===e.taskId&&!t.narrow}}function Uk(e,t){return t.url?bk(e,t.url):t.diff?yk(e,t.diff,`working`):xk(e,t.tab)}var Wk=`rove.web.panels`,Gk=`rove.web.panelTab`,Kk=`rove.web.panelUrl`;function qk(){let e={tab:localStorage.getItem(Gk),url:localStorage.getItem(Kk)},t=Rk(localStorage.getItem(Wk),e);return(e.tab!==null||e.url!==null)&&(localStorage.setItem(Wk,JSON.stringify(t)),localStorage.removeItem(Gk),localStorage.removeItem(Kk)),t}var Jk=_(qk()),Yk=tk();function Xk(e){return v(Jk)[e]??Yk}function Zk(e,t){let n=Jk.get()[e]??Yk,r=t(n);if(r===n)return;let i=Lk(Jk.get(),e,r);Jk.set(i),localStorage.setItem(Wk,JSON.stringify(i))}function Qk(e,t){Zk(e,e=>xk(e,t)),qa.set(!0),Ca()&&Ua.set(t)}function $k(e,t){let n=Ck(Jk.get()[e]??Yk,qa.get()&&!mn.get(),t);Zk(e,()=>n.panel),qa.set(n.open),n.open&&mn.get()&&mn.set(!1)}function eA(e){Zk(e.taskId,t=>yk(t,e.path,e.scope)),qa.set(!0),mn.get()&&mn.set(!1),Ca()&&Ua.set(`diff`)}function tA(e,t){Zk(e,e=>bk(e,t)),qa.set(!0),mn.get()&&mn.set(!1),Ca()&&Ua.set(`browser`)}function nA(e,t){Zk(e,e=>Dk(e,t));let n=Ua.get();Ca()&&n!==`terminal`&&!ak(Jk.get()[e]??Yk,n)&&Qk(e,`files`)}function rA(e,t){let n=Hk(e,{taskId:t,narrow:Ca()});Zk(e.taskId,e=>Uk(e,n)),n.show&&(qa.set(!0),mn.get()&&mn.set(!1))}var iA=_(null),aA=0;function oA(e,t){iA.set({taskId:e,hit:t,nonce:++aA}),Qk(e,`chat`),mn.get()&&mn.set(!1)}var sA=10;function cA(e,t){let n=e=>e.surface===t?0:e.surface?1:2,r=$i().filter(n=>ea(n,t)&&n.live?.(e)!==!1).map((e,t)=>({command:e,index:t})).sort((e,t)=>n(e.command)-n(t.command)||Number(e.command.prefix)-Number(t.command.prefix)||e.index-t.index),i=new Set,a=[];for(let{command:e}of r){let t=e.chords[0];!t||e.id===`palette.open`||i.has(e.id)||(i.add(e.id),a.push({command:e,name:To(e.id),raw:e.prefix?`${ti()} + ${t}`:t}))}return a}function lA(e){let t=document.activeElement instanceof HTMLElement?document.activeElement:null;W.set((0,V.jsx)(dA,{model:e,surface:na(),origin:t}))}var uA=8;function dA({model:e,surface:t,origin:n}){B();let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(0),s=(0,g.useRef)(null),c=v(Xr),l=v(e.tasks),u=v(e.remote),d=(0,g.useMemo)(()=>cA(e,t),[e,t,c]).filter(e=>fo(r,e.name,e.raw)),f=(DE(e).length>0?[{name:z(`machines.title`)}]:[]).filter(e=>fo(r,e.name,``)),p=r.trim(),m=p===``?[]:[...l?.tasks??[],...u].filter(e=>!e.routine&&!e.deleting&&[e.label,e.title,e.branch,qC(e.repo)].some(e=>e!==``&&no(p,e))).slice(0,uA),h=v(e.installedMods).has(`issues`),_=[{id:`usage`,name:z(`usage.title`)},...h?[{id:`issues`,name:z(`reviewQueue.palette`),source:`reviews`}]:[]].filter(e=>p===``||no(p,e.name)),y=GO(e,r),b=y.kind===`done`?y.reply.matches:[],x=[...d.map(e=>({kind:`command`,row:e})),..._.map(e=>({kind:`page`,...e})),...f.map(e=>({kind:`machines`,...e})),...m.map(e=>({kind:`task`,task:e})),...b.map(e=>({kind:`hit`,hit:e}))],S=Math.min(a,Math.max(0,x.length-1));(0,g.useEffect)(()=>()=>n?.focus(),[n]),(0,g.useEffect)(()=>{s.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[S]);let C=t=>{if(t.kind===`machines`){jO(e);return}if(Cn(),n?.focus(),t.kind===`command`){t.row.command.live?.(e)===!1?G(So(`unavailable`),`error`):t.row.command.run(e);return}if(t.kind===`page`){t.source&&ZO.set(t.source),ya(t.id);return}t.kind===`task`?e.select(t.task.id):e.select(t.hit.taskId,t.hit.tabId??null),_a(),t.kind===`hit`&&oA(t.hit.taskId,t.hit)},w=e=>{if(e.key===`ArrowDown`)o(Math.min(x.length-1,S+1));else if(e.key===`ArrowUp`)o(Math.max(0,S-1));else if(e.key===`Enter`){let e=x[S];e&&C(e)}else return;e.preventDefault()},T=p!==``&&(m.length>0||p.length>=2),E=0,D=()=>E++;return(0,V.jsx)(cr,{title:So(`palette`),wide:!0,children:(0,V.jsxs)(`div`,{className:`${Rn} palette`,onKeyDown:w,children:[(0,V.jsx)(`input`,{className:pt,autoFocus:!0,spellCheck:!1,value:r,placeholder:So(`search`),onChange:e=>{i(e.target.value),o(0)}}),(0,V.jsxs)(`div`,{className:ut,ref:s,style:{maxHeight:`${(T?18:sA)*1.9}em`},children:[x.length===0&&y.kind!==`searching`&&(0,V.jsx)(`p`,{className:`text-muted`,children:So(`noResults`)}),T&&d.length>0&&(0,V.jsx)(qO,{children:z(`search.commands`)}),d.map(e=>{let t=D();return(0,V.jsx)(`button`,{type:`button`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`command`,row:e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},e.command.id)}),_.map(e=>{let t=D();return(0,V.jsx)(H,{variant:`row`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`page`,...e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},e.id)}),f.map(e=>{let t=D();return(0,V.jsx)(H,{variant:`row`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`machines`,...e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},`machines`)}),m.length>0&&(0,V.jsx)(qO,{children:z(`search.tasks`)}),m.map(e=>{let t=D();return(0,V.jsx)(YO,{title:e.label,repo:qC(e.repo),selected:t===S,onHover:()=>o(t),onOpen:()=>C({kind:`task`,task:e})},e.id)}),y.kind!==`idle`&&(0,V.jsx)(qO,{children:z(`search.inConversations`)}),y.kind===`searching`&&(0,V.jsx)(JO,{children:z(`search.searching`)}),y.kind===`failed`&&(0,V.jsx)(JO,{error:!0,children:y.message}),y.kind===`done`&&b.length===0&&(0,V.jsx)(JO,{children:z(`search.none`,{query:y.query})}),b.map(e=>{let t=D();return(0,V.jsx)(XO,{hit:e,query:y.kind===`done`?y.query:``,selected:t===S,onHover:()=>o(t),onOpen:()=>C({kind:`hit`,hit:e})},`${e.taskId}:${e.tabId??``}:${e.at}:${t}`)}),y.kind===`done`&&y.reply.truncated&&(0,V.jsx)(JO,{children:z(`search.truncated`)}),y.kind===`done`&&y.reply.skipped.length>0&&(0,V.jsx)(JO,{children:z(`search.skipped`,{count:y.reply.skipped.length})})]}),(0,V.jsx)(`p`,{className:`keys-only text-muted`,children:So(`run`)})]})})}var fA=_(null);function pA(e){let t=(document.activeElement?.closest(`.rail`)==null?null:fA.get())??e.selection.get().taskId;return e.tasks.get()?.tasks.find(e=>e.id===t)??null}t(((e,t)=>{t.exports={}}))();var mA={$schema:`https://json.schemastore.org/package.json`,name:`@sma1lboy/rove`,version:`0.9.277`,description:`Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.`,keywords:[`terminal`,`tui`,`cli`,`multiplexer`,`ai-agents`,`coding-agent`,`ai-coding-assistant`,`agentic-ai`,`parallel-agents`,`git-worktree`,`claude-code`,`codex`,`llm`,`developer-tools`],type:`module`,packageManager:`bun@1.3.13`,bin:{rove:`dist/cli/rove.js`},files:[`dist/cli`,`dist/completions`,`dist/web`,`dist/web-ui`,`dist/skills`,`dist/*.wav`,`README.md`,`LICENSE`],publishConfig:{access:`public`},repository:{type:`git`,url:`git+https://github.com/Sma1lboy/rove.git`},homepage:`https://rove.run`,bugs:{url:`https://github.com/Sma1lboy/rove/issues`},engines:{bun:`>=1.3.11`},scripts:{dev:`ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts`,"dev:mock":`ROVE_DEV=1 bun ./src/tui-react/mock/host.tsx`,"dev:sandbox":`bun run scripts/dev-sandbox.ts run`,"dev:sandbox:reset":`bun run scripts/dev-sandbox.ts reset`,build:`bun run scripts/build.ts`,"build:rubric":`bun run scripts/build-tier-rubric.ts`,compile:`bun run scripts/compile.ts`,typecheck:`tsc --noEmit`,"check-i18n":`bun run scripts/check-i18n.ts`,test:`bun run test:fast && bun run test:socket`,"perf:golden":`bun scripts/perf-golden.ts`,"pty:soak":`bun scripts/pty-soak.ts`,"test:fast":`vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8`,"test:socket":`ROVE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests`,"test:socket:coverage":`ROVE_INCLUDE_SOCKET=1 ROVE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests`,"test:behavior":`ROVE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests`,"test:render":`bun scripts/render-track.mjs`,coverage:`vitest run --coverage --passWithNoTests`,bench:`vitest bench --run`,lint:`biome check .`,knip:`knip-bun`,postinstall:`bun run scripts/check-preview-deps.ts || true`,prepublishOnly:`bun run typecheck && bun run build`,"plugin-sandbox":`bun run scripts/plugin-sandbox.ts`},"//":`biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).`,dependencies:{"@ansi-tools/parser":`^1.0.15`,"@opentui/core":`0.4.3`,"@opentui/react":`0.4.3`,"@xterm/addon-serialize":`^0.14.0`,"@xterm/addon-unicode11":`^0.9.0`,"@xterm/headless":`^6.0.0`,react:`^19.2.8`,"smol-toml":`^1.7.1`,ws:`^8.21.3`},optionalDependencies:{"node-pty":`^1.1.0`},devDependencies:{"@biomejs/biome":`1.9.4`,"@sma1lboy/rove-daemon":`0.7.23`,"@tsconfig/bun":`1.0.11`,"@types/bun":`1.3.14`,"@types/node":`25.6.2`,"@types/react":`^19.2.0`,"@vitest/coverage-v8":`2.1.9`,knip:`^6.14.2`,"react-devtools-core":`^7.0.1`,"rove-bridge":`0.0.38`,"rove-weixin":`0.0.38`,typescript:`5.8.2`,vitest:`2.1.9`},trustedDependencies:[]};mA.version,mA.name;var hA=[`latest`,`next`,`nightly`],gA={autoRouting:{title:`Auto routing`,hint:"Routing by depth: a task says how deep the work is — swift, standard, deep — and this table says which engine, model and reasoning effort that depth runs on. Pick a depth in the new-task dialog (or `rove api add --tier`) and Rove fills those three fields from the row; you still see them and can change them before the task starts. enter (or click) a row to point it somewhere else, with the same picker a task uses. A row whose target cannot start says why here, not at launch.",unconfigured:`Auto routing is off: a depth has nowhere to route — its engine is blank. Point it somewhere below, or remove the empty autoRouting.<tier>.engine from state.json.`,engineDefault:`engine default`,ready:`● ready`,unavailable:`! unavailable — {reason}`,classifierTitle:`Classifier`,classifierHint:"The rows above say what each depth RUNS. This says who CHOOSES one: switch it on and `rove api add --tier auto` reads the task's first message and picks the depth for you. It is off by default, it is never required, and it can never fail a create — no key, no network, a timeout, or an answer it is not confident enough about all leave you on the depth you would have had.",classifierDataFlow:"! Turning the classifier on sends the task's first message to a third party that is NOT the engine vendor you picked — TypeSafe System One for `jev`, or whatever address you point `custom` at. It reads the text before your engine does. Nothing leaves this machine while it is off.",classifierLabel:`Choose with`,classifierOff:`off`,classifierCustomLabel:`custom`,classifierOffHint:`— nothing is sent anywhere`,classifierJevHint:`— TypeSafe System One, billed to your own key`,classifierCustomHint:`— your endpoint: POST the text, answer with a depth and a confidence`,endpointLabel:`Endpoint`,endpointUnset:`(none — enter one, then set Choose with to custom)`,endpointTitle:`Custom classifier endpoint`,endpointField:`URL`,endpointInvalidTitle:`Not a URL`,endpointInvalidBody:`The endpoint has to start with https://, or http:// for a loopback address (127.0.0.1, localhost, ::1) — over a network, plain http would carry the task's first 1,200 characters in cleartext. Leave it empty to clear it.`,thresholdLabel:`Confidence floor`,thresholdHint:`— below this, the depth is left alone`,thresholdTitle:`Confidence floor`,thresholdField:`0 to 1`,thresholdInvalidTitle:`Not a confidence`,thresholdInvalidBody:`The floor is a number between 0 and 1. 0.5 is the shipped default.`,keyLabel:`API key`,keyStored:`stored {hint} — enter to replace, empty to clear`,keyFromEnv:"from ${env} — the environment wins over a stored key",keyNone:`not set — enter to paste one`,keyTitle:`{env}`,keyPlaceholder:`paste the key; leave empty to clear the stored one`,keySaved:`● key stored in ~/.rove/secrets.json (owner-only, never in state.json)`,keyCustomUnused:`● no Authorization header is sent to a custom endpoint — set autoRouting.classifierCustomKeyEnv to the variable holding its key if it needs one`,keyNoVariableTitle:`No key variable for this endpoint`,keyNoVariableBody:`A custom classifier endpoint is sent no Authorization header until autoRouting.classifierCustomKeyEnv names the variable its key lives in. Set that first — a key stored under a name nothing reads is a key at rest for no purpose.`,keyWriteFailedTitle:`Key not saved`,keyWriteFailedBody:`~/.rove/secrets.json could not be written: {reason}. Check directory permissions and disk space, then save again.`,keyMissing:`! no key — nothing is chosen and tasks keep their usual depth`,keyPresentEnv:"● key read from ${env} in this process's environment"}},_A={autoRouting:{title:`自动路由`,hint:"按深度路由:任务说明这活有多深——轻快、标准、深入——这张表说明那一档跑在哪个引擎、哪个模型、哪个推理强度上。在新建任务对话框里选一档(或 `rove api add --tier`),Rove 就照那一行填进这三个字段;任务启动前你仍然看得见、改得了。enter(或点击)某一行,用和任务一样的选择器把它指到别处。目标起不来的行会在这里说明原因,而不是等到启动时才炸。",unconfigured:`自动路由已关闭:有一档无处可去——它的引擎是空的。在下面把它指到某个引擎,或从 state.json 里删掉空的 autoRouting.<tier>.engine。`,engineDefault:`引擎默认`,ready:`● 可用`,unavailable:`! 不可用——{reason}`,classifierTitle:`分类器`,classifierHint:"上面几行说的是每一档**跑什么**,这里决定**由谁来选**:打开之后,`rove api add --tier auto` 会读任务的第一句话替你选档。默认关着,从来不是必需的,也永远不会让建 task 失败——没 key、断网、超时、或者它自己没把握,都只是让你停在本来就会用的那一档上。",classifierDataFlow:"! 打开分类器,任务的第一句话会发给一个**不是你选的那个引擎厂商**的第三方——`jev` 是 TypeSafe System One,`custom` 是你自己填的地址。它比你的引擎更早读到这段文字。关着的时候什么都不发。",classifierLabel:`选档方式`,classifierOff:`关`,classifierCustomLabel:`自定义`,classifierOffHint:`——不向任何地方发送`,classifierJevHint:`——TypeSafe System One,走你自己的 key 计费`,classifierCustomHint:`——你自己的接口:POST 那段文本,返回一个档位加一个置信度`,endpointLabel:`接口地址`,endpointUnset:`(未填——先填一个,再把「选档方式」切到自定义)`,endpointTitle:`自定义分类器接口`,endpointField:`URL`,endpointInvalidTitle:`不是一个 URL`,endpointInvalidBody:`接口地址要以 https:// 开头;http:// 只在回环地址(127.0.0.1、localhost、::1)上接受——发到网络上的话,明文 http 会把任务的前 1200 个字符原样带走。留空则清除。`,thresholdLabel:`置信度下限`,thresholdHint:`——低于这个值就不动档位`,thresholdTitle:`置信度下限`,thresholdField:`0 到 1`,thresholdInvalidTitle:`不是一个置信度`,thresholdInvalidBody:`下限是 0 到 1 之间的数。出厂默认 0.5。`,keyLabel:`API key`,keyStored:`已存 {hint}——enter 可替换,留空清除`,keyFromEnv:"来自环境变量 ${env}——环境变量优先于存起来的那个",keyNone:`未设置——enter 粘贴一个`,keyTitle:`{env}`,keyPlaceholder:`粘贴 key;留空则清除已存的那个`,keySaved:`● key 存在 ~/.rove/secrets.json(仅本人可读,不会进 state.json)`,keyCustomUnused:`● 自定义接口不会收到 Authorization 头——它若需要凭据,把 autoRouting.classifierCustomKeyEnv 指向存它的变量`,keyNoVariableTitle:`这个接口还没有 key 变量`,keyNoVariableBody:`在 autoRouting.classifierCustomKeyEnv 指定存 key 的变量之前,自定义分类器接口不会收到任何 Authorization 头。先设那个——存在一个没人读的名字下面的 key,只是白白落在盘上。`,keyWriteFailedTitle:`key 没存下`,keyWriteFailedBody:`写不了 ~/.rove/secrets.json:{reason}。请检查目录权限和磁盘空间,再次保存。`,keyMissing:`! 没有 key——不会替你选档,任务保持原来的档位`,keyPresentEnv:"● key 来自本进程环境变量 ${env}"}},vA={dev:{reset:`Reset UI state`,resetHint:`Clears ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove — relaunch to start fresh. Working session list, pane sizes, theme, model picks all reset. Worktrees on disk and engine session history are not touched.`,resetButton:`[enter] Reset`,restart:`Restart backend`,restartHint:`Stops the Rove daemon and relaunches this window on the installed build — picks up daemon / orchestrator / engine edits without quitting by hand. Running engine sessions live in the PTY host and survive it; other attached Rove windows reconnect on their own.`,restartButton:`[enter] Restart`,reload:`Reload settings`,reloadHint:"Applies hand edits to ~/.config/rove/state.json (from `rove config`) to this window without a restart.",reloadButton:`[enter] Reload`,reloadDone:`Reloaded: {count} changed.`,reloadUnchanged:`Already matches state.json; nothing changed.`,reloadFailed:`state.json could not be read, nothing changed: {error}`,doctorHint:"Daemon wedged or unresponsive? Restart backend above does it from here; from a shell it is `rove daemon restart`. Hosted engine sessions stay alive across a daemon restart.",experimental:`Experimental`,remoteHint:"Remote projects (SSH): register a project whose git worktrees live on another host, driven from this local Rove. Unfinished — Hosted PTY engine launch over SSH is not implemented, and file/diff panes still degrade. Enables `rove add --remote`.",remote:`Remote projects`,autoStatusHint:`Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.`,autoStatus:`Auto status flow`,dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`rove api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`rove api dispatch`). Web-hosted sessions receive the relays today.",dispatcher:`Field-notes dispatcher`}},yA={dev:{reset:`重置 UI 状态`,resetHint:`清空 ~/.config/rove/state.json 和 ~/.rove/tasks.json,然后退出 Rove——重新启动即可从头开始。工作会话列表、面板尺寸、主题、模型选择都会重置。磁盘上的 worktree 和引擎会话历史不受影响。`,resetButton:`[enter] 重置`,restart:`重启后端`,restartHint:`停止 Rove daemon,并以已安装的版本重新启动当前窗口——无需手动退出即可应用 daemon / orchestrator / engine 的改动。正在运行的引擎会话由 PTY host 托管,不受影响;其他已连接的 Rove 窗口会自行重连。`,restartButton:`[enter] 重启`,reload:`重新加载设置`,reloadHint:"把对 ~/.config/rove/state.json 的手动修改(来自 `rove config`)应用到当前窗口,无需重启。",reloadButton:`[enter] 重新加载`,reloadDone:`已重新加载:{count} 项有变化。`,reloadUnchanged:`已与 state.json 一致,没有变化。`,reloadFailed:`无法读取 state.json,未做任何改动:{error}`,doctorHint:"daemon 卡住或无响应?上面的「重启后端」就能在这里完成;在 shell 里则是 `rove daemon restart`。Hosted PTY 引擎会话不会因 daemon 重启而退出。",experimental:`实验性`,remoteHint:"远程项目(SSH):注册一个 git worktree + 引擎都通过 SSH 跑在另一台主机上、由本地 Rove 驱动的项目。尚未完成——文件/diff 面板对远程仍会降级。启用 `rove add --remote`。",remote:`远程项目`,autoStatusHint:`自动状态流转:backlog 任务在其引擎开始一轮时移到 in_progress,新会话会拿到一条系统提示,告诉 agent 完成后自行设为 in_review。绝不触碰 done/canceled。`,autoStatus:`自动状态流转`,dispatcherHint:"现场笔记调度器:任务会话提交一行经验(`rove api note`),daemon 将每条转发给仓库的主会话,主会话再把它们转达给能受益的进行中任务(`rove api dispatch`)。目前由 Web 托管的会话会收到转达。",dispatcher:`现场笔记调度器`}},bA={engines:{title:`Engines`,hint:`Engines Rove can start on this machine. New tasks start with the default engine; switch an engine off to stop offering it.`,keys:`space available · d default · enter launch command · r rename · x reset/remove`,customTag:`custom`,available:`available`,off:`off`,defaultMark:`default`,makeDefault:`Make default`,status:{checking:`Checking…`,unknown:`Status unknown`,ready:`Ready`,notInstalled:`Not installed`,notOnPath:`Not on PATH`,signIn:`Sign in needed`,integrationMissing:`Integration not installed`,integrationOutdated:`Integration outdated`,integrationBlocked:`Integration blocked`},detail:{program:`Program`,command:`Command`,signIn:`Sign-in`,reporting:`Live status`,adapter:`Adapter`,programFound:`{binary} found at {path}.`,programMissing:`{binary} is not on PATH. Install the engine's CLI, or point its launch command at it.`,programUnknown:`Rove could not check for {binary}.`,commandDefault:`{command} (the default)`,commandCustom:`{command} (yours)`,signedIn:`Signed in.`,signedInAs:`Signed in as {who}.`,apiKey:`An API key is configured.`,token:`A token is configured ({source}).`,signedOut:`Not signed in. Sign in with the engine's own CLI.`,signInUnknown:`Rove can't see whether this engine is signed in.`,signInFailed:`Sign-in check failed: {error}`,hooksInstalled:`Rove's hooks are installed, so tabs report their state as it changes.`,hooksOutdated:`Rove's hooks are from an older version; reinstall them under Engine integrations.`,hooksMissing:`Rove's hooks are not installed; install them under Engine integrations.`,hooksAwaitEngine:`Rove's hooks can be installed once the engine is.`,hooksUnsupported:`This engine has no hooks for Rove to install.`,hooksBlocked:`Rove can't write its hooks into {file}: {reason}`,hooksBlockedHere:`Rove can't write its hooks into the engine's config: {reason}`,markersYes:`It leaves turn-complete markers that Rove reads back.`,markersNo:`It leaves no turn-complete markers.`,screenYes:`Screen rules cover what the hooks don't.`,screenNo:`No screen rules.`,screenNotNeeded:`No screen rules; the hooks report everything.`,adapterDeclared:`Borrows the {protocol} adapter.`,adapterGeneric:`Generic adapter: no transcript reader, sign-in check or resume.`,skill:`Rove skill`,skillInstalled:`Installed in {dir}.`,skillInstalledHere:`Installed and current.`,skillOutdated:`From an older Rove; reinstall it under Rove agent skill.`,skillMissing:`Not installed; install it under Rove agent skill.`},skill:{title:`Rove agent skill`,hint:`Teaches the agent in each engine to drive Rove itself (rove api): start tasks, read other sessions, message them.`,install:`Install ({count})`,noEngines:`No engine here takes the skill`,failed:`Install failed: {reason}`,bannerTitle:`ROVE SKILL NOT INSTALLED`,bannerHint:`{engines} can't drive Rove yet (start tasks, read other sessions). Click here to install.`,bannerHintWeb:`{engines} can't drive Rove yet (start tasks, read other sessions).`},integrations:{title:`Engine integrations`,hint:`Hooks Rove writes into each engine's own config, so a tab shows working, waiting or done the moment it happens.`,summary:`{installed} of {total} installed`,install:`Install missing ({count})`,upToDate:`All up to date`,remove:`Remove all ({count})`,noneInstalled:`Nothing to remove`},addEngine:`+ Add engine`,launchCommandTitle:`{name} launch command`,displayNameTitle:`{name} display name (blank = default)`,addTitle:`Add engine`,addStepTitle:`Add engine · {id}`,protocolTitle:`Add engine · {id} — protocol`,protocolNone:`None — generic adapter`,protocolFooter:`↑↓ choose · enter pick · esc cancel`,protocolRow:`protocol {protocol}`,protocolGeneric:`generic`,idPlaceholder:`lowercase slug, e.g. aider`,commandPlaceholder:`e.g. aider --model sonnet`,hookTrustHint:`Open {command} in the engine and approve hooks yourself. Written hooks are not proof of trust.`,readiness:`CLI: {cli} · login: {login} · hooks: {hooks}`,cliReady:`available`,cliMissing:`missing; install the engine CLI`,loginReady:`detected`,loginMissing:`sign in with the engine CLI`,readinessUnknown:`not observable`,hooksWritten:`written`,hooksMissing:`not written; Settings → Engines`,hooksOutdated:`outdated; Settings → Engines`,hookWaiting:`No hook event received yet. After approval, send a short prompt to verify activity.`,hookReceived:`Hook event recorded for this tab. Send a short prompt to check current reporting; current trust is not inferred.`,readinessFailed:`Readiness check unavailable; run rove doctor. No authorization is inferred.`},accounts:{checking:`Checking…`,notLoggedIn:`○ Not logged in`,loggedIn:`● Logged in: {email}`,apiKeyConfigured:`● API key configured`,chatgptLogin:`● ChatGPT login: {email}`,tokenConfigured:`● Token configured ({source})`,detected:`● Login detected`}},xA={engines:{title:`引擎`,hint:`Rove 能在这台机器上启动的引擎。新任务默认用「默认」引擎;关掉某个引擎,选引擎时就不再列出它。`,keys:`space 可用 · d 设为默认 · enter 启动命令 · r 重命名 · x 重置/移除`,customTag:`自定义`,available:`可用`,off:`已关`,defaultMark:`默认`,makeDefault:`设为默认`,status:{checking:`检查中…`,unknown:`状态未知`,ready:`就绪`,notInstalled:`未安装`,notOnPath:`不在 PATH 上`,signIn:`需要登录`,integrationMissing:`未安装接入`,integrationOutdated:`接入已过期`,integrationBlocked:`接入被拒绝`},detail:{program:`程序`,command:`命令`,signIn:`登录`,reporting:`实时状态`,adapter:`适配器`,programFound:`{binary} 位于 {path}。`,programMissing:`{binary} 不在 PATH 上。请安装引擎 CLI,或把启动命令指向它。`,programUnknown:`Rove 无法检查 {binary}。`,commandDefault:`{command}(默认)`,commandCustom:`{command}(自定义)`,signedIn:`已登录。`,signedInAs:`已登录:{who}。`,apiKey:`已配置 API key。`,token:`已配置 Token({source})。`,signedOut:`未登录。请用引擎自己的命令行登录。`,signInUnknown:`Rove 无法得知该引擎是否已登录。`,signInFailed:`登录检查失败:{error}`,hooksInstalled:`Rove 的钩子已安装,标签页的状态会实时上报。`,hooksOutdated:`Rove 的钩子来自旧版本;请在「引擎接入」里重新安装。`,hooksMissing:`Rove 的钩子未安装;请在「引擎接入」里安装。`,hooksAwaitEngine:`引擎安装后才能装 Rove 的钩子。`,hooksUnsupported:`该引擎没有可供 Rove 安装的钩子。`,hooksBlocked:`Rove 无法把钩子写入 {file}:{reason}`,hooksBlockedHere:`Rove 无法把钩子写入引擎配置:{reason}`,markersYes:`它会留下回合完成标记,Rove 可以读回。`,markersNo:`它不留下回合完成标记。`,screenYes:`读屏规则兜底钩子覆盖不到的状态。`,screenNo:`没有读屏规则。`,screenNotNeeded:`没有读屏规则;钩子已报全所有状态。`,adapterDeclared:`借用 {protocol} 适配器。`,adapterGeneric:`通用适配器:没有会话记录读取、登录检查和恢复。`,skill:`Rove 技能`,skillInstalled:`已安装在 {dir}。`,skillInstalledHere:`已安装,是最新版。`,skillOutdated:`来自旧版 Rove;请在「Rove 智能体技能」里重新安装。`,skillMissing:`未安装;请在「Rove 智能体技能」里安装。`},skill:{title:`Rove 智能体技能`,hint:`教会各引擎里的智能体自己操作 Rove(rove api):开任务、读其他会话、给它们发消息。`,install:`安装({count})`,noEngines:`这台机器上没有能装技能的引擎`,failed:`安装失败:{reason}`,bannerTitle:`ROVE 技能未安装`,bannerHint:`{engines} 还不能操作 Rove(开任务、读其他会话)。点这里安装。`,bannerHintWeb:`{engines} 还不能操作 Rove(开任务、读其他会话)。`},integrations:{title:`引擎接入`,hint:`Rove 写进各引擎自身配置的钩子,让标签页在工作、等待、完成的那一刻就显示出来。`,summary:`已安装 {installed}/{total}`,install:`安装缺失的({count})`,upToDate:`全部已是最新`,remove:`全部移除({count})`,noneInstalled:`没有可移除的`},addEngine:`+ 添加引擎`,launchCommandTitle:`{name} 的启动命令`,displayNameTitle:`{name} 的显示名称(留空 = 默认)`,addTitle:`添加引擎`,addStepTitle:`添加引擎 · {id}`,protocolTitle:`添加引擎 · {id} —— 协议`,protocolNone:`无 —— 通用适配器`,protocolFooter:`↑↓ 选择 · enter 确认 · esc 取消`,protocolRow:`协议 {protocol}`,protocolGeneric:`通用`,idPlaceholder:`小写短名,如 aider`,commandPlaceholder:`如 aider --model sonnet`,hookTrustHint:`在引擎中打开 {command},由你自行批准 hooks。写入不代表已授权。`,readiness:`CLI:{cli} · 登录:{login} · hooks:{hooks}`,cliReady:`可用`,cliMissing:`缺失;请安装引擎 CLI`,loginReady:`已检测到`,loginMissing:`请通过引擎 CLI 登录`,readinessUnknown:`无法观测`,hooksWritten:`已写入`,hooksMissing:`未写入;设置 → 引擎`,hooksOutdated:`已过时;设置 → 引擎`,hookWaiting:`尚未收到 hook 事件。授权后发送一条简短提示,验证活动状态。`,hookReceived:`已记录此标签页的 hook 事件。发送简短提示以检查当前上报;不据此推断当前授权。`,readinessFailed:`无法检查就绪状态;请运行 rove doctor。不会据此推断已授权。`},accounts:{checking:`检查中…`,notLoggedIn:`○ 未登录`,loggedIn:`● 已登录: {email}`,apiKeyConfigured:`● 已配置 API key`,chatgptLogin:`● ChatGPT 登录: {email}`,tokenConfigured:`● 已配置 Token ({source})`,detected:`● 检测到登录`}},SA={plugins:{title:`Plugins`,hint:"Rove's first-party mods first: enter (or click) installs or uninstalls one, and uninstalling keeps its data on disk. Then the plugins registered in ~/.rove/plugins.json: enter toggles one on or off — the daemon watches the file, so the change applies live. Rows indented under a plugin are the settings it declares; enter edits one, and the value reaches the plugin on its next run. Install and remove them from the shell: `rove plugin install <owner/repo>`, `rove plugin link <dir>`.",empty:"Kanban and Issues are first-party mods: enter (or click) installs one. No other plugins registered; add one with `rove plugin install <owner/repo>` — browse the `rove-plugin` topic on GitHub.",sourceLink:`linked {path}`,sourceGithub:`{spec}`,sourceBuiltIn:`first-party mod · not installed`,sourceBuiltInInstalled:`first-party mod · installed`,updateAvailable:`update available — rove plugin update`,declares:`{actions} actions · {events} events · {panes} panes`,declaresWithEngines:`{actions} actions · {events} events · {panes} panes · {engines} engines`,declaresPages:`· {pages} pages`,pageFailed:`page {detail}`,manifestUnreadable:`manifest unreadable; check the rove-plugin.toml path and TOML syntax`,unsupportedPlatform:`· not supported on this platform`,noHooks:`· no hooks declared`,lastRun:`· last run {label} {status} {ago} ago`,neverRun:`· never run`,runOk:`ok`,runRunning:`still running`,runFailed:"failed to start; inspect `rove plugin log <id>`",runExit:`exit {code}`,settingUnset:`(unset — enter to edit)`,settingInvalidTitle:`Not a number`,settingInvalidBody:`{label} only accepts a number. Keeping the previous value.`},marketplace:{title:`Marketplace`,hint:"Plugins published under the `rove-plugin` topic on GitHub, most-starred first. enter (or click) shows what the install would run and asks before running any of it. The listing is re-queried each time you open this section.",loading:`Searching GitHub…`,empty:`No plugins listed.`,offline:`GitHub is unreachable — showing first-party plugins only. Re-open this section to retry.`,installedTag:`installed`,firstParty:`first-party`,preparing:`cloning {ref}…`,installing:`building and registering {name}…`,installed:`installed {id} v{version} — it is enabled, and appears under Plugins.`,cancelled:`install cancelled; nothing was run.`,failed:`install failed: {error}. Check the build output and retry from Marketplace.`,alreadyInstalled:`already installed as {id} — manage it under Plugins.`,confirmTitle:`Install {name}?`,confirmInstall:`install`,previewSource:`source: {source}`,previewCommands:`Commands this plugin declares:`,previewNoCommands:`This plugin declares no commands.`,previewWarning:`warning: {warning}`,previewTrust:`Installing runs the build commands above, and the rest run later on the events they declare. They run as you, with your environment, and nothing is sandboxed.`}},CA={plugins:{title:`插件`,hint:"先列 Rove 官方 mod:enter(或点击)安装或卸载,卸载后数据仍留在磁盘上。再列在 ~/.rove/plugins.json 里注册的插件:enter 切换启用/禁用——daemon 监听该文件,改动实时生效。插件下方缩进的行是它声明的设置项,enter 编辑,新值在插件下次运行时生效。安装与移除在 shell 里做:`rove plugin install <owner/repo>`、`rove plugin link <dir>`。",empty:"Kanban 和 Issues 是官方 mod:enter(或点击)安装。尚未注册其他插件;用 `rove plugin install <owner/repo>` 安装一个——可在 GitHub 的 `rove-plugin` 话题下浏览。",sourceLink:`本地链接 {path}`,sourceGithub:`{spec}`,sourceBuiltIn:`官方 mod · 未安装`,sourceBuiltInInstalled:`官方 mod · 已安装`,updateAvailable:`有新版本 — rove plugin update`,declares:`{actions} 个动作 · {events} 个事件 · {panes} 个面板`,declaresWithEngines:`{actions} 个动作 · {events} 个事件 · {panes} 个面板 · {engines} 个引擎`,declaresPages:`· {pages} 个页面`,pageFailed:`页面 {detail}`,manifestUnreadable:`manifest 无法解析;请检查rove-plugin.toml 的路径和 TOML 语法`,unsupportedPlatform:`· 不支持当前平台`,noHooks:`· 未声明钩子`,lastRun:`· 上次运行 {label} {status} {ago}前`,neverRun:`· 尚未运行过`,runOk:`成功`,runRunning:`仍在运行`,runFailed:"启动失败;请查看 `rove plugin log <id>`",runExit:`退出码 {code}`,settingUnset:`(未设置 — enter 编辑)`,settingInvalidTitle:`不是数字`,settingInvalidBody:`{label} 只接受数字,保留原值。`},marketplace:{title:`插件市场`,hint:"GitHub 上 `rove-plugin` 话题下发布的插件,按 star 数排序。enter(或点击)会先列出安装会执行的命令,确认后才真正执行。每次进入本区块都会重新查询列表。",loading:`正在搜索 GitHub…`,empty:`列表为空。`,offline:`GitHub 不可达——只显示首方插件。重新进入本区块可再试一次。`,installedTag:`已安装`,firstParty:`首方`,preparing:`正在克隆 {ref}…`,installing:`正在构建并注册 {name}…`,installed:`已安装 {id} v{version}——已启用,可在「插件」区块管理。`,cancelled:`已取消安装,没有执行任何命令。`,failed:`安装失败:{error}。请检查构建输出,再从插件市场重试。`,alreadyInstalled:`已安装为 {id}——在「插件」区块管理。`,confirmTitle:`安装 {name}?`,confirmInstall:`安装`,previewSource:`来源:{source}`,previewCommands:`该插件声明的命令:`,previewNoCommands:`该插件未声明任何命令。`,previewWarning:`警告:{warning}`,previewTrust:`安装会执行上面的 build 命令,其余命令会在它们声明的事件发生时执行。它们以你的身份、带你的环境变量运行,没有任何沙箱。`}},wA={en:{appearance:{enabled:`On`,disabled:`Off`,borderFlow:`Flowing gradient`,borderStill:`Still`,glyphsBraille:`Braille`,glyphsStarburst:`Starburst (needs a font with the Dingbats block)`,glyphsAscii:`ASCII`,titleShimmer:`Shimmer`,titleStill:`Still`,preview:`Workspace preview`,tasks:`Tasks`,terminal:`Terminal`,files:`Files`,testsPassed:`Tests passed`,transparent:`Transparent background`,opaque:`Opaque background`,modeDark:`Dark`,modeLight:`Light`,modeAuto:`Auto (follow the terminal)`,openHint:`Enter to choose an option and preview it.`,chooseHint:`↑/↓ or j/k preview · enter apply · esc cancel`},title:`Settings`,esc:`esc`,nav:{default:`j/k pick · h/l switch level · enter activate · esc close`,feedback:`tab next field · enter sends on Send · esc close`},sections:{general:`General`,engines:`Engines`,autoRouting:`Auto routing`,plugins:`Plugins`,marketplace:`Marketplace`,keys:`Keybindings`,feedback:`Feedback`,dev:`Dev`},general:{usage:`USAGE`,theme:`Theme`,themeMode:`Mode`,themeHint:`l to enter list · j/k to highlight · enter to apply`,language:`Language`,languageHint:`Display language for Rove's UI. l to enter list · j/k to highlight · enter to apply.`,transparent:`Transparent background`,transparentHint:`Drops the renderer's bg fill so the host terminal shows through. enter toggles.`,on:`[x] on`,off:`[ ] off`,focusAccent:`Focus accent`,focusAccentHint:`Color of focused pane title, ▌ marker, and split borders.`,accentPrimary:`Primary (brand accent)`,accentSuccess:`Success (legacy green)`,accentInfo:`Info (cool blue)`,appearance:`Appearance`,appearanceHint:`How split panes draw.`,splitStyle:`Split panes`,workingBorder:`Working border`,taskColors:`Task colors`,glyphSet:`State glyphs`,colorblind:`Colorblind diff colours`,runningTitle:`Running title`,splitBox:`Box frames`,splitLine:`Divider line`,splitRail:`Accent rail`,splitRule:`Top rule`,notifications:`Notifications`,notificationsHint:`When a background tab finishes or pauses on an approval.`,toast:`Toast`,toastHint:`bottom-right popup`,sound:`Sound`,soundHint:`bell + chime + an OSC 9 desktop notification (rides SSH)`,soundVolume:`Chime volume — {percent}%`,soundVolumeHint:`enter cycles; applies to the next chime`,crossTask:`Cross-task`,crossTaskHint:`also for a task you switched away from`,finishedAlerts:`Finished turns`,finishedAlertsHint:`off: only approvals and errors alert; the unread dot stays`,keyHints:`Keyboard hints`,keyHintsHint:`The status-bar reminder and the first-use hints in the sidebar and files panes.`,keyHintsShow:`Show keyboard hints`,keyHintsShowHint:`re-enabling relights hints dismissed by use`,zen:`Zen mode`,zenHint:"The `zen` chip and `prefix`+z hide Files, keeping the Tasks rail and workspace.",zenDefaultOn:`Start in zen mode`,updates:`Updates`,updatesHint:`Stable is the default channel; next previews the coming release; nightly is built from main every day.`,updateChannelTitle:`Release channel`,updateChannel:`Channel: {channel}`,updateChannelHint:"enter cycles stable / next / nightly; `rove update` follows it",updateChannelName:{latest:`stable`,next:`next preview`,nightly:`nightly preview`},updateNotify:`Notify on updates`,updateNotifyHint:`new versions on this channel; off hides the update chip, and checking by hand still reports`,updateCheck:`[ Check for updates ]`,updateCheckHint:`asks npm for the newest release on this channel right now`,updateCheckButton:`Check for updates`,updateChecking:`Checking…`,updateOpenPage:`Open Update page`,updateOpenPageRow:`[ Open Update page ]`,railFold:`Folded task rail`,railFoldHint:`What the rail shows once folded away from its corner control.`,railFoldRow:`Folded rail shows: {style}`,railFoldRowHint:`enter cycles`,railFoldGlyphs:`status glyphs`,railFoldInitials:`glyph + initials`,railFoldHairline:`colour band only`,editor:`Editor`,editorHint:`What enter opens a file with in the file tree — diff mode when the editor supports it, the read-only preview when it isn't installed.`,editorRow:`editor: < {kind} >`,editorRowHint:`auto follows $VISUAL / $EDITOR, else nvim / vim / emacs / nano`,editorCustom:`custom: {cmd}`,editorCustomUnset:`(unset — enter to edit)`,worktree:`Worktree location`,worktreeHint:`Where new task worktrees are created. New tasks only.`,worktreeBase:`location: < {kind} >`,worktreeBaseHint:"custom takes `~`, a relative path, or a leading `$project_dir`",worktreeKindDefault:`default ~/.rove/worktrees`,worktreeKindNext:`next to project`,worktreeKindCustom:`custom`,worktreeCustom:`custom: {path}`,worktreeCustomUnset:`(unset — enter to edit)`,worktreeBaseTitle:`Custom worktree location (blank = default; $project_dir = project root)`,worktreeBaseField:`PATH`,editorCustomTitle:`Custom editor command (use {file} for the path)`,worktreeBaseInvalidTitle:`Can't use that worktree location`,worktreeBaseTokenBody:`{token} only expands as the leading path segment (e.g. {token}/../rove-worktrees). Keeping the previous setting.`,worktreeBaseUnusableBody:`{path} isn't usable ({error}). Keeping the previous setting — pick a writable directory.`,terminal:`Terminal`,terminalHint:`Applies to terminals opened after the change.`,scrollbackRow:`scrollback: {rows} rows`,scrollbackRowHint:`100–100000 · larger costs proportionally more CPU per redraw`,scrollbackTitle:`Terminal scrollback rows (100–100000)`,scrollbackField:`ROWS`,scrollbackInvalidTitle:`Not a number`,scrollbackInvalidBody:`Scrollback must be a number of rows (e.g. 1000). Keeping the previous setting.`,tabStripRow:`tab strip: {mode}`,tabStripMode:{never:`off — the sidebar tree lists tabs`,multipleOnly:`only with 2+ tabs`,always:`always`}},field:{command:`COMMAND`,name:`NAME`,id:`ID`},action:{save:`save`,next:`next`,add:`add`},reset:{title:`Reset UI state?`,body:`Wipes ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove — relaunch for a fresh start with an empty working session list. Worktrees on disk and engine session history are NOT touched.`,done:`Rove: UI state reset. Relaunch Rove to start fresh.`,failedTitle:`UI state was not reset`,failedBody:`Could not write the settings file. Your settings and tasks have been kept. Try resetting again.`},restart:{title:`Restart backend?`,body:`Stops the daemon and relaunches this Rove on the installed build, so daemon / orchestrator / engine edits take effect. Running engine sessions live in the PTY host and keep going; open tabs come back. Any other attached windows reconnect on their own.`,done:`Rove: restarting the backend...`},stateWrite:{failedTitle:`Settings were not saved`,failedBody:`{file} could not be written ({keys}). Check its directory permissions and free disk space, then save again.`},...gA,...bA,...SA,keybindings:{title:`Keybindings`,hint:`Rebind direct and prefix chords in your own YAML file; changes reload live. Press F1 anywhere for the live keymap with every binding id.`,configFile:`Config file`,notCreated:` (not created yet)`,prefixTitle:`Command layer ({prefix})`,prefixHint:`Bare keys act in the focused pane; a small one-press set covers frequent Rove actions; {prefix} opens the command layer ({timeout}ms second-stroke window). Prefix bindings keep their pane scope and modal rules.`,tapPresentation:`Prefix tap`,tapPresentationHint:`Choose whether the complete guide also marks controls already on screen.`,tapPresentationLocal:`On-screen entries + complete guide (default)`,tapPresentationGuide:`Complete guide only`,prefixDisabled:`disabled`,fixed:`Fixed (not rebindable): {ids}.`,createHint:`No overrides file yet. Rove can write one for you, fully commented — nothing is rebound until you uncomment a line.`,createFile:`[enter] Create keybindings.yaml`,overridesApplied:`Overrides applied`,none:`none`,unbound:`(unbound)`,defaultKeys:`default: {keys}`,warnings:`Warnings`},feedback:{title:`Feedback`,hint:"Sends a GitHub Discussion to the Rove repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:`title`,titlePlaceholder:`Short summary`,descriptionLabel:`description`,descriptionPlaceholder:`What happened? (enter for a new line · tab to Send)`,send:`[enter] Send to GitHub Discussions`},...vA},zh:{appearance:{enabled:`开启`,disabled:`关闭`,borderFlow:`流动渐变`,borderStill:`静止`,glyphsBraille:`盲文点`,glyphsStarburst:`星芒(需要含 Dingbats 符号区的字体)`,glyphsAscii:`ASCII`,titleShimmer:`流光`,titleStill:`静止`,preview:`工作区预览`,tasks:`任务`,terminal:`终端`,files:`文件`,testsPassed:`测试通过`,transparent:`透明背景`,opaque:`不透明背景`,modeDark:`深色`,modeLight:`浅色`,modeAuto:`自动(跟随终端)`,openHint:`按 Enter 打开选项和预览。`,chooseHint:`↑/↓ 或 j/k 预览 · enter 应用 · esc 取消`},title:`设置`,esc:`esc`,nav:{default:`j/k 选择 · h/l 切换层级 · enter 确认 · esc 关闭`,feedback:`tab 下一项 · enter 在发送项发送 · esc 关闭`},sections:{general:`通用`,autoRouting:`自动路由`,engines:`引擎`,plugins:`插件`,marketplace:`插件市场`,keys:`快捷键`,feedback:`反馈`,dev:`开发`},general:{usage:`用量`,theme:`主题`,themeMode:`明暗`,themeHint:`l 进入列表 · j/k 高亮 · enter 应用`,language:`语言`,languageHint:`Rove 界面的显示语言。l 进入列表 · j/k 高亮 · enter 应用。`,transparent:`透明背景`,transparentHint:`去掉渲染器的背景填充,让宿主终端透出来。按 enter 切换。`,on:`[x] 开`,off:`[ ] 关`,focusAccent:`聚焦强调色`,focusAccentHint:`聚焦面板标题、▌ 标记和分隔边框的颜色。`,accentPrimary:`主色(品牌强调色)`,accentSuccess:`成功色(传统绿)`,accentInfo:`信息色(冷蓝)`,appearance:`外观`,appearanceHint:`分屏面板怎么画边。`,splitStyle:`分屏面板`,workingBorder:`运行中边框`,taskColors:`任务配色`,glyphSet:`状态符号`,colorblind:`色盲友好的增删配色`,runningTitle:`运行中标题`,splitBox:`方框边框`,splitLine:`单线分隔`,splitRail:`左侧强调条`,splitRule:`顶部横线`,notifications:`通知`,notificationsHint:`后台标签完成或在审批处暂停时触发。`,toast:`Toast 弹窗`,toastHint:`右下角弹窗`,sound:`声音`,soundHint:`响铃 + 提示音 + OSC 9 桌面通知(经 SSH 直达本地)`,soundVolume:`提示音音量 — {percent}%`,soundVolumeHint:`回车循环切换;下一声提示音生效`,crossTask:`跨任务`,crossTaskHint:`你已切走的任务也通知`,finishedAlerts:`回合完成`,finishedAlertsHint:`关闭后只有审批和错误会提醒;未读标记照常`,keyHints:`键盘提示`,keyHintsHint:`状态栏提醒,以及侧栏和文件面板的首用提示。`,keyHintsShow:`显示键盘提示`,keyHintsShowHint:`重新开启会点亮已因使用而熄灭的提示`,zen:`禅模式`,zenHint:"`zen` 标记和 `prefix`+z 隐藏 Files,保留 Tasks 侧栏与 workspace。",zenDefaultOn:`启动即进入禅模式`,updates:`更新`,updatesHint:`稳定版是默认渠道;next 预览即将发布的版本;nightly 每天从 main 自动构建。`,updateChannelTitle:`发布渠道`,updateChannel:`渠道:{channel}`,updateChannelHint:"enter 在稳定版 / next / nightly 间切换;`rove update` 跟随它",updateChannelName:{latest:`稳定版`,next:`next 预览版`,nightly:`nightly 预览版`},updateNotify:`有新版本时通知我`,updateNotifyHint:`只针对所选渠道;关闭后不再显示更新标记,手动检查仍会给出结果`,updateCheck:`[ 检查更新 ]`,updateCheckHint:`立即向 npm 查询所选渠道的最新版本`,updateCheckButton:`检查更新`,updateChecking:`检查中…`,updateOpenPage:`打开更新页`,updateOpenPageRow:`[ 打开更新页 ]`,railFold:`折叠后的任务栏`,railFoldHint:`任务栏从角标折叠之后显示什么。`,railFoldRow:`折叠后显示:{style}`,railFoldRowHint:`enter 切换`,railFoldGlyphs:`状态字形`,railFoldInitials:`字形 + 首字母`,railFoldHairline:`仅色带`,editor:`编辑器`,editorHint:`文件树里按 enter 用什么打开文件——支持时走编辑器 diff 模式,未安装时回退到只读预览。`,editorRow:`编辑器: < {kind} >`,editorRowHint:`auto 跟随 $VISUAL / $EDITOR,否则 nvim / vim / emacs / nano`,editorCustom:`自定义: {cmd}`,editorCustomUnset:`(未设置 — enter 编辑)`,worktree:`工作树位置`,worktreeHint:`新任务工作树的创建位置。仅对新任务生效。`,worktreeBase:`位置: < {kind} >`,worktreeBaseHint:"自定义可填 `~`、相对路径或以 `$project_dir` 开头",worktreeKindDefault:`默认 ~/.rove/worktrees`,worktreeKindNext:`项目旁边`,worktreeKindCustom:`自定义`,worktreeCustom:`自定义: {path}`,worktreeCustomUnset:`(未设置 — enter 编辑)`,worktreeBaseTitle:`自定义工作树位置(留空 = 默认;$project_dir = 项目根目录)`,worktreeBaseField:`路径`,editorCustomTitle:`自定义编辑器命令(用 {file} 代表文件路径)`,worktreeBaseInvalidTitle:`无法使用该工作树位置`,worktreeBaseTokenBody:`{token} 只能作为路径的第一段展开(如 {token}/../rove-worktrees)。保留原设置。`,worktreeBaseUnusableBody:`{path} 不可用({error})。保留原设置 —— 请选择一个可写目录。`,terminal:`终端`,terminalHint:`对修改后新打开的终端生效。`,scrollbackRow:`回滚行数: {rows} 行`,scrollbackRowHint:`100–100000 · 调大会按比例增加每次重绘的 CPU`,scrollbackTitle:`终端回滚行数(100–100000)`,scrollbackField:`行数`,scrollbackInvalidTitle:`不是数字`,scrollbackInvalidBody:`回滚行数必须是数字(如 1000)。保留原设置。`,tabStripRow:`标签栏: {mode}`,tabStripMode:{never:`关闭 — 标签在左侧树里`,multipleOnly:`仅 2 个以上标签时显示`,always:`始终显示`}},field:{command:`命令`,name:`名称`,id:`标识`},action:{save:`保存`,next:`下一步`,add:`添加`},reset:{title:`重置界面状态?`,body:`将清除 ~/.config/rove/state.json 和 ~/.rove/tasks.json 并退出 Rove —— 重新启动后会是一个干净的开始,工作会话列表为空。磁盘上的工作树和引擎会话历史不受影响。`,done:`Rove:界面状态已重置。重新启动 Rove 即可从头开始。`,failedTitle:`UI 状态未能重置`,failedBody:`无法写入设置文件。设置和任务均已保留,请稍后重新尝试重置。`},restart:{title:`重启后端?`,body:`会停掉 daemon,并以已安装的版本重新启动当前 Rove 窗口,从而让 daemon / orchestrator / 引擎的改动生效。正在运行的引擎会话由 PTY host 托管,不会中断;已打开的标签页会恢复。其他已连接的窗口会自行重连。`,done:`Rove:正在重启后端……`},stateWrite:{failedTitle:`设置未能保存`,failedBody:`{file} 写入失败({keys})。请检查目录权限和磁盘空间,再次保存。`},..._A,...xA,...CA,keybindings:{title:`快捷键`,hint:`在你自己的 YAML 文件里重绑定直接按键和 prefix 组合;修改会实时加载。任意位置按 F1 查看带每个绑定 id 的实时键位表。`,configFile:`配置文件`,notCreated:` (尚未创建)`,prefixTitle:`命令层({prefix})`,prefixHint:`裸键作用于当前聚焦面板;少量单次快捷键覆盖高频 Rove 操作;{prefix} 打开命令层(第二击窗口 {timeout}ms)。Prefix 绑定保持原有的面板作用域和 modal 规则。`,tapPresentation:`点按 Prefix`,tapPresentationHint:`选择完整指南是否同时标记当前屏幕上的入口。`,tapPresentationLocal:`屏幕入口 + 完整指南(默认)`,tapPresentationGuide:`仅完整指南`,prefixDisabled:`已禁用`,fixed:`固定(不可重绑定):{ids}。`,createHint:`还没有覆盖文件。Rove 可以帮你写一份带完整注释的——在你取消注释之前不会改动任何按键。`,createFile:`[enter] 创建 keybindings.yaml`,overridesApplied:`已应用的覆盖`,none:`无`,unbound:`(已解绑)`,defaultKeys:`默认: {keys}`,warnings:`警告`},feedback:{title:`反馈`,hint:"通过 `gh` 向 Rove 仓库发一条 GitHub Discussion。需要 `gh auth login`;分类默认为 Feedback。",titleLabel:`标题`,titlePlaceholder:`简短概括`,descriptionLabel:`描述`,descriptionPlaceholder:`发生了什么?(enter 换行 · tab 跳到发送)`,send:`[enter] 发送到 GitHub Discussions`},...yA}},TA={en:Ar,zh:jr};function $(e,t){return Ae(wA,e,t)}function EA(e,t){return Ae(TA,e,t)}function DA({label:e,value:t,picks:n,onPick:r}){return(0,V.jsx)(`fieldset`,{"aria-label":e,className:`m-0 inline-flex min-w-0 flex-wrap gap-0.5 rounded-sm border-hairline border-line bg-inset p-0.5`,children:n.map(e=>{let n=e.value===t;return(0,V.jsx)(`button`,{type:`button`,"aria-pressed":n,className:Me(`rounded-xs px-2.5 py-1 font-sans text-meta whitespace-nowrap touch:min-h-9`,`focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-focus`,n?`bg-menu text-ink`:`text-muted hover:bg-hover`),onClick:()=>!n&&r(e.value),children:e.label},e.value)})})}function OA({label:e,value:t,picks:n,onPick:r}){return(0,V.jsxs)(`span`,{className:`relative inline-flex max-w-full min-w-0 text-ink`,children:[(0,V.jsx)(`select`,{"aria-label":e,value:t,className:`max-w-full min-w-0 truncate rounded-sm border-hairline border-line bg-paper py-1.25 pr-7 pl-2.5 font-sans text-meta hover:border-line-active focus-visible:border-line-active focus-visible:outline-none touch:min-h-10`,onChange:e=>{let t=n.find(t=>String(t.value)===e.target.value);t&&r(t.value)},children:n.map(e=>(0,V.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,V.jsx)(Ia,{className:`pointer-events-none absolute top-1/2 right-2.5 -translate-y-1/2 text-subtle`})]})}var kA=`${Nn} w-narrow:pt-0`,AA=`dialog relative m-0 flex h-[min(640px,80vh)] w-[min(880px,calc(100vw-32px))] overflow-hidden rounded-md border-hairline border-line bg-surface text-inherit shadow-dialog focus:outline-none motion-safe:animate-rise-in [.is-leaving_&]:animate-sink-out w-narrow:h-dvh w-narrow:w-screen w-narrow:flex-col w-narrow:rounded-none w-narrow:border-0 short:h-[calc(100dvh-24px)]`,jA=`absolute top-3 right-3 z-1 grid size-7 place-items-center rounded-sm text-display leading-none text-muted hover:bg-inset hover:text-ink focus-visible:bg-inset focus-visible:text-ink touch:size-10`,MA=`flex w-56 flex-none flex-col gap-5 overflow-y-auto scrollbar-none [border-right:var(--hairline)_solid_var(--line)] px-2.5 py-4 w-narrow:w-full w-narrow:flex-1 w-narrow:[border-right:none] w-narrow:px-3 w-narrow:py-3`,NA=`m-0 px-2 pb-0.5 font-sans text-title font-semibold normal-nums text-ink`,PA=`flex flex-col gap-0.5`,FA=`m-0 px-2 pb-1 font-mono text-meta font-normal text-subtle`,IA=(e,t)=>`flex items-center rounded-sm px-2 py-1.25 text-left font-sans text-body touch:min-h-10 w-narrow:min-h-11 w-narrow:px-3 ${e?`bg-menu text-ink`:`${t?`text-muted`:`text-ink`} [&:hover]:bg-hover`}`,LA=`ml-auto hidden text-subtle w-narrow:block`,RA=`flex flex-col`,zA=`m-0 pb-2 text-meta text-subtle`,BA=`flex flex-col border-t-hairline border-t-line [&>*]:border-b-hairline [&>*]:border-b-line`,VA=`flex items-center justify-between gap-x-6 gap-y-2 py-3 w-narrow:flex-col w-narrow:items-stretch`,HA=`flex items-center justify-between gap-x-6 py-3`,UA=`flex flex-col gap-3 py-3`,WA=`flex min-w-0 flex-1 flex-col gap-0.5`,GA=`text-body text-ink`,KA=`text-meta text-muted [&_a]:text-accent`,qA=`max-w-90 min-w-0 truncate font-mono text-meta text-muted [overflow-wrap:anywhere]`,JA=`m-0 py-3 text-body text-muted`,YA=`rounded-sm border-hairline border-line bg-paper px-2.5 py-1.5 font-sans text-body text-ink focus-visible:border-line-active focus-visible:outline-none`,XA=`${YA} w-24 text-right`,ZA=`flex flex-col gap-1.5`,QA=`text-meta font-medium text-muted`,$A=`min-h-30 max-h-[50vh] leading-[1.45]`,ej=`flex flex-wrap items-center justify-end gap-2.5`,tj=`flex items-center gap-2.5 rounded-sm bg-inset px-3 py-2 text-meta`,nj=`grid grid-cols-[minmax(0,1fr)_104px_72px] items-center gap-3`,rj=`flex flex-col`,ij=`${nj} pb-1.5 pl-7.5 font-sans text-meta font-medium normal-nums text-subtle [&>span:not(:first-child)]:text-center`,aj=`border-b-hairline border-b-line first:border-t-hairline first:border-t-line`,oj=`${nj} group/eng rounded-sm py-1.5 pr-1 pl-0`,sj=`flex min-w-0 items-center gap-2 rounded-sm py-1.5 pr-0 pl-1.5 text-left focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-focus`,cj=e=>`mx-0.5 ${e?`text-muted`:`text-subtle`}`,lj=`flex min-w-0 flex-col gap-0.5`,uj=e=>`truncate text-body leading-[inherit] font-medium ${e?`text-muted`:`text-ink`}`,dj=`ml-2 text-meta leading-[inherit] font-normal text-subtle`,fj={ready:`bg-success`,attention:`bg-warning`,error:`bg-error`,absent:`bg-subtle`},pj=e=>`inline-flex items-center gap-1.5 text-meta leading-[inherit] ${e===`error`?`text-error`:`text-muted`}`,mj=e=>`size-1.75 flex-none rounded-full ${fj[e]}`,hj=`flex justify-center`,gj=`rounded-full bg-accent-soft px-2.5 py-0.5 font-sans text-meta font-medium normal-nums capitalize text-accent`,_j=`rounded-full border-hairline border-line px-2.5 py-0.5 text-meta leading-[inherit] whitespace-nowrap text-muted opacity-0 transition-opacity duration-120 ease-[ease] group-hover/eng:opacity-100 group-focus-within/eng:opacity-100 hover:border-line-active hover:text-ink motion-reduce:transition-none touch:opacity-100`,vj=`mt-0 mr-1 mb-3 ml-7 flex flex-col gap-2.5 px-1.5 py-1`,yj=`m-0 grid grid-cols-[max-content_minmax(0,1fr)] gap-x-3.5 gap-y-1.5 text-meta leading-[1.5]`,bj=`text-subtle`,xj=e=>`m-0 wrap-anywhere ${e?`text-warning`:`text-ink`}`,Sj=`flex items-center gap-2`,Cj=`flex-1 px-2 py-1.25`,wj=`text-meta leading-[inherit] text-success`,Tj=`flex items-center gap-3 py-2.5`,Ej=`flex min-w-0 flex-1 flex-col gap-0.5`,Dj=(e=!1)=>`overflow-hidden text-ellipsis text-meta text-muted ${e?`whitespace-normal`:`whitespace-nowrap`}`,Oj=`flex flex-col gap-1 py-3`,kj=`flex items-baseline gap-3`,Aj=`flex flex-col gap-2.5 pt-2`,jj=`grid grid-cols-[repeat(auto-fill,minmax(96px,1fr))] gap-2`,Mj=`m-0 pb-1.5 text-meta font-medium text-subtle`,Nj=e=>e?`border-accent bg-accent-soft`:`border-line hover:bg-hover`,Pj=`flex h-9 overflow-hidden rounded-xs border-hairline`,Fj=`flex w-2/5 flex-col gap-0.75 p-1`,Ij=`flex min-w-0 flex-1 flex-col gap-0.75 p-1`,Lj=`h-0.75 rounded-xs`,Rj=`mt-auto flex gap-0.75`,zj=`size-1 rounded-xs`,Bj=`flex min-w-0 items-baseline gap-1.5 font-sans text-meta`,Vj=`group relative h-4.5 w-7.5 flex-none justify-self-center rounded-full border-hairline border-line bg-inset transition-[background,border-color] duration-120 ease-[ease] aria-checked:border-accent aria-checked:bg-accent motion-reduce:transition-none`,Hj=`absolute top-0.5 left-0.5 size-3 rounded-full bg-muted transition-[transform,background] duration-120 ease-[ease] group-aria-checked:[transform:translateX(12px)] group-aria-checked:bg-paper motion-reduce:transition-none`;function Uj({on:e,...t}){return(0,V.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,className:Vj,...t,children:(0,V.jsx)(`span`,{className:Hj})})}function Wj(e){return(0,V.jsxs)(`section`,{className:RA,children:[e.title&&(0,V.jsx)(`h2`,{className:`m-0 pb-1.5 font-sans text-meta font-medium normal-nums text-muted`,children:e.title}),e.hint&&(0,V.jsx)(`p`,{className:`m-0 pb-2 text-meta text-subtle`,children:e.hint}),(0,V.jsx)(`div`,{className:BA,children:e.children})]})}function Gj(e){let t=(0,V.jsxs)(`div`,{className:WA,children:[(0,V.jsx)(`span`,{id:e.labelId,className:GA,children:e.label}),e.hint&&(0,V.jsx)(`span`,{className:`text-meta text-muted [&_a]:text-accent`,children:e.hint})]});return e.stack?(0,V.jsxs)(`div`,{className:UA,children:[t,e.children]}):(0,V.jsxs)(`div`,{className:e.inline?HA:VA,children:[t,e.children&&(0,V.jsx)(`div`,{className:`flex min-w-0 flex-none items-center justify-end gap-2 w-narrow:justify-start`,children:e.children})]})}function Kj(e){let t=(0,g.useId)();return(0,V.jsx)(Gj,{label:e.label,hint:e.hint,labelId:t,inline:!0,children:(0,V.jsx)(Uj,{on:e.checked,"aria-labelledby":t,disabled:e.disabled,onClick:()=>e.onChange(!e.checked)})})}var qj=36;function Jj(e){let t=e.picks.length<=4&&e.picks.reduce((e,t)=>e+t.label.length,0)<=qj?DA:OA;return(0,V.jsx)(Gj,{label:e.label,hint:e.hint,children:(0,V.jsx)(t,{label:e.label,value:e.value,picks:e.picks,onPick:e.onPick})})}function Yj(e){return(0,V.jsx)(Gj,{label:e.label,hint:e.note,children:(0,V.jsx)(`span`,{className:qA,children:e.value})})}var Xj=`flex items-baseline justify-between`,Zj=`[&_b]:mr-2.5`,Qj=`my-2.5 flex flex-col`,$j=e=>`flex gap-3 rounded-sm px-2 py-1 text-left text-[length:var(--fs-body)] ${e?`bg-menu`:``}`,eM=`min-w-[14ch]`,tM=`whitespace-nowrap text-[length:var(--fs-meta)] text-warning`,nM=`rail-tight:hidden`,rM=`[&_h2]:mx-0 [&_h2]:mt-3.5 [&_h2]:mb-1 [&_h2]:text-[length:var(--fs-body)]`,iM=`max-h-[55vh] overflow-x-hidden overflow-y-auto`,aM=`mr-auto text-[length:var(--fs-meta)]`,oM=`text-[length:var(--fs-body)] leading-[1.55] wrap-anywhere [&_h3]:mx-0 [&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:font-sans [&_h3]:text-meta [&_h3]:font-medium [&_h3]:normal-nums [&_h3]:text-muted [&_h3:first-child]:mt-0 [&_ul]:m-0 [&_ul]:pl-4.5 [&_li+li]:mt-2 [&_p]:mx-0 [&_p]:mt-0 [&_p]:mb-2 [&_a]:text-accent [&_a]:underline [&_a]:underline-offset-2 [&_code]:rounded-sm [&_code]:bg-inset [&_code]:px-1 [&_code]:py-0 [&_code]:font-mono [&_code]:text-meta [&_code]:font-normal [&_code]:normal-nums`,sM=`mt-3`,cM=e=>`rounded-sm px-2 py-1.25 ${e?`bg-menu`:``}`,lM=`flex items-baseline gap-2 text-[length:var(--fs-body)]`,uM=`flex items-baseline justify-between gap-2`,dM=`font-mono`,fM=`truncate`,pM=`mt-4 text-[length:var(--fs-meta)]`;function mM(e){return e.replace(/\[`[0-9a-f]{7,40}`\]\([^)]*\)\s*/g,``).replace(/\s+[—-]\s+\[@[^\]]+\]\([^)]*\)\s*$/,``).trim()}function hM(e){let t=[],n=(e,n)=>t.push({kind:e,text:n,id:t.length});for(let r of e.split(/\r?\n/)){let e=r.trimEnd();if(e.trim()===``)continue;let i=/^#{1,6}\s+(.*)$/.exec(e);if(i){n(`heading`,i[1]??``);continue}let a=/^\s*[-*]\s+(.*)$/.exec(e);if(a){n(`item`,a[1]??``);continue}let o=t.at(-1);o&&o.kind!==`heading`?o.text=`${o.text} ${e.trim()}`:n(`para`,e.trim())}return t.map(e=>e.kind===`item`?{...e,text:mM(e.text)}:e)}var gM=/\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`|\*\*([^*]+)\*\*/g;function _M(e){let t=[],n=0;for(let r of e.matchAll(gM)){let i=r.index??0;i>n&&t.push(e.slice(n,i));let[a,o,s,c,l]=r;o!==void 0&&s!==void 0?t.push((0,V.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,children:_M(o)},i)):c===void 0?l!==void 0&&t.push((0,V.jsx)(`b`,{children:l},i)):t.push((0,V.jsx)(`code`,{children:c},i)),n=i+a.length}return n<e.length&&t.push(e.slice(n)),t}function vM({body:e}){let t=hM(e),n=[],r=[],i=()=>{r.length>0&&n.push((0,V.jsx)(`ul`,{children:r},`ul-${n.length}`)),r=[]};for(let e of t){if(e.kind===`item`){r.push((0,V.jsx)(`li`,{children:_M(e.text)},e.id));continue}i(),n.push(e.kind===`heading`?(0,V.jsx)(`h3`,{children:e.text},e.id):(0,V.jsx)(`p`,{children:_M(e.text)},e.id))}return i(),(0,V.jsx)(`div`,{className:oM,children:n})}var yM=`page min-h-0 flex-1 rounded-md border-hairline border-line bg-paper px-4.5 py-3.5 focus:outline-none`,bM=`${yM} overflow-y-auto`,xM=`page-title mx-0 mt-0 mb-1.5 font-sans text-title font-bold normal-nums`,SM=`flex items-baseline justify-between gap-4 [&_.page-title]:m-0`,CM=e=>`min-w-0 truncate text-meta ${e?``:`leading-[inherit]`}`,wM=`flex flex-wrap items-center gap-2`,TM={row:`touch:after:-inset-x-0.75 touch:after:-inset-y-0.5`,kanban:`touch:after:-inset-x-0.75 touch:after:-top-1.5 touch:after:-bottom-1`,header:`touch:after:-inset-x-0.75 touch:after:-top-2.5 touch:after:-bottom-1.25`},EM=`mt-2.5 flex flex-col gap-1.5`,DM=e=>`flex cursor-pointer flex-col gap-0.5 rounded-sm px-2.5 py-1.5 ${e?`bg-menu`:``}`,OM=`flex min-w-0 items-baseline gap-2.5`,kM=`whitespace-nowrap text-muted`,AM=`flex gap-2.5 pl-[4ch] text-meta leading-[inherit] text-muted`,jM=`min-w-0 flex-1 truncate`,MM=`flex flex-col px-1.5 pb-2`,NM=`flex flex-col border-t-hairline border-t-line px-1.5 pt-0.5 pb-0.5`,PM=`relative flex flex-col`,FM=e=>`flex items-center rounded-sm px-2 py-0.75 text-left touch:min-h-10 ${e?`bg-menu text-ink`:`text-muted [&:hover]:bg-hover`}`,IM=`ml-auto -mr-[4.5px] w-5 text-center font-sans text-display leading-none font-normal text-accent normal-nums`,LM=`mr-[7px] size-3.5 flex-none fill-none stroke-current stroke-[1.75] [stroke-linecap:round] [stroke-linejoin:round]`,RM=_(null),zM=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),BM=e=>`https://github.com/Sma1lboy/rove/releases/tag/v${e}`;function VM(){return B()===`zh`?Fr:Pr}function HM(e,t){return e.request(`update.check`,{force:!0,locale:Ee.get(),channel:t}).then(e=>(RM.set(e),!0),()=>!1)}function UM(){let e=VM(),t=v(RM),{prefs:n}=R_();return!n.updateNotify||!t?.info?.hasUpdate?null:(0,V.jsxs)(`button`,{type:`button`,className:`${U} text-muted ${tM} ${Ge}`,title:zM(e.chip,{version:t.info.latest}),onClick:()=>ya(`update`),children:[`↑`,(0,V.jsxs)(`span`,{className:nM,children:[` `,t.info.latest]})]})}function WM({client:e}){let t=VM(),n=v(RM),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(`release`),[s,c]=(0,g.useState)(null),l=(0,g.useRef)(null);(0,g.useEffect)(()=>{l.current?.focus(),HM(e).finally(()=>i(!0))},[e]);let u=n?.info??null,d=n?.current??``,f=u?.latest??d,p=u?.hasUpdate===!0,m=r&&u===null,h=r&&u!==null&&!p,_=n?.notes??[],y=_[0]?.url??(f?BM(f):null),b=[{id:`release`,key:`R`,label:t.actions.openRelease,detail:y??t.releaseUrlUnavailable},{id:`close`,key:`Q`,label:t.actions.close,detail:t.actions.closeDetail}],x=e=>{if(e===`close`)return un.set(null);c(y&&window.open(y,`_blank`,`noopener`)!==null?t.statusReleaseOpened:t.statusReleaseError)};return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:l,onKeyDown:e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),x(`close`);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=b.findIndex(e=>e.id===a);if(e.key===`j`||e.key===`ArrowDown`)o(b[(t+1)%b.length]?.id??`close`);else if(e.key===`k`||e.key===`ArrowUp`)o(b[(t-1+b.length)%b.length]?.id??`close`);else if(e.key===`Enter`)x(a);else if(e.key===`r`)x(`release`);else if(e.key===`q`||e.key===`Escape`)x(`close`);else return;e.preventDefault()},children:[(0,V.jsxs)(`div`,{className:Xj,children:[(0,V.jsx)(`h1`,{className:xM,children:t.pageTitle}),(0,V.jsx)(`button`,{type:`button`,className:`${en} mono`,onClick:()=>x(`close`),children:ts()?z(`dialog.close`):t.closeHint})]}),(0,V.jsxs)(`p`,{className:`mono ${Zj}`,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:t.current}),` `,(0,V.jsxs)(`b`,{children:[`v`,d]}),` `,(0,V.jsx)(`span`,{className:`text-muted`,children:t.latest}),` `,m?(0,V.jsx)(`b`,{className:`text-muted`,children:t.latestUnknown}):r?(0,V.jsxs)(`b`,{className:p?`text-warning`:`text-success`,children:[`v`,f]}):(0,V.jsx)(`span`,{className:`text-muted`,children:`…`})]}),m&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.registryRetry}),h&&(0,V.jsx)(`p`,{className:`text-success`,children:t.upToDate}),p&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:`rove update`}),(0,V.jsx)(`div`,{className:Qj,children:b.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:$j(a===e.id),onClick:()=>x(e.id),children:[(0,V.jsxs)(`span`,{className:`mono keys-only text-accent`,children:[`[`,e.key,`]`]}),(0,V.jsx)(`span`,{className:eM,children:e.label}),(0,V.jsx)(`span`,{className:`text-muted`,children:e.detail})]},e.id))}),s&&(0,V.jsx)(`p`,{className:`mono text-accent`,children:s}),p&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:zM(t.changesSectionHeader,{from:d,to:f})}),!r&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.loadingNotes}),r&&p&&_.length===0&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.notesUnavailable}),_.map(e=>(0,V.jsxs)(`section`,{className:rM,children:[(0,V.jsxs)(`h2`,{className:`mono`,children:[`v`,e.version]}),(0,V.jsx)(vM,{body:e.body})]},e.version))]})}var GM=`rove.whatsNewSeenVersion`,KM=e=>e.split(/[.-]/).slice(0,3).map(Number),qM=(e,t)=>{let[n,r]=[KM(e),KM(t)];for(let e=0;e<3;e++)if((n[e]??0)!==(r[e]??0))return(n[e]??0)>(r[e]??0);return!1};function JM(e,t){let n=localStorage.getItem(GM);localStorage.setItem(GM,t),!(!n||!qM(t,n))&&e.request(`release.notes`,{version:t.replace(/-.*$/,``),locale:Ee.get()}).then(e=>W.set((0,V.jsx)(YM,{from:n,to:t,notes:e.notes})),()=>W.set((0,V.jsx)(YM,{from:n,to:t,notes:null})))}function YM(e){let t=VM(),n=(0,g.useRef)(null);return(0,g.useEffect)(()=>n.current?.focus(),[]),(0,g.useEffect)(()=>{let e=e=>{e.key===`q`&&W.set(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,V.jsxs)(cr,{title:t.whatsNew.title,wide:!0,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:zM(t.whatsNew.upgraded,{from:e.from,to:e.to})}),(0,V.jsx)(`div`,{className:iM,children:e.notes?(0,V.jsx)(vM,{body:e.notes.body}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.whatsNew.notesUnavailable})}),(0,V.jsxs)(`div`,{className:rn,children:[(0,V.jsx)(`span`,{className:`mono text-muted ${aM} touch:hidden!`,children:z(`whatsNew.keys`)}),(0,V.jsx)(`a`,{className:en,href:e.notes?.url??BM(e.to),target:`_blank`,rel:`noopener noreferrer`,children:z(`whatsNew.openRelease`)}),(0,V.jsx)(`button`,{ref:n,type:`button`,className:Pe(),onClick:()=>W.set(null),children:z(`whatsNew.continue`)})]})]})}var XM=(e,t)=>e.replace(`{version}`,t);function ZM({client:e}){let t=VM(),n=v(RM),{prefs:r}=R_(),[i,a]=(0,g.useState)(`idle`),o=()=>{a(`checking`),HM(e,r.updateChannel).then(e=>a(e?`done`:`failed`))},s=t=>{a(`idle`),L_(e,`updateChannel`,t)},c=n?.info??null,l=i===`failed`||i===`done`&&c===null,u=i===`done`&&n&&c?c.hasUpdate?XM(t.available,c.latest):t.upToDate:l?t.latestUnknown:void 0,d=l?`text-muted`:c?.hasUpdate?`text-warning`:`text-success`;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Jj,{label:$(`general.updateChannelTitle`),hint:$(`general.updatesHint`),value:r.updateChannel,picks:hA.map(e=>({value:e,label:$(`general.updateChannelName.${e}`)})),onPick:s}),(0,V.jsx)(Kj,{label:$(`general.updateNotify`),hint:$(`general.updateNotifyHint`),checked:r.updateNotify,onChange:t=>void L_(e,`updateNotify`,t)}),(0,V.jsxs)(Gj,{label:$(`general.updates`),hint:$(`general.updateCheckHint`),children:[i===`done`&&c?.hasUpdate&&(0,V.jsx)(H,{variant:`action`,onClick:()=>ya(`update`),children:$(`general.updateOpenPage`)}),(0,V.jsx)(H,{variant:`action`,disabled:i===`checking`,onClick:o,children:$(i===`checking`?`general.updateChecking`:`general.updateCheckButton`)})]}),u&&(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:d,children:u}),hint:c?.hasUpdate?(0,V.jsx)(`code`,{className:`font-mono`,children:`rove update`}):void 0,children:i===`done`&&n&&c&&(0,V.jsx)(`span`,{className:`max-w-90 min-w-0 truncate font-mono text-meta text-muted [overflow-wrap:anywhere]`,title:`${t.latest} v${c.latest}`,children:`${t.current} v${n.current} · ${t.latest} v${c.latest}`})})]})}function QM({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`daemon.info`)??null);return(0,g.useEffect)(()=>{Ws(e,`daemon.info`).then(n,()=>n(null))},[e]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Wj,{title:z(`settings.about.groupRove`),children:[t?.daemonVersion&&(0,V.jsx)(Gj,{label:z(`settings.about.daemon`),hint:z(t.stale?`settings.about.daemonStale`:`settings.about.daemonCurrent`,{version:t.daemonVersion})}),(0,V.jsx)(ZM,{client:e})]}),(0,V.jsx)(Wj,{title:z(`settings.about.browser`),children:(0,V.jsx)(Gj,{label:z(`settings.about.signOut`),hint:z(`settings.about.browserHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>void Na().then(()=>window.location.reload()),children:z(`settings.about.signOut`)})})})]})}async function $M(e,t){let{taskId:n}=await e.client.request(`task.openScratch`);await VC(e,n,{kind:`engine`,prompt:t}),Cn()}var eN=_(null);function tN({theme:e,mode:t}){let n=e[t],r=(e,t)=>({background:e,width:t});return(0,V.jsxs)(`span`,{className:Pj,style:{background:n.background,borderColor:n.border},"aria-hidden":!0,children:[(0,V.jsxs)(`span`,{className:Fj,style:{background:n.backgroundPanel},children:[(0,V.jsx)(`span`,{className:Lj,style:r(n.primary,`70%`)}),(0,V.jsx)(`span`,{className:Lj,style:r(n.textMuted,`85%`)}),(0,V.jsx)(`span`,{className:Lj,style:r(n.textMuted,`55%`)})]}),(0,V.jsxs)(`span`,{className:Ij,children:[(0,V.jsx)(`span`,{className:Lj,style:r(n.text,`90%`)}),(0,V.jsx)(`span`,{className:Lj,style:r(n.textMuted,`65%`)}),(0,V.jsx)(`span`,{className:Lj,style:r(n.accent??n.primary,`40%`)}),(0,V.jsx)(`span`,{className:Rj,children:[n.success,n.warning,n.error,n.info].map((e,t)=>(0,V.jsx)(`span`,{className:zj,style:{background:e}},t))})]})]})}function nN(e){return(0,V.jsxs)(H,{variant:`card`,"aria-pressed":e.active,className:Nj(e.active),onMouseEnter:()=>k_.set(e.theme),onFocus:()=>k_.set(e.theme),onClick:e.onClick,children:[(0,V.jsx)(tN,{theme:e.theme,mode:e.mode}),(0,V.jsxs)(`span`,{className:Bj,children:[(0,V.jsx)(`span`,{className:`truncate text-ink`,children:e.theme.name}),e.tag&&(0,V.jsx)(`span`,{className:`text-subtle`,children:e.tag})]})]})}function rN({children:e}){return(0,V.jsx)(`div`,{className:jj,onMouseLeave:()=>k_.set(null),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||k_.set(null)},children:e})}function iN(e){let{model:t}=e,{client:n}=t,r=v(eN),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(!1),[u,d]=(0,g.useState)(!1);(0,g.useEffect)(()=>()=>k_.set(null),[]),(0,g.useEffect)(()=>void I_(n).catch(()=>void 0),[n]),(0,g.useEffect)(()=>{eN.get()===null&&n.request(`theme.hosted`).then(e=>eN.set(e),()=>eN.set({themes:[],dir:null}))},[n]);let f=e=>{l(!1),$M(t,z(`prefs.themeAgentPrompt`,{dir:e})).catch(()=>l(!0))},p=r?.dir??null,m=async e=>{a(e),s(null);try{await n.request(`theme.install`,{name:e}),await I_(n),await L_(n,`theme`,e)}catch{s(e)}finally{a(null)}},h=new Set(e.themes.map(e=>e.name)),_=(r?.themes??[]).filter(e=>!h.has(e.name));return(0,V.jsxs)(Gj,{label:e.label,hint:z(`prefs.themePreviewHint`),stack:!0,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:Mj,children:z(`prefs.themeInstalled`)}),(0,V.jsx)(rN,{children:e.themes.map(t=>(0,V.jsx)(nN,{theme:t,mode:e.mode,active:t.name===e.value,tag:t.bundled?void 0:z(`prefs.themeUser`),onClick:()=>t.name!==e.value&&void L_(n,`theme`,t.name)},t.name))})]}),_.length>0&&(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(H,{className:`inline-flex items-center gap-1.5`,"aria-expanded":u,onClick:()=>d(!u),children:[(0,V.jsx)(Ia,{right:!u}),u?z(`prefs.themeHide`):z(`prefs.themeBrowse`,{count:_.length})]}),u&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:`m-0 pb-1.5 text-meta font-medium text-subtle mt-2.5`,children:z(`prefs.themeMoreHint`)}),(0,V.jsx)(rN,{children:_.map(t=>(0,V.jsx)(nN,{theme:t,mode:e.mode,active:!1,tag:i===t.name?z(`prefs.themeInstalling`):o===t.name?z(`prefs.themeInstallFailed`):z(`prefs.themeGet`),onClick:()=>i===null&&void m(t.name)},t.name))})]})]}),p&&(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2.5`,children:[(0,V.jsx)(H,{variant:`action`,onClick:()=>f(p),children:z(`prefs.themeAgent`)}),(0,V.jsx)(`span`,{className:`text-meta text-muted [&_a]:text-accent`,children:z(c?`prefs.themeAgentFailed`:`prefs.themeAgentHint`)})]})]})}var aN=_({}),oN=``,sN=`(prefers-color-scheme: dark)`;function cN(e){let t=window.matchMedia(sN);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function lN(){return(0,g.useSyncExternalStore)(cN,()=>window.matchMedia(sN).matches)}function uN(){let e=lN();return __(R_().prefs.themeMode,e)}function dN(e){let t=uN(),n=R_();(0,g.useEffect)(()=>{if(!n.loaded||n.prefs.taskColors!==`on`)return;let r=`${n.prefs.theme}/${t}`;r!==oN&&(oN=r,aN.set({}));let i=()=>{let i=aN.get(),a=e.tasks.get(),o=[...a?.tasks??[],...a?.archived??[]].map(e=>e.id).filter(e=>!(e in i));o.length!==0&&e.client.request(`theme.taskColors`,{theme:n.prefs.theme,mode:t,taskIds:o}).then(e=>{oN===r&&aN.set({...aN.get(),...e.colors})}).catch(()=>void 0)};return i(),e.tasks.subscribe(i)},[e,t,n.loaded,n.prefs.taskColors,n.prefs.theme])}function fN(e){let t=R_(),n=v(aN);return e&&t.prefs.taskColors===`on`?n[e]:void 0}var pN={themeMode:{dark:`appearance.modeDark`,light:`appearance.modeLight`,auto:`appearance.modeAuto`},focusAccent:{primary:`general.accentPrimary`,success:`general.accentSuccess`,info:`general.accentInfo`},splitStyle:{box:`general.splitBox`,line:`general.splitLine`,rail:`general.splitRail`,rule:`general.splitRule`},railFold:{glyphs:`general.railFoldGlyphs`,initials:`general.railFoldInitials`,hairline:`general.railFoldHairline`},workingBorder:{flow:`appearance.borderFlow`,still:`appearance.borderStill`},glyphSet:{braille:`appearance.glyphsBraille`,starburst:`appearance.glyphsStarburst`,ascii:`appearance.glyphsAscii`},runningTitle:{shimmer:`appearance.titleShimmer`,still:`appearance.titleStill`}};function mN({model:e}){let{client:t}=e,n=R_(),r=uN(),i=v(RT),a=(e,n)=>void L_(t,e,n),o=(e,t,r)=>(0,V.jsx)(Jj,{label:$(t),hint:r,value:n.prefs[e],picks:z_(n,e).map(t=>({value:t,label:e===`themeMode`&&t===`auto`?z(`prefs.modeAuto`):$(pN[e]?.[String(t)]??String(t))})),onPick:t=>a(e,t)}),s=(e,t,r)=>(0,V.jsx)(Kj,{label:$(t),hint:r,checked:e===`transparent`?n.prefs.transparent:n.prefs[e]===`on`,onChange:t=>a(e,e===`transparent`?t:t?`on`:`off`)});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Wj,{children:[(0,V.jsx)(iN,{model:e,label:$(`general.theme`),themes:n.themes,value:n.prefs.theme,mode:r}),o(`themeMode`,`general.themeMode`)]}),(0,V.jsxs)(Wj,{title:z(`settings.appearance.groupColours`),children:[o(`focusAccent`,`general.focusAccent`,$(`general.focusAccentHint`)),s(`taskColors`,`general.taskColors`,z(`settings.appearance.taskColorsNote`)),s(`colorblind`,`general.colorblind`,z(`settings.appearance.colorblindNote`))]}),(0,V.jsxs)(Wj,{title:z(`settings.appearance.groupTasks`),children:[o(`workingBorder`,`general.workingBorder`,z(`settings.appearance.workingBorderNote`)),o(`runningTitle`,`general.runningTitle`),o(`glyphSet`,`general.glyphSet`),o(`railFold`,`general.railFold`,$(`general.railFoldHint`)),(0,V.jsx)(Jj,{label:z(`settings.appearance.railGroup`),value:i,picks:IT.map(e=>({value:e,label:z(e===`state`?`settings.appearance.railGroupState`:`settings.appearance.railGroupProject`)})),onPick:zT})]}),(0,V.jsxs)(Wj,{title:z(`settings.appearance.groupTerminal`),hint:z(`prefs.terminalOnly`),children:[s(`transparent`,`general.transparent`),o(`splitStyle`,`general.splitStyle`)]})]})}function hN(e,t,n){if(t===`offline`)return`offline`;if(t===`unsupported`||t===`mismatch`)return`outdated`;if(!e)return`loading`;let r=e.status;return r?r.gh?r.account?r.account===n?`same`:`different`:`signedOut`:`noGh`:e.reason===`failed`||!e.reason?`failed`:e.reason}var gN=2e3,_N=e=>e?.login?.state===`pending`||e?.login?.state===`syncing`;function vN(e){let{client:t}=e,n=DE(e),[r,i]=(0,g.useState)({}),a=n.flatMap(e=>e.state===`online`?[e.alias]:[]).join(`
|
|
113
|
+
`):[])sD(e,t).catch(()=>{})},[e,n])}function lD(e,t){B();let[n,r]=(0,g.useState)(null);if((0,g.useEffect)(()=>{if(!t)return;let n=!1;return sD(e,t).then(e=>!n&&r({machine:t,reply:e,failed:``})).catch(e=>!n&&r({machine:t,reply:null,failed:String(e)})),()=>{n=!0}},[e,t]),!t)return{repos:[],loaded:!0,problem:``};let i=n?.machine===t?n:void 0,a=Hs(e,`machines.repos`,{machine:t});if(!i&&!a)return{repos:[],loaded:!1,problem:``};let o=i?i.reply:a;if(!o)return{repos:[],loaded:!0,problem:z(`newSession.remoteFailed`,{machine:t,message:i?.failed??``})};let s=o.reason?oD[o.reason]:void 0,c=o.reason?s?z(s,{machine:t}):z(`newSession.remoteFailed`,{machine:t,message:o.message??o.reason}):``;return{repos:o.repos,loaded:!0,problem:c}}function uD(e,t){return t.problem?t.problem:t.loaded?z(`newSession.remoteNone`,{machine:e}):z(`newSession.remoteLoading`,{machine:e})}function dD(){return(0,V.jsxs)(`svg`,{className:ME,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`rect`,{x:`2`,y:`3`,width:`12`,height:`8`,rx:`1`}),(0,V.jsx)(`path`,{d:`M5.5 13.5h5M8 11v2.5`})]})}function fD(e){let t=(B()===`zh`?jr:Ar).machine,n=e.machines.find(t=>t.alias===e.value),r=e.value?n?.hostLabel||e.value:z(`newSession.thisMachine`);return(0,V.jsx)(XE,{field:`machine`,title:z(`newSession.machine`),label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(dD,{}),r]}),children:n=>(0,V.jsx)($E,{heading:z(`newSession.machine`),options:[{id:``,label:z(`newSession.thisMachine`)},...e.machines.map(e=>({id:e.alias,label:vE(e,t),disabled:e.state!==`online`}))],value:e.value,digits:!0,onPick:t=>{e.onPick(t),n()}})})}function pD(e){let[t,n]=(0,g.useState)(``),r=t.trim();return(0,V.jsx)(XE,{field:`branch`,title:z(`newSession.branch`),label:e.value||z(`newSession.branch`),children:i=>(0,V.jsx)(ZE,{placeholder:z(`newSession.branchTypeRef`),empty:``,rows:[{key:``,text:z(`newSession.branchRemoteDefault`),checked:e.value===``}],query:t,onQuery:n,extra:r?{key:r,text:r,checked:e.value===r}:null,onPick:t=>{e.onPick(t),n(``),i()}})})}async function mD(e,t){return(await e.client.request(`task.spawn`,aD(t))).taskIds[0]}function hD(e){return e instanceof d_&&e.code===`CLONE_FAILED`?q(`newTask`,`error.cloneFailed`,{error:e.message}):e instanceof Error?e.message:String(e)}function gD(e){let[t,n]=(0,g.useState)(``);if(e.ungrouped)return null;if(e.remote)return e.remotePick&&(0,V.jsx)(pD,{value:e.remoteBase,onPick:e.onRemoteBase});let{repos:r,bases:i,inPlace:a}=e,o=r[0]??``,s=e.probes[o]??null,c=i[o]||s?.current||``,l=ss(s?.branches??[],t).map(e=>({key:e,text:e,checked:e===(i[o]||s?.current)})),u=r.map(t=>({path:t,name:os(t).base,primary:t===o,branches:e.probes[t]?.branches??[],current:e.probes[t]?.current??``,base:i[t]??``}));return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`${NE(!a)} ${PE}`,"aria-pressed":!a,disabled:r.length>1,title:r.length>1?z(`newSession.worktreeMulti`):z(a?`newSession.worktreeOff`:`newSession.worktreeOn`),onClick:e.onToggleWorktree,children:[(0,V.jsx)(qE,{}),z(`newSession.worktree`)]}),r.length>1?(0,V.jsx)(XE,{field:`branch`,title:z(`newSession.branches`),label:z(`newSession.branches`),children:()=>(0,V.jsx)(tD,{repos:u,branch:e.branchName,onBranch:e.onBranchName,onBase:e.onBase})}):!a&&s?.ok&&c&&(0,V.jsx)(XE,{field:`branch`,title:z(`newSession.branch`),label:c,children:r=>(0,V.jsx)(ZE,{placeholder:z(`newSession.branchSearch`),empty:z(`newSession.branchEmpty`),rows:l,query:t,onQuery:n,onPick:t=>{e.onBase(o,t),n(``),r()}})})]})}function _D(e,t){let[n,r]=(0,g.useState)(null),i=t&&n!==null,a=i?n:e.engine?[e.engine]:[];return{ids:a,comparing:i,setComparing:e=>r(e?a:null),toggle(t){let n=Os(a,t);r(n),n[0]&&n[0]!==e.engine&&e.setEngine(n[0])}}}function vD(e){let{picks:t,choice:n}=e,r=n.engines;if(r.length<2)return null;let i=t.ids.map(e=>r.find(t=>t.id===e)?.name??e);return(0,V.jsx)(XE,{field:`engine`,title:z(`newSession.engine`),label:ks(i)||z(`newSession.engine`),children:i=>(0,V.jsx)($E,{heading:z(`newSession.engine`),options:r.map(e=>({id:e.id,label:e.name,dim:e.ready===!1})),value:n.engine,...t.comparing?{values:t.ids}:{},onPick:e=>{if(t.comparing)return t.toggle(e);n.setEngine(e),i()},footer:e.available&&r.length>1?(0,V.jsx)(H,{className:`mx-2 mt-1 mb-0.5 self-start font-mono`,"data-field":`compare-engines`,hit:`tight`,onClick:()=>t.setComparing(!t.comparing),children:z(t.comparing?`compare.oneEngine`:`compare.severalEngines`)}):null})})}function yD(e){return(0,V.jsx)(XE,{field:`model`,title:z(`newSession.model`),label:Ds(e.models,e.model,e.effort,z(`newSession.modelDefault`)),children:t=>(0,V.jsx)(eD,{...e,close:t})})}var bD=6e4,xD=/^(?:(today|tomorrow|今天|明天)\s*)?(\d{1,2})(?::(\d{2}))?\s*(am|pm)?$/i,SD=/^\+\s*(?:(\d+)\s*h)?\s*(?:(\d+)\s*m)?$/i;function CD(e,t){let n=e.trim(),r=SD.exec(n);if(r&&(r[1]||r[2])){let e=Number(r[1]??0)*60+Number(r[2]??0);return e>0?new Date(t.getTime()+e*bD):null}let i=xD.exec(n);if(!i)return null;let a=i[1]?.toLowerCase(),o=Number(i[2]),s=Number(i[3]??0),c=i[4]?.toLowerCase();if(c){if(o<1||o>12)return null;o=o%12+(c===`pm`?12:0)}if(o>23||s>59)return null;let l=new Date(t.getFullYear(),t.getMonth(),t.getDate(),o,s);if(a===`tomorrow`||a===`明天`)l.setDate(l.getDate()+1);else if(l.getTime()<=t.getTime()){if(a)return null;l.setDate(l.getDate()+1)}return l.getTime()>t.getTime()?l:null}function wD(e,t=new Date){let n=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return e.toDateString()===t.toDateString()?n:`${e.toLocaleDateString([],{weekday:`short`})} ${n}`}async function TD(e,t,n,r){await e.request(`task.scheduleStart`,{taskId:t,at:n.toISOString(),prompt:r})}function ED(e){let[t,n]=(0,g.useState)(``);return(0,V.jsx)(XE,{field:`later`,title:z(`newSession.later`),disabled:e.disabled,label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(YE,{}),z(`newSession.later`)]}),children:r=>{let i=()=>{let n=CD(t,new Date);if(!n)return e.onInvalid(z(`newSession.laterBad`));r(),e.onSchedule(n)};return(0,V.jsxs)(`div`,{className:GE,children:[(0,V.jsx)(`input`,{className:`${nn} min-w-0 flex-1`,value:t,placeholder:z(`newSession.laterPlaceholder`),"aria-label":z(`newSession.later`),spellCheck:!1,autoComplete:`off`,autoFocus:!0,onChange:e=>n(e.target.value),onKeyDown:e=>{e.key!==`Enter`||e.nativeEvent.isComposing||(e.preventDefault(),e.stopPropagation(),i())}}),(0,V.jsx)(H,{variant:`filled`,disabled:!t.trim(),onClick:i,children:z(`newSession.laterConfirm`)})]})}})}var DD=`clone:`;function OD(e){let{model:t,saved:n,picked:r,primary:i,home:a,query:o,remote:s}=e,[c,l]=(0,g.useState)(()=>Hs(t,`github.repos`)??null);(0,g.useEffect)(()=>{let e=!1;return Ws(t,`github.repos`).then(t=>!e&&l(t)).catch(()=>!e&&l({repos:[],reason:`failed`})),()=>{e=!0}},[t]);let u=o.trim(),d=ss(n,o),f=z(`rail.noProject`),p=e.ungrouped&&(!u||f.toLowerCase().includes(u.toLowerCase()))?[{key:fw,text:f,dim:a,checked:e.ungrouped.on}]:[],m=d.map(e=>{let{base:t,dir:n}=os(e);return{key:e,text:t,dim:e===i&&r.length>1?`${z(`newSession.primary`)}, ${n}`:n,checked:r.includes(e)}}),h=bs(u),_=h&&(h.includes(`:`)||d.length===0)?h:null,v=!_&&cs(u)&&!n.includes(u)&&(!s||u.startsWith(`/`))?us(ls(u,a)):``,y=_?{key:DD+_,text:s?z(`newSession.cloneRowOn`,{source:_,machine:s.name}):z(`newSession.cloneRow`,{source:_})}:v?{key:v,text:v,checked:r.includes(v)}:null,b=u.toLowerCase(),x=(c?.repos??[]).filter(e=>e.nameWithOwner.toLowerCase().includes(b)).filter(e=>!iD(n,e.nameWithOwner,s!==void 0)).map(e=>({key:DD+e.nameWithOwner,text:e.nameWithOwner,dim:e.description,title:e.description}));return(0,V.jsx)(ZE,{placeholder:z(s?`newSession.repoSearchRemote`:`newSession.repoSearch`),empty:s?.empty??z(`newSession.repoEmpty`),rows:s?.blocked?[]:[...p,...m],query:o,onQuery:e.onQuery,extra:s?.blocked?null:y,more:s?.blocked?[]:x,moreLabel:z(`newSession.githubGroup`),onPick:t=>{if(t===`~scratch`)return e.ungrouped?.pick(),e.close();if(!t.startsWith(`clone:`))return e.onToggle(t);e.onClone(t.slice(6)),e.close()}})}function kD(e){document.querySelector(`.dialog [data-field="${e}"]:not([hidden] *)`)?.focus()}function AD(e){let[t,n]=(0,g.useState)(0),r=e.open&&e.items.length>0,i=Math.min(t,Math.max(0,e.items.length-1)),a=(0,g.useRef)(null),{onCursor:o}=e;return(0,g.useEffect)(()=>o?.(i),[i,o]),(0,g.useEffect)(()=>{a.current?.scrollIntoView({block:`nearest`})},[i,e.items]),(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`input`,{className:nn,"data-field":e.field,spellCheck:!1,autoComplete:`off`,autoFocus:e.autoFocus,placeholder:e.placeholder,value:e.value,onChange:t=>{n(0),e.onChange(t.target.value.replace(/[\r\n]+/g,``))},onKeyDown:t=>{if(!t.nativeEvent.isComposing){if(t.key===`ArrowDown`||t.key===`ArrowUp`){if(!r)return;t.preventDefault(),n(Math.max(0,Math.min(e.items.length-1,i+(t.key===`ArrowDown`?1:-1))))}else t.key===`Tab`&&!t.shiftKey&&r&&e.onComplete?.(i)?(t.preventDefault(),n(0)):t.key===`Enter`&&!t.ctrlKey&&!t.metaKey&&(t.preventDefault(),r?((e.onEnterRow??e.onPick)(i),n(0)):e.onEnter?.())}}}),r&&(0,V.jsx)(`ul`,{className:`mx-0 mt-1 mb-0 max-h-47 list-none overflow-y-auto rounded-sm border-hairline border-line bg-inset p-0.5 font-mono text-meta`,children:e.items.map((t,n)=>(0,V.jsx)(`li`,{ref:n===i?a:void 0,children:(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":n===i,className:$t({cursor:n===i,accent:!!t.accent}),onMouseDown:t=>{t.preventDefault(),e.onPick(n)},children:[(0,V.jsx)(`span`,{children:t.text}),t.dim&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,t.dim]})]})},t.key))})]})}function jD({model:e,engine:t,busy:n,error:r,run:i}){let[a,o]=(0,g.useState)(``),[s,c]=(0,g.useState)(()=>localStorage.getItem(`rove.web.cloneParent`)||`~/`),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(`main`),[p,m]=(0,g.useState)(``),[h,_]=(0,g.useState)(!1),[v,y]=(0,g.useState)({base:``,home:``,names:[]});(0,g.useEffect)(()=>{let t=!1,n=setTimeout(()=>{e.client.request(`fs.subdirs`,{path:s}).then(e=>!t&&y(e)).catch(()=>{})},60);return()=>{t=!0,clearTimeout(n)}},[e,s]);let b=l??gs(a),x=ls(s.trim(),v.home),S=()=>i(async()=>{if(!a.trim())throw kD(`url`),Error(q(`newTask`,`error.gitUrlRequired`));let n;try{m(``),n=await e.client.request(`repo.clone`,{url:a.trim(),parentDir:x,...l?.trim()?{folder:l.trim()}:{}},m)}catch(e){throw e instanceof d_&&e.code===`CLONE_FAILED`?Error(q(`newTask`,`error.cloneFailed`,{error:e.message})):e}localStorage.setItem(_s,s.trim());let r=(await e.client.request(`task.spawn`,{repo:n.path,...t?{engine:t}:{},...d.trim()?{baseBranch:d.trim()}:{}})).taskIds[0];r&&e.selectWhenListed(r)});return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),S()},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.gitUrl`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`url`,spellCheck:!1,placeholder:`https://github.com/user/repo.git`,value:a,onChange:e=>o(e.target.value.replace(/[\r\n]+/g,``)),onKeyDown:e=>{e.key!==`Enter`||e.ctrlKey||e.metaKey||(e.preventDefault(),a.trim()&&kD(`parent`))}})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.parentDir`)}),(0,V.jsx)(AD,{field:`parent`,value:s,placeholder:`~/`,onChange:e=>{_(!0),c(e)},items:v.names.map(e=>({key:e,text:`${e}/`})),open:h,onPick:e=>{let t=v.names[e];t!==void 0&&c(fs(s,v.base,t,v.home)),_(!1),kD(`folder`)},onComplete:e=>{let t=v.names[e];if(t===void 0)return!1;let n=`${fs(s,v.base,t,v.home)}/`;return n!==s&&(c(n),!0)},onEnter:()=>kD(`folder`)}),(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`hint.remembered`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.folderName`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`folder`,spellCheck:!1,placeholder:q(`newTask`,`placeholder.folderName`),value:b,onChange:e=>u(e.target.value.replace(/[\r\n]+/g,``)),onKeyDown:e=>{e.key!==`Enter`||e.ctrlKey||e.metaKey||(e.preventDefault(),kD(`clone-base`))}})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.baseBranch`)}),(0,V.jsx)(`input`,{className:nn,"data-field":`clone-base`,spellCheck:!1,placeholder:`main`,value:d,onChange:e=>f(e.target.value.replace(/[\r\n]+/g,``))})]}),n&&(0,V.jsx)(`p`,{className:`text-muted`,"data-field":`clone-progress`,children:p||q(`newTask`,`clone.progressInto`,{target:`${x}/${b}`})}),r&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,r]}),(0,V.jsx)(pr,{busy:n,submitLabel:q(`newTask`,n?`button.cloning`:`button.create`)})]})}function MD({model:e,engine:t,busy:n,error:r,run:i,repo:a,active:o}){let[s,c]=(0,g.useState)(``),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(new Set),[p,m]=(0,g.useState)(0),h=a.expanded;(0,g.useEffect)(()=>{if(!o||!h)return;let t=!1;return u(null),f(new Set),e.client.request(`repo.probe`,{path:h,adoptable:!0}).then(e=>!t&&u(e.worktrees??[])).catch(()=>!t&&u([])),()=>{t=!0}},[e,o,h]);let _=Ss(l??[],s),v=e=>f(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n}),y=()=>i(async()=>{let n=d.size>0?_.filter(e=>d.has(e.path)):_.slice(p,p+1);if(n.length===0)throw Error(q(`newTask`,`error.noAdoptable`));let r=0,i,a;for(let o of n){let n={repo:h,worktreePath:o.path,branch:o.branch,...t?{engine:t}:{}};try{let t;try{t=await e.client.request(`worktree.adopt`,n)}catch(r){if(!(r instanceof d_&&r.code===`UNKNOWN_REPO`))throw r;await e.client.request(`task.openMain`,{repo:h}),t=await e.client.request(`worktree.adopt`,n)}a=t.taskId,r++}catch(e){i??=e instanceof Error?e.message:String(e)}}if(r===0)throw Error(q(`newTask`,`adopt.summaryNone`,{error:i??``}));G(r<n.length?q(`newTask`,`adopt.summaryPartial`,{done:r,total:n.length}):q(`newTask`,`adopt.summaryAll`,{count:r})),a&&e.selectWhenListed(a)}),b=d.size>0?q(`newTask`,`adopt.hintSelected`,{count:d.size}):q(`newTask`,`adopt.hintDefault`);return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),y()},onKeyDown:e=>{e.ctrlKey&&!e.shiftKey&&!e.metaKey&&e.key.toLowerCase()===`a`&&(e.preventDefault(),e.stopPropagation(),f(e=>_.every(t=>e.has(t.path))?new Set:new Set(_.map(e=>e.path))))},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.adoptFilter`)}),(0,V.jsx)(AD,{field:`filter`,value:s,placeholder:q(`newTask`,`placeholder.adoptFilter`),onChange:c,items:_.map(e=>{let t=[e.dirty===!0?`dirty`:e.dirty===null?`dirty?`:``,e.roveManaged?``:`external`].filter(Boolean).join(`,`);return{key:e.path,text:`${d.has(e.path)?`[x]`:`[ ]`} ${e.branch}${t?` (${t})`:``}`,dim:e.path,accent:d.has(e.path)}}),open:!0,onPick:e=>{let t=_[e];t&&v(t.path)},onCursor:m,onEnter:()=>{}}),(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`adopt.repoLine`,{path:h||q(`newTask`,`adopt.repoNone`)})}),l===null&&h&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,`hint.scanningWorktrees`)}),l!==null&&_.length===0&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,l.length===0?`adopt.noUnlinked`:`adopt.noMatch`)}),_.length>0&&(0,V.jsx)(`span`,{className:`text-muted`,children:(0,V.jsx)(AT,{text:is(b)})})]}),r&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,r]}),(0,V.jsx)(pr,{busy:n,submitLabel:q(`newTask`,`button.create`)})]})}var ND=[`existing`,`clone`,`adopt`];function PD(e,t){let n=Hs(e,`repos.list`)?.repos,[r,i]=(0,g.useState)(n??[]),[a,o]=(0,g.useState)(()=>Hs(e,`fs.subdirs`,{path:`~/`})?.home??``),[s,c]=(0,g.useState)(()=>{let e=t??n?.[0];return e?hs(e,n??[]):``}),[l,u]=(0,g.useState)(!1),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null);(0,g.useEffect)(()=>{Promise.all([Ws(e,`repos.list`),Ws(e,`fs.subdirs`,{path:`~/`})]).then(([e,n])=>{i(e.repos),o(n.home);let r=t??e.repos[0]??``;c(t=>t||hs(r,e.repos))}).catch(()=>{})},[e,t]);let h=cs(s.trim())&&!r.includes(s.trim());(0,g.useEffect)(()=>{if(!h)return;let t=!1,n=setTimeout(()=>{e.client.request(`fs.subdirs`,{path:s}).then(e=>!t&&f({base:e.base,names:e.names})).catch(()=>!t&&f({base:``,names:[]}))},60);return()=>{t=!0,clearTimeout(n)}},[e,h,s]);let _=ms(s,r),v=_.kind===`path`?_.path:``,y=v.startsWith(`~`)&&!a?``:v.replace(/^~(?=\/|$)/,a).replace(/(.)\/+$/,`$1`);(0,g.useEffect)(()=>{if(m(null),!y)return;let t=!1,n=setTimeout(()=>{e.client.request(`repo.probe`,{path:y}).then(e=>!t&&m(e)).catch(()=>{})},150);return()=>{t=!0,clearTimeout(n)}},[e,y]);let b=new Set((e.tasks.get()?.tasks??[]).filter(e=>e.kind===`main`).map(e=>e.repo.replace(/\/+$/,``))),x=h?d?.names??[]:[],S=ss(r,s),C=h?x.map(e=>({key:e,text:`${e}/`})):S.map(e=>{let{base:t,dir:n}=os(e);return{key:e,text:t,dim:n,accent:e===y}});return{text:s,saved:r,home:a,expanded:y,ambiguous:_.kind===`ambiguous`?_.name:null,mainRepos:b,open:!l,items:C,probe:p,setText:e=>{u(!1),c(e)},pick:e=>{if(h){let t=x[e];t!==void 0&&c(fs(s,d?.base??``,t,a))}else{let t=S[e];t!==void 0&&c(hs(t,r))}u(!0),kD(`branch`)},complete:e=>{if(l)return!1;if(h){let t=x[e];if(t===void 0)return!1;let n=ps(s,d?.base??``,t,a);return n!==s&&(c(n),!0)}let t=S[e];if(t===void 0)return!1;let n=hs(t,r);return n!==s.trim()&&(c(n),u(!0),!0)},reopen:()=>u(!1)}}function FD(e){let{model:t,repo:n}=e,[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(!1),[s,c]=(0,g.useState)(!0),[l,u]=(0,g.useState)(`task`),d=n.mainRepos.has(n.expanded),f=n.probe?.ok?n.probe:null,p=f?.branches??[];(0,g.useEffect)(()=>{!a&&f?.current&&i(f.current)},[a,f]),(0,g.useEffect)(()=>u(`task`),[n.expanded]);let m=ss(p,r),h=i=>e.run(async()=>{if(n.ambiguous)throw n.reopen(),kD(`repo`),Error(q(`newTask`,`error.repoAmbiguous`,{name:n.ambiguous}));if(!n.expanded)throw kD(`repo`),Error(z(`newTask.needRepo`));let e=await t.client.request(`repo.probe`,{path:n.expanded});if(!e.ok)throw kD(`repo`),Error(e.reason??n.expanded);if(l===`project`&&d){let n=await t.client.request(`task.openMain`,{repo:e.repo});t.selectWhenListed(n.taskId);return}gn(e.repo,(i??r).trim())});return(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),h()},children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.repo`)}),(0,V.jsx)(AD,{field:`repo`,value:n.text,onChange:n.setText,items:n.items,open:n.open,onPick:n.pick,onComplete:n.complete,onEnter:()=>kD(`branch`)})]}),d&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`newTask`,`field.opens`)}),(0,V.jsx)(es,{label:q(`newTask`,`field.opens`),field:`intent`,value:l,onChange:e=>u(e===`project`?`project`:`task`),choices:[{id:`task`,label:q(`newTask`,`intent.task`)},{id:`project`,label:q(`newTask`,`intent.project`)}]})]}),!(l===`project`&&d)&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`newTask`,`field.fromBranch`)}),(0,V.jsx)(AD,{field:`branch`,value:r,placeholder:`main`,onChange:e=>{o(!0),c(!0),i(e)},items:m.map(e=>({key:e,text:e,accent:e===r.trim()})),open:s,onPick:e=>{let t=m[e];t!==void 0&&(i(t),o(!0),c(!1),kD(`create`))},onEnterRow:e=>{let t=r.trim(),n=t?m.find(e=>e.toLowerCase()===t.toLowerCase()):void 0;h(n??m[e]??t)},onEnter:()=>void h()}),m.length===0&&e.error==null&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`newTask`,p.length===0?`hint.noBranchesFound`:`hint.noMatchBranch`)})]}),e.error&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,e.error]}),(0,V.jsx)(pr,{busy:e.busy,submitLabel:q(`newTask`,`button.create`)})]})}function ID({model:e,repo:t}){B();let[n,r]=(0,g.useState)(`existing`),{busy:i,error:a,setError:o,submit:s}=lr(),c=e.selection.get().taskId,l=e.tasks.get()?.tasks.find(e=>e.id===c)?.repo,u=NC(e,t??l),d=PD(e,t??l),f=(0,g.useRef)(null),p=(0,g.useRef)(!0);(0,g.useEffect)(()=>{if(o(null),p.current){p.current=!1,f.current?.querySelector(`[data-field=mode] [aria-pressed=true]`)?.focus();return}kD(n===`existing`?`repo`:n===`clone`?`url`:`filter`)},[n]);let m=u.engines.filter(e=>e.ready!==!1),h=()=>{let e=m.length>0?m:u.engines,t=e[(e.findIndex(e=>e.id===u.engine)+1)%e.length];t&&u.setEngine(t.id)},_=e=>r(t=>ND[(ND.indexOf(t)+e+ND.length)%ND.length]),v={model:e,engine:u.engine,busy:i,error:a,setError:o,run:s};return(0,V.jsx)(cr,{title:q(`newTask`,`title`),wide:!0,children:(0,V.jsxs)(`div`,{ref:f,onKeyDown:e=>{if(!(!e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`]`||e.key===`[`)_(e.key===`]`?1:-1);else if(e.key.toLowerCase()===`e`&&!e.shiftKey)h();else return;e.preventDefault(),e.stopPropagation()}},children:[(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.mode`)}),(0,V.jsx)(es,{label:q(`newTask`,`field.mode`),field:`mode`,value:n,onChange:e=>r(e),choices:ND.map(e=>({id:e,label:q(`newTask`,`tabs.${e}`)}))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:q(`newTask`,`field.engine`)}),(0,V.jsx)(zC,{engines:u.engines,value:u.engine,onChange:u.setEngine})]})]}),(0,V.jsx)(`div`,{hidden:n!==`existing`,children:(0,V.jsx)(FD,{...v,repo:d})}),(0,V.jsx)(`div`,{hidden:n!==`clone`,children:(0,V.jsx)(jD,{...v})}),(0,V.jsx)(`div`,{hidden:n!==`adopt`,children:(0,V.jsx)(MD,{...v,repo:d,active:n===`adopt`})}),(0,V.jsx)(`p`,{className:`keys-only mx-0 mt-2 mb-0 ${Yt}`,children:q(`newTask`,`legend`,{enter:q(`newTask`,`enterNext`)})})]})})}function LD(e,t){let n=e.scratch||e.noProject,r=n?[]:t.extraRepos??[];return{...n?{ungrouped:!0}:{repo:t.repo},...t.baseRef?{baseBranch:t.baseRef}:{},...r.length>0?{extras:r}:{},...e.machine?{machine:e.machine.id}:{},prompt:t.prompt,...t.engine?{engine:t.engine}:{},worktree:e.kind===`task`,retryOf:{id:e.id,label:e.label}}}function RD(e,t){return e?[e,...(t.extras??[]).map(e=>e.repo)]:[]}function zD(e,t){return e?{...t.baseBranch?{[e]:t.baseBranch}:{},...Object.fromEntries((t.extras??[]).flatMap(e=>e.baseRef?[[e.repo,e.baseRef]]:[]))}:{}}function BD(e,t){return e.retryOf&&e.engine&&e.engine===t?e.retryOf.id:void 0}async function VD(e,t){try{let{task:n}=await e.client.request(`task.get`,{taskId:t.id});if(!n.prompt)return void G(z(`menu.retryNoPrompt`),`error`);_n(LD(t,{...n,prompt:n.prompt}))}catch(e){G(K(e),`error`)}}function HD(e,t){let n=async n=>{await e.client.request(`task.archive`,{taskId:t.id,archived:!0,...n?{force:n}:{}}),G(q(`tasks`,`archive.done`,{title:t.label}))};W.set((0,V.jsx)(dr,{title:z(`newSession.retryArchiveTitle`,{title:t.label}),body:z(`newSession.retryArchiveBody`),confirmLabel:q(`tasks`,`menu.archive`),onConfirm:()=>n(!1),escalate:{when:e=>e instanceof d_&&e.code===`TASK_BUSY`,label:q(`tasks`,`archive.busyConfirm`),title:q(`tasks`,`archive.busyTitle`),body:()=>q(`tasks`,`archive.busyBody`,{title:t.label}),run:()=>n(!0)}}))}var UD=_([]),WD=()=>v(UD);async function GD(e){UD.set((await e.request(`snippets.get`)).snippets)}async function KD(e,t){UD.set((await e.request(`snippets.save`,{name:t.name,text:t.text})).snippets)}async function qD(e,t){UD.set((await e.request(`snippets.remove`,{name:t})).snippets)}var JD=/^[A-Za-z0-9][\w-]{0,31}$/;function YD(e,t){let n=t;for(;n>0&&/[\w-]/.test(e[n-1]??``);)n--;if(n===0||e[n-1]!==`@`)return null;let r=e[n-2];if(r!==void 0&&!/\s/.test(r))return null;let i=t;for(;i<e.length&&/[\w-]/.test(e[i]??``);)i++;return{start:n-1,end:i,query:e.slice(n,t)}}function XD(e,t){let n=t.toLowerCase(),r=e.filter(e=>e.name.toLowerCase().startsWith(n));return[...r.filter(e=>e.name.toLowerCase()===n),...r.filter(e=>e.name.toLowerCase()!==n)]}function ZD(e,t,n){return{text:e.slice(0,t.start)+n.text+e.slice(t.end),caret:t.start+n.text.length}}var QD=e=>e.split(`
|
|
114
|
+
`,1)[0]??``;function $D(e){return(0,V.jsx)(`ul`,{className:`${Qt} ${e.className}`,children:e.items.map((t,n)=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(H,{variant:`row`,tabIndex:-1,"aria-pressed":n===e.at,className:$t({cursor:n===e.at,accent:!1}),onMouseDown:t=>{t.preventDefault(),e.onPick(n)},children:[(0,V.jsxs)(`span`,{className:`text-accent`,children:[`@`,t.name]}),(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,QD(t.text)]})]})},t.name))})}function eO(e){let t=WD(),[n,r]=(0,g.useState)(0),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),c=(0,g.useRef)(null),l=YD(e.value,Math.min(n,e.value.length)),u=l?XD(t,l.query):[],d=l!==null&&u.length>0&&o!==l.start,f=Math.min(i,Math.max(0,u.length-1));(0,g.useLayoutEffect)(()=>{let t=c.current,n=e.area.current;t===null||!n||(c.current=null,n.setSelectionRange(t,t),r(t))});let p=t=>{let n=u[t];if(!l||!n)return;let r=ZD(e.value,l,n);c.current=r.caret,a(0),e.onChange(r.text)},m=e=>{if(!d||e.nativeEvent.isComposing)return!1;if(e.key===`ArrowDown`||e.key===`ArrowUp`)a(Math.max(0,Math.min(u.length-1,f+(e.key===`ArrowDown`?1:-1))));else if(e.key===`Tab`&&!e.shiftKey||e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey)p(f);else if(e.key===`Escape`)s(l?.start??null),e.stopPropagation();else return!1;return e.preventDefault(),!0};return{list:d?(0,V.jsx)($D,{items:u,at:f,className:e.listClassName??``,onPick:p}):null,field:{onChange:t=>{r(t.target.selectionStart),a(0),e.onChange(t.target.value)},onSelect:e=>r(e.currentTarget.selectionStart),onKeyDown:t=>{m(t)||!e.onEnter||t.key!==`Enter`||t.shiftKey||t.nativeEvent.isComposing||(t.preventDefault(),e.onEnter())}}}}function tO(e,t){gn(e,void 0,t)}function nO(){gn(void 0,void 0,void 0,void 0,!0)}var rO=`rove.web.newSession.worktree`,iO=``;function aO({model:e,seed:t}){let n=t.repo;B();let r=v(e.selection).taskId,i=e.tasks.get()?.tasks.find(e=>e.id===r)?.repo,a=NC(e,n??i,t.engine),o=Hs(e,`repos.list`)?.repos,s=e=>t.ungrouped?void 0:(t.machine?void 0:n)??i??e?.[0],[c,l]=(0,g.useState)(o??[]),[u,d]=(0,g.useState)(()=>Hs(e,`fs.subdirs`,{path:`~/`})?.home??``),[f,p]=(0,g.useState)(()=>RD(s(o),t)),[m,h]=(0,g.useState)(()=>Object.fromEntries(f.flatMap(t=>{let n=Hs(e,`repo.probe`,{path:t});return n?[[t,n]]:[]}))),_=(0,g.useRef)(new Set),[y,b]=(0,g.useState)(t.ungrouped===!0),x=()=>{b(!0),p([])},[S,C]=(0,g.useState)(()=>zD(s(o),t)),[w,T]=(0,g.useState)(``),[E,D]=(0,g.useState)(``),[O,k]=(0,g.useState)(()=>(t.prompt!==void 0&&(iO=t.prompt),iO)),A=e=>{iO=e,k(e)},[j,ee]=(0,g.useState)(``),[M,N]=(0,g.useState)(``),[P,F]=(0,g.useState)(!1),[I,te]=(0,g.useState)(``),[L,ne]=(0,g.useState)(()=>t.worktree??localStorage.getItem(rO)!==`0`),re=e=>{localStorage.setItem(rO,e?`1`:`0`),ne(e)},[ie,R]=(0,g.useState)(null),{attachments:ae,attach:oe,remove:se,clear:ce}=Qo(e,R),le=(0,g.useRef)(null),ue=CE(e),[de,fe]=(0,g.useState)(t.machine??``),pe=de!==``,me=pe?null:Jo(e=>void oe(e)),he=ue.find(e=>e.alias===de)?.hostLabel||de,ge=lD(e,de);cD(e,ue);let[_e,ve]=(0,g.useState)(null),[ye,be]=(0,g.useState)(``);(0,g.useEffect)(()=>{Promise.all([Ws(e,`repos.list`),Ws(e,`fs.subdirs`,{path:`~/`})]).then(([e,n])=>{l(e.repos),d(n.home);let r=s(e.repos);p(e=>e.length>0||!r?e:RD(r,t)),C(e=>({...e,...zD(r,t)}))}).catch(()=>{})},[e,n]);let xe=!pe&&!L&&f.length===1,Se=f[0]??``;(0,g.useEffect)(()=>{for(let t of f)_.current.has(t)||(_.current.add(t),Ws(e,`repo.probe`,{path:t}).then(e=>h(n=>({...n,[t]:e}))).catch(()=>{}))},[e,f]),(0,g.useEffect)(()=>{!pe||!ge.loaded||de!==t.machine||ve(e=>e??rD(n,ge.repos))},[ge.loaded]),(0,g.useEffect)(()=>le.current?.focus(),[]);let Ce=!pe&&!y&&!xe,we=_D(a,Ce),Te=a.engines.find(e=>e.id===a.engine),Ee=Ts(Te,z(`newSession.modelDefault`)),De=Es(Te,z(`newSession.effortDefault`)),Oe=Ee.some(e=>e.id===j)?j:``,ke=De.some(e=>e.id===M)?M:``,Ae=async t=>{R(null),F(!0),te(z(`newSession.cloning`,{source:t}));try{let n=us(ls((localStorage.getItem(`rove.web.cloneParent`)||`~/`).trim(),u)),r=await e.client.request(`repo.clone`,{url:t,parentDir:n},te);l(e=>e.includes(r.path)?e:[...e,r.path]),p(e=>e.includes(r.path)?e:Ms(e,r.path)),b(!1),D(``)}catch(e){R(hD(e))}finally{F(!1),te(``)}},je=async n=>{if(!_e)return R(z(`newSession.needRepo`));if(n&&!O.trim())return R(z(`newSession.needPrompt`));F(!0),te(_e.clone?z(`newSession.cloningOn`,{source:_e.ref,machine:he}):z(`newSession.startingOn`,{machine:he}));try{let r=await mD(e,{pick:_e,machine:de,engine:a.engine,prompt:O.trim(),begin:n,baseRef:ye});iO=``,hn.set(null),r&&e.selectWhenListed(r),t.retryOf&&r&&HD(e,t.retryOf)}catch(e){R(hD(e))}finally{F(!1),te(``)}},Me=async(n=!0,r)=>{if(R(null),pe)return je(n);if(!Se&&!y)return R(z(`newSession.needRepo`));if((n||r)&&!O.trim())return R(z(`newSession.needPrompt`));F(!0);let i=Xo(O.trim(),ae);try{let o=await Promise.all(f.map(t=>e.client.request(`repo.probe`,{path:t}))),s=o.find(e=>!e.ok);if(s)throw Error(s.reason??s.repo);let c,l;if(y)c=await Fs(e.client.request.bind(e.client),a.engine,O,n);else if(xe)c=await Is(e.client.request.bind(e.client),o[0]?.repo??Se,a.engine,O,n,i);else{let r=await e.client.request(`task.spawn`,Ps({repos:f.map((e,t)=>({repo:o[t]?.repo??e,baseRef:S[e]??``})),branch:w.trim(),engine:a.engine,commandFrom:BD(t,a.engine),engines:n?we.ids:[],prompt:i,begin:n,model:Oe,effort:ke}));c=r.taskIds[0],l=r.groupId}r&&c&&await TD(e.client,c,r,i).then(()=>G(z(`newSession.laterSet`,{time:wD(r)}))).catch(e=>G(hD(e),`error`)),iO=``,ce(),hn.set(null),l?ba(l):c&&e.selectWhenListed(c),t.retryOf&&c&&HD(e,t.retryOf)}catch(e){let t=As(e);t?(iO=``,ce(),hn.set(null),G(e instanceof Error?e.message:String(e),`error`),ba(t)):R(e instanceof Error?e.message:String(e))}finally{F(!1)}},Ne=eO({value:O,onChange:A,area:le,onEnter:()=>void Me()});return(0,V.jsxs)(`div`,{className:wE,children:[(0,V.jsxs)(`div`,{className:TE,children:[(0,V.jsx)(`h1`,{className:`m-0 font-sans text-title font-semibold text-accent`,children:z(`newSession.title`)}),(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:z(`newSession.tagline`)})]}),(0,V.jsxs)(`form`,{className:EE,onSubmit:e=>{e.preventDefault(),Me()},children:[(0,V.jsxs)(`div`,{className:DE,...me?.drop,children:[!pe&&(0,V.jsx)($o,{attachments:ae,onRemove:se}),(0,V.jsx)(`textarea`,{ref:le,className:kE,rows:4,spellCheck:!1,placeholder:z(`newSession.placeholder`),value:O,disabled:P,onPaste:me?.onPaste,...Ne.field}),Ne.list,(0,V.jsxs)(`div`,{className:OE,children:[(0,V.jsx)(`button`,{type:`button`,className:NE(),disabled:P||we.comparing,title:we.comparing?z(`compare.needsPrompt`):void 0,onClick:()=>void Me(!1),children:z(`newSession.createOnly`)}),(0,V.jsx)(`button`,{type:`submit`,className:Pe(),disabled:P,children:z(`newSession.start`)})]})]}),(0,V.jsxs)(`div`,{className:AE,children:[(0,V.jsx)(fD,{machines:ue,value:de,onPick:e=>{fe(e),ve(null),be(``),D(``),R(null),b(!1)}}),(0,V.jsx)(XE,{field:`repo`,title:!pe&&f.length>1?z(`newSession.repoCount`,{count:f.length}):z(`newSession.repo`),label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(KE,{}),js(pe?_e?[_e.ref]:[]:f)||z(y?`rail.noProject`:`newSession.repo`),_e?.clone&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[` `,z(`newSession.cloneTag`)]})]}),children:t=>(0,V.jsx)(OD,{model:e,saved:pe?ge.repos.map(nD):c,picked:pe?_e?[_e.ref]:[]:f,primary:pe?``:Se,home:pe?``:u,query:E,onQuery:D,onToggle:e=>{if(R(null),!pe)return b(!1),p(t=>Ms(t,e));ve({ref:e,clone:!1}),t()},onClone:e=>pe?ve({ref:e,clone:!0}):void Ae(e),close:t,remote:pe?{name:he,empty:uD(de,ge),blocked:ge.problem!==``}:void 0,ungrouped:pe?void 0:{on:y,pick:x}})}),(0,V.jsx)(gD,{remote:pe,remotePick:_e,remoteBase:ye,onRemoteBase:be,ungrouped:y,inPlace:xe,onToggleWorktree:()=>re(!L),repos:f,probes:m,bases:S,onBase:(e,t)=>C(n=>({...n,[e]:t})),branchName:w,onBranchName:T}),me&&(0,V.jsxs)(Yo,{className:`${NE(ae.length>0)} cursor-pointer`,title:z(`newSession.attachHint`),disabled:P,onFiles:e=>void oe(e),children:[(0,V.jsx)(JE,{}),z(`newSession.attach`)]}),!pe&&!y&&!we.comparing&&(0,V.jsx)(ED,{disabled:P,onSchedule:e=>void Me(!1,e),onInvalid:R}),(0,V.jsx)(`span`,{className:jE}),(0,V.jsx)(vD,{choice:a,picks:we,available:Ce}),!xe&&!pe&&!y&&!we.comparing&&(Ee.length>0||De.length>0)&&(0,V.jsx)(yD,{models:Ee,model:Oe,onModel:ee,efforts:De,effort:ke,onEffort:N})]}),P&&I&&(0,V.jsx)(`p`,{className:`text-muted`,"data-field":`clone-progress`,children:I}),ie&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,ie]})]}),!pe&&(0,V.jsx)(`button`,{type:`button`,className:`mt-2 self-center px-1.5 py-0.5 text-subtle focus-visible:text-ink touch:mt-0.5 touch:py-2 [&:hover]:text-ink`,onClick:()=>W.set((0,V.jsx)(ID,{model:e,repo:Se||void 0})),children:z(`newSession.moreWays`)})]})}var oO=[`needs`,`working`,`ready`,`idle`],sO=`~state:`;function cO(e){switch(e.rowStatus?.kind){case`attention`:case`needs-input`:case`unseen`:return`needs`;case`busy`:case`running`:return`working`}switch(e.group){case`waiting-on-you`:return`needs`;case`working`:return`working`;case`landing`:case`ready-for-review`:return`ready`}return e.pr?.lifecycle===`open`||e.status===`done`?`ready`:`idle`}var lO=e=>e&&e.kind!==`main`&&!pw(e)?qC(e.repo):void 0;function uO(e,t){let n=mw(e,t.sort),{children:r,nested:i}=yw([{repo:``,label:``,tasks:n}]),a=n.filter(e=>!i.has(e.id)),o=ew(a),s=e=>{let t=[],n=new Set,i=e=>{if(!n.has(e.id)){n.add(e.id),t.push(e);for(let t of r.get(e.id)??[])i(t)}};return i(e),t},c=new Map;for(let e of a){let t=$C(e),n=((t===null?void 0:o.get(t))??[e]).map(s),r=n.flat().map(cO).reduce((e,t)=>oO.indexOf(t)<oO.indexOf(e)?t:e);for(let e of n)for(let t of e)c.set(t.id,r)}return oO.flatMap(e=>{let t=n.filter(t=>c.get(t.id)===e);return t.length===0?[]:[{repo:``,label:z(`rail.state.${e}`),key:`${sO}${e}`,tasks:t}]})}function dO(e){let t=new Set(e.machines.map(e=>e.alias));return{rows:fO(Sw(uO([...e.tasks.filter(e=>!e.routine),...e.remote.filter(e=>!e.routine&&e.machine!==void 0&&t.has(e.machine.id))],e),e.query,e.fold).map(e=>{if(e.kind!==`project`)return e;let t=e.id.slice(`project:${sO}`.length);return{id:`state:${t}`,kind:`state`,state:t,label:e.label,count:0}})),groups:[]}}function fO(e){let t=new Map,n=``;for(let r of e)r.kind===`state`?n=r.id:r.kind===`task`&&t.set(n,(t.get(n)??0)+1);return e.map(e=>e.kind===`state`?{...e,count:t.get(e.id)??0}:e)}var pO=new Set([`refused`,`timeout`,`host-key-changed`,`host-key-unverified`,`auth-denied`,`unresolved`,`ssh-failed`,`no-rove`,`no-daemon`,`bad-status`,`handshake`,`no-forwarding`,`lost`]);function mO(e){return e&&pO.has(e)?`machines.reason.${e}`:null}function hO(e,t){return e.filter(e=>e.machine?.id===t&&!e.routine&&!e.deleting)}function gO(e){let t=oO.map(e=>({state:e,tasks:[]}));for(let n of e)t[oO.indexOf(cO(n))]?.tasks.push(n);return t.filter(e=>e.tasks.length>0)}var _O=`flex flex-col font-mono text-meta`,vO=`flex flex-col gap-1 border-t-hairline border-line py-2.5 first:border-t-0 first:pt-0`,yO=`flex flex-wrap items-baseline gap-x-2.5 gap-y-0.5`,bO=`min-w-0 text-ink wrap-anywhere`,xO=`m-0 text-muted wrap-anywhere`,SO=`flex flex-wrap gap-x-3.5 gap-y-1 pt-0.5 whitespace-nowrap`,CO=`mt-1.5 mb-0.5 text-subtle`,wO=`flex min-w-0 items-baseline gap-2 pl-2`,TO=`min-w-0 flex-1 truncate text-left`,EO=`min-w-0 max-w-[55%] flex-none truncate text-muted`;function DO(e){W.set((0,V.jsx)(jO,{model:e}))}function OO({model:e,tasks:t}){let n=t=>{Cn(),e.select(t.id),_a()};return gO(t).map(e=>(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:`${CO} m-0`,children:z(`rail.state.${e.state}`)}),e.tasks.map(e=>(0,V.jsxs)(H,{variant:`row`,className:`${wO} w-full rounded-sm py-0.5 hover:bg-hover`,onClick:()=>n(e),children:[(0,V.jsx)(`span`,{className:TO,children:e.label}),(0,V.jsx)(`span`,{className:EO,children:e.branch})]},e.id))]},e.state))}function kO({model:e,alias:t}){let[n,r]=(0,g.useState)(null);return(0,g.useEffect)(()=>{let n=!0;return Ws(e,`machines.repos`,{machine:t}).then(e=>n&&r(e),e=>n&&r({failed:e instanceof Error?e.message:String(e)})),()=>{n=!1}},[e,t]),n?`failed`in n?(0,V.jsx)(`p`,{className:xO,children:z(`machines.reposFailed`,{message:n.failed})}):n.reason?(0,V.jsx)(`p`,{className:xO,children:z(`machines.reposFailed`,{message:n.message??n.reason})}):n.repos.length===0?(0,V.jsx)(`p`,{className:xO,children:z(`machines.noRepos`)}):n.repos.map(e=>(0,V.jsxs)(`div`,{className:wO,children:[(0,V.jsx)(`span`,{className:TO,children:e.id}),(0,V.jsx)(`span`,{className:EO,title:e.primary??e.checkouts[0],children:e.primary??e.checkouts[0]??``})]},e.id)):(0,V.jsx)(`p`,{className:xO,children:z(`machines.loading`)})}function AO(e){let{model:t,row:n,tasks:r,words:i}=e,[a,o]=(0,g.useState)(null),s=n.state===`online`,c=mO(n.reason),l=gO(r).map(e=>`${e.tasks.length} ${z(`rail.state.${e.state}`)}`),u=e=>o(a===e?null:e);return(0,V.jsxs)(`section`,{className:vO,children:[(0,V.jsxs)(`div`,{className:yO,children:[(0,V.jsx)(`span`,{className:`${bO} ${s?``:jT.warning}`,children:vE(n,i)}),(0,V.jsx)(`span`,{className:`text-muted`,children:l.length>0?l.join(` · `):z(`machines.noTasks`)})]}),c&&(0,V.jsx)(`p`,{className:`m-0 text-muted wrap-anywhere`,children:z(c)}),(0,V.jsxs)(`div`,{className:SO,children:[s&&(0,V.jsx)(H,{hit:`tight`,onClick:()=>{Cn(),tO(void 0,n.alias)},children:z(`machines.newHere`)}),r.length>0&&(0,V.jsx)(H,{hit:`tight`,"aria-expanded":a===`tasks`,onClick:()=>u(`tasks`),children:z(a===`tasks`?`machines.hide`:`machines.tasks`)}),s&&(0,V.jsx)(H,{hit:`tight`,"aria-expanded":a===`repos`,onClick:()=>u(`repos`),children:z(a===`repos`?`machines.hide`:`machines.repos`)})]}),a===`tasks`&&(0,V.jsx)(OO,{model:t,tasks:r}),a===`repos`&&(0,V.jsx)(kO,{model:t,alias:n.alias})]})}function jO({model:e}){let t=B(),n=CE(e),r=v(e.remote),i=(t===`zh`?jr:Ar).machine;return(0,V.jsx)(cr,{title:z(`machines.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:`${Rn} ${_O}`,children:[n.length===0&&(0,V.jsx)(`p`,{className:`m-0 text-muted wrap-anywhere`,children:z(`machines.none`)}),n.map(t=>(0,V.jsx)(AO,{model:e,row:t,tasks:hO(r,t.alias),words:i},t.alias))]})})}function MO(e,t,n=300){let r=0,i,a=()=>{r++,i?.(),i=void 0};return{stop:a,run:o=>{a();let s=o.trim();if(s.length<2){t({kind:`idle`});return}let c=r,l=setTimeout(()=>{t({kind:`searching`}),e(s).then(e=>c===r&&t({kind:`done`,query:s,reply:e}),e=>c===r&&t({kind:`failed`,message:e instanceof Error?e.message:String(e)}))},n);i=()=>clearTimeout(l)}}}var NO=`mx-1.5 mt-2 mb-0.5 font-mono text-meta font-semibold normal-nums text-subtle first:mt-0`,PO=`mx-1.5 my-1 text-meta text-muted [overflow-wrap:anywhere]`,FO=e=>`flex w-full min-w-0 cursor-pointer flex-col gap-0.5 rounded-sm px-1.5 py-1.5 text-left text-ink [font:inherit] touch:py-2.5 ${e?`is-selected bg-hover`:``}`,IO=`flex min-w-0 items-baseline gap-2`,LO=`min-w-0 flex-1 truncate text-body`,RO=`whitespace-nowrap text-meta text-muted`,zO=`text-meta text-muted [overflow-wrap:anywhere]`,BO=`rounded-xs bg-accent/25 text-ink`;function VO(e,t){let[n,r]=(0,g.useState)({kind:`idle`});return(0,g.useEffect)(()=>{let n=MO(t=>e.client.request(`sessions.search`,{query:t}),r);return n.run(t),n.stop},[e,t]),n}function HO(e,t){let n=[],r=e.toLowerCase(),i=t.toLowerCase(),a=0;for(let t=r.indexOf(i);i&&t>=0;t=r.indexOf(i,t+i.length))t>a&&n.push(e.slice(a,t)),n.push({hit:e.slice(t,t+i.length),at:t}),a=t+i.length;return n.push(e.slice(a)),n.map(e=>typeof e==`string`?e:(0,V.jsx)(`mark`,{className:BO,children:e.hit},e.at))}function UO({children:e}){return(0,V.jsx)(`h3`,{className:NO,children:e})}function WO({children:e,error:t}){return(0,V.jsx)(`p`,{className:`${PO} ${t?`text-error`:``}`,children:e})}function GO(e){return(0,V.jsx)(H,{variant:`row`,className:FO(e.selected),onMouseEnter:e.onHover,onClick:e.onOpen,children:(0,V.jsxs)(`span`,{className:IO,children:[(0,V.jsx)(`span`,{className:LO,children:e.title}),(0,V.jsx)(`span`,{className:RO,children:e.repo})]})})}function KO(e){let{hit:t}=e;return(0,V.jsxs)(H,{variant:`row`,className:FO(e.selected),onMouseEnter:e.onHover,onClick:e.onOpen,children:[(0,V.jsxs)(`span`,{className:IO,children:[(0,V.jsx)(`span`,{className:LO,children:t.title}),(0,V.jsxs)(`span`,{className:RO,children:[z(t.role===`user`?`search.you`:`search.agent`),` · `,Lo(Date.now()-Date.parse(t.at))]})]}),(0,V.jsx)(`span`,{className:zO,children:HO(t.snippet,e.query)})]})}var qO=_(`issues`);function JO(e,t,n){return{repo:e.repo,baseBranch:t,prompt:n,worktree:!0}}var YO=.2,XO=[`files`,`chat`,`diff`,`browser`,`quota`];function ZO(){return{top:{tabs:[{id:`t1`,kind:`files`}],active:`t1`},bottom:null,ratio:.5,focus:`top`,recent:[`t1`],next:2}}function QO(e){return e.bottom?[[`top`,e.top],[`bottom`,e.bottom]]:[[`top`,e.top]]}function $O(e){let t=e=>Number(e.id.slice(1));return QO(e).flatMap(([,e])=>e.tabs).sort((e,n)=>t(e)-t(n))}function ek(e,t){for(let[n,r]of QO(e)){let e=r.tabs.find(e=>e.id===t);if(e)return{tab:e,name:n,group:r}}return null}function tk(e,t){let n=$O(e).filter(e=>e.kind===t);for(let t of[...e.recent].reverse()){let e=n.find(e=>e.id===t);if(e)return e}return n[0]??null}function nk(e){return e.urls[e.at]??``}function rk(e){return e.slice(e.lastIndexOf(`/`)+1)}function ik(e){try{return new URL(e).host.replace(/^www\./,``)}catch{return e}}function ak(e,t){for(let[n,r]of QO(e))if(r.tabs.some(e=>e.kind===t))return n;return e.bottom?e.focus:`top`}function ok(e,t,n){let r=e.tabs.filter(e=>e.id!==n).map(e=>e.id);for(let e of[...t].reverse())if(r.includes(e))return e;return r[0]??null}function sk(e){let{top:t,bottom:n}=e;n&&n.tabs.length===0&&(n=null),t.tabs.length===0&&n&&([t,n]=[n,null]);let r=new Set([...t.tabs,...n?.tabs??[]].map(e=>e.id)),i=e.recent.filter(e=>r.has(e)),a=e=>e.active&&e.tabs.some(t=>t.id===e.active)?e:{...e,active:ok(e,i)};return{...e,top:a(t),bottom:n&&a(n),recent:i,focus:n?e.focus:`top`}}function ck(e,t,n){return t===`top`?{...e,top:n}:{...e,bottom:n}}function lk(e,t){let n=ek(e,t);if(!n)return e;let{group:r,name:i}=n,a=[...e.recent.filter(e=>e!==t),t];return r.active===t&&e.focus===i&&e.recent.at(-1)===t?e:{...ck(e,i,{...r,active:t}),focus:i,recent:a}}function uk(e){let t=$O(e);if(t.length<=12)return e;let n=new Set(QO(e).map(([,e])=>e.active)),r=t.filter(e=>!n.has(e.id)).sort((t,n)=>e.recent.indexOf(t.id)-e.recent.indexOf(n.id))[0];return r?Ck(e,r.id):e}function dk(e,t,n){let r=`t${e.next}`,i=t===`bottom`&&e.bottom?`bottom`:`top`,a=i===`bottom`&&e.bottom?e.bottom:e.top;return uk(lk(ck({...e,next:e.next+1},i,{...a,tabs:[...a.tabs,n(r)]}),r))}var fk=e=>({id:e,kind:`browser`,urls:[],at:-1});function pk(e,t){return dk(e,t,e=>({id:e,kind:`files`}))}function mk(e,t){return dk(e,t,fk)}function hk(e,t,n){let r=$O(e).find(e=>e.kind===`diff`&&e.path===t);return r?r.kind===`diff`&&r.scope!==n?lk(bk(e,{...r,scope:n}),r.id):lk(e,r.id):dk(e,ak(e,`diff`),e=>({id:e,kind:`diff`,path:t,scope:n}))}function gk(e,t){let n=$O(e).filter(e=>e.kind===`browser`),r=n.find(e=>nk(e)===t);if(r)return lk(e,r.id);let i=n.find(e=>nk(e)===``);return i?xk(e,i.id,t):xk(dk(e,ak(e,`browser`),fk),`t${e.next}`,t)}function _k(e,t){let n=tk(e,t);return n?lk(e,n.id):t===`diff`?hk(e,`.`,`working`):dk(e,ak(e,t),e=>t===`files`||t===`chat`||t===`quota`?{id:e,kind:t}:fk(e))}function vk(e){let t=e.recent.at(-1),n=t?ek(e,t):null,r=n&&n.group.active===t?t:e.top.active;return(r?ek(e,r)?.tab.kind:null)??null}function yk(e,t,n){return t&&vk(e)===n?{panel:e,open:!1}:{panel:_k(e,n),open:!0}}function bk(e,t){let n=e=>({...e,tabs:e.tabs.map(e=>e.id===t.id?t:e)});return{...e,top:n(e.top),bottom:e.bottom&&n(e.bottom)}}function xk(e,t,n){let r=ek(e,t)?.tab;if(r?.kind!==`browser`||nk(r)===n)return e;let i=[...r.urls.slice(0,r.at+1),n].slice(-30);return bk(e,{...r,urls:i,at:i.length-1})}function Sk(e,t,n){let r=ek(e,t)?.tab;return r?.kind!==`browser`||n===r.at||n<0||n>=r.urls.length?e:bk(e,{...r,at:n})}function Ck(e,t){let n=ek(e,t);if(!n)return e;let{group:r}=n,i=r.tabs.filter(e=>e.id!==t),a=e.recent.filter(e=>e!==t),o=r.active===t?ok(r,a,t):r.active;return sk({...ck(e,n.name,{tabs:i,active:o}),recent:a})}function wk(e,t){return $O(e).reduce((e,n)=>n.id===t?e:Ck(e,n.id),e)}function Tk(e,t,n,r){let i=ek(e,t);if(!i)return e;let a=i.group,o=a.tabs.filter(e=>e.id!==t),s=a.tabs.findIndex(e=>e.id===t);if(i.name===n){let c=Math.max(0,Math.min(o.length,(r??o.length)-+(r!==void 0&&r>s)));return lk(c===s?e:ck(e,n,{...a,tabs:[...o.slice(0,c),i.tab,...o.slice(c)]}),t)}let c=e.recent.filter(e=>e!==t),l=ck(e,i.name,{tabs:o,active:a.active===t?ok(a,c,t):a.active}),u=(n===`top`?l.top:l.bottom)?.tabs??[],d=Math.max(0,Math.min(u.length,r??u.length));return lk(sk(ck({...l,recent:c},n,{tabs:[...u.slice(0,d),i.tab,...u.slice(d)],active:t})),t)}function Ek(e,t){let n=Math.max(YO,Math.min(.8,t));return Math.abs(n-e.ratio)<.001?e:{...e,ratio:n}}function Dk(e,t,n){let r=new Map(n.map(e=>[e.id,e.kind])),i=[...e.filter(e=>r.has(e)&&!t.includes(e)),...t.filter(e=>r.has(e))],a=i.filter(e=>r.get(e)===`browser`),o=new Set(a.slice(0,Math.max(0,a.length-3)).filter(e=>!t.includes(e)));return i=i.filter(e=>!o.has(e)),i}function Ok(e){if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.id!=`string`||!/^t\d+$/.test(t.id))return null;if(t.kind===`files`||t.kind===`chat`||t.kind===`quota`)return{id:t.id,kind:t.kind};if(t.kind===`diff`&&typeof t.path==`string`&&t.path!==``){let e=t.scope===`branch`||t.scope===`task`?t.scope:`working`;return{id:t.id,kind:`diff`,path:t.path,scope:e}}if(t.kind===`browser`&&Array.isArray(t.urls)){let e=t.urls.filter(e=>typeof e==`string`&&e!==``).slice(-30),n=typeof t.at==`number`&&Number.isInteger(t.at)?Math.min(e.length-1,Math.max(-1,t.at)):e.length-1;return{id:t.id,kind:`browser`,urls:e,at:e.length===0?-1:Math.max(0,n)}}return null}function kk(e,t){if(!e||typeof e!=`object`||!(`tabs`in e)||!Array.isArray(e.tabs))return null;let n=[];for(let r of e.tabs){let e=Ok(r);!e||t.has(e.id)||(t.add(e.id),n.push(e))}return{tabs:n,active:`active`in e&&typeof e.active==`string`?e.active:null}}function Ak(e){if(!e||typeof e!=`object`)return null;let t=e,n=new Set,r=kk(t.top,n);if(!r)return null;let i=kk(t.bottom,n),a=Math.max(0,...[...n].map(e=>Number(e.slice(1)))),o=typeof t.ratio==`number`&&Number.isFinite(t.ratio)?t.ratio:.5;return sk({top:r,bottom:i,ratio:Math.max(YO,Math.min(.8,o)),focus:t.focus===`bottom`?`bottom`:`top`,recent:Array.isArray(t.recent)?t.recent.filter(e=>typeof e==`string`):[],next:Math.max(a+1,typeof t.next==`number`&&Number.isInteger(t.next)?t.next:0)})}function jk(e,t){let n=ZO(),r=typeof t==`string`&&t!==``?t:``;if(e!==`browser`&&!r)return n;let i=mk(n,`top`),a=r?xk(i,`t2`,r):i;return e===`browser`?a:lk(a,`t1`)}function Mk(e){try{let t=JSON.parse(e??`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?Object.entries(t):[]}catch{return[]}}function Nk(e,t,n){let r=Object.fromEntries(Object.entries(e).filter(([e])=>e!==t));r[t]=n;for(let e of Object.keys(r).slice(0,-50))delete r[e];return r}function Pk(e,t){let n={};for(let[t,r]of Mk(e)){let e=Ak(r);e&&(n[t]=e)}let r=new Map(Mk(t.tab).filter(([,e])=>XO.includes(e))),i=new Map(Mk(t.url)),a=[...new Set([...r.keys(),...i.keys()])].filter(e=>!(e in n));n={...Object.fromEntries(a.map(e=>[e,jk(r.get(e),i.get(e))])),...n};for(let e of Object.keys(n).slice(0,-50))delete n[e];return n}var Fk=[`files`,`diff`,`browser`];function Ik(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.taskId==`string`&&t.taskId!==``&&Fk.includes(t.view)&&typeof t.at==`number`&&(t.url===void 0||typeof t.url==`string`)&&(t.path===void 0||typeof t.path==`string`)}function Lk(e){return e.narrow?{panel:!1,panelOpen:!1,narrow:!0}:{panel:!0,panelOpen:e.panelOpen&&!e.zen,narrow:!1}}function Rk(e,t){return{tab:e.path?`diff`:e.view,...e.view===`browser`&&e.url?{url:e.url}:{},...e.view!==`browser`&&e.path?{diff:e.path}:{},show:t.taskId===e.taskId&&!t.narrow}}function zk(e,t){return t.url?gk(e,t.url):t.diff?hk(e,t.diff,`working`):_k(e,t.tab)}var Bk=`rove.web.panels`,Vk=`rove.web.panelTab`,Hk=`rove.web.panelUrl`;function Uk(){let e={tab:localStorage.getItem(Vk),url:localStorage.getItem(Hk)},t=Pk(localStorage.getItem(Bk),e);return(e.tab!==null||e.url!==null)&&(localStorage.setItem(Bk,JSON.stringify(t)),localStorage.removeItem(Vk),localStorage.removeItem(Hk)),t}var Wk=_(Uk()),Gk=ZO();function Kk(e){return v(Wk)[e]??Gk}function qk(e,t){let n=Wk.get()[e]??Gk,r=t(n);if(r===n)return;let i=Nk(Wk.get(),e,r);Wk.set(i),localStorage.setItem(Bk,JSON.stringify(i))}function Jk(e,t){qk(e,e=>_k(e,t)),qa.set(!0),Ca()&&Ua.set(t)}function Yk(e,t){let n=yk(Wk.get()[e]??Gk,qa.get()&&!mn.get(),t);qk(e,()=>n.panel),qa.set(n.open),n.open&&mn.get()&&mn.set(!1)}function Xk(e){qk(e.taskId,t=>hk(t,e.path,e.scope)),qa.set(!0),mn.get()&&mn.set(!1),Ca()&&Ua.set(`diff`)}function Zk(e,t){qk(e,e=>gk(e,t)),qa.set(!0),mn.get()&&mn.set(!1),Ca()&&Ua.set(`browser`)}function Qk(e,t){qk(e,e=>Ck(e,t));let n=Ua.get();Ca()&&n!==`terminal`&&!tk(Wk.get()[e]??Gk,n)&&Jk(e,`files`)}function $k(e,t){let n=Rk(e,{taskId:t,narrow:Ca()});qk(e.taskId,e=>zk(e,n)),n.show&&(qa.set(!0),mn.get()&&mn.set(!1))}var eA=_(null),tA=0;function nA(e,t){eA.set({taskId:e,hit:t,nonce:++tA}),Jk(e,`chat`),mn.get()&&mn.set(!1)}var rA=10;function iA(e,t){let n=e=>e.surface===t?0:e.surface?1:2,r=$i().filter(n=>ea(n,t)&&n.live?.(e)!==!1).map((e,t)=>({command:e,index:t})).sort((e,t)=>n(e.command)-n(t.command)||Number(e.command.prefix)-Number(t.command.prefix)||e.index-t.index),i=new Set,a=[];for(let{command:e}of r){let t=e.chords[0];!t||e.id===`palette.open`||i.has(e.id)||(i.add(e.id),a.push({command:e,name:To(e.id),raw:e.prefix?`${ti()} + ${t}`:t}))}return a}function aA(e){let t=document.activeElement instanceof HTMLElement?document.activeElement:null;W.set((0,V.jsx)(sA,{model:e,surface:na(),origin:t}))}var oA=8;function sA({model:e,surface:t,origin:n}){B();let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(0),s=(0,g.useRef)(null),c=v(Xr),l=v(e.tasks),u=v(e.remote),d=(0,g.useMemo)(()=>iA(e,t),[e,t,c]).filter(e=>fo(r,e.name,e.raw)),f=(CE(e).length>0?[{name:z(`machines.title`)}]:[]).filter(e=>fo(r,e.name,``)),p=r.trim(),m=p===``?[]:[...l?.tasks??[],...u].filter(e=>!e.routine&&!e.deleting&&[e.label,e.title,e.branch,qC(e.repo)].some(e=>e!==``&&no(p,e))).slice(0,oA),h=v(e.installedMods).has(`issues`),_=[{id:`usage`,name:z(`usage.title`)},...h?[{id:`issues`,name:z(`reviewQueue.palette`),source:`reviews`}]:[]].filter(e=>p===``||no(p,e.name)),y=VO(e,r),b=y.kind===`done`?y.reply.matches:[],x=[...d.map(e=>({kind:`command`,row:e})),..._.map(e=>({kind:`page`,...e})),...f.map(e=>({kind:`machines`,...e})),...m.map(e=>({kind:`task`,task:e})),...b.map(e=>({kind:`hit`,hit:e}))],S=Math.min(a,Math.max(0,x.length-1));(0,g.useEffect)(()=>()=>n?.focus(),[n]),(0,g.useEffect)(()=>{s.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[S]);let C=t=>{if(t.kind===`machines`){DO(e);return}if(Cn(),n?.focus(),t.kind===`command`){t.row.command.live?.(e)===!1?G(So(`unavailable`),`error`):t.row.command.run(e);return}if(t.kind===`page`){t.source&&qO.set(t.source),ya(t.id);return}t.kind===`task`?e.select(t.task.id):e.select(t.hit.taskId,t.hit.tabId??null),_a(),t.kind===`hit`&&nA(t.hit.taskId,t.hit)},w=e=>{if(e.key===`ArrowDown`)o(Math.min(x.length-1,S+1));else if(e.key===`ArrowUp`)o(Math.max(0,S-1));else if(e.key===`Enter`){let e=x[S];e&&C(e)}else return;e.preventDefault()},T=p!==``&&(m.length>0||p.length>=2),E=0,D=()=>E++;return(0,V.jsx)(cr,{title:So(`palette`),wide:!0,children:(0,V.jsxs)(`div`,{className:`${Rn} palette`,onKeyDown:w,children:[(0,V.jsx)(`input`,{className:pt,autoFocus:!0,spellCheck:!1,value:r,placeholder:So(`search`),onChange:e=>{i(e.target.value),o(0)}}),(0,V.jsxs)(`div`,{className:ut,ref:s,style:{maxHeight:`${(T?18:rA)*1.9}em`},children:[x.length===0&&y.kind!==`searching`&&(0,V.jsx)(`p`,{className:`text-muted`,children:So(`noResults`)}),T&&d.length>0&&(0,V.jsx)(UO,{children:z(`search.commands`)}),d.map(e=>{let t=D();return(0,V.jsx)(`button`,{type:`button`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`command`,row:e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},e.command.id)}),_.map(e=>{let t=D();return(0,V.jsx)(H,{variant:`row`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`page`,...e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},e.id)}),f.map(e=>{let t=D();return(0,V.jsx)(H,{variant:`row`,className:dt(t===S),title:e.name,onMouseEnter:()=>o(t),onClick:()=>C({kind:`machines`,...e}),children:(0,V.jsx)(`span`,{className:ft,children:`${t===S?`› `:` `}${e.name}`})},`machines`)}),m.length>0&&(0,V.jsx)(UO,{children:z(`search.tasks`)}),m.map(e=>{let t=D();return(0,V.jsx)(GO,{title:e.label,repo:qC(e.repo),selected:t===S,onHover:()=>o(t),onOpen:()=>C({kind:`task`,task:e})},e.id)}),y.kind!==`idle`&&(0,V.jsx)(UO,{children:z(`search.inConversations`)}),y.kind===`searching`&&(0,V.jsx)(WO,{children:z(`search.searching`)}),y.kind===`failed`&&(0,V.jsx)(WO,{error:!0,children:y.message}),y.kind===`done`&&b.length===0&&(0,V.jsx)(WO,{children:z(`search.none`,{query:y.query})}),b.map(e=>{let t=D();return(0,V.jsx)(KO,{hit:e,query:y.kind===`done`?y.query:``,selected:t===S,onHover:()=>o(t),onOpen:()=>C({kind:`hit`,hit:e})},`${e.taskId}:${e.tabId??``}:${e.at}:${t}`)}),y.kind===`done`&&y.reply.truncated&&(0,V.jsx)(WO,{children:z(`search.truncated`)}),y.kind===`done`&&y.reply.skipped.length>0&&(0,V.jsx)(WO,{children:z(`search.skipped`,{count:y.reply.skipped.length})})]}),(0,V.jsx)(`p`,{className:`keys-only text-muted`,children:So(`run`)})]})})}var cA=_(null);function lA(e){let t=(document.activeElement?.closest(`.rail`)==null?null:cA.get())??e.selection.get().taskId;return e.tasks.get()?.tasks.find(e=>e.id===t)??null}t(((e,t)=>{t.exports={}}))();var uA={$schema:`https://json.schemastore.org/package.json`,name:`@sma1lboy/rove`,version:`0.9.277`,description:`Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.`,keywords:[`terminal`,`tui`,`cli`,`multiplexer`,`ai-agents`,`coding-agent`,`ai-coding-assistant`,`agentic-ai`,`parallel-agents`,`git-worktree`,`claude-code`,`codex`,`llm`,`developer-tools`],type:`module`,packageManager:`bun@1.3.13`,bin:{rove:`dist/cli/rove.js`},files:[`dist/cli`,`dist/completions`,`dist/web`,`dist/web-ui`,`dist/skills`,`dist/*.wav`,`README.md`,`LICENSE`],publishConfig:{access:`public`},repository:{type:`git`,url:`git+https://github.com/Sma1lboy/rove.git`},homepage:`https://rove.run`,bugs:{url:`https://github.com/Sma1lboy/rove/issues`},engines:{bun:`>=1.3.11`},scripts:{dev:`ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts`,"dev:mock":`ROVE_DEV=1 bun ./src/tui-react/mock/host.tsx`,"dev:sandbox":`bun run scripts/dev-sandbox.ts run`,"dev:sandbox:reset":`bun run scripts/dev-sandbox.ts reset`,build:`bun run scripts/build.ts`,"build:rubric":`bun run scripts/build-tier-rubric.ts`,compile:`bun run scripts/compile.ts`,typecheck:`tsc --noEmit`,"check-i18n":`bun run scripts/check-i18n.ts`,test:`bun run test:fast && bun run test:socket`,"perf:golden":`bun scripts/perf-golden.ts`,"pty:soak":`bun scripts/pty-soak.ts`,"test:fast":`vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8`,"test:socket":`ROVE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests`,"test:socket:coverage":`ROVE_INCLUDE_SOCKET=1 ROVE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests`,"test:behavior":`ROVE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests`,"test:render":`bun scripts/render-track.mjs`,coverage:`vitest run --coverage --passWithNoTests`,bench:`vitest bench --run`,lint:`biome check .`,knip:`knip-bun`,postinstall:`bun run scripts/check-preview-deps.ts || true`,prepublishOnly:`bun run typecheck && bun run build`,"plugin-sandbox":`bun run scripts/plugin-sandbox.ts`},"//":`biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).`,dependencies:{"@ansi-tools/parser":`^1.0.15`,"@opentui/core":`0.4.3`,"@opentui/react":`0.4.3`,"@xterm/addon-serialize":`^0.14.0`,"@xterm/addon-unicode11":`^0.9.0`,"@xterm/headless":`^6.0.0`,react:`^19.2.8`,"smol-toml":`^1.7.1`,ws:`^8.21.3`},optionalDependencies:{"node-pty":`^1.1.0`},devDependencies:{"@biomejs/biome":`1.9.4`,"@sma1lboy/rove-daemon":`0.7.23`,"@tsconfig/bun":`1.0.11`,"@types/bun":`1.3.14`,"@types/node":`25.6.2`,"@types/react":`^19.2.0`,"@vitest/coverage-v8":`2.1.9`,knip:`^6.14.2`,"react-devtools-core":`^7.0.1`,"rove-bridge":`0.0.38`,"rove-weixin":`0.0.38`,typescript:`5.8.2`,vitest:`2.1.9`},trustedDependencies:[]};uA.version,uA.name;var dA=[`latest`,`next`,`nightly`],fA={autoRouting:{title:`Auto routing`,hint:"Routing by depth: a task says how deep the work is — swift, standard, deep — and this table says which engine, model and reasoning effort that depth runs on. Pick a depth in the new-task dialog (or `rove api add --tier`) and Rove fills those three fields from the row; you still see them and can change them before the task starts. enter (or click) a row to point it somewhere else, with the same picker a task uses. A row whose target cannot start says why here, not at launch.",unconfigured:`Auto routing is off: a depth has nowhere to route — its engine is blank. Point it somewhere below, or remove the empty autoRouting.<tier>.engine from state.json.`,engineDefault:`engine default`,ready:`● ready`,unavailable:`! unavailable — {reason}`,classifierTitle:`Classifier`,classifierHint:"The rows above say what each depth RUNS. This says who CHOOSES one: switch it on and `rove api add --tier auto` reads the task's first message and picks the depth for you. It is off by default, it is never required, and it can never fail a create — no key, no network, a timeout, or an answer it is not confident enough about all leave you on the depth you would have had.",classifierDataFlow:"! Turning the classifier on sends the task's first message to a third party that is NOT the engine vendor you picked — TypeSafe System One for `jev`, or whatever address you point `custom` at. It reads the text before your engine does. Nothing leaves this machine while it is off.",classifierLabel:`Choose with`,classifierOff:`off`,classifierCustomLabel:`custom`,classifierOffHint:`— nothing is sent anywhere`,classifierJevHint:`— TypeSafe System One, billed to your own key`,classifierCustomHint:`— your endpoint: POST the text, answer with a depth and a confidence`,endpointLabel:`Endpoint`,endpointUnset:`(none — enter one, then set Choose with to custom)`,endpointTitle:`Custom classifier endpoint`,endpointField:`URL`,endpointInvalidTitle:`Not a URL`,endpointInvalidBody:`The endpoint has to start with https://, or http:// for a loopback address (127.0.0.1, localhost, ::1) — over a network, plain http would carry the task's first 1,200 characters in cleartext. Leave it empty to clear it.`,thresholdLabel:`Confidence floor`,thresholdHint:`— below this, the depth is left alone`,thresholdTitle:`Confidence floor`,thresholdField:`0 to 1`,thresholdInvalidTitle:`Not a confidence`,thresholdInvalidBody:`The floor is a number between 0 and 1. 0.5 is the shipped default.`,keyLabel:`API key`,keyStored:`stored {hint} — enter to replace, empty to clear`,keyFromEnv:"from ${env} — the environment wins over a stored key",keyNone:`not set — enter to paste one`,keyTitle:`{env}`,keyPlaceholder:`paste the key; leave empty to clear the stored one`,keySaved:`● key stored in ~/.rove/secrets.json (owner-only, never in state.json)`,keyCustomUnused:`● no Authorization header is sent to a custom endpoint — set autoRouting.classifierCustomKeyEnv to the variable holding its key if it needs one`,keyNoVariableTitle:`No key variable for this endpoint`,keyNoVariableBody:`A custom classifier endpoint is sent no Authorization header until autoRouting.classifierCustomKeyEnv names the variable its key lives in. Set that first — a key stored under a name nothing reads is a key at rest for no purpose.`,keyWriteFailedTitle:`Key not saved`,keyWriteFailedBody:`~/.rove/secrets.json could not be written: {reason}. Check directory permissions and disk space, then save again.`,keyMissing:`! no key — nothing is chosen and tasks keep their usual depth`,keyPresentEnv:"● key read from ${env} in this process's environment"}},pA={autoRouting:{title:`自动路由`,hint:"按深度路由:任务说明这活有多深——轻快、标准、深入——这张表说明那一档跑在哪个引擎、哪个模型、哪个推理强度上。在新建任务对话框里选一档(或 `rove api add --tier`),Rove 就照那一行填进这三个字段;任务启动前你仍然看得见、改得了。enter(或点击)某一行,用和任务一样的选择器把它指到别处。目标起不来的行会在这里说明原因,而不是等到启动时才炸。",unconfigured:`自动路由已关闭:有一档无处可去——它的引擎是空的。在下面把它指到某个引擎,或从 state.json 里删掉空的 autoRouting.<tier>.engine。`,engineDefault:`引擎默认`,ready:`● 可用`,unavailable:`! 不可用——{reason}`,classifierTitle:`分类器`,classifierHint:"上面几行说的是每一档**跑什么**,这里决定**由谁来选**:打开之后,`rove api add --tier auto` 会读任务的第一句话替你选档。默认关着,从来不是必需的,也永远不会让建 task 失败——没 key、断网、超时、或者它自己没把握,都只是让你停在本来就会用的那一档上。",classifierDataFlow:"! 打开分类器,任务的第一句话会发给一个**不是你选的那个引擎厂商**的第三方——`jev` 是 TypeSafe System One,`custom` 是你自己填的地址。它比你的引擎更早读到这段文字。关着的时候什么都不发。",classifierLabel:`选档方式`,classifierOff:`关`,classifierCustomLabel:`自定义`,classifierOffHint:`——不向任何地方发送`,classifierJevHint:`——TypeSafe System One,走你自己的 key 计费`,classifierCustomHint:`——你自己的接口:POST 那段文本,返回一个档位加一个置信度`,endpointLabel:`接口地址`,endpointUnset:`(未填——先填一个,再把「选档方式」切到自定义)`,endpointTitle:`自定义分类器接口`,endpointField:`URL`,endpointInvalidTitle:`不是一个 URL`,endpointInvalidBody:`接口地址要以 https:// 开头;http:// 只在回环地址(127.0.0.1、localhost、::1)上接受——发到网络上的话,明文 http 会把任务的前 1200 个字符原样带走。留空则清除。`,thresholdLabel:`置信度下限`,thresholdHint:`——低于这个值就不动档位`,thresholdTitle:`置信度下限`,thresholdField:`0 到 1`,thresholdInvalidTitle:`不是一个置信度`,thresholdInvalidBody:`下限是 0 到 1 之间的数。出厂默认 0.5。`,keyLabel:`API key`,keyStored:`已存 {hint}——enter 可替换,留空清除`,keyFromEnv:"来自环境变量 ${env}——环境变量优先于存起来的那个",keyNone:`未设置——enter 粘贴一个`,keyTitle:`{env}`,keyPlaceholder:`粘贴 key;留空则清除已存的那个`,keySaved:`● key 存在 ~/.rove/secrets.json(仅本人可读,不会进 state.json)`,keyCustomUnused:`● 自定义接口不会收到 Authorization 头——它若需要凭据,把 autoRouting.classifierCustomKeyEnv 指向存它的变量`,keyNoVariableTitle:`这个接口还没有 key 变量`,keyNoVariableBody:`在 autoRouting.classifierCustomKeyEnv 指定存 key 的变量之前,自定义分类器接口不会收到任何 Authorization 头。先设那个——存在一个没人读的名字下面的 key,只是白白落在盘上。`,keyWriteFailedTitle:`key 没存下`,keyWriteFailedBody:`写不了 ~/.rove/secrets.json:{reason}。请检查目录权限和磁盘空间,再次保存。`,keyMissing:`! 没有 key——不会替你选档,任务保持原来的档位`,keyPresentEnv:"● key 来自本进程环境变量 ${env}"}},mA={dev:{reset:`Reset UI state`,resetHint:`Clears ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove — relaunch to start fresh. Working session list, pane sizes, theme, model picks all reset. Worktrees on disk and engine session history are not touched.`,resetButton:`[enter] Reset`,restart:`Restart backend`,restartHint:`Stops the Rove daemon and relaunches this window on the installed build — picks up daemon / orchestrator / engine edits without quitting by hand. Running engine sessions live in the PTY host and survive it; other attached Rove windows reconnect on their own.`,restartButton:`[enter] Restart`,reload:`Reload settings`,reloadHint:"Applies hand edits to ~/.config/rove/state.json (from `rove config`) to this window without a restart.",reloadButton:`[enter] Reload`,reloadDone:`Reloaded: {count} changed.`,reloadUnchanged:`Already matches state.json; nothing changed.`,reloadFailed:`state.json could not be read, nothing changed: {error}`,doctorHint:"Daemon wedged or unresponsive? Restart backend above does it from here; from a shell it is `rove daemon restart`. Hosted engine sessions stay alive across a daemon restart.",experimental:`Experimental`,remoteHint:"Remote projects (SSH): register a project whose git worktrees live on another host, driven from this local Rove. Unfinished — Hosted PTY engine launch over SSH is not implemented, and file/diff panes still degrade. Enables `rove add --remote`.",remote:`Remote projects`,autoStatusHint:`Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.`,autoStatus:`Auto status flow`,dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`rove api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`rove api dispatch`). Web-hosted sessions receive the relays today.",dispatcher:`Field-notes dispatcher`}},hA={dev:{reset:`重置 UI 状态`,resetHint:`清空 ~/.config/rove/state.json 和 ~/.rove/tasks.json,然后退出 Rove——重新启动即可从头开始。工作会话列表、面板尺寸、主题、模型选择都会重置。磁盘上的 worktree 和引擎会话历史不受影响。`,resetButton:`[enter] 重置`,restart:`重启后端`,restartHint:`停止 Rove daemon,并以已安装的版本重新启动当前窗口——无需手动退出即可应用 daemon / orchestrator / engine 的改动。正在运行的引擎会话由 PTY host 托管,不受影响;其他已连接的 Rove 窗口会自行重连。`,restartButton:`[enter] 重启`,reload:`重新加载设置`,reloadHint:"把对 ~/.config/rove/state.json 的手动修改(来自 `rove config`)应用到当前窗口,无需重启。",reloadButton:`[enter] 重新加载`,reloadDone:`已重新加载:{count} 项有变化。`,reloadUnchanged:`已与 state.json 一致,没有变化。`,reloadFailed:`无法读取 state.json,未做任何改动:{error}`,doctorHint:"daemon 卡住或无响应?上面的「重启后端」就能在这里完成;在 shell 里则是 `rove daemon restart`。Hosted PTY 引擎会话不会因 daemon 重启而退出。",experimental:`实验性`,remoteHint:"远程项目(SSH):注册一个 git worktree + 引擎都通过 SSH 跑在另一台主机上、由本地 Rove 驱动的项目。尚未完成——文件/diff 面板对远程仍会降级。启用 `rove add --remote`。",remote:`远程项目`,autoStatusHint:`自动状态流转:backlog 任务在其引擎开始一轮时移到 in_progress,新会话会拿到一条系统提示,告诉 agent 完成后自行设为 in_review。绝不触碰 done/canceled。`,autoStatus:`自动状态流转`,dispatcherHint:"现场笔记调度器:任务会话提交一行经验(`rove api note`),daemon 将每条转发给仓库的主会话,主会话再把它们转达给能受益的进行中任务(`rove api dispatch`)。目前由 Web 托管的会话会收到转达。",dispatcher:`现场笔记调度器`}},gA={engines:{title:`Engines`,hint:`Engines Rove can start on this machine. New tasks start with the default engine; switch an engine off to stop offering it.`,keys:`space available · d default · enter launch command · r rename · x reset/remove`,customTag:`custom`,available:`available`,off:`off`,defaultMark:`default`,makeDefault:`Make default`,status:{checking:`Checking…`,unknown:`Status unknown`,ready:`Ready`,notInstalled:`Not installed`,notOnPath:`Not on PATH`,signIn:`Sign in needed`,integrationMissing:`Integration not installed`,integrationOutdated:`Integration outdated`,integrationBlocked:`Integration blocked`},detail:{program:`Program`,command:`Command`,signIn:`Sign-in`,reporting:`Live status`,adapter:`Adapter`,programFound:`{binary} found at {path}.`,programMissing:`{binary} is not on PATH. Install the engine's CLI, or point its launch command at it.`,programUnknown:`Rove could not check for {binary}.`,commandDefault:`{command} (the default)`,commandCustom:`{command} (yours)`,signedIn:`Signed in.`,signedInAs:`Signed in as {who}.`,apiKey:`An API key is configured.`,token:`A token is configured ({source}).`,signedOut:`Not signed in. Sign in with the engine's own CLI.`,signInUnknown:`Rove can't see whether this engine is signed in.`,signInFailed:`Sign-in check failed: {error}`,hooksInstalled:`Rove's hooks are installed, so tabs report their state as it changes.`,hooksOutdated:`Rove's hooks are from an older version; reinstall them under Engine integrations.`,hooksMissing:`Rove's hooks are not installed; install them under Engine integrations.`,hooksAwaitEngine:`Rove's hooks can be installed once the engine is.`,hooksUnsupported:`This engine has no hooks for Rove to install.`,hooksBlocked:`Rove can't write its hooks into {file}: {reason}`,hooksBlockedHere:`Rove can't write its hooks into the engine's config: {reason}`,markersYes:`It leaves turn-complete markers that Rove reads back.`,markersNo:`It leaves no turn-complete markers.`,screenYes:`Screen rules cover what the hooks don't.`,screenNo:`No screen rules.`,screenNotNeeded:`No screen rules; the hooks report everything.`,adapterDeclared:`Borrows the {protocol} adapter.`,adapterGeneric:`Generic adapter: no transcript reader, sign-in check or resume.`,skill:`Rove skill`,skillInstalled:`Installed in {dir}.`,skillInstalledHere:`Installed and current.`,skillOutdated:`From an older Rove; reinstall it under Rove agent skill.`,skillMissing:`Not installed; install it under Rove agent skill.`},skill:{title:`Rove agent skill`,hint:`Teaches the agent in each engine to drive Rove itself (rove api): start tasks, read other sessions, message them.`,install:`Install ({count})`,noEngines:`No engine here takes the skill`,failed:`Install failed: {reason}`,bannerTitle:`ROVE SKILL NOT INSTALLED`,bannerHint:`{engines} can't drive Rove yet (start tasks, read other sessions). Click here to install.`,bannerHintWeb:`{engines} can't drive Rove yet (start tasks, read other sessions).`},integrations:{title:`Engine integrations`,hint:`Hooks Rove writes into each engine's own config, so a tab shows working, waiting or done the moment it happens.`,summary:`{installed} of {total} installed`,install:`Install missing ({count})`,upToDate:`All up to date`,remove:`Remove all ({count})`,noneInstalled:`Nothing to remove`},addEngine:`+ Add engine`,launchCommandTitle:`{name} launch command`,displayNameTitle:`{name} display name (blank = default)`,addTitle:`Add engine`,addStepTitle:`Add engine · {id}`,protocolTitle:`Add engine · {id} — protocol`,protocolNone:`None — generic adapter`,protocolFooter:`↑↓ choose · enter pick · esc cancel`,protocolRow:`protocol {protocol}`,protocolGeneric:`generic`,idPlaceholder:`lowercase slug, e.g. aider`,commandPlaceholder:`e.g. aider --model sonnet`,hookTrustHint:`Open {command} in the engine and approve hooks yourself. Written hooks are not proof of trust.`,readiness:`CLI: {cli} · login: {login} · hooks: {hooks}`,cliReady:`available`,cliMissing:`missing; install the engine CLI`,loginReady:`detected`,loginMissing:`sign in with the engine CLI`,readinessUnknown:`not observable`,hooksWritten:`written`,hooksMissing:`not written; Settings → Engines`,hooksOutdated:`outdated; Settings → Engines`,hookWaiting:`No hook event received yet. After approval, send a short prompt to verify activity.`,hookReceived:`Hook event recorded for this tab. Send a short prompt to check current reporting; current trust is not inferred.`,readinessFailed:`Readiness check unavailable; run rove doctor. No authorization is inferred.`},accounts:{checking:`Checking…`,notLoggedIn:`○ Not logged in`,loggedIn:`● Logged in: {email}`,apiKeyConfigured:`● API key configured`,chatgptLogin:`● ChatGPT login: {email}`,tokenConfigured:`● Token configured ({source})`,detected:`● Login detected`}},_A={engines:{title:`引擎`,hint:`Rove 能在这台机器上启动的引擎。新任务默认用「默认」引擎;关掉某个引擎,选引擎时就不再列出它。`,keys:`space 可用 · d 设为默认 · enter 启动命令 · r 重命名 · x 重置/移除`,customTag:`自定义`,available:`可用`,off:`已关`,defaultMark:`默认`,makeDefault:`设为默认`,status:{checking:`检查中…`,unknown:`状态未知`,ready:`就绪`,notInstalled:`未安装`,notOnPath:`不在 PATH 上`,signIn:`需要登录`,integrationMissing:`未安装接入`,integrationOutdated:`接入已过期`,integrationBlocked:`接入被拒绝`},detail:{program:`程序`,command:`命令`,signIn:`登录`,reporting:`实时状态`,adapter:`适配器`,programFound:`{binary} 位于 {path}。`,programMissing:`{binary} 不在 PATH 上。请安装引擎 CLI,或把启动命令指向它。`,programUnknown:`Rove 无法检查 {binary}。`,commandDefault:`{command}(默认)`,commandCustom:`{command}(自定义)`,signedIn:`已登录。`,signedInAs:`已登录:{who}。`,apiKey:`已配置 API key。`,token:`已配置 Token({source})。`,signedOut:`未登录。请用引擎自己的命令行登录。`,signInUnknown:`Rove 无法得知该引擎是否已登录。`,signInFailed:`登录检查失败:{error}`,hooksInstalled:`Rove 的钩子已安装,标签页的状态会实时上报。`,hooksOutdated:`Rove 的钩子来自旧版本;请在「引擎接入」里重新安装。`,hooksMissing:`Rove 的钩子未安装;请在「引擎接入」里安装。`,hooksAwaitEngine:`引擎安装后才能装 Rove 的钩子。`,hooksUnsupported:`该引擎没有可供 Rove 安装的钩子。`,hooksBlocked:`Rove 无法把钩子写入 {file}:{reason}`,hooksBlockedHere:`Rove 无法把钩子写入引擎配置:{reason}`,markersYes:`它会留下回合完成标记,Rove 可以读回。`,markersNo:`它不留下回合完成标记。`,screenYes:`读屏规则兜底钩子覆盖不到的状态。`,screenNo:`没有读屏规则。`,screenNotNeeded:`没有读屏规则;钩子已报全所有状态。`,adapterDeclared:`借用 {protocol} 适配器。`,adapterGeneric:`通用适配器:没有会话记录读取、登录检查和恢复。`,skill:`Rove 技能`,skillInstalled:`已安装在 {dir}。`,skillInstalledHere:`已安装,是最新版。`,skillOutdated:`来自旧版 Rove;请在「Rove 智能体技能」里重新安装。`,skillMissing:`未安装;请在「Rove 智能体技能」里安装。`},skill:{title:`Rove 智能体技能`,hint:`教会各引擎里的智能体自己操作 Rove(rove api):开任务、读其他会话、给它们发消息。`,install:`安装({count})`,noEngines:`这台机器上没有能装技能的引擎`,failed:`安装失败:{reason}`,bannerTitle:`ROVE 技能未安装`,bannerHint:`{engines} 还不能操作 Rove(开任务、读其他会话)。点这里安装。`,bannerHintWeb:`{engines} 还不能操作 Rove(开任务、读其他会话)。`},integrations:{title:`引擎接入`,hint:`Rove 写进各引擎自身配置的钩子,让标签页在工作、等待、完成的那一刻就显示出来。`,summary:`已安装 {installed}/{total}`,install:`安装缺失的({count})`,upToDate:`全部已是最新`,remove:`全部移除({count})`,noneInstalled:`没有可移除的`},addEngine:`+ 添加引擎`,launchCommandTitle:`{name} 的启动命令`,displayNameTitle:`{name} 的显示名称(留空 = 默认)`,addTitle:`添加引擎`,addStepTitle:`添加引擎 · {id}`,protocolTitle:`添加引擎 · {id} —— 协议`,protocolNone:`无 —— 通用适配器`,protocolFooter:`↑↓ 选择 · enter 确认 · esc 取消`,protocolRow:`协议 {protocol}`,protocolGeneric:`通用`,idPlaceholder:`小写短名,如 aider`,commandPlaceholder:`如 aider --model sonnet`,hookTrustHint:`在引擎中打开 {command},由你自行批准 hooks。写入不代表已授权。`,readiness:`CLI:{cli} · 登录:{login} · hooks:{hooks}`,cliReady:`可用`,cliMissing:`缺失;请安装引擎 CLI`,loginReady:`已检测到`,loginMissing:`请通过引擎 CLI 登录`,readinessUnknown:`无法观测`,hooksWritten:`已写入`,hooksMissing:`未写入;设置 → 引擎`,hooksOutdated:`已过时;设置 → 引擎`,hookWaiting:`尚未收到 hook 事件。授权后发送一条简短提示,验证活动状态。`,hookReceived:`已记录此标签页的 hook 事件。发送简短提示以检查当前上报;不据此推断当前授权。`,readinessFailed:`无法检查就绪状态;请运行 rove doctor。不会据此推断已授权。`},accounts:{checking:`检查中…`,notLoggedIn:`○ 未登录`,loggedIn:`● 已登录: {email}`,apiKeyConfigured:`● 已配置 API key`,chatgptLogin:`● ChatGPT 登录: {email}`,tokenConfigured:`● 已配置 Token ({source})`,detected:`● 检测到登录`}},vA={plugins:{title:`Plugins`,hint:"Rove's first-party mods first: enter (or click) installs or uninstalls one, and uninstalling keeps its data on disk. Then the plugins registered in ~/.rove/plugins.json: enter toggles one on or off — the daemon watches the file, so the change applies live. Rows indented under a plugin are the settings it declares; enter edits one, and the value reaches the plugin on its next run. Install and remove them from the shell: `rove plugin install <owner/repo>`, `rove plugin link <dir>`.",empty:"Kanban and Issues are first-party mods: enter (or click) installs one. No other plugins registered; add one with `rove plugin install <owner/repo>` — browse the `rove-plugin` topic on GitHub.",sourceLink:`linked {path}`,sourceGithub:`{spec}`,sourceBuiltIn:`first-party mod · not installed`,sourceBuiltInInstalled:`first-party mod · installed`,updateAvailable:`update available — rove plugin update`,declares:`{actions} actions · {events} events · {panes} panes`,declaresWithEngines:`{actions} actions · {events} events · {panes} panes · {engines} engines`,declaresPages:`· {pages} pages`,pageFailed:`page {detail}`,manifestUnreadable:`manifest unreadable; check the rove-plugin.toml path and TOML syntax`,unsupportedPlatform:`· not supported on this platform`,noHooks:`· no hooks declared`,lastRun:`· last run {label} {status} {ago} ago`,neverRun:`· never run`,runOk:`ok`,runRunning:`still running`,runFailed:"failed to start; inspect `rove plugin log <id>`",runExit:`exit {code}`,settingUnset:`(unset — enter to edit)`,settingInvalidTitle:`Not a number`,settingInvalidBody:`{label} only accepts a number. Keeping the previous value.`},marketplace:{title:`Marketplace`,hint:"Plugins published under the `rove-plugin` topic on GitHub, most-starred first. enter (or click) shows what the install would run and asks before running any of it. The listing is re-queried each time you open this section.",loading:`Searching GitHub…`,empty:`No plugins listed.`,offline:`GitHub is unreachable — showing first-party plugins only. Re-open this section to retry.`,installedTag:`installed`,firstParty:`first-party`,preparing:`cloning {ref}…`,installing:`building and registering {name}…`,installed:`installed {id} v{version} — it is enabled, and appears under Plugins.`,cancelled:`install cancelled; nothing was run.`,failed:`install failed: {error}. Check the build output and retry from Marketplace.`,alreadyInstalled:`already installed as {id} — manage it under Plugins.`,confirmTitle:`Install {name}?`,confirmInstall:`install`,previewSource:`source: {source}`,previewCommands:`Commands this plugin declares:`,previewNoCommands:`This plugin declares no commands.`,previewWarning:`warning: {warning}`,previewTrust:`Installing runs the build commands above, and the rest run later on the events they declare. They run as you, with your environment, and nothing is sandboxed.`}},yA={plugins:{title:`插件`,hint:"先列 Rove 官方 mod:enter(或点击)安装或卸载,卸载后数据仍留在磁盘上。再列在 ~/.rove/plugins.json 里注册的插件:enter 切换启用/禁用——daemon 监听该文件,改动实时生效。插件下方缩进的行是它声明的设置项,enter 编辑,新值在插件下次运行时生效。安装与移除在 shell 里做:`rove plugin install <owner/repo>`、`rove plugin link <dir>`。",empty:"Kanban 和 Issues 是官方 mod:enter(或点击)安装。尚未注册其他插件;用 `rove plugin install <owner/repo>` 安装一个——可在 GitHub 的 `rove-plugin` 话题下浏览。",sourceLink:`本地链接 {path}`,sourceGithub:`{spec}`,sourceBuiltIn:`官方 mod · 未安装`,sourceBuiltInInstalled:`官方 mod · 已安装`,updateAvailable:`有新版本 — rove plugin update`,declares:`{actions} 个动作 · {events} 个事件 · {panes} 个面板`,declaresWithEngines:`{actions} 个动作 · {events} 个事件 · {panes} 个面板 · {engines} 个引擎`,declaresPages:`· {pages} 个页面`,pageFailed:`页面 {detail}`,manifestUnreadable:`manifest 无法解析;请检查rove-plugin.toml 的路径和 TOML 语法`,unsupportedPlatform:`· 不支持当前平台`,noHooks:`· 未声明钩子`,lastRun:`· 上次运行 {label} {status} {ago}前`,neverRun:`· 尚未运行过`,runOk:`成功`,runRunning:`仍在运行`,runFailed:"启动失败;请查看 `rove plugin log <id>`",runExit:`退出码 {code}`,settingUnset:`(未设置 — enter 编辑)`,settingInvalidTitle:`不是数字`,settingInvalidBody:`{label} 只接受数字,保留原值。`},marketplace:{title:`插件市场`,hint:"GitHub 上 `rove-plugin` 话题下发布的插件,按 star 数排序。enter(或点击)会先列出安装会执行的命令,确认后才真正执行。每次进入本区块都会重新查询列表。",loading:`正在搜索 GitHub…`,empty:`列表为空。`,offline:`GitHub 不可达——只显示首方插件。重新进入本区块可再试一次。`,installedTag:`已安装`,firstParty:`首方`,preparing:`正在克隆 {ref}…`,installing:`正在构建并注册 {name}…`,installed:`已安装 {id} v{version}——已启用,可在「插件」区块管理。`,cancelled:`已取消安装,没有执行任何命令。`,failed:`安装失败:{error}。请检查构建输出,再从插件市场重试。`,alreadyInstalled:`已安装为 {id}——在「插件」区块管理。`,confirmTitle:`安装 {name}?`,confirmInstall:`安装`,previewSource:`来源:{source}`,previewCommands:`该插件声明的命令:`,previewNoCommands:`该插件未声明任何命令。`,previewWarning:`警告:{warning}`,previewTrust:`安装会执行上面的 build 命令,其余命令会在它们声明的事件发生时执行。它们以你的身份、带你的环境变量运行,没有任何沙箱。`}},bA={en:{appearance:{enabled:`On`,disabled:`Off`,borderFlow:`Flowing gradient`,borderStill:`Still`,glyphsBraille:`Braille`,glyphsStarburst:`Starburst (needs a font with the Dingbats block)`,glyphsAscii:`ASCII`,titleShimmer:`Shimmer`,titleStill:`Still`,preview:`Workspace preview`,tasks:`Tasks`,terminal:`Terminal`,files:`Files`,testsPassed:`Tests passed`,transparent:`Transparent background`,opaque:`Opaque background`,modeDark:`Dark`,modeLight:`Light`,modeAuto:`Auto (follow the terminal)`,openHint:`Enter to choose an option and preview it.`,chooseHint:`↑/↓ or j/k preview · enter apply · esc cancel`},title:`Settings`,esc:`esc`,nav:{default:`j/k pick · h/l switch level · enter activate · esc close`,feedback:`tab next field · enter sends on Send · esc close`},sections:{general:`General`,engines:`Engines`,autoRouting:`Auto routing`,plugins:`Plugins`,marketplace:`Marketplace`,keys:`Keybindings`,feedback:`Feedback`,dev:`Dev`},general:{usage:`USAGE`,theme:`Theme`,themeMode:`Mode`,themeHint:`l to enter list · j/k to highlight · enter to apply`,language:`Language`,languageHint:`Display language for Rove's UI. l to enter list · j/k to highlight · enter to apply.`,transparent:`Transparent background`,transparentHint:`Drops the renderer's bg fill so the host terminal shows through. enter toggles.`,on:`[x] on`,off:`[ ] off`,focusAccent:`Focus accent`,focusAccentHint:`Color of focused pane title, ▌ marker, and split borders.`,accentPrimary:`Primary (brand accent)`,accentSuccess:`Success (legacy green)`,accentInfo:`Info (cool blue)`,appearance:`Appearance`,appearanceHint:`How split panes draw.`,splitStyle:`Split panes`,workingBorder:`Working border`,taskColors:`Task colors`,glyphSet:`State glyphs`,colorblind:`Colorblind diff colours`,runningTitle:`Running title`,splitBox:`Box frames`,splitLine:`Divider line`,splitRail:`Accent rail`,splitRule:`Top rule`,notifications:`Notifications`,notificationsHint:`When a background tab finishes or pauses on an approval.`,toast:`Toast`,toastHint:`bottom-right popup`,sound:`Sound`,soundHint:`bell + chime + an OSC 9 desktop notification (rides SSH)`,soundVolume:`Chime volume — {percent}%`,soundVolumeHint:`enter cycles; applies to the next chime`,crossTask:`Cross-task`,crossTaskHint:`also for a task you switched away from`,finishedAlerts:`Finished turns`,finishedAlertsHint:`off: only approvals and errors alert; the unread dot stays`,keyHints:`Keyboard hints`,keyHintsHint:`The status-bar reminder and the first-use hints in the sidebar and files panes.`,keyHintsShow:`Show keyboard hints`,keyHintsShowHint:`re-enabling relights hints dismissed by use`,zen:`Zen mode`,zenHint:"The `zen` chip and `prefix`+z hide Files, keeping the Tasks rail and workspace.",zenDefaultOn:`Start in zen mode`,updates:`Updates`,updatesHint:`Stable is the default channel; next previews the coming release; nightly is built from main every day.`,updateChannelTitle:`Release channel`,updateChannel:`Channel: {channel}`,updateChannelHint:"enter cycles stable / next / nightly; `rove update` follows it",updateChannelName:{latest:`stable`,next:`next preview`,nightly:`nightly preview`},updateNotify:`Notify on updates`,updateNotifyHint:`new versions on this channel; off hides the update chip, and checking by hand still reports`,updateCheck:`[ Check for updates ]`,updateCheckHint:`asks npm for the newest release on this channel right now`,updateCheckButton:`Check for updates`,updateChecking:`Checking…`,updateOpenPage:`Open Update page`,updateOpenPageRow:`[ Open Update page ]`,railFold:`Folded task rail`,railFoldHint:`What the rail shows once folded away from its corner control.`,railFoldRow:`Folded rail shows: {style}`,railFoldRowHint:`enter cycles`,railFoldGlyphs:`status glyphs`,railFoldInitials:`glyph + initials`,railFoldHairline:`colour band only`,editor:`Editor`,editorHint:`What enter opens a file with in the file tree — diff mode when the editor supports it, the read-only preview when it isn't installed.`,editorRow:`editor: < {kind} >`,editorRowHint:`auto follows $VISUAL / $EDITOR, else nvim / vim / emacs / nano`,editorCustom:`custom: {cmd}`,editorCustomUnset:`(unset — enter to edit)`,worktree:`Worktree location`,worktreeHint:`Where new task worktrees are created. New tasks only.`,worktreeBase:`location: < {kind} >`,worktreeBaseHint:"custom takes `~`, a relative path, or a leading `$project_dir`",worktreeKindDefault:`default ~/.rove/worktrees`,worktreeKindNext:`next to project`,worktreeKindCustom:`custom`,worktreeCustom:`custom: {path}`,worktreeCustomUnset:`(unset — enter to edit)`,worktreeBaseTitle:`Custom worktree location (blank = default; $project_dir = project root)`,worktreeBaseField:`PATH`,editorCustomTitle:`Custom editor command (use {file} for the path)`,worktreeBaseInvalidTitle:`Can't use that worktree location`,worktreeBaseTokenBody:`{token} only expands as the leading path segment (e.g. {token}/../rove-worktrees). Keeping the previous setting.`,worktreeBaseUnusableBody:`{path} isn't usable ({error}). Keeping the previous setting — pick a writable directory.`,terminal:`Terminal`,terminalHint:`Applies to terminals opened after the change.`,scrollbackRow:`scrollback: {rows} rows`,scrollbackRowHint:`100–100000 · larger costs proportionally more CPU per redraw`,scrollbackTitle:`Terminal scrollback rows (100–100000)`,scrollbackField:`ROWS`,scrollbackInvalidTitle:`Not a number`,scrollbackInvalidBody:`Scrollback must be a number of rows (e.g. 1000). Keeping the previous setting.`,tabStripRow:`tab strip: {mode}`,tabStripMode:{never:`off — the sidebar tree lists tabs`,multipleOnly:`only with 2+ tabs`,always:`always`}},field:{command:`COMMAND`,name:`NAME`,id:`ID`},action:{save:`save`,next:`next`,add:`add`},reset:{title:`Reset UI state?`,body:`Wipes ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove — relaunch for a fresh start with an empty working session list. Worktrees on disk and engine session history are NOT touched.`,done:`Rove: UI state reset. Relaunch Rove to start fresh.`,failedTitle:`UI state was not reset`,failedBody:`Could not write the settings file. Your settings and tasks have been kept. Try resetting again.`},restart:{title:`Restart backend?`,body:`Stops the daemon and relaunches this Rove on the installed build, so daemon / orchestrator / engine edits take effect. Running engine sessions live in the PTY host and keep going; open tabs come back. Any other attached windows reconnect on their own.`,done:`Rove: restarting the backend...`},stateWrite:{failedTitle:`Settings were not saved`,failedBody:`{file} could not be written ({keys}). Check its directory permissions and free disk space, then save again.`},...fA,...gA,...vA,keybindings:{title:`Keybindings`,hint:`Rebind direct and prefix chords in your own YAML file; changes reload live. Press F1 anywhere for the live keymap with every binding id.`,configFile:`Config file`,notCreated:` (not created yet)`,prefixTitle:`Command layer ({prefix})`,prefixHint:`Bare keys act in the focused pane; a small one-press set covers frequent Rove actions; {prefix} opens the command layer ({timeout}ms second-stroke window). Prefix bindings keep their pane scope and modal rules.`,tapPresentation:`Prefix tap`,tapPresentationHint:`Choose whether the complete guide also marks controls already on screen.`,tapPresentationLocal:`On-screen entries + complete guide (default)`,tapPresentationGuide:`Complete guide only`,prefixDisabled:`disabled`,fixed:`Fixed (not rebindable): {ids}.`,createHint:`No overrides file yet. Rove can write one for you, fully commented — nothing is rebound until you uncomment a line.`,createFile:`[enter] Create keybindings.yaml`,overridesApplied:`Overrides applied`,none:`none`,unbound:`(unbound)`,defaultKeys:`default: {keys}`,warnings:`Warnings`},feedback:{title:`Feedback`,hint:"Sends a GitHub Discussion to the Rove repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:`title`,titlePlaceholder:`Short summary`,descriptionLabel:`description`,descriptionPlaceholder:`What happened? (enter for a new line · tab to Send)`,send:`[enter] Send to GitHub Discussions`},...mA},zh:{appearance:{enabled:`开启`,disabled:`关闭`,borderFlow:`流动渐变`,borderStill:`静止`,glyphsBraille:`盲文点`,glyphsStarburst:`星芒(需要含 Dingbats 符号区的字体)`,glyphsAscii:`ASCII`,titleShimmer:`流光`,titleStill:`静止`,preview:`工作区预览`,tasks:`任务`,terminal:`终端`,files:`文件`,testsPassed:`测试通过`,transparent:`透明背景`,opaque:`不透明背景`,modeDark:`深色`,modeLight:`浅色`,modeAuto:`自动(跟随终端)`,openHint:`按 Enter 打开选项和预览。`,chooseHint:`↑/↓ 或 j/k 预览 · enter 应用 · esc 取消`},title:`设置`,esc:`esc`,nav:{default:`j/k 选择 · h/l 切换层级 · enter 确认 · esc 关闭`,feedback:`tab 下一项 · enter 在发送项发送 · esc 关闭`},sections:{general:`通用`,autoRouting:`自动路由`,engines:`引擎`,plugins:`插件`,marketplace:`插件市场`,keys:`快捷键`,feedback:`反馈`,dev:`开发`},general:{usage:`用量`,theme:`主题`,themeMode:`明暗`,themeHint:`l 进入列表 · j/k 高亮 · enter 应用`,language:`语言`,languageHint:`Rove 界面的显示语言。l 进入列表 · j/k 高亮 · enter 应用。`,transparent:`透明背景`,transparentHint:`去掉渲染器的背景填充,让宿主终端透出来。按 enter 切换。`,on:`[x] 开`,off:`[ ] 关`,focusAccent:`聚焦强调色`,focusAccentHint:`聚焦面板标题、▌ 标记和分隔边框的颜色。`,accentPrimary:`主色(品牌强调色)`,accentSuccess:`成功色(传统绿)`,accentInfo:`信息色(冷蓝)`,appearance:`外观`,appearanceHint:`分屏面板怎么画边。`,splitStyle:`分屏面板`,workingBorder:`运行中边框`,taskColors:`任务配色`,glyphSet:`状态符号`,colorblind:`色盲友好的增删配色`,runningTitle:`运行中标题`,splitBox:`方框边框`,splitLine:`单线分隔`,splitRail:`左侧强调条`,splitRule:`顶部横线`,notifications:`通知`,notificationsHint:`后台标签完成或在审批处暂停时触发。`,toast:`Toast 弹窗`,toastHint:`右下角弹窗`,sound:`声音`,soundHint:`响铃 + 提示音 + OSC 9 桌面通知(经 SSH 直达本地)`,soundVolume:`提示音音量 — {percent}%`,soundVolumeHint:`回车循环切换;下一声提示音生效`,crossTask:`跨任务`,crossTaskHint:`你已切走的任务也通知`,finishedAlerts:`回合完成`,finishedAlertsHint:`关闭后只有审批和错误会提醒;未读标记照常`,keyHints:`键盘提示`,keyHintsHint:`状态栏提醒,以及侧栏和文件面板的首用提示。`,keyHintsShow:`显示键盘提示`,keyHintsShowHint:`重新开启会点亮已因使用而熄灭的提示`,zen:`禅模式`,zenHint:"`zen` 标记和 `prefix`+z 隐藏 Files,保留 Tasks 侧栏与 workspace。",zenDefaultOn:`启动即进入禅模式`,updates:`更新`,updatesHint:`稳定版是默认渠道;next 预览即将发布的版本;nightly 每天从 main 自动构建。`,updateChannelTitle:`发布渠道`,updateChannel:`渠道:{channel}`,updateChannelHint:"enter 在稳定版 / next / nightly 间切换;`rove update` 跟随它",updateChannelName:{latest:`稳定版`,next:`next 预览版`,nightly:`nightly 预览版`},updateNotify:`有新版本时通知我`,updateNotifyHint:`只针对所选渠道;关闭后不再显示更新标记,手动检查仍会给出结果`,updateCheck:`[ 检查更新 ]`,updateCheckHint:`立即向 npm 查询所选渠道的最新版本`,updateCheckButton:`检查更新`,updateChecking:`检查中…`,updateOpenPage:`打开更新页`,updateOpenPageRow:`[ 打开更新页 ]`,railFold:`折叠后的任务栏`,railFoldHint:`任务栏从角标折叠之后显示什么。`,railFoldRow:`折叠后显示:{style}`,railFoldRowHint:`enter 切换`,railFoldGlyphs:`状态字形`,railFoldInitials:`字形 + 首字母`,railFoldHairline:`仅色带`,editor:`编辑器`,editorHint:`文件树里按 enter 用什么打开文件——支持时走编辑器 diff 模式,未安装时回退到只读预览。`,editorRow:`编辑器: < {kind} >`,editorRowHint:`auto 跟随 $VISUAL / $EDITOR,否则 nvim / vim / emacs / nano`,editorCustom:`自定义: {cmd}`,editorCustomUnset:`(未设置 — enter 编辑)`,worktree:`工作树位置`,worktreeHint:`新任务工作树的创建位置。仅对新任务生效。`,worktreeBase:`位置: < {kind} >`,worktreeBaseHint:"自定义可填 `~`、相对路径或以 `$project_dir` 开头",worktreeKindDefault:`默认 ~/.rove/worktrees`,worktreeKindNext:`项目旁边`,worktreeKindCustom:`自定义`,worktreeCustom:`自定义: {path}`,worktreeCustomUnset:`(未设置 — enter 编辑)`,worktreeBaseTitle:`自定义工作树位置(留空 = 默认;$project_dir = 项目根目录)`,worktreeBaseField:`路径`,editorCustomTitle:`自定义编辑器命令(用 {file} 代表文件路径)`,worktreeBaseInvalidTitle:`无法使用该工作树位置`,worktreeBaseTokenBody:`{token} 只能作为路径的第一段展开(如 {token}/../rove-worktrees)。保留原设置。`,worktreeBaseUnusableBody:`{path} 不可用({error})。保留原设置 —— 请选择一个可写目录。`,terminal:`终端`,terminalHint:`对修改后新打开的终端生效。`,scrollbackRow:`回滚行数: {rows} 行`,scrollbackRowHint:`100–100000 · 调大会按比例增加每次重绘的 CPU`,scrollbackTitle:`终端回滚行数(100–100000)`,scrollbackField:`行数`,scrollbackInvalidTitle:`不是数字`,scrollbackInvalidBody:`回滚行数必须是数字(如 1000)。保留原设置。`,tabStripRow:`标签栏: {mode}`,tabStripMode:{never:`关闭 — 标签在左侧树里`,multipleOnly:`仅 2 个以上标签时显示`,always:`始终显示`}},field:{command:`命令`,name:`名称`,id:`标识`},action:{save:`保存`,next:`下一步`,add:`添加`},reset:{title:`重置界面状态?`,body:`将清除 ~/.config/rove/state.json 和 ~/.rove/tasks.json 并退出 Rove —— 重新启动后会是一个干净的开始,工作会话列表为空。磁盘上的工作树和引擎会话历史不受影响。`,done:`Rove:界面状态已重置。重新启动 Rove 即可从头开始。`,failedTitle:`UI 状态未能重置`,failedBody:`无法写入设置文件。设置和任务均已保留,请稍后重新尝试重置。`},restart:{title:`重启后端?`,body:`会停掉 daemon,并以已安装的版本重新启动当前 Rove 窗口,从而让 daemon / orchestrator / 引擎的改动生效。正在运行的引擎会话由 PTY host 托管,不会中断;已打开的标签页会恢复。其他已连接的窗口会自行重连。`,done:`Rove:正在重启后端……`},stateWrite:{failedTitle:`设置未能保存`,failedBody:`{file} 写入失败({keys})。请检查目录权限和磁盘空间,再次保存。`},...pA,..._A,...yA,keybindings:{title:`快捷键`,hint:`在你自己的 YAML 文件里重绑定直接按键和 prefix 组合;修改会实时加载。任意位置按 F1 查看带每个绑定 id 的实时键位表。`,configFile:`配置文件`,notCreated:` (尚未创建)`,prefixTitle:`命令层({prefix})`,prefixHint:`裸键作用于当前聚焦面板;少量单次快捷键覆盖高频 Rove 操作;{prefix} 打开命令层(第二击窗口 {timeout}ms)。Prefix 绑定保持原有的面板作用域和 modal 规则。`,tapPresentation:`点按 Prefix`,tapPresentationHint:`选择完整指南是否同时标记当前屏幕上的入口。`,tapPresentationLocal:`屏幕入口 + 完整指南(默认)`,tapPresentationGuide:`仅完整指南`,prefixDisabled:`已禁用`,fixed:`固定(不可重绑定):{ids}。`,createHint:`还没有覆盖文件。Rove 可以帮你写一份带完整注释的——在你取消注释之前不会改动任何按键。`,createFile:`[enter] 创建 keybindings.yaml`,overridesApplied:`已应用的覆盖`,none:`无`,unbound:`(已解绑)`,defaultKeys:`默认: {keys}`,warnings:`警告`},feedback:{title:`反馈`,hint:"通过 `gh` 向 Rove 仓库发一条 GitHub Discussion。需要 `gh auth login`;分类默认为 Feedback。",titleLabel:`标题`,titlePlaceholder:`简短概括`,descriptionLabel:`描述`,descriptionPlaceholder:`发生了什么?(enter 换行 · tab 跳到发送)`,send:`[enter] 发送到 GitHub Discussions`},...hA}},xA={en:Ar,zh:jr};function $(e,t){return Ae(bA,e,t)}function SA(e,t){return Ae(xA,e,t)}function CA({label:e,value:t,picks:n,onPick:r}){return(0,V.jsx)(`fieldset`,{"aria-label":e,className:`m-0 inline-flex min-w-0 flex-wrap gap-0.5 rounded-sm border-hairline border-line bg-inset p-0.5`,children:n.map(e=>{let n=e.value===t;return(0,V.jsx)(`button`,{type:`button`,"aria-pressed":n,className:Me(`rounded-xs px-2.5 py-1 font-sans text-meta whitespace-nowrap touch:min-h-9`,`focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-focus`,n?`bg-menu text-ink`:`text-muted hover:bg-hover`),onClick:()=>!n&&r(e.value),children:e.label},e.value)})})}function wA({label:e,value:t,picks:n,onPick:r}){return(0,V.jsxs)(`span`,{className:`relative inline-flex max-w-full min-w-0 text-ink`,children:[(0,V.jsx)(`select`,{"aria-label":e,value:t,className:`max-w-full min-w-0 truncate rounded-sm border-hairline border-line bg-paper py-1.25 pr-7 pl-2.5 font-sans text-meta hover:border-line-active focus-visible:border-line-active focus-visible:outline-none touch:min-h-10`,onChange:e=>{let t=n.find(t=>String(t.value)===e.target.value);t&&r(t.value)},children:n.map(e=>(0,V.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,V.jsx)(Ia,{className:`pointer-events-none absolute top-1/2 right-2.5 -translate-y-1/2 text-subtle`})]})}var TA=`${Nn} w-narrow:pt-0`,EA=`dialog relative m-0 flex h-[min(640px,80vh)] w-[min(880px,calc(100vw-32px))] overflow-hidden rounded-md border-hairline border-line bg-surface text-inherit shadow-dialog focus:outline-none motion-safe:animate-rise-in [.is-leaving_&]:animate-sink-out w-narrow:h-dvh w-narrow:w-screen w-narrow:flex-col w-narrow:rounded-none w-narrow:border-0 short:h-[calc(100dvh-24px)]`,DA=`absolute top-3 right-3 z-1 grid size-7 place-items-center rounded-sm text-display leading-none text-muted hover:bg-inset hover:text-ink focus-visible:bg-inset focus-visible:text-ink touch:size-10`,OA=`flex w-56 flex-none flex-col gap-5 overflow-y-auto scrollbar-none [border-right:var(--hairline)_solid_var(--line)] px-2.5 py-4 w-narrow:w-full w-narrow:flex-1 w-narrow:[border-right:none] w-narrow:px-3 w-narrow:py-3`,kA=`m-0 px-2 pb-0.5 font-sans text-title font-semibold normal-nums text-ink`,AA=`flex flex-col gap-0.5`,jA=`m-0 px-2 pb-1 font-mono text-meta font-normal text-subtle`,MA=(e,t)=>`flex items-center rounded-sm px-2 py-1.25 text-left font-sans text-body touch:min-h-10 w-narrow:min-h-11 w-narrow:px-3 ${e?`bg-menu text-ink`:`${t?`text-muted`:`text-ink`} [&:hover]:bg-hover`}`,NA=`ml-auto hidden text-subtle w-narrow:block`,PA=`flex flex-col`,FA=`m-0 pb-2 text-meta text-subtle`,IA=`flex flex-col border-t-hairline border-t-line [&>*]:border-b-hairline [&>*]:border-b-line`,LA=`flex items-center justify-between gap-x-6 gap-y-2 py-3 w-narrow:flex-col w-narrow:items-stretch`,RA=`flex items-center justify-between gap-x-6 py-3`,zA=`flex flex-col gap-3 py-3`,BA=`flex min-w-0 flex-1 flex-col gap-0.5`,VA=`text-body text-ink`,HA=`text-meta text-muted [&_a]:text-accent`,UA=`max-w-90 min-w-0 truncate font-mono text-meta text-muted [overflow-wrap:anywhere]`,WA=`m-0 py-3 text-body text-muted`,GA=`rounded-sm border-hairline border-line bg-paper px-2.5 py-1.5 font-sans text-body text-ink focus-visible:border-line-active focus-visible:outline-none`,KA=`${GA} w-24 text-right`,qA=`flex flex-col gap-1.5`,JA=`text-meta font-medium text-muted`,YA=`min-h-30 max-h-[50vh] leading-[1.45]`,XA=`flex flex-wrap items-center justify-end gap-2.5`,ZA=`flex items-center gap-2.5 rounded-sm bg-inset px-3 py-2 text-meta`,QA=`grid grid-cols-[minmax(0,1fr)_104px_72px] items-center gap-3`,$A=`flex flex-col`,ej=`${QA} pb-1.5 pl-7.5 font-sans text-meta font-medium normal-nums text-subtle [&>span:not(:first-child)]:text-center`,tj=`border-b-hairline border-b-line first:border-t-hairline first:border-t-line`,nj=`${QA} group/eng rounded-sm py-1.5 pr-1 pl-0`,rj=`flex min-w-0 items-center gap-2 rounded-sm py-1.5 pr-0 pl-1.5 text-left focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-focus`,ij=e=>`mx-0.5 ${e?`text-muted`:`text-subtle`}`,aj=`flex min-w-0 flex-col gap-0.5`,oj=e=>`truncate text-body leading-[inherit] font-medium ${e?`text-muted`:`text-ink`}`,sj=`ml-2 text-meta leading-[inherit] font-normal text-subtle`,cj={ready:`bg-success`,attention:`bg-warning`,error:`bg-error`,absent:`bg-subtle`},lj=e=>`inline-flex items-center gap-1.5 text-meta leading-[inherit] ${e===`error`?`text-error`:`text-muted`}`,uj=e=>`size-1.75 flex-none rounded-full ${cj[e]}`,dj=`flex justify-center`,fj=`rounded-full bg-accent-soft px-2.5 py-0.5 font-sans text-meta font-medium normal-nums capitalize text-accent`,pj=`rounded-full border-hairline border-line px-2.5 py-0.5 text-meta leading-[inherit] whitespace-nowrap text-muted opacity-0 transition-opacity duration-120 ease-[ease] group-hover/eng:opacity-100 group-focus-within/eng:opacity-100 hover:border-line-active hover:text-ink motion-reduce:transition-none touch:opacity-100`,mj=`mt-0 mr-1 mb-3 ml-7 flex flex-col gap-2.5 px-1.5 py-1`,hj=`m-0 grid grid-cols-[max-content_minmax(0,1fr)] gap-x-3.5 gap-y-1.5 text-meta leading-[1.5]`,gj=`text-subtle`,_j=e=>`m-0 wrap-anywhere ${e?`text-warning`:`text-ink`}`,vj=`flex items-center gap-2`,yj=`flex-1 px-2 py-1.25`,bj=`text-meta leading-[inherit] text-success`,xj=`flex items-center gap-3 py-2.5`,Sj=`flex min-w-0 flex-1 flex-col gap-0.5`,Cj=(e=!1)=>`overflow-hidden text-ellipsis text-meta text-muted ${e?`whitespace-normal`:`whitespace-nowrap`}`,wj=`flex flex-col gap-1 py-3`,Tj=`flex items-baseline gap-3`,Ej=`flex flex-col gap-2.5 pt-2`,Dj=`grid grid-cols-[repeat(auto-fill,minmax(96px,1fr))] gap-2`,Oj=`m-0 pb-1.5 text-meta font-medium text-subtle`,kj=e=>e?`border-accent bg-accent-soft`:`border-line hover:bg-hover`,Aj=`flex h-9 overflow-hidden rounded-xs border-hairline`,jj=`flex w-2/5 flex-col gap-0.75 p-1`,Mj=`flex min-w-0 flex-1 flex-col gap-0.75 p-1`,Nj=`h-0.75 rounded-xs`,Pj=`mt-auto flex gap-0.75`,Fj=`size-1 rounded-xs`,Ij=`flex min-w-0 items-baseline gap-1.5 font-sans text-meta`,Lj=`group relative h-4.5 w-7.5 flex-none justify-self-center rounded-full border-hairline border-line bg-inset transition-[background,border-color] duration-120 ease-[ease] aria-checked:border-accent aria-checked:bg-accent motion-reduce:transition-none`,Rj=`absolute top-0.5 left-0.5 size-3 rounded-full bg-muted transition-[transform,background] duration-120 ease-[ease] group-aria-checked:[transform:translateX(12px)] group-aria-checked:bg-paper motion-reduce:transition-none`;function zj({on:e,...t}){return(0,V.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,className:Lj,...t,children:(0,V.jsx)(`span`,{className:Rj})})}function Bj(e){return(0,V.jsxs)(`section`,{className:PA,children:[e.title&&(0,V.jsx)(`h2`,{className:`m-0 pb-1.5 font-sans text-meta font-medium normal-nums text-muted`,children:e.title}),e.hint&&(0,V.jsx)(`p`,{className:`m-0 pb-2 text-meta text-subtle`,children:e.hint}),(0,V.jsx)(`div`,{className:IA,children:e.children})]})}function Vj(e){let t=(0,V.jsxs)(`div`,{className:BA,children:[(0,V.jsx)(`span`,{id:e.labelId,className:VA,children:e.label}),e.hint&&(0,V.jsx)(`span`,{className:`text-meta text-muted [&_a]:text-accent`,children:e.hint})]});return e.stack?(0,V.jsxs)(`div`,{className:zA,children:[t,e.children]}):(0,V.jsxs)(`div`,{className:e.inline?RA:LA,children:[t,e.children&&(0,V.jsx)(`div`,{className:`flex min-w-0 flex-none items-center justify-end gap-2 w-narrow:justify-start`,children:e.children})]})}function Hj(e){let t=(0,g.useId)();return(0,V.jsx)(Vj,{label:e.label,hint:e.hint,labelId:t,inline:!0,children:(0,V.jsx)(zj,{on:e.checked,"aria-labelledby":t,disabled:e.disabled,onClick:()=>e.onChange(!e.checked)})})}var Uj=36;function Wj(e){let t=e.picks.length<=4&&e.picks.reduce((e,t)=>e+t.label.length,0)<=Uj?CA:wA;return(0,V.jsx)(Vj,{label:e.label,hint:e.hint,children:(0,V.jsx)(t,{label:e.label,value:e.value,picks:e.picks,onPick:e.onPick})})}function Gj(e){return(0,V.jsx)(Vj,{label:e.label,hint:e.note,children:(0,V.jsx)(`span`,{className:UA,children:e.value})})}var Kj=`flex items-baseline justify-between`,qj=`[&_b]:mr-2.5`,Jj=`my-2.5 flex flex-col`,Yj=e=>`flex gap-3 rounded-sm px-2 py-1 text-left text-[length:var(--fs-body)] ${e?`bg-menu`:``}`,Xj=`min-w-[14ch]`,Zj=`whitespace-nowrap text-[length:var(--fs-meta)] text-warning`,Qj=`rail-tight:hidden`,$j=`[&_h2]:mx-0 [&_h2]:mt-3.5 [&_h2]:mb-1 [&_h2]:text-[length:var(--fs-body)]`,eM=`max-h-[55vh] overflow-x-hidden overflow-y-auto`,tM=`mr-auto text-[length:var(--fs-meta)]`,nM=`text-[length:var(--fs-body)] leading-[1.55] wrap-anywhere [&_h3]:mx-0 [&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:font-sans [&_h3]:text-meta [&_h3]:font-medium [&_h3]:normal-nums [&_h3]:text-muted [&_h3:first-child]:mt-0 [&_ul]:m-0 [&_ul]:pl-4.5 [&_li+li]:mt-2 [&_p]:mx-0 [&_p]:mt-0 [&_p]:mb-2 [&_a]:text-accent [&_a]:underline [&_a]:underline-offset-2 [&_code]:rounded-sm [&_code]:bg-inset [&_code]:px-1 [&_code]:py-0 [&_code]:font-mono [&_code]:text-meta [&_code]:font-normal [&_code]:normal-nums`,rM=`mt-3`,iM=e=>`rounded-sm px-2 py-1.25 ${e?`bg-menu`:``}`,aM=`flex items-baseline gap-2 text-[length:var(--fs-body)]`,oM=`flex items-baseline justify-between gap-2`,sM=`font-mono`,cM=`truncate`,lM=`mt-4 text-[length:var(--fs-meta)]`;function uM(e){return e.replace(/\[`[0-9a-f]{7,40}`\]\([^)]*\)\s*/g,``).replace(/\s+[—-]\s+\[@[^\]]+\]\([^)]*\)\s*$/,``).trim()}function dM(e){let t=[],n=(e,n)=>t.push({kind:e,text:n,id:t.length});for(let r of e.split(/\r?\n/)){let e=r.trimEnd();if(e.trim()===``)continue;let i=/^#{1,6}\s+(.*)$/.exec(e);if(i){n(`heading`,i[1]??``);continue}let a=/^\s*[-*]\s+(.*)$/.exec(e);if(a){n(`item`,a[1]??``);continue}let o=t.at(-1);o&&o.kind!==`heading`?o.text=`${o.text} ${e.trim()}`:n(`para`,e.trim())}return t.map(e=>e.kind===`item`?{...e,text:uM(e.text)}:e)}var fM=/\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`|\*\*([^*]+)\*\*/g;function pM(e){let t=[],n=0;for(let r of e.matchAll(fM)){let i=r.index??0;i>n&&t.push(e.slice(n,i));let[a,o,s,c,l]=r;o!==void 0&&s!==void 0?t.push((0,V.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,children:pM(o)},i)):c===void 0?l!==void 0&&t.push((0,V.jsx)(`b`,{children:l},i)):t.push((0,V.jsx)(`code`,{children:c},i)),n=i+a.length}return n<e.length&&t.push(e.slice(n)),t}function mM({body:e}){let t=dM(e),n=[],r=[],i=()=>{r.length>0&&n.push((0,V.jsx)(`ul`,{children:r},`ul-${n.length}`)),r=[]};for(let e of t){if(e.kind===`item`){r.push((0,V.jsx)(`li`,{children:pM(e.text)},e.id));continue}i(),n.push(e.kind===`heading`?(0,V.jsx)(`h3`,{children:e.text},e.id):(0,V.jsx)(`p`,{children:pM(e.text)},e.id))}return i(),(0,V.jsx)(`div`,{className:nM,children:n})}var hM=`page min-h-0 flex-1 rounded-md border-hairline border-line bg-paper px-4.5 py-3.5 focus:outline-none`,gM=`${hM} overflow-y-auto`,_M=`page-title mx-0 mt-0 mb-1.5 font-sans text-title font-bold normal-nums`,vM=`flex items-baseline justify-between gap-4 [&_.page-title]:m-0`,yM=e=>`min-w-0 truncate text-meta ${e?``:`leading-[inherit]`}`,bM=`flex flex-wrap items-center gap-2`,xM={row:`touch:after:-inset-x-0.75 touch:after:-inset-y-0.5`,kanban:`touch:after:-inset-x-0.75 touch:after:-top-1.5 touch:after:-bottom-1`,header:`touch:after:-inset-x-0.75 touch:after:-top-2.5 touch:after:-bottom-1.25`},SM=`mt-2.5 flex flex-col gap-1.5`,CM=e=>`flex cursor-pointer flex-col gap-0.5 rounded-sm px-2.5 py-1.5 ${e?`bg-menu`:``}`,wM=`flex min-w-0 items-baseline gap-2.5`,TM=`whitespace-nowrap text-muted`,EM=`flex gap-2.5 pl-[4ch] text-meta leading-[inherit] text-muted`,DM=`min-w-0 flex-1 truncate`,OM=`flex flex-col px-1.5 pb-2`,kM=`flex flex-col border-t-hairline border-t-line px-1.5 pt-0.5 pb-0.5`,AM=`relative flex flex-col`,jM=e=>`flex items-center rounded-sm px-2 py-0.75 text-left touch:min-h-10 ${e?`bg-menu text-ink`:`text-muted [&:hover]:bg-hover`}`,MM=`ml-auto -mr-[4.5px] w-5 text-center font-sans text-display leading-none font-normal text-accent normal-nums`,NM=`mr-[7px] size-3.5 flex-none fill-none stroke-current stroke-[1.75] [stroke-linecap:round] [stroke-linejoin:round]`,PM=_(null),FM=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),IM=e=>`https://github.com/Sma1lboy/rove/releases/tag/v${e}`;function LM(){return B()===`zh`?Fr:Pr}function RM(e,t){return e.request(`update.check`,{force:!0,locale:Ee.get(),channel:t}).then(e=>(PM.set(e),!0),()=>!1)}function zM(){let e=LM(),t=v(PM),{prefs:n}=R_();return!n.updateNotify||!t?.info?.hasUpdate?null:(0,V.jsxs)(`button`,{type:`button`,className:`${U} text-muted ${Zj} ${Ge}`,title:FM(e.chip,{version:t.info.latest}),onClick:()=>ya(`update`),children:[`↑`,(0,V.jsxs)(`span`,{className:Qj,children:[` `,t.info.latest]})]})}function BM({client:e}){let t=LM(),n=v(PM),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(`release`),[s,c]=(0,g.useState)(null),l=(0,g.useRef)(null);(0,g.useEffect)(()=>{l.current?.focus(),RM(e).finally(()=>i(!0))},[e]);let u=n?.info??null,d=n?.current??``,f=u?.latest??d,p=u?.hasUpdate===!0,m=r&&u===null,h=r&&u!==null&&!p,_=n?.notes??[],y=_[0]?.url??(f?IM(f):null),b=[{id:`release`,key:`R`,label:t.actions.openRelease,detail:y??t.releaseUrlUnavailable},{id:`close`,key:`Q`,label:t.actions.close,detail:t.actions.closeDetail}],x=e=>{if(e===`close`)return un.set(null);c(y&&window.open(y,`_blank`,`noopener`)!==null?t.statusReleaseOpened:t.statusReleaseError)};return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:l,onKeyDown:e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),x(`close`);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=b.findIndex(e=>e.id===a);if(e.key===`j`||e.key===`ArrowDown`)o(b[(t+1)%b.length]?.id??`close`);else if(e.key===`k`||e.key===`ArrowUp`)o(b[(t-1+b.length)%b.length]?.id??`close`);else if(e.key===`Enter`)x(a);else if(e.key===`r`)x(`release`);else if(e.key===`q`||e.key===`Escape`)x(`close`);else return;e.preventDefault()},children:[(0,V.jsxs)(`div`,{className:Kj,children:[(0,V.jsx)(`h1`,{className:_M,children:t.pageTitle}),(0,V.jsx)(`button`,{type:`button`,className:`${en} mono`,onClick:()=>x(`close`),children:ts()?z(`dialog.close`):t.closeHint})]}),(0,V.jsxs)(`p`,{className:`mono ${qj}`,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:t.current}),` `,(0,V.jsxs)(`b`,{children:[`v`,d]}),` `,(0,V.jsx)(`span`,{className:`text-muted`,children:t.latest}),` `,m?(0,V.jsx)(`b`,{className:`text-muted`,children:t.latestUnknown}):r?(0,V.jsxs)(`b`,{className:p?`text-warning`:`text-success`,children:[`v`,f]}):(0,V.jsx)(`span`,{className:`text-muted`,children:`…`})]}),m&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.registryRetry}),h&&(0,V.jsx)(`p`,{className:`text-success`,children:t.upToDate}),p&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:`rove update`}),(0,V.jsx)(`div`,{className:Jj,children:b.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:Yj(a===e.id),onClick:()=>x(e.id),children:[(0,V.jsxs)(`span`,{className:`mono keys-only text-accent`,children:[`[`,e.key,`]`]}),(0,V.jsx)(`span`,{className:Xj,children:e.label}),(0,V.jsx)(`span`,{className:`text-muted`,children:e.detail})]},e.id))}),s&&(0,V.jsx)(`p`,{className:`mono text-accent`,children:s}),p&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:FM(t.changesSectionHeader,{from:d,to:f})}),!r&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.loadingNotes}),r&&p&&_.length===0&&(0,V.jsx)(`p`,{className:`text-muted`,children:t.notesUnavailable}),_.map(e=>(0,V.jsxs)(`section`,{className:$j,children:[(0,V.jsxs)(`h2`,{className:`mono`,children:[`v`,e.version]}),(0,V.jsx)(mM,{body:e.body})]},e.version))]})}var VM=`rove.whatsNewSeenVersion`,HM=e=>e.split(/[.-]/).slice(0,3).map(Number),UM=(e,t)=>{let[n,r]=[HM(e),HM(t)];for(let e=0;e<3;e++)if((n[e]??0)!==(r[e]??0))return(n[e]??0)>(r[e]??0);return!1};function WM(e,t){let n=localStorage.getItem(VM);localStorage.setItem(VM,t),!(!n||!UM(t,n))&&e.request(`release.notes`,{version:t.replace(/-.*$/,``),locale:Ee.get()}).then(e=>W.set((0,V.jsx)(GM,{from:n,to:t,notes:e.notes})),()=>W.set((0,V.jsx)(GM,{from:n,to:t,notes:null})))}function GM(e){let t=LM(),n=(0,g.useRef)(null);return(0,g.useEffect)(()=>n.current?.focus(),[]),(0,g.useEffect)(()=>{let e=e=>{e.key===`q`&&W.set(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,V.jsxs)(cr,{title:t.whatsNew.title,wide:!0,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:FM(t.whatsNew.upgraded,{from:e.from,to:e.to})}),(0,V.jsx)(`div`,{className:eM,children:e.notes?(0,V.jsx)(mM,{body:e.notes.body}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.whatsNew.notesUnavailable})}),(0,V.jsxs)(`div`,{className:rn,children:[(0,V.jsx)(`span`,{className:`mono text-muted ${tM} touch:hidden!`,children:z(`whatsNew.keys`)}),(0,V.jsx)(`a`,{className:en,href:e.notes?.url??IM(e.to),target:`_blank`,rel:`noopener noreferrer`,children:z(`whatsNew.openRelease`)}),(0,V.jsx)(`button`,{ref:n,type:`button`,className:Pe(),onClick:()=>W.set(null),children:z(`whatsNew.continue`)})]})]})}var KM=(e,t)=>e.replace(`{version}`,t);function qM({client:e}){let t=LM(),n=v(PM),{prefs:r}=R_(),[i,a]=(0,g.useState)(`idle`),o=()=>{a(`checking`),RM(e,r.updateChannel).then(e=>a(e?`done`:`failed`))},s=t=>{a(`idle`),L_(e,`updateChannel`,t)},c=n?.info??null,l=i===`failed`||i===`done`&&c===null,u=i===`done`&&n&&c?c.hasUpdate?KM(t.available,c.latest):t.upToDate:l?t.latestUnknown:void 0,d=l?`text-muted`:c?.hasUpdate?`text-warning`:`text-success`;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Wj,{label:$(`general.updateChannelTitle`),hint:$(`general.updatesHint`),value:r.updateChannel,picks:dA.map(e=>({value:e,label:$(`general.updateChannelName.${e}`)})),onPick:s}),(0,V.jsx)(Hj,{label:$(`general.updateNotify`),hint:$(`general.updateNotifyHint`),checked:r.updateNotify,onChange:t=>void L_(e,`updateNotify`,t)}),(0,V.jsxs)(Vj,{label:$(`general.updates`),hint:$(`general.updateCheckHint`),children:[i===`done`&&c?.hasUpdate&&(0,V.jsx)(H,{variant:`action`,onClick:()=>ya(`update`),children:$(`general.updateOpenPage`)}),(0,V.jsx)(H,{variant:`action`,disabled:i===`checking`,onClick:o,children:$(i===`checking`?`general.updateChecking`:`general.updateCheckButton`)})]}),u&&(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:d,children:u}),hint:c?.hasUpdate?(0,V.jsx)(`code`,{className:`font-mono`,children:`rove update`}):void 0,children:i===`done`&&n&&c&&(0,V.jsx)(`span`,{className:`max-w-90 min-w-0 truncate font-mono text-meta text-muted [overflow-wrap:anywhere]`,title:`${t.latest} v${c.latest}`,children:`${t.current} v${n.current} · ${t.latest} v${c.latest}`})})]})}function JM({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`daemon.info`)??null);return(0,g.useEffect)(()=>{Ws(e,`daemon.info`).then(n,()=>n(null))},[e]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Bj,{title:z(`settings.about.groupRove`),children:[t?.daemonVersion&&(0,V.jsx)(Vj,{label:z(`settings.about.daemon`),hint:z(t.stale?`settings.about.daemonStale`:`settings.about.daemonCurrent`,{version:t.daemonVersion})}),(0,V.jsx)(qM,{client:e})]}),(0,V.jsx)(Bj,{title:z(`settings.about.browser`),children:(0,V.jsx)(Vj,{label:z(`settings.about.signOut`),hint:z(`settings.about.browserHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>void Na().then(()=>window.location.reload()),children:z(`settings.about.signOut`)})})})]})}async function YM(e,t){let{taskId:n}=await e.client.request(`task.openScratch`);await VC(e,n,{kind:`engine`,prompt:t}),Cn()}var XM=_(null);function ZM({theme:e,mode:t}){let n=e[t],r=(e,t)=>({background:e,width:t});return(0,V.jsxs)(`span`,{className:Aj,style:{background:n.background,borderColor:n.border},"aria-hidden":!0,children:[(0,V.jsxs)(`span`,{className:jj,style:{background:n.backgroundPanel},children:[(0,V.jsx)(`span`,{className:Nj,style:r(n.primary,`70%`)}),(0,V.jsx)(`span`,{className:Nj,style:r(n.textMuted,`85%`)}),(0,V.jsx)(`span`,{className:Nj,style:r(n.textMuted,`55%`)})]}),(0,V.jsxs)(`span`,{className:Mj,children:[(0,V.jsx)(`span`,{className:Nj,style:r(n.text,`90%`)}),(0,V.jsx)(`span`,{className:Nj,style:r(n.textMuted,`65%`)}),(0,V.jsx)(`span`,{className:Nj,style:r(n.accent??n.primary,`40%`)}),(0,V.jsx)(`span`,{className:Pj,children:[n.success,n.warning,n.error,n.info].map((e,t)=>(0,V.jsx)(`span`,{className:Fj,style:{background:e}},t))})]})]})}function QM(e){return(0,V.jsxs)(H,{variant:`card`,"aria-pressed":e.active,className:kj(e.active),onMouseEnter:()=>k_.set(e.theme),onFocus:()=>k_.set(e.theme),onClick:e.onClick,children:[(0,V.jsx)(ZM,{theme:e.theme,mode:e.mode}),(0,V.jsxs)(`span`,{className:Ij,children:[(0,V.jsx)(`span`,{className:`truncate text-ink`,children:e.theme.name}),e.tag&&(0,V.jsx)(`span`,{className:`text-subtle`,children:e.tag})]})]})}function $M({children:e}){return(0,V.jsx)(`div`,{className:Dj,onMouseLeave:()=>k_.set(null),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||k_.set(null)},children:e})}function eN(e){let{model:t}=e,{client:n}=t,r=v(XM),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(!1),[u,d]=(0,g.useState)(!1);(0,g.useEffect)(()=>()=>k_.set(null),[]),(0,g.useEffect)(()=>void I_(n).catch(()=>void 0),[n]),(0,g.useEffect)(()=>{XM.get()===null&&n.request(`theme.hosted`).then(e=>XM.set(e),()=>XM.set({themes:[],dir:null}))},[n]);let f=e=>{l(!1),YM(t,z(`prefs.themeAgentPrompt`,{dir:e})).catch(()=>l(!0))},p=r?.dir??null,m=async e=>{a(e),s(null);try{await n.request(`theme.install`,{name:e}),await I_(n),await L_(n,`theme`,e)}catch{s(e)}finally{a(null)}},h=new Set(e.themes.map(e=>e.name)),_=(r?.themes??[]).filter(e=>!h.has(e.name));return(0,V.jsxs)(Vj,{label:e.label,hint:z(`prefs.themePreviewHint`),stack:!0,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:Oj,children:z(`prefs.themeInstalled`)}),(0,V.jsx)($M,{children:e.themes.map(t=>(0,V.jsx)(QM,{theme:t,mode:e.mode,active:t.name===e.value,tag:t.bundled?void 0:z(`prefs.themeUser`),onClick:()=>t.name!==e.value&&void L_(n,`theme`,t.name)},t.name))})]}),_.length>0&&(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(H,{className:`inline-flex items-center gap-1.5`,"aria-expanded":u,onClick:()=>d(!u),children:[(0,V.jsx)(Ia,{right:!u}),u?z(`prefs.themeHide`):z(`prefs.themeBrowse`,{count:_.length})]}),u&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:`m-0 pb-1.5 text-meta font-medium text-subtle mt-2.5`,children:z(`prefs.themeMoreHint`)}),(0,V.jsx)($M,{children:_.map(t=>(0,V.jsx)(QM,{theme:t,mode:e.mode,active:!1,tag:i===t.name?z(`prefs.themeInstalling`):o===t.name?z(`prefs.themeInstallFailed`):z(`prefs.themeGet`),onClick:()=>i===null&&void m(t.name)},t.name))})]})]}),p&&(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2.5`,children:[(0,V.jsx)(H,{variant:`action`,onClick:()=>f(p),children:z(`prefs.themeAgent`)}),(0,V.jsx)(`span`,{className:`text-meta text-muted [&_a]:text-accent`,children:z(c?`prefs.themeAgentFailed`:`prefs.themeAgentHint`)})]})]})}var tN=_({}),nN=``,rN=`(prefers-color-scheme: dark)`;function iN(e){let t=window.matchMedia(rN);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function aN(){return(0,g.useSyncExternalStore)(iN,()=>window.matchMedia(rN).matches)}function oN(){let e=aN();return __(R_().prefs.themeMode,e)}function sN(e){let t=oN(),n=R_();(0,g.useEffect)(()=>{if(!n.loaded||n.prefs.taskColors!==`on`)return;let r=`${n.prefs.theme}/${t}`;r!==nN&&(nN=r,tN.set({}));let i=()=>{let i=tN.get(),a=e.tasks.get(),o=[...a?.tasks??[],...a?.archived??[]].map(e=>e.id).filter(e=>!(e in i));o.length!==0&&e.client.request(`theme.taskColors`,{theme:n.prefs.theme,mode:t,taskIds:o}).then(e=>{nN===r&&tN.set({...tN.get(),...e.colors})}).catch(()=>void 0)};return i(),e.tasks.subscribe(i)},[e,t,n.loaded,n.prefs.taskColors,n.prefs.theme])}function cN(e){let t=R_(),n=v(tN);return e&&t.prefs.taskColors===`on`?n[e]:void 0}var lN={themeMode:{dark:`appearance.modeDark`,light:`appearance.modeLight`,auto:`appearance.modeAuto`},focusAccent:{primary:`general.accentPrimary`,success:`general.accentSuccess`,info:`general.accentInfo`},splitStyle:{box:`general.splitBox`,line:`general.splitLine`,rail:`general.splitRail`,rule:`general.splitRule`},railFold:{glyphs:`general.railFoldGlyphs`,initials:`general.railFoldInitials`,hairline:`general.railFoldHairline`},workingBorder:{flow:`appearance.borderFlow`,still:`appearance.borderStill`},glyphSet:{braille:`appearance.glyphsBraille`,starburst:`appearance.glyphsStarburst`,ascii:`appearance.glyphsAscii`},runningTitle:{shimmer:`appearance.titleShimmer`,still:`appearance.titleStill`}};function uN({model:e}){let{client:t}=e,n=R_(),r=oN(),i=v(RT),a=(e,n)=>void L_(t,e,n),o=(e,t,r)=>(0,V.jsx)(Wj,{label:$(t),hint:r,value:n.prefs[e],picks:z_(n,e).map(t=>({value:t,label:e===`themeMode`&&t===`auto`?z(`prefs.modeAuto`):$(lN[e]?.[String(t)]??String(t))})),onPick:t=>a(e,t)}),s=(e,t,r)=>(0,V.jsx)(Hj,{label:$(t),hint:r,checked:e===`transparent`?n.prefs.transparent:n.prefs[e]===`on`,onChange:t=>a(e,e===`transparent`?t:t?`on`:`off`)});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Bj,{children:[(0,V.jsx)(eN,{model:e,label:$(`general.theme`),themes:n.themes,value:n.prefs.theme,mode:r}),o(`themeMode`,`general.themeMode`)]}),(0,V.jsxs)(Bj,{title:z(`settings.appearance.groupColours`),children:[o(`focusAccent`,`general.focusAccent`,$(`general.focusAccentHint`)),s(`taskColors`,`general.taskColors`,z(`settings.appearance.taskColorsNote`)),s(`colorblind`,`general.colorblind`,z(`settings.appearance.colorblindNote`))]}),(0,V.jsxs)(Bj,{title:z(`settings.appearance.groupTasks`),children:[o(`workingBorder`,`general.workingBorder`,z(`settings.appearance.workingBorderNote`)),o(`runningTitle`,`general.runningTitle`),o(`glyphSet`,`general.glyphSet`),o(`railFold`,`general.railFold`,$(`general.railFoldHint`)),(0,V.jsx)(Wj,{label:z(`settings.appearance.railGroup`),value:i,picks:IT.map(e=>({value:e,label:z(e===`state`?`settings.appearance.railGroupState`:`settings.appearance.railGroupProject`)})),onPick:zT})]}),(0,V.jsxs)(Bj,{title:z(`settings.appearance.groupTerminal`),hint:z(`prefs.terminalOnly`),children:[s(`transparent`,`general.transparent`),o(`splitStyle`,`general.splitStyle`)]})]})}function dN(e,t,n){if(t===`offline`)return`offline`;if(t===`unsupported`||t===`mismatch`)return`outdated`;if(!e)return`loading`;let r=e.status;return r?r.gh?r.account?r.account===n?`same`:`different`:`signedOut`:`noGh`:e.reason===`failed`||!e.reason?`failed`:e.reason}var fN=2e3,pN=e=>e?.login?.state===`pending`||e?.login?.state===`syncing`;function mN(e){let{client:t}=e,n=CE(e),[r,i]=(0,g.useState)({}),a=n.flatMap(e=>e.state===`online`?[e.alias]:[]).join(`
|
|
115
115
|
`),o=(0,g.useMemo)(()=>a?a.split(`
|
|
116
|
-
`):[],[a]),s=(0,g.useRef)(new Set),c=(0,g.useCallback)(async e=>{let n=e===``?{}:{machine:e},r=await t.request(`github.status`,n).catch(e=>({status:null,reason:`failed`,message:K(e)}));i(t=>({...t,[e]:r}))},[t]),l=(0,g.useCallback)(()=>Promise.all([``,...o].map(c)).then(()=>{}),[c,o]);return(0,g.useEffect)(()=>{l()},[l]),(0,g.useEffect)(()=>{let e=new Set(Object.entries(r).flatMap(([e,t])=>_N(t.status)?[e]:[])),t=[...s.current].some(t=>!e.has(t));if(s.current=e,t&&l(),e.size===0)return;let n=window.setTimeout(()=>{for(let t of e)c(t)},gN);return()=>window.clearTimeout(n)},[r,c,l]),{machines:n,probes:r,refresh:l,probe:c,act:(0,g.useCallback)(async(e,n)=>{try{let r=await t.request(e,n);return r.ok||G(r.message,`error`),r}catch(e){return G(K(e),`error`),null}},[t])}}var yN={same:`markSame`,different:`markDifferent`,signedOut:`markSignedOut`,noGh:`markNoGh`,outdated:`markOutdated`,offline:`markOffline`,denied:`markDenied`,failed:`markFailed`},bN=(e,t)=>z(`settings.connectors.${e}`,t),xN={same:`text-diff-added`,signedOut:`text-diff-removed`,failed:`text-diff-removed`,denied:`text-diff-removed`,different:`text-warning`,outdated:`text-warning`,offline:`text-muted`,noGh:`text-muted`,loading:`text-muted`};function SN(e,t){return e===`loading`?bN(`loading`):bN(yN[e],{login:t?.account??``})}function CN(e){if(!e?.gh)return``;let t=e.ssh.ok?`✓ ${e.ssh.user??``}`.trim():`✗`;return bN(`detail`,{protocol:e.protocol??`—`,ssh:t})}function wN(){return(0,V.jsx)(`svg`,{className:`flex-none`,viewBox:`0 0 16 16`,width:`22`,height:`22`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{fill:`currentColor`,d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z`})})}function TN(e){navigator.clipboard.writeText(e).then(()=>G(bN(`codeCopied`)),()=>{})}function EN({login:e,onCancel:t}){return e.state===`failed`?(0,V.jsxs)(`div`,{className:tj,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:bN(`loginFailed`,{error:e.error??``})}),(0,V.jsx)(H,{className:`ml-auto`,onClick:t,children:bN(`dismiss`)})]}):e.state===`syncing`?(0,V.jsx)(`div`,{className:tj,children:(0,V.jsx)(`span`,{className:`text-muted`,children:bN(`syncing`)})}):(0,V.jsxs)(`div`,{className:tj,children:[e.code?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:`font-mono font-normal normal-nums rounded-sm border-hairline border-dashed border-line px-2 py-0.5 text-display tracking-code`,title:bN(`codeHint`),onClick:()=>TN(e.code??``),children:e.code}),(0,V.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,children:bN(`openGithub`)})]}):(0,V.jsx)(`span`,{className:`text-muted`,children:bN(`loading`)}),(0,V.jsx)(H,{className:`ml-auto`,onClick:t,children:z(`dialog.cancel`)})]})}function DN(e){let t=hN(e.probe,e.machine,e.rove),n=e.probe?.status??null,r=_N(n),i=t===`different`||t===`signedOut`,a=n?.login;return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{className:Tj,children:[(0,V.jsxs)(`div`,{className:Ej,children:[(0,V.jsx)(`span`,{className:GA,children:e.name}),(0,V.jsx)(`span`,{className:Dj(),title:[n?.authDetail,n?.ssh.detail].filter(Boolean).join(`, `)||void 0,children:CN(n)})]}),(0,V.jsx)(`span`,{className:`whitespace-nowrap text-meta ${xN[t]}`,title:e.probe?.message,children:SN(t,n)}),e.onSync&&i&&e.rove&&!r&&(0,V.jsx)(H,{variant:`action`,disabled:e.busy,onClick:e.onSync,children:bN(`useRove`)}),e.onLogin&&i&&!r&&(0,V.jsx)(H,{variant:`action`,disabled:e.busy,onClick:e.onLogin,children:bN(`loginThere`)})]}),a&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(EN,{login:a,onCancel:e.onCancel})})]})}function ON({model:e}){let{machines:t,probes:n,refresh:r,probe:i,act:a}=vN(e),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(!1),u=n[``],d=u?.status?.account??null,f=_N(u?.status),p=async(e,t)=>{s(e);try{await t()}finally{s(null)}},m=e=>p(e,async()=>{await a(`github.login`,e===``?{}:{machine:e}),await i(e)}),h=e=>p(e,async()=>{await a(`github.login`,e===``?{cancel:!0}:{machine:e,cancel:!0}),await i(e)}),_=e=>p(e,async()=>{(await a(`github.sync`,{machine:e}))?.ok&&G(bN(`synced`,{machine:e,login:d??``})),await i(e)}),v=()=>p(``,async()=>{(await a(`github.logout`,{}))?.ok&&l(!1),await r()});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Wj,{children:(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Gj,{label:(0,V.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[(0,V.jsx)(wN,{}),`GitHub`]}),hint:bN(`githubDescription`),children:d?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`span`,{className:qA,children:[`@`,d]}),(0,V.jsx)(H,{variant:`action`,disabled:o!==null,onClick:()=>l(!0),children:bN(`disconnect`)})]}):!f&&(0,V.jsx)(H,{variant:`filled`,disabled:o!==null||!u,onClick:()=>void m(``),children:bN(`connect`)})}),c&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-inset px-3 py-2.5 [&_p]:m-0 [&_p]:text-meta [&_p]:text-muted`,children:[(0,V.jsx)(`p`,{children:bN(`disconnectBody`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2.5`,children:[(0,V.jsx)(H,{onClick:()=>l(!1),children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:`danger`,disabled:o!==null,onClick:()=>void v(),children:bN(`disconnect`)})]})]})}),!d&&u?.status?.login&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(EN,{login:u.status.login,onCancel:()=>void h(``)})})]})}),d&&(0,V.jsxs)(Wj,{title:bN(`machines`),children:[(0,V.jsx)(DN,{name:bN(`thisMachine`),probe:u,machine:null,rove:d,busy:o!==null,onCancel:()=>void h(``)}),t.map(e=>(0,V.jsx)(DN,{name:e.alias,probe:n[e.alias],machine:e.state,rove:d,busy:o!==null,onSync:()=>void _(e.alias),onLogin:()=>void m(e.alias),onCancel:()=>void h(e.alias)},e.alias)),(0,V.jsx)(`div`,{className:`py-2.5`,children:(0,V.jsx)(H,{onClick:()=>void r(),children:bN(`refresh`)})})]})]})}function kN({model:e}){return(0,V.jsx)(ON,{model:e})}var AN=[{key:`remoteProjects`,label:`dev.remote`,hint:`dev.remoteHint`},{key:`autoStatus`,label:`dev.autoStatus`,hint:`dev.autoStatusHint`},{key:`dispatcher`,label:`dev.dispatcher`,hint:`dev.dispatcherHint`}];function jN({client:e}){let{prefs:t}=R_(),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(!1),o=async()=>{if(n){a(!0);try{if(n===`reset`){await e.request(`dev.reset`),localStorage.removeItem(`rove.prefs`),window.location.reload();return}await e.request(`daemon.restart`),G($(`restart.done`)),r(null)}catch(e){G(K(e),`error`)}finally{a(!1)}}},s=(e,t,a,s,c)=>(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Gj,{label:t,hint:a,children:(0,V.jsx)(H,{variant:`action`,onClick:()=>r(e),children:s})}),n===e&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-inset px-3 py-2.5 [&_p]:m-0 [&_p]:text-meta [&_p]:text-muted`,children:[(0,V.jsx)(`strong`,{children:$(`${e}.title`)}),(0,V.jsx)(`p`,{children:z(e===`reset`?`prefs.resetBody`:`prefs.restartBody`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2.5`,children:[(0,V.jsx)(H,{onClick:()=>r(null),children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:c?`danger`:`filled`,disabled:i,onClick:()=>void o(),children:s})]})]})})]});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Wj,{title:$(`dev.experimental`),children:AN.map(n=>(0,V.jsx)(Kj,{label:$(n.label),hint:$(n.hint),checked:t[n.key],onChange:t=>void L_(e,n.key,t)},n.key))}),(0,V.jsxs)(Wj,{hint:$(`dev.doctorHint`),children:[s(`restart`,$(`dev.restart`),z(`prefs.restartHint`),z(`prefs.restartButton`),!1),s(`reset`,$(`dev.reset`),z(`prefs.resetHint`),z(`prefs.resetButton`),!0)]})]})}function MN(e){return e.binaryFound===void 0?{key:`settings.engines.status.checking`,tone:`unknown`}:e.binaryFound===null?{key:`settings.engines.status.unknown`,tone:`unknown`}:e.binaryFound?e.configIssue?{key:`settings.engines.status.integrationBlocked`,tone:`error`}:e.login===`no`?{key:`settings.engines.status.signIn`,tone:`attention`}:e.hooks===`outdated`?{key:`settings.engines.status.integrationOutdated`,tone:`attention`}:e.hooks===`not-installed`?{key:`settings.engines.status.integrationMissing`,tone:`attention`}:{key:`settings.engines.status.ready`,tone:`ready`}:e.commandChosen?{key:`settings.engines.status.notOnPath`,tone:`attention`}:{key:`settings.engines.status.notInstalled`,tone:`absent`}}var NN=_([]),PN=3e4;function FN(e){return e.request(`skill.missing`).then(e=>NN.set(e.engines),()=>{})}function IN(e){(0,g.useEffect)(()=>{let t=e.onOpen(()=>void FN(e)),n=window.setInterval(()=>void FN(e),PN);return()=>{t(),window.clearInterval(n)}},[e])}function LN(e){return e.request(`skill.install`).then(e=>{e.error&&G($(`engines.skill.failed`,{reason:e.error}),`error`)}).catch(e=>G(K(e),`error`)).then(()=>FN(e))}function RN(e){return MN({binaryFound:e.binaryFound,login:e.login,hooks:e.hooks,configIssue:e.configIssue,commandChosen:e.custom||e.customized})}var zN={ready:`ready`,attention:`attention`,error:`error`,absent:`absent`,unknown:`absent`};function BN({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`engines.settings`)?.engines??null),[r,i]=(0,g.useState)(null),a=(0,g.useCallback)(()=>Ws(e,`engines.settings`).then(e=>n(e.engines),e=>G(K(e),`error`)),[e]);(0,g.useEffect)(()=>{a()},[a]);let o=(t,n={})=>void e.request(t,n).then(a).catch(e=>G(K(e),`error`));return t?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`p`,{className:zA,children:$(`engines.hint`)}),(0,V.jsxs)(`div`,{className:rj,children:[(0,V.jsxs)(`div`,{className:ij,"aria-hidden":`true`,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{children:$(`engines.defaultMark`)}),(0,V.jsx)(`span`,{children:$(`engines.available`)})]}),t.map(e=>(0,V.jsx)(VN,{engine:e,open:r===e.id,onToggleOpen:()=>i(r===e.id?null:e.id),run:o},e.id))]})]}),(0,V.jsx)(WN,{engines:t,run:o}),(0,V.jsx)(GN,{engines:t,client:e,reload:a})]}):(0,V.jsx)(`p`,{className:JA,children:z(`preview.loading`)})}function VN(e){let{engine:t,run:n}=e,r=(0,g.useId)(),i=RN(t);return(0,V.jsxs)(`div`,{className:aj,children:[(0,V.jsxs)(`div`,{className:oj,children:[(0,V.jsxs)(`button`,{type:`button`,className:sj,"aria-expanded":e.open,"aria-controls":r,onClick:e.onToggleOpen,children:[(0,V.jsx)(Ia,{right:!e.open,className:cj(e.open)}),(0,V.jsxs)(`span`,{className:lj,children:[(0,V.jsxs)(`span`,{className:uj(!t.enabled),children:[t.name,t.renamedFrom?(0,V.jsx)(`span`,{className:dj,children:t.renamedFrom}):null,t.custom&&!t.renamedFrom?(0,V.jsx)(`span`,{className:dj,children:$(`engines.customTag`)}):null]}),(0,V.jsxs)(`span`,{className:pj(zN[i.tone]),children:[(0,V.jsx)(`span`,{className:mj(zN[i.tone]),"aria-hidden":`true`}),$(i.key.slice(9))]})]})]}),(0,V.jsx)(`div`,{className:hj,children:t.isDefault?(0,V.jsx)(`span`,{className:gj,children:$(`engines.defaultMark`)}):t.canBeDefault?(0,V.jsx)(`button`,{type:`button`,className:_j,"aria-label":z(`settings.engines.default`,{name:t.name}),onClick:()=>n(`engine.setDefault`,{id:t.id}),children:$(`engines.makeDefault`)}):null}),(0,V.jsx)(Uj,{on:t.enabled,"aria-label":z(`settings.engines.enabled`,{name:t.name}),onClick:()=>n(`engine.setEnabled`,{id:t.id,enabled:!t.enabled})})]}),e.open?(0,V.jsx)(UN,{id:r,engine:t,run:n}):null]})}function HN(e){if(e.configIssue)return $(`engines.detail.hooksBlockedHere`,{reason:e.configIssue});switch(e.hooks){case`installed`:return $(`engines.detail.hooksInstalled`);case`outdated`:return $(`engines.detail.hooksOutdated`);case`not-installed`:return e.binaryFound===!1?$(`engines.detail.hooksAwaitEngine`):$(`engines.detail.hooksMissing`);default:return $(`engines.detail.hooksUnsupported`)}}function UN(e){let{engine:t,run:n}=e,[r,i]=(0,g.useState)(null),a=t.binaryFound===!0?$(`engines.detail.programFound`,{binary:t.binary,path:t.binaryPath??t.binary}):t.binaryFound===!1?$(`engines.detail.programMissing`,{binary:t.binary}):$(`engines.detail.programUnknown`,{binary:t.binary}),o=t.login===`yes`?$(`engines.detail.signedIn`):t.login===`no`?$(`engines.detail.signedOut`):$(`engines.detail.signInUnknown`),s=[HN(t),$(t.markers?`engines.detail.markersYes`:`engines.detail.markersNo`),$(t.screen?`engines.detail.screenYes`:t.hooks===`installed`?`engines.detail.screenNotNeeded`:`engines.detail.screenNo`)];return(0,V.jsxs)(`div`,{id:e.id,className:vj,children:[(0,V.jsxs)(`dl`,{className:yj,children:[(0,V.jsx)(`dt`,{className:bj,children:$(`engines.detail.program`)}),(0,V.jsx)(`dd`,{className:xj(t.binaryFound===!1),children:a}),(0,V.jsx)(`dt`,{className:bj,children:$(`engines.detail.signIn`)}),(0,V.jsx)(`dd`,{className:xj(t.login===`no`),children:o}),(0,V.jsx)(`dt`,{className:bj,children:$(`engines.detail.reporting`)}),(0,V.jsx)(`dd`,{className:xj(!1),children:s.map(e=>(0,V.jsx)(`span`,{className:`block`,children:e},e))}),t.skill===`unsupported`?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:bj,children:$(`engines.detail.skill`)}),(0,V.jsx)(`dd`,{className:xj(t.skill!==`installed`),children:$(t.skill===`installed`?`engines.detail.skillInstalledHere`:t.skill===`outdated`?`engines.detail.skillOutdated`:`engines.detail.skillMissing`)})]}),t.custom?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:bj,children:$(`engines.detail.adapter`)}),(0,V.jsx)(`dd`,{className:xj(!1),children:t.protocol?$(`engines.detail.adapterDeclared`,{protocol:t.protocol}):$(`engines.detail.adapterGeneric`)})]}):null]}),r===null?(0,V.jsxs)(`div`,{className:Sj,children:[(0,V.jsx)(H,{variant:`action`,onClick:()=>i(t.name),children:z(`settings.engines.rename`)}),t.custom||t.customized?(0,V.jsx)(H,{variant:`action`,onClick:()=>n(`engine.reset`,{id:t.id}),children:t.custom?z(`settings.engines.remove`):z(`settings.engines.reset`)}):null]}):(0,V.jsxs)(`form`,{className:Sj,onSubmit:e=>{e.preventDefault(),n(`engine.rename`,{id:t.id,name:r}),i(null)},children:[(0,V.jsx)(`input`,{className:`${tn} w-full ${Cj}`,autoFocus:!0,value:r,"aria-label":z(`settings.engines.rename`),placeholder:z(`settings.engines.namePlaceholder`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),i(null))}}),(0,V.jsx)(H,{variant:`filled`,type:`submit`,children:z(`settings.engines.save`)}),(0,V.jsx)(H,{variant:`action`,onClick:()=>i(null),children:z(`settings.engines.cancel`)})]})]})}function WN({engines:e,run:t}){let n=e.filter(e=>e.hooks!==`unsupported`),r=n.filter(e=>e.binaryFound!==!1),i=r.filter(e=>e.hooks===`installed`).length,a=r.length-i,o=n.filter(e=>e.hooks!==`not-installed`).length;return n.length===0?null:(0,V.jsx)(Wj,{title:$(`engines.integrations.title`),hint:$(`engines.integrations.hint`),children:(0,V.jsx)(Gj,{label:$(`engines.integrations.summary`,{installed:i,total:r.length}),children:(0,V.jsxs)(`div`,{className:ej,children:[a>0?(0,V.jsx)(H,{variant:`filled`,onClick:()=>t(`engines.hooks.install`),children:$(`engines.integrations.install`,{count:a})}):(0,V.jsx)(`span`,{className:wj,children:$(`engines.integrations.upToDate`)}),o>0?(0,V.jsx)(H,{variant:`action`,onClick:()=>t(`engines.hooks.uninstall`),children:$(`engines.integrations.remove`,{count:o})}):null]})})})}function GN(e){let t=e.engines.filter(e=>e.skill!==`unsupported`),n=t.filter(e=>e.skill===`installed`).length,r=t.length-n;return(0,V.jsx)(Wj,{title:$(`engines.skill.title`),hint:$(`engines.skill.hint`),children:(0,V.jsx)(Gj,{label:t.length>0?$(`engines.integrations.summary`,{installed:n,total:t.length}):$(`engines.skill.noEngines`),children:r>0?(0,V.jsx)(H,{variant:`filled`,onClick:()=>void LN(e.client).then(e.reload),children:$(`engines.skill.install`,{count:r})}):t.length>0?(0,V.jsx)(`span`,{className:wj,children:$(`engines.integrations.upToDate`)}):null})})}function KN({client:e}){let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(!1);return(0,V.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:a=>{a.preventDefault(),!(!t.trim()||!r.trim())&&(o(!0),e.request(`feedback.send`,{title:t.trim(),body:r}).then(e=>{G(z(`settings.feedback.sent`,{url:e.discussion?.url??``})),n(``),i(``)}).catch(e=>G(K(e),`error`)).finally(()=>o(!1)))},children:[(0,V.jsx)(`p`,{className:`m-0 ${KA}`,children:z(`settings.feedback.hint`)}),(0,V.jsxs)(`label`,{className:ZA,children:[(0,V.jsx)(`span`,{className:QA,children:z(`settings.feedback.titleLabel`)}),(0,V.jsx)(`input`,{className:`${YA} w-full`,value:t,onChange:e=>n(e.target.value)})]}),(0,V.jsxs)(`label`,{className:ZA,children:[(0,V.jsx)(`span`,{className:QA,children:z(`settings.feedback.body`)}),(0,V.jsx)(`textarea`,{className:`${YA} ${$A} w-full`,rows:6,value:r,onChange:e=>i(e.target.value)})]}),(0,V.jsx)(`div`,{className:ej,children:(0,V.jsx)(H,{variant:`filled`,type:`submit`,disabled:a||!t.trim()||!r.trim(),children:z(`settings.feedback.send`)})})]})}var qN=[{value:`en`,label:`English`},{value:`zh`,label:`中文`}],JN={default:`general.worktreeKindDefault`,nextToProject:`general.worktreeKindNext`,custom:`general.worktreeKindCustom`};function YN({model:e}){let{client:t}=e,n=R_(),{prefs:r,info:i}=n,a=(e,n)=>void L_(t,e,n),o=[`default`,`nextToProject`];(i.worktreeCustomPath||r.worktreeBase===`custom`)&&o.push(`custom`);let s=o.map(e=>({value:e,label:$(JN[e])}));return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Wj,{title:z(`settings.general.groupInterface`),children:[(0,V.jsx)(Jj,{label:$(`general.language`),hint:z(`prefs.languageHint`),value:r.locale,picks:qN,onPick:e=>a(`locale`,e)}),(0,V.jsx)(Kj,{label:$(`general.keyHintsShow`),hint:$(`general.keyHintsHint`),checked:r.keyHints,onChange:e=>a(`keyHints`,e)}),(0,V.jsx)(Kj,{label:$(`general.zenDefaultOn`),hint:z(`prefs.zenHint`),checked:r.zen,onChange:e=>a(`zen`,e)}),(0,V.jsx)(Jj,{label:z(`settings.general.tabStrip`),value:r.tabStrip,picks:z_(n,`tabStrip`).map(e=>({value:e,label:$(`general.tabStripMode.${e}`)})),onPick:e=>a(`tabStrip`,e)})]}),(0,V.jsxs)(Wj,{title:z(`settings.general.groupFiles`),children:[(0,V.jsx)(Jj,{label:$(`general.editor`),hint:z(`settings.general.editorNote`),value:r.editorKind,picks:z_(n,`editorKind`).map(e=>({value:e,label:e})),onPick:e=>a(`editorKind`,e)}),(0,V.jsx)(Jj,{label:$(`general.worktree`),hint:$(`general.worktreeHint`),value:r.worktreeBase,picks:s,onPick:e=>a(`worktreeBase`,e)})]}),(0,V.jsx)(Wj,{title:z(`settings.general.groupTerminal`),hint:$(`general.terminalHint`),children:(0,V.jsx)(XN,{client:t})})]})}function XN({client:e}){let t=R_(),n=t.options.scrollbackRows,r=n&&`min`in n?n:{min:100,max:1e5},[i,a]=(0,g.useState)(String(t.prefs.scrollbackRows));return(0,g.useEffect)(()=>a(String(t.prefs.scrollbackRows)),[t.prefs.scrollbackRows]),(0,V.jsx)(Gj,{label:z(`settings.general.scrollback`),hint:$(`general.scrollbackRowHint`),children:(0,V.jsx)(`input`,{className:XA,inputMode:`numeric`,value:i,"aria-label":$(`general.scrollbackTitle`),onChange:e=>a(e.target.value),onBlur:()=>{let n=Number(i);if(i.trim()===``||!Number.isInteger(n)){a(String(t.prefs.scrollbackRows));return}let o=Math.min(r.max,Math.max(r.min,n));o===t.prefs.scrollbackRows?a(String(o)):L_(e,`scrollbackRows`,o)},onKeyDown:e=>e.key===`Enter`&&e.currentTarget.blur()})})}[...Array.from({length:12},(e,t)=>`f${t+1}`)];var ZN={"diff.review.cursor":`diff-review cursor is a fixed raw binding (j/k), not keymap-driven`,"diff.review.range":`diff-review range anchor is a fixed raw binding (v), not keymap-driven`,"diff.review.note":`diff-review note is a fixed raw binding (c), not keymap-driven`,"diff.review.send":`diff-review send is a fixed raw binding (s), not keymap-driven`,"diff.review.drop":`diff-review drop-note is a fixed raw binding (x), not keymap-driven`,"diff.review.reload":`preview reload is a fixed raw binding (r), not keymap-driven`};function QN(e,t){let n=`alternating [${e}, ${t}] pairs`;return{layout:n,validateCount:e=>e>=2&&e%2==0?null:`needs ${n} (an even number of chords — got ${e})`}}QN(`top (double-tap)`,`bottom`),QN(`down`,`up`),QN(`down`,`up`),QN(`down`,`up`),QN(`collapse`,`expand`),QN(`previous tab`,`next tab`);async function $N(e){try{(await e.request(`keybindings.createFile`)).created||G(z(`keys.exists`),`error`),await $r(e)}catch(e){G(K(e),`error`)}}function eP({model:e}){let{client:t}=e,{prefs:n}=R_(),r=v(Xr),[i,a]=(0,g.useState)(!1);(0,g.useEffect)(()=>void $r(t),[t]);let o=r.prefix.key??$(`keybindings.prefixDisabled`),s=Object.keys(ZN).sort();return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Wj,{children:[(0,V.jsx)(Jj,{label:$(`keybindings.tapPresentation`),hint:$(`keybindings.tapPresentationHint`),value:n.prefixTap,picks:[{value:`local`,label:$(`keybindings.tapPresentationLocal`)},{value:`guide`,label:$(`keybindings.tapPresentationGuide`)}],onPick:e=>void L_(t,`prefixTap`,e)}),(0,V.jsx)(Gj,{label:$(`keybindings.prefixTitle`,{prefix:o}),hint:$(`keybindings.prefixHint`,{prefix:o,timeout:r.prefix.timeoutMs})})]}),(0,V.jsxs)(Wj,{title:$(`keybindings.configFile`),hint:`${$(`keybindings.hint`)} ${z(`prefs.keysYaml`)}`,children:[(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:`font-mono break-all`,children:r.path+(r.exists?``:$(`keybindings.notCreated`))})}),!r.exists&&(0,V.jsx)(Gj,{label:z(`keys.createFile`),hint:$(`keybindings.createHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>void $N(t),children:z(`keys.createFile`)})}),(0,V.jsx)(Gj,{label:z(`keys.agent`),hint:z(i?`keys.agentFailed`:`keys.agentHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>{a(!1),$M(e,z(`keys.agentPrompt`,{path:r.path})).catch(()=>a(!0))},children:z(`keys.agent`)})})]}),r.exists&&(0,V.jsxs)(Wj,{title:$(`keybindings.overridesApplied`),children:[r.applied.length===0&&(0,V.jsx)(Gj,{label:$(`keybindings.none`)}),r.applied.map(e=>(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:`font-mono`,children:e.id}),hint:`${e.keys.length>0?e.keys.join(` / `):$(`keybindings.unbound`)} (${$(`keybindings.defaultKeys`,{keys:e.defaultKeys.join(` / `)})})`},e.id))]}),r.warnings.length>0&&(0,V.jsx)(Wj,{title:$(`keybindings.warnings`),children:r.warnings.map(e=>(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:`text-warning`,children:e})},e))}),r.plugins.length>0&&(0,V.jsx)(Wj,{title:z(`keys.pluginChords`),children:r.plugins.map(e=>(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:`font-mono`,children:e.chord}),hint:(0,V.jsx)(`span`,{className:`font-mono`,children:`${e.kind}:${e.target}`})},e.chord))}),(0,V.jsx)(`p`,{className:zA,children:$(`keybindings.fixed`,{ids:s.join(`, `)})})]})}var tP=`/assets/pulse-3XJkP4CJ.wav`;function nP(e,t){return e===`error`||t}function rP(e,t){return t||e.kind!==`done`||e.turnEnd!==!0}function iP(e,t){return t&&e.silent!==!0}function aP(e){return e===`permission_needed`?`needs_input`:e===`error`||e===`rate_limited`||e===`dead`?`error`:e===`turn_complete`?`done`:null}function oP(e,t,n,r){if(e===null)return[];let i=[];for(let[a,o]of t){if(a===n||e.get(a)===o)continue;let t=r(o);t&&i.push({key:a,kind:t})}return i}function sP(){return window.isSecureContext&&`serviceWorker`in navigator&&`PushManager`in window&&`Notification`in window}var cP=()=>navigator.serviceWorker.register(`sw.js`);async function lP(e){if(!sP())return`unsupported`;if(Notification.permission===`denied`)return`blocked`;let t=await(await navigator.serviceWorker.getRegistration())?.pushManager.getSubscription();if(!t)return`off`;let{subscribed:n}=await e.request(`push.status`,{endpoint:t.endpoint});return n?`on`:`off`}async function uP(e){if(!sP())return`unsupported`;if(await Notification.requestPermission()!==`granted`)return`blocked`;let t=await cP();await navigator.serviceWorker.ready;let{publicKey:n}=await e.request(`push.key`),r=await t.pushManager.getSubscription();return r?.options.applicationServerKey&&hP(r.options.applicationServerKey)!==n&&(await r.unsubscribe(),r=null),r??=await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:mP(n)}),await e.request(`push.subscribe`,{subscription:r.toJSON()}),`on`}async function dP(e){let t=await(await navigator.serviceWorker.getRegistration())?.pushManager.getSubscription();return t&&(await e.request(`push.unsubscribe`,{endpoint:t.endpoint}),await t.unsubscribe()),`off`}async function fP(e,t,n,r){let i={body:r,tag:`task:${e}:${t}`,icon:`icon-192.png`,data:{taskId:e}},a=`serviceWorker`in navigator?await navigator.serviceWorker.getRegistration():void 0;a?await a.showNotification(`Rove — ${n}`,i):new Notification(`Rove — ${n}`,i)}function pP(e){let t=new URLSearchParams(window.location.search),n=t.get(`task`);if(n){t.delete(`task`);let r=t.toString();history.replaceState(null,``,`${window.location.pathname}${r?`?${r}`:``}${window.location.hash}`),e.selectWhenListed(n)}if(!(`serviceWorker`in navigator))return()=>{};let r=t=>{let n=t.data;n?.type===`rove.openTask`&&typeof n.taskId==`string`&&n.taskId&&e.selectWhenListed(n.taskId)};return navigator.serviceWorker.addEventListener(`message`,r),()=>navigator.serviceWorker.removeEventListener(`message`,r)}function mP(e){let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.charCodeAt(0))}function hP(e){return btoa(String.fromCharCode(...new Uint8Array(e))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var gP={done:`✓`,needs_input:`?`,error:`✕`};function _P(e){let t=new Audio(tP);t.volume=Math.min(1,Math.max(0,e)),t.play().catch(()=>void 0)}function vP(e,t,n){!document.hidden||typeof Notification>`u`||Notification.permission!==`granted`||fP(e,t,n,gP[t]).catch(()=>void 0)}function yP(){typeof Notification<`u`&&Notification.permission==="default"&&Notification.requestPermission()}function bP(e){let t=new Map;for(let n of e.tasks)n.activity&&t.set(n.id,n.activity.state);return t}function xP(e){let t=(0,g.useRef)(null);(0,g.useEffect)(()=>{let n=()=>{let n=e.tasks.get();if(!n)return;let r=bP(n),i=oP(t.current,r,null,aP);t.current=r;let{prefs:a}=N_.get();if(!a.crossTask)return;let o=e.selection.get().taskId,s=new Map(n.tasks.map(e=>[e.id,e.label]));for(let{key:e,kind:t}of i){if(e===o||!rP({kind:t,turnEnd:!0},a.finishedAlerts))continue;let n=s.get(e)??e;nP(t,a.toast)&&G(`${gP[t]} ${n}`,t===`error`?`error`:`info`),iP({},a.sound)&&(_P(a.soundVolume),vP(e,t,n))}};return n(),e.tasks.subscribe(n)},[e])}function SP({client:e}){let[t,n]=(0,g.useState)(null),[r,i]=(0,g.useState)(null);(0,g.useEffect)(()=>{lP(e).then(n,()=>n(`off`))},[e]);let a=t=>{i(null),(t?uP(e):dP(e)).then(n,e=>i(e instanceof Error?e.message:String(e)))},o=r?z(`prefs.pushFailed`,{error:r}):z(t===`unsupported`?`prefs.pushUnsupported`:t===`blocked`?`prefs.pushBlocked`:`prefs.pushHint`);return(0,V.jsx)(Kj,{label:z(`prefs.push`),hint:o,checked:t===`on`,disabled:t===null||t===`unsupported`||t===`blocked`,onChange:a})}function CP({model:e}){let{client:t}=e,n=R_(),{prefs:r}=n,i=(e,n)=>void L_(t,e,n);return(0,V.jsxs)(Wj,{children:[(0,V.jsx)(Kj,{label:$(`general.toast`),hint:z(`settings.notifications.toastNote`),checked:r.toast,onChange:e=>i(`toast`,e)}),(0,V.jsx)(Kj,{label:$(`general.sound`),hint:z(`prefs.soundHint`),checked:r.sound,onChange:e=>{e&&yP(),i(`sound`,e)}}),(0,V.jsx)(Jj,{label:z(`settings.notifications.volume`),hint:z(`prefs.soundVolumeHint`),value:r.soundVolume,picks:z_(n,`soundVolume`).map(e=>({value:e,label:`${Math.round(e*100)}%`})),onPick:e=>{N_.get().prefs.sound&&_P(e),i(`soundVolume`,e)}}),(0,V.jsx)(Kj,{label:$(`general.crossTask`),hint:$(`general.crossTaskHint`),checked:r.crossTask,onChange:e=>i(`crossTask`,e)}),(0,V.jsx)(Kj,{label:$(`general.finishedAlerts`),hint:$(`general.finishedAlertsHint`),checked:r.finishedAlerts,onChange:e=>i(`finishedAlerts`,e)}),(0,V.jsx)(SP,{client:t})]})}var wP={kanban:`kanban`,issues:`issues`};function TP({model:e}){let t=v(e.installedMods),[n,r]=(0,g.useState)(()=>Hs(e,`builtinMods.list`)?.mods??null);if((0,g.useEffect)(()=>{Ws(e,`builtinMods.list`).then(e=>r(e.mods),()=>r([])),e.refreshMods()},[e]),!n||n.length===0)return null;let i=n=>{let r=!t.has(n.id);e.client.request(`builtinMod.setInstalled`,{id:n.id,installed:r}).then(()=>(!r&&un.get()===wP[n.id]&&un.set(null),e.refreshMods())).catch(e=>G(K(e),`error`))};return(0,V.jsx)(Wj,{title:z(`settings.plugins.builtIn`),hint:z(`settings.plugins.builtInHint`),children:n.map(e=>(0,V.jsx)(Gj,{label:e.name,hint:e.description,inline:!0,children:(0,V.jsx)(Uj,{on:t.has(e.id),"aria-label":z(`settings.plugins.turnOn`,{name:e.name}),onClick:()=>i(e)})},e.id))})}function EP({model:e}){let{client:t}=e,[n,r]=(0,g.useState)(()=>Hs(t,`plugins.list`)?.plugins??null),i=(0,g.useCallback)(()=>Ws(t,`plugins.list`).then(e=>r(e.plugins),e=>G(K(e),`error`)),[t]);return(0,g.useEffect)(()=>{i()},[i]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(TP,{model:e}),(0,V.jsx)(Wj,{title:z(`settings.plugins.registered`),children:n?n.length===0?(0,V.jsx)(`p`,{className:JA,children:z(`settings.plugins.empty`)}):n.map(e=>(0,V.jsx)(Gj,{label:e.id,hint:[e.version,e.linked?z(`settings.plugins.linked`):null,e.platformOk===!1?z(`settings.plugins.unsupportedPlatform`):null].filter(Boolean).join(`, `),inline:!0,children:(0,V.jsx)(Uj,{on:e.enabled,"aria-label":e.id,onClick:()=>void t.request(`plugin.setEnabled`,{id:e.id,enabled:!e.enabled}).then(i).catch(e=>G(K(e),`error`))})},e.id)):(0,V.jsx)(`p`,{className:JA,children:z(`preview.loading`)})})]})}function DP(e){let[t,n]=(0,g.useState)(e.tier.engine),[r,i]=(0,g.useState)(e.tier.model??``),[a,o]=(0,g.useState)(e.tier.effort??``),s=e.engines.find(e=>e.id===t);return(0,V.jsxs)(`form`,{className:Aj,onSubmit:n=>{n.preventDefault(),e.onSave(t,s?.takesModel?r.trim():``,a)},onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),e.onCancel())},children:[(0,V.jsx)(DA,{label:$(`sections.engines`),value:t,picks:e.engines.map(e=>({value:e.id,label:e.name})),onPick:t=>{let r=e.engines.find(e=>e.id===t);n(t),r&&!r.effortLevels.includes(a)&&o(``),r&&!r.takesModel&&i(``)}}),s&&s.effortLevels.length>0&&(0,V.jsx)(DA,{label:z(`prefs.tierEffort`),value:a,picks:[``,...s.effortLevels].map(e=>({value:e,label:e||$(`autoRouting.engineDefault`)})),onPick:o}),s?.takesModel&&(0,V.jsx)(`input`,{className:`rounded-sm border-hairline border-line bg-paper px-2.5 py-1.5 font-sans text-body text-ink focus-visible:border-line-active focus-visible:outline-none`,value:r,spellCheck:!1,placeholder:$(`autoRouting.engineDefault`),"aria-label":z(`prefs.tierModel`),onChange:e=>i(e.target.value)}),(0,V.jsxs)(`div`,{className:ej,children:[(0,V.jsx)(H,{onClick:e.onCancel,children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:`filled`,type:`submit`,children:$(`action.save`)})]})]})}function OP({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`autoRouting.get`)??null),[r,i]=(0,g.useState)(null),a=(0,g.useCallback)(()=>Ws(e,`autoRouting.get`).then(n,e=>G(K(e),`error`)),[e]);(0,g.useEffect)(()=>{a()},[a]);let o=(t,n)=>e.request(t,n).then(a).catch(e=>G(K(e),`error`));if(!t)return(0,V.jsx)(`p`,{className:JA,children:z(`preview.loading`)});let s=t.classifier,c=[{value:`off`,label:$(`autoRouting.classifierOff`)},{value:`jev`,label:`jev`},...s.canCustom||s.mode===`custom`?[{value:`custom`,label:$(`autoRouting.classifierCustomLabel`)}]:[]],l=s.mode===`off`?$(`autoRouting.classifierOffHint`):s.mode===`jev`?$(`autoRouting.classifierJevHint`):$(`autoRouting.classifierCustomHint`),u=s.keySource===`env`?$(`autoRouting.keyPresentEnv`,{env:s.keyEnv??``}):s.keySource===`file`?$(`autoRouting.keySaved`):s.keyConfigured?$(`autoRouting.keyMissing`):$(`autoRouting.keyCustomUnused`);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Wj,{hint:$(`autoRouting.hint`),children:[!t.configured&&(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:`text-warning`,children:$(`autoRouting.unconfigured`)})}),t.tiers.map(e=>(0,V.jsxs)(`div`,{className:Oj,children:[(0,V.jsxs)(`div`,{className:kj,children:[(0,V.jsx)(`span`,{className:GA,children:EA(`tier.${e.tier}`)}),(0,V.jsx)(`span`,{className:`${KA} min-w-0 truncate`,children:[e.engineName,e.model??$(`autoRouting.engineDefault`),e.effort??$(`autoRouting.engineDefault`)].join(` · `)}),(0,V.jsx)(H,{className:`ml-auto`,onClick:()=>i(r===e.tier?null:e.tier),children:z(`prefs.tierEdit`)})]}),(0,V.jsx)(`span`,{className:KA,children:EA(`tierDesc.${e.tier}`)}),(0,V.jsx)(`span`,{className:`text-meta ${e.block?`text-warning`:`text-success`}`,children:e.block?$(`autoRouting.unavailable`,{reason:e.block}):$(`autoRouting.ready`)}),r===e.tier&&(0,V.jsx)(DP,{tier:e,engines:t.engines,onCancel:()=>i(null),onSave:(t,n,r)=>{i(null),o(`autoRouting.setTier`,{tier:e.tier,engine:t,model:n,effort:r})}})]},e.tier))]}),(0,V.jsxs)(Wj,{title:$(`autoRouting.classifierTitle`),hint:$(`autoRouting.classifierHint`),children:[(0,V.jsx)(Gj,{label:(0,V.jsx)(`span`,{className:s.mode===`off`?`text-muted`:`text-warning`,children:$(`autoRouting.classifierDataFlow`)})}),(0,V.jsx)(Jj,{label:$(`autoRouting.classifierLabel`),hint:l.replace(/^[—\s]+/,``),value:s.mode,picks:c,onPick:e=>void o(`autoRouting.setClassifier`,{mode:e})})]}),(0,V.jsxs)(Wj,{title:z(`prefs.classifierConnection`),hint:z(`prefs.editInTui`),children:[(0,V.jsx)(Yj,{label:$(`autoRouting.endpointLabel`),value:s.endpointHost||z(`prefs.unset`)}),(0,V.jsx)(Yj,{label:$(`autoRouting.thresholdLabel`),value:s.threshold.toFixed(2)}),(0,V.jsx)(Gj,{label:$(`autoRouting.keyLabel`),hint:u})]})]})}var kP=[{id:`preferences`,sections:[`general`,`appearance`,`notifications`,`snippets`,`keys`]},{id:`agents`,sections:[`engines`,`autoRouting`,`connectors`,`plugins`]},{id:`more`,sections:[`about`,`feedback`,`dev`]}],AP=e=>({section:e??`general`,drilled:e!==void 0});function jP(e,t){return t&&e.drilled?`list`:`close`}var MP=e=>e.split(`
|
|
117
|
-
`,1)[0]??``;function
|
|
116
|
+
`):[],[a]),s=(0,g.useRef)(new Set),c=(0,g.useCallback)(async e=>{let n=e===``?{}:{machine:e},r=await t.request(`github.status`,n).catch(e=>({status:null,reason:`failed`,message:K(e)}));i(t=>({...t,[e]:r}))},[t]),l=(0,g.useCallback)(()=>Promise.all([``,...o].map(c)).then(()=>{}),[c,o]);return(0,g.useEffect)(()=>{l()},[l]),(0,g.useEffect)(()=>{let e=new Set(Object.entries(r).flatMap(([e,t])=>pN(t.status)?[e]:[])),t=[...s.current].some(t=>!e.has(t));if(s.current=e,t&&l(),e.size===0)return;let n=window.setTimeout(()=>{for(let t of e)c(t)},fN);return()=>window.clearTimeout(n)},[r,c,l]),{machines:n,probes:r,refresh:l,probe:c,act:(0,g.useCallback)(async(e,n)=>{try{let r=await t.request(e,n);return r.ok||G(r.message,`error`),r}catch(e){return G(K(e),`error`),null}},[t])}}var hN={same:`markSame`,different:`markDifferent`,signedOut:`markSignedOut`,noGh:`markNoGh`,outdated:`markOutdated`,offline:`markOffline`,denied:`markDenied`,failed:`markFailed`},gN=(e,t)=>z(`settings.connectors.${e}`,t),_N={same:`text-diff-added`,signedOut:`text-diff-removed`,failed:`text-diff-removed`,denied:`text-diff-removed`,different:`text-warning`,outdated:`text-warning`,offline:`text-muted`,noGh:`text-muted`,loading:`text-muted`};function vN(e,t){return e===`loading`?gN(`loading`):gN(hN[e],{login:t?.account??``})}function yN(e){if(!e?.gh)return``;let t=e.ssh.ok?`✓ ${e.ssh.user??``}`.trim():`✗`;return gN(`detail`,{protocol:e.protocol??`—`,ssh:t})}function bN(){return(0,V.jsx)(`svg`,{className:`flex-none`,viewBox:`0 0 16 16`,width:`22`,height:`22`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{fill:`currentColor`,d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z`})})}function xN(e){navigator.clipboard.writeText(e).then(()=>G(gN(`codeCopied`)),()=>{})}function SN({login:e,onCancel:t}){return e.state===`failed`?(0,V.jsxs)(`div`,{className:ZA,children:[(0,V.jsx)(`span`,{className:`text-muted`,children:gN(`loginFailed`,{error:e.error??``})}),(0,V.jsx)(H,{className:`ml-auto`,onClick:t,children:gN(`dismiss`)})]}):e.state===`syncing`?(0,V.jsx)(`div`,{className:ZA,children:(0,V.jsx)(`span`,{className:`text-muted`,children:gN(`syncing`)})}):(0,V.jsxs)(`div`,{className:ZA,children:[e.code?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:`font-mono font-normal normal-nums rounded-sm border-hairline border-dashed border-line px-2 py-0.5 text-display tracking-code`,title:gN(`codeHint`),onClick:()=>xN(e.code??``),children:e.code}),(0,V.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,children:gN(`openGithub`)})]}):(0,V.jsx)(`span`,{className:`text-muted`,children:gN(`loading`)}),(0,V.jsx)(H,{className:`ml-auto`,onClick:t,children:z(`dialog.cancel`)})]})}function CN(e){let t=dN(e.probe,e.machine,e.rove),n=e.probe?.status??null,r=pN(n),i=t===`different`||t===`signedOut`,a=n?.login;return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{className:xj,children:[(0,V.jsxs)(`div`,{className:Sj,children:[(0,V.jsx)(`span`,{className:VA,children:e.name}),(0,V.jsx)(`span`,{className:Cj(),title:[n?.authDetail,n?.ssh.detail].filter(Boolean).join(`, `)||void 0,children:yN(n)})]}),(0,V.jsx)(`span`,{className:`whitespace-nowrap text-meta ${_N[t]}`,title:e.probe?.message,children:vN(t,n)}),e.onSync&&i&&e.rove&&!r&&(0,V.jsx)(H,{variant:`action`,disabled:e.busy,onClick:e.onSync,children:gN(`useRove`)}),e.onLogin&&i&&!r&&(0,V.jsx)(H,{variant:`action`,disabled:e.busy,onClick:e.onLogin,children:gN(`loginThere`)})]}),a&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(SN,{login:a,onCancel:e.onCancel})})]})}function wN({model:e}){let{machines:t,probes:n,refresh:r,probe:i,act:a}=mN(e),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(!1),u=n[``],d=u?.status?.account??null,f=pN(u?.status),p=async(e,t)=>{s(e);try{await t()}finally{s(null)}},m=e=>p(e,async()=>{await a(`github.login`,e===``?{}:{machine:e}),await i(e)}),h=e=>p(e,async()=>{await a(`github.login`,e===``?{cancel:!0}:{machine:e,cancel:!0}),await i(e)}),_=e=>p(e,async()=>{(await a(`github.sync`,{machine:e}))?.ok&&G(gN(`synced`,{machine:e,login:d??``})),await i(e)}),v=()=>p(``,async()=>{(await a(`github.logout`,{}))?.ok&&l(!1),await r()});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Bj,{children:(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Vj,{label:(0,V.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[(0,V.jsx)(bN,{}),`GitHub`]}),hint:gN(`githubDescription`),children:d?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`span`,{className:UA,children:[`@`,d]}),(0,V.jsx)(H,{variant:`action`,disabled:o!==null,onClick:()=>l(!0),children:gN(`disconnect`)})]}):!f&&(0,V.jsx)(H,{variant:`filled`,disabled:o!==null||!u,onClick:()=>void m(``),children:gN(`connect`)})}),c&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-inset px-3 py-2.5 [&_p]:m-0 [&_p]:text-meta [&_p]:text-muted`,children:[(0,V.jsx)(`p`,{children:gN(`disconnectBody`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2.5`,children:[(0,V.jsx)(H,{onClick:()=>l(!1),children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:`danger`,disabled:o!==null,onClick:()=>void v(),children:gN(`disconnect`)})]})]})}),!d&&u?.status?.login&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsx)(SN,{login:u.status.login,onCancel:()=>void h(``)})})]})}),d&&(0,V.jsxs)(Bj,{title:gN(`machines`),children:[(0,V.jsx)(CN,{name:gN(`thisMachine`),probe:u,machine:null,rove:d,busy:o!==null,onCancel:()=>void h(``)}),t.map(e=>(0,V.jsx)(CN,{name:e.alias,probe:n[e.alias],machine:e.state,rove:d,busy:o!==null,onSync:()=>void _(e.alias),onLogin:()=>void m(e.alias),onCancel:()=>void h(e.alias)},e.alias)),(0,V.jsx)(`div`,{className:`py-2.5`,children:(0,V.jsx)(H,{onClick:()=>void r(),children:gN(`refresh`)})})]})]})}function TN({model:e}){return(0,V.jsx)(wN,{model:e})}var EN=[{key:`remoteProjects`,label:`dev.remote`,hint:`dev.remoteHint`},{key:`autoStatus`,label:`dev.autoStatus`,hint:`dev.autoStatusHint`},{key:`dispatcher`,label:`dev.dispatcher`,hint:`dev.dispatcherHint`}];function DN({client:e}){let{prefs:t}=R_(),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(!1),o=async()=>{if(n){a(!0);try{if(n===`reset`){await e.request(`dev.reset`),localStorage.removeItem(`rove.prefs`),window.location.reload();return}await e.request(`daemon.restart`),G($(`restart.done`)),r(null)}catch(e){G(K(e),`error`)}finally{a(!1)}}},s=(e,t,a,s,c)=>(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Vj,{label:t,hint:a,children:(0,V.jsx)(H,{variant:`action`,onClick:()=>r(e),children:s})}),n===e&&(0,V.jsx)(`div`,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-inset px-3 py-2.5 [&_p]:m-0 [&_p]:text-meta [&_p]:text-muted`,children:[(0,V.jsx)(`strong`,{children:$(`${e}.title`)}),(0,V.jsx)(`p`,{children:z(e===`reset`?`prefs.resetBody`:`prefs.restartBody`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2.5`,children:[(0,V.jsx)(H,{onClick:()=>r(null),children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:c?`danger`:`filled`,disabled:i,onClick:()=>void o(),children:s})]})]})})]});return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Bj,{title:$(`dev.experimental`),children:EN.map(n=>(0,V.jsx)(Hj,{label:$(n.label),hint:$(n.hint),checked:t[n.key],onChange:t=>void L_(e,n.key,t)},n.key))}),(0,V.jsxs)(Bj,{hint:$(`dev.doctorHint`),children:[s(`restart`,$(`dev.restart`),z(`prefs.restartHint`),z(`prefs.restartButton`),!1),s(`reset`,$(`dev.reset`),z(`prefs.resetHint`),z(`prefs.resetButton`),!0)]})]})}function ON(e){return e.binaryFound===void 0?{key:`settings.engines.status.checking`,tone:`unknown`}:e.binaryFound===null?{key:`settings.engines.status.unknown`,tone:`unknown`}:e.binaryFound?e.configIssue?{key:`settings.engines.status.integrationBlocked`,tone:`error`}:e.login===`no`?{key:`settings.engines.status.signIn`,tone:`attention`}:e.hooks===`outdated`?{key:`settings.engines.status.integrationOutdated`,tone:`attention`}:e.hooks===`not-installed`?{key:`settings.engines.status.integrationMissing`,tone:`attention`}:{key:`settings.engines.status.ready`,tone:`ready`}:e.commandChosen?{key:`settings.engines.status.notOnPath`,tone:`attention`}:{key:`settings.engines.status.notInstalled`,tone:`absent`}}var kN=_([]),AN=3e4;function jN(e){return e.request(`skill.missing`).then(e=>kN.set(e.engines),()=>{})}function MN(e){(0,g.useEffect)(()=>{let t=e.onOpen(()=>void jN(e)),n=window.setInterval(()=>void jN(e),AN);return()=>{t(),window.clearInterval(n)}},[e])}function NN(e){return e.request(`skill.install`).then(e=>{e.error&&G($(`engines.skill.failed`,{reason:e.error}),`error`)}).catch(e=>G(K(e),`error`)).then(()=>jN(e))}function PN(e){return ON({binaryFound:e.binaryFound,login:e.login,hooks:e.hooks,configIssue:e.configIssue,commandChosen:e.custom||e.customized})}var FN={ready:`ready`,attention:`attention`,error:`error`,absent:`absent`,unknown:`absent`};function IN({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`engines.settings`)?.engines??null),[r,i]=(0,g.useState)(null),a=(0,g.useCallback)(()=>Ws(e,`engines.settings`).then(e=>n(e.engines),e=>G(K(e),`error`)),[e]);(0,g.useEffect)(()=>{a()},[a]);let o=(t,n={})=>void e.request(t,n).then(a).catch(e=>G(K(e),`error`));return t?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`p`,{className:FA,children:$(`engines.hint`)}),(0,V.jsxs)(`div`,{className:$A,children:[(0,V.jsxs)(`div`,{className:ej,"aria-hidden":`true`,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{children:$(`engines.defaultMark`)}),(0,V.jsx)(`span`,{children:$(`engines.available`)})]}),t.map(e=>(0,V.jsx)(LN,{engine:e,open:r===e.id,onToggleOpen:()=>i(r===e.id?null:e.id),run:o},e.id))]})]}),(0,V.jsx)(BN,{engines:t,run:o}),(0,V.jsx)(VN,{engines:t,client:e,reload:a})]}):(0,V.jsx)(`p`,{className:WA,children:z(`preview.loading`)})}function LN(e){let{engine:t,run:n}=e,r=(0,g.useId)(),i=PN(t);return(0,V.jsxs)(`div`,{className:tj,children:[(0,V.jsxs)(`div`,{className:nj,children:[(0,V.jsxs)(`button`,{type:`button`,className:rj,"aria-expanded":e.open,"aria-controls":r,onClick:e.onToggleOpen,children:[(0,V.jsx)(Ia,{right:!e.open,className:ij(e.open)}),(0,V.jsxs)(`span`,{className:aj,children:[(0,V.jsxs)(`span`,{className:oj(!t.enabled),children:[t.name,t.renamedFrom?(0,V.jsx)(`span`,{className:sj,children:t.renamedFrom}):null,t.custom&&!t.renamedFrom?(0,V.jsx)(`span`,{className:sj,children:$(`engines.customTag`)}):null]}),(0,V.jsxs)(`span`,{className:lj(FN[i.tone]),children:[(0,V.jsx)(`span`,{className:uj(FN[i.tone]),"aria-hidden":`true`}),$(i.key.slice(9))]})]})]}),(0,V.jsx)(`div`,{className:dj,children:t.isDefault?(0,V.jsx)(`span`,{className:fj,children:$(`engines.defaultMark`)}):t.canBeDefault?(0,V.jsx)(`button`,{type:`button`,className:pj,"aria-label":z(`settings.engines.default`,{name:t.name}),onClick:()=>n(`engine.setDefault`,{id:t.id}),children:$(`engines.makeDefault`)}):null}),(0,V.jsx)(zj,{on:t.enabled,"aria-label":z(`settings.engines.enabled`,{name:t.name}),onClick:()=>n(`engine.setEnabled`,{id:t.id,enabled:!t.enabled})})]}),e.open?(0,V.jsx)(zN,{id:r,engine:t,run:n}):null]})}function RN(e){if(e.configIssue)return $(`engines.detail.hooksBlockedHere`,{reason:e.configIssue});switch(e.hooks){case`installed`:return $(`engines.detail.hooksInstalled`);case`outdated`:return $(`engines.detail.hooksOutdated`);case`not-installed`:return e.binaryFound===!1?$(`engines.detail.hooksAwaitEngine`):$(`engines.detail.hooksMissing`);default:return $(`engines.detail.hooksUnsupported`)}}function zN(e){let{engine:t,run:n}=e,[r,i]=(0,g.useState)(null),a=t.binaryFound===!0?$(`engines.detail.programFound`,{binary:t.binary,path:t.binaryPath??t.binary}):t.binaryFound===!1?$(`engines.detail.programMissing`,{binary:t.binary}):$(`engines.detail.programUnknown`,{binary:t.binary}),o=t.login===`yes`?$(`engines.detail.signedIn`):t.login===`no`?$(`engines.detail.signedOut`):$(`engines.detail.signInUnknown`),s=[RN(t),$(t.markers?`engines.detail.markersYes`:`engines.detail.markersNo`),$(t.screen?`engines.detail.screenYes`:t.hooks===`installed`?`engines.detail.screenNotNeeded`:`engines.detail.screenNo`)];return(0,V.jsxs)(`div`,{id:e.id,className:mj,children:[(0,V.jsxs)(`dl`,{className:hj,children:[(0,V.jsx)(`dt`,{className:gj,children:$(`engines.detail.program`)}),(0,V.jsx)(`dd`,{className:_j(t.binaryFound===!1),children:a}),(0,V.jsx)(`dt`,{className:gj,children:$(`engines.detail.signIn`)}),(0,V.jsx)(`dd`,{className:_j(t.login===`no`),children:o}),(0,V.jsx)(`dt`,{className:gj,children:$(`engines.detail.reporting`)}),(0,V.jsx)(`dd`,{className:_j(!1),children:s.map(e=>(0,V.jsx)(`span`,{className:`block`,children:e},e))}),t.skill===`unsupported`?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:gj,children:$(`engines.detail.skill`)}),(0,V.jsx)(`dd`,{className:_j(t.skill!==`installed`),children:$(t.skill===`installed`?`engines.detail.skillInstalledHere`:t.skill===`outdated`?`engines.detail.skillOutdated`:`engines.detail.skillMissing`)})]}),t.custom?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:gj,children:$(`engines.detail.adapter`)}),(0,V.jsx)(`dd`,{className:_j(!1),children:t.protocol?$(`engines.detail.adapterDeclared`,{protocol:t.protocol}):$(`engines.detail.adapterGeneric`)})]}):null]}),r===null?(0,V.jsxs)(`div`,{className:vj,children:[(0,V.jsx)(H,{variant:`action`,onClick:()=>i(t.name),children:z(`settings.engines.rename`)}),t.custom||t.customized?(0,V.jsx)(H,{variant:`action`,onClick:()=>n(`engine.reset`,{id:t.id}),children:t.custom?z(`settings.engines.remove`):z(`settings.engines.reset`)}):null]}):(0,V.jsxs)(`form`,{className:vj,onSubmit:e=>{e.preventDefault(),n(`engine.rename`,{id:t.id,name:r}),i(null)},children:[(0,V.jsx)(`input`,{className:`${tn} w-full ${yj}`,autoFocus:!0,value:r,"aria-label":z(`settings.engines.rename`),placeholder:z(`settings.engines.namePlaceholder`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),i(null))}}),(0,V.jsx)(H,{variant:`filled`,type:`submit`,children:z(`settings.engines.save`)}),(0,V.jsx)(H,{variant:`action`,onClick:()=>i(null),children:z(`settings.engines.cancel`)})]})]})}function BN({engines:e,run:t}){let n=e.filter(e=>e.hooks!==`unsupported`),r=n.filter(e=>e.binaryFound!==!1),i=r.filter(e=>e.hooks===`installed`).length,a=r.length-i,o=n.filter(e=>e.hooks!==`not-installed`).length;return n.length===0?null:(0,V.jsx)(Bj,{title:$(`engines.integrations.title`),hint:$(`engines.integrations.hint`),children:(0,V.jsx)(Vj,{label:$(`engines.integrations.summary`,{installed:i,total:r.length}),children:(0,V.jsxs)(`div`,{className:XA,children:[a>0?(0,V.jsx)(H,{variant:`filled`,onClick:()=>t(`engines.hooks.install`),children:$(`engines.integrations.install`,{count:a})}):(0,V.jsx)(`span`,{className:bj,children:$(`engines.integrations.upToDate`)}),o>0?(0,V.jsx)(H,{variant:`action`,onClick:()=>t(`engines.hooks.uninstall`),children:$(`engines.integrations.remove`,{count:o})}):null]})})})}function VN(e){let t=e.engines.filter(e=>e.skill!==`unsupported`),n=t.filter(e=>e.skill===`installed`).length,r=t.length-n;return(0,V.jsx)(Bj,{title:$(`engines.skill.title`),hint:$(`engines.skill.hint`),children:(0,V.jsx)(Vj,{label:t.length>0?$(`engines.integrations.summary`,{installed:n,total:t.length}):$(`engines.skill.noEngines`),children:r>0?(0,V.jsx)(H,{variant:`filled`,onClick:()=>void NN(e.client).then(e.reload),children:$(`engines.skill.install`,{count:r})}):t.length>0?(0,V.jsx)(`span`,{className:bj,children:$(`engines.integrations.upToDate`)}):null})})}function HN({client:e}){let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(!1);return(0,V.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:a=>{a.preventDefault(),!(!t.trim()||!r.trim())&&(o(!0),e.request(`feedback.send`,{title:t.trim(),body:r}).then(e=>{G(z(`settings.feedback.sent`,{url:e.discussion?.url??``})),n(``),i(``)}).catch(e=>G(K(e),`error`)).finally(()=>o(!1)))},children:[(0,V.jsx)(`p`,{className:`m-0 ${HA}`,children:z(`settings.feedback.hint`)}),(0,V.jsxs)(`label`,{className:qA,children:[(0,V.jsx)(`span`,{className:JA,children:z(`settings.feedback.titleLabel`)}),(0,V.jsx)(`input`,{className:`${GA} w-full`,value:t,onChange:e=>n(e.target.value)})]}),(0,V.jsxs)(`label`,{className:qA,children:[(0,V.jsx)(`span`,{className:JA,children:z(`settings.feedback.body`)}),(0,V.jsx)(`textarea`,{className:`${GA} ${YA} w-full`,rows:6,value:r,onChange:e=>i(e.target.value)})]}),(0,V.jsx)(`div`,{className:XA,children:(0,V.jsx)(H,{variant:`filled`,type:`submit`,disabled:a||!t.trim()||!r.trim(),children:z(`settings.feedback.send`)})})]})}var UN=[{value:`en`,label:`English`},{value:`zh`,label:`中文`}],WN={default:`general.worktreeKindDefault`,nextToProject:`general.worktreeKindNext`,custom:`general.worktreeKindCustom`};function GN({model:e}){let{client:t}=e,n=R_(),{prefs:r,info:i}=n,a=(e,n)=>void L_(t,e,n),o=[`default`,`nextToProject`];(i.worktreeCustomPath||r.worktreeBase===`custom`)&&o.push(`custom`);let s=o.map(e=>({value:e,label:$(WN[e])}));return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Bj,{title:z(`settings.general.groupInterface`),children:[(0,V.jsx)(Wj,{label:$(`general.language`),hint:z(`prefs.languageHint`),value:r.locale,picks:UN,onPick:e=>a(`locale`,e)}),(0,V.jsx)(Hj,{label:$(`general.keyHintsShow`),hint:$(`general.keyHintsHint`),checked:r.keyHints,onChange:e=>a(`keyHints`,e)}),(0,V.jsx)(Hj,{label:$(`general.zenDefaultOn`),hint:z(`prefs.zenHint`),checked:r.zen,onChange:e=>a(`zen`,e)}),(0,V.jsx)(Wj,{label:z(`settings.general.tabStrip`),value:r.tabStrip,picks:z_(n,`tabStrip`).map(e=>({value:e,label:$(`general.tabStripMode.${e}`)})),onPick:e=>a(`tabStrip`,e)})]}),(0,V.jsxs)(Bj,{title:z(`settings.general.groupFiles`),children:[(0,V.jsx)(Wj,{label:$(`general.editor`),hint:z(`settings.general.editorNote`),value:r.editorKind,picks:z_(n,`editorKind`).map(e=>({value:e,label:e})),onPick:e=>a(`editorKind`,e)}),(0,V.jsx)(Wj,{label:$(`general.worktree`),hint:$(`general.worktreeHint`),value:r.worktreeBase,picks:s,onPick:e=>a(`worktreeBase`,e)})]}),(0,V.jsx)(Bj,{title:z(`settings.general.groupTerminal`),hint:$(`general.terminalHint`),children:(0,V.jsx)(KN,{client:t})})]})}function KN({client:e}){let t=R_(),n=t.options.scrollbackRows,r=n&&`min`in n?n:{min:100,max:1e5},[i,a]=(0,g.useState)(String(t.prefs.scrollbackRows));return(0,g.useEffect)(()=>a(String(t.prefs.scrollbackRows)),[t.prefs.scrollbackRows]),(0,V.jsx)(Vj,{label:z(`settings.general.scrollback`),hint:$(`general.scrollbackRowHint`),children:(0,V.jsx)(`input`,{className:KA,inputMode:`numeric`,value:i,"aria-label":$(`general.scrollbackTitle`),onChange:e=>a(e.target.value),onBlur:()=>{let n=Number(i);if(i.trim()===``||!Number.isInteger(n)){a(String(t.prefs.scrollbackRows));return}let o=Math.min(r.max,Math.max(r.min,n));o===t.prefs.scrollbackRows?a(String(o)):L_(e,`scrollbackRows`,o)},onKeyDown:e=>e.key===`Enter`&&e.currentTarget.blur()})})}[...Array.from({length:12},(e,t)=>`f${t+1}`)];var qN={"diff.review.cursor":`diff-review cursor is a fixed raw binding (j/k), not keymap-driven`,"diff.review.range":`diff-review range anchor is a fixed raw binding (v), not keymap-driven`,"diff.review.note":`diff-review note is a fixed raw binding (c), not keymap-driven`,"diff.review.send":`diff-review send is a fixed raw binding (s), not keymap-driven`,"diff.review.drop":`diff-review drop-note is a fixed raw binding (x), not keymap-driven`,"diff.review.reload":`preview reload is a fixed raw binding (r), not keymap-driven`};function JN(e,t){let n=`alternating [${e}, ${t}] pairs`;return{layout:n,validateCount:e=>e>=2&&e%2==0?null:`needs ${n} (an even number of chords — got ${e})`}}JN(`top (double-tap)`,`bottom`),JN(`down`,`up`),JN(`down`,`up`),JN(`down`,`up`),JN(`collapse`,`expand`),JN(`previous tab`,`next tab`);async function YN(e){try{(await e.request(`keybindings.createFile`)).created||G(z(`keys.exists`),`error`),await $r(e)}catch(e){G(K(e),`error`)}}function XN({model:e}){let{client:t}=e,{prefs:n}=R_(),r=v(Xr),[i,a]=(0,g.useState)(!1);(0,g.useEffect)(()=>void $r(t),[t]);let o=r.prefix.key??$(`keybindings.prefixDisabled`),s=Object.keys(qN).sort();return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Bj,{children:[(0,V.jsx)(Wj,{label:$(`keybindings.tapPresentation`),hint:$(`keybindings.tapPresentationHint`),value:n.prefixTap,picks:[{value:`local`,label:$(`keybindings.tapPresentationLocal`)},{value:`guide`,label:$(`keybindings.tapPresentationGuide`)}],onPick:e=>void L_(t,`prefixTap`,e)}),(0,V.jsx)(Vj,{label:$(`keybindings.prefixTitle`,{prefix:o}),hint:$(`keybindings.prefixHint`,{prefix:o,timeout:r.prefix.timeoutMs})})]}),(0,V.jsxs)(Bj,{title:$(`keybindings.configFile`),hint:`${$(`keybindings.hint`)} ${z(`prefs.keysYaml`)}`,children:[(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:`font-mono break-all`,children:r.path+(r.exists?``:$(`keybindings.notCreated`))})}),!r.exists&&(0,V.jsx)(Vj,{label:z(`keys.createFile`),hint:$(`keybindings.createHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>void YN(t),children:z(`keys.createFile`)})}),(0,V.jsx)(Vj,{label:z(`keys.agent`),hint:z(i?`keys.agentFailed`:`keys.agentHint`),children:(0,V.jsx)(H,{variant:`action`,onClick:()=>{a(!1),YM(e,z(`keys.agentPrompt`,{path:r.path})).catch(()=>a(!0))},children:z(`keys.agent`)})})]}),r.exists&&(0,V.jsxs)(Bj,{title:$(`keybindings.overridesApplied`),children:[r.applied.length===0&&(0,V.jsx)(Vj,{label:$(`keybindings.none`)}),r.applied.map(e=>(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:`font-mono`,children:e.id}),hint:`${e.keys.length>0?e.keys.join(` / `):$(`keybindings.unbound`)} (${$(`keybindings.defaultKeys`,{keys:e.defaultKeys.join(` / `)})})`},e.id))]}),r.warnings.length>0&&(0,V.jsx)(Bj,{title:$(`keybindings.warnings`),children:r.warnings.map(e=>(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:`text-warning`,children:e})},e))}),r.plugins.length>0&&(0,V.jsx)(Bj,{title:z(`keys.pluginChords`),children:r.plugins.map(e=>(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:`font-mono`,children:e.chord}),hint:(0,V.jsx)(`span`,{className:`font-mono`,children:`${e.kind}:${e.target}`})},e.chord))}),(0,V.jsx)(`p`,{className:FA,children:$(`keybindings.fixed`,{ids:s.join(`, `)})})]})}var ZN=`/assets/pulse-3XJkP4CJ.wav`;function QN(e,t){return e===`error`||t}function $N(e,t){return t||e.kind!==`done`||e.turnEnd!==!0}function eP(e,t){return t&&e.silent!==!0}function tP(e){return e===`permission_needed`?`needs_input`:e===`error`||e===`rate_limited`||e===`dead`?`error`:e===`turn_complete`?`done`:null}function nP(e,t,n,r){if(e===null)return[];let i=[];for(let[a,o]of t){if(a===n||e.get(a)===o)continue;let t=r(o);t&&i.push({key:a,kind:t})}return i}function rP(){return window.isSecureContext&&`serviceWorker`in navigator&&`PushManager`in window&&`Notification`in window}var iP=()=>navigator.serviceWorker.register(`sw.js`);async function aP(e){if(!rP())return`unsupported`;if(Notification.permission===`denied`)return`blocked`;let t=await(await navigator.serviceWorker.getRegistration())?.pushManager.getSubscription();if(!t)return`off`;let{subscribed:n}=await e.request(`push.status`,{endpoint:t.endpoint});return n?`on`:`off`}async function oP(e){if(!rP())return`unsupported`;if(await Notification.requestPermission()!==`granted`)return`blocked`;let t=await iP();await navigator.serviceWorker.ready;let{publicKey:n}=await e.request(`push.key`),r=await t.pushManager.getSubscription();return r?.options.applicationServerKey&&dP(r.options.applicationServerKey)!==n&&(await r.unsubscribe(),r=null),r??=await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:uP(n)}),await e.request(`push.subscribe`,{subscription:r.toJSON()}),`on`}async function sP(e){let t=await(await navigator.serviceWorker.getRegistration())?.pushManager.getSubscription();return t&&(await e.request(`push.unsubscribe`,{endpoint:t.endpoint}),await t.unsubscribe()),`off`}async function cP(e,t,n,r){let i={body:r,tag:`task:${e}:${t}`,icon:`icon-192.png`,data:{taskId:e}},a=`serviceWorker`in navigator?await navigator.serviceWorker.getRegistration():void 0;a?await a.showNotification(`Rove — ${n}`,i):new Notification(`Rove — ${n}`,i)}function lP(e){let t=new URLSearchParams(window.location.search),n=t.get(`task`);if(n){t.delete(`task`);let r=t.toString();history.replaceState(null,``,`${window.location.pathname}${r?`?${r}`:``}${window.location.hash}`),e.selectWhenListed(n)}if(!(`serviceWorker`in navigator))return()=>{};let r=t=>{let n=t.data;n?.type===`rove.openTask`&&typeof n.taskId==`string`&&n.taskId&&e.selectWhenListed(n.taskId)};return navigator.serviceWorker.addEventListener(`message`,r),()=>navigator.serviceWorker.removeEventListener(`message`,r)}function uP(e){let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.charCodeAt(0))}function dP(e){return btoa(String.fromCharCode(...new Uint8Array(e))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var fP={done:`✓`,needs_input:`?`,error:`✕`};function pP(e){let t=new Audio(ZN);t.volume=Math.min(1,Math.max(0,e)),t.play().catch(()=>void 0)}function mP(e,t,n){!document.hidden||typeof Notification>`u`||Notification.permission!==`granted`||cP(e,t,n,fP[t]).catch(()=>void 0)}function hP(){typeof Notification<`u`&&Notification.permission==="default"&&Notification.requestPermission()}function gP(e){let t=new Map;for(let n of e.tasks)n.activity&&t.set(n.id,n.activity.state);return t}function _P(e){let t=(0,g.useRef)(null);(0,g.useEffect)(()=>{let n=()=>{let n=e.tasks.get();if(!n)return;let r=gP(n),i=nP(t.current,r,null,tP);t.current=r;let{prefs:a}=N_.get();if(!a.crossTask)return;let o=e.selection.get().taskId,s=new Map(n.tasks.map(e=>[e.id,e.label]));for(let{key:e,kind:t}of i){if(e===o||!$N({kind:t,turnEnd:!0},a.finishedAlerts))continue;let n=s.get(e)??e;QN(t,a.toast)&&G(`${fP[t]} ${n}`,t===`error`?`error`:`info`),eP({},a.sound)&&(pP(a.soundVolume),mP(e,t,n))}};return n(),e.tasks.subscribe(n)},[e])}function vP({client:e}){let[t,n]=(0,g.useState)(null),[r,i]=(0,g.useState)(null);(0,g.useEffect)(()=>{aP(e).then(n,()=>n(`off`))},[e]);let a=t=>{i(null),(t?oP(e):sP(e)).then(n,e=>i(e instanceof Error?e.message:String(e)))},o=r?z(`prefs.pushFailed`,{error:r}):z(t===`unsupported`?`prefs.pushUnsupported`:t===`blocked`?`prefs.pushBlocked`:`prefs.pushHint`);return(0,V.jsx)(Hj,{label:z(`prefs.push`),hint:o,checked:t===`on`,disabled:t===null||t===`unsupported`||t===`blocked`,onChange:a})}function yP({model:e}){let{client:t}=e,n=R_(),{prefs:r}=n,i=(e,n)=>void L_(t,e,n);return(0,V.jsxs)(Bj,{children:[(0,V.jsx)(Hj,{label:$(`general.toast`),hint:z(`settings.notifications.toastNote`),checked:r.toast,onChange:e=>i(`toast`,e)}),(0,V.jsx)(Hj,{label:$(`general.sound`),hint:z(`prefs.soundHint`),checked:r.sound,onChange:e=>{e&&hP(),i(`sound`,e)}}),(0,V.jsx)(Wj,{label:z(`settings.notifications.volume`),hint:z(`prefs.soundVolumeHint`),value:r.soundVolume,picks:z_(n,`soundVolume`).map(e=>({value:e,label:`${Math.round(e*100)}%`})),onPick:e=>{N_.get().prefs.sound&&pP(e),i(`soundVolume`,e)}}),(0,V.jsx)(Hj,{label:$(`general.crossTask`),hint:$(`general.crossTaskHint`),checked:r.crossTask,onChange:e=>i(`crossTask`,e)}),(0,V.jsx)(Hj,{label:$(`general.finishedAlerts`),hint:$(`general.finishedAlertsHint`),checked:r.finishedAlerts,onChange:e=>i(`finishedAlerts`,e)}),(0,V.jsx)(vP,{client:t})]})}var bP={kanban:`kanban`,issues:`issues`};function xP({model:e}){let t=v(e.installedMods),[n,r]=(0,g.useState)(()=>Hs(e,`builtinMods.list`)?.mods??null);if((0,g.useEffect)(()=>{Ws(e,`builtinMods.list`).then(e=>r(e.mods),()=>r([])),e.refreshMods()},[e]),!n||n.length===0)return null;let i=n=>{let r=!t.has(n.id);e.client.request(`builtinMod.setInstalled`,{id:n.id,installed:r}).then(()=>(!r&&un.get()===bP[n.id]&&un.set(null),e.refreshMods())).catch(e=>G(K(e),`error`))};return(0,V.jsx)(Bj,{title:z(`settings.plugins.builtIn`),hint:z(`settings.plugins.builtInHint`),children:n.map(e=>(0,V.jsx)(Vj,{label:e.name,hint:e.description,inline:!0,children:(0,V.jsx)(zj,{on:t.has(e.id),"aria-label":z(`settings.plugins.turnOn`,{name:e.name}),onClick:()=>i(e)})},e.id))})}function SP({model:e}){let{client:t}=e,[n,r]=(0,g.useState)(()=>Hs(t,`plugins.list`)?.plugins??null),i=(0,g.useCallback)(()=>Ws(t,`plugins.list`).then(e=>r(e.plugins),e=>G(K(e),`error`)),[t]);return(0,g.useEffect)(()=>{i()},[i]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(xP,{model:e}),(0,V.jsx)(Bj,{title:z(`settings.plugins.registered`),children:n?n.length===0?(0,V.jsx)(`p`,{className:WA,children:z(`settings.plugins.empty`)}):n.map(e=>(0,V.jsx)(Vj,{label:e.id,hint:[e.version,e.linked?z(`settings.plugins.linked`):null,e.platformOk===!1?z(`settings.plugins.unsupportedPlatform`):null].filter(Boolean).join(`, `),inline:!0,children:(0,V.jsx)(zj,{on:e.enabled,"aria-label":e.id,onClick:()=>void t.request(`plugin.setEnabled`,{id:e.id,enabled:!e.enabled}).then(i).catch(e=>G(K(e),`error`))})},e.id)):(0,V.jsx)(`p`,{className:WA,children:z(`preview.loading`)})})]})}function CP(e){let[t,n]=(0,g.useState)(e.tier.engine),[r,i]=(0,g.useState)(e.tier.model??``),[a,o]=(0,g.useState)(e.tier.effort??``),s=e.engines.find(e=>e.id===t);return(0,V.jsxs)(`form`,{className:Ej,onSubmit:n=>{n.preventDefault(),e.onSave(t,s?.takesModel?r.trim():``,a)},onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),e.onCancel())},children:[(0,V.jsx)(CA,{label:$(`sections.engines`),value:t,picks:e.engines.map(e=>({value:e.id,label:e.name})),onPick:t=>{let r=e.engines.find(e=>e.id===t);n(t),r&&!r.effortLevels.includes(a)&&o(``),r&&!r.takesModel&&i(``)}}),s&&s.effortLevels.length>0&&(0,V.jsx)(CA,{label:z(`prefs.tierEffort`),value:a,picks:[``,...s.effortLevels].map(e=>({value:e,label:e||$(`autoRouting.engineDefault`)})),onPick:o}),s?.takesModel&&(0,V.jsx)(`input`,{className:`rounded-sm border-hairline border-line bg-paper px-2.5 py-1.5 font-sans text-body text-ink focus-visible:border-line-active focus-visible:outline-none`,value:r,spellCheck:!1,placeholder:$(`autoRouting.engineDefault`),"aria-label":z(`prefs.tierModel`),onChange:e=>i(e.target.value)}),(0,V.jsxs)(`div`,{className:XA,children:[(0,V.jsx)(H,{onClick:e.onCancel,children:z(`dialog.cancel`)}),(0,V.jsx)(H,{variant:`filled`,type:`submit`,children:$(`action.save`)})]})]})}function wP({client:e}){let[t,n]=(0,g.useState)(()=>Hs(e,`autoRouting.get`)??null),[r,i]=(0,g.useState)(null),a=(0,g.useCallback)(()=>Ws(e,`autoRouting.get`).then(n,e=>G(K(e),`error`)),[e]);(0,g.useEffect)(()=>{a()},[a]);let o=(t,n)=>e.request(t,n).then(a).catch(e=>G(K(e),`error`));if(!t)return(0,V.jsx)(`p`,{className:WA,children:z(`preview.loading`)});let s=t.classifier,c=[{value:`off`,label:$(`autoRouting.classifierOff`)},{value:`jev`,label:`jev`},...s.canCustom||s.mode===`custom`?[{value:`custom`,label:$(`autoRouting.classifierCustomLabel`)}]:[]],l=s.mode===`off`?$(`autoRouting.classifierOffHint`):s.mode===`jev`?$(`autoRouting.classifierJevHint`):$(`autoRouting.classifierCustomHint`),u=s.keySource===`env`?$(`autoRouting.keyPresentEnv`,{env:s.keyEnv??``}):s.keySource===`file`?$(`autoRouting.keySaved`):s.keyConfigured?$(`autoRouting.keyMissing`):$(`autoRouting.keyCustomUnused`);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Bj,{hint:$(`autoRouting.hint`),children:[!t.configured&&(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:`text-warning`,children:$(`autoRouting.unconfigured`)})}),t.tiers.map(e=>(0,V.jsxs)(`div`,{className:wj,children:[(0,V.jsxs)(`div`,{className:Tj,children:[(0,V.jsx)(`span`,{className:VA,children:SA(`tier.${e.tier}`)}),(0,V.jsx)(`span`,{className:`${HA} min-w-0 truncate`,children:[e.engineName,e.model??$(`autoRouting.engineDefault`),e.effort??$(`autoRouting.engineDefault`)].join(` · `)}),(0,V.jsx)(H,{className:`ml-auto`,onClick:()=>i(r===e.tier?null:e.tier),children:z(`prefs.tierEdit`)})]}),(0,V.jsx)(`span`,{className:HA,children:SA(`tierDesc.${e.tier}`)}),(0,V.jsx)(`span`,{className:`text-meta ${e.block?`text-warning`:`text-success`}`,children:e.block?$(`autoRouting.unavailable`,{reason:e.block}):$(`autoRouting.ready`)}),r===e.tier&&(0,V.jsx)(CP,{tier:e,engines:t.engines,onCancel:()=>i(null),onSave:(t,n,r)=>{i(null),o(`autoRouting.setTier`,{tier:e.tier,engine:t,model:n,effort:r})}})]},e.tier))]}),(0,V.jsxs)(Bj,{title:$(`autoRouting.classifierTitle`),hint:$(`autoRouting.classifierHint`),children:[(0,V.jsx)(Vj,{label:(0,V.jsx)(`span`,{className:s.mode===`off`?`text-muted`:`text-warning`,children:$(`autoRouting.classifierDataFlow`)})}),(0,V.jsx)(Wj,{label:$(`autoRouting.classifierLabel`),hint:l.replace(/^[—\s]+/,``),value:s.mode,picks:c,onPick:e=>void o(`autoRouting.setClassifier`,{mode:e})})]}),(0,V.jsxs)(Bj,{title:z(`prefs.classifierConnection`),hint:z(`prefs.editInTui`),children:[(0,V.jsx)(Gj,{label:$(`autoRouting.endpointLabel`),value:s.endpointHost||z(`prefs.unset`)}),(0,V.jsx)(Gj,{label:$(`autoRouting.thresholdLabel`),value:s.threshold.toFixed(2)}),(0,V.jsx)(Vj,{label:$(`autoRouting.keyLabel`),hint:u})]})]})}var TP=[{id:`preferences`,sections:[`general`,`appearance`,`notifications`,`snippets`,`keys`]},{id:`agents`,sections:[`engines`,`autoRouting`,`connectors`,`plugins`]},{id:`more`,sections:[`about`,`feedback`,`dev`]}],EP=e=>({section:e??`general`,drilled:e!==void 0});function DP(e,t){return t&&e.drilled?`list`:`close`}var OP=e=>e.split(`
|
|
117
|
+
`,1)[0]??``;function kP(e){let[t,n]=(0,g.useState)(e.editing?.name??``),[r,i]=(0,g.useState)(e.editing?.text??``),[a,o]=(0,g.useState)(!1),s=JD.test(t)&&r.trim()!==``;return(0,V.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:n=>{n.preventDefault(),s&&(o(!0),KD(e.client,{name:t,text:r}).then(e.onDone).catch(e=>{G(K(e),`error`),o(!1)}))},children:[(0,V.jsxs)(`label`,{className:qA,children:[(0,V.jsx)(`span`,{className:JA,children:z(`snippets.name`)}),(0,V.jsx)(`input`,{className:`${GA} w-full font-mono`,value:t,maxLength:32,spellCheck:!1,autoComplete:`off`,autoFocus:!e.editing,readOnly:e.editing!==void 0,placeholder:z(`snippets.namePlaceholder`),onChange:e=>n(e.target.value)}),t!==``&&!JD.test(t)&&(0,V.jsx)(`span`,{className:`text-meta text-muted [&_a]:text-accent`,children:z(`snippets.badName`)})]}),(0,V.jsxs)(`label`,{className:qA,children:[(0,V.jsx)(`span`,{className:JA,children:z(`snippets.text`)}),(0,V.jsx)(`textarea`,{className:`${GA} ${YA} w-full`,rows:5,value:r,maxLength:8e3,placeholder:z(`snippets.textPlaceholder`),onChange:e=>i(e.target.value)})]}),(0,V.jsxs)(`div`,{className:XA,children:[(0,V.jsx)(H,{onClick:e.onDone,children:z(`snippets.cancel`)}),(0,V.jsx)(H,{type:`submit`,disabled:a||!s,children:z(`snippets.save`)})]})]})}function AP({model:e}){let{client:t}=e,n=WD(),[r,i]=(0,g.useState)(null);return(0,g.useEffect)(()=>void GD(t).catch(()=>void 0),[t]),(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,V.jsxs)(Bj,{children:[n.length===0&&r===null&&(0,V.jsx)(Vj,{label:z(`snippets.empty`)}),n.map(e=>(0,V.jsxs)(Vj,{label:(0,V.jsxs)(`span`,{className:`font-mono`,children:[`@`,e.name]}),hint:OP(e.text),children:[(0,V.jsx)(H,{onClick:()=>i(e),children:z(`snippets.edit`)}),(0,V.jsx)(H,{onClick:()=>void qD(t,e.name).then(()=>{i(null),G(z(`snippets.removed`,{name:e.name}))}).catch(e=>G(K(e),`error`)),children:z(`snippets.remove`)})]},e.name))]}),r===null?(0,V.jsx)(`div`,{className:XA,children:(0,V.jsx)(H,{onClick:()=>i(`new`),children:z(`snippets.add`)})}):(0,V.jsx)(kP,{client:t,editing:r===`new`?void 0:r,onDone:()=>i(null)},r===`new`?`new`:r.name)]})}var jP=e=>e>=95?`crit`:e>=75?`warn`:`ok`,MP=e=>String(e).padStart(2,`0`);function NP(e,t){if(e==null||e<=t)return``;let n=new Date(e),r=`${MP(n.getHours())}:${MP(n.getMinutes())}`;return e-t<864e5?`→ ${r}`:`→ ${n.getMonth()+1}/${n.getDate()} ${r}`}function PP(e,t){let n=e.windows.find(e=>e.kind===`session`)??e.windows[0];return n?{label:n.label,percentText:`${n.percent}%`,resetText:NP(n.resetsAt,t),tone:jP(n.percent)}:null}var FP=1e4;function IP({client:e,inset:t=!0}){let n=v(e.conn),[r,i]=(0,g.useState)(null);(0,g.useEffect)(()=>{if(n.state!==`open`)return;let t=!0,r=()=>e.request(`usage.get`,{}).then(e=>{t&&i(e.usage)}).catch(()=>{});r();let a=window.setInterval(r,FP);return()=>{t=!1,window.clearInterval(a)}},[e,n.state]);let a=Date.now(),o=(r??[]).flatMap(e=>{let t=PP({capturedAt:e.capturedAt,windows:e.windows},a);return t?[{vendor:e.vendor,name:e.name,chip:t}]:[]});return o.length===0?null:(0,V.jsx)(`div`,{className:`${Rt} ${t?`px-2`:``}`,children:o.map(({vendor:e,name:t,chip:n})=>{let r=Math.min(100,Math.max(0,Number.parseInt(n.percentText,10)||0));return(0,V.jsxs)(H,{variant:`row`,className:zt,title:`${t} · ${n.label} ${n.percentText} ${n.resetText}`.trim(),"aria-label":`${z(`usage.open`)}: ${t}`,onClick:()=>{Cn(),ya(`usage`)},children:[(0,V.jsx)(`span`,{className:`truncate`,children:t}),(0,V.jsx)(`span`,{className:Ht(n.tone),style:{"--fill":`${r}%`}}),(0,V.jsxs)(`span`,{children:[n.label,` `,(0,V.jsx)(`span`,{className:Bt[n.tone],children:n.percentText})]})]},e)})})}var LP={general:e=>(0,V.jsx)(GN,{model:e}),appearance:e=>(0,V.jsx)(uN,{model:e}),notifications:e=>(0,V.jsx)(yP,{model:e}),snippets:e=>(0,V.jsx)(AP,{model:e}),keys:e=>(0,V.jsx)(XN,{model:e}),engines:e=>(0,V.jsx)(IN,{client:e.client}),autoRouting:e=>(0,V.jsx)(wP,{client:e.client}),connectors:e=>(0,V.jsx)(TN,{model:e}),plugins:e=>(0,V.jsx)(SP,{model:e}),about:e=>(0,V.jsx)(JM,{client:e.client}),feedback:e=>(0,V.jsx)(HN,{client:e.client}),dev:e=>(0,V.jsx)(DN,{client:e.client})},RP={general:`sections.general`,engines:`sections.engines`,autoRouting:`sections.autoRouting`,plugins:`sections.plugins`,keys:`sections.keys`,feedback:`sections.feedback`,dev:`sections.dev`},zP=e=>{let t=RP[e];return t?$(t):z(`settings.sections.${e}`)};function BP(e){return(0,V.jsxs)(`nav`,{className:OA,"aria-label":z(`settings.title`),children:[(0,V.jsx)(`h1`,{className:kA,children:z(`settings.title`)}),TP.map(t=>(0,V.jsxs)(`div`,{className:AA,children:[(0,V.jsx)(`p`,{className:jA,children:z(`settings.groups.${t.id}`)}),t.sections.map(n=>(0,V.jsxs)(H,{variant:`row`,className:MA(!e.narrow&&e.current===n,t.id===`more`),"aria-current":!e.narrow&&e.current===n?`page`:void 0,onClick:()=>e.onPick(n),children:[zP(n),(0,V.jsx)(Ia,{right:!0,className:NA})]},n))]},t.id))]})}function VP({model:e,section:t}){B();let[n,r]=(0,g.useState)(()=>EP(t)),i=Ta(),a=()=>DP(n,i)===`list`?r({...n,drilled:!1}):Cn();(0,g.useEffect)(()=>{let e=document.querySelector(`.dialog`);e&&!e.contains(document.activeElement)&&e.focus()},[]),(0,g.useEffect)(()=>{let e=e=>{e.key!==`Escape`||e.defaultPrevented||(e.preventDefault(),a())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});let o=!i||!n.drilled,s=!i||n.drilled;return(0,V.jsx)(`div`,{className:TA,onMouseDown:e=>e.target===e.currentTarget&&Cn(),children:(0,V.jsxs)(`dialog`,{tabIndex:-1,open:!0,className:EA,"aria-label":z(`settings.title`),onKeyDown:e=>{let t=e.target;e.key===`Escape`&&(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&(t.blur(),e.stopPropagation(),e.nativeEvent.stopImmediatePropagation())},children:[(0,V.jsx)(H,{variant:`row`,className:DA,"aria-label":z(`dialog.close`),title:z(`dialog.close`),onClick:Cn,children:`×`}),i&&n.drilled&&(0,V.jsx)(H,{variant:`row`,className:`hidden flex-none items-center px-4 py-3 pr-12 text-left font-mono text-meta font-bold text-accent w-narrow:flex touch:min-h-11`,onClick:a,children:`‹ ${z(`settings.title`)}`}),o&&(0,V.jsx)(BP,{current:n.section,narrow:i,onPick:e=>r({section:e,drilled:!0})}),i&&o&&(0,V.jsx)(IP,{client:e.client,inset:!1}),s&&(0,V.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto scrollbar-none`,children:(0,V.jsxs)(`div`,{className:`flex w-full flex-col gap-7 px-8 pt-7 pb-10 w-narrow:gap-6 w-narrow:px-4 w-narrow:pt-1 w-narrow:pb-10`,children:[(0,V.jsxs)(`header`,{className:`flex flex-col gap-1 pr-8`,children:[(0,V.jsx)(`h1`,{className:`m-0 font-sans text-display font-semibold normal-nums text-ink`,children:zP(n.section)}),(0,V.jsx)(`p`,{className:`m-0 text-body text-muted`,children:z(`settings.pages.${n.section}`)})]}),(0,V.jsx)(`div`,{className:`flex flex-col gap-7 w-narrow:gap-6`,children:LP[n.section](e)})]})},n.section)]})})}function HP(e){let t=e.todos;return!t||t.length===0?null:{done:t.filter(e=>e.done).length,total:t.length}}function UP(e){return(e.todos??[]).filter(e=>!e.done)}var WP=/LAND_CONFLICT/,GP=/MAIN_CHECKOUT_DIRTY/,KP=/SYNC_CONFLICT(?:: )?(.*)/,qP=/SYNC_WORKTREE_DIRTY(?:: )?(.*)/;function JP(e){let t=K(e);return WP.test(t)?q(`worktrees`,`land.conflict`,{files:t}):GP.test(t)?q(`worktrees`,`land.dirtyBase`):q(`worktrees`,`land.failed`,{error:t})}async function YP(e,t,n){if(t.machine){XP(e,t,t.machine.label,n);return}let r;try{r=await e.client.request(`task.landPreflight`,{taskId:t.id})}catch(e){G(q(`worktrees`,`land.failed`,{error:K(e)}),`error`);return}if(r.refusal){G(r.refusal===`MAIN_CHECKOUT_DIRTY`?q(`worktrees`,`land.dirtyBase`):q(`worktrees`,`land.failed`,{error:r.message??r.refusal}),`error`);return}let i=t.branch||t.title,a=UP(e.tasks.get()?.tasks.find(e=>e.id===t.id)??{}).length;W.set((0,V.jsx)(dr,{title:q(`worktrees`,`land.confirmTitle`),body:[q(`worktrees`,r.ahead===1?`land.confirmBodyOne`:`land.confirmBody`,{branch:i,landedOn:r.landedOn,commits:r.ahead??`?`}),...a>0?[z(`files.landTodos`,{count:a})]:[]].join(`
|
|
118
118
|
|
|
119
|
-
`),confirmLabel:q(`worktrees`,`land.button`),onConfirm:async()=>{try{let r=await e.client.request(`task.land`,{taskId:t.id});G(q(`worktrees`,`land.done`,{branch:i,landedOn:r.landedOn,commit:r.commit.slice(0,8)})),n?.()}catch(e){throw Error(
|
|
120
|
-
`).find(e=>e.trim().length>0)?.trim()??e.trim()}async function rF(e,t,n){try{let r=await e.client.request(`task.fixChecks`,e.engineTarget(t));r.outcome===`unavailable`?G(q(`files`,`toast.ciChecksUnavailable`,{detail:nF(r.detail??``)}),`error`):r.outcome===`none`?G(q(`files`,`toast.ciNoFailingChecks`),`error`):G(n)}catch(e){G(K(e),`error`)}}async function iF(e,t){try{let n=await e.client.request(`task.openEditor`,{taskId:t});n.outcome===`noEditor`?G(q(`tasks`,`toast.noEditor`),`error`):n.outcome===`failed`&&G(q(`tasks`,`toast.openWorktreeFailed`,{label:n.label??``}),`error`)}catch(e){G(q(`tasks`,`toast.worktreeErrorGeneric`,{message:K(e)}),`error`)}}function aF(e,t){let n=e.tasks.get();return[...n?.tasks??[],...n?.archived??[]].filter(e=>e.parentTaskId===t)}function oF(e,t){let n=aF(e,t.id),r=n.length>0,i=n=>e.client.request(`task.delete`,{taskId:t.id,...n}).then(()=>{});return(0,V.jsx)(dr,{title:r?q(`tasks`,`confirm.childrenTitle`,{title:t.label,count:String(n.length)}):q(`tasks`,t.kind===`dir`?`confirm.deleteTitleDir`:`confirm.deleteTitle`,{title:t.label}),body:r?q(`tasks`,`confirm.childrenBody`):q(`tasks`,t.kind===`dir`?`confirm.deleteBodyDir`:`confirm.deleteBodyTask`),confirmLabel:q(`tasks`,r?`confirm.childrenPromote`:`confirm.deleteConfirm`),onConfirm:()=>i({}),...r?{secondary:{label:q(`tasks`,`confirm.childrenCascade`),onConfirm:()=>i({cascade:!0})}}:{},escalate:{when:e=>e instanceof d_&&e.code===`DIRTY_WORKTREE`,label:q(`tasks`,`confirm.forceDeleteConfirm`),title:q(`tasks`,`confirm.forceDeleteTitle`,{title:t.label}),body:e=>`${q(`worktrees`,`delete.forceBody`,{branch:t.branch||t.title})}\n\n${q(`worktrees`,`delete.forceReason`,{reason:K(e).replace(`task ${t.id} `,``)})}`,run:e=>i({force:!0,...e?{cascade:!0}:{}})}})}function sF(e,t){let n=aF(e,t.id),r=n.length>0,i=t.label,a=async()=>{let{tabs:n}=await e.client.request(`task.tabs`,{taskId:t.id});for(let r of n)await e.client.request(`tab.close`,{taskId:t.id,tabId:r.id});await e.refreshTabsNow()},o,s=async t=>{for(let r of n)try{await e.client.request(`task.delete`,{taskId:r.id,cascade:!0,...t?{force:!0}:{}})}catch(e){throw o=r.title,e}await a()};return(0,V.jsx)(dr,{title:r?q(`tasks`,`confirm.childrenTitle`,{title:i,count:String(n.length)}):q(`tasks`,`confirm.deleteTitleDir`,{title:i}),body:q(`tasks`,r?`confirm.childrenBodyMain`:`confirm.deleteBodyMain`),confirmLabel:q(`tasks`,r?`confirm.childrenKeepMain`:`confirm.deleteConfirm`),onConfirm:a,...r?{secondary:{label:q(`tasks`,`confirm.childrenCascadeMain`),onConfirm:()=>s(!1)}}:{},escalate:{when:e=>e instanceof d_&&e.code===`DIRTY_WORKTREE`,label:q(`tasks`,`confirm.forceDeleteConfirm`),title:q(`tasks`,`confirm.forceDeleteTitle`,{title:i}),body:e=>`${q(`worktrees`,`delete.forceBody`,{branch:o??i})}\n\n${K(e)}`,run:()=>s(!0)}})}async function cF(e,t){let n=t.archived!==!0,r=t.label,i=async i=>{await e.client.request(`task.archive`,{taskId:t.id,archived:n,...i?{force:!0}:{}}),G(q(`tasks`,n?`archive.done`:`archive.restored`,{title:r}))};try{await i(!1)}catch(e){if(n&&e instanceof d_&&e.code===`TASK_BUSY`){W.set((0,V.jsx)(dr,{title:q(`tasks`,`archive.busyTitle`),body:q(`tasks`,`archive.busyBody`,{title:r}),confirmLabel:q(`tasks`,`archive.busyConfirm`),onConfirm:()=>i(!0)}));return}G(q(`tasks`,n?`archive.failed`:`archive.restoreFailed`,{error:K(e)}),`error`)}}function lF(e,t,n){return(0,V.jsx)(dr,{title:q(`tasks`,`confirm.forgetProjectTitle`,{title:n}),body:q(`tasks`,`confirm.forgetProjectBody`),confirmLabel:q(`tasks`,`confirm.forgetProjectConfirm`),onConfirm:async()=>{try{await e.client.request(`project.forget`,{repo:t})}catch(e){throw Error(q(`tasks`,`toast.forgetProjectFailed`,{error:K(e)}))}}})}var uF=e=>{let{taskId:t}=e.selection.get();return e.tasks.get()?.tasks.find(e=>e.id===t)??null},dF=e=>{let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return!!r&&!Ow(r.split)},fF=[{id:`app.refresh`,live:()=>ui.get().stale,run:e=>mi(e.client)},{id:`palette.open`,live:()=>!0,run:lA},{id:`task.new.global`,live:()=>!0,run:e=>aO(uF(e)?.repo)},{id:`chat.tab.fork`,live:e=>!!uF(e),run:e=>{let t=uF(e);t&&W.set((0,V.jsx)(KC,{model:e,taskId:t.id,context:`continue`}))}},{id:`chat.fork.new`,live:e=>!!uF(e),run:e=>{let t=uF(e);t&&W.set((0,V.jsx)(KC,{model:e,taskId:t.id,destination:`fork`}))}},{id:`settings.open`,live:()=>!0,run:e=>W.set((0,V.jsx)(GP,{model:e}))},{id:`inbox.show`,live:()=>!0,run:e=>W.set((0,V.jsx)(FT,{model:e}))},{id:`focus.previous`,live:()=>!0,run:()=>Yi(-1)},{id:`focus.next`,live:()=>!0,run:()=>Yi(1)},{id:`workspace.zenToggle`,live:e=>!!uF(e),run:()=>mn.set(!mn.get())},{id:`files.createPR`,live:e=>!!uF(e),run:e=>{let t=uF(e);t&&e.client.request(`tab.requestPR`,e.engineTarget(t.id)).then(()=>G(z(`files.prRequested`))).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},{id:`chat.tab.close`,live:e=>!!e.selection.get().tabId&&dF(e),run:e=>{let{taskId:t,tabId:n}=e.selection.get();!t||!n||e.client.request(`tab.close`,{taskId:t,tabId:n}).then(()=>e.refreshTabsNow()).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},{id:`kanban.open`,live:e=>e.installedMods.get().has(`kanban`),run:()=>ya(`kanban`)},{id:`automations.open`,live:()=>!0,run:()=>ya(`routines`)},{id:`workItems.open`,live:e=>e.installedMods.get().has(`issues`),run:()=>ya(`issues`)},{id:`task.moveMode`,live:e=>!!pA(e),run:()=>{qT(!GT.get()),document.querySelector(`.rail`)?.focus()}},{id:`files.syncBase`,live:e=>pA(e)?.kind===`task`,run:e=>{let t=pA(e);t&&tF(e,t.id)}},{id:`files.fixChecks`,live:e=>!!pA(e),run:e=>{let t=pA(e);t&&rF(e,t.id,z(`taskops.fixSent`))}},{id:`task.openEditor`,live:e=>!!pA(e),run:e=>{let t=pA(e);t&&iF(e,t.id)}}];Zi(()=>fF.map(e=>({id:e.id,chords:oi(e.id),prefix:!0,live:e.live,run:e.run})));function pF(e){return $a(e[0]??``)}function mF(e,t){let n=na(),r=$i().filter(t=>t.prefix&&ea(t,n)&&t.live?.(e)!==!1);for(let e of t){let t=r.filter(t=>t.chords.includes(e)).sort((e,t)=>ta(e,n)-ta(t,n))[0];if(t)return t}}var hF=null,gF=null;function _F(){hF=null,gF!==null&&window.clearTimeout(gF),gF=null;let e=nT.get();e.guide?.kind===`prefix`&&nT.set({...e,guide:null})}function vF(){if(hF!==null){_F();return}W.get()||ti()===null||(hF=Date.now(),nT.set({...nT.get(),guide:{kind:`prefix`,armedAt:hF}}),gF!==null&&window.clearTimeout(gF),gF=window.setTimeout(_F,Xr.get().prefix.timeoutMs))}function yF(e,t){_F();let n=typeof t==`string`?[t]:t,r=mF(e,n);iT(pF(n),r?.id??null),r?.run(e)}var bF=null;function xF(){bF!==null&&window.clearTimeout(bF),bF=null;let e=nT.get();e.guide?.kind===`direct`&&nT.set({...e,guide:null})}function SF(){bF!==null||W.get()||(bF=window.setTimeout(()=>{_F(),nT.set({...nT.get(),guide:{kind:`direct`}})},400))}function CF(e){(0,g.useEffect)(()=>{let t=t=>{if(t.key===`Control`){t.repeat||SF();return}if(xF(),[`Shift`,`Alt`,`Meta`].includes(t.key))return;let n=Qa(t),{firstStrokes:r,timeoutMs:i}=Xr.get().prefix;if(hF!==null&&Date.now()-hF<=i){if(t.preventDefault(),t.stopImmediatePropagation(),t.key===`Escape`)return _F();yF(e,n);return}_F(),!W.get()&&n.some(e=>r.includes(e))&&(t.preventDefault(),t.stopImmediatePropagation(),vF())},n=e=>e.key===`Control`&&xF(),r=e=>{hF!==null&&(e.target instanceof Element&&e.target.closest(`.prefix-guide, .shortcut-badge, [data-prefix-arm]`)||_F())};return window.addEventListener(`keydown`,t,{capture:!0}),window.addEventListener(`keyup`,n,{capture:!0}),window.addEventListener(`pointerdown`,r,{capture:!0}),window.addEventListener(`blur`,xF),()=>{window.removeEventListener(`keydown`,t,{capture:!0}),window.removeEventListener(`keyup`,n,{capture:!0}),window.removeEventListener(`pointerdown`,r,{capture:!0}),window.removeEventListener(`blur`,xF),xF(),_F()}},[e])}function wF(e){let t=na(),n=new Map;for(let r of $i()){if(!r.prefix||!ea(r,t)||r.live?.(e)===!1)continue;let i=ta(r,t);for(let e of r.chords){let t=n.get(e);(!t||i<t.rank)&&n.set(e,{action:r.id,rank:i})}}return[...n].map(([e,{action:t}])=>({stroke:e,action:t}))}function TF(e){let t=new Map(Gr.map((e,t)=>[e.id,t])),n=new Map;for(let{stroke:t,action:r}of e)n.set(r,[...n.get(r)??[],t]);let r=new Map,i=[...n].sort(([e],[n])=>(t.get(e)??2**53-1)-(t.get(n)??2**53-1));for(let[e,t]of i){let n=uo(e);r.set(n,[...r.get(n)??[],{action:e,strokes:t}])}return[...r].map(([e,t])=>({category:e,actions:t}))}var EF=e=>e===`prefix.moreCommands`?So(`moreCommandsPrefix`):Eo(e);function DF(e){let[,t]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(e===null)return;let n=window.setTimeout(()=>t(e=>e+1),Math.max(30,e-Date.now()));return()=>window.clearTimeout(n)},[e])}function OF({model:e}){B();let t=v(nT);v(Xr),v(e.selection);let n=Date.now(),r=t.entries.filter(e=>n-e.at<tT),i=t.guide?.kind===`prefix`?t.guide.armedAt:null,a=i!==null&&n-i<eT?i+eT:null;DF(a??(r[0]?r[0].at+tT:null));let o=t.guide?.kind===`direct`||i!==null&&a===null;if(!o&&!t.guide&&r.length===0)return null;if(o&&t.guide){let n=t.guide.kind===`direct`,r=n?Qw(ra(e,na()),ti()):wF(e);return(0,V.jsxs)(`output`,{className:`mono ${it}`,onMouseDown:e=>e.preventDefault(),children:[(0,V.jsxs)(`div`,{className:ot,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:n?So(`directLayer`):So(`commandLayer`,{prefix:ti()??``})}),(0,V.jsx)(`span`,{className:`keys-only text-muted`,children:So(n?`releaseCtrl`:`escCancel`)})]}),(0,V.jsx)(`div`,{className:st,children:TF(r).map(t=>(0,V.jsxs)(`div`,{className:ct,children:[(0,V.jsx)(`div`,{className:`text-accent`,children:Do(t.category)}),t.actions.map(({action:t,strokes:r})=>(0,V.jsxs)(`button`,{type:`button`,className:lt,disabled:n,onClick:()=>r[0]&&yF(e,r[0]),children:[(0,V.jsx)(`span`,{className:at,children:r.map($a).join(`/`)}),(0,V.jsx)(`span`,{children:EF(t)})]},t))]},t.category))})]})}return(0,V.jsxs)(`output`,{className:St,children:[r.map(e=>(0,V.jsxs)(kF,{at:e.at,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:ti()}),` + `,e.stroke,` →`,` `,e.action?EF(e.action):(0,V.jsx)(`span`,{className:`text-muted`,children:`∅`})]},e.id)),i!==null&&(0,V.jsxs)(`div`,{className:Ct(!1),children:[(0,V.jsx)(`span`,{className:`text-accent`,children:ti()}),` ⋯`]})]})}function kF({at:e,children:t}){let[n]=(0,g.useState)(Date.now),r=n-e>140,i={"--hud-out":`${e+tT-140-n}ms`};return(0,V.jsx)(`div`,{className:Ct(r),style:i,children:t})}function AF({model:e,bindingId:t,head:n=!1}){let r=v(nT);v(Xr);let i=R_().prefs.prefixTap;if(r.guide?.kind!==`prefix`||i!==`local`)return null;let a=Zw({bindingId:t,reachability:ra(e,na()),prefixKey:ti()});if(!a)return null;let o=$i().find(e=>e.id===t&&e.prefix)?.chords[0];return(0,V.jsx)(`button`,{type:`button`,className:`mono ${Xe(n)}`,onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),o&&yF(e,o)},children:a})}var jF=[`workingBorder`,`runningTitle`,`taskColors`,`glyphSet`,`colorblind`];function MF(e){let{client:t}=e,n=R_(),r=uN(),i=v(k_);dN(e),xP(e),(0,g.useEffect)(()=>{let e=()=>{I_(t).catch(()=>void 0),YD(t).catch(()=>void 0)},n=()=>document.visibilityState===`visible`&&e(),r=t.onOpen(e);return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,n),()=>{r(),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,n)}},[t]),(0,g.useEffect)(()=>{let e=document.documentElement,t=i?i[r]:v_(n.themes,n.prefs.theme,r),a=t?E_(t,n.prefs):{};for(let[t,n]of Object.entries(a))e.style.setProperty(t,n);e.style.colorScheme=r;for(let t of jF)e.dataset[t]=String(n.prefs[t]);O_.set(t?D_(t):null);let o=document.querySelector(`meta[name="theme-color"]`);o||(o=document.createElement(`meta`),o.name=`theme-color`,document.head.append(o)),o.content=getComputedStyle(document.body).backgroundColor},[n,r,i]),(0,g.useEffect)(()=>{n.loaded&&mn.get()!==n.prefs.zen&&mn.set(n.prefs.zen)},[n.loaded,n.prefs.zen]),(0,g.useEffect)(()=>mn.subscribe(()=>{mn.get()!==N_.get().prefs.zen&&L_(t,`zen`,mn.get())}),[t])}var NF={sidebar:[{id:`sidebar.nav`,msg:`move`},{id:`sidebar.select`,msg:`open`}],files:[{id:`files.nav`,msg:`move`},{id:`files.hierarchy`,msg:`collapse`},{id:`files.open`,msg:`open`,always:!0},{id:`files.diff`,msg:`diff`,always:!0}]};function PF(e,t){return NF[e].flatMap(e=>{if(t===`always`&&e.always!==!0)return[];let n=io(e.id);return n?[{cap:n,msg:e.msg}]:[]})}var FF=e=>`rove.web.hintUsed.${e}`,IF=_({sidebar:localStorage.getItem(FF(`sidebar`))===`1`});function LF(e){IF.get()[e]||(localStorage.setItem(FF(e),`1`),IF.set({...IF.get(),[e]:!0}))}function RF(e,t){return e.kind===`task`&&t.kind===`task`?e.taskId===t.taskId:e.kind===`page`&&t.kind===`page`?e.id===t.id:e.kind===`new`&&t.kind===`new`}var zF={entries:[],at:-1};function BF(e,t){let n=e.entries[e.at];if(n&&RF(n,t)){let n=[...e.entries];return n[e.at]=t,{entries:n,at:e.at}}let r=[...e.entries.slice(0,e.at+1),t].slice(-50);return{entries:r,at:r.length-1}}function VF(e,t,n){for(let r=e.at+t;r>=0&&r<e.entries.length;r+=t){let t=e.entries[r];if(t&&n(t))return r}return-1}var HF=_(zF);function UF(e){let t=un.get();if(t)return{kind:`page`,id:t};let n=hn.get();if(n)return{kind:`new`,start:n};let{taskId:r,tabId:i}=e.selection.get();return r?{kind:`task`,taskId:r,tabId:i}:null}function WF(e,t){if(t.kind!==`task`)return!0;let n=e.tasks.get()?.tasks.find(e=>e.id===t.taskId);return n!==void 0&&!n.deleting}var GF=!1;function KF(e){let t=!1,n=()=>{t||(t=!0,queueMicrotask(()=>{if(t=!1,GF)return;let n=UF(e);n&&HF.set(BF(HF.get(),n))}))};n();let r=[e.selection.subscribe(n),un.subscribe(n),hn.subscribe(n)];return()=>{for(let e of r)e()}}function qF(e,t){let n=HF.get(),r=VF(n,t,t=>WF(e,t)),i=n.entries[r];i&&(GF=!0,i.kind===`task`?(un.set(null),hn.set(null),e.select(i.taskId,i.tabId)):i.kind===`page`?(hn.set(null),ya(i.id)):(un.set(null),hn.set(i.start)),HF.set({entries:n.entries,at:r}),queueMicrotask(()=>{GF=!1}))}var JF={working:`info`,waiting:`warning`,error:`attention`,done:`success`,idle:`muted`},YF={prOpen:``,prMerged:``,prClosed:``};function XF(e){let t=ZF(e);return{look:t,tone:JF[t]}}function ZF(e){switch(e?.kind){case`busy`:case`running`:return`working`;case`needs-input`:return`waiting`;case`attention`:return e.reason===`rate_limited`?`waiting`:`error`;case`unseen`:return`done`;default:return`idle`}}function QF(e){return e.rowStatus?.kind===`needs-input`||e.rowStatus?.kind===`attention`}var $F={busy:0,attention:1,"needs-input":2,running:3,unseen:4,idle:5};function eI(e){let t;for(let{rowStatus:n}of e)n&&(!t||$F[n.kind]<$F[t.kind]||n.kind===t.kind&&n.since>t.since)&&(t=n);return t}function tI(e,t,n){if(!e)return null;if(e.lifecycle===`merged`)return{glyph:YF.prMerged,tone:n?`text-muted`:`text-merged`,state:`merged`};if(e.lifecycle===`closed`)return{glyph:YF.prClosed,tone:`text-muted`,state:`closed`};if(e.lifecycle!==`open`&&e.lifecycle!==`ready_to_merge`&&e.lifecycle!==`unknown`)return null;let r=t===`conflict`?`conflict`:t===`failing`?`failing`:t===`passing`?`passing`:e.checkState===`pending`?`pending`:void 0,i=n?`text-muted`:r===`conflict`||r===`failing`?`text-error`:r===`passing`?`text-success`:`text-muted`;return{glyph:YF.prOpen,tone:i,state:`open`,...r?{checks:r}:{}}}function nI(e){return tI(e.pr,e.prChip,e.prChipStale===!0)}function rI(e){return tI(e,(e.mergeable??``).toUpperCase()===`CONFLICTING`?`conflict`:e.checkState===`failing`?`failing`:e.checkState===`passing`?`passing`:null,!1)}function iI(e){let t=e=>e.state===`open`?e.tone===`text-error`?0:1:e.state===`merged`?2:3;return[...e].sort((e,n)=>t(e)-t(n))[0]}var aI=192,oI=`rove.web.railWidth`,sI=`rove.web.railFolded`;function cI(){let e=Number(localStorage.getItem(oI));return Number.isFinite(e)&&e>0?e:null}var lI=_(cI());lI.subscribe(()=>{let e=lI.get();e===null?localStorage.removeItem(oI):localStorage.setItem(oI,String(Math.round(e)))}),lI.subscribe(En);var uI=_(localStorage.getItem(sI)===`1`);uI.subscribe(()=>localStorage.setItem(sI,uI.get()?`1`:`0`));var dI=_(!1),fI=null;function pI(e){fI!==null&&window.clearTimeout(fI),fI=null,e?dI.set(!0):fI=window.setTimeout(()=>dI.set(!1),250)}uI.subscribe(()=>dI.set(!1)),uI.subscribe(En);function mI(e,t=window.innerWidth){let n=Math.max(aI,t-320);return Math.max(aI,Math.min(n,Math.round(e)))}var hI=`flex-none fill-none stroke-current [stroke-linecap:round] [stroke-linejoin:round] [stroke-width:1.25]`,gI=(e={})=>`relative grid cursor-pointer place-items-center rounded-sm border-none p-0 disabled:cursor-default disabled:opacity-35 [&_svg]:fill-none [&_svg]:stroke-current [&_svg]:[stroke-linecap:round] [&_svg]:[stroke-linejoin:round] [&_svg]:[stroke-width:1.25] touch:after:absolute touch:after:-inset-x-px touch:after:-top-2 touch:after:-bottom-1.25 touch:after:content-[''] touch:first:after:-left-2 ${e.tool?`size-5.5 flex-none`:`size-6.5`} ${e.tool||e.small?`[&_svg]:size-3.5`:`[&_svg]:size-4`} ${e.on?`bg-accent-soft text-accent`:`bg-transparent text-subtle enabled:hover:bg-hover enabled:hover:text-ink`}`,_I=`absolute top-2 left-2 z-7 flex items-center gap-0.5`,vI=`[&.is-resizing_iframe]:pointer-events-none`,yI=e=>`side-panel ${We} relative row-1 flex min-h-0 min-w-0 flex-col ${vI} ${e?`flex-1 p-0`:`pt-2 pr-1 pb-1 pl-0`}`,bI=`grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)] [--divider:5px] *:col-1 ${vI}`,xI=e=>`side-head flex min-h-6.5 min-w-0 items-center gap-0.5 pb-1.5 font-mono text-meta normal-nums ${e?`px-2 pt-0`:`narrow:px-2 narrow:pt-0`}`,SI=`scrollbar-none flex min-w-0 flex-1 gap-2 overflow-x-auto`,CI=e=>`group/ptab relative flex max-w-40 items-center hover:text-ink data-[drop=after]:shadow-[inset_-2px_0_0_var(--accent)] data-[drop=before]:shadow-[inset_2px_0_0_var(--accent)] ${e.active?`is-active text-ink`:`text-muted`} ${e.compact&&!e.active?`min-w-0 max-w-24 flex-none`:`min-w-18 flex-initial`}`,wI=e=>`flex min-w-0 cursor-pointer items-center gap-1.5 border-none bg-transparent text-inherit [font:inherit] ${e?`py-1 pr-1.75 pl-2`:`py-1 pr-0.5 pl-2`}`,TI=`truncate`,EI=`touch:relative size-4 flex-none cursor-pointer rounded-xs border-none bg-transparent p-0 mr-1 font-mono text-title leading-none text-subtle opacity-0 group-hover/ptab:opacity-100 hover:bg-hover hover:text-ink focus-visible:opacity-100 [@media(hover:none)]:opacity-100 touch:after:absolute touch:after:-inset-1.5 touch:after:-left-1 touch:after:content-['']`,DI=`ml-auto flex gap-0.5`,OI=`relative row-3 cursor-row-resize touch-none before:absolute before:inset-x-0 before:top-[calc(var(--divider)/2)] before:h-px before:bg-line before:content-[''] hover:before:bg-line-active after:absolute after:inset-x-0 after:-inset-y-0.75 after:content-['']`,kI=`side-view flex min-h-0 min-w-0 flex-col [&[hidden]]:hidden`,AI=`row-2 m-auto flex max-w-[44ch] flex-col items-center gap-2.5 p-4 text-center font-mono text-meta leading-[1.5] text-subtle normal-nums`,jI=`flex min-h-0 flex-1 flex-col gap-1.5`,MI=`flex items-center gap-0.5 [&_svg]:flex-none`,NI=`mx-0.5 min-w-0 flex-1 rounded-sm border-none bg-inset px-2 py-1 text-ink [font-size:var(--fs-meta)] focus:bg-hover focus:outline-none aria-invalid:text-muted`,PI=`min-w-0 flex-1 rounded-sm border-none bg-paper`;function FI({edge:e,className:t,...n}){return(0,V.jsx)(`div`,{"data-grip":``,className:Me(`absolute inset-y-0 z-5 w-1.5 cursor-col-resize touch-none`,`after:absolute after:inset-y-0 after:w-0.5 after:bg-line-active after:opacity-0 after:transition-opacity after:duration-120`,`hover:after:opacity-100 hover:after:delay-250 active:after:bg-accent active:after:opacity-100 active:after:delay-0`,e===`right`?`right-0 after:right-0`:`left-0 after:left-0`,t),...n})}var II=400;function LI({rail:e}){B();let t=(0,g.useRef)(null),n=(0,g.useRef)(0);return(0,V.jsx)(FI,{edge:`right`,title:z(`layout.railResize`),onPointerDown:n=>{t.current={x:n.clientX,width:e.current?.getBoundingClientRect().width??0,moved:!1},n.currentTarget.setPointerCapture(n.pointerId),Dn(!0)},onPointerMove:e=>{let n=t.current;!n||e.clientX===n.x||(n.moved=!0,lI.set(mI(n.width+e.clientX-n.x)))},onPointerUp:()=>{let e=t.current;if(t.current=null,!e)return;if(e.moved){n.current=0;return}let r=Date.now();r-n.current<II?(n.current=0,lI.set(null)):n.current=r},onLostPointerCapture:()=>Dn(!1)})}function RI({side:e}){return(0,V.jsxs)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`11`,rx:`2.5`}),(0,V.jsx)(`path`,{d:e===`left`?`M6 2.5v11`:`M10 2.5v11`})]})}function zI({model:e}){B();let t=v(HF),n=v(uI),r=v(e.tasks),i=t=>WF(e,t),a=z(n?`layout.railUnfold`:`layout.railFold`),o=n&&(r?.tasks??[]).some(QF);return(0,V.jsxs)(`div`,{className:_I,onMouseEnter:()=>n&&dI.get()&&pI(!0),onMouseLeave:()=>n&&dI.get()&&pI(!1),children:[(0,V.jsxs)(`button`,{type:`button`,className:gI(),title:a,"aria-label":a,onClick:()=>uI.set(!n),children:[(0,V.jsx)(RI,{side:`left`}),o&&(0,V.jsx)(`span`,{className:`absolute top-0.75 right-0.75 size-1.5 rounded-full bg-accent`})]}),(0,V.jsx)(`button`,{type:`button`,className:gI(),title:z(`layout.navBack`),"aria-label":z(`layout.navBack`),disabled:VF(t,-1,i)<0,onClick:()=>qF(e,-1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10 3.5 5.5 8l4.5 4.5`})})}),(0,V.jsx)(`button`,{type:`button`,className:gI(),title:z(`layout.navForward`),"aria-label":z(`layout.navForward`),disabled:VF(t,1,i)<0,onClick:()=>qF(e,1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M6 3.5 10.5 8 6 12.5`})})})]})}var BI={terminal:`layout.narrowTerminal`,chat:`layout.narrowChat`,files:`layout.narrowFiles`,diff:`layout.narrowDiff`,browser:`layout.narrowBrowser`,quota:`layout.narrowQuota`};function VI({taskId:e}){B();let t=v(Ua);return(0,V.jsxs)(`div`,{className:Ke,children:[(0,V.jsx)(`button`,{type:`button`,className:`mono ${qe}`,onClick:va,children:(0,V.jsx)(`span`,{className:`text-accent`,children:`‹ ${Oo(`narrowBack`)}`})}),e&&(0,V.jsx)(`span`,{className:`mono ml-auto flex gap-0.5`,role:`tablist`,children:[`terminal`,...Ha].map(n=>(0,V.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===n,className:Je,onClick:()=>n===`terminal`?Ua.set(n):Qk(e,n),children:z(BI[n])},n))})]})}function HI({title:e}){return B(),(0,V.jsxs)(`button`,{type:`button`,className:nr({}),onClick:_a,children:[(0,V.jsx)(`span`,{className:`${or} font-bold text-accent`,children:`↩`}),(0,V.jsx)(`span`,{className:rr,children:ko(`recentJump`,{title:e})})]})}function UI({pane:e}){B();let{prefs:t}=R_(),n=v(IF)[e];if(!t.keyHints)return null;let r=PF(e,n?`always`:`firstUse`);return r.length===0?null:(0,V.jsx)(`p`,{className:`mono text-muted ${Ye}`,children:(0,V.jsx)(AT,{text:r.map(e=>`${Yr(e.cap)} ${Co(`pane.${e.msg}`)}`).join(` · `)})})}var WI=`rove.awaySeen`,GI=6e4,KI=e=>e.filter(e=>!e.deleting),qI=e=>e.pr?.lifecycle===`merged`,JI={error:!0,dead:!0};function YI(e,t,n){if(!t||n-t.at<=6e5)return null;let r=KI(e),i=e=>(e.activity?.since??0)>t.at,a=r.filter(e=>JI[e.activity?.state??``]===!0&&i(e)),o=r.filter(e=>e.group===`waiting-on-you`&&!a.includes(e)),s=r.filter(e=>e.activity?.state===`turn_complete`&&i(e)),c=r.filter(e=>qI(e)&&!t.merged.includes(e.id));return s.length+o.length+a.length+c.length===0?null:{since:t.at,finished:s,needs:o,failed:a,merged:c}}var XI=_(null);function ZI(){try{let e=JSON.parse(localStorage.getItem(WI)??`null`);return e&&typeof e.at==`number`&&Array.isArray(e.merged)?e:null}catch{return null}}function QI(e,t){let n={at:t,merged:KI(e).filter(qI).map(e=>e.id)};try{localStorage.setItem(WI,JSON.stringify(n))}catch{}}var $I=8e3;function eL(e,t){let n=null,r=0,i,a=()=>{let t=e();t&&!document.hidden&&QI(t.tasks,Date.now())},o=()=>{n=null,a()},s=()=>{let t=e();if(!t||document.hidden)return;let s=Date.now();if(!n){let e=ZI();e&&s-e.at>6e5&&(n=e,r=s+$I,i=setTimeout(o,$I))}if(!n){a();return}let c=YI(t.tasks,n,r-$I);c&&XI.set(c)};s();let c=t(s);document.addEventListener(`visibilitychange`,s);let l=setInterval(()=>{n||a()},GI);return()=>{c(),document.removeEventListener(`visibilitychange`,s),clearInterval(l),clearTimeout(i)}}var tL=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});function nL(e,t,n){let r=t.currentTarget.getBoundingClientRect();sn.set({x:r.left,y:r.bottom,target:t.currentTarget,items:n.map(t=>({label:t.label,run:()=>e.select(t.id)}))})}function rL({model:e}){B(),(0,g.useEffect)(()=>eL(()=>e.tasks.get(),t=>e.tasks.subscribe(t)),[e]);let t=v(XI);if(!t)return null;let n=[{key:`finished`,rows:t.finished,open:n=>nL(e,n,t.finished)},{key:`needs`,rows:t.needs,open:()=>W.set((0,V.jsx)(FT,{model:e}))},{key:`failed`,rows:t.failed,open:n=>nL(e,n,t.failed)},{key:`merged`,rows:t.merged,open:n=>nL(e,n,t.merged)}];return(0,V.jsxs)(`div`,{className:lE,children:[(0,V.jsxs)(`div`,{className:uE,children:[(0,V.jsx)(`span`,{children:z(`rail.recap.since`,{time:tL(t.since)})}),(0,V.jsx)(H,{variant:`row`,hit:`tight`,className:`text-muted hover:text-ink`,"aria-label":z(`rail.recap.dismiss`),title:z(`rail.recap.dismiss`),onClick:()=>XI.set(null),children:`×`})]}),(0,V.jsx)(`div`,{className:dE,children:n.filter(e=>e.rows.length>0).map((e,t)=>(0,V.jsxs)(`span`,{className:`inline-flex gap-1.5`,children:[t>0&&(0,V.jsx)(`span`,{className:`text-subtle`,children:`·`}),(0,V.jsx)(H,{variant:`row`,hit:`tight`,className:fE(e.key===`needs`),onClick:e.open,children:z(`rail.recap.${e.key}`,{count:e.rows.length})})]},e.key))})]})}function iL(e,t){return e.filter(e=>e.groupId===t).sort((e,t)=>(e.createdAt??``).localeCompare(t.createdAt??``)||e.title.localeCompare(t.title))}var aL=400;function oL(e){let t=null;for(let n of e.history?.messages??[]){if(n.role!==`assistant`)continue;let e=(n.blocks??[]).flatMap(e=>e.type===`text`&&e.text?[e.text]:[]).join(`
|
|
119
|
+
`),confirmLabel:q(`worktrees`,`land.button`),onConfirm:async()=>{try{let r=await e.client.request(`task.land`,{taskId:t.id});G(q(`worktrees`,`land.done`,{branch:i,landedOn:r.landedOn,commit:r.commit.slice(0,8)})),n?.()}catch(e){throw Error(JP(e))}}}))}function XP(e,t,n,r){let i=t.branch||t.title;W.set((0,V.jsx)(dr,{title:z(`taskops.publishTitle`),body:z(`taskops.publishBody`,{branch:i,host:n}),confirmLabel:z(`taskops.publishButton`),onConfirm:async()=>{let n=await e.client.request(`task.land`,{taskId:t.id}),a=n.published?.prUrl;a?G(z(`taskops.publishedPr`,{branch:i,url:a})):G(z(`taskops.publishedNoPr`,{branch:i,reason:QP(n.published?.prError??``)}),`error`),r?.()}}))}async function ZP(e,t){try{let n=await e.client.request(`task.syncBase`,{taskId:t});G(q(`tasks`,n.alreadyCurrent?`sync.alreadyCurrent`:`sync.done`,{base:n.baseRef}))}catch(e){let t=K(e),n=KP.exec(t),r=qP.exec(t);G(n?q(`tasks`,`sync.conflict`,{files:n[1]?.trim()||`?`}):r?q(`tasks`,`sync.dirty`,{files:r[1]?.trim()||`?`}):q(`tasks`,`sync.failed`,{error:t}),`error`)}}function QP(e){return e.split(`
|
|
120
|
+
`).find(e=>e.trim().length>0)?.trim()??e.trim()}async function $P(e,t,n){try{let r=await e.client.request(`task.fixChecks`,e.engineTarget(t));r.outcome===`unavailable`?G(q(`files`,`toast.ciChecksUnavailable`,{detail:QP(r.detail??``)}),`error`):r.outcome===`none`?G(q(`files`,`toast.ciNoFailingChecks`),`error`):G(n)}catch(e){G(K(e),`error`)}}async function eF(e,t){try{let n=await e.client.request(`task.openEditor`,{taskId:t});n.outcome===`noEditor`?G(q(`tasks`,`toast.noEditor`),`error`):n.outcome===`failed`&&G(q(`tasks`,`toast.openWorktreeFailed`,{label:n.label??``}),`error`)}catch(e){G(q(`tasks`,`toast.worktreeErrorGeneric`,{message:K(e)}),`error`)}}function tF(e,t){let n=e.tasks.get();return[...n?.tasks??[],...n?.archived??[]].filter(e=>e.parentTaskId===t)}function nF(e,t){let n=tF(e,t.id),r=n.length>0,i=n=>e.client.request(`task.delete`,{taskId:t.id,...n}).then(()=>{});return(0,V.jsx)(dr,{title:r?q(`tasks`,`confirm.childrenTitle`,{title:t.label,count:String(n.length)}):q(`tasks`,t.kind===`dir`?`confirm.deleteTitleDir`:`confirm.deleteTitle`,{title:t.label}),body:r?q(`tasks`,`confirm.childrenBody`):q(`tasks`,t.kind===`dir`?`confirm.deleteBodyDir`:`confirm.deleteBodyTask`),confirmLabel:q(`tasks`,r?`confirm.childrenPromote`:`confirm.deleteConfirm`),onConfirm:()=>i({}),...r?{secondary:{label:q(`tasks`,`confirm.childrenCascade`),onConfirm:()=>i({cascade:!0})}}:{},escalate:{when:e=>e instanceof d_&&e.code===`DIRTY_WORKTREE`,label:q(`tasks`,`confirm.forceDeleteConfirm`),title:q(`tasks`,`confirm.forceDeleteTitle`,{title:t.label}),body:e=>`${q(`worktrees`,`delete.forceBody`,{branch:t.branch||t.title})}\n\n${q(`worktrees`,`delete.forceReason`,{reason:K(e).replace(`task ${t.id} `,``)})}`,run:e=>i({force:!0,...e?{cascade:!0}:{}})}})}function rF(e,t){let n=tF(e,t.id),r=n.length>0,i=t.label,a=async()=>{let{tabs:n}=await e.client.request(`task.tabs`,{taskId:t.id});for(let r of n)await e.client.request(`tab.close`,{taskId:t.id,tabId:r.id});await e.refreshTabsNow()},o,s=async t=>{for(let r of n)try{await e.client.request(`task.delete`,{taskId:r.id,cascade:!0,...t?{force:!0}:{}})}catch(e){throw o=r.title,e}await a()};return(0,V.jsx)(dr,{title:r?q(`tasks`,`confirm.childrenTitle`,{title:i,count:String(n.length)}):q(`tasks`,`confirm.deleteTitleDir`,{title:i}),body:q(`tasks`,r?`confirm.childrenBodyMain`:`confirm.deleteBodyMain`),confirmLabel:q(`tasks`,r?`confirm.childrenKeepMain`:`confirm.deleteConfirm`),onConfirm:a,...r?{secondary:{label:q(`tasks`,`confirm.childrenCascadeMain`),onConfirm:()=>s(!1)}}:{},escalate:{when:e=>e instanceof d_&&e.code===`DIRTY_WORKTREE`,label:q(`tasks`,`confirm.forceDeleteConfirm`),title:q(`tasks`,`confirm.forceDeleteTitle`,{title:i}),body:e=>`${q(`worktrees`,`delete.forceBody`,{branch:o??i})}\n\n${K(e)}`,run:()=>s(!0)}})}async function iF(e,t){let n=t.archived!==!0,r=t.label,i=async i=>{await e.client.request(`task.archive`,{taskId:t.id,archived:n,...i?{force:!0}:{}}),G(q(`tasks`,n?`archive.done`:`archive.restored`,{title:r}))};try{await i(!1)}catch(e){if(n&&e instanceof d_&&e.code===`TASK_BUSY`){W.set((0,V.jsx)(dr,{title:q(`tasks`,`archive.busyTitle`),body:q(`tasks`,`archive.busyBody`,{title:r}),confirmLabel:q(`tasks`,`archive.busyConfirm`),onConfirm:()=>i(!0)}));return}G(q(`tasks`,n?`archive.failed`:`archive.restoreFailed`,{error:K(e)}),`error`)}}function aF(e,t,n){return(0,V.jsx)(dr,{title:q(`tasks`,`confirm.forgetProjectTitle`,{title:n}),body:q(`tasks`,`confirm.forgetProjectBody`),confirmLabel:q(`tasks`,`confirm.forgetProjectConfirm`),onConfirm:async()=>{try{await e.client.request(`project.forget`,{repo:t})}catch(e){throw Error(q(`tasks`,`toast.forgetProjectFailed`,{error:K(e)}))}}})}var oF=e=>{let{taskId:t}=e.selection.get();return e.tasks.get()?.tasks.find(e=>e.id===t)??null},sF=e=>{let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return!!r&&!Ow(r.split)},cF=[{id:`app.refresh`,live:()=>ui.get().stale,run:e=>mi(e.client)},{id:`palette.open`,live:()=>!0,run:aA},{id:`task.new.global`,live:()=>!0,run:e=>tO(oF(e)?.repo)},{id:`chat.tab.fork`,live:e=>!!oF(e),run:e=>{let t=oF(e);t&&W.set((0,V.jsx)(KC,{model:e,taskId:t.id,context:`continue`}))}},{id:`chat.fork.new`,live:e=>!!oF(e),run:e=>{let t=oF(e);t&&W.set((0,V.jsx)(KC,{model:e,taskId:t.id,destination:`fork`}))}},{id:`settings.open`,live:()=>!0,run:e=>W.set((0,V.jsx)(VP,{model:e}))},{id:`inbox.show`,live:()=>!0,run:e=>W.set((0,V.jsx)(FT,{model:e}))},{id:`focus.previous`,live:()=>!0,run:()=>Yi(-1)},{id:`focus.next`,live:()=>!0,run:()=>Yi(1)},{id:`workspace.zenToggle`,live:e=>!!oF(e),run:()=>mn.set(!mn.get())},{id:`files.createPR`,live:e=>!!oF(e),run:e=>{let t=oF(e);t&&e.client.request(`tab.requestPR`,e.engineTarget(t.id)).then(()=>G(z(`files.prRequested`))).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},{id:`chat.tab.close`,live:e=>!!e.selection.get().tabId&&sF(e),run:e=>{let{taskId:t,tabId:n}=e.selection.get();!t||!n||e.client.request(`tab.close`,{taskId:t,tabId:n}).then(()=>e.refreshTabsNow()).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},{id:`kanban.open`,live:e=>e.installedMods.get().has(`kanban`),run:()=>ya(`kanban`)},{id:`automations.open`,live:()=>!0,run:()=>ya(`routines`)},{id:`workItems.open`,live:e=>e.installedMods.get().has(`issues`),run:()=>ya(`issues`)},{id:`task.moveMode`,live:e=>!!lA(e),run:()=>{qT(!GT.get()),document.querySelector(`.rail`)?.focus()}},{id:`files.syncBase`,live:e=>lA(e)?.kind===`task`,run:e=>{let t=lA(e);t&&ZP(e,t.id)}},{id:`files.fixChecks`,live:e=>!!lA(e),run:e=>{let t=lA(e);t&&$P(e,t.id,z(`taskops.fixSent`))}},{id:`task.openEditor`,live:e=>!!lA(e),run:e=>{let t=lA(e);t&&eF(e,t.id)}}];Zi(()=>cF.map(e=>({id:e.id,chords:oi(e.id),prefix:!0,live:e.live,run:e.run})));function lF(e){return $a(e[0]??``)}function uF(e,t){let n=na(),r=$i().filter(t=>t.prefix&&ea(t,n)&&t.live?.(e)!==!1);for(let e of t){let t=r.filter(t=>t.chords.includes(e)).sort((e,t)=>ta(e,n)-ta(t,n))[0];if(t)return t}}var dF=null,fF=null;function pF(){dF=null,fF!==null&&window.clearTimeout(fF),fF=null;let e=nT.get();e.guide?.kind===`prefix`&&nT.set({...e,guide:null})}function mF(){if(dF!==null){pF();return}W.get()||ti()===null||(dF=Date.now(),nT.set({...nT.get(),guide:{kind:`prefix`,armedAt:dF}}),fF!==null&&window.clearTimeout(fF),fF=window.setTimeout(pF,Xr.get().prefix.timeoutMs))}function hF(e,t){pF();let n=typeof t==`string`?[t]:t,r=uF(e,n);iT(lF(n),r?.id??null),r?.run(e)}var gF=null;function _F(){gF!==null&&window.clearTimeout(gF),gF=null;let e=nT.get();e.guide?.kind===`direct`&&nT.set({...e,guide:null})}function vF(){gF!==null||W.get()||(gF=window.setTimeout(()=>{pF(),nT.set({...nT.get(),guide:{kind:`direct`}})},400))}function yF(e){(0,g.useEffect)(()=>{let t=t=>{if(t.key===`Control`){t.repeat||vF();return}if(_F(),[`Shift`,`Alt`,`Meta`].includes(t.key))return;let n=Qa(t),{firstStrokes:r,timeoutMs:i}=Xr.get().prefix;if(dF!==null&&Date.now()-dF<=i){if(t.preventDefault(),t.stopImmediatePropagation(),t.key===`Escape`)return pF();hF(e,n);return}pF(),!W.get()&&n.some(e=>r.includes(e))&&(t.preventDefault(),t.stopImmediatePropagation(),mF())},n=e=>e.key===`Control`&&_F(),r=e=>{dF!==null&&(e.target instanceof Element&&e.target.closest(`.prefix-guide, .shortcut-badge, [data-prefix-arm]`)||pF())};return window.addEventListener(`keydown`,t,{capture:!0}),window.addEventListener(`keyup`,n,{capture:!0}),window.addEventListener(`pointerdown`,r,{capture:!0}),window.addEventListener(`blur`,_F),()=>{window.removeEventListener(`keydown`,t,{capture:!0}),window.removeEventListener(`keyup`,n,{capture:!0}),window.removeEventListener(`pointerdown`,r,{capture:!0}),window.removeEventListener(`blur`,_F),_F(),pF()}},[e])}function bF(e){let t=na(),n=new Map;for(let r of $i()){if(!r.prefix||!ea(r,t)||r.live?.(e)===!1)continue;let i=ta(r,t);for(let e of r.chords){let t=n.get(e);(!t||i<t.rank)&&n.set(e,{action:r.id,rank:i})}}return[...n].map(([e,{action:t}])=>({stroke:e,action:t}))}function xF(e){let t=new Map(Gr.map((e,t)=>[e.id,t])),n=new Map;for(let{stroke:t,action:r}of e)n.set(r,[...n.get(r)??[],t]);let r=new Map,i=[...n].sort(([e],[n])=>(t.get(e)??2**53-1)-(t.get(n)??2**53-1));for(let[e,t]of i){let n=uo(e);r.set(n,[...r.get(n)??[],{action:e,strokes:t}])}return[...r].map(([e,t])=>({category:e,actions:t}))}var SF=e=>e===`prefix.moreCommands`?So(`moreCommandsPrefix`):Eo(e);function CF(e){let[,t]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(e===null)return;let n=window.setTimeout(()=>t(e=>e+1),Math.max(30,e-Date.now()));return()=>window.clearTimeout(n)},[e])}function wF({model:e}){B();let t=v(nT);v(Xr),v(e.selection);let n=Date.now(),r=t.entries.filter(e=>n-e.at<tT),i=t.guide?.kind===`prefix`?t.guide.armedAt:null,a=i!==null&&n-i<eT?i+eT:null;CF(a??(r[0]?r[0].at+tT:null));let o=t.guide?.kind===`direct`||i!==null&&a===null;if(!o&&!t.guide&&r.length===0)return null;if(o&&t.guide){let n=t.guide.kind===`direct`,r=n?Qw(ra(e,na()),ti()):bF(e);return(0,V.jsxs)(`output`,{className:`mono ${it}`,onMouseDown:e=>e.preventDefault(),children:[(0,V.jsxs)(`div`,{className:ot,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:n?So(`directLayer`):So(`commandLayer`,{prefix:ti()??``})}),(0,V.jsx)(`span`,{className:`keys-only text-muted`,children:So(n?`releaseCtrl`:`escCancel`)})]}),(0,V.jsx)(`div`,{className:st,children:xF(r).map(t=>(0,V.jsxs)(`div`,{className:ct,children:[(0,V.jsx)(`div`,{className:`text-accent`,children:Do(t.category)}),t.actions.map(({action:t,strokes:r})=>(0,V.jsxs)(`button`,{type:`button`,className:lt,disabled:n,onClick:()=>r[0]&&hF(e,r[0]),children:[(0,V.jsx)(`span`,{className:at,children:r.map($a).join(`/`)}),(0,V.jsx)(`span`,{children:SF(t)})]},t))]},t.category))})]})}return(0,V.jsxs)(`output`,{className:St,children:[r.map(e=>(0,V.jsxs)(TF,{at:e.at,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:ti()}),` + `,e.stroke,` →`,` `,e.action?SF(e.action):(0,V.jsx)(`span`,{className:`text-muted`,children:`∅`})]},e.id)),i!==null&&(0,V.jsxs)(`div`,{className:Ct(!1),children:[(0,V.jsx)(`span`,{className:`text-accent`,children:ti()}),` ⋯`]})]})}function TF({at:e,children:t}){let[n]=(0,g.useState)(Date.now),r=n-e>140,i={"--hud-out":`${e+tT-140-n}ms`};return(0,V.jsx)(`div`,{className:Ct(r),style:i,children:t})}function EF({model:e,bindingId:t,head:n=!1}){let r=v(nT);v(Xr);let i=R_().prefs.prefixTap;if(r.guide?.kind!==`prefix`||i!==`local`)return null;let a=Zw({bindingId:t,reachability:ra(e,na()),prefixKey:ti()});if(!a)return null;let o=$i().find(e=>e.id===t&&e.prefix)?.chords[0];return(0,V.jsx)(`button`,{type:`button`,className:`mono ${Xe(n)}`,onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),o&&hF(e,o)},children:a})}var DF=[`workingBorder`,`runningTitle`,`taskColors`,`glyphSet`,`colorblind`];function OF(e){let{client:t}=e,n=R_(),r=oN(),i=v(k_);sN(e),_P(e),(0,g.useEffect)(()=>{let e=()=>{I_(t).catch(()=>void 0),GD(t).catch(()=>void 0)},n=()=>document.visibilityState===`visible`&&e(),r=t.onOpen(e);return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,n),()=>{r(),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,n)}},[t]),(0,g.useEffect)(()=>{let e=document.documentElement,t=i?i[r]:v_(n.themes,n.prefs.theme,r),a=t?E_(t,n.prefs):{};for(let[t,n]of Object.entries(a))e.style.setProperty(t,n);e.style.colorScheme=r;for(let t of DF)e.dataset[t]=String(n.prefs[t]);O_.set(t?D_(t):null);let o=document.querySelector(`meta[name="theme-color"]`);o||(o=document.createElement(`meta`),o.name=`theme-color`,document.head.append(o)),o.content=getComputedStyle(document.body).backgroundColor},[n,r,i]),(0,g.useEffect)(()=>{n.loaded&&mn.get()!==n.prefs.zen&&mn.set(n.prefs.zen)},[n.loaded,n.prefs.zen]),(0,g.useEffect)(()=>mn.subscribe(()=>{mn.get()!==N_.get().prefs.zen&&L_(t,`zen`,mn.get())}),[t])}var kF={sidebar:[{id:`sidebar.nav`,msg:`move`},{id:`sidebar.select`,msg:`open`}],files:[{id:`files.nav`,msg:`move`},{id:`files.hierarchy`,msg:`collapse`},{id:`files.open`,msg:`open`,always:!0},{id:`files.diff`,msg:`diff`,always:!0}]};function AF(e,t){return kF[e].flatMap(e=>{if(t===`always`&&e.always!==!0)return[];let n=io(e.id);return n?[{cap:n,msg:e.msg}]:[]})}var jF=e=>`rove.web.hintUsed.${e}`,MF=_({sidebar:localStorage.getItem(jF(`sidebar`))===`1`});function NF(e){MF.get()[e]||(localStorage.setItem(jF(e),`1`),MF.set({...MF.get(),[e]:!0}))}function PF(e,t){return e.kind===`task`&&t.kind===`task`?e.taskId===t.taskId:e.kind===`page`&&t.kind===`page`?e.id===t.id:e.kind===`new`&&t.kind===`new`}var FF={entries:[],at:-1};function IF(e,t){let n=e.entries[e.at];if(n&&PF(n,t)){let n=[...e.entries];return n[e.at]=t,{entries:n,at:e.at}}let r=[...e.entries.slice(0,e.at+1),t].slice(-50);return{entries:r,at:r.length-1}}function LF(e,t,n){for(let r=e.at+t;r>=0&&r<e.entries.length;r+=t){let t=e.entries[r];if(t&&n(t))return r}return-1}var RF=_(FF);function zF(e){let t=un.get();if(t)return{kind:`page`,id:t};let n=hn.get();if(n)return{kind:`new`,start:n};let{taskId:r,tabId:i}=e.selection.get();return r?{kind:`task`,taskId:r,tabId:i}:null}function BF(e,t){if(t.kind!==`task`)return!0;let n=e.tasks.get()?.tasks.find(e=>e.id===t.taskId);return n!==void 0&&!n.deleting}var VF=!1;function HF(e){let t=!1,n=()=>{t||(t=!0,queueMicrotask(()=>{if(t=!1,VF)return;let n=zF(e);n&&RF.set(IF(RF.get(),n))}))};n();let r=[e.selection.subscribe(n),un.subscribe(n),hn.subscribe(n)];return()=>{for(let e of r)e()}}function UF(e,t){let n=RF.get(),r=LF(n,t,t=>BF(e,t)),i=n.entries[r];i&&(VF=!0,i.kind===`task`?(un.set(null),hn.set(null),e.select(i.taskId,i.tabId)):i.kind===`page`?(hn.set(null),ya(i.id)):(un.set(null),hn.set(i.start)),RF.set({entries:n.entries,at:r}),queueMicrotask(()=>{VF=!1}))}var WF={working:`info`,waiting:`warning`,error:`attention`,done:`success`,idle:`muted`},GF={prOpen:``,prMerged:``,prClosed:``};function KF(e){let t=qF(e);return{look:t,tone:WF[t]}}function qF(e){switch(e?.kind){case`busy`:case`running`:return`working`;case`needs-input`:return`waiting`;case`attention`:return e.reason===`rate_limited`?`waiting`:`error`;case`unseen`:return`done`;default:return`idle`}}function JF(e){return e.rowStatus?.kind===`needs-input`||e.rowStatus?.kind===`attention`}var YF={busy:0,attention:1,"needs-input":2,running:3,unseen:4,idle:5};function XF(e){let t;for(let{rowStatus:n}of e)n&&(!t||YF[n.kind]<YF[t.kind]||n.kind===t.kind&&n.since>t.since)&&(t=n);return t}function ZF(e,t,n){if(!e)return null;if(e.lifecycle===`merged`)return{glyph:GF.prMerged,tone:n?`text-muted`:`text-merged`,state:`merged`};if(e.lifecycle===`closed`)return{glyph:GF.prClosed,tone:`text-muted`,state:`closed`};if(e.lifecycle!==`open`&&e.lifecycle!==`ready_to_merge`&&e.lifecycle!==`unknown`)return null;let r=t===`conflict`?`conflict`:t===`failing`?`failing`:t===`passing`?`passing`:e.checkState===`pending`?`pending`:void 0,i=n?`text-muted`:r===`conflict`||r===`failing`?`text-error`:r===`passing`?`text-success`:`text-muted`;return{glyph:GF.prOpen,tone:i,state:`open`,...r?{checks:r}:{}}}function QF(e){return ZF(e.pr,e.prChip,e.prChipStale===!0)}function $F(e){return ZF(e,(e.mergeable??``).toUpperCase()===`CONFLICTING`?`conflict`:e.checkState===`failing`?`failing`:e.checkState===`passing`?`passing`:null,!1)}function eI(e){let t=e=>e.state===`open`?e.tone===`text-error`?0:1:e.state===`merged`?2:3;return[...e].sort((e,n)=>t(e)-t(n))[0]}var tI=192,nI=`rove.web.railWidth`,rI=`rove.web.railFolded`;function iI(){let e=Number(localStorage.getItem(nI));return Number.isFinite(e)&&e>0?e:null}var aI=_(iI());aI.subscribe(()=>{let e=aI.get();e===null?localStorage.removeItem(nI):localStorage.setItem(nI,String(Math.round(e)))}),aI.subscribe(En);var oI=_(localStorage.getItem(rI)===`1`);oI.subscribe(()=>localStorage.setItem(rI,oI.get()?`1`:`0`));var sI=_(!1),cI=null;function lI(e){cI!==null&&window.clearTimeout(cI),cI=null,e?sI.set(!0):cI=window.setTimeout(()=>sI.set(!1),250)}oI.subscribe(()=>sI.set(!1)),oI.subscribe(En);function uI(e,t=window.innerWidth){let n=Math.max(tI,t-320);return Math.max(tI,Math.min(n,Math.round(e)))}var dI=`flex-none fill-none stroke-current [stroke-linecap:round] [stroke-linejoin:round] [stroke-width:1.25]`,fI=(e={})=>`relative grid cursor-pointer place-items-center rounded-sm border-none p-0 disabled:cursor-default disabled:opacity-35 [&_svg]:fill-none [&_svg]:stroke-current [&_svg]:[stroke-linecap:round] [&_svg]:[stroke-linejoin:round] [&_svg]:[stroke-width:1.25] touch:after:absolute touch:after:-inset-x-px touch:after:-top-2 touch:after:-bottom-1.25 touch:after:content-[''] touch:first:after:-left-2 ${e.tool?`size-5.5 flex-none`:`size-6.5`} ${e.tool||e.small?`[&_svg]:size-3.5`:`[&_svg]:size-4`} ${e.on?`bg-accent-soft text-accent`:`bg-transparent text-subtle enabled:hover:bg-hover enabled:hover:text-ink`}`,pI=`absolute top-2 left-2 z-7 flex items-center gap-0.5`,mI=`[&.is-resizing_iframe]:pointer-events-none`,hI=e=>`side-panel ${We} relative row-1 flex min-h-0 min-w-0 flex-col ${mI} ${e?`flex-1 p-0`:`pt-2 pr-1 pb-1 pl-0`}`,gI=`grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)] [--divider:5px] *:col-1 ${mI}`,_I=e=>`side-head flex min-h-6.5 min-w-0 items-center gap-0.5 pb-1.5 font-mono text-meta normal-nums ${e?`px-2 pt-0`:`narrow:px-2 narrow:pt-0`}`,vI=`scrollbar-none flex min-w-0 flex-1 gap-2 overflow-x-auto`,yI=e=>`group/ptab relative flex max-w-40 items-center hover:text-ink data-[drop=after]:shadow-[inset_-2px_0_0_var(--accent)] data-[drop=before]:shadow-[inset_2px_0_0_var(--accent)] ${e.active?`is-active text-ink`:`text-muted`} ${e.compact&&!e.active?`min-w-0 max-w-24 flex-none`:`min-w-18 flex-initial`}`,bI=e=>`flex min-w-0 cursor-pointer items-center gap-1.5 border-none bg-transparent text-inherit [font:inherit] ${e?`py-1 pr-1.75 pl-2`:`py-1 pr-0.5 pl-2`}`,xI=`truncate`,SI=`touch:relative size-4 flex-none cursor-pointer rounded-xs border-none bg-transparent p-0 mr-1 font-mono text-title leading-none text-subtle opacity-0 group-hover/ptab:opacity-100 hover:bg-hover hover:text-ink focus-visible:opacity-100 [@media(hover:none)]:opacity-100 touch:after:absolute touch:after:-inset-1.5 touch:after:-left-1 touch:after:content-['']`,CI=`ml-auto flex gap-0.5`,wI=`relative row-3 cursor-row-resize touch-none before:absolute before:inset-x-0 before:top-[calc(var(--divider)/2)] before:h-px before:bg-line before:content-[''] hover:before:bg-line-active after:absolute after:inset-x-0 after:-inset-y-0.75 after:content-['']`,TI=`side-view flex min-h-0 min-w-0 flex-col [&[hidden]]:hidden`,EI=`row-2 m-auto flex max-w-[44ch] flex-col items-center gap-2.5 p-4 text-center font-mono text-meta leading-[1.5] text-subtle normal-nums`,DI=`flex min-h-0 flex-1 flex-col gap-1.5`,OI=`flex items-center gap-0.5 [&_svg]:flex-none`,kI=`mx-0.5 min-w-0 flex-1 rounded-sm border-none bg-inset px-2 py-1 text-ink [font-size:var(--fs-meta)] focus:bg-hover focus:outline-none aria-invalid:text-muted`,AI=`min-w-0 flex-1 rounded-sm border-none bg-paper`;function jI({edge:e,className:t,...n}){return(0,V.jsx)(`div`,{"data-grip":``,className:Me(`absolute inset-y-0 z-5 w-1.5 cursor-col-resize touch-none`,`after:absolute after:inset-y-0 after:w-0.5 after:bg-line-active after:opacity-0 after:transition-opacity after:duration-120`,`hover:after:opacity-100 hover:after:delay-250 active:after:bg-accent active:after:opacity-100 active:after:delay-0`,e===`right`?`right-0 after:right-0`:`left-0 after:left-0`,t),...n})}var MI=400;function NI({rail:e}){B();let t=(0,g.useRef)(null),n=(0,g.useRef)(0);return(0,V.jsx)(jI,{edge:`right`,title:z(`layout.railResize`),onPointerDown:n=>{t.current={x:n.clientX,width:e.current?.getBoundingClientRect().width??0,moved:!1},n.currentTarget.setPointerCapture(n.pointerId),Dn(!0)},onPointerMove:e=>{let n=t.current;!n||e.clientX===n.x||(n.moved=!0,aI.set(uI(n.width+e.clientX-n.x)))},onPointerUp:()=>{let e=t.current;if(t.current=null,!e)return;if(e.moved){n.current=0;return}let r=Date.now();r-n.current<MI?(n.current=0,aI.set(null)):n.current=r},onLostPointerCapture:()=>Dn(!1)})}function PI({side:e}){return(0,V.jsxs)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,V.jsx)(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`11`,rx:`2.5`}),(0,V.jsx)(`path`,{d:e===`left`?`M6 2.5v11`:`M10 2.5v11`})]})}function FI({model:e}){B();let t=v(RF),n=v(oI),r=v(e.tasks),i=t=>BF(e,t),a=z(n?`layout.railUnfold`:`layout.railFold`),o=n&&(r?.tasks??[]).some(JF);return(0,V.jsxs)(`div`,{className:pI,onMouseEnter:()=>n&&sI.get()&&lI(!0),onMouseLeave:()=>n&&sI.get()&&lI(!1),children:[(0,V.jsxs)(`button`,{type:`button`,className:fI(),title:a,"aria-label":a,onClick:()=>oI.set(!n),children:[(0,V.jsx)(PI,{side:`left`}),o&&(0,V.jsx)(`span`,{className:`absolute top-0.75 right-0.75 size-1.5 rounded-full bg-accent`})]}),(0,V.jsx)(`button`,{type:`button`,className:fI(),title:z(`layout.navBack`),"aria-label":z(`layout.navBack`),disabled:LF(t,-1,i)<0,onClick:()=>UF(e,-1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10 3.5 5.5 8l4.5 4.5`})})}),(0,V.jsx)(`button`,{type:`button`,className:fI(),title:z(`layout.navForward`),"aria-label":z(`layout.navForward`),disabled:LF(t,1,i)<0,onClick:()=>UF(e,1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M6 3.5 10.5 8 6 12.5`})})})]})}var II={terminal:`layout.narrowTerminal`,chat:`layout.narrowChat`,files:`layout.narrowFiles`,diff:`layout.narrowDiff`,browser:`layout.narrowBrowser`,quota:`layout.narrowQuota`};function LI({taskId:e}){B();let t=v(Ua);return(0,V.jsxs)(`div`,{className:Ke,children:[(0,V.jsx)(`button`,{type:`button`,className:`mono ${qe}`,onClick:va,children:(0,V.jsx)(`span`,{className:`text-accent`,children:`‹ ${Oo(`narrowBack`)}`})}),e&&(0,V.jsx)(`span`,{className:`mono ml-auto flex gap-0.5`,role:`tablist`,children:[`terminal`,...Ha].map(n=>(0,V.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===n,className:Je,onClick:()=>n===`terminal`?Ua.set(n):Jk(e,n),children:z(II[n])},n))})]})}function RI({title:e}){return B(),(0,V.jsxs)(`button`,{type:`button`,className:nr({}),onClick:_a,children:[(0,V.jsx)(`span`,{className:`${or} font-bold text-accent`,children:`↩`}),(0,V.jsx)(`span`,{className:rr,children:ko(`recentJump`,{title:e})})]})}function zI({pane:e}){B();let{prefs:t}=R_(),n=v(MF)[e];if(!t.keyHints)return null;let r=AF(e,n?`always`:`firstUse`);return r.length===0?null:(0,V.jsx)(`p`,{className:`mono text-muted ${Ye}`,children:(0,V.jsx)(AT,{text:r.map(e=>`${Yr(e.cap)} ${Co(`pane.${e.msg}`)}`).join(` · `)})})}function BI(e,t){return e.filter(e=>e.groupId===t).sort((e,t)=>(e.createdAt??``).localeCompare(t.createdAt??``)||e.title.localeCompare(t.title))}var VI=400;function HI(e){let t=null;for(let n of e.history?.messages??[]){if(n.role!==`assistant`)continue;let e=(n.blocks??[]).flatMap(e=>e.type===`text`&&e.text?[e.text]:[]).join(`
|
|
121
121
|
`).trim(),r=n.timestamp??``;e&&(!t||r>t.at)&&(t={at:r,text:e})}let n=(e.terminal?.tail??[]).map(e=>e.trimEnd()).filter(e=>e.trim()!==``),r=t?.text??n.slice(-6).join(`
|
|
122
|
-
`);return r?r.length>aL?`${r.slice(0,aL).trimEnd()}…`:r:null}function sL(e){let t=e.files.filter(e=>e.scope===`working`),n=t.length>0?`working`:`branch`,r=n===`working`?t:e.files.filter(e=>e.scope===`branch`);return{scope:n,files:r,added:r.reduce((e,t)=>e+(t.added??0),0),deleted:r.reduce((e,t)=>e+(t.deleted??0),0)}}async function cL(e,t,n){let r=new Set(e.tasks.get()?.tasks.map(e=>e.id)),i=0;try{for(let a of t.filter(e=>r.has(e)))await e.client.request(`task.archive`,{taskId:a,archived:!0,...n?{force:!0}:{}}),i++}catch(e){if(i>0&&G(z(`compare.archived`,{count:i})),e instanceof d_&&e.code===`TASK_BUSY`)throw e;G(z(`compare.archiveFailed`,{error:K(e)}),`error`);return}G(z(`compare.archived`,{count:i}))}async function lL(e,t,n){try{for(let r of n)r.id!==t.id&&r.kept&&await e.client.request(`task.keep`,{taskId:r.id,kept:!1});await e.client.request(`task.keep`,{taskId:t.id,kept:!0})}catch(e){G(z(`compare.keepFailed`,{error:K(e)}),`error`);return}G(z(`compare.keptToast`,{title:t.label}));let r=n.filter(e=>e.id!==t.id).map(e=>e.id);r.length!==0&&W.set((0,V.jsx)(dr,{title:z(`compare.archiveTitle`),body:z(`compare.archiveBody`,{count:r.length}),confirmLabel:z(`compare.archiveConfirm`),onConfirm:()=>cL(e,r,!1),escalate:{when:e=>e instanceof d_&&e.code===`TASK_BUSY`,label:z(`compare.archiveBusyConfirm`),title:z(`compare.archiveBusyTitle`),body:()=>z(`compare.archiveBusyBody`),run:()=>cL(e,r,!0)}}))}async function uL(e,t){try{await e.client.request(`task.keep`,{taskId:t.id,kept:!1}),G(z(`compare.unkeptToast`,{title:t.label}))}catch(e){G(z(`compare.keepFailed`,{error:K(e)}),`error`)}}var dL={title:`ROUTINES`,holdingDaemon:`keeping the daemon awake`,notHolding:`none active`,needAttention:`{count} of {total} need you ·`,paused:`paused`,newTitle:`New routine`,composerLegend:`enter create · tab fields · ←→ ↑↓ edit the focused field · esc cancel`,fieldName:`NAME`,fieldRepo:`REPO`,fieldTarget:`DELIVER TO`,fieldTargetTab:`EXISTING ENGINE TAB`,targetFresh:`New task on each run`,targetStanding:`Routine-owned standing task`,targetExisting:`Existing conversation: {task} / {tab}. Never creates or revives a session.`,fieldPrompt:`PROMPT`,fieldSchedule:`SCHEDULE (FIVE-FIELD CRON)`,namePlaceholder:`weekday dependency audit`,promptPlaceholder:`Audit dependencies and summarize risky changes.`,noProject:`Ungrouped`,cronInvalid:`not a five-field cron`,cronField:{minute:`min`,hour:`hour`,dayOfMonth:`day`,month:`month`,dayOfWeek:`weekday`},schedule:{everyDay:`every day {at}`,weekdays:`weekdays {at}`,weekends:`weekends {at}`,onWeekday:`{weekday} {at}`,everyMinute:`every minute`,everyMinutes:`every {n}m`,everyHours:`every {n}h`,hourlyAt:`hourly at :{minute}`,atClock:`at {time}`,dow:{MON:`Mondays`,TUE:`Tuesdays`,WED:`Wednesdays`,THU:`Thursdays`,FRI:`Fridays`,SAT:`Saturdays`,SUN:`Sundays`}},when:{inMinutes:`in {n}m`,inHours:`in {n}h`,inDays:`in {n}d`,minutesAgo:`{n}m ago`,hoursAgo:`{n}h ago`,now:`now`,justNow:`just now`,dateTime:`{date}, {time}`},runStatus:{dispatched:`dispatched`,revived:`revived`,skipped_cancelled:`cancelled before delivery`,skipped_precheck:`skipped (precheck)`,skipped_blocked:`skipped (task can't use it)`,skipped_missed:`skipped (missed)`,skipped_unavailable:`skipped (unavailable)`,dispatch_failed:`dispatch failed`,ran:`ran`,script_failed:`script failed`},cronNever:`valid, but never fires`,missing:{target:`Choose an existing task.`,targetTab:`Enter an existing tab id, e.g. tab-2.`,name:`Give it a name.`,repo:`Pick a project.`,prompt:`Say what it should do.`,schedule:`That schedule will not run.`},empty:`No routines scheduled.`,emptyHint:`Press n to create one.`,precheck:`precheck: {command}`,lastFailed:`last failed {when}: {reason}`,recentRuns:`RECENT RUNS`,precheckDetail:`WHY IT SKIPPED — precheck {exit} in {duration}ms`,precheckExited:`exited {code}`,precheckTimedOut:`timed out`,precheckStdout:`stdout`,precheckStderr:`stderr`,precheckNoOutput:`(no output)`,noRuns:`Not run yet.`,responses:`RESPONSES`,noResponses:"No run has reported back yet. Agents answer with `routine-respond`.",responseAwaiting:`awaiting response`,responseMissing:`no response`,noSelection:`A routine runs its prompt in a project on a schedule.`,running:`Running {name}…`,ranWith:`{name}: {status}`,latestRunNoTask:`The latest run created no task.`,runNow:`[ run now ]`,deleteTitle:`Delete routine?`,deleteBody:`{name} and its run history will be removed. Tasks it already created are untouched.`,deleteButton:`Delete`,createFailed:`Couldn't create the routine: {error}`,deleteFailed:`Couldn't delete "{name}": {error}`,enableFailed:`"{name}" stays paused: {error}`,disableFailed:`"{name}" stays enabled: {error}`,runFailed:`Couldn't run "{name}" now — schedule unchanged: {error}`},fL={title:`例行任务`,holdingDaemon:`正在保持守护进程常驻`,notHolding:`无启用项`,needAttention:`{total} 个中有 {count} 个需要处理 ·`,paused:`已暂停`,newTitle:`新建例行任务`,composerLegend:`enter 创建 · tab 切字段 · ←→ ↑↓ 编辑当前字段 · esc 取消`,fieldName:`名称`,fieldTarget:`投递目标`,fieldTargetTab:`既有引擎标签页`,targetFresh:`每次新建任务`,targetStanding:`例行任务自有的常驻任务`,targetExisting:`既有会话:{task} / {tab}。不会创建或重启会话。`,fieldRepo:`仓库`,fieldPrompt:`提示词`,fieldSchedule:`调度(五段 cron)`,namePlaceholder:`工作日依赖审计`,promptPlaceholder:`审计依赖并总结有风险的变更。`,noProject:`未分组`,cronInvalid:`不是合法的五段 cron`,cronField:{minute:`分`,hour:`时`,dayOfMonth:`日`,month:`月`,dayOfWeek:`星期`},schedule:{everyDay:`每天{at}`,weekdays:`工作日{at}`,weekends:`周末{at}`,onWeekday:`{weekday}{at}`,everyMinute:`每分钟`,everyMinutes:`每 {n} 分钟`,everyHours:`每 {n} 小时`,hourlyAt:`每小时的 :{minute}`,atClock:`{time}`,dow:{MON:`每周一`,TUE:`每周二`,WED:`每周三`,THU:`每周四`,FRI:`每周五`,SAT:`每周六`,SUN:`每周日`}},when:{inMinutes:`{n} 分钟后`,inHours:`{n} 小时后`,inDays:`{n} 天后`,minutesAgo:`{n} 分钟前`,hoursAgo:`{n} 小时前`,now:`即将`,justNow:`刚刚`,dateTime:`{date} {time}`},runStatus:{dispatched:`已派发`,revived:`已重启会话`,skipped_cancelled:`交付前已取消`,skipped_precheck:`已跳过(预检)`,skipped_blocked:`已跳过(任务暂不能接收)`,skipped_missed:`已跳过(错过时间)`,skipped_unavailable:`已跳过(不可用)`,dispatch_failed:`派发失败`,ran:`已运行`,script_failed:`脚本失败`},cronNever:`语法合法,但永远不会触发`,missing:{target:`请选择既有任务。`,targetTab:`请输入既有标签页 ID,例如 tab-2。`,name:`起个名字。`,repo:`选一个项目。`,prompt:`说明它要做什么。`,schedule:`这个调度不会触发。`},empty:`还没有例行任务。`,emptyHint:`按 n 新建一条。`,precheck:`预检:{command}`,lastFailed:`上次失败({when}):{reason}`,recentRuns:`最近执行`,precheckDetail:`为什么跳过 —— 预检{exit},耗时 {duration}ms`,precheckExited:`退出码 {code}`,precheckTimedOut:`超时`,precheckStdout:`标准输出`,precheckStderr:`标准错误`,precheckNoOutput:`(无输出)`,noRuns:`尚未执行。`,responses:`回报`,noResponses:"还没有执行回报。agent 用 `routine-respond` 回报。",responseAwaiting:`等待回报`,responseMissing:`未回报`,noSelection:`例行任务会按调度在某个项目里跑它的提示词。`,running:`正在运行 {name}…`,ranWith:`{name}:{status}`,latestRunNoTask:`最近一次执行没有创建任务。`,runNow:`[ 立即运行 ]`,deleteTitle:`删除这条例行任务?`,deleteBody:`将删除 {name} 及其执行记录。它已经创建的任务不受影响。`,deleteButton:`删除`,createFailed:`创建例行任务失败:{error}`,deleteFailed:`删除“{name}”失败:{error}`,enableFailed:`“{name}”仍处于暂停状态:{error}`,disableFailed:`“{name}”仍处于启用状态:{error}`,runFailed:`无法立即运行“{name}”——排程未受影响:{error}`},pL={title:`Kanban`,hint:`tab project · ←↓↑→ card · enter detail · n new · d delete · r refresh · esc close`,loading:`Loading issues…`,noRepos:"No projects yet — add one with `rove add <path>`, or file a story with `rove api issue-create`.",empty:"No issues — agents file them via `rove api issue-create`.",readFailed:"Couldn't read this project's stories: {error}. Run `rove doctor`, then reopen Kanban.",readFailedToast:`Couldn't read stories for {repo}: {error}`,columnEmpty:`No cards`,column:{backlog:`Backlog`,inProgress:`In progress`,parked:`Parked`,done:`Done`},more:`+{count} more`,attention:`{count} need you`,turnComplete:`turn done`,menu:{setStatus:`status → {status}`},detail:{status:{open:`open`,doing:`doing`,hold:`hold`,done:`done`},statusLabel:`STATUS`,created:`created {date}`,linked:`linked to a session`,titleLabel:`TITLE`,description:`DESCRIPTION`,noDescription:`No description.`,attachHint:`paste a path / ctrl+v screenshot → inserts an image placeholder`,engine:`ENGINE`,workspace:`WORKSPACE`,placement:{worktree:`New worktree task — its own workspace`,projectWorktree:`New worktree — as a chattab in the project workspace`,project:`Project checkout — a new chattab, no worktree`},jumpLabel:`AFTER START`,jump:{stay:`Stay on the board`,follow:`Jump to the session`},startLegend:`enter/ctrl+enter start · tab fields · ←→ status/engine · ↑↓ workspace · esc save & close`,sessionLabel:`SESSION`,openAction:`Open the linked session ↵`,unlinkAction:`Unlink`,openLegend:`enter open the focused action · tab fields · ←→ status · unlink returns the card to Backlog · esc save & close`,eventsLabel:`EVENTS`,eventsLoading:`Loading events…`,eventsNone:`No engine events recorded yet.`,doneNote:`Done stories have nothing left to start — set the status back to reopen one · esc save & close`,startedBackground:`Started in background: {title}`,newStory:`NEW STORY`,createLegend:`ctrl+s save · enter/ctrl+enter save & start · tab fields · esc cancel`},confirmDelete:{title:`Delete story #{id}?`,body:`“{title}” will be removed from the tracker. A linked task, branch, or worktree is left untouched.`},deleteFailed:`Couldn't delete story #{id}: {error}`,createFailed:`Couldn't create the story: {error}`,updateFailed:`Couldn't save story #{id}: {error}`,statusFailed:`Story #{id} stays in its old column: {error}`,linkFailed:`Story #{id} isn't linked to its task: {error}`,unlinkFailed:`Story #{id} is still linked: {error}`},mL={title:`看板`,hint:`tab 切项目 · ←↓↑→ 选卡片 · enter 详情 · n 新建 · d 删除 · r 刷新 · esc 关闭`,loading:`正在加载 issues…`,noRepos:"还没有项目——用 `rove add <路径>` 添加一个,或用 `rove api issue-create` 创建一个 story。",empty:"暂无 issue——agent 可通过 `rove api issue-create` 创建。",readFailed:"读取该项目的 story 失败:{error}。请运行 `rove doctor`,再重新打开看板。",readFailedToast:`读取 {repo} 的 story 失败:{error}`,columnEmpty:`暂无卡片`,column:{backlog:`待办`,inProgress:`进行中`,parked:`搁置`,done:`已完成`},more:`还有 {count} 条`,attention:`{count} 张等你处理`,turnComplete:`回合完成`,menu:{setStatus:`状态 → {status}`},detail:{status:{open:`待办`,doing:`进行中`,hold:`搁置`,done:`已完成`},statusLabel:`状态`,created:`创建于 {date}`,linked:`已关联会话`,titleLabel:`标题`,description:`描述`,noDescription:`暂无描述。`,attachHint:`粘贴路径 / ctrl+v 贴截图 → 插入图片占位行`,engine:`引擎`,workspace:`工作区`,placement:{worktree:`新建 worktree 任务——独立工作区`,projectWorktree:`新建 worktree——作为项目工作区里的 chattab`,project:`项目主目录——新开 chattab,不建 worktree`},jumpLabel:`启动后`,jump:{stay:`留在看板`,follow:`跳转到会话`},startLegend:`enter/ctrl+enter 启动 · tab 切字段 · ←→ 状态/引擎 · ↑↓ 工作区 · esc 保存关闭`,sessionLabel:`会话`,openAction:`打开关联会话 ↵`,unlinkAction:`解除关联`,openLegend:`enter 执行选中操作 · tab 切字段 · ←→ 状态 · 解除关联把卡片退回 Backlog · esc 保存关闭`,eventsLabel:`事件`,eventsLoading:`正在加载事件…`,eventsNone:`暂无引擎事件记录。`,doneNote:`已完成的 story 无需启动——改回状态即可重新打开 · esc 保存关闭`,startedBackground:`已在后台启动:{title}`,newStory:`新建 STORY`,createLegend:`ctrl+s 仅保存 · enter/ctrl+enter 保存并启动 · tab 切字段 · esc 取消`},confirmDelete:{title:`删除 story #{id}?`,body:`「{title}」将从 tracker 中移除。已关联的任务、分支、worktree 不受影响。`},deleteFailed:`删除 story #{id} 失败:{error}`,createFailed:`创建 story 失败:{error}`,updateFailed:`保存 story #{id} 失败:{error}`,statusFailed:`Story #{id} 仍留在原来的列:{error}`,linkFailed:`Story #{id} 未能关联到它的任务:{error}`,unlinkFailed:`Story #{id} 仍处于关联状态:{error}`},hL={title:`ISSUES`,noRepo:`no project`,empty:`No open issues.`,assignedFilter:`assigned to me`,starting:`Starting work on #{number}…`,startedNoEngine:`Created {title}, but its engine did not start.`,linkedChip:`→ {title}`,openingLinked:`Opening {title}…`,startFailed:`Couldn't start work on #{number}: {error}`,errorHint:{noRemote:"Add a GitHub remote (`git remote add origin <url>`) and try again, or press q / esc to close.",ghMissing:"Install the `gh` CLI and authenticate, or press q / esc to close.",auth:"Run `gh auth login`, or press q / esc to close.",fallback:`{message} · press q / esc to close`}},gL={title:`议题`,noRepo:`无项目`,empty:`没有开放的议题。`,assignedFilter:`分配给我的`,starting:`正在开始处理 #{number}…`,startedNoEngine:`已创建 {title},但引擎没有启动。`,linkedChip:`→ {title}`,openingLinked:`正在打开 {title}…`,startFailed:`开始处理 #{number} 失败:{error}`,errorHint:{noRemote:"添加 GitHub remote(`git remote add origin <url>`)后重试,或按 q / esc 关闭。",ghMissing:"安装 `gh` CLI 并登录,或按 q / esc 关闭。",auth:"执行 `gh auth login`,或按 q / esc 关闭。",fallback:`{message} · 按 q / esc 关闭`}};function _L(){let e=B()===`zh`;return{kanban:e?mL:pL,auto:e?fL:dL,items:e?gL:hL,nav:(e?jr:Ar).nav,group:(e?jr:Ar).group,common:e?hr:mr}}function vL(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??e))}function yL(){let{auto:e}=_L();return(t,n)=>{let r=e;for(let e of t.replace(/^automations\./,``).split(`.`))r=r&&typeof r==`object`?Reflect.get(r,e):void 0;return typeof r==`string`?n?vL(r,n):r:t}}function bL(e){return e instanceof Error?e.message:String(e)}function xL(e){return e.replace(/^\/private\//,`/`).replace(/\/+$/,``)}function SL(e,t){let n=e.split(`/`).filter(Boolean),r=n[n.length-1]??e;return t.some(t=>t!==e&&t.split(`/`).filter(Boolean).pop()===r)&&n.length>1?`${n[n.length-2]}/${r}`:r}function CL(...e){let t=new Set,n=[];for(let r of e.flat()){if(!r||r.startsWith(`ssh://`))continue;let e=xL(r);t.has(e)||(t.add(e),n.push(r))}return n}function wL(e){return CL((v(e.tasks)?.tasks??[]).filter(e=>!pw(e)).map(e=>e.repo))}function TL(e){let t=v(e.tasks),{taskId:n}=v(e.selection);return t?.tasks.find(e=>e.id===n)?.repo}function EL(e){let[t,n]=(0,g.useState)(0);return(0,g.useEffect)(()=>{let t=window.setInterval(()=>n(e=>e+1),e);return()=>window.clearInterval(t)},[e]),[t,(0,g.useCallback)(()=>n(e=>e+1),[])]}function DL(e){return e instanceof HTMLElement?e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName):!1}function OL(e){let t=(0,g.useRef)(e);t.current=e,(0,g.useEffect)(()=>{let e=e=>{if(e.defaultPrevented||W.get()||sn.get())return;let n=e.target instanceof HTMLElement?e.target:null;DL(n)||n?.closest(`.rail, .side-panel, .xterm`)||e.metaKey||e.altKey||e.ctrlKey&&e.key.toLowerCase()===`c`&&window.getSelection()?.toString()||t.current(e)&&(e.preventDefault(),e.stopPropagation())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[])}function kL(){let e=(0,g.useRef)(null);return(0,g.useEffect)(()=>e.current?.focus(),[]),e}function AL({tone:e,children:t}){return(0,V.jsx)(`span`,{className:Me(`flex-none font-mono text-meta`,e&&jT[e]),children:t})}var jL=`mt-3 grid grid-cols-[repeat(auto-fit,minmax(min(100%,17rem),1fr))] items-start gap-x-5 gap-y-6`,ML=e=>e?`flex min-w-0 flex-col gap-2 pt-2 [border-top:var(--hairline)_solid_var(--accent)]`:`flex min-w-0 flex-col gap-2 pt-2 [border-top:var(--hairline)_solid_var(--line)]`,NL=`flex min-w-0 items-center gap-2`,PL=`min-w-0 truncate font-bold`,FL=`truncate font-mono text-meta text-muted`,IL=`m-0 line-clamp-6 whitespace-pre-wrap wrap-anywhere`,LL=`flex min-w-0 flex-col`,RL=`flex min-w-0 items-baseline gap-2 py-px font-mono text-meta`,zL=`flex flex-wrap gap-x-3.5 gap-y-1 font-mono text-meta`,BL=`flex min-w-0 flex-wrap items-center gap-x-3.5 gap-y-0.5 px-2.5 py-1 font-mono text-meta`,VL=1.2,HL=.3,UL=20,WL=.35,GL=.25,KL=.12,qL=2,JL=1,YL={error:{dots:[0,4,8,2,6],bright:1},done:{dots:[3,7,5,2],bright:1},idle:{dots:[1,2,5,8,7,6,3,0],bright:.6}},XL=Array.from({length:9},(e,t)=>Math.hypot(t%3-1,Math.floor(t/3)-1));function ZL(e){return WL+.65*(.5+.5*Math.cos(2*Math.PI*e/VL))}function QL(e,t,n,r=1){switch(e){case`working`:{let e=t*80/1e3/r;return XL.map(t=>ZL(e-t*HL))}case`waiting`:{let e=[0,1,4,5].includes(Math.floor(t/r)%UL);return Array(9).fill(e?GL:1)}default:{let t=YL[e],r=Array(9).fill(KL);return t?.dots.forEach((e,i)=>{let a=Math.min(Math.max(n-i*JL,0),qL)/qL;r[e]=t.bright*a+KL*(1-a)}),r}}}function $L(e,t){let n=YL[e];return!n||t<(n.dots.length-1)*JL+qL}var eR=3,tR=new Set,nR;function rR(e,t){let n=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=1/0,i=e.held+t-e.step,a=$L(e.look,n?r:i);return QL(e.look,t,n?r:i,n?eR:1).forEach((t,n)=>{let r=e.el.children[n].style;r.opacity=t.toFixed(3)}),a}function iR(){let e=Math.floor(performance.now()/80);for(let t of tR)rR(t,e)||tR.delete(t);aR()}function aR(){nR=tR.size?window.setTimeout(iR,80-performance.now()%80+2):void 0}function oR(e,t,n){let r=Math.floor(performance.now()/80),i=n>0?Math.max(Date.now()-n,0):1/0,a={el:e,look:t,step:r,held:Math.floor(i/80)};return rR(a,r)&&(tR.add(a),nR===void 0&&aR()),()=>{tR.delete(a)}}function sR({status:e}){let{look:t,tone:n}=XF(e);return(0,V.jsx)(lR,{look:t,tone:n,since:e?.since??0},t)}var cR=e=>e===`muted`?`text-muted`:e===`ink`?`text-ink`:jT[e];function lR({look:e,tone:t,since:n}){let r=(0,g.useRef)(null),[i]=(0,g.useState)(n);return(0,g.useLayoutEffect)(()=>{let t=r.current;return t?oR(t,e,i):void 0},[e,i]),(0,V.jsx)(`span`,{ref:r,className:`inline-grid flex-none grid-cols-[repeat(3,3px)] auto-rows-[3px] gap-px self-center ${cR(t)}`,"aria-hidden":`true`,children:Array.from({length:9},(e,t)=>(0,V.jsx)(`i`,{className:`rounded-full bg-current opacity-12`},t))})}var uR=6;function dR(e,t){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(()=>Hs(e,`diff.files`,{taskId:t.id})??null),o=`${t.rowStatus?.kind??``}:${t.rowStatus?.since??0}`,s=JSON.stringify(t.changes??null);return(0,g.useEffect)(()=>{let n=!0;return Ws(e,`output.read`,{taskId:t.id,limit:8}).then(e=>n&&r(oL(e)),()=>n&&r(null)),()=>{n=!1}},[e,t.id,o]),(0,g.useEffect)(()=>{let n=!0;return Ws(e,`diff.files`,{taskId:t.id}).then(e=>n&&a(e),()=>{}),()=>{n=!1}},[e,t.id,s,o]),{reply:n,changes:i?sL(i):null}}function fR({changes:e,onOpen:t}){if(!e)return(0,V.jsx)(`p`,{className:Jt,children:`…`});if(e.files.length===0)return(0,V.jsx)(`p`,{className:`m-0 font-mono text-meta text-subtle`,children:z(`compare.noChanges`)});let n=e.files.length-uR;return(0,V.jsxs)(`div`,{className:LL,children:[(0,V.jsxs)(`p`,{className:`m-0 flex gap-2 font-mono text-meta text-muted`,children:[(0,V.jsx)(`span`,{children:z(`compare.files`,{count:e.files.length})}),e.added>0&&(0,V.jsxs)(AL,{tone:`added`,children:[`+`,e.added]}),e.deleted>0&&(0,V.jsxs)(AL,{tone:`removed`,children:[`−`,e.deleted]})]}),e.files.slice(0,uR).map(n=>(0,V.jsxs)(H,{variant:`row`,className:`${RL} text-left [&:hover]:underline`,title:n.path,onClick:()=>t(n.path,e.scope),children:[(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n.path}),n.added?(0,V.jsxs)(AL,{tone:`added`,children:[`+`,n.added]}):null,n.deleted?(0,V.jsxs)(AL,{tone:`removed`,children:[`−`,n.deleted]}):null]},n.path)),n>0&&(0,V.jsx)(`span`,{className:`font-mono text-meta text-subtle`,children:z(`compare.more`,{count:n})})]})}function pR({model:e,row:t,round:n}){let{reply:r,changes:i}=dR(e,t),{look:a}=XF(t.rowStatus),o=t.kept===!0,s=(n,r)=>{e.select(t.id),eA({taskId:t.id,path:n,scope:r})};return(0,V.jsxs)(`section`,{className:ML(o),"data-attempt":t.id,children:[(0,V.jsxs)(`div`,{className:NL,children:[(0,V.jsx)(sR,{status:t.rowStatus}),(0,V.jsx)(`span`,{className:PL,children:t.engine?.name??t.label}),(0,V.jsx)(`span`,{className:`flex-none text-meta text-muted`,children:z(`compare.status.${a}`)}),o&&(0,V.jsx)(`span`,{className:`ml-auto flex-none font-mono text-meta text-accent`,children:z(`compare.kept`)})]}),(0,V.jsx)(`span`,{className:FL,title:t.branch,children:t.branch}),r?(0,V.jsx)(`p`,{className:IL,children:r}):(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:z(`compare.noReply`)}),(0,V.jsx)(fR,{changes:i,onOpen:s}),(0,V.jsxs)(`div`,{className:zL,children:[(0,V.jsx)(H,{hit:`tight`,onClick:()=>e.select(t.id),children:z(`compare.terminal`)}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>s(`.`,i?.scope??`working`),children:z(`compare.diff`)}),o?(0,V.jsx)(H,{hit:`tight`,onClick:()=>void uL(e,t),children:z(`compare.unkeep`)}):(0,V.jsx)(H,{hit:`tight`,onClick:()=>void lL(e,t,n),children:z(`compare.keep`)})]})]})}function mR({model:e}){B();let t=v(fn),n=v(e.tasks),r=kL(),i=t&&n?iL(n.tasks,t):[];return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:r,onKeyDown:e=>{e.metaKey||e.ctrlKey||e.altKey||e.key!==`q`&&e.key!==`Escape`||(e.preventDefault(),un.set(null))},children:[(0,V.jsx)(`h1`,{className:xM,children:z(`compare.title`)}),i.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`compare.empty`)}):(0,V.jsx)(`div`,{className:jL,children:i.map(t=>(0,V.jsx)(pR,{model:e,row:t,round:i},t.id))})]})}function hR(e){let t=Math.floor(e/6e4),n=Math.floor(t/60);return{minutes:t,hours:n,days:Math.floor(n/24)}}function gR(e,t=Date.now()){let n=Math.max(0,t-e),r=Math.floor(n/1e3);if(r<60)return`${r}s`;let{minutes:i,hours:a,days:o}=hR(n);return i<60?`${i}m`:a<24?`${a}h`:`${o}d`}var _R=[{id:`issues`,label:`reviewQueue.sourceIssues`},{id:`reviews`,label:`reviewQueue.sourceReviews`}];function vR(){B();let e=v(ZO);return(0,V.jsx)(`span`,{className:`flex items-baseline gap-3 font-mono text-meta`,children:_R.map(t=>t.id===e?(0,V.jsx)(`span`,{className:`text-ink`,children:z(t.label)},t.id):(0,V.jsx)(H,{onClick:()=>ZO.set(t.id),children:z(t.label)},t.id))})}var yR={passing:`reviewQueue.checksPassing`,failing:`reviewQueue.checksFailing`,pending:`reviewQueue.checksPending`},bR={missing:`reviewQueue.gh.missing`,unauthenticated:`reviewQueue.gh.unauthenticated`,failed:`reviewQueue.gh.failed`};function xR(e){let{pr:t}=e,n=Date.parse(t.createdAt),r=[t.isDraft?z(`reviewQueue.draft`):``,t.fork?z(`reviewQueue.fork`):``,t.checks?z(yR[t.checks]):``];return(0,V.jsxs)(`div`,{"data-row":e.index,className:DM(e.at),onClick:e.onPick,children:[(0,V.jsxs)(`div`,{className:OM,children:[(0,V.jsxs)(`span`,{className:`mono ${kM}`,children:[t.nameWithOwner.split(`/`)[1],`#`,t.number]}),(0,V.jsx)(`span`,{className:jM,children:t.title}),(0,V.jsx)(H,{disabled:e.busy,onClick:e.onReview,children:z(`reviewQueue.start`)})]}),(0,V.jsxs)(`div`,{className:AM,children:[(0,V.jsx)(`span`,{className:jM,children:[t.author,...r].filter(Boolean).join(`, `)}),(0,V.jsxs)(`span`,{className:`mono`,children:[`+`,t.additions,` −`,t.deletions]}),(0,V.jsx)(`span`,{className:`mono`,children:Number.isFinite(n)?gR(n,e.now):``})]})]})}function SR({model:e}){B();let t=e.client,[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(0),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null),[f,p]=(0,g.useState)(0),m=(0,g.useRef)(!1),h=kL(),_=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0,n=m.current;return m.current=!1,a(null),t.request(`review.queue`,n?{refresh:!0}:{}).then(t=>e&&r(t)).catch(t=>{e&&(a(bL(t)),r({prs:[],other:0}))}),()=>{e=!1}},[t,f]);let v=n?.prs??[],y=Math.min(o,Math.max(0,v.length-1));(0,g.useEffect)(()=>{_.current?.querySelector(`[data-row="${y}"]`)?.scrollIntoView({block:`nearest`})},[y]);let b=async e=>{if(c===null){l(e.number),d(z(`reviewQueue.preparing`,{number:e.number}));try{let{ref:n}=await t.request(`review.prepare`,{repo:e.repo,number:e.number});_n(QO(e,n,z(`reviewQueue.prompt`,{number:e.number,repo:e.nameWithOwner,title:e.title,url:e.url,head:e.headRef,base:e.baseRef})))}catch(t){G(z(`reviewQueue.failed`,{number:e.number,error:bL(t)}),`error`)}finally{l(null),d(null)}}};OL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return s(Math.min(v.length-1,y+1)),!0;case`k`:case`ArrowUp`:return s(Math.max(0,y-1)),!0;case`r`:return m.current=!0,p(e=>e+1),!0;case`Enter`:{let e=v[y];return e&&b(e),!0}default:return!1}});let x=Date.now();return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:h,children:[(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`h1`,{className:xM,children:z(`reviewQueue.title`)}),(0,V.jsx)(vR,{})]}),i?(0,V.jsx)(`p`,{className:`text-error`,children:i}):n===null?(0,V.jsx)(`p`,{className:`text-muted`,children:`…`}):n.reason?(0,V.jsx)(`p`,{className:`text-muted`,children:z(bR[n.reason])}):v.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`reviewQueue.empty`)}):(0,V.jsx)(`div`,{className:EM,ref:_,children:v.map((e,t)=>(0,V.jsx)(xR,{pr:e,index:t,at:t===y,now:x,busy:c!==null,onPick:()=>s(t),onReview:()=>void b(e)},`${e.nameWithOwner}#${e.number}`))}),n&&n.other>0&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:z(`reviewQueue.other`,{count:n.other})}),u&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:u})]})}var CR=30;function wR(){let{items:e}=_L();return t=>{let n=t.indexOf(`: `);switch(n>=0?t.slice(0,n):`failed`){case`no-remote`:return e.errorHint.noRemote;case`gh-missing`:return e.errorHint.ghMissing;case`auth`:return e.errorHint.auth;default:return vL(e.errorHint.fallback,{message:t})}}}function TR({model:e}){let{items:t,common:n}=_L(),r=wR(),i=e.client,a=v(e.tasks),o=wL(e),s=TL(e),[c,l]=(0,g.useState)(()=>{let e=s?o.findIndex(e=>xL(e)===xL(s)):-1;return Math.max(0,e)}),u=o[c],d=(e,t)=>({repo:e,limit:CR,...t?{assignee:`@me`}:{}}),f=e=>Object.fromEntries(e.links.map(e=>[e.number,e.taskId])),[p,m]=(0,g.useState)(()=>u?Hs(i,`workitem.list`,d(u,!1))?.items??null:null),[h,_]=(0,g.useState)(()=>{let e=u?Hs(i,`workitem.links`,{repo:u}):void 0;return e?f(e):{}}),[y,b]=(0,g.useState)(null),[x,S]=(0,g.useState)(!1),[C,w]=(0,g.useState)(0),[T,E]=(0,g.useState)(0),[D,O]=(0,g.useState)(!1),[k,A]=(0,g.useState)(null),j=kL(),ee=(0,g.useRef)(!1);(0,g.useEffect)(()=>{let e=!0;if(!u){m([]);return}b(null);let t=ee.current;ee.current=!1;let n=d(u,x),r=Hs(i,`workitem.list`,n);return r&&m(r.items),i.request(`workitem.list`,{...n,...t?{refresh:!0}:{}}).then(t=>e&&m(Us(i,`workitem.list`,n,t).items)).catch(t=>{e&&(b(bL(t)),m([]))}),Ws(i,`workitem.links`,{repo:u}).then(t=>e&&_(f(t))).catch(()=>e&&_({})),()=>{e=!1}},[i,u,x,C,a?.tasks.length]);let M=p??[],N=Math.min(T,Math.max(0,M.length-1));(0,g.useEffect)(()=>A(null),[u,x]);let P=(0,g.useRef)(null);(0,g.useEffect)(()=>{P.current?.querySelector(`[data-row="${N}"]`)?.scrollIntoView({block:`nearest`})},[N]);let F=e=>a?.tasks.find(t=>t.id===e)?.label??e,I=t=>{un.set(null),e.select(t)},te=async()=>{let e=M[N];if(!e||!u||D)return;let n=h[e.number];if(n){A(vL(t.openingLinked,{title:F(n)})),I(n);return}O(!0),A(vL(t.starting,{number:e.number}));try{let n=await i.request(`workitem.start`,{repo:u,number:e.number});n.started?I(n.taskId):A(vL(t.startedNoEngine,{title:n.title}))}catch(n){G(vL(t.startFailed,{number:e.number,error:bL(n)}),`error`)}finally{O(!1)}};OL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return E(Math.min(M.length-1,N+1)),!0;case`k`:case`ArrowUp`:return E(Math.max(0,N-1)),!0;case`Tab`:return l(t=>o.length?(t+(e.shiftKey?o.length-1:1))%o.length:0),!0;case`a`:return S(e=>!e),!0;case`r`:return ee.current=!0,w(e=>e+1),!0;case`Enter`:return te(),!0;default:return!1}});let L=Date.now();return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:j,children:[(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`h1`,{className:xM,children:t.title}),(0,V.jsx)(vR,{}),(0,V.jsxs)(`span`,{className:`mono touch:empty:hidden! text-muted ${CM(!0)}`,children:[u?SL(u,o):t.noRepo,x?` ${t.assignedFilter}`:``]})]}),y?(0,V.jsxs)(`div`,{className:EM,children:[(0,V.jsx)(`p`,{className:`text-error`,children:y}),(0,V.jsx)(`p`,{className:`text-muted`,children:r(y)})]}):p===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.loading}):M.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.empty}):(0,V.jsx)(`div`,{className:EM,ref:P,children:M.map((e,n)=>{let r=h[e.number],i=Date.parse(e.updatedAt);return(0,V.jsxs)(`div`,{"data-row":n,className:DM(n===N),onClick:()=>n===N?void te():E(n),children:[(0,V.jsxs)(`div`,{className:OM,children:[(0,V.jsxs)(`span`,{className:`mono ${kM}`,children:[`#`,e.number]}),(0,V.jsx)(`span`,{children:e.title})]}),(0,V.jsxs)(`div`,{className:AM,children:[(0,V.jsx)(`span`,{className:jM,children:[e.author,...e.labels.slice(0,2)].filter(Boolean).join(`, `)}),r&&(0,V.jsx)(`span`,{children:vL(t.linkedChip,{title:F(r)})}),(0,V.jsx)(`span`,{className:`mono`,children:Number.isFinite(i)?gR(i,L):``})]})]},e.number)})}),k&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:k})]})}function ER({model:e}){return v(ZO)===`reviews`?(0,V.jsx)(SR,{model:e}):(0,V.jsx)(TR,{model:e})}var DR={backlog:`active`,in_progress:`active`,in_review:`parked`,error:`parked`,done:`terminal`,canceled:`terminal`,open:`active`,doing:`active`,hold:`parked`};function OR(e){return DR[e]??`parked`}var kR=[`backlog`,`in_progress`,`parked`,`done`];function AR(e,t,n){let r=e.find(e=>e.issues.length>0)?.issues[0]?.id??null;if(t==null)return r;let i=-1,a=-1;for(let[n,r]of e.entries()){let e=r.issues.findIndex(e=>e.id===t);if(e!==-1){i=n,a=e;break}}if(i===-1)return r;if(n===`up`||n===`down`){let r=e[i]?.issues??[],o=n===`up`?a-1:a+1;return r[Math.max(0,Math.min(o,r.length-1))]?.id??t}let o=n===`left`?-1:1;for(let n=i+o;n>=0&&n<e.length;n+=o){let r=e[n]?.issues??[];if(r.length!==0)return r[Math.min(a,r.length-1)]?.id??t}return t}function jR(e,t){let n=OR(e.status);return n===`terminal`?`done`:n===`parked`?`parked`:e.taskId!==void 0&&e.taskId!==``&&(t?.(e.taskId)??!0)||e.status===`doing`?`in_progress`:`backlog`}function MR(e,t){let n=0;return{columns:e.map(e=>{if(e.key!==`in_progress`)return e;let r=[],i=[];for(let n of e.issues)n.taskId!==void 0&&n.taskId!==``&&t(n.taskId)?r.push(n):i.push(n);return n=r.length,r.length===0?e:{...e,issues:[...r,...i]}}),attentionCount:n}}function NR(e,t){return e.created===t.created?t.id-e.id:e.created<t.created?1:-1}function PR(e,t){let n={backlog:[],in_progress:[],parked:[],done:[]};for(let r of e)n[jR(r,t)].push(r);return kR.map(e=>{let t=e===`done`||e===`parked`,r=n[e].sort(NR);return!t||r.length<=20?{key:e,issues:r,hiddenCount:0}:{key:e,issues:r.slice(0,20),hiddenCount:r.length-20}})}var FR=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`application/pdf`],IR=5242880;function LR(e,t){return/\.pdf$/i.test(e)?`pdf[${t}]`:`images[${t}]`}function RR(e){let t=-1;for(let n of e.matchAll(/^(?:images|pdf)\[(\d+)\]:/gm)){let e=Number.parseInt(n[1],10);e>t&&(t=e)}return t+1}function zR(e,t){let n=e.replace(/\s+$/,``),r=RR(e);for(let e of t){let t=`${LR(e,r)}: ${e}`;n=n.length>0?`${n}\n${t}`:t,r+=1}return n}function BR(e){return Array.from(e??[]).filter(e=>FR.includes(e.type))}function VR(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}async function HR(e,t){let n=VR(new Uint8Array(await t.arrayBuffer()));return(await e.request(`attachment.put`,{mime:t.type,data:n})).path}var UR=[`worktree`,`projectWorktree`,`project`];async function WR(e,t){let n=t.placement===`project`?`project`:`worktree`,{title:r,prompt:i}=await e.request(`issue.prompt`,{repo:t.repo,id:t.issue.id,where:n}),a=[];if(t.placement!==`project`){let{taskId:n}=await e.request(`task.create`,{repo:t.repo,engine:t.engine,title:r,prompt:i});if(await e.request(`issue.update`,{repo:t.repo,id:t.issue.id,task:n}).catch(e=>a.push({kind:`link`,error:bL(e)})),t.placement===`worktree`)return{taskId:n,warnings:a};let o=await e.request(`task.openMain`,{repo:t.repo}),s=await e.request(`tab.openViewport`,{taskId:o.taskId,viewTaskId:n});return{taskId:o.taskId,tabId:s.tabId,warnings:a}}let{taskId:o}=await e.request(`task.openMain`,{repo:t.repo}),{tabId:s,taskId:c=o}=await e.request(`tab.new`,{taskId:o,kind:`engine`,engine:t.engine,prompt:i});return await e.request(`issue.setStatus`,{repo:t.repo,id:t.issue.id,status:`doing`}).catch(e=>a.push({kind:`status`,error:bL(e)})),{taskId:c,tabId:s,warnings:a}}var GR=`text-meta leading-[inherit]`,KR=`text-meta`,qR=`flex flex-col gap-2 overflow-hidden`,JR=`flex min-w-0 items-baseline gap-3`,YR=`font-bold whitespace-nowrap text-accent touch:relative touch:after:absolute touch:after:-inset-x-2 touch:after:-inset-y-1 touch:after:content-['']`,XR=`min-w-0 truncate ${KR}`,ZR=`ml-auto ${GR}`,QR=`grid min-h-0 flex-1 grid-cols-4 gap-2`,$R=`flex min-h-0 flex-1 flex-col gap-2`,ez=`flex gap-4 ${KR}`,tz=e=>`touch:relative touch:after:absolute touch:after:-inset-x-1.5 touch:after:-top-1 touch:after:-bottom-3 touch:after:content-[''] ${e?`font-bold text-accent`:`text-muted`}`,nz={in_progress:`text-accent`,parked:`text-warning`,done:`text-success`},rz=e=>`flex min-h-0 flex-col rounded-md border-hairline border-line p-2 ${e?`flex-1`:``}`,iz=e=>`m-0 mb-2 flex justify-between gap-2 font-mono text-meta font-bold normal-nums ${nz[e]??`text-muted`}`,az=`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto`,oz=`m-0 ${KR}`,sz=e=>`flex flex-none cursor-pointer flex-col gap-1 rounded-sm border-hairline bg-surface px-2.5 py-2 ${e.selected?`border-accent`:e.attention?`border-warning`:`border-line hover:border-line-active`}`,cz=`flex justify-between gap-2`,lz=e=>`min-w-0 font-bold wrap-anywhere ${e?`text-muted`:``}`,uz=`h-[2.8em] overflow-hidden whitespace-pre-wrap wrap-anywhere ${GR}`,dz=`flex justify-between gap-2 ${KR}`,fz=`w-[min(680px,calc(100vw-32px))]!`,pz=`flex items-baseline gap-3.5`,mz=`flex items-baseline gap-2.5`,hz=`tracking-[0] normal-case`,gz=`min-h-40 font-mono`,_z=`flex flex-col items-start gap-0.5`,vz=e=>`text-left font-mono text-meta whitespace-pre-wrap normal-nums ${e?`font-bold text-accent`:`font-normal text-muted`}`,yz=GR,bz=`flex flex-col gap-1 [&_p]:m-0`,xz=`flex gap-2 ${KR}`,Sz=`min-w-[4ch] text-right`,Cz=`rounded-sm border-hairline border-transparent p-1 focus:border-accent focus:outline-none`,wz={choice:`radiogroup`,list:`listbox`,cells:`group`};function Tz(e){return(0,V.jsx)(`div`,{ref:e.fieldRef,role:wz[e.kind??`choice`],tabIndex:0,"aria-label":e.label,className:`${Cz} ${e.className??``}`,onKeyDown:e.onKeyDown,onClick:e.onClick,children:e.children})}var Ez=[`open`,`doing`,`hold`,`done`];function Dz({model:e,taskId:t}){let{kanban:n}=_L(),[r,i]=(0,g.useState)(null);return(0,g.useEffect)(()=>{let n=!0;return e.client.request(`task.events`,{taskId:t}).then(e=>n&&i(e.events)).catch(()=>n&&i([])),()=>{n=!1}},[e,t]),(0,V.jsxs)(`div`,{className:bz,children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:n.detail.eventsLabel}),r===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.detail.eventsLoading}):r.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:n.detail.eventsNone}):r.map(e=>(0,V.jsxs)(`div`,{className:`mono ${xz}`,children:[(0,V.jsx)(`span`,{className:`text-muted ${Sz}`,children:gR(e.at)}),(0,V.jsx)(`span`,{children:e.kind}),e.tail&&(0,V.jsx)(`span`,{className:`text-muted`,children:e.tail})]},`${e.at}:${e.kind}:${e.tail}`))]})}function Oz(e){let{kanban:t}=_L(),{issue:n,mode:r}=e,i=r===`create`,a=!i&&n.taskId?n.taskId:null,o=i||!a&&n.status!==`done`,[s,c]=(0,g.useState)(n.title),[l,u]=(0,g.useState)(n.body),[d,f]=(0,g.useState)(n.status),[p,m]=(0,g.useState)(e.defaultEngine),[h,_]=(0,g.useState)(UR[0]),[v,y]=(0,g.useState)(!1),[b,x]=(0,g.useState)(!1),S=(0,g.useRef)({}),C=e=>t=>{S.current[e]=t},w=i?`title`:o?`workspace`:a?`open`:`title`;(0,g.useEffect)(()=>S.current[w]?.focus(),[w]);let T=()=>({title:s.trim()||n.title,body:l,status:d}),E=()=>({engine:p,placement:h,jump:v}),D=t=>{Cn(),t&&e.onOutcome(t)},O=()=>s.trim()?!0:(S.current.title?.focus(),!1),k=()=>{i?O()&&D({kind:`create`,title:s.trim(),body:l,start:E()}):o?D({kind:`start`,...E(),...T()}):a&&D({kind:`open`,taskId:a,...T()})},A=()=>{i&&O()&&D({kind:`create`,title:s.trim(),body:l,start:null})},j=()=>D(i?null:{kind:`close`,...T()}),ee=(0,g.useRef)({commit:k,saveOnly:A,close:j});ee.current={commit:k,saveOnly:A,close:j},(0,g.useEffect)(()=>{let e=e=>{let t=e.key===`Escape`?ee.current.close:e.key===`Enter`&&(e.ctrlKey||e.metaKey)?ee.current.commit:e.key.toLowerCase()===`s`&&e.ctrlKey&&!e.metaKey?ee.current.saveOnly:null;t&&(e.preventDefault(),e.stopImmediatePropagation(),t())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[]);let M=async t=>{let n=t.find(e=>e.size>IR);if(n){G(z(`pages.attachTooLarge`,{name:n.name||n.type}),`error`);return}x(!0);try{let n=await Promise.all(t.map(t=>HR(e.model.client,t)));u(e=>zR(e,n))}catch(e){G(K(e),`error`)}finally{x(!1)}},N=e=>{let t=BR(e.clipboardData.files);t.length!==0&&(e.preventDefault(),M(t))},P=e=>{let t=BR(e.dataTransfer.files);e.preventDefault(),t.length>0&&M(t)},F=(e,t,n)=>e[(Math.max(0,e.indexOf(t))+n+e.length)%e.length],I=(e,t,n)=>r=>{if(r.ctrlKey||r.metaKey||r.altKey)return;let i=(e===`x`?{ArrowRight:1,l:1,ArrowLeft:-1,h:-1}:{ArrowDown:1,ArrowUp:-1})[r.key];if(i)t(i);else if(r.key===`Enter`&&n)n();else return;r.preventDefault()},te=d===`done`?`text-success`:d===`hold`?`text-warning`:d===`doing`?`text-accent`:`text-muted`,L=e=>t.detail.status[e];return(0,V.jsx)(`div`,{className:Nn,onMouseDown:e=>e.target===e.currentTarget&&ee.current.close(),children:(0,V.jsxs)(`dialog`,{open:!0,className:`${Pn(!0)} ${fz}`,"aria-label":i?t.detail.newStory:`#${n.id}`,onPaste:N,onDrop:P,onDragOver:e=>e.preventDefault(),children:[(0,V.jsxs)(`div`,{className:Fn,children:[i?(0,V.jsx)(`h1`,{className:`${U} text-muted`,children:t.detail.newStory}):(0,V.jsxs)(`h1`,{className:`${U} text-muted ${pz}`,children:[(0,V.jsxs)(`span`,{children:[`#`,n.id]}),(0,V.jsx)(`span`,{className:te,children:L(d)}),(0,V.jsx)(`span`,{className:`text-muted`,children:vL(t.detail.created,{date:n.created})}),a&&(0,V.jsx)(`span`,{className:`text-accent`,children:t.detail.linked})]}),(0,V.jsx)(`button`,{type:`button`,className:Ln,"aria-label":z(`dialog.close`),title:z(`dialog.close`),onClick:()=>ee.current.close(),children:`×`})]}),(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.detail.titleLabel}),(0,V.jsx)(`input`,{ref:C(`title`),className:nn,spellCheck:!1,value:s,onChange:e=>c(e.target.value.replace(/[\r\n]+/g,` `)),onKeyDown:e=>{e.key===`Enter`&&!e.ctrlKey&&!e.metaKey&&(e.preventDefault(),S.current.description?.focus())}})]}),(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.detail.description,(0,V.jsx)(`span`,{className:`text-muted ${hz}`,children:ts()?z(`pages.attachHintTouch`):t.detail.attachHint}),b&&(0,V.jsx)(`span`,{className:`text-accent`,children:`…`})]}),(0,V.jsx)(`textarea`,{ref:C(`description`),className:`${nn} ${kn} ${gz}`,rows:8,spellCheck:!1,placeholder:t.detail.noDescription,value:l,onChange:e=>u(e.target.value)})]}),!i&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsxs)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted flex items-baseline gap-2.5`,children:[t.detail.statusLabel,(0,V.jsx)(`span`,{className:`keys-only text-muted tracking-[0] normal-case`,children:`←/→`})]}),(0,V.jsx)(Tz,{fieldRef:C(`status`),label:t.detail.statusLabel,className:`flex flex-wrap gap-1.5`,onKeyDown:I(`x`,e=>f(F(Ez,d,e))),children:Ez.map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===d,className:jn(e===d),onClick:()=>{f(e),S.current.status?.focus()},children:L(e)},e))})]}),o?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.detail.engine,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`←/→`})]}),(0,V.jsx)(Tz,{fieldRef:C(`engine`),label:t.detail.engine,className:An,onKeyDown:I(`x`,t=>m(F(e.engines.map(e=>e.id),p,t)),k),children:e.engines.map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e.id===p,className:jn(e.id===p),onClick:()=>{m(e.id),S.current.engine?.focus()},children:e.name},e.id))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.detail.workspace,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`↑/↓`})]}),(0,V.jsx)(Tz,{fieldRef:C(`workspace`),label:t.detail.workspace,className:_z,onKeyDown:I(`y`,e=>_(F(UR,h,e)),k),children:UR.map(e=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===h,className:`touch:py-1.5 ${vz(e===h)}`,onClick:()=>{_(e),S.current.workspace?.focus()},children:[e===h?`▸ `:` `,t.detail.placement[e]]},e))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.detail.jumpLabel,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`←/→`})]}),(0,V.jsx)(Tz,{fieldRef:C(`jump`),label:t.detail.jumpLabel,className:An,onKeyDown:I(`x`,()=>y(!v),k),children:[!1,!0].map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===v,className:jn(e===v),onClick:()=>{y(e),S.current.jump?.focus()},children:e?t.detail.jump.follow:t.detail.jump.stay},String(e)))})]}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${yz}`,children:(0,V.jsx)(AT,{text:is(i?t.detail.createLegend:t.detail.startLegend)})}),(0,V.jsxs)(`div`,{className:rn,children:[i&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:A,children:z(`pages.storySave`)}),(0,V.jsx)(`button`,{type:`button`,className:Pe(),onClick:k,children:z(i?`pages.storySaveStart`:`pages.storyStart`)})]})]}):a?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.detail.sessionLabel}),(0,V.jsxs)(`div`,{className:`${An} ${Cz}`,children:[(0,V.jsx)(`button`,{ref:C(`open`),type:`button`,className:jn(!0),onClick:()=>D({kind:`open`,taskId:a,...T()}),children:t.detail.openAction}),(0,V.jsx)(`button`,{ref:C(`unlink`),type:`button`,className:jn(),onClick:()=>D({kind:`unlink`,...T()}),children:t.detail.unlinkAction})]})]}),(0,V.jsx)(Dz,{model:e.model,taskId:a}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${yz}`,children:(0,V.jsx)(AT,{text:is(t.detail.openLegend)})})]}):(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${yz}`,children:(0,V.jsx)(AT,{text:is(t.detail.doneNote)})})]})]})})}var kz={"waiting-on-you":`text-error`,landing:`text-success`,"ready-for-review":`text-ink`,working:`text-accent`};function Az(e){let[t,n]=(0,g.useState)(()=>{let t=Hs(e,`engines.list`);return t?Cs(t.engines):[]});return(0,g.useEffect)(()=>{Ws(e,`engines.list`).then(e=>n(Cs(e.engines))).catch(()=>n([]))},[e]),{engines:t,defaultEngine:ws(t)}}function jz(e,t){let n=wL(e),r=n.join(`
|
|
123
|
-
`),[i,a]=(0,g.useState)(()=>Hs(e,`kanban.boards`)??null);return(0,g.useEffect)(()=>{let t=!0,r=e.client,i=e=>r.request(e).then(e=>e.repos).catch(()=>[]);return Promise.all([i(`repos.list`),i(`issue.repos`)]).then(([e,t])=>
|
|
124
|
-
`);(0,g.useEffect)(()=>{for(let e of b)e.readError&&G(vL(t.readFailedToast,{repo:SL(e.repoRoot,w),error:e.readError}),`error`)},[T]);let E=l?.tasks??[],D=new Set(E.map(e=>e.id)),O=e=>E.find(t=>t.id===e)?.group,{columns:k,attentionCount:A}=MR(C?PR(C.issues,D.size===0?void 0:e=>D.has(e)):[],e=>O(e)===`waiting-on-you`),j={backlog:t.column.backlog,in_progress:t.column.inProgress,parked:t.column.parked,done:t.column.done},ee=(e,t)=>{let r=e.taskId&&(t===`in_progress`||t===`parked`)?O(e.taskId):void 0,i=r===`waiting-on-you`?n.waitingOnYou:r===`landing`?n.landing:r===`ready-for-review`?n.readyForReview:r===`working`?n.working:null;return r&&i?{label:i,tone:kz[r]??`text-muted`}:null},M=async(t,n,r,i)=>{try{return await e.client.request(t,{repo:C?.repoRoot,...n})}catch(e){return G(vL(r,{id:String(i),error:bL(e)}),`error`),null}finally{a()}},N=(e,n)=>M(`issue.setStatus`,{id:e.id,status:n},t.statusFailed,e.id),P=t=>{un.set(null),e.select(t)},F=async(n,r,i)=>{try{let a=await WR(e.client,{repo:n,issue:r,engine:i.engine,placement:i.placement});for(let e of a.warnings)G(vL(e.kind===`link`?t.linkFailed:t.statusFailed,{id:String(r.id),error:e.error}),`error`);i.jump?(un.set(null),e.selectWhenListed(a.taskId),a.tabId&&await e.refreshTabsNow().then(()=>e.select(a.taskId,a.tabId))):G(vL(t.detail.startedBackground,{title:`#${r.id} ${r.title}`}))}catch(e){G(K(e),`error`)}finally{a()}},I=async(e,n)=>{if(!C||n.kind===`create`)return;let r={};n.title!==e.title&&(r.title=n.title),n.body!==e.body&&(r.body=n.body),(r.title!==void 0||r.body!==void 0)&&await M(`issue.update`,{id:e.id,...r},t.updateFailed,e.id),n.status!==e.status&&await N(e,n.status),n.kind===`open`?P(n.taskId):n.kind===`unlink`?await M(`issue.update`,{id:e.id,task:`none`},t.unlinkFailed,e.id):n.kind===`start`&&await F(C.repoRoot,{...e,...r},n)},te=t=>{C&&(m(t.id),W.set((0,V.jsx)(Oz,{model:e,issue:t,mode:`detail`,engines:s,defaultEngine:c,onOutcome:e=>void I(t,e)})))},L=()=>{if(!C)return;let n=C.repoRoot,r={id:C.nextId,title:``,status:`open`,created:new Date().toISOString().slice(0,10),body:``};W.set((0,V.jsx)(Oz,{model:e,issue:r,mode:`create`,engines:s,defaultEngine:c,onOutcome:i=>{i.kind===`create`&&(async()=>{try{let t=await e.client.request(`issue.create`,{repo:n,title:i.title,body:i.body});if(a(),!i.start)return;let o=t.issues.find(e=>e.id===r.id)??t.issues.reduce((e,t)=>e&&e.id>t.id?e:t,null);o&&await F(n,o,i.start)}catch(e){G(vL(t.createFailed,{error:bL(e)}),`error`)}})()}}))},ne=()=>{let n=C?.issues.find(e=>e.id===p);if(!C||!n)return;let i=C.repoRoot;W.set((0,V.jsx)(dr,{title:vL(t.confirmDelete.title,{id:String(n.id)}),body:vL(t.confirmDelete.body,{title:n.title}),confirmLabel:r.confirm,onConfirm:async()=>{try{await e.client.request(`issue.delete`,{repo:i,id:n.id}),m(null)}catch(e){G(vL(t.deleteFailed,{id:String(n.id),error:bL(e)}),`error`)}finally{a()}}}))},re=e=>{b.length!==0&&(f(b[(S+e+b.length)%b.length]?.repoRoot??null),m(null))},ie=e=>{let t=AR(k,p,e);t!=null&&m(t)},R=e=>k.some(e=>e.issues.length>0)?ie(e):re(e===`left`?-1:1);OL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`r`:return a(),!0;case`Tab`:return re(e.shiftKey?-1:1),!0;case`ArrowUp`:return ie(`up`),!0;case`ArrowDown`:return ie(`down`),!0;case`ArrowRight`:case`l`:return R(`right`),!0;case`ArrowLeft`:case`h`:return R(`left`),!0;case`Enter`:{let e=C?.issues.find(e=>e.id===p);return e&&te(e),!0}case`n`:return L(),!0;case`d`:return ne(),!0;default:return!1}});let ae=(0,g.useRef)(null);(0,g.useEffect)(()=>{ae.current?.querySelector(`[data-issue="${p}"]`)?.scrollIntoView({block:`nearest`})},[p]);let oe=(e,n,r)=>{m(e.id),sn.set({x:n,y:r,items:Ez.filter(t=>t!==e.status).map(n=>({label:vL(t.menu.setStatus,{status:t.detail.status[n]}),run:()=>void N(e,n)}))})},se=k.find(e=>e.issues.some(e=>e.id===p))??k.find(e=>e.issues.length>0)??k[0],ce=(e,n)=>(0,V.jsxs)(`section`,{className:rz(!n),children:[n&&(0,V.jsxs)(`h2`,{className:iz(e.key),children:[(0,V.jsxs)(`span`,{children:[j[e.key],` (`,e.issues.length+e.hiddenCount,`)`]}),e.key===`in_progress`&&A>0&&(0,V.jsx)(`span`,{className:`text-warning`,children:vL(t.attention,{count:String(A)})})]}),(0,V.jsxs)(`div`,{className:az,children:[e.issues.map(t=>(0,V.jsx)(Mz,{issue:t,column:e.key,selected:t.id===p,badge:ee(t,e.key),onSelect:()=>m(t.id),onOpen:()=>te(t),onMenu:(e,n)=>oe(t,e,n)},t.id)),e.issues.length===0&&e.hiddenCount===0&&(0,V.jsx)(`p`,{className:`mono text-muted ${oz}`,children:t.columnEmpty}),e.hiddenCount>0&&(0,V.jsx)(`p`,{className:`mono text-muted ${oz}`,children:vL(t.more,{count:String(e.hiddenCount)})})]})]},e.key);return(0,V.jsxs)(`div`,{className:`${yM} ${qR}`,tabIndex:0,ref:h,children:[(0,V.jsxs)(`div`,{className:`kb-top`,children:[(0,V.jsx)(`h1`,{className:xM,children:t.title}),(0,V.jsx)(`span`,{className:`mono keys-only text-muted`,children:t.hint}),(0,V.jsxs)(`span`,{className:`mono ${wM}`,children:[(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.kanban}`,disabled:!C,onClick:L,children:z(`pages.new`)}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.kanban}`,disabled:!C?.issues.some(e=>e.id===p),onClick:ne,children:z(`pages.delete`)})]})]}),o===null?(0,V.jsx)(`p`,{className:`text-muted`,children:t.loading}):C?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:JR,children:[(0,V.jsxs)(`button`,{type:`button`,className:YR,onClick:()=>re(1),children:[SL(C.repoRoot,w),b.length>1&&(0,V.jsx)(`span`,{className:`text-muted`,children:` ${S+1}/${b.length}`})]}),!_&&(0,V.jsx)(`span`,{className:`mono text-muted ${XR}`,children:C.repoRoot}),C.issues.length===0&&!C.readError&&(0,V.jsx)(`span`,{className:`text-muted ${ZR}`,children:t.empty})]}),C.readError?(0,V.jsx)(`p`,{className:`text-error`,children:vL(t.readFailed,{error:C.readError})}):_&&se?(0,V.jsxs)(`div`,{className:$R,ref:ae,children:[(0,V.jsx)(`div`,{className:`mono ${ez}`,children:k.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:tz(e.key===se.key),onClick:()=>{let t=e.issues[0];t&&m(t.id)},children:[j[e.key],` (`,e.issues.length+e.hiddenCount,`)`]},e.key))}),ce(se,!1)]}):(0,V.jsx)(`div`,{className:QR,ref:ae,children:k.map(e=>ce(e,!0))})]}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.noRepos})]})}var Iz={title:`Mods`,empty:`No mod is drawing anything.`,emptyHint:`A plugin with a [mod] entry draws its panes here, in the TUI and the web alike.`,keys:`↑↓/tab move · enter press · esc back`,pressFailed:`{plugin}: the press did not reach the mod ({reason})`},Lz={title:`Mods`,empty:`当前没有 mod 在绘制内容。`,emptyHint:`声明了 [mod] 的插件会在这里绘制面板,TUI 和 web 显示的是同一份。`,keys:`↑↓/tab 移动 · enter 按下 · esc 返回`,pressFailed:`{plugin}:按键没有送达 mod({reason})`},Rz={info:`text-info`,success:`text-success`,warning:`text-warning`,error:`text-error`,muted:`text-muted`},zz=`flex flex-col gap-3`,Bz=`[&_p]:mx-0 [&_p]:my-1`,Vz=`rounded-md border-hairline border-line px-3 pt-2 pb-3 font-mono`,Hz=`mb-2 text-meta leading-[inherit] text-ink`,Uz=(e,t)=>`flex min-w-0 items-start ${e?`[&>form]:flex-[1_1_12em] [&>form]:self-center`:``} ${t?`rounded-sm border-hairline border-line`:``}`,Wz=(e,t)=>`whitespace-pre-wrap wrap-anywhere ${e?Rz[e]:`text-ink`} ${t?`font-bold`:``}`,Gz=(e,t)=>`cursor-pointer rounded-sm border-hairline border-current px-2.5 py-0.5 [font:inherit] font-bold! ${Rz[e]} ${t?`bg-[color-mix(in_srgb,currentcolor_18%,transparent)]`:`bg-transparent [&:hover]:bg-[color-mix(in_srgb,currentcolor_18%,transparent)]`}`,Kz=`flex min-w-0 max-w-[40em] self-stretch`,qz=`w-full font-mono`,Jz=[0,6,12,20];function Yz(e){return`mod-${e.kind}:${e.plugin}/${e.pane}/${e.key}`}function Xz(e){let[t,n]=(0,g.useState)(e.value??``);return(0,V.jsx)(`form`,{className:Kz,onSubmit:r=>{r.preventDefault(),e.onSubmit(t),n(e.value??``)},children:(0,V.jsx)(`input`,{id:e.id,className:`${nn} ${qz}`,spellCheck:!1,value:t,placeholder:e.placeholder,onFocus:e.onFocus,onChange:e=>n(e.target.value)})})}function Zz(e){let{node:t}=e;if(t.type===`text`)return(0,V.jsx)(`span`,{className:Wz(t.tone,t.bold===!0),children:t.text});if(t.type===`input`){let n={kind:`input`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,V.jsx)(Xz,{id:Yz(n),placeholder:t.placeholder,value:t.value,onFocus:()=>e.onFocus(n),onSubmit:t=>e.onSubmit(n,t)},t.value??``)}if(t.type===`button`){let n={kind:`button`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,V.jsx)(`button`,{type:`button`,id:Yz(n),className:Gz(t.tone??`info`,Di(n,e.cursor)),onFocus:()=>e.onFocus(n),onClick:()=>e.onPress(n),children:t.label})}return(0,V.jsx)(`div`,{className:Uz(t.direction===`row`,t.border===!0),style:{flexDirection:t.direction??`column`,gap:Jz[t.gap??0],padding:Jz[t.padding??0]},children:t.children.map((t,n)=>(0,V.jsx)(Zz,{...e,node:t},n))})}function Qz({model:e}){let t=B()===`zh`?Lz:Iz,n=v(e.mods),r=Ei(n),[i,a]=(0,g.useState)(null),o=Oi(r,i),s=kL(),c=(0,g.useRef)(!1),l=(t,n,r={})=>{a(t),!c.current&&(c.current=!0,e.client.request(n,{plugin:t.plugin,pane:t.pane,key:t.key,...r}).catch(e=>G(e instanceof Error?e.message:String(e),`error`)).finally(()=>{c.current=!1}))},u=e=>l(e,`mod.press`),d=(e,t)=>l(e,`mod.submit`,{value:t}),f=e=>{let t=ki(r,o,e);a(t),t&&document.getElementById(Yz(t))?.focus()};return OL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`ArrowDown`:return f(1),!0;case`ArrowUp`:return f(-1),!0;case`Enter`:return e.target instanceof HTMLButtonElement?!1:(o?.kind===`button`&&u(o),!0);default:return!1}}),(0,V.jsxs)(`div`,{className:`${bM} ${zz}`,tabIndex:0,ref:s,children:[(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`h1`,{className:xM,children:t.title}),(0,V.jsx)(`span`,{className:`keys-only touch:empty:hidden! text-muted ${CM(!1)}`,children:t.keys})]}),n.length===0?(0,V.jsxs)(`div`,{className:Bz,children:[(0,V.jsx)(`p`,{children:t.empty}),(0,V.jsx)(`p`,{className:`text-muted`,children:t.emptyHint})]}):n.map(e=>(0,V.jsxs)(`section`,{className:Vz,children:[(0,V.jsxs)(`header`,{className:Hz,children:[e.title,` `,(0,V.jsx)(`span`,{className:`text-muted`,children:e.plugin})]}),(0,V.jsx)(Zz,{node:e.tree,pane:e,cursor:o,onPress:u,onSubmit:d,onFocus:a})]},`${e.plugin}/${e.id}`))]})}function $z(e){return e===`dispatch_failed`||e===`skipped_unavailable`||e===`script_failed`}function eB(e,t){return e.response?`responded`:e.status!==`dispatched`&&e.status!==`revived`?null:e.deliveryStatus===`missing`?`missing`:e.deliveryStatus===`awaiting`?`awaiting`:t-Date.parse(e.at)>72e5?`missing`:`awaiting`}var tB=6e4,nB=3294,rB=new Map([[`JAN`,1],[`FEB`,2],[`MAR`,3],[`APR`,4],[`MAY`,5],[`JUN`,6],[`JUL`,7],[`AUG`,8],[`SEP`,9],[`OCT`,10],[`NOV`,11],[`DEC`,12]]),iB=new Map([[`SUN`,0],[`MON`,1],[`TUE`,2],[`WED`,3],[`THU`,4],[`FRI`,5],[`SAT`,6]]),aB=256;function oB(e,t,n){let r=e.toUpperCase(),i=t?.get(r);if(i!==void 0)return i;if(!/^\d+$/.test(r))throw Error(`invalid cron ${n}: ${e}`);return Number(r)}function sB(e){let t=new Set;for(let n of e.value.split(`,`)){if(n.length===0)throw Error(`invalid cron ${e.field}: ${e.value}`);let[r,i,...a]=n.split(`/`);if(a.length>0||r===void 0)throw Error(`invalid cron ${e.field}: ${n}`);let o=1;if(i!==void 0&&(!/^\d+$/.test(i)||(o=Number(i),o<1)))throw Error(`invalid cron ${e.field} step: ${n}`);let s,c;if(r===`*`)s=e.min,c=e.max;else if(r.includes(`-`)){let[t,i,...a]=r.split(`-`);if(a.length>0||t===void 0||i===void 0)throw Error(`invalid cron ${e.field} range: ${n}`);s=oB(t,e.names,e.field),c=oB(i,e.names,e.field)}else s=oB(r,e.names,e.field),c=i===void 0?s:e.max;if(s<e.min||c>e.max||s>c)throw Error(`cron ${e.field} out of range: ${n}`);for(let n=s;n<=c;n+=o)t.add(e.normalize?e.normalize(n):n)}return t}function cB(e){if(e.length>aB)throw Error(`cron expression is too long`);let t=e.trim().split(/\s+/).filter(Boolean);if(t.length!==5)throw Error(`cron expression needs 5 fields (minute hour day month weekday), got ${t.length}`);let[n,r,i,a,o]=t;return{minutes:sB({value:n,min:0,max:59,field:`minute`}),hours:sB({value:r,min:0,max:23,field:`hour`}),daysOfMonth:sB({value:i,min:1,max:31,field:`day-of-month`}),months:sB({value:a,min:1,max:12,field:`month`,names:rB}),daysOfWeek:sB({value:o,min:0,max:7,field:`weekday`,names:iB,normalize:e=>e%7}),dayOfMonthRestricted:!i.startsWith(`*`),dayOfWeekRestricted:!o.startsWith(`*`)}}function lB(e){try{return cB(e),!0}catch{return!1}}function uB(e,t,n){return new Date(e.year,e.month-1,e.day,t,n,0,0).getTime()}function dB(e){let t=new Date(e);return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}function fB(e,t){return dB(new Date(e.year,e.month-1,e.day+t,12,0,0,0).getTime())}function pB(e,t){if(!e.months.has(t.month))return!1;let n=e.daysOfMonth.has(t.day),r=e.daysOfWeek.has(new Date(t.year,t.month-1,t.day).getDay());return e.dayOfMonthRestricted&&e.dayOfWeekRestricted?n||r:n&&r}function mB(e){return e-e%tB}function hB(e,t){return[...e].sort((e,n)=>(e-n)*t)}function gB(e,t){let n=cB(e),r=hB(n.hours,1),i=hB(n.minutes,1),a=new Date(mB(t)+tB),o=dB(a.getTime()),s=a.getHours(),c=a.getMinutes();for(let e=0;e<nB;e++){if(pB(n,o)){for(let e of r)if(!(e<s))for(let n of i){if(e===s&&n<c)continue;let r=uB(o,e,n);if(r>t)return r}}o=fB(o,1),s=0,c=0}throw Error(`cron expression never matches: ${e}`)}var _B=[`minute`,`hour`,`dayOfMonth`,`month`,`dayOfWeek`];function vB(e){let t=e.trim().split(/\s+/).filter(Boolean);return _B.map((e,n)=>t[n]??`*`)}function yB(e){return _B.map((t,n)=>e[n]??`*`).join(` `)}var bB=[`*`,`*/5`,`*/10`,`*/15`,`*/30`,...EB(0,59)],xB=[`*`,`*/2`,`*/3`,`*/4`,`*/6`,`*/12`,...EB(0,23)],SB=[`*`,...EB(1,31)],CB=[`*`,`JAN`,`FEB`,`MAR`,`APR`,`MAY`,`JUN`,`JUL`,`AUG`,`SEP`,`OCT`,`NOV`,`DEC`],wB=[`*`,`MON-FRI`,`SAT,SUN`,`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`],TB=[`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`];function EB(e,t){let n=[];for(let r=e;r<=t;r++)n.push(String(r));return n}var DB={minute:bB,hour:xB,dayOfMonth:SB,month:CB,dayOfWeek:wB};function OB(e,t,n){let r=DB[e],i=r.indexOf(t.trim().toUpperCase());return i<0?(n>0?r[0]:r[r.length-1])??t:r[(i+n+r.length)%r.length]??t}function kB(e,t){return Math.min(Math.max(e+t,0),_B.length-1)}function AB(e,t,n){let r=vB(e);return t<0||t>=_B.length||(r[t]=n),yB(r)}function jB(e,t){let[n,r,i,a,o]=vB(e);if(a!==`*`||i!==`*`||n===void 0||r===void 0||o===void 0)return null;let s=MB(n,r,t);if(!s)return null;let{at:c,bare:l}=s;if(o===`*`)return l?c:t(`automations.schedule.everyDay`,{at:c});if(o===`MON-FRI`)return t(`automations.schedule.weekdays`,{at:c});if(o===`SAT,SUN`)return t(`automations.schedule.weekends`,{at:c});let u=TB.find(e=>e===o.toUpperCase());return u?t(`automations.schedule.onWeekday`,{weekday:t(`automations.schedule.dow.${u}`),at:c}):null}function MB(e,t,n){return t===`*`?e===`*`?{at:n(`automations.schedule.everyMinute`),bare:!0}:e.startsWith(`*/`)?{at:n(`automations.schedule.everyMinutes`,{n:e.slice(2)}),bare:!0}:/^\d+$/.test(e)?{at:n(`automations.schedule.hourlyAt`,{minute:e.padStart(2,`0`)}),bare:!1}:null:t.startsWith(`*/`)&&e===`0`?{at:n(`automations.schedule.everyHours`,{n:t.slice(2)}),bare:!0}:/^\d+$/.test(t)&&/^\d+$/.test(e)?{at:n(`automations.schedule.atClock`,{time:`${t.padStart(2,`0`)}:${e.padStart(2,`0`)}`}),bare:!1}:null}function NB(e,t,n,r){let i=e.trim();if(!lB(i))return{kind:`invalid`};let a;try{a=gB(i,t)}catch{return{kind:`never`}}return{kind:`ok`,nextRunMs:a,relative:PB(a-t,n),absolute:FB(a,t,n,r)}}function PB(e,t){let{minutes:n,hours:r,days:i}=hR(e);return n<60?t(`automations.when.inMinutes`,{n:Math.max(1,n)}):r<24?t(`automations.when.inHours`,{n:r}):t(`automations.when.inDays`,{n:i})}function FB(e,t,n,r){let i=new Date(e),a=`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,o=new Date(t);if(i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate())return a;let s=e-t<5184e5,c=i.toLocaleDateString(r,s?{weekday:`short`}:{weekday:`short`,month:`short`,day:`numeric`});return s?`${c} ${a}`:n(`automations.when.dateTime`,{date:c,time:a})}var IB={name:``,repo:``,prompt:``,schedule:`0 9 * * MON-FRI`};function LB(e){return e.name.trim().length>0&&(e.repo===null||e.repo.trim().length>0)&&e.prompt.trim().length>0&&(!e.target||e.target.taskId.trim().length>0&&/^tab-[\w-]+$/.test(e.target.tabId))&&lB(e.schedule.trim())}function RB(e){return e.name.trim().length===0?`name`:e.repo!==null&&e.repo.trim().length===0?`repo`:e.target&&!e.target.taskId.trim()?`target`:e.target&&!/^tab-[\w-]+$/.test(e.target.tabId)?`targetTab`:e.prompt.trim().length===0?`prompt`:lB(e.schedule.trim())?null:`schedule`}var zB=`flex flex-col overflow-hidden @container`,BB=`mt-2.5 grid min-h-0 flex-1 grid-cols-[minmax(260px,2fr)_minmax(0,3fr)] gap-4 rt-narrow:flex rt-narrow:flex-col rt-narrow:overflow-y-auto`,VB=`flex min-h-0 flex-col gap-3 overflow-y-auto scrollbar-none rt-narrow:shrink-0 rt-narrow:overflow-visible`,HB=`flex gap-1.5 px-2 pt-0 pb-1`,UB=e=>`flex min-w-0 cursor-pointer flex-col gap-0.5 rounded-sm px-2 py-1.5 ${e?`bg-menu`:`[&:hover]:bg-hover`}`,WB=`flex min-w-0 items-baseline gap-2.5`,GB=e=>`min-w-0 flex-1 truncate font-bold ${e?`text-muted`:``}`,KB=`whitespace-nowrap text-meta`,qB=`truncate text-meta`,JB=`flex min-h-0 flex-col gap-1.5 overflow-y-auto py-0 pr-0 pl-4 [border-left:var(--hairline)_solid_var(--line)] [&_h2]:m-0 [&_p]:m-0 [&>*]:shrink-0 [&>h2]:mt-2.5 rt-narrow:shrink-0 rt-narrow:overflow-visible rt-narrow:pt-3 rt-narrow:pl-0 rt-narrow:[border-left:none] rt-narrow:[border-top:var(--hairline)_solid_var(--line)]`,YB=`flex flex-wrap items-baseline justify-between gap-3`,XB=`font-sans text-display font-bold normal-nums wrap-anywhere`,ZB=`mx-0 mt-1 mb-0 grid grid-cols-[max-content_minmax(0,1fr)] items-baseline gap-x-3.5 gap-y-1 [&_dd]:m-0 [&_dd]:wrap-anywhere [&_dd_.mono]:whitespace-pre`,QB=`max-h-[12lh] overflow-y-auto rounded-sm bg-inset px-2.5 py-2 whitespace-pre-wrap wrap-anywhere`,$B=`min-w-0 text-meta leading-[inherit]`,eV=`flex w-full min-w-0 gap-2 text-inherit`,tV=eV,nV=`${eV} cursor-pointer border-none bg-transparent p-0 text-left font-[inherit] [&:hover]:underline`,rV=`min-w-0 flex-1 truncate`,iV=`[&+&]:mt-1.5`,aV=e=>`whitespace-pre-wrap wrap-anywhere text-meta ${e?``:`leading-[inherit]`}`,oV=`text-meta`,sV=`flex gap-4.5`,cV=e=>`flex min-w-[5ch] flex-col gap-0.5 rounded-sm border-hairline px-1.5 py-1 text-left font-mono text-body normal-nums [&>span]:text-meta [&>span]:text-subtle ${e?`border-accent font-bold text-accent`:`border-transparent font-normal`}`,lV=`hidden gap-2 px-1 pt-0.5 pb-1.5 touch:flex`,uV=`h-8 w-11 touch-manipulation rounded-sm border-hairline border-line bg-inset font-mono text-display font-normal normal-nums text-ink`;function dV(e){let{auto:t,common:n}=_L(),r=yL(),i=B()===`zh`?`zh-CN`:`en-US`,[a,o]=(0,g.useState)(()=>({...IB,repo:e.repos.find(t=>e.defaultRepo&&xL(t)===xL(e.defaultRepo))??e.repos[0]??null})),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(null),d=(0,g.useRef)({}),f=e=>t=>{d.current[e]=t};(0,g.useEffect)(()=>d.current.name?.focus(),[]);let p=e=>{o(t=>({...t,...e})),u(null)};(0,g.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),Cn())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[]);let m=()=>{if(LB(a)){Cn(),e.onSubmit({name:a.name.trim(),repo:a.repo===null?null:a.repo.trim(),prompt:a.prompt.trim(),schedule:a.schedule.trim(),...a.target?{target:a.target}:{}});return}let n=RB(a);n&&(d.current[n]?.focus(),u(Reflect.get(t.missing,n)))},h=a.repo===null?[]:e.tasks.filter(e=>xL(e.repo)===xL(a.repo??``)),_=a.target?h.findIndex(e=>e.id===a.target?.taskId)+1:0,v=e=>{let t=(_+e+h.length+1)%(h.length+1),n=h[t-1];p({target:n?{kind:`existing-tab`,taskId:n.id,tabId:`tab-1`}:void 0})},y=[null,...e.repos],b=e=>{let t=Math.min(Math.max(y.indexOf(a.repo)+e,0),y.length-1),n=y[t];n!==void 0&&p({repo:n,target:void 0})},x=e=>t=>{(t.key===`ArrowUp`||t.key===`ArrowDown`)&&(t.preventDefault(),e(t.key===`ArrowDown`?1:-1))},S=e=>t=>{t.key===`Enter`&&(t.preventDefault(),d.current[e]?.focus())},C=vB(a.schedule),w=e=>{let t=_B[s];t&&p({schedule:AB(a.schedule,s,OB(t,C[s]??`*`,e))})},T=e=>{if(!(e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`ArrowLeft`||e.key===`h`)c(kB(s,-1));else if(e.key===`ArrowRight`||e.key===`l`)c(kB(s,1));else if(e.key===`ArrowUp`||e.key===`ArrowDown`)w(e.key===`ArrowUp`?1:-1);else return;e.preventDefault()}},E=NB(a.schedule,Date.now(),r,i),D=jB(a.schedule,r);return(0,V.jsx)(`div`,{className:Nn,onMouseDown:e=>e.target===e.currentTarget&&Cn(),children:(0,V.jsxs)(`dialog`,{open:!0,className:`${Pn(!0)} ${fz}`,"aria-label":t.newTitle,children:[(0,V.jsx)(`h1`,{className:`${U} text-muted`,children:t.newTitle}),(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.fieldName}),(0,V.jsx)(`input`,{ref:f(`name`),className:nn,spellCheck:!1,placeholder:t.namePlaceholder,value:a.name,onChange:e=>p({name:e.target.value}),onKeyDown:S(`repo`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.fieldRepo,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`↑/↓`})]}),(0,V.jsx)(Tz,{fieldRef:f(`repo`),kind:`list`,label:t.fieldRepo,className:_z,onKeyDown:x(b),children:y.map(t=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-selected":t===a.repo,className:`touch:py-1.5 ${vz(t===a.repo)}`,onClick:()=>{p({repo:t,target:void 0}),d.current.repo?.focus()},children:[t===a.repo?`▸ `:` `,t===null?z(`rail.noProject`):SL(t,e.repos)]},t??``))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.fieldTarget,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`↑/↓`})]}),(0,V.jsx)(Tz,{fieldRef:f(`target`),kind:`list`,label:t.fieldTarget,onKeyDown:x(v),onClick:()=>v(1),children:a.target?h[_-1]?.title??a.target.taskId:t.targetFresh})]}),a.target&&(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:t.fieldTargetTab}),(0,V.jsx)(`input`,{ref:f(`targetTab`),className:nn,spellCheck:!1,value:a.target.tabId,onChange:e=>a.target&&p({target:{...a.target,tabId:e.target.value}}),onKeyDown:S(`prompt`)})]}),(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.fieldPrompt}),(0,V.jsx)(`input`,{ref:f(`prompt`),className:nn,spellCheck:!1,placeholder:t.promptPlaceholder,value:a.prompt,onChange:e=>p({prompt:e.target.value}),onKeyDown:S(`schedule`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${mz}`,children:[t.fieldSchedule,(0,V.jsx)(`span`,{className:`keys-only text-muted ${hz}`,children:`←/→ ↑/↓`})]}),(0,V.jsx)(Tz,{fieldRef:f(`schedule`),kind:`cells`,label:t.fieldSchedule,className:sV,onKeyDown:T,children:_B.map((e,n)=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,className:cV(n===s),onClick:()=>{c(n),d.current.schedule?.focus()},children:[C[n]??`*`,(0,V.jsx)(`span`,{children:t.cronField[e]})]},e))}),(0,V.jsx)(`div`,{className:lV,children:[-1,1].map(e=>{let n=t.cronField[_B[s]??`minute`]??``;return(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,className:uV,"aria-label":z(e<0?`pages.cronDown`:`pages.cronUp`,{field:n}),onClick:()=>{w(e),d.current.schedule?.focus()},children:e<0?`−`:`+`},e)})}),E.kind===`ok`?(0,V.jsxs)(`p`,{className:`mono text-success`,children:[D?`${D}, `:``,E.relative,`, `,E.absolute]}):(0,V.jsx)(`p`,{className:`mono text-error`,children:E.kind===`never`?t.cronNever:t.cronInvalid})]}),l&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,l]}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${yz}`,children:(0,V.jsx)(AT,{text:is(t.composerLegend)})}),(0,V.jsxs)(`div`,{className:rn,children:[(0,V.jsx)(`button`,{type:`button`,className:en,onClick:Cn,children:n.cancel}),(0,V.jsx)(`button`,{ref:f(`confirm`),type:`button`,className:Pe(),onClick:m,children:n.create})]})]})]})})}var fV=[`ok`,`blocked`,`failed`,`skipped`];function pV(e){switch(e.status){case`dispatched`:case`revived`:case`ran`:return`ok`;case`skipped_blocked`:return`blocked`;case`dispatch_failed`:case`skipped_unavailable`:case`script_failed`:return`failed`;default:return`skipped`}}var mV={scheduled:`schedule`,manual:`manual`,webhook:`webhook`};function hV(e){if(e.status===`skipped_precheck`)return e.precheckResult?.durationMs??null;if(e.status===`ran`||e.status===`script_failed`)return null;let t=Date.parse(e.at),n=Date.parse(e.response?.at??``);return Number.isFinite(t)&&Number.isFinite(n)&&n>=t?n-t:null}function gV(e){if(e<1e3)return`${Math.max(0,Math.round(e))}ms`;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return n%60==0?`${r}h`:`${r}h ${n%60}m`}function _V(e,t,n){return(t===null?Object.values(e).flat():e[t]??[]).filter(e=>n===null||pV(e)===n).sort((e,t)=>Date.parse(t.at)-Date.parse(e.at)||t.runNumber-e.runNumber)}function vV(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;try{return{prefix:e.slice(0,t).trim(),value:JSON.parse(e.slice(t,n+1))}}catch{return null}}var yV=(e,t)=>e&&typeof e==`object`?Reflect.get(e,t):void 0;function bV(e){let t=vV(e);if(!t)return{summary:e,full:e};let n=yV(t.value,`error`)??t.value,r=yV(n,`message`),i=yV(n,`code`),a=typeof r==`string`?typeof i==`string`?`${i}: ${r}`:r:null,o=t.prefix.replace(/:$/,``);return{summary:a?`${o} — ${a}`:e,full:`${t.prefix}\n${JSON.stringify(t.value,null,2)}`}}function xV(e){let t=e.trim();if(!/^[[{]/.test(t))return e;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}}var SV={dispatched:`success`,revived:`success`,skipped_precheck:`muted`,skipped_blocked:`warning`,skipped_cancelled:`muted`,skipped_missed:`warning`,skipped_unavailable:`warning`,dispatch_failed:`error`,ran:`success`,script_failed:`error`},CV={success:`text-success`,muted:`text-muted`,warning:`text-warning`,error:`text-error`},wV={success:`✓`,error:`†`,warning:`!`,muted:`·`},TV=e=>SV[e]??`muted`;function EV(e){let{auto:t}=_L(),{runs:n,when:r}=e,i=e=>t.runStatus[e]??e,a=n.filter(e=>e.response);return(0,V.jsxs)(V.Fragment,{children:[n[0]?.precheckResult&&(0,V.jsx)(DV,{run:n[0]}),(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:t.responses}),a.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.noResponses}):a.map(e=>(0,V.jsxs)(`div`,{className:iV,children:[(0,V.jsx)(`p`,{className:`mono ${oV} ${CV[TV(e.status)]}`,children:`#${e.runNumber} ${i(e.status)}, ${r(e.response?.at)}`}),(0,V.jsx)(`p`,{className:aV(!1),children:xV(e.response?.text??``)})]},e.id))]})}function DV({run:e}){let{auto:t}=_L(),n=e.precheckResult;if(!n)return null;let r=n.timedOut?t.precheckTimedOut:vL(t.precheckExited,{code:String(n.exitCode??`?`)}),i=[{label:t.precheckStdout,text:n.stdout},{label:t.precheckStderr,text:n.stderr}].filter(e=>e.text.trim().length>0);return(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:vL(t.precheckDetail,{exit:r,duration:String(n.durationMs)})}),i.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.precheckNoOutput}):i.map(e=>(0,V.jsx)(`p`,{className:`mono ${aV(!0)}`,children:`${e.label}: ${e.text.replace(/\s+$/,``).split(`
|
|
122
|
+
`);return r?r.length>VI?`${r.slice(0,VI).trimEnd()}…`:r:null}function UI(e){let t=e.files.filter(e=>e.scope===`working`),n=t.length>0?`working`:`branch`,r=n===`working`?t:e.files.filter(e=>e.scope===`branch`);return{scope:n,files:r,added:r.reduce((e,t)=>e+(t.added??0),0),deleted:r.reduce((e,t)=>e+(t.deleted??0),0)}}async function WI(e,t,n){let r=new Set(e.tasks.get()?.tasks.map(e=>e.id)),i=0;try{for(let a of t.filter(e=>r.has(e)))await e.client.request(`task.archive`,{taskId:a,archived:!0,...n?{force:!0}:{}}),i++}catch(e){if(i>0&&G(z(`compare.archived`,{count:i})),e instanceof d_&&e.code===`TASK_BUSY`)throw e;G(z(`compare.archiveFailed`,{error:K(e)}),`error`);return}G(z(`compare.archived`,{count:i}))}async function GI(e,t,n){try{for(let r of n)r.id!==t.id&&r.kept&&await e.client.request(`task.keep`,{taskId:r.id,kept:!1});await e.client.request(`task.keep`,{taskId:t.id,kept:!0})}catch(e){G(z(`compare.keepFailed`,{error:K(e)}),`error`);return}G(z(`compare.keptToast`,{title:t.label}));let r=n.filter(e=>e.id!==t.id).map(e=>e.id);r.length!==0&&W.set((0,V.jsx)(dr,{title:z(`compare.archiveTitle`),body:z(`compare.archiveBody`,{count:r.length}),confirmLabel:z(`compare.archiveConfirm`),onConfirm:()=>WI(e,r,!1),escalate:{when:e=>e instanceof d_&&e.code===`TASK_BUSY`,label:z(`compare.archiveBusyConfirm`),title:z(`compare.archiveBusyTitle`),body:()=>z(`compare.archiveBusyBody`),run:()=>WI(e,r,!0)}}))}async function KI(e,t){try{await e.client.request(`task.keep`,{taskId:t.id,kept:!1}),G(z(`compare.unkeptToast`,{title:t.label}))}catch(e){G(z(`compare.keepFailed`,{error:K(e)}),`error`)}}var qI={title:`ROUTINES`,holdingDaemon:`keeping the daemon awake`,notHolding:`none active`,needAttention:`{count} of {total} need you ·`,paused:`paused`,newTitle:`New routine`,composerLegend:`enter create · tab fields · ←→ ↑↓ edit the focused field · esc cancel`,fieldName:`NAME`,fieldRepo:`REPO`,fieldTarget:`DELIVER TO`,fieldTargetTab:`EXISTING ENGINE TAB`,targetFresh:`New task on each run`,targetStanding:`Routine-owned standing task`,targetExisting:`Existing conversation: {task} / {tab}. Never creates or revives a session.`,fieldPrompt:`PROMPT`,fieldSchedule:`SCHEDULE (FIVE-FIELD CRON)`,namePlaceholder:`weekday dependency audit`,promptPlaceholder:`Audit dependencies and summarize risky changes.`,noProject:`Ungrouped`,cronInvalid:`not a five-field cron`,cronField:{minute:`min`,hour:`hour`,dayOfMonth:`day`,month:`month`,dayOfWeek:`weekday`},schedule:{everyDay:`every day {at}`,weekdays:`weekdays {at}`,weekends:`weekends {at}`,onWeekday:`{weekday} {at}`,everyMinute:`every minute`,everyMinutes:`every {n}m`,everyHours:`every {n}h`,hourlyAt:`hourly at :{minute}`,atClock:`at {time}`,dow:{MON:`Mondays`,TUE:`Tuesdays`,WED:`Wednesdays`,THU:`Thursdays`,FRI:`Fridays`,SAT:`Saturdays`,SUN:`Sundays`}},when:{inMinutes:`in {n}m`,inHours:`in {n}h`,inDays:`in {n}d`,minutesAgo:`{n}m ago`,hoursAgo:`{n}h ago`,now:`now`,justNow:`just now`,dateTime:`{date}, {time}`},runStatus:{dispatched:`dispatched`,revived:`revived`,skipped_cancelled:`cancelled before delivery`,skipped_precheck:`skipped (precheck)`,skipped_blocked:`skipped (task can't use it)`,skipped_missed:`skipped (missed)`,skipped_unavailable:`skipped (unavailable)`,dispatch_failed:`dispatch failed`,ran:`ran`,script_failed:`script failed`},cronNever:`valid, but never fires`,missing:{target:`Choose an existing task.`,targetTab:`Enter an existing tab id, e.g. tab-2.`,name:`Give it a name.`,repo:`Pick a project.`,prompt:`Say what it should do.`,schedule:`That schedule will not run.`},empty:`No routines scheduled.`,emptyHint:`Press n to create one.`,precheck:`precheck: {command}`,lastFailed:`last failed {when}: {reason}`,recentRuns:`RECENT RUNS`,precheckDetail:`WHY IT SKIPPED — precheck {exit} in {duration}ms`,precheckExited:`exited {code}`,precheckTimedOut:`timed out`,precheckStdout:`stdout`,precheckStderr:`stderr`,precheckNoOutput:`(no output)`,noRuns:`Not run yet.`,responses:`RESPONSES`,noResponses:"No run has reported back yet. Agents answer with `routine-respond`.",responseAwaiting:`awaiting response`,responseMissing:`no response`,noSelection:`A routine runs its prompt in a project on a schedule.`,running:`Running {name}…`,ranWith:`{name}: {status}`,latestRunNoTask:`The latest run created no task.`,runNow:`[ run now ]`,deleteTitle:`Delete routine?`,deleteBody:`{name} and its run history will be removed. Tasks it already created are untouched.`,deleteButton:`Delete`,createFailed:`Couldn't create the routine: {error}`,deleteFailed:`Couldn't delete "{name}": {error}`,enableFailed:`"{name}" stays paused: {error}`,disableFailed:`"{name}" stays enabled: {error}`,runFailed:`Couldn't run "{name}" now — schedule unchanged: {error}`},JI={title:`例行任务`,holdingDaemon:`正在保持守护进程常驻`,notHolding:`无启用项`,needAttention:`{total} 个中有 {count} 个需要处理 ·`,paused:`已暂停`,newTitle:`新建例行任务`,composerLegend:`enter 创建 · tab 切字段 · ←→ ↑↓ 编辑当前字段 · esc 取消`,fieldName:`名称`,fieldTarget:`投递目标`,fieldTargetTab:`既有引擎标签页`,targetFresh:`每次新建任务`,targetStanding:`例行任务自有的常驻任务`,targetExisting:`既有会话:{task} / {tab}。不会创建或重启会话。`,fieldRepo:`仓库`,fieldPrompt:`提示词`,fieldSchedule:`调度(五段 cron)`,namePlaceholder:`工作日依赖审计`,promptPlaceholder:`审计依赖并总结有风险的变更。`,noProject:`未分组`,cronInvalid:`不是合法的五段 cron`,cronField:{minute:`分`,hour:`时`,dayOfMonth:`日`,month:`月`,dayOfWeek:`星期`},schedule:{everyDay:`每天{at}`,weekdays:`工作日{at}`,weekends:`周末{at}`,onWeekday:`{weekday}{at}`,everyMinute:`每分钟`,everyMinutes:`每 {n} 分钟`,everyHours:`每 {n} 小时`,hourlyAt:`每小时的 :{minute}`,atClock:`{time}`,dow:{MON:`每周一`,TUE:`每周二`,WED:`每周三`,THU:`每周四`,FRI:`每周五`,SAT:`每周六`,SUN:`每周日`}},when:{inMinutes:`{n} 分钟后`,inHours:`{n} 小时后`,inDays:`{n} 天后`,minutesAgo:`{n} 分钟前`,hoursAgo:`{n} 小时前`,now:`即将`,justNow:`刚刚`,dateTime:`{date} {time}`},runStatus:{dispatched:`已派发`,revived:`已重启会话`,skipped_cancelled:`交付前已取消`,skipped_precheck:`已跳过(预检)`,skipped_blocked:`已跳过(任务暂不能接收)`,skipped_missed:`已跳过(错过时间)`,skipped_unavailable:`已跳过(不可用)`,dispatch_failed:`派发失败`,ran:`已运行`,script_failed:`脚本失败`},cronNever:`语法合法,但永远不会触发`,missing:{target:`请选择既有任务。`,targetTab:`请输入既有标签页 ID,例如 tab-2。`,name:`起个名字。`,repo:`选一个项目。`,prompt:`说明它要做什么。`,schedule:`这个调度不会触发。`},empty:`还没有例行任务。`,emptyHint:`按 n 新建一条。`,precheck:`预检:{command}`,lastFailed:`上次失败({when}):{reason}`,recentRuns:`最近执行`,precheckDetail:`为什么跳过 —— 预检{exit},耗时 {duration}ms`,precheckExited:`退出码 {code}`,precheckTimedOut:`超时`,precheckStdout:`标准输出`,precheckStderr:`标准错误`,precheckNoOutput:`(无输出)`,noRuns:`尚未执行。`,responses:`回报`,noResponses:"还没有执行回报。agent 用 `routine-respond` 回报。",responseAwaiting:`等待回报`,responseMissing:`未回报`,noSelection:`例行任务会按调度在某个项目里跑它的提示词。`,running:`正在运行 {name}…`,ranWith:`{name}:{status}`,latestRunNoTask:`最近一次执行没有创建任务。`,runNow:`[ 立即运行 ]`,deleteTitle:`删除这条例行任务?`,deleteBody:`将删除 {name} 及其执行记录。它已经创建的任务不受影响。`,deleteButton:`删除`,createFailed:`创建例行任务失败:{error}`,deleteFailed:`删除“{name}”失败:{error}`,enableFailed:`“{name}”仍处于暂停状态:{error}`,disableFailed:`“{name}”仍处于启用状态:{error}`,runFailed:`无法立即运行“{name}”——排程未受影响:{error}`},YI={title:`Kanban`,hint:`tab project · ←↓↑→ card · enter detail · n new · d delete · r refresh · esc close`,loading:`Loading issues…`,noRepos:"No projects yet — add one with `rove add <path>`, or file a story with `rove api issue-create`.",empty:"No issues — agents file them via `rove api issue-create`.",readFailed:"Couldn't read this project's stories: {error}. Run `rove doctor`, then reopen Kanban.",readFailedToast:`Couldn't read stories for {repo}: {error}`,columnEmpty:`No cards`,column:{backlog:`Backlog`,inProgress:`In progress`,parked:`Parked`,done:`Done`},more:`+{count} more`,attention:`{count} need you`,turnComplete:`turn done`,menu:{setStatus:`status → {status}`},detail:{status:{open:`open`,doing:`doing`,hold:`hold`,done:`done`},statusLabel:`STATUS`,created:`created {date}`,linked:`linked to a session`,titleLabel:`TITLE`,description:`DESCRIPTION`,noDescription:`No description.`,attachHint:`paste a path / ctrl+v screenshot → inserts an image placeholder`,engine:`ENGINE`,workspace:`WORKSPACE`,placement:{worktree:`New worktree task — its own workspace`,projectWorktree:`New worktree — as a chattab in the project workspace`,project:`Project checkout — a new chattab, no worktree`},jumpLabel:`AFTER START`,jump:{stay:`Stay on the board`,follow:`Jump to the session`},startLegend:`enter/ctrl+enter start · tab fields · ←→ status/engine · ↑↓ workspace · esc save & close`,sessionLabel:`SESSION`,openAction:`Open the linked session ↵`,unlinkAction:`Unlink`,openLegend:`enter open the focused action · tab fields · ←→ status · unlink returns the card to Backlog · esc save & close`,eventsLabel:`EVENTS`,eventsLoading:`Loading events…`,eventsNone:`No engine events recorded yet.`,doneNote:`Done stories have nothing left to start — set the status back to reopen one · esc save & close`,startedBackground:`Started in background: {title}`,newStory:`NEW STORY`,createLegend:`ctrl+s save · enter/ctrl+enter save & start · tab fields · esc cancel`},confirmDelete:{title:`Delete story #{id}?`,body:`“{title}” will be removed from the tracker. A linked task, branch, or worktree is left untouched.`},deleteFailed:`Couldn't delete story #{id}: {error}`,createFailed:`Couldn't create the story: {error}`,updateFailed:`Couldn't save story #{id}: {error}`,statusFailed:`Story #{id} stays in its old column: {error}`,linkFailed:`Story #{id} isn't linked to its task: {error}`,unlinkFailed:`Story #{id} is still linked: {error}`},XI={title:`看板`,hint:`tab 切项目 · ←↓↑→ 选卡片 · enter 详情 · n 新建 · d 删除 · r 刷新 · esc 关闭`,loading:`正在加载 issues…`,noRepos:"还没有项目——用 `rove add <路径>` 添加一个,或用 `rove api issue-create` 创建一个 story。",empty:"暂无 issue——agent 可通过 `rove api issue-create` 创建。",readFailed:"读取该项目的 story 失败:{error}。请运行 `rove doctor`,再重新打开看板。",readFailedToast:`读取 {repo} 的 story 失败:{error}`,columnEmpty:`暂无卡片`,column:{backlog:`待办`,inProgress:`进行中`,parked:`搁置`,done:`已完成`},more:`还有 {count} 条`,attention:`{count} 张等你处理`,turnComplete:`回合完成`,menu:{setStatus:`状态 → {status}`},detail:{status:{open:`待办`,doing:`进行中`,hold:`搁置`,done:`已完成`},statusLabel:`状态`,created:`创建于 {date}`,linked:`已关联会话`,titleLabel:`标题`,description:`描述`,noDescription:`暂无描述。`,attachHint:`粘贴路径 / ctrl+v 贴截图 → 插入图片占位行`,engine:`引擎`,workspace:`工作区`,placement:{worktree:`新建 worktree 任务——独立工作区`,projectWorktree:`新建 worktree——作为项目工作区里的 chattab`,project:`项目主目录——新开 chattab,不建 worktree`},jumpLabel:`启动后`,jump:{stay:`留在看板`,follow:`跳转到会话`},startLegend:`enter/ctrl+enter 启动 · tab 切字段 · ←→ 状态/引擎 · ↑↓ 工作区 · esc 保存关闭`,sessionLabel:`会话`,openAction:`打开关联会话 ↵`,unlinkAction:`解除关联`,openLegend:`enter 执行选中操作 · tab 切字段 · ←→ 状态 · 解除关联把卡片退回 Backlog · esc 保存关闭`,eventsLabel:`事件`,eventsLoading:`正在加载事件…`,eventsNone:`暂无引擎事件记录。`,doneNote:`已完成的 story 无需启动——改回状态即可重新打开 · esc 保存关闭`,startedBackground:`已在后台启动:{title}`,newStory:`新建 STORY`,createLegend:`ctrl+s 仅保存 · enter/ctrl+enter 保存并启动 · tab 切字段 · esc 取消`},confirmDelete:{title:`删除 story #{id}?`,body:`「{title}」将从 tracker 中移除。已关联的任务、分支、worktree 不受影响。`},deleteFailed:`删除 story #{id} 失败:{error}`,createFailed:`创建 story 失败:{error}`,updateFailed:`保存 story #{id} 失败:{error}`,statusFailed:`Story #{id} 仍留在原来的列:{error}`,linkFailed:`Story #{id} 未能关联到它的任务:{error}`,unlinkFailed:`Story #{id} 仍处于关联状态:{error}`},ZI={title:`ISSUES`,noRepo:`no project`,empty:`No open issues.`,assignedFilter:`assigned to me`,starting:`Starting work on #{number}…`,startedNoEngine:`Created {title}, but its engine did not start.`,linkedChip:`→ {title}`,openingLinked:`Opening {title}…`,startFailed:`Couldn't start work on #{number}: {error}`,errorHint:{noRemote:"Add a GitHub remote (`git remote add origin <url>`) and try again, or press q / esc to close.",ghMissing:"Install the `gh` CLI and authenticate, or press q / esc to close.",auth:"Run `gh auth login`, or press q / esc to close.",fallback:`{message} · press q / esc to close`}},QI={title:`议题`,noRepo:`无项目`,empty:`没有开放的议题。`,assignedFilter:`分配给我的`,starting:`正在开始处理 #{number}…`,startedNoEngine:`已创建 {title},但引擎没有启动。`,linkedChip:`→ {title}`,openingLinked:`正在打开 {title}…`,startFailed:`开始处理 #{number} 失败:{error}`,errorHint:{noRemote:"添加 GitHub remote(`git remote add origin <url>`)后重试,或按 q / esc 关闭。",ghMissing:"安装 `gh` CLI 并登录,或按 q / esc 关闭。",auth:"执行 `gh auth login`,或按 q / esc 关闭。",fallback:`{message} · 按 q / esc 关闭`}};function $I(){let e=B()===`zh`;return{kanban:e?XI:YI,auto:e?JI:qI,items:e?QI:ZI,nav:(e?jr:Ar).nav,group:(e?jr:Ar).group,common:e?hr:mr}}function eL(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??e))}function tL(){let{auto:e}=$I();return(t,n)=>{let r=e;for(let e of t.replace(/^automations\./,``).split(`.`))r=r&&typeof r==`object`?Reflect.get(r,e):void 0;return typeof r==`string`?n?eL(r,n):r:t}}function nL(e){return e instanceof Error?e.message:String(e)}function rL(e){return e.replace(/^\/private\//,`/`).replace(/\/+$/,``)}function iL(e,t){let n=e.split(`/`).filter(Boolean),r=n[n.length-1]??e;return t.some(t=>t!==e&&t.split(`/`).filter(Boolean).pop()===r)&&n.length>1?`${n[n.length-2]}/${r}`:r}function aL(...e){let t=new Set,n=[];for(let r of e.flat()){if(!r||r.startsWith(`ssh://`))continue;let e=rL(r);t.has(e)||(t.add(e),n.push(r))}return n}function oL(e){return aL((v(e.tasks)?.tasks??[]).filter(e=>!pw(e)).map(e=>e.repo))}function sL(e){let t=v(e.tasks),{taskId:n}=v(e.selection);return t?.tasks.find(e=>e.id===n)?.repo}function cL(e){let[t,n]=(0,g.useState)(0);return(0,g.useEffect)(()=>{let t=window.setInterval(()=>n(e=>e+1),e);return()=>window.clearInterval(t)},[e]),[t,(0,g.useCallback)(()=>n(e=>e+1),[])]}function lL(e){return e instanceof HTMLElement?e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName):!1}function uL(e){let t=(0,g.useRef)(e);t.current=e,(0,g.useEffect)(()=>{let e=e=>{if(e.defaultPrevented||W.get()||sn.get())return;let n=e.target instanceof HTMLElement?e.target:null;lL(n)||n?.closest(`.rail, .side-panel, .xterm`)||e.metaKey||e.altKey||e.ctrlKey&&e.key.toLowerCase()===`c`&&window.getSelection()?.toString()||t.current(e)&&(e.preventDefault(),e.stopPropagation())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[])}function dL(){let e=(0,g.useRef)(null);return(0,g.useEffect)(()=>e.current?.focus(),[]),e}function fL({tone:e,children:t}){return(0,V.jsx)(`span`,{className:Me(`flex-none font-mono text-meta`,e&&jT[e]),children:t})}var pL=`mt-3 grid grid-cols-[repeat(auto-fit,minmax(min(100%,17rem),1fr))] items-start gap-x-5 gap-y-6`,mL=e=>e?`flex min-w-0 flex-col gap-2 pt-2 [border-top:var(--hairline)_solid_var(--accent)]`:`flex min-w-0 flex-col gap-2 pt-2 [border-top:var(--hairline)_solid_var(--line)]`,hL=`flex min-w-0 items-center gap-2`,gL=`min-w-0 truncate font-bold`,_L=`truncate font-mono text-meta text-muted`,vL=`m-0 line-clamp-6 whitespace-pre-wrap wrap-anywhere`,yL=`flex min-w-0 flex-col`,bL=`flex min-w-0 items-baseline gap-2 py-px font-mono text-meta`,xL=`flex flex-wrap gap-x-3.5 gap-y-1 font-mono text-meta`,SL=`flex min-w-0 flex-wrap items-center gap-x-3.5 gap-y-0.5 px-2.5 py-1 font-mono text-meta`,CL=1.2,wL=.3,TL=20,EL=.35,DL=.25,OL=.12,kL=2,AL=1,jL={error:{dots:[0,4,8,2,6],bright:1},done:{dots:[3,7,5,2],bright:1},idle:{dots:[1,2,5,8,7,6,3,0],bright:.6}},ML=Array.from({length:9},(e,t)=>Math.hypot(t%3-1,Math.floor(t/3)-1));function NL(e){return EL+.65*(.5+.5*Math.cos(2*Math.PI*e/CL))}function PL(e,t,n,r=1){switch(e){case`working`:{let e=t*80/1e3/r;return ML.map(t=>NL(e-t*wL))}case`waiting`:{let e=[0,1,4,5].includes(Math.floor(t/r)%TL);return Array(9).fill(e?DL:1)}default:{let t=jL[e],r=Array(9).fill(OL);return t?.dots.forEach((e,i)=>{let a=Math.min(Math.max(n-i*AL,0),kL)/kL;r[e]=t.bright*a+OL*(1-a)}),r}}}function FL(e,t){let n=jL[e];return!n||t<(n.dots.length-1)*AL+kL}var IL=3,LL=new Set,RL;function zL(e,t){let n=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=1/0,i=e.held+t-e.step,a=FL(e.look,n?r:i);return PL(e.look,t,n?r:i,n?IL:1).forEach((t,n)=>{let r=e.el.children[n].style;r.opacity=t.toFixed(3)}),a}function BL(){let e=Math.floor(performance.now()/80);for(let t of LL)zL(t,e)||LL.delete(t);VL()}function VL(){RL=LL.size?window.setTimeout(BL,80-performance.now()%80+2):void 0}function HL(e,t,n){let r=Math.floor(performance.now()/80),i=n>0?Math.max(Date.now()-n,0):1/0,a={el:e,look:t,step:r,held:Math.floor(i/80)};return zL(a,r)&&(LL.add(a),RL===void 0&&VL()),()=>{LL.delete(a)}}function UL({status:e}){let{look:t,tone:n}=KF(e);return(0,V.jsx)(GL,{look:t,tone:n,since:e?.since??0},t)}var WL=e=>e===`muted`?`text-muted`:e===`ink`?`text-ink`:jT[e];function GL({look:e,tone:t,since:n}){let r=(0,g.useRef)(null),[i]=(0,g.useState)(n);return(0,g.useLayoutEffect)(()=>{let t=r.current;return t?HL(t,e,i):void 0},[e,i]),(0,V.jsx)(`span`,{ref:r,className:`inline-grid flex-none grid-cols-[repeat(3,3px)] auto-rows-[3px] gap-px self-center ${WL(t)}`,"aria-hidden":`true`,children:Array.from({length:9},(e,t)=>(0,V.jsx)(`i`,{className:`rounded-full bg-current opacity-12`},t))})}var KL=6;function qL(e,t){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(()=>Hs(e,`diff.files`,{taskId:t.id})??null),o=`${t.rowStatus?.kind??``}:${t.rowStatus?.since??0}`,s=JSON.stringify(t.changes??null);return(0,g.useEffect)(()=>{let n=!0;return Ws(e,`output.read`,{taskId:t.id,limit:8}).then(e=>n&&r(HI(e)),()=>n&&r(null)),()=>{n=!1}},[e,t.id,o]),(0,g.useEffect)(()=>{let n=!0;return Ws(e,`diff.files`,{taskId:t.id}).then(e=>n&&a(e),()=>{}),()=>{n=!1}},[e,t.id,s,o]),{reply:n,changes:i?UI(i):null}}function JL({changes:e,onOpen:t}){if(!e)return(0,V.jsx)(`p`,{className:Jt,children:`…`});if(e.files.length===0)return(0,V.jsx)(`p`,{className:`m-0 font-mono text-meta text-subtle`,children:z(`compare.noChanges`)});let n=e.files.length-KL;return(0,V.jsxs)(`div`,{className:yL,children:[(0,V.jsxs)(`p`,{className:`m-0 flex gap-2 font-mono text-meta text-muted`,children:[(0,V.jsx)(`span`,{children:z(`compare.files`,{count:e.files.length})}),e.added>0&&(0,V.jsxs)(fL,{tone:`added`,children:[`+`,e.added]}),e.deleted>0&&(0,V.jsxs)(fL,{tone:`removed`,children:[`−`,e.deleted]})]}),e.files.slice(0,KL).map(n=>(0,V.jsxs)(H,{variant:`row`,className:`${bL} text-left [&:hover]:underline`,title:n.path,onClick:()=>t(n.path,e.scope),children:[(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n.path}),n.added?(0,V.jsxs)(fL,{tone:`added`,children:[`+`,n.added]}):null,n.deleted?(0,V.jsxs)(fL,{tone:`removed`,children:[`−`,n.deleted]}):null]},n.path)),n>0&&(0,V.jsx)(`span`,{className:`font-mono text-meta text-subtle`,children:z(`compare.more`,{count:n})})]})}function YL({model:e,row:t,round:n}){let{reply:r,changes:i}=qL(e,t),{look:a}=KF(t.rowStatus),o=t.kept===!0,s=(n,r)=>{e.select(t.id),Xk({taskId:t.id,path:n,scope:r})};return(0,V.jsxs)(`section`,{className:mL(o),"data-attempt":t.id,children:[(0,V.jsxs)(`div`,{className:hL,children:[(0,V.jsx)(UL,{status:t.rowStatus}),(0,V.jsx)(`span`,{className:gL,children:t.engine?.name??t.label}),(0,V.jsx)(`span`,{className:`flex-none text-meta text-muted`,children:z(`compare.status.${a}`)}),o&&(0,V.jsx)(`span`,{className:`ml-auto flex-none font-mono text-meta text-accent`,children:z(`compare.kept`)})]}),(0,V.jsx)(`span`,{className:_L,title:t.branch,children:t.branch}),r?(0,V.jsx)(`p`,{className:vL,children:r}):(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:z(`compare.noReply`)}),(0,V.jsx)(JL,{changes:i,onOpen:s}),(0,V.jsxs)(`div`,{className:xL,children:[(0,V.jsx)(H,{hit:`tight`,onClick:()=>e.select(t.id),children:z(`compare.terminal`)}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>s(`.`,i?.scope??`working`),children:z(`compare.diff`)}),o?(0,V.jsx)(H,{hit:`tight`,onClick:()=>void KI(e,t),children:z(`compare.unkeep`)}):(0,V.jsx)(H,{hit:`tight`,onClick:()=>void GI(e,t,n),children:z(`compare.keep`)})]})]})}function XL({model:e}){B();let t=v(fn),n=v(e.tasks),r=dL(),i=t&&n?BI(n.tasks,t):[];return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:r,onKeyDown:e=>{e.metaKey||e.ctrlKey||e.altKey||e.key!==`q`&&e.key!==`Escape`||(e.preventDefault(),un.set(null))},children:[(0,V.jsx)(`h1`,{className:_M,children:z(`compare.title`)}),i.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`compare.empty`)}):(0,V.jsx)(`div`,{className:pL,children:i.map(t=>(0,V.jsx)(YL,{model:e,row:t,round:i},t.id))})]})}function ZL(e){let t=Math.floor(e/6e4),n=Math.floor(t/60);return{minutes:t,hours:n,days:Math.floor(n/24)}}function QL(e,t=Date.now()){let n=Math.max(0,t-e),r=Math.floor(n/1e3);if(r<60)return`${r}s`;let{minutes:i,hours:a,days:o}=ZL(n);return i<60?`${i}m`:a<24?`${a}h`:`${o}d`}var $L=[{id:`issues`,label:`reviewQueue.sourceIssues`},{id:`reviews`,label:`reviewQueue.sourceReviews`}];function eR(){B();let e=v(qO);return(0,V.jsx)(`span`,{className:`flex items-baseline gap-3 font-mono text-meta`,children:$L.map(t=>t.id===e?(0,V.jsx)(`span`,{className:`text-ink`,children:z(t.label)},t.id):(0,V.jsx)(H,{onClick:()=>qO.set(t.id),children:z(t.label)},t.id))})}var tR={passing:`reviewQueue.checksPassing`,failing:`reviewQueue.checksFailing`,pending:`reviewQueue.checksPending`},nR={missing:`reviewQueue.gh.missing`,unauthenticated:`reviewQueue.gh.unauthenticated`,failed:`reviewQueue.gh.failed`};function rR(e){let{pr:t}=e,n=Date.parse(t.createdAt),r=[t.isDraft?z(`reviewQueue.draft`):``,t.fork?z(`reviewQueue.fork`):``,t.checks?z(tR[t.checks]):``];return(0,V.jsxs)(`div`,{"data-row":e.index,className:CM(e.at),onClick:e.onPick,children:[(0,V.jsxs)(`div`,{className:wM,children:[(0,V.jsxs)(`span`,{className:`mono ${TM}`,children:[t.nameWithOwner.split(`/`)[1],`#`,t.number]}),(0,V.jsx)(`span`,{className:DM,children:t.title}),(0,V.jsx)(H,{disabled:e.busy,onClick:e.onReview,children:z(`reviewQueue.start`)})]}),(0,V.jsxs)(`div`,{className:EM,children:[(0,V.jsx)(`span`,{className:DM,children:[t.author,...r].filter(Boolean).join(`, `)}),(0,V.jsxs)(`span`,{className:`mono`,children:[`+`,t.additions,` −`,t.deletions]}),(0,V.jsx)(`span`,{className:`mono`,children:Number.isFinite(n)?QL(n,e.now):``})]})]})}function iR({model:e}){B();let t=e.client,[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(0),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null),[f,p]=(0,g.useState)(0),m=(0,g.useRef)(!1),h=dL(),_=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0,n=m.current;return m.current=!1,a(null),t.request(`review.queue`,n?{refresh:!0}:{}).then(t=>e&&r(t)).catch(t=>{e&&(a(nL(t)),r({prs:[],other:0}))}),()=>{e=!1}},[t,f]);let v=n?.prs??[],y=Math.min(o,Math.max(0,v.length-1));(0,g.useEffect)(()=>{_.current?.querySelector(`[data-row="${y}"]`)?.scrollIntoView({block:`nearest`})},[y]);let b=async e=>{if(c===null){l(e.number),d(z(`reviewQueue.preparing`,{number:e.number}));try{let{ref:n}=await t.request(`review.prepare`,{repo:e.repo,number:e.number});_n(JO(e,n,z(`reviewQueue.prompt`,{number:e.number,repo:e.nameWithOwner,title:e.title,url:e.url,head:e.headRef,base:e.baseRef})))}catch(t){G(z(`reviewQueue.failed`,{number:e.number,error:nL(t)}),`error`)}finally{l(null),d(null)}}};uL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return s(Math.min(v.length-1,y+1)),!0;case`k`:case`ArrowUp`:return s(Math.max(0,y-1)),!0;case`r`:return m.current=!0,p(e=>e+1),!0;case`Enter`:{let e=v[y];return e&&b(e),!0}default:return!1}});let x=Date.now();return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:h,children:[(0,V.jsxs)(`div`,{className:vM,children:[(0,V.jsx)(`h1`,{className:_M,children:z(`reviewQueue.title`)}),(0,V.jsx)(eR,{})]}),i?(0,V.jsx)(`p`,{className:`text-error`,children:i}):n===null?(0,V.jsx)(`p`,{className:`text-muted`,children:`…`}):n.reason?(0,V.jsx)(`p`,{className:`text-muted`,children:z(nR[n.reason])}):v.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`reviewQueue.empty`)}):(0,V.jsx)(`div`,{className:SM,ref:_,children:v.map((e,t)=>(0,V.jsx)(rR,{pr:e,index:t,at:t===y,now:x,busy:c!==null,onPick:()=>s(t),onReview:()=>void b(e)},`${e.nameWithOwner}#${e.number}`))}),n&&n.other>0&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:z(`reviewQueue.other`,{count:n.other})}),u&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:u})]})}var aR=30;function oR(){let{items:e}=$I();return t=>{let n=t.indexOf(`: `);switch(n>=0?t.slice(0,n):`failed`){case`no-remote`:return e.errorHint.noRemote;case`gh-missing`:return e.errorHint.ghMissing;case`auth`:return e.errorHint.auth;default:return eL(e.errorHint.fallback,{message:t})}}}function sR({model:e}){let{items:t,common:n}=$I(),r=oR(),i=e.client,a=v(e.tasks),o=oL(e),s=sL(e),[c,l]=(0,g.useState)(()=>{let e=s?o.findIndex(e=>rL(e)===rL(s)):-1;return Math.max(0,e)}),u=o[c],d=(e,t)=>({repo:e,limit:aR,...t?{assignee:`@me`}:{}}),f=e=>Object.fromEntries(e.links.map(e=>[e.number,e.taskId])),[p,m]=(0,g.useState)(()=>u?Hs(i,`workitem.list`,d(u,!1))?.items??null:null),[h,_]=(0,g.useState)(()=>{let e=u?Hs(i,`workitem.links`,{repo:u}):void 0;return e?f(e):{}}),[y,b]=(0,g.useState)(null),[x,S]=(0,g.useState)(!1),[C,w]=(0,g.useState)(0),[T,E]=(0,g.useState)(0),[D,O]=(0,g.useState)(!1),[k,A]=(0,g.useState)(null),j=dL(),ee=(0,g.useRef)(!1);(0,g.useEffect)(()=>{let e=!0;if(!u){m([]);return}b(null);let t=ee.current;ee.current=!1;let n=d(u,x),r=Hs(i,`workitem.list`,n);return r&&m(r.items),i.request(`workitem.list`,{...n,...t?{refresh:!0}:{}}).then(t=>e&&m(Us(i,`workitem.list`,n,t).items)).catch(t=>{e&&(b(nL(t)),m([]))}),Ws(i,`workitem.links`,{repo:u}).then(t=>e&&_(f(t))).catch(()=>e&&_({})),()=>{e=!1}},[i,u,x,C,a?.tasks.length]);let M=p??[],N=Math.min(T,Math.max(0,M.length-1));(0,g.useEffect)(()=>A(null),[u,x]);let P=(0,g.useRef)(null);(0,g.useEffect)(()=>{P.current?.querySelector(`[data-row="${N}"]`)?.scrollIntoView({block:`nearest`})},[N]);let F=e=>a?.tasks.find(t=>t.id===e)?.label??e,I=t=>{un.set(null),e.select(t)},te=async()=>{let e=M[N];if(!e||!u||D)return;let n=h[e.number];if(n){A(eL(t.openingLinked,{title:F(n)})),I(n);return}O(!0),A(eL(t.starting,{number:e.number}));try{let n=await i.request(`workitem.start`,{repo:u,number:e.number});n.started?I(n.taskId):A(eL(t.startedNoEngine,{title:n.title}))}catch(n){G(eL(t.startFailed,{number:e.number,error:nL(n)}),`error`)}finally{O(!1)}};uL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return E(Math.min(M.length-1,N+1)),!0;case`k`:case`ArrowUp`:return E(Math.max(0,N-1)),!0;case`Tab`:return l(t=>o.length?(t+(e.shiftKey?o.length-1:1))%o.length:0),!0;case`a`:return S(e=>!e),!0;case`r`:return ee.current=!0,w(e=>e+1),!0;case`Enter`:return te(),!0;default:return!1}});let L=Date.now();return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:j,children:[(0,V.jsxs)(`div`,{className:vM,children:[(0,V.jsx)(`h1`,{className:_M,children:t.title}),(0,V.jsx)(eR,{}),(0,V.jsxs)(`span`,{className:`mono touch:empty:hidden! text-muted ${yM(!0)}`,children:[u?iL(u,o):t.noRepo,x?` ${t.assignedFilter}`:``]})]}),y?(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`p`,{className:`text-error`,children:y}),(0,V.jsx)(`p`,{className:`text-muted`,children:r(y)})]}):p===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.loading}):M.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.empty}):(0,V.jsx)(`div`,{className:SM,ref:P,children:M.map((e,n)=>{let r=h[e.number],i=Date.parse(e.updatedAt);return(0,V.jsxs)(`div`,{"data-row":n,className:CM(n===N),onClick:()=>n===N?void te():E(n),children:[(0,V.jsxs)(`div`,{className:wM,children:[(0,V.jsxs)(`span`,{className:`mono ${TM}`,children:[`#`,e.number]}),(0,V.jsx)(`span`,{children:e.title})]}),(0,V.jsxs)(`div`,{className:EM,children:[(0,V.jsx)(`span`,{className:DM,children:[e.author,...e.labels.slice(0,2)].filter(Boolean).join(`, `)}),r&&(0,V.jsx)(`span`,{children:eL(t.linkedChip,{title:F(r)})}),(0,V.jsx)(`span`,{className:`mono`,children:Number.isFinite(i)?QL(i,L):``})]})]},e.number)})}),k&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:k})]})}function cR({model:e}){return v(qO)===`reviews`?(0,V.jsx)(iR,{model:e}):(0,V.jsx)(sR,{model:e})}var lR={backlog:`active`,in_progress:`active`,in_review:`parked`,error:`parked`,done:`terminal`,canceled:`terminal`,open:`active`,doing:`active`,hold:`parked`};function uR(e){return lR[e]??`parked`}var dR=[`backlog`,`in_progress`,`parked`,`done`];function fR(e,t,n){let r=e.find(e=>e.issues.length>0)?.issues[0]?.id??null;if(t==null)return r;let i=-1,a=-1;for(let[n,r]of e.entries()){let e=r.issues.findIndex(e=>e.id===t);if(e!==-1){i=n,a=e;break}}if(i===-1)return r;if(n===`up`||n===`down`){let r=e[i]?.issues??[],o=n===`up`?a-1:a+1;return r[Math.max(0,Math.min(o,r.length-1))]?.id??t}let o=n===`left`?-1:1;for(let n=i+o;n>=0&&n<e.length;n+=o){let r=e[n]?.issues??[];if(r.length!==0)return r[Math.min(a,r.length-1)]?.id??t}return t}function pR(e,t){let n=uR(e.status);return n===`terminal`?`done`:n===`parked`?`parked`:e.taskId!==void 0&&e.taskId!==``&&(t?.(e.taskId)??!0)||e.status===`doing`?`in_progress`:`backlog`}function mR(e,t){let n=0;return{columns:e.map(e=>{if(e.key!==`in_progress`)return e;let r=[],i=[];for(let n of e.issues)n.taskId!==void 0&&n.taskId!==``&&t(n.taskId)?r.push(n):i.push(n);return n=r.length,r.length===0?e:{...e,issues:[...r,...i]}}),attentionCount:n}}function hR(e,t){return e.created===t.created?t.id-e.id:e.created<t.created?1:-1}function gR(e,t){let n={backlog:[],in_progress:[],parked:[],done:[]};for(let r of e)n[pR(r,t)].push(r);return dR.map(e=>{let t=e===`done`||e===`parked`,r=n[e].sort(hR);return!t||r.length<=20?{key:e,issues:r,hiddenCount:0}:{key:e,issues:r.slice(0,20),hiddenCount:r.length-20}})}var _R=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`application/pdf`],vR=5242880;function yR(e,t){return/\.pdf$/i.test(e)?`pdf[${t}]`:`images[${t}]`}function bR(e){let t=-1;for(let n of e.matchAll(/^(?:images|pdf)\[(\d+)\]:/gm)){let e=Number.parseInt(n[1],10);e>t&&(t=e)}return t+1}function xR(e,t){let n=e.replace(/\s+$/,``),r=bR(e);for(let e of t){let t=`${yR(e,r)}: ${e}`;n=n.length>0?`${n}\n${t}`:t,r+=1}return n}function SR(e){return Array.from(e??[]).filter(e=>_R.includes(e.type))}function CR(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}async function wR(e,t){let n=CR(new Uint8Array(await t.arrayBuffer()));return(await e.request(`attachment.put`,{mime:t.type,data:n})).path}var TR=[`worktree`,`projectWorktree`,`project`];async function ER(e,t){let n=t.placement===`project`?`project`:`worktree`,{title:r,prompt:i}=await e.request(`issue.prompt`,{repo:t.repo,id:t.issue.id,where:n}),a=[];if(t.placement!==`project`){let{taskId:n}=await e.request(`task.create`,{repo:t.repo,engine:t.engine,title:r,prompt:i});if(await e.request(`issue.update`,{repo:t.repo,id:t.issue.id,task:n}).catch(e=>a.push({kind:`link`,error:nL(e)})),t.placement===`worktree`)return{taskId:n,warnings:a};let o=await e.request(`task.openMain`,{repo:t.repo}),s=await e.request(`tab.openViewport`,{taskId:o.taskId,viewTaskId:n});return{taskId:o.taskId,tabId:s.tabId,warnings:a}}let{taskId:o}=await e.request(`task.openMain`,{repo:t.repo}),{tabId:s,taskId:c=o}=await e.request(`tab.new`,{taskId:o,kind:`engine`,engine:t.engine,prompt:i});return await e.request(`issue.setStatus`,{repo:t.repo,id:t.issue.id,status:`doing`}).catch(e=>a.push({kind:`status`,error:nL(e)})),{taskId:c,tabId:s,warnings:a}}var DR=`text-meta leading-[inherit]`,OR=`text-meta`,kR=`flex flex-col gap-2 overflow-hidden`,AR=`flex min-w-0 items-baseline gap-3`,jR=`font-bold whitespace-nowrap text-accent touch:relative touch:after:absolute touch:after:-inset-x-2 touch:after:-inset-y-1 touch:after:content-['']`,MR=`min-w-0 truncate ${OR}`,NR=`ml-auto ${DR}`,PR=`grid min-h-0 flex-1 grid-cols-4 gap-2`,FR=`flex min-h-0 flex-1 flex-col gap-2`,IR=`flex gap-4 ${OR}`,LR=e=>`touch:relative touch:after:absolute touch:after:-inset-x-1.5 touch:after:-top-1 touch:after:-bottom-3 touch:after:content-[''] ${e?`font-bold text-accent`:`text-muted`}`,RR={in_progress:`text-accent`,parked:`text-warning`,done:`text-success`},zR=e=>`flex min-h-0 flex-col rounded-md border-hairline border-line p-2 ${e?`flex-1`:``}`,BR=e=>`m-0 mb-2 flex justify-between gap-2 font-mono text-meta font-bold normal-nums ${RR[e]??`text-muted`}`,VR=`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto`,HR=`m-0 ${OR}`,UR=e=>`flex flex-none cursor-pointer flex-col gap-1 rounded-sm border-hairline bg-surface px-2.5 py-2 ${e.selected?`border-accent`:e.attention?`border-warning`:`border-line hover:border-line-active`}`,WR=`flex justify-between gap-2`,GR=e=>`min-w-0 font-bold wrap-anywhere ${e?`text-muted`:``}`,KR=`h-[2.8em] overflow-hidden whitespace-pre-wrap wrap-anywhere ${DR}`,qR=`flex justify-between gap-2 ${OR}`,JR=`w-[min(680px,calc(100vw-32px))]!`,YR=`flex items-baseline gap-3.5`,XR=`flex items-baseline gap-2.5`,ZR=`tracking-[0] normal-case`,QR=`min-h-40 font-mono`,$R=`flex flex-col items-start gap-0.5`,ez=e=>`text-left font-mono text-meta whitespace-pre-wrap normal-nums ${e?`font-bold text-accent`:`font-normal text-muted`}`,tz=DR,nz=`flex flex-col gap-1 [&_p]:m-0`,rz=`flex gap-2 ${OR}`,iz=`min-w-[4ch] text-right`,az=`rounded-sm border-hairline border-transparent p-1 focus:border-accent focus:outline-none`,oz={choice:`radiogroup`,list:`listbox`,cells:`group`};function sz(e){return(0,V.jsx)(`div`,{ref:e.fieldRef,role:oz[e.kind??`choice`],tabIndex:0,"aria-label":e.label,className:`${az} ${e.className??``}`,onKeyDown:e.onKeyDown,onClick:e.onClick,children:e.children})}var cz=[`open`,`doing`,`hold`,`done`];function lz({model:e,taskId:t}){let{kanban:n}=$I(),[r,i]=(0,g.useState)(null);return(0,g.useEffect)(()=>{let n=!0;return e.client.request(`task.events`,{taskId:t}).then(e=>n&&i(e.events)).catch(()=>n&&i([])),()=>{n=!1}},[e,t]),(0,V.jsxs)(`div`,{className:nz,children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:n.detail.eventsLabel}),r===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.detail.eventsLoading}):r.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:n.detail.eventsNone}):r.map(e=>(0,V.jsxs)(`div`,{className:`mono ${rz}`,children:[(0,V.jsx)(`span`,{className:`text-muted ${iz}`,children:QL(e.at)}),(0,V.jsx)(`span`,{children:e.kind}),e.tail&&(0,V.jsx)(`span`,{className:`text-muted`,children:e.tail})]},`${e.at}:${e.kind}:${e.tail}`))]})}function uz(e){let{kanban:t}=$I(),{issue:n,mode:r}=e,i=r===`create`,a=!i&&n.taskId?n.taskId:null,o=i||!a&&n.status!==`done`,[s,c]=(0,g.useState)(n.title),[l,u]=(0,g.useState)(n.body),[d,f]=(0,g.useState)(n.status),[p,m]=(0,g.useState)(e.defaultEngine),[h,_]=(0,g.useState)(TR[0]),[v,y]=(0,g.useState)(!1),[b,x]=(0,g.useState)(!1),S=(0,g.useRef)({}),C=e=>t=>{S.current[e]=t},w=i?`title`:o?`workspace`:a?`open`:`title`;(0,g.useEffect)(()=>S.current[w]?.focus(),[w]);let T=()=>({title:s.trim()||n.title,body:l,status:d}),E=()=>({engine:p,placement:h,jump:v}),D=t=>{Cn(),t&&e.onOutcome(t)},O=()=>s.trim()?!0:(S.current.title?.focus(),!1),k=()=>{i?O()&&D({kind:`create`,title:s.trim(),body:l,start:E()}):o?D({kind:`start`,...E(),...T()}):a&&D({kind:`open`,taskId:a,...T()})},A=()=>{i&&O()&&D({kind:`create`,title:s.trim(),body:l,start:null})},j=()=>D(i?null:{kind:`close`,...T()}),ee=(0,g.useRef)({commit:k,saveOnly:A,close:j});ee.current={commit:k,saveOnly:A,close:j},(0,g.useEffect)(()=>{let e=e=>{let t=e.key===`Escape`?ee.current.close:e.key===`Enter`&&(e.ctrlKey||e.metaKey)?ee.current.commit:e.key.toLowerCase()===`s`&&e.ctrlKey&&!e.metaKey?ee.current.saveOnly:null;t&&(e.preventDefault(),e.stopImmediatePropagation(),t())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[]);let M=async t=>{let n=t.find(e=>e.size>vR);if(n){G(z(`pages.attachTooLarge`,{name:n.name||n.type}),`error`);return}x(!0);try{let n=await Promise.all(t.map(t=>wR(e.model.client,t)));u(e=>xR(e,n))}catch(e){G(K(e),`error`)}finally{x(!1)}},N=e=>{let t=SR(e.clipboardData.files);t.length!==0&&(e.preventDefault(),M(t))},P=e=>{let t=SR(e.dataTransfer.files);e.preventDefault(),t.length>0&&M(t)},F=(e,t,n)=>e[(Math.max(0,e.indexOf(t))+n+e.length)%e.length],I=(e,t,n)=>r=>{if(r.ctrlKey||r.metaKey||r.altKey)return;let i=(e===`x`?{ArrowRight:1,l:1,ArrowLeft:-1,h:-1}:{ArrowDown:1,ArrowUp:-1})[r.key];if(i)t(i);else if(r.key===`Enter`&&n)n();else return;r.preventDefault()},te=d===`done`?`text-success`:d===`hold`?`text-warning`:d===`doing`?`text-accent`:`text-muted`,L=e=>t.detail.status[e];return(0,V.jsx)(`div`,{className:Nn,onMouseDown:e=>e.target===e.currentTarget&&ee.current.close(),children:(0,V.jsxs)(`dialog`,{open:!0,className:`${Pn(!0)} ${JR}`,"aria-label":i?t.detail.newStory:`#${n.id}`,onPaste:N,onDrop:P,onDragOver:e=>e.preventDefault(),children:[(0,V.jsxs)(`div`,{className:Fn,children:[i?(0,V.jsx)(`h1`,{className:`${U} text-muted`,children:t.detail.newStory}):(0,V.jsxs)(`h1`,{className:`${U} text-muted ${YR}`,children:[(0,V.jsxs)(`span`,{children:[`#`,n.id]}),(0,V.jsx)(`span`,{className:te,children:L(d)}),(0,V.jsx)(`span`,{className:`text-muted`,children:eL(t.detail.created,{date:n.created})}),a&&(0,V.jsx)(`span`,{className:`text-accent`,children:t.detail.linked})]}),(0,V.jsx)(`button`,{type:`button`,className:Ln,"aria-label":z(`dialog.close`),title:z(`dialog.close`),onClick:()=>ee.current.close(),children:`×`})]}),(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.detail.titleLabel}),(0,V.jsx)(`input`,{ref:C(`title`),className:nn,spellCheck:!1,value:s,onChange:e=>c(e.target.value.replace(/[\r\n]+/g,` `)),onKeyDown:e=>{e.key===`Enter`&&!e.ctrlKey&&!e.metaKey&&(e.preventDefault(),S.current.description?.focus())}})]}),(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.detail.description,(0,V.jsx)(`span`,{className:`text-muted ${ZR}`,children:ts()?z(`pages.attachHintTouch`):t.detail.attachHint}),b&&(0,V.jsx)(`span`,{className:`text-accent`,children:`…`})]}),(0,V.jsx)(`textarea`,{ref:C(`description`),className:`${nn} ${kn} ${QR}`,rows:8,spellCheck:!1,placeholder:t.detail.noDescription,value:l,onChange:e=>u(e.target.value)})]}),!i&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsxs)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted flex items-baseline gap-2.5`,children:[t.detail.statusLabel,(0,V.jsx)(`span`,{className:`keys-only text-muted tracking-[0] normal-case`,children:`←/→`})]}),(0,V.jsx)(sz,{fieldRef:C(`status`),label:t.detail.statusLabel,className:`flex flex-wrap gap-1.5`,onKeyDown:I(`x`,e=>f(F(cz,d,e))),children:cz.map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===d,className:jn(e===d),onClick:()=>{f(e),S.current.status?.focus()},children:L(e)},e))})]}),o?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.detail.engine,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`←/→`})]}),(0,V.jsx)(sz,{fieldRef:C(`engine`),label:t.detail.engine,className:An,onKeyDown:I(`x`,t=>m(F(e.engines.map(e=>e.id),p,t)),k),children:e.engines.map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e.id===p,className:jn(e.id===p),onClick:()=>{m(e.id),S.current.engine?.focus()},children:e.name},e.id))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.detail.workspace,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`↑/↓`})]}),(0,V.jsx)(sz,{fieldRef:C(`workspace`),label:t.detail.workspace,className:$R,onKeyDown:I(`y`,e=>_(F(TR,h,e)),k),children:TR.map(e=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===h,className:`touch:py-1.5 ${ez(e===h)}`,onClick:()=>{_(e),S.current.workspace?.focus()},children:[e===h?`▸ `:` `,t.detail.placement[e]]},e))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.detail.jumpLabel,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`←/→`})]}),(0,V.jsx)(sz,{fieldRef:C(`jump`),label:t.detail.jumpLabel,className:An,onKeyDown:I(`x`,()=>y(!v),k),children:[!1,!0].map(e=>(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-pressed":e===v,className:jn(e===v),onClick:()=>{y(e),S.current.jump?.focus()},children:e?t.detail.jump.follow:t.detail.jump.stay},String(e)))})]}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${tz}`,children:(0,V.jsx)(AT,{text:is(i?t.detail.createLegend:t.detail.startLegend)})}),(0,V.jsxs)(`div`,{className:rn,children:[i&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:A,children:z(`pages.storySave`)}),(0,V.jsx)(`button`,{type:`button`,className:Pe(),onClick:k,children:z(i?`pages.storySaveStart`:`pages.storyStart`)})]})]}):a?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.detail.sessionLabel}),(0,V.jsxs)(`div`,{className:`${An} ${az}`,children:[(0,V.jsx)(`button`,{ref:C(`open`),type:`button`,className:jn(!0),onClick:()=>D({kind:`open`,taskId:a,...T()}),children:t.detail.openAction}),(0,V.jsx)(`button`,{ref:C(`unlink`),type:`button`,className:jn(),onClick:()=>D({kind:`unlink`,...T()}),children:t.detail.unlinkAction})]})]}),(0,V.jsx)(lz,{model:e.model,taskId:a}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${tz}`,children:(0,V.jsx)(AT,{text:is(t.detail.openLegend)})})]}):(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${tz}`,children:(0,V.jsx)(AT,{text:is(t.detail.doneNote)})})]})]})})}var dz={"waiting-on-you":`text-error`,landing:`text-success`,"ready-for-review":`text-ink`,working:`text-accent`};function fz(e){let[t,n]=(0,g.useState)(()=>{let t=Hs(e,`engines.list`);return t?Cs(t.engines):[]});return(0,g.useEffect)(()=>{Ws(e,`engines.list`).then(e=>n(Cs(e.engines))).catch(()=>n([]))},[e]),{engines:t,defaultEngine:ws(t)}}function pz(e,t){let n=oL(e),r=n.join(`
|
|
123
|
+
`),[i,a]=(0,g.useState)(()=>Hs(e,`kanban.boards`)??null);return(0,g.useEffect)(()=>{let t=!0,r=e.client,i=e=>r.request(e).then(e=>e.repos).catch(()=>[]);return Promise.all([i(`repos.list`),i(`issue.repos`)]).then(([e,t])=>aL(e,n,t)).then(e=>Promise.all(e.map(e=>r.request(`issue.list`,{repo:e}).catch(t=>({repoRoot:e,nextId:1,issues:[],readError:nL(t)}))))).then(n=>{let r=Us(e,`kanban.boards`,void 0,[...n].sort((e,t)=>e.repoRoot.localeCompare(t.repoRoot)));t&&a(r)}),()=>{t=!1}},[e,t,r]),i}function mz(e){let{issue:t}=e,n=t.body.trim();return(0,V.jsxs)(`div`,{"data-issue":t.id,className:UR({selected:e.selected,attention:e.badge?.tone===`text-error`}),onClick:()=>e.selected?e.onOpen():e.onSelect(),onContextMenu:t=>{t.preventDefault(),e.onMenu(t.clientX,t.clientY)},children:[(0,V.jsxs)(`div`,{className:WR,children:[(0,V.jsx)(`span`,{className:GR(e.column===`done`),children:t.title}),(0,V.jsxs)(`span`,{className:`mono text-muted`,children:[`#`,t.id]})]}),(0,V.jsx)(`div`,{className:`text-muted ${KR}`,children:n}),(0,V.jsxs)(`div`,{className:`mono text-muted ${qR}`,children:[(0,V.jsx)(`span`,{children:t.created}),e.badge&&(0,V.jsx)(`span`,{className:e.badge.tone,children:e.badge.label})]})]})}var hz=5e3,gz=760;function _z({model:e}){let{kanban:t,group:n,common:r}=$I(),[i,a]=cL(hz),o=pz(e,i),{engines:s,defaultEngine:c}=fz(e),l=v(e.tasks),u=sL(e),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null),h=dL(),[_,y]=(0,g.useState)(!1);(0,g.useEffect)(()=>{let e=h.current;if(!e)return;let t=new ResizeObserver(()=>y(e.clientWidth<gz));return t.observe(e),()=>t.disconnect()},[h]);let b=o??[],x=u?b.find(e=>e.repoRoot.replace(/^\/private\//,`/`)===u.replace(/^\/private\//,`/`)):void 0,S=Math.max(0,b.findIndex(e=>e.repoRoot===(d??x?.repoRoot))),C=b[S],w=b.map(e=>e.repoRoot),T=b.filter(e=>e.readError).map(e=>`${e.repoRoot}\0${e.readError}`).join(`
|
|
124
|
+
`);(0,g.useEffect)(()=>{for(let e of b)e.readError&&G(eL(t.readFailedToast,{repo:iL(e.repoRoot,w),error:e.readError}),`error`)},[T]);let E=l?.tasks??[],D=new Set(E.map(e=>e.id)),O=e=>E.find(t=>t.id===e)?.group,{columns:k,attentionCount:A}=mR(C?gR(C.issues,D.size===0?void 0:e=>D.has(e)):[],e=>O(e)===`waiting-on-you`),j={backlog:t.column.backlog,in_progress:t.column.inProgress,parked:t.column.parked,done:t.column.done},ee=(e,t)=>{let r=e.taskId&&(t===`in_progress`||t===`parked`)?O(e.taskId):void 0,i=r===`waiting-on-you`?n.waitingOnYou:r===`landing`?n.landing:r===`ready-for-review`?n.readyForReview:r===`working`?n.working:null;return r&&i?{label:i,tone:dz[r]??`text-muted`}:null},M=async(t,n,r,i)=>{try{return await e.client.request(t,{repo:C?.repoRoot,...n})}catch(e){return G(eL(r,{id:String(i),error:nL(e)}),`error`),null}finally{a()}},N=(e,n)=>M(`issue.setStatus`,{id:e.id,status:n},t.statusFailed,e.id),P=t=>{un.set(null),e.select(t)},F=async(n,r,i)=>{try{let a=await ER(e.client,{repo:n,issue:r,engine:i.engine,placement:i.placement});for(let e of a.warnings)G(eL(e.kind===`link`?t.linkFailed:t.statusFailed,{id:String(r.id),error:e.error}),`error`);i.jump?(un.set(null),e.selectWhenListed(a.taskId),a.tabId&&await e.refreshTabsNow().then(()=>e.select(a.taskId,a.tabId))):G(eL(t.detail.startedBackground,{title:`#${r.id} ${r.title}`}))}catch(e){G(K(e),`error`)}finally{a()}},I=async(e,n)=>{if(!C||n.kind===`create`)return;let r={};n.title!==e.title&&(r.title=n.title),n.body!==e.body&&(r.body=n.body),(r.title!==void 0||r.body!==void 0)&&await M(`issue.update`,{id:e.id,...r},t.updateFailed,e.id),n.status!==e.status&&await N(e,n.status),n.kind===`open`?P(n.taskId):n.kind===`unlink`?await M(`issue.update`,{id:e.id,task:`none`},t.unlinkFailed,e.id):n.kind===`start`&&await F(C.repoRoot,{...e,...r},n)},te=t=>{C&&(m(t.id),W.set((0,V.jsx)(uz,{model:e,issue:t,mode:`detail`,engines:s,defaultEngine:c,onOutcome:e=>void I(t,e)})))},L=()=>{if(!C)return;let n=C.repoRoot,r={id:C.nextId,title:``,status:`open`,created:new Date().toISOString().slice(0,10),body:``};W.set((0,V.jsx)(uz,{model:e,issue:r,mode:`create`,engines:s,defaultEngine:c,onOutcome:i=>{i.kind===`create`&&(async()=>{try{let t=await e.client.request(`issue.create`,{repo:n,title:i.title,body:i.body});if(a(),!i.start)return;let o=t.issues.find(e=>e.id===r.id)??t.issues.reduce((e,t)=>e&&e.id>t.id?e:t,null);o&&await F(n,o,i.start)}catch(e){G(eL(t.createFailed,{error:nL(e)}),`error`)}})()}}))},ne=()=>{let n=C?.issues.find(e=>e.id===p);if(!C||!n)return;let i=C.repoRoot;W.set((0,V.jsx)(dr,{title:eL(t.confirmDelete.title,{id:String(n.id)}),body:eL(t.confirmDelete.body,{title:n.title}),confirmLabel:r.confirm,onConfirm:async()=>{try{await e.client.request(`issue.delete`,{repo:i,id:n.id}),m(null)}catch(e){G(eL(t.deleteFailed,{id:String(n.id),error:nL(e)}),`error`)}finally{a()}}}))},re=e=>{b.length!==0&&(f(b[(S+e+b.length)%b.length]?.repoRoot??null),m(null))},ie=e=>{let t=fR(k,p,e);t!=null&&m(t)},R=e=>k.some(e=>e.issues.length>0)?ie(e):re(e===`left`?-1:1);uL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`r`:return a(),!0;case`Tab`:return re(e.shiftKey?-1:1),!0;case`ArrowUp`:return ie(`up`),!0;case`ArrowDown`:return ie(`down`),!0;case`ArrowRight`:case`l`:return R(`right`),!0;case`ArrowLeft`:case`h`:return R(`left`),!0;case`Enter`:{let e=C?.issues.find(e=>e.id===p);return e&&te(e),!0}case`n`:return L(),!0;case`d`:return ne(),!0;default:return!1}});let ae=(0,g.useRef)(null);(0,g.useEffect)(()=>{ae.current?.querySelector(`[data-issue="${p}"]`)?.scrollIntoView({block:`nearest`})},[p]);let oe=(e,n,r)=>{m(e.id),sn.set({x:n,y:r,items:cz.filter(t=>t!==e.status).map(n=>({label:eL(t.menu.setStatus,{status:t.detail.status[n]}),run:()=>void N(e,n)}))})},se=k.find(e=>e.issues.some(e=>e.id===p))??k.find(e=>e.issues.length>0)??k[0],ce=(e,n)=>(0,V.jsxs)(`section`,{className:zR(!n),children:[n&&(0,V.jsxs)(`h2`,{className:BR(e.key),children:[(0,V.jsxs)(`span`,{children:[j[e.key],` (`,e.issues.length+e.hiddenCount,`)`]}),e.key===`in_progress`&&A>0&&(0,V.jsx)(`span`,{className:`text-warning`,children:eL(t.attention,{count:String(A)})})]}),(0,V.jsxs)(`div`,{className:VR,children:[e.issues.map(t=>(0,V.jsx)(mz,{issue:t,column:e.key,selected:t.id===p,badge:ee(t,e.key),onSelect:()=>m(t.id),onOpen:()=>te(t),onMenu:(e,n)=>oe(t,e,n)},t.id)),e.issues.length===0&&e.hiddenCount===0&&(0,V.jsx)(`p`,{className:`mono text-muted ${HR}`,children:t.columnEmpty}),e.hiddenCount>0&&(0,V.jsx)(`p`,{className:`mono text-muted ${HR}`,children:eL(t.more,{count:String(e.hiddenCount)})})]})]},e.key);return(0,V.jsxs)(`div`,{className:`${hM} ${kR}`,tabIndex:0,ref:h,children:[(0,V.jsxs)(`div`,{className:`kb-top`,children:[(0,V.jsx)(`h1`,{className:_M,children:t.title}),(0,V.jsx)(`span`,{className:`mono keys-only text-muted`,children:t.hint}),(0,V.jsxs)(`span`,{className:`mono ${bM}`,children:[(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.kanban}`,disabled:!C,onClick:L,children:z(`pages.new`)}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.kanban}`,disabled:!C?.issues.some(e=>e.id===p),onClick:ne,children:z(`pages.delete`)})]})]}),o===null?(0,V.jsx)(`p`,{className:`text-muted`,children:t.loading}):C?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:AR,children:[(0,V.jsxs)(`button`,{type:`button`,className:jR,onClick:()=>re(1),children:[iL(C.repoRoot,w),b.length>1&&(0,V.jsx)(`span`,{className:`text-muted`,children:` ${S+1}/${b.length}`})]}),!_&&(0,V.jsx)(`span`,{className:`mono text-muted ${MR}`,children:C.repoRoot}),C.issues.length===0&&!C.readError&&(0,V.jsx)(`span`,{className:`text-muted ${NR}`,children:t.empty})]}),C.readError?(0,V.jsx)(`p`,{className:`text-error`,children:eL(t.readFailed,{error:C.readError})}):_&&se?(0,V.jsxs)(`div`,{className:FR,ref:ae,children:[(0,V.jsx)(`div`,{className:`mono ${IR}`,children:k.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:LR(e.key===se.key),onClick:()=>{let t=e.issues[0];t&&m(t.id)},children:[j[e.key],` (`,e.issues.length+e.hiddenCount,`)`]},e.key))}),ce(se,!1)]}):(0,V.jsx)(`div`,{className:PR,ref:ae,children:k.map(e=>ce(e,!0))})]}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.noRepos})]})}var vz={title:`Mods`,empty:`No mod is drawing anything.`,emptyHint:`A plugin with a [mod] entry draws its panes here, in the TUI and the web alike.`,keys:`↑↓/tab move · enter press · esc back`,pressFailed:`{plugin}: the press did not reach the mod ({reason})`},yz={title:`Mods`,empty:`当前没有 mod 在绘制内容。`,emptyHint:`声明了 [mod] 的插件会在这里绘制面板,TUI 和 web 显示的是同一份。`,keys:`↑↓/tab 移动 · enter 按下 · esc 返回`,pressFailed:`{plugin}:按键没有送达 mod({reason})`},bz={info:`text-info`,success:`text-success`,warning:`text-warning`,error:`text-error`,muted:`text-muted`},xz=`flex flex-col gap-3`,Sz=`[&_p]:mx-0 [&_p]:my-1`,Cz=`rounded-md border-hairline border-line px-3 pt-2 pb-3 font-mono`,wz=`mb-2 text-meta leading-[inherit] text-ink`,Tz=(e,t)=>`flex min-w-0 items-start ${e?`[&>form]:flex-[1_1_12em] [&>form]:self-center`:``} ${t?`rounded-sm border-hairline border-line`:``}`,Ez=(e,t)=>`whitespace-pre-wrap wrap-anywhere ${e?bz[e]:`text-ink`} ${t?`font-bold`:``}`,Dz=(e,t)=>`cursor-pointer rounded-sm border-hairline border-current px-2.5 py-0.5 [font:inherit] font-bold! ${bz[e]} ${t?`bg-[color-mix(in_srgb,currentcolor_18%,transparent)]`:`bg-transparent [&:hover]:bg-[color-mix(in_srgb,currentcolor_18%,transparent)]`}`,Oz=`flex min-w-0 max-w-[40em] self-stretch`,kz=`w-full font-mono`,Az=[0,6,12,20];function jz(e){return`mod-${e.kind}:${e.plugin}/${e.pane}/${e.key}`}function Mz(e){let[t,n]=(0,g.useState)(e.value??``);return(0,V.jsx)(`form`,{className:Oz,onSubmit:r=>{r.preventDefault(),e.onSubmit(t),n(e.value??``)},children:(0,V.jsx)(`input`,{id:e.id,className:`${nn} ${kz}`,spellCheck:!1,value:t,placeholder:e.placeholder,onFocus:e.onFocus,onChange:e=>n(e.target.value)})})}function Nz(e){let{node:t}=e;if(t.type===`text`)return(0,V.jsx)(`span`,{className:Ez(t.tone,t.bold===!0),children:t.text});if(t.type===`input`){let n={kind:`input`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,V.jsx)(Mz,{id:jz(n),placeholder:t.placeholder,value:t.value,onFocus:()=>e.onFocus(n),onSubmit:t=>e.onSubmit(n,t)},t.value??``)}if(t.type===`button`){let n={kind:`button`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,V.jsx)(`button`,{type:`button`,id:jz(n),className:Dz(t.tone??`info`,Di(n,e.cursor)),onFocus:()=>e.onFocus(n),onClick:()=>e.onPress(n),children:t.label})}return(0,V.jsx)(`div`,{className:Tz(t.direction===`row`,t.border===!0),style:{flexDirection:t.direction??`column`,gap:Az[t.gap??0],padding:Az[t.padding??0]},children:t.children.map((t,n)=>(0,V.jsx)(Nz,{...e,node:t},n))})}function Pz({model:e}){let t=B()===`zh`?yz:vz,n=v(e.mods),r=Ei(n),[i,a]=(0,g.useState)(null),o=Oi(r,i),s=dL(),c=(0,g.useRef)(!1),l=(t,n,r={})=>{a(t),!c.current&&(c.current=!0,e.client.request(n,{plugin:t.plugin,pane:t.pane,key:t.key,...r}).catch(e=>G(e instanceof Error?e.message:String(e),`error`)).finally(()=>{c.current=!1}))},u=e=>l(e,`mod.press`),d=(e,t)=>l(e,`mod.submit`,{value:t}),f=e=>{let t=ki(r,o,e);a(t),t&&document.getElementById(jz(t))?.focus()};return uL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`ArrowDown`:return f(1),!0;case`ArrowUp`:return f(-1),!0;case`Enter`:return e.target instanceof HTMLButtonElement?!1:(o?.kind===`button`&&u(o),!0);default:return!1}}),(0,V.jsxs)(`div`,{className:`${gM} ${xz}`,tabIndex:0,ref:s,children:[(0,V.jsxs)(`div`,{className:vM,children:[(0,V.jsx)(`h1`,{className:_M,children:t.title}),(0,V.jsx)(`span`,{className:`keys-only touch:empty:hidden! text-muted ${yM(!1)}`,children:t.keys})]}),n.length===0?(0,V.jsxs)(`div`,{className:Sz,children:[(0,V.jsx)(`p`,{children:t.empty}),(0,V.jsx)(`p`,{className:`text-muted`,children:t.emptyHint})]}):n.map(e=>(0,V.jsxs)(`section`,{className:Cz,children:[(0,V.jsxs)(`header`,{className:wz,children:[e.title,` `,(0,V.jsx)(`span`,{className:`text-muted`,children:e.plugin})]}),(0,V.jsx)(Nz,{node:e.tree,pane:e,cursor:o,onPress:u,onSubmit:d,onFocus:a})]},`${e.plugin}/${e.id}`))]})}function Fz(e){return e===`dispatch_failed`||e===`skipped_unavailable`||e===`script_failed`}function Iz(e,t){return e.response?`responded`:e.status!==`dispatched`&&e.status!==`revived`?null:e.deliveryStatus===`missing`?`missing`:e.deliveryStatus===`awaiting`?`awaiting`:t-Date.parse(e.at)>72e5?`missing`:`awaiting`}var Lz=6e4,Rz=3294,zz=new Map([[`JAN`,1],[`FEB`,2],[`MAR`,3],[`APR`,4],[`MAY`,5],[`JUN`,6],[`JUL`,7],[`AUG`,8],[`SEP`,9],[`OCT`,10],[`NOV`,11],[`DEC`,12]]),Bz=new Map([[`SUN`,0],[`MON`,1],[`TUE`,2],[`WED`,3],[`THU`,4],[`FRI`,5],[`SAT`,6]]),Vz=256;function Hz(e,t,n){let r=e.toUpperCase(),i=t?.get(r);if(i!==void 0)return i;if(!/^\d+$/.test(r))throw Error(`invalid cron ${n}: ${e}`);return Number(r)}function Uz(e){let t=new Set;for(let n of e.value.split(`,`)){if(n.length===0)throw Error(`invalid cron ${e.field}: ${e.value}`);let[r,i,...a]=n.split(`/`);if(a.length>0||r===void 0)throw Error(`invalid cron ${e.field}: ${n}`);let o=1;if(i!==void 0&&(!/^\d+$/.test(i)||(o=Number(i),o<1)))throw Error(`invalid cron ${e.field} step: ${n}`);let s,c;if(r===`*`)s=e.min,c=e.max;else if(r.includes(`-`)){let[t,i,...a]=r.split(`-`);if(a.length>0||t===void 0||i===void 0)throw Error(`invalid cron ${e.field} range: ${n}`);s=Hz(t,e.names,e.field),c=Hz(i,e.names,e.field)}else s=Hz(r,e.names,e.field),c=i===void 0?s:e.max;if(s<e.min||c>e.max||s>c)throw Error(`cron ${e.field} out of range: ${n}`);for(let n=s;n<=c;n+=o)t.add(e.normalize?e.normalize(n):n)}return t}function Wz(e){if(e.length>Vz)throw Error(`cron expression is too long`);let t=e.trim().split(/\s+/).filter(Boolean);if(t.length!==5)throw Error(`cron expression needs 5 fields (minute hour day month weekday), got ${t.length}`);let[n,r,i,a,o]=t;return{minutes:Uz({value:n,min:0,max:59,field:`minute`}),hours:Uz({value:r,min:0,max:23,field:`hour`}),daysOfMonth:Uz({value:i,min:1,max:31,field:`day-of-month`}),months:Uz({value:a,min:1,max:12,field:`month`,names:zz}),daysOfWeek:Uz({value:o,min:0,max:7,field:`weekday`,names:Bz,normalize:e=>e%7}),dayOfMonthRestricted:!i.startsWith(`*`),dayOfWeekRestricted:!o.startsWith(`*`)}}function Gz(e){try{return Wz(e),!0}catch{return!1}}function Kz(e,t,n){return new Date(e.year,e.month-1,e.day,t,n,0,0).getTime()}function qz(e){let t=new Date(e);return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}function Jz(e,t){return qz(new Date(e.year,e.month-1,e.day+t,12,0,0,0).getTime())}function Yz(e,t){if(!e.months.has(t.month))return!1;let n=e.daysOfMonth.has(t.day),r=e.daysOfWeek.has(new Date(t.year,t.month-1,t.day).getDay());return e.dayOfMonthRestricted&&e.dayOfWeekRestricted?n||r:n&&r}function Xz(e){return e-e%Lz}function Zz(e,t){return[...e].sort((e,n)=>(e-n)*t)}function Qz(e,t){let n=Wz(e),r=Zz(n.hours,1),i=Zz(n.minutes,1),a=new Date(Xz(t)+Lz),o=qz(a.getTime()),s=a.getHours(),c=a.getMinutes();for(let e=0;e<Rz;e++){if(Yz(n,o)){for(let e of r)if(!(e<s))for(let n of i){if(e===s&&n<c)continue;let r=Kz(o,e,n);if(r>t)return r}}o=Jz(o,1),s=0,c=0}throw Error(`cron expression never matches: ${e}`)}var $z=[`minute`,`hour`,`dayOfMonth`,`month`,`dayOfWeek`];function eB(e){let t=e.trim().split(/\s+/).filter(Boolean);return $z.map((e,n)=>t[n]??`*`)}function tB(e){return $z.map((t,n)=>e[n]??`*`).join(` `)}var nB=[`*`,`*/5`,`*/10`,`*/15`,`*/30`,...cB(0,59)],rB=[`*`,`*/2`,`*/3`,`*/4`,`*/6`,`*/12`,...cB(0,23)],iB=[`*`,...cB(1,31)],aB=[`*`,`JAN`,`FEB`,`MAR`,`APR`,`MAY`,`JUN`,`JUL`,`AUG`,`SEP`,`OCT`,`NOV`,`DEC`],oB=[`*`,`MON-FRI`,`SAT,SUN`,`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`],sB=[`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`];function cB(e,t){let n=[];for(let r=e;r<=t;r++)n.push(String(r));return n}var lB={minute:nB,hour:rB,dayOfMonth:iB,month:aB,dayOfWeek:oB};function uB(e,t,n){let r=lB[e],i=r.indexOf(t.trim().toUpperCase());return i<0?(n>0?r[0]:r[r.length-1])??t:r[(i+n+r.length)%r.length]??t}function dB(e,t){return Math.min(Math.max(e+t,0),$z.length-1)}function fB(e,t,n){let r=eB(e);return t<0||t>=$z.length||(r[t]=n),tB(r)}function pB(e,t){let[n,r,i,a,o]=eB(e);if(a!==`*`||i!==`*`||n===void 0||r===void 0||o===void 0)return null;let s=mB(n,r,t);if(!s)return null;let{at:c,bare:l}=s;if(o===`*`)return l?c:t(`automations.schedule.everyDay`,{at:c});if(o===`MON-FRI`)return t(`automations.schedule.weekdays`,{at:c});if(o===`SAT,SUN`)return t(`automations.schedule.weekends`,{at:c});let u=sB.find(e=>e===o.toUpperCase());return u?t(`automations.schedule.onWeekday`,{weekday:t(`automations.schedule.dow.${u}`),at:c}):null}function mB(e,t,n){return t===`*`?e===`*`?{at:n(`automations.schedule.everyMinute`),bare:!0}:e.startsWith(`*/`)?{at:n(`automations.schedule.everyMinutes`,{n:e.slice(2)}),bare:!0}:/^\d+$/.test(e)?{at:n(`automations.schedule.hourlyAt`,{minute:e.padStart(2,`0`)}),bare:!1}:null:t.startsWith(`*/`)&&e===`0`?{at:n(`automations.schedule.everyHours`,{n:t.slice(2)}),bare:!0}:/^\d+$/.test(t)&&/^\d+$/.test(e)?{at:n(`automations.schedule.atClock`,{time:`${t.padStart(2,`0`)}:${e.padStart(2,`0`)}`}),bare:!1}:null}function hB(e,t,n,r){let i=e.trim();if(!Gz(i))return{kind:`invalid`};let a;try{a=Qz(i,t)}catch{return{kind:`never`}}return{kind:`ok`,nextRunMs:a,relative:gB(a-t,n),absolute:_B(a,t,n,r)}}function gB(e,t){let{minutes:n,hours:r,days:i}=ZL(e);return n<60?t(`automations.when.inMinutes`,{n:Math.max(1,n)}):r<24?t(`automations.when.inHours`,{n:r}):t(`automations.when.inDays`,{n:i})}function _B(e,t,n,r){let i=new Date(e),a=`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,o=new Date(t);if(i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate())return a;let s=e-t<5184e5,c=i.toLocaleDateString(r,s?{weekday:`short`}:{weekday:`short`,month:`short`,day:`numeric`});return s?`${c} ${a}`:n(`automations.when.dateTime`,{date:c,time:a})}var vB={name:``,repo:``,prompt:``,schedule:`0 9 * * MON-FRI`};function yB(e){return e.name.trim().length>0&&(e.repo===null||e.repo.trim().length>0)&&e.prompt.trim().length>0&&(!e.target||e.target.taskId.trim().length>0&&/^tab-[\w-]+$/.test(e.target.tabId))&&Gz(e.schedule.trim())}function bB(e){return e.name.trim().length===0?`name`:e.repo!==null&&e.repo.trim().length===0?`repo`:e.target&&!e.target.taskId.trim()?`target`:e.target&&!/^tab-[\w-]+$/.test(e.target.tabId)?`targetTab`:e.prompt.trim().length===0?`prompt`:Gz(e.schedule.trim())?null:`schedule`}var xB=`flex flex-col overflow-hidden @container`,SB=`mt-2.5 grid min-h-0 flex-1 grid-cols-[minmax(260px,2fr)_minmax(0,3fr)] gap-4 rt-narrow:flex rt-narrow:flex-col rt-narrow:overflow-y-auto`,CB=`flex min-h-0 flex-col gap-3 overflow-y-auto scrollbar-none rt-narrow:shrink-0 rt-narrow:overflow-visible`,wB=`flex gap-1.5 px-2 pt-0 pb-1`,TB=e=>`flex min-w-0 cursor-pointer flex-col gap-0.5 rounded-sm px-2 py-1.5 ${e?`bg-menu`:`[&:hover]:bg-hover`}`,EB=`flex min-w-0 items-baseline gap-2.5`,DB=e=>`min-w-0 flex-1 truncate font-bold ${e?`text-muted`:``}`,OB=`whitespace-nowrap text-meta`,kB=`truncate text-meta`,AB=`flex min-h-0 flex-col gap-1.5 overflow-y-auto py-0 pr-0 pl-4 [border-left:var(--hairline)_solid_var(--line)] [&_h2]:m-0 [&_p]:m-0 [&>*]:shrink-0 [&>h2]:mt-2.5 rt-narrow:shrink-0 rt-narrow:overflow-visible rt-narrow:pt-3 rt-narrow:pl-0 rt-narrow:[border-left:none] rt-narrow:[border-top:var(--hairline)_solid_var(--line)]`,jB=`flex flex-wrap items-baseline justify-between gap-3`,MB=`font-sans text-display font-bold normal-nums wrap-anywhere`,NB=`mx-0 mt-1 mb-0 grid grid-cols-[max-content_minmax(0,1fr)] items-baseline gap-x-3.5 gap-y-1 [&_dd]:m-0 [&_dd]:wrap-anywhere [&_dd_.mono]:whitespace-pre`,PB=`max-h-[12lh] overflow-y-auto rounded-sm bg-inset px-2.5 py-2 whitespace-pre-wrap wrap-anywhere`,FB=`min-w-0 text-meta leading-[inherit]`,IB=`flex w-full min-w-0 gap-2 text-inherit`,LB=IB,RB=`${IB} cursor-pointer border-none bg-transparent p-0 text-left font-[inherit] [&:hover]:underline`,zB=`min-w-0 flex-1 truncate`,BB=`[&+&]:mt-1.5`,VB=e=>`whitespace-pre-wrap wrap-anywhere text-meta ${e?``:`leading-[inherit]`}`,HB=`text-meta`,UB=`flex gap-4.5`,WB=e=>`flex min-w-[5ch] flex-col gap-0.5 rounded-sm border-hairline px-1.5 py-1 text-left font-mono text-body normal-nums [&>span]:text-meta [&>span]:text-subtle ${e?`border-accent font-bold text-accent`:`border-transparent font-normal`}`,GB=`hidden gap-2 px-1 pt-0.5 pb-1.5 touch:flex`,KB=`h-8 w-11 touch-manipulation rounded-sm border-hairline border-line bg-inset font-mono text-display font-normal normal-nums text-ink`;function qB(e){let{auto:t,common:n}=$I(),r=tL(),i=B()===`zh`?`zh-CN`:`en-US`,[a,o]=(0,g.useState)(()=>({...vB,repo:e.repos.find(t=>e.defaultRepo&&rL(t)===rL(e.defaultRepo))??e.repos[0]??null})),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(null),d=(0,g.useRef)({}),f=e=>t=>{d.current[e]=t};(0,g.useEffect)(()=>d.current.name?.focus(),[]);let p=e=>{o(t=>({...t,...e})),u(null)};(0,g.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),Cn())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[]);let m=()=>{if(yB(a)){Cn(),e.onSubmit({name:a.name.trim(),repo:a.repo===null?null:a.repo.trim(),prompt:a.prompt.trim(),schedule:a.schedule.trim(),...a.target?{target:a.target}:{}});return}let n=bB(a);n&&(d.current[n]?.focus(),u(Reflect.get(t.missing,n)))},h=a.repo===null?[]:e.tasks.filter(e=>rL(e.repo)===rL(a.repo??``)),_=a.target?h.findIndex(e=>e.id===a.target?.taskId)+1:0,v=e=>{let t=(_+e+h.length+1)%(h.length+1),n=h[t-1];p({target:n?{kind:`existing-tab`,taskId:n.id,tabId:`tab-1`}:void 0})},y=[null,...e.repos],b=e=>{let t=Math.min(Math.max(y.indexOf(a.repo)+e,0),y.length-1),n=y[t];n!==void 0&&p({repo:n,target:void 0})},x=e=>t=>{(t.key===`ArrowUp`||t.key===`ArrowDown`)&&(t.preventDefault(),e(t.key===`ArrowDown`?1:-1))},S=e=>t=>{t.key===`Enter`&&(t.preventDefault(),d.current[e]?.focus())},C=eB(a.schedule),w=e=>{let t=$z[s];t&&p({schedule:fB(a.schedule,s,uB(t,C[s]??`*`,e))})},T=e=>{if(!(e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`ArrowLeft`||e.key===`h`)c(dB(s,-1));else if(e.key===`ArrowRight`||e.key===`l`)c(dB(s,1));else if(e.key===`ArrowUp`||e.key===`ArrowDown`)w(e.key===`ArrowUp`?1:-1);else return;e.preventDefault()}},E=hB(a.schedule,Date.now(),r,i),D=pB(a.schedule,r);return(0,V.jsx)(`div`,{className:Nn,onMouseDown:e=>e.target===e.currentTarget&&Cn(),children:(0,V.jsxs)(`dialog`,{open:!0,className:`${Pn(!0)} ${JR}`,"aria-label":t.newTitle,children:[(0,V.jsx)(`h1`,{className:`${U} text-muted`,children:t.newTitle}),(0,V.jsxs)(`div`,{className:Rn,children:[(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.fieldName}),(0,V.jsx)(`input`,{ref:f(`name`),className:nn,spellCheck:!1,placeholder:t.namePlaceholder,value:a.name,onChange:e=>p({name:e.target.value}),onKeyDown:S(`repo`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.fieldRepo,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`↑/↓`})]}),(0,V.jsx)(sz,{fieldRef:f(`repo`),kind:`list`,label:t.fieldRepo,className:$R,onKeyDown:x(b),children:y.map(t=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-selected":t===a.repo,className:`touch:py-1.5 ${ez(t===a.repo)}`,onClick:()=>{p({repo:t,target:void 0}),d.current.repo?.focus()},children:[t===a.repo?`▸ `:` `,t===null?z(`rail.noProject`):iL(t,e.repos)]},t??``))})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.fieldTarget,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`↑/↓`})]}),(0,V.jsx)(sz,{fieldRef:f(`target`),kind:`list`,label:t.fieldTarget,onKeyDown:x(v),onClick:()=>v(1),children:a.target?h[_-1]?.title??a.target.taskId:t.targetFresh})]}),a.target&&(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:t.fieldTargetTab}),(0,V.jsx)(`input`,{ref:f(`targetTab`),className:nn,spellCheck:!1,value:a.target.tabId,onChange:e=>a.target&&p({target:{...a.target,tabId:e.target.value}}),onKeyDown:S(`prompt`)})]}),(0,V.jsxs)(`label`,{className:On,children:[(0,V.jsx)(`span`,{className:`${U} text-muted`,children:t.fieldPrompt}),(0,V.jsx)(`input`,{ref:f(`prompt`),className:nn,spellCheck:!1,placeholder:t.promptPlaceholder,value:a.prompt,onChange:e=>p({prompt:e.target.value}),onKeyDown:S(`schedule`)})]}),(0,V.jsxs)(`div`,{className:On,children:[(0,V.jsxs)(`span`,{className:`${U} text-muted ${XR}`,children:[t.fieldSchedule,(0,V.jsx)(`span`,{className:`keys-only text-muted ${ZR}`,children:`←/→ ↑/↓`})]}),(0,V.jsx)(sz,{fieldRef:f(`schedule`),kind:`cells`,label:t.fieldSchedule,className:UB,onKeyDown:T,children:$z.map((e,n)=>(0,V.jsxs)(`button`,{type:`button`,tabIndex:-1,className:WB(n===s),onClick:()=>{c(n),d.current.schedule?.focus()},children:[C[n]??`*`,(0,V.jsx)(`span`,{children:t.cronField[e]})]},e))}),(0,V.jsx)(`div`,{className:GB,children:[-1,1].map(e=>{let n=t.cronField[$z[s]??`minute`]??``;return(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,className:KB,"aria-label":z(e<0?`pages.cronDown`:`pages.cronUp`,{field:n}),onClick:()=>{w(e),d.current.schedule?.focus()},children:e<0?`−`:`+`},e)})}),E.kind===`ok`?(0,V.jsxs)(`p`,{className:`mono text-success`,children:[D?`${D}, `:``,E.relative,`, `,E.absolute]}):(0,V.jsx)(`p`,{className:`mono text-error`,children:E.kind===`never`?t.cronNever:t.cronInvalid})]}),l&&(0,V.jsxs)(`p`,{className:`text-error`,children:[`※ `,l]}),(0,V.jsx)(`p`,{className:`touch:empty:hidden! text-muted ${tz}`,children:(0,V.jsx)(AT,{text:is(t.composerLegend)})}),(0,V.jsxs)(`div`,{className:rn,children:[(0,V.jsx)(`button`,{type:`button`,className:en,onClick:Cn,children:n.cancel}),(0,V.jsx)(`button`,{ref:f(`confirm`),type:`button`,className:Pe(),onClick:m,children:n.create})]})]})]})})}var JB=[`ok`,`blocked`,`failed`,`skipped`];function YB(e){switch(e.status){case`dispatched`:case`revived`:case`ran`:return`ok`;case`skipped_blocked`:return`blocked`;case`dispatch_failed`:case`skipped_unavailable`:case`script_failed`:return`failed`;default:return`skipped`}}var XB={scheduled:`schedule`,manual:`manual`,webhook:`webhook`};function ZB(e){if(e.status===`skipped_precheck`)return e.precheckResult?.durationMs??null;if(e.status===`ran`||e.status===`script_failed`)return null;let t=Date.parse(e.at),n=Date.parse(e.response?.at??``);return Number.isFinite(t)&&Number.isFinite(n)&&n>=t?n-t:null}function QB(e){if(e<1e3)return`${Math.max(0,Math.round(e))}ms`;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return n%60==0?`${r}h`:`${r}h ${n%60}m`}function $B(e,t,n){return(t===null?Object.values(e).flat():e[t]??[]).filter(e=>n===null||YB(e)===n).sort((e,t)=>Date.parse(t.at)-Date.parse(e.at)||t.runNumber-e.runNumber)}function eV(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;try{return{prefix:e.slice(0,t).trim(),value:JSON.parse(e.slice(t,n+1))}}catch{return null}}var tV=(e,t)=>e&&typeof e==`object`?Reflect.get(e,t):void 0;function nV(e){let t=eV(e);if(!t)return{summary:e,full:e};let n=tV(t.value,`error`)??t.value,r=tV(n,`message`),i=tV(n,`code`),a=typeof r==`string`?typeof i==`string`?`${i}: ${r}`:r:null,o=t.prefix.replace(/:$/,``);return{summary:a?`${o} — ${a}`:e,full:`${t.prefix}\n${JSON.stringify(t.value,null,2)}`}}function rV(e){let t=e.trim();if(!/^[[{]/.test(t))return e;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}}var iV={dispatched:`success`,revived:`success`,skipped_precheck:`muted`,skipped_blocked:`warning`,skipped_cancelled:`muted`,skipped_missed:`warning`,skipped_unavailable:`warning`,dispatch_failed:`error`,ran:`success`,script_failed:`error`},aV={success:`text-success`,muted:`text-muted`,warning:`text-warning`,error:`text-error`},oV={success:`✓`,error:`†`,warning:`!`,muted:`·`},sV=e=>iV[e]??`muted`;function cV(e){let{auto:t}=$I(),{runs:n,when:r}=e,i=e=>t.runStatus[e]??e,a=n.filter(e=>e.response);return(0,V.jsxs)(V.Fragment,{children:[n[0]?.precheckResult&&(0,V.jsx)(lV,{run:n[0]}),(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:t.responses}),a.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.noResponses}):a.map(e=>(0,V.jsxs)(`div`,{className:BB,children:[(0,V.jsx)(`p`,{className:`mono ${HB} ${aV[sV(e.status)]}`,children:`#${e.runNumber} ${i(e.status)}, ${r(e.response?.at)}`}),(0,V.jsx)(`p`,{className:VB(!1),children:rV(e.response?.text??``)})]},e.id))]})}function lV({run:e}){let{auto:t}=$I(),n=e.precheckResult;if(!n)return null;let r=n.timedOut?t.precheckTimedOut:eL(t.precheckExited,{code:String(n.exitCode??`?`)}),i=[{label:t.precheckStdout,text:n.stdout},{label:t.precheckStderr,text:n.stderr}].filter(e=>e.text.trim().length>0);return(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:eL(t.precheckDetail,{exit:r,duration:String(n.durationMs)})}),i.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.precheckNoOutput}):i.map(e=>(0,V.jsx)(`p`,{className:`mono ${VB(!0)}`,children:`${e.label}: ${e.text.replace(/\s+$/,``).split(`
|
|
125
125
|
`).slice(-10).join(`
|
|
126
|
-
`)}`},e.label))]})}var OV=30;function kV(e,t,n){let r=t.join(`\0`),[i,a]=(0,g.useState)(()=>Object.fromEntries(t.map(t=>[t,Hs(e,`routine.runs`,{id:t})?.runs??[]])));return(0,g.useEffect)(()=>{let n=!0;for(let r of t)Ws(e,`routine.runs`,{id:r}).then(e=>n&&a(t=>({...t,[r]:e.runs}))).catch(()=>void 0);return()=>{n=!1}},[e,r,n]),i}function AV(e){B();let{auto:t}=_L(),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null);(0,g.useEffect)(()=>r(null),[e.followId]);let o=n===null?e.followId??``:n,s=o===``?e.routines.map(e=>e.id):[o],c=kV(e.c,s,e.tick),l=new Map(e.routines.map(e=>[e.id,e.name])),u=_V(c,o===``?null:o,i),d=e=>{if(e.status===`skipped_blocked`){let t=e.blocked?.reason;return t?vL(z(`runLog.blockedRun`),{reason:z(`runLog.blocked.${t}`)}):z(`runLog.outcome.blocked`)}return t.runStatus[e.status]??e.status},f=(e,t,n,r)=>(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":t,className:`max-w-40 truncate`,onClick:n,children:`[ ${e} ]`},r);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`runLog.title`)}),e.routines.length>1&&(0,V.jsx)(OA,{label:z(`runLog.routine`),value:o,picks:[{value:``,label:z(`runLog.allRoutines`)},...e.routines.map(e=>({value:e.id,label:e.name}))],onPick:r}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1`,children:[f(z(`runLog.all`),i===null,()=>a(null),`all`),fV.map(e=>f(z(`runLog.outcome.${e}`),i===e,()=>a(e),e))]}),u.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:_V(c,o===``?null:o,null).length===0?t.noRuns:z(`runLog.empty`)}):u.slice(0,OV).map(n=>{let r=TV(n.status),i=eB(n,e.now),a=i===`awaiting`?`, ${t.responseAwaiting}`:i===`missing`?`, ${t.responseMissing}`:``,s=hV(n),c=(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{children:wV[r]}),(0,V.jsx)(`span`,{children:`#${n.runNumber}`}),o===``&&(0,V.jsx)(`span`,{className:`max-w-[20ch] truncate`,children:l.get(n.automationId)??``}),(0,V.jsx)(`span`,{className:rV,children:`${d(n)}${n.tabId?`, ${n.tabId}`:``}${a}`}),(0,V.jsx)(`span`,{className:`text-subtle`,children:z(`runLog.source.${mV[n.trigger]}`)}),s!==null&&(0,V.jsx)(`span`,{className:`text-muted`,children:gV(s)}),(0,V.jsx)(`span`,{className:`text-muted`,children:e.when(n.at)})]}),u=n.error?bV(n.error):null,f=n.taskId,p=i===`missing`?`text-warning`:CV[r];return(0,V.jsxs)(`div`,{className:`${$B} ${p}`,children:[f?(0,V.jsx)(`button`,{type:`button`,className:`mono ${nV}`,onClick:()=>e.openRun(f),children:c}):(0,V.jsx)(`span`,{className:`mono ${tV}`,children:c}),u&&(0,V.jsxs)(`details`,{className:`mono pl-[calc(2ch+16px)] [&_summary]:cursor-pointer [&_summary]:list-none [&_summary]:truncate [&_summary::-webkit-details-marker]:hidden [&[open]_summary]:whitespace-normal [&_pre]:mx-0 [&_pre]:mt-1 [&_pre]:mb-1.5 [&_pre]:max-h-[16lh] [&_pre]:overflow-auto [&_pre]:rounded-sm [&_pre]:bg-inset [&_pre]:px-2 [&_pre]:py-1.5 [&_pre]:whitespace-pre-wrap [&_pre]:wrap-anywhere [&_pre]:text-muted`,children:[(0,V.jsx)(`summary`,{children:u.summary}),(0,V.jsx)(`pre`,{children:u.full})]})]},n.id)}),u.length>OV&&(0,V.jsx)(`p`,{className:`text-muted`,children:z(`runLog.more`,{count:u.length-OV})})]})}var jV=5e3;function MV({model:e}){let{auto:t,common:n}=_L(),r=e.client,[i,a]=EL(jV),o=v(e.tasks),s=wL(e),c=TL(e),[l,u]=(0,g.useState)(()=>Hs(r,`routine.list`)??null),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null),[h,_]=(0,g.useState)(null),y=kL(),b=yL(),x=B()===`zh`?`zh-CN`:`en-US`,S=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0;return Ws(r,`routine.list`).then(t=>e&&u(t)).catch(()=>e&&u(e=>e??{automations:[],keepsDaemonAlive:!1})),()=>{e=!1}},[r,i]);let C=l?.automations??[],w=l?.lastRunStatus??{},T=l?.lastFailure??{},E=e=>{let t=w[e.id];return t!==void 0&&$z(t)},D=[{key:`pages.routinesNeedYou`,rows:C.filter(E)},{key:`pages.routinesActive`,rows:C.filter(e=>e.enabled&&!E(e))},{key:`pages.routinesPaused`,rows:C.filter(e=>!e.enabled&&!E(e))}],O=D.flatMap(e=>e.rows),k=Math.max(0,O.findIndex(e=>e.id===d)),A=O[k],j=e=>f(O[e]?.id??null),ee=D[0]?.rows.length??0,M=v(dn);(0,g.useEffect)(()=>{M===null||!l||(l.automations.some(e=>e.id===M)&&f(M),dn.set(null))},[M,l]);let N=kV(r,A?[A.id]:[],i),P=A?N[A.id]??[]:[];(0,g.useEffect)(()=>_(null),[A?.id]);let F=(0,g.useRef)(null),[I,te]=(0,g.useState)(0),L=(0,g.useRef)(0);(0,g.useEffect)(()=>{let e=S.current,t=I!==L.current;if(L.current=I,t&&e&&F.current&&e.offsetTop>F.current.offsetTop){e.scrollIntoView({block:`start`,behavior:`smooth`});return}F.current?.querySelector(`[data-row="${k}"]`)?.scrollIntoView({block:`nearest`})},[k,I]);let ne=Date.now(),re=e=>{let n=e?Date.parse(e):NaN;if(!Number.isFinite(n))return`—`;let r=n-ne,i=r>=0,a=Math.floor(Math.abs(r)/6e4),o=Math.floor(a/60);return a<1?i?t.when.now:t.when.justNow:a<60?vL(i?t.when.inMinutes:t.when.minutesAgo,{n:a}):o<24?vL(i?t.when.inHours:t.when.hoursAgo,{n:o}):new Date(n).toLocaleDateString()},ie=e=>o?.tasks.find(t=>t.id===e)?.label??e,R=t=>{un.set(null),e.select(t)},ae=(e,t,n)=>G(vL(e,{name:t,error:bL(n)}),`error`),oe=async()=>{if(!(!A||p)){m(A.id);try{await r.request(`routine.setEnabled`,{id:A.id,enabled:!A.enabled}),a()}catch(e){ae(A.enabled?t.disableFailed:t.enableFailed,A.name,e)}finally{m(null)}}},se=async()=>{if(!(!A||p)){m(A.id),_(vL(t.running,{name:A.name}));try{let e=await r.request(`routine.runNow`,{id:A.id});_(vL(t.ranWith,{name:A.name,status:e.status})),a()}catch(e){ae(t.runFailed,A.name,e)}finally{m(null)}}},ce=async()=>{if(p)return;let e=CL(await r.request(`repos.list`).then(e=>e.repos).catch(()=>[]),s);W.set((0,V.jsx)(dV,{repos:e,tasks:(o?.tasks??[]).filter(e=>!e.deleting).map(e=>({id:e.id,title:e.label,repo:e.repo})),defaultRepo:c,onSubmit:e=>{(async()=>{m(`new`);try{await r.request(`routine.create`,{...e.repo===null?{}:{repo:e.repo},name:e.name,prompt:e.prompt,schedule:e.schedule,...e.target?{targetTask:e.target.taskId,targetTab:e.target.tabId}:{}}),a()}catch(e){G(vL(t.createFailed,{error:bL(e)}),`error`)}finally{m(null)}})()}}))},le=()=>{if(!A||p)return;let e=A;W.set((0,V.jsx)(dr,{title:t.deleteTitle,body:vL(t.deleteBody,{name:e.name}),confirmLabel:t.deleteButton,onConfirm:async()=>{m(e.id);try{await r.request(`routine.delete`,{id:e.id}),a()}catch(n){ae(t.deleteFailed,e.name,n)}finally{m(null)}}}))};OL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return j(Math.min(O.length-1,k+1)),!0;case`k`:case`ArrowUp`:return j(Math.max(0,k-1)),!0;case`n`:return ce(),!0;case`r`:return a(),!0;case`e`:return oe(),!0;case`s`:return se(),!0;case`d`:return le(),!0;case`Enter`:{let e=P[0]?.taskId;return e?R(e):P.length>0&&_(t.latestRunNoTask),!0}default:return!1}});let ue=A?.target,de=A?jB(A.schedule,b):null,fe=e=>e===void 0?z(`rail.noProject`):SL(e,C.flatMap(e=>e.repo??[])),pe=A?.nextRunAt?Date.parse(A.nextRunAt):NaN;return(0,V.jsxs)(`div`,{className:`${yM} ${zB}`,tabIndex:0,ref:y,children:[(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`h1`,{className:xM,children:t.title}),(0,V.jsxs)(`span`,{className:`mono ${wM}`,children:[ee>0&&(0,V.jsx)(`span`,{className:`text-error`,children:vL(t.needAttention,{count:String(ee),total:String(O.length)})}),(0,V.jsx)(`span`,{className:`text-muted`,children:l?.keepsDaemonAlive?t.holdingDaemon:t.notHolding}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.header}`,onClick:()=>void ce(),children:z(`pages.new`)})]})]}),l===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.loading}):O.length===0?(0,V.jsxs)(`div`,{className:EM,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:t.empty}),(0,V.jsx)(`p`,{className:`keys-only`,children:t.emptyHint})]}):(0,V.jsxs)(`div`,{className:BB,children:[(0,V.jsx)(`div`,{className:VB,ref:F,children:D.map(e=>e.rows.length===0?null:(0,V.jsxs)(`section`,{children:[(0,V.jsxs)(`h2`,{className:`${U} ${HB} ${e===D[0]?`text-error`:`text-muted`}`,children:[z(e.key),` `,(0,V.jsx)(`span`,{className:`mono`,children:e.rows.length})]}),e.rows.map(e=>{let n=O.indexOf(e),r=w[e.id],i=r?TV(r):null;return(0,V.jsxs)(`div`,{"data-row":n,className:UB(n===k),onClick:()=>{j(n),te(e=>e+1)},children:[(0,V.jsxs)(`span`,{className:WB,children:[(0,V.jsx)(`span`,{className:GB(!e.enabled),children:e.name}),(0,V.jsx)(`span`,{className:`mono text-muted ${KB}`,children:e.enabled?re(e.nextRunAt):t.paused}),(0,V.jsx)(`span`,{className:`mono ${i?CV[i]:`text-muted`}`,style:{width:`1ch`},children:i?wV[i]:` `})]}),(0,V.jsx)(`span`,{className:`mono text-muted ${qB}`,title:e.schedule,children:`${fe(e.repo)} · ${jB(e.schedule,b)??e.schedule}`}),T[e.id]?(0,V.jsx)(`span`,{className:`mono text-warning ${qB}`,title:T[e.id]?.reason,children:vL(t.lastFailed,{when:re(T[e.id]?.at),reason:T[e.id]?.reason??``})}):null]},e.id)})]},e.key))}),(0,V.jsx)(`div`,{className:JB,ref:S,children:A?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:YB,children:[(0,V.jsx)(`h2`,{className:XB,children:A.name}),(0,V.jsxs)(`span`,{className:`mono ${wM}`,children:[(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.row}`,disabled:p===A.id,onClick:()=>void se(),children:t.runNow}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.row}`,disabled:p===A.id,onClick:()=>void oe(),children:z(A.enabled?`pages.routinePause`:`pages.routineEnable`)}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${TM.row}`,disabled:p===A.id,onClick:le,children:z(`pages.delete`)})]})]}),(0,V.jsxs)(`dl`,{className:ZB,children:[(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineSchedule`)}),(0,V.jsxs)(`dd`,{children:[de??(0,V.jsx)(`span`,{className:`mono`,children:A.schedule}),de&&(0,V.jsx)(`span`,{className:`mono text-muted`,children:` ${A.schedule}`})]}),(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineNext`)}),(0,V.jsx)(`dd`,{className:A.enabled?``:`text-warning`,children:A.enabled?Number.isFinite(pe)?`${re(A.nextRunAt)} · ${new Date(pe).toLocaleString(x,{weekday:`short`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}`:`—`:t.paused}),(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineProject`)}),(0,V.jsx)(`dd`,{children:fe(A.repo)}),!A.script&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineDelivers`)}),(0,V.jsx)(`dd`,{children:ue?vL(t.targetExisting,{task:ie(ue.taskId),tab:ue.tabId}):A.persistentSession?t.targetStanding:t.targetFresh})]})]}),A.precheck&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:vL(t.precheck,{command:A.precheck.command})}),A.script?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`pages.routineScript`)}),(0,V.jsx)(`p`,{className:`mono ${QB}`,children:A.script.command})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`pages.routinePrompt`)}),(0,V.jsx)(`p`,{className:QB,children:A.prompt})]}),(0,V.jsx)(AV,{c:r,tick:i,routines:C,followId:A.id,now:ne,when:re,openRun:R}),(0,V.jsx)(EV,{runs:P,when:re})]}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.noSelection})})]}),h&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:h})]})}var NV=`flex min-w-0 items-baseline gap-2.5 font-mono text-meta whitespace-nowrap`,PV=`${NV} w-full cursor-pointer border-none bg-transparent p-0 text-left text-inherit [font:inherit] [&:hover]:underline`,FV=`w-[5ch] flex-none text-muted`,IV=`w-[16ch] flex-none overflow-hidden text-accent`,LV=`mt-3.5 mb-0.5`,RV=`min-w-0 flex-1 truncate`,zV=`flex-none text-right text-muted`,BV=`${zV} min-w-[5ch]`,VV=`${zV} min-w-[4ch]`,HV=`${zV} min-w-[5ch]`,UV=`w-[8ch] flex-none overflow-hidden text-accent`,WV=`flex flex-wrap gap-x-3 font-mono text-meta text-muted`,GV=`m-0 text-meta text-muted`,KV={turns:0,tokens:0,ms:0},qV=e=>(e.usage?.input_tokens??0)+(e.usage?.output_tokens??0),JV=e=>Math.max(0,e.endedAt-e.startedAt),YV=(e,t)=>({turns:e.turns+1,tokens:e.tokens+qV(t),ms:e.ms+JV(t)});function XV(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`}function ZV(e,t,n,r){let i=[];for(let e=n-1;e>=0;e--){let n=new Date(t);n.setDate(n.getDate()-e),i.push(XV(n.getTime()))}let a=new Map(i.map(e=>[e,{sum:KV,byEngine:{}}]));for(let t of e){let e=a.get(XV(t.startedAt));if(!e)continue;let n=t.vendor??`unknown`;e.sum=YV(e.sum,t),e.byEngine[n]=(e.byEngine[n]??0)+qV(t)}let o=e.reduce((e,t)=>Math.min(e,t.startedAt),1/0),s=e.length>=r&&Number.isFinite(o)?{count:e.length,day:XV(o)}:null;return{cutoff:s,days:i.map(e=>{let t=a.get(e);return{day:e,...t?.sum??KV,byEngine:t?.byEngine??{},partial:s!==null&&e<=s.day}})}}function QV(e){let t=new Map;for(let n of e){let e=n.vendor??`unknown`,r=n.model??`unknown`,i=`${e}\0${r}`;t.set(i,{engine:e,model:r,...YV(t.get(i)??KV,n)})}return[...t.values()].sort((e,t)=>t.tokens-e.tokens||t.turns-e.turns)}function $V(e,t){let n=new Map;for(let t of e)n.set(t.taskId,{taskId:t.taskId,...YV(n.get(t.taskId)??KV,t)});return[...n.values()].sort((e,t)=>t.tokens-e.tokens||t.turns-e.turns).slice(0,t)}function eH(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4)).replace(/\.0$/,``)}k`:`${(e/1e6).toFixed(+(e<1e7)).replace(/\.0$/,``)}M`}var tH=[``,`▏`,`▎`,`▍`,`▌`,`▋`,`▊`,`▉`];function nH(e,t,n){if(e<=0||t<=0)return``;let r=Math.max(1,Math.round(e/t*n*8));return`${`█`.repeat(Math.floor(r/8))}${tH[r%8]}`}var rH=[`█`,`▓`,`▒`,`░`];function iH(e,t,n,r){return n<=0?``:t.map((t,i)=>{let a=e[t]??0,o=a<=0?0:Math.max(1,Math.round(a/n*r));return(rH[i%rH.length]??`█`).repeat(o)}).join(``)}var aH=.1,oH=/^(\d+)\s*(h|d)$/;function sH(e,t){let n=oH.exec(e.label.trim());if(!n||e.resetsAt===null||e.percent<=0)return null;let r=Number(n[1])*(n[2]===`d`?24:1)*36e5,i=r-(e.resetsAt-t);if(!(i>=r*aH)||i>r)return null;if(e.percent>=100)return{kind:`full`,at:t};let a=t+(100-e.percent)/e.percent*i;return a<e.resetsAt?{kind:`full`,at:a}:{kind:`lasts`}}var cH=14,lH=500,uH=3e4,dH=16,fH=8,pH=8;function mH(e,t,n,r){let i=Hs(e,t,n),[a,o]=(0,g.useState)(i?{kind:`ready`,value:i}:{kind:`loading`}),s=JSON.stringify(n);return(0,g.useEffect)(()=>{let r=!0;return Ws(e,t,n).then(e=>r&&o({kind:`ready`,value:e})).catch(e=>r&&o(t=>t.kind===`ready`?t:{kind:`failed`,error:bL(e)})),()=>{r=!1}},[e,t,s,r]),a}var hH=e=>(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`${BV}`,children:eH(e.tokens)}),(0,V.jsx)(`span`,{className:`${VV}`,children:`${e.turns}t`}),(0,V.jsx)(`span`,{className:`${HV}`,children:gV(e.ms)})]});function gH({usage:e,nameOf:t}){let n=Date.now(),r=e.flatMap(e=>e.windows.map(r=>{let i={engine:e.name||t(e.vendor),label:r.label,percent:Math.round(r.percent)},a=sH(r,n);if(a?.kind===`full`){let t=a.at-n<72e6,o=new Date(a.at).toLocaleString([],{...t?{}:{weekday:`short`},hour:`2-digit`,minute:`2-digit`});return{key:`${e.vendor}:${r.kind}`,text:vL(z(`usage.full`),{...i,time:o})}}return{key:`${e.vendor}:${r.kind}`,text:vL(z(a?`usage.lasts`:`usage.window`),i)}}));return r.length===0?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted ${LV}`,children:z(`usage.quota`)}),r.map(e=>(0,V.jsx)(`p`,{className:`mono ${GV}`,children:e.text},e.key))]})}function _H({row:e,title:t,open:n}){let r=(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:RV,children:t}),hH(e)]});return n?(0,V.jsx)(H,{variant:`row`,className:PV,onClick:n,children:r}):(0,V.jsx)(`div`,{className:NV,children:r})}function vH({model:e}){B();let t=kL(),[n]=EL(uH),r=mH(e,`turns.list`,{sinceDays:cH,limit:lH},n),i=mH(e,`engines.list`,{},n),a=mH(e,`usage.get`,{},n),o=v(e.tasks),s=i.kind===`ready`?i.value.engines:[],c=e=>s.find(t=>t.id===e)?.name??e,l=e=>o?.tasks.find(t=>t.id===e)?.label??z(`usage.removedTask`);return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:t,onKeyDown:e=>{e.metaKey||e.ctrlKey||e.altKey||e.key!==`q`&&e.key!==`Escape`||(e.preventDefault(),un.set(null))},children:[(0,V.jsx)(`h1`,{className:xM,children:z(`usage.title`)}),(()=>{if(r.kind===`loading`)return(0,V.jsx)(`p`,{className:`text-muted`,children:z(`usage.loading`)});if(r.kind===`failed`)return(0,V.jsx)(`p`,{className:`text-error`,children:vL(z(`usage.failed`),{error:r.error})});let t=r.value.turns,n=new Set(r.value.readers??[]),i=ZV(t,Date.now(),cH,lH),s=new Map;for(let e of i.days)for(let[t,n]of Object.entries(e.byEngine))s.set(t,(s.get(t)??0)+n);let u=[...s].sort((e,t)=>t[1]-e[1]).map(([e])=>e),d=Math.max(0,...i.days.map(e=>e.tokens)),f=QV(t),p=Math.max(0,...f.map(e=>e.tokens)),m=[...new Set((o?.tasks??[]).flatMap(e=>e.engine?.id&&!n.has(e.engine.id)?[e.engine.id]:[]))];return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:GV,children:vL(z(`usage.range`),{days:cH})}),t.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`usage.empty`)}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted ${LV}`,children:z(`usage.perDay`)}),(0,V.jsx)(`div`,{className:WV,children:u.map((e,t)=>(0,V.jsx)(`span`,{children:`${rH[t%rH.length]} ${c(e)}`},e))}),i.days.map(e=>(0,V.jsxs)(`div`,{className:NV,children:[(0,V.jsx)(`span`,{className:FV,children:`${e.day.slice(5)}${e.partial?`~`:``}`}),(0,V.jsx)(`span`,{className:IV,children:iH(e.byEngine,u,d,dH)}),hH(e)]},e.day)),i.cutoff&&(0,V.jsx)(`p`,{className:`m-0 text-meta text-muted`,children:vL(z(`usage.cutoff`),{count:i.cutoff.count,day:i.cutoff.day.slice(5)})}),(0,V.jsx)(`h2`,{className:`${U} text-muted ${LV}`,children:z(`usage.byModel`)}),f.map(e=>(0,V.jsxs)(`div`,{className:NV,children:[(0,V.jsx)(`span`,{className:RV,title:`${c(e.engine)} · ${e.model}`,children:`${c(e.engine)} · ${e.model}`}),(0,V.jsx)(`span`,{className:UV,children:nH(e.tokens,p,fH)}),hH(e)]},`${e.engine}\0${e.model}`)),(0,V.jsx)(`h2`,{className:`${U} text-muted ${LV}`,children:z(`usage.topTasks`)}),$V(t,pH).map(t=>(0,V.jsx)(_H,{row:t,title:l(t.taskId),open:o?.tasks.some(e=>e.id===t.taskId)?()=>{un.set(null),e.select(t.taskId)}:null},t.taskId))]}),m.length>0&&(0,V.jsx)(`p`,{className:`m-0 text-meta text-muted`,children:vL(z(`usage.noReader`),{engines:m.map(c).join(`, `)})}),a.kind===`ready`&&a.value.usage&&(0,V.jsx)(gH,{usage:a.value.usage,nameOf:c})]})})()]})}var yH={id:`mods`,label:`mods`},bH=[{id:`kanban`,label:`kanban`,mod:`kanban`},{id:`routines`,label:`automations`},{id:`issues`,label:`issues`,mod:`issues`}];function xH({model:e}){let{nav:t}=_L(),n=v(un),r=v(e.mods).length>0,i=v(e.installedMods),a=[...bH.filter(e=>!e.mod||i.has(e.mod)),...r?[yH]:[]];return(0,V.jsxs)(`div`,{className:MM,children:[(0,V.jsxs)(`button`,{type:`button`,className:`rail-nav-row ${FM(!1)}`,onClick:()=>aO(),children:[z(`rail.newTask`),(0,V.jsx)(`span`,{className:IM,"aria-hidden":`true`,children:`+`})]}),a.map(e=>(0,V.jsx)(`button`,{type:`button`,className:`rail-nav-row ${FM(n===e.id)}`,"aria-current":n===e.id?`page`:void 0,onClick:()=>ya(e.id),children:t[e.label]},e.id))]})}function SH({model:e,page:t}){(0,g.useEffect)(()=>e.selection.subscribe(()=>un.set(null)),[e]);let n=v(e.installedMods);return t===`kanban`&&n.has(`kanban`)?(0,V.jsx)(Fz,{model:e}):t===`routines`?(0,V.jsx)(MV,{model:e}):t===`issues`&&n.has(`issues`)?(0,V.jsx)(ER,{model:e}):t===`mods`?(0,V.jsx)(Qz,{model:e}):t===`compare`?(0,V.jsx)(mR,{model:e}):t===`usage`?(0,V.jsx)(vH,{model:e}):null}var CH=p();function wH(e){return e?.match(/^https?:\/\/[^/]+\/([^/]+\/[^/]+)\/(?:pull|merge_requests|-\/merge_requests)\//)?.[1]}var TH=e=>e.charAt(0).toUpperCase()+e.slice(1);function EH(e){return[z(`rail.pr.state.${e.state}`),...e.checks?[z(`rail.pr.checks.${e.checks}`)]:[]].join(`, `)}function DH(e){let t=new Map;for(let n of e){let e=nI(n),r=[...e&&n.pr?[{pr:n.pr,mark:e}]:[],...(n.sessionPrs??[]).flatMap(e=>{let t=rI(e);return t?[{pr:e,mark:t}]:[]})];for(let{pr:e,mark:i}of r){let r=e.url??(e.number===void 0?n.id:`${n.repo}#${e.number}`),a=t.get(r),o=e.lifecycle===`unknown`,s=a?.pr.lifecycle===`unknown`;(!a||s&&!o||o===s&&iI([a.mark,i])!==a.mark)&&t.set(r,{task:n,pr:e,mark:i})}}return[...t.values()]}function OH({tasks:e,onOpen:t}){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(!1),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=(0,g.useRef)(null),l=ts();(0,g.useLayoutEffect)(()=>{let e=c.current;if(!e||!n)return;let t=e.getBoundingClientRect();t.right>window.innerWidth-8&&(e.style.left=`${Math.max(8,window.innerWidth-t.width-8)}px`,e.style.top=`${n.bottom+6}px`);let r=e.getBoundingClientRect().bottom-(window.innerHeight-8);r>0&&(e.style.top=`${Math.max(8,e.getBoundingClientRect().top-r)}px`)},[n]);let u=()=>{t?.(),s.current!==null&&window.clearTimeout(s.current),s.current=null,a(!1),o.current&&!n&&r(o.current.getBoundingClientRect())},d=()=>{a(!0),s.current=window.setTimeout(()=>r(null),140)};(0,g.useEffect)(()=>{if(!l||!n)return;let e=e=>{let t=e.target;o.current?.contains(t)||c.current?.contains(t)||(a(!0),s.current=window.setTimeout(()=>r(null),140))};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[l,n]),(0,g.useEffect)(()=>()=>{s.current!==null&&window.clearTimeout(s.current)},[]);let f=DH(e),p=iI(f.map(e=>e.mark));if(!p)return null;let m=f.length===1?`PR #${f[0]?.pr.number??``}, ${EH(p)}`:z(`rail.pr.many`,{count:f.length});return(0,V.jsxs)(`span`,{ref:o,className:`chip ${nE} ${p.tone}`,"aria-label":m,onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>{l&&(e.stopPropagation(),n&&!i?d():u())},children:[p.glyph,f.length>1&&(0,V.jsx)(`span`,{className:`font-sans`,children:f.length}),n&&(0,CH.createPortal)((0,V.jsx)(`div`,{ref:c,className:rE(i),style:{top:n.top-6,left:n.right+8},onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),onContextMenu:e=>e.stopPropagation(),children:f.map(({task:e,pr:t,mark:n})=>{let r=wH(t?.url),i=t?.additions!==void 0&&t.deletions!==void 0;return(0,V.jsxs)(`button`,{type:`button`,className:`flex flex-col gap-1 rounded-[calc(var(--radius)-6px)] px-3 py-2 text-left font-sans enabled:hover:bg-hover`,disabled:!t?.url,onClick:()=>t?.url&&window.open(t.url,`_blank`,`noopener`),children:[(0,V.jsx)(`span`,{className:`truncate font-semibold text-ink`,children:t.title||e.label}),(0,V.jsxs)(`span`,{className:`flex items-baseline gap-0 text-meta leading-[inherit] whitespace-nowrap`,children:[(0,V.jsxs)(`span`,{className:`inline-flex items-baseline gap-1.25 ${n.tone}`,children:[(0,V.jsx)(`span`,{className:`font-mono`,children:n.glyph}),TH(z(`rail.pr.state.${n.state}`))]}),(0,V.jsx)(`span`,{className:`overflow-hidden text-ellipsis whitespace-pre text-muted`,children:[...n.checks?[z(`rail.pr.checks.${n.checks}`)]:[],[r,t?.number===void 0?``:`#${t.number}`].filter(Boolean).join(` `)].filter(Boolean).map(e=>`, ${e}`).join(``)}),i&&(0,V.jsxs)(`span`,{className:`ml-auto flex gap-1.5 pl-3 tabular-nums`,children:[(0,V.jsxs)(`span`,{className:`text-success`,children:[`+`,t.additions]}),(0,V.jsxs)(`span`,{className:`text-error`,children:[`−`,t.deletions]})]})]})]},t.url??`${e.id}#${t.number??``}`)})}),document.body)]})}var kH=`~archived`;function AH(e,t,n,r){let i=t.filter(e=>!e.routine);if(i.length===0)return e;let a={id:kH,kind:`archived`,count:i.length,expanded:n};if(!n)return[...e,a];let o=Sw([{repo:``,label:``,key:kH,tasks:i}],``,r,1,!1);return[...e,a,...o.filter(e=>e.kind!==`project`)]}function jH(e,t,n){let r=t.kind===`main`,i=e=>r?e.kind===`main`:e.kind!==`main`&&e.repo===t.repo&&!e.pinned==!t.pinned;if(t.id===n.id||!i(n))return null;let a=e.filter(i).sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)).map(e=>e.id);return a.indexOf(n.id)-a.indexOf(t.id)}function MH(e,t,n,r){let i=jH(e,t,n);return i===null?null:r===`above`&&i>0?i-1:r===`below`&&i<0?i+1:i}function NH(e,t){return e.id===t.id?!1:e.kind===`main`?t.kind===`main`:t.kind!==`main`&&t.repo===e.repo}function PH(e,t,n,r,i){if(!NH(t,n))return null;if(t.kind===`main`){let i=MH(e,t,n,r);return i?{steps:i}:null}let a=n.pinned===!0||i&&r===`above`,o={...t,pinned:a},s=a===(n.pinned===!0)?MH(e.map(e=>e.id===t.id?o:e),o,n,r)??0:0,c=a===(t.pinned===!0)?{}:{pin:a};return`pin`in c||s!==0?{...c,steps:s}:null}var FH=e=>e===void 0||e.kind===`project`||e.kind===`state`?0:e.kind===`task`||e.kind===`pane`||e.kind===`round`?e.depth:1;function IH(e,t){let n=FH(e[t]),r=t+1;for(;r<e.length&&FH(e[r])>n;)r++;return r}function LH(e,t,n){let r=e.findIndex(e=>e.id===t),i=r<0?e:[...e.slice(0,r),...e.slice(IH(e,r))];for(let e=i.findIndex(e=>e.id===n)-1;e>=0;e--){let t=i[e];if(!t||t.kind===`project`||t.kind===`state`)return!0;if(t.kind===`task`&&t.depth===1&&t.task.kind!==`main`||t.kind===`round`&&t.depth===1)return!1}return!1}function RH(e,t){let n=FH(e[t]),r=[];for(let i=2;i<=n;i++){let a=t+1;for(;a<e.length&&FH(e[a])>i;)a++;let o=a<e.length&&FH(e[a])===i;r.push(i===n?o?`tee`:`elbow`:o?`pipe`:`blank`)}return r}function zH(e,t,n,r){let i=e.findIndex(e=>e.id===t);if(i<0||t===n)return e;let a=IH(e,i),o=e.slice(i,a),s=[...e.slice(0,i),...e.slice(a)],c=s.findIndex(e=>e.id===n);if(c<0)return e;let l=r===`above`?c:IH(s,c);return[...s.slice(0,l),...o,...s.slice(l)]}function BH(e,t,n,r,i){let[a,o]=(0,g.useState)(null),s=(0,g.useRef)(t);s.current=t;let[c,l]=(0,g.useState)(null),u=(0,g.useRef)(()=>o(null));(0,g.useEffect)(()=>{if(!c)return;let e=()=>{l(null),u.current()};if(t!==c)return e();let n=window.setTimeout(e,3e3);return()=>window.clearTimeout(n)},[t,c]);let d=(0,g.useRef)(null),f=(0,g.useRef)(null),p=()=>[...d.current?.querySelectorAll(`[data-row]`)??[]];(0,g.useLayoutEffect)(()=>{let e=f.current;if(!e||(f.current=null,window.matchMedia(`(prefers-reduced-motion: reduce)`).matches))return;let t=p().flatMap(t=>{let n=e.get(t.dataset.row??``),r=n===void 0?0:n-t.getBoundingClientRect().top;return r?[{el:t,dy:r}]:[]});for(let{el:e,dy:n}of t)e.style.transition=`none`,e.style.transform=`translateY(${n}px)`;d.current?.getBoundingClientRect();for(let{el:e}of t)e.style.transition=`transform 150ms ease-out`,e.style.transform=``,e.addEventListener(`transitionend`,()=>e.style.removeProperty(`transition`),{once:!0})});let m=(0,g.useRef)(null),h=(0,g.useRef)([]),_=(0,g.useRef)(new Map),v=(0,g.useRef)(0),y=(0,g.useRef)(0),b=e=>{m.current=e,o(e)},x=e=>!n||e.machine!==void 0?null:e.kind===`project`?t.find(t=>t.id===i(e.repo).mainTaskId)??null:e.kind===`task`&&e.depth===1&&e.task.kind!==`main`?e.task:null,S=e=>{let t=x(e);if(t)return{draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,t.id),d.current=n.currentTarget.closest(`[data-rail-body]`),T(d.current);let r=h.current,i=r.findIndex(t=>t.id===e.id);v.current=r.slice(i,IH(r,i)).reduce((e,t,n)=>e+(_.current.get(t.id)?.height??0)+(n>0?_.current.get(t.id)?.gap??0:0),0),y.current=n.clientY,b({fromRow:e.id,from:t,toRow:e.id,to:t,side:`above`})},onDragEnd:()=>m.current&&b(null)}},C=(e,t,n)=>{let r=t;if(n.from.kind===`main`)for(;r>0&&e[r]?.kind!==`project`;)r--;let i=e[r],a=i&&x(i);return!i||!a||!NH(n.from,a)?null:{row:i.id,task:a}},w={onDragOver:e=>{let t=m.current;if(!t)return;e.preventDefault();let n=e.clientY-y.current;y.current=e.clientY;let r=e.target.closest(`[data-row]`)?.dataset.row,i=h.current,a=C(i,i.findIndex(e=>e.id===r),t);if(!a||a.row===t.fromRow)return;let o=e.currentTarget.querySelector(`[data-row="${CSS.escape(t.fromRow)}"]`)?.getBoundingClientRect().top;if(o===void 0||e.clientY>=o&&e.clientY<o+v.current)return;let s=e.clientY<o?`above`:`below`;(s===`above`?n>=0:n<=0)||(t.toRow!==a.row||t.side!==s)&&b({...t,toRow:a.row,to:a.task,side:s})},onDrop:n=>{let i=m.current;if(!i)return;n.preventDefault();let a=PH(t,i.from,i.to,i.side,LH(h.current,i.fromRow,i.toRow));m.current=null,r?u.current=()=>o(null):u.current=()=>{f.current=new Map(p().map(e=>[e.dataset.row??``,e.getBoundingClientRect().top])),o(null),UT(`default`),G(q(`tasks`,`sort.label`,{mode:q(`tasks`,`sort.modes.default`)}))},a?XT(e,i.from.id,a).finally(()=>l(s.current)):u.current()}},T=e=>{let t=[...e?.querySelectorAll(`[data-row]`)??[]];_.current=new Map(t.map((e,n)=>{let r=t[n-1],i=r?e.offsetTop-r.offsetTop-r.offsetHeight:0;return[e.dataset.row??``,{top:e.offsetTop,gap:i,height:e.offsetHeight}]}))},E=e=>{h.current=a?zH(e,a.fromRow,a.toRow,a.side):e;let t=new Map;if(!a)return t;let n=Math.min(...[..._.current.values()].map(e=>e.top));for(let[e,r]of h.current.entries()){let i=_.current.get(r.id);if(!i)return new Map;e>0&&(n+=i.gap),n!==i.top&&t.set(r.id,n-i.top),n+=i.height}return t};return{props:S,body:w,dragging:a?.fromRow??null,places:e=>{let t=E(e);return e=>{let n=t.get(e.id);return n?{"data-row":e.id,style:{transform:`translateY(${n}px)`}}:{"data-row":e.id}}}}}function VH({model:e,narrow:t,onSettings:n}){B();let r=v(NN),i=$(`engines.skill.bannerHintWeb`,{engines:r.join(`, `)});return(0,V.jsxs)(`div`,{className:NM,children:[!t&&(0,V.jsx)(BP,{client:e.client}),(0,V.jsxs)(`div`,{className:PM,children:[(0,V.jsxs)(`button`,{type:`button`,className:`rail-nav-row ${FM(!1)}`,onClick:n,children:[(0,V.jsxs)(`svg`,{className:LM,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,V.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,V.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]}),(0,V.jsx)(`span`,{children:z(`rail.settings`)}),r.length>0&&(0,V.jsx)(`span`,{className:`ml-2 min-w-0 truncate text-meta text-subtle`,title:i,children:z(`rail.skillCue`)})]}),(0,V.jsx)(AF,{model:e,bindingId:`settings.open`})]})]})}function HH(e,t,n,r,i=null){let a=e=>e.kind===`task`&&e.task.kind===`main`&&e.fold===void 0&&e.task.id!==n&&e.task.id!==i&&(r?t[e.task.id]?.length===0:(t[e.task.id]?.length??0)===0),o=e.filter(e=>!a(e));return o.filter((e,t)=>{if(e.kind!==`project`&&e.kind!==`state`)return!0;let n=o[t+1];return n!==void 0&&n.kind!==`project`&&n.kind!==`state`})}var UH=_({});function WH(e,t,n){let r=UH.get()[`${e}::${t.id}`];return r&&r.sig===Pw(n)&&Dw(n.root).some(e=>e.id===r.leaf)?r.leaf:n.activeLeafId}function GH(e,t,n,r){UH.set({...UH.get(),[`${e}::${t}`]:{sig:Pw(n),leaf:r}})}function KH(e,t,n,r){GH(e,t.id,n,r),ca(DC(e,t.id,r))?.focus()}function qH(e){let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return t&&r?{taskId:t,tab:r}:null}async function JH(e,t,n){try{let r=await e.client.request(`tab.split`,t);await e.refreshTabsNow(),n?.(r)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}}function YH(e,t,n,r,i){let a=i??(n.split?WH(t,n,n.split):`leaf-1`),o=e.selection.get();(o.taskId!==t||o.tabId!==n.id)&&e.select(t,n.id);let s=ca(DC(t,n.id,a))?.size();JH(e,{taskId:t,tabId:n.id,action:`open`,direction:r,leafId:a,...s},e=>{e.changed?e.split&&GH(t,n.id,e.split,e.leaf):G(z(`layout.splitTooSmall`),`error`)})}function XH(e,t,n,r){let i=n.split,a=i?WH(t,n,i):r,o=()=>JH(e,{taskId:t,tabId:n.id,action:`close`,leafId:r},e=>{let i=e.split;if(!i)return;let o=a!==r&&Dw(i.root).some(e=>e.id===a);GH(t,n.id,i,o?a:i.activeLeafId)});if(!i||!Mw(n,i,r)){o();return}W.set((0,V.jsx)(dr,{title:z(`confirm.closePaneTitle`,{pane:jw(i,Tw(n)).get(r)??r}),body:z(`confirm.closePaneBody`),confirmLabel:z(`menu.closePane`),onConfirm:o}))}function ZH(e,t,n,r){let i=n.split;i&&W.set((0,V.jsx)(ur,{title:wo(`split.renameTitle`),initial:jw(i,Tw(n)).get(r)??``,allowEmpty:!0,submitLabel:z(`dialog.save`),onSubmit:i=>JH(e,{taskId:t,tabId:n.id,action:`rename`,leafId:r,title:i})}))}function QH(e,t,n,r){return[{label:z(`menu.renamePane`),section:`split`,key:io(`workspace.split.rename`)??void 0,run:()=>ZH(e,t,n,r)},{label:z(`menu.closePane`),section:`split`,key:ai(`workspace.split.close`)||void 0,run:()=>XH(e,t,n,r)}]}function $H(e,t,n,r){return[{label:z(`menu.splitRight`),section:`split`,key:io(`workspace.split.right`)??void 0,run:()=>YH(e,t,n,`right`,r)},{label:z(`menu.splitDown`),section:`split`,key:io(`workspace.split.down`)??void 0,run:()=>YH(e,t,n,`down`,r)}]}function eU(e,t,n,r){let i=n.split,a=r??(i?WH(t,n,i):`leaf-1`);return[...$H(e,t,n,a),...Ow(i)?QH(e,t,n,a):[]]}function tU(e,t){let n=e.tabs.get()[t]??[],r=e.selection.get(),i=(r.taskId===t?n.find(e=>e.id===r.tabId):void 0)??Vi(n);return!i||!Nw(i)?[]:$H(e,t,i,i.split?WH(t,i,i.split):`leaf-1`)}function nU(e,{task:t,tab:n,leaf:r}){n.split&&KH(t.id,n,n.split,r),e.select(t.id,n.id)}function rU(e){let{row:t}=e,n=v(e.model.selection);v(UH);let r=n.taskId===t.task.id&&n.tabId===t.tab.id&&!!t.tab.split&&WH(t.task.id,t.tab,t.tab.split)===t.leaf;return(0,V.jsxs)(`button`,{type:`button`,className:`${nr({size:`pane`})} ${e.cursor?hE:``}`,"aria-current":r||void 0,onClick:e.onClick,onContextMenu:e.onMenu,...e.place,children:[(0,V.jsx)(`span`,{className:ZT,"aria-hidden":`true`,children:e.guides?.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${rr} text-(length:--fs-meta) ${r?`text-ink`:`text-muted`}`,children:t.label})]})}function iU(e,t){let n=t?.trim()??``;return n&&e?.effortLevels?.includes(n)?n:``}function aU({model:e,taskId:t}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)({}),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)(!1),{busy:m,error:h,submit:_}=lr();(0,g.useEffect)(()=>{Promise.all([e.client.request(`engines.list`),e.client.request(`task.get`,{taskId:t})]).then(([e,t])=>{let n=Cs(e.engines,t.task.engine).filter(e=>e.ready!==!1||e.id===t.task.engine),i=n.find(e=>e.id===t.task.engine)??n[0];r(n),a(t.task),s(i?.id??``),l(iU(i,t.task.effort)),d(i?.id===t.task.engine?t.task.model??``:``),p(!0)})},[e,t]);let v=n.find(e=>e.id===o),y=v?.effortLevels??[],b=y.length>0?[``,...y]:[],x=(v?.models??[]).map(e=>e.id).filter(e=>e.toLowerCase().includes(u.trim().toLowerCase())&&e!==u.trim()).slice(0,6),S=e=>{s(e);let t=n.find(t=>t.id===e);l(iU(t,e===i.engine?i.effort:void 0)),d(e===i.engine?i.model??``:``)},C=e=>{let t=n.findIndex(e=>e.id===o),r=n[Math.max(0,Math.min(n.length-1,t+e))];r&&S(r.id)},w=e=>{if(b.length===0)return;let t=Math.max(0,b.indexOf(c));l(b[Math.max(0,Math.min(b.length-1,t+e))]??``)},T=e=>{let t=e.target instanceof HTMLInputElement;if(e.key===`ArrowUp`&&!t)C(-1);else if(e.key===`ArrowDown`&&!t)C(1);else if((e.key===`ArrowLeft`||e.key===`h`)&&!t)w(-1);else if((e.key===`ArrowRight`||e.key===`l`)&&!t)w(1);else return;e.preventDefault()},E=()=>_(async()=>{if(!v)return;let n=y.length>0?c:void 0,r=v.acceptsModel?u.trim():void 0;(v.id!==i.engine||n!==void 0&&n!==(i.effort??``)||r!==void 0&&r!==(i.model??``))&&(await e.client.request(`task.setEngine`,{taskId:t,engine:v.id,...n===void 0?{}:{effort:n},...r===void 0?{}:{model:r}}),G(q(`tasks`,`toast.engineSwitched`,{engine:v.name})))});return(0,V.jsx)(cr,{title:q(`tasks`,`changeEngine.title`),wide:!0,children:(0,V.jsxs)(`form`,{className:Rn,onKeyDown:T,onSubmit:e=>{e.preventDefault(),E()},children:[(0,V.jsx)(`ul`,{className:Mn,"aria-label":q(`tasks`,`changeEngine.title`),children:n.map(e=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(`button`,{type:`button`,"aria-pressed":e.id===o,className:nr({selected:e.id===o}),onClick:()=>S(e.id),children:[(0,V.jsx)(`span`,{className:`${or} text-accent`,children:e.id===o?`●`:` `}),(0,V.jsx)(`span`,{className:rr,children:e.name}),e.id===i.engine&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`tasks`,`changeEngine.current`)})]})},e.id))}),f&&v&&v.acceptsModel&&(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`tasks`,`engineModel.label`)}),(0,V.jsx)(`input`,{className:nn,spellCheck:!1,placeholder:q(`tasks`,`engineModel.placeholder`),value:u,onChange:e=>d(e.target.value)}),x.length>0&&(0,V.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:x.map(e=>(0,V.jsx)(`button`,{type:`button`,className:jn(),onClick:()=>d(e),children:e},e))})]}),b.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`tasks`,`changeEngine.effortLabel`)}),(0,V.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:b.map(e=>(0,V.jsx)(`button`,{type:`button`,"aria-pressed":e===c,className:jn(e===c),onClick:()=>l(e),children:e===``?q(`tasks`,`changeEngine.noEffort`):e},e||`default`))})]}),(0,V.jsx)(`p`,{className:`keys-only ${Yt}`,children:(0,V.jsx)(AT,{text:[q(`tasks`,`changeEngine.footer.engine`),...v?.acceptsModel?[q(`tasks`,`changeEngine.footer.model`)]:[],...b.length>0?[q(`tasks`,`changeEngine.footer.effort`)]:[],q(`tasks`,`changeEngine.footer.set`),q(`tasks`,`changeEngine.footer.cancel`)].join(` · `)})}),h&&(0,V.jsx)(`p`,{className:`text-error`,children:h}),(0,V.jsx)(pr,{busy:m||!f,submitLabel:z(`taskops.set`)})]})})}function oU({model:e,task:t}){let[n,r]=(0,g.useState)(()=>Hs(e,`task.get`,{taskId:t.id})?.task??null),[i,a]=(0,g.useState)(null),{busy:o,error:s,submit:c}=lr();(0,g.useEffect)(()=>{Ws(e,`task.get`,{taskId:t.id}).then(e=>r(e.task)).catch(e=>a(K(e)))},[e,t.id]);let l=()=>c(async()=>{if(!n?.prompt)return;let t=(await e.client.request(`task.spawn`,{repo:n.repo,prompt:n.prompt,...n.engine?{engine:n.engine}:{},...n.baseRef?{baseBranch:n.baseRef}:{}})).taskIds[0];t&&e.selectWhenListed(t)});return(0,V.jsx)(cr,{title:q(`tasks`,`runAgain.title`),wide:!0,children:(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),l()},children:[(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`runAgain.source`,{title:t.label})}),(0,V.jsx)(`pre`,{className:Xt,children:n?.prompt??i??q(`tasks`,`fieldNotes.loading`)}),(0,V.jsx)(`p`,{className:Yt,children:q(`tasks`,`runAgain.hint`)}),s&&(0,V.jsx)(`p`,{className:`text-error`,children:s}),(0,V.jsx)(pr,{busy:o||!n?.prompt,submitLabel:q(`tasks`,`runAgain.confirm`)})]})})}function sU(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function cU({model:e,repo:t}){let[n,r]=(0,g.useState)({kind:`loading`}),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),u=(0,g.useRef)(null),d=()=>e.client.request(`notes.list`,{repo:t}).then(e=>r({kind:`ready`,notes:e.notes})).catch(e=>r({kind:`error`,message:K(e)}));(0,g.useEffect)(()=>void d(),[]);let f=n.kind===`ready`?n.notes:[];(0,g.useEffect)(()=>a(e=>Math.max(0,Math.min(e,f.length-1))),[f.length]),(0,g.useEffect)(()=>{u.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[i]);let p=async n=>{if(n.id!==void 0){l(null);try{await e.client.request(`notes.delete`,{repo:t,id:n.id}),s(null),await d()}catch(e){l(K(e))}}};return(0,V.jsx)(cr,{title:q(`tasks`,`fieldNotes.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:Rn,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(f.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`d`&&f[i]?.id!==void 0)s(f[i]??null);else return;e.preventDefault()}},children:[(0,V.jsx)(`p`,{className:`font-mono text-meta break-all text-muted`,children:t}),n.kind===`loading`&&(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.loading`)}),n.kind===`error`&&(0,V.jsx)(`p`,{className:`text-error`,children:n.message}),n.kind===`ready`&&f.length===0&&(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.empty`)}),f.length>0&&(0,V.jsx)(`ul`,{className:`m-0 list-none p-0 flex max-h-[44vh] flex-col gap-2 overflow-y-auto`,ref:u,children:f.map((e,t)=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(`button`,{type:`button`,className:Zt(t===i),onClick:()=>a(t),autoFocus:t===0,children:[(0,V.jsxs)(`span`,{className:`font-mono text-meta whitespace-pre text-accent`,children:[t===i?`▸ `:` `,sU(e.at),`, `,e.author]}),(0,V.jsx)(`span`,{className:`text-ink whitespace-pre-wrap wrap-anywhere`,children:e.text})]})},`${e.at}:${t}`))}),o&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-paper px-3 py-2.5`,children:[(0,V.jsx)(`p`,{children:(0,V.jsx)(`strong`,{children:q(`tasks`,`fieldNotes.confirmDelete.title`)})}),(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.confirmDelete.body`,{text:o.text})}),c&&(0,V.jsx)(`p`,{className:`text-error`,children:c}),(0,V.jsxs)(`div`,{className:`actions flex items-center justify-end gap-3.5`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>s(null),children:z(`dialog.cancel`)}),(0,V.jsx)(`button`,{type:`button`,className:Pe({danger:!0}),onClick:()=>void p(o),children:z(`taskops.retire`)})]})]}),!o&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:`keys-only font-sans text-meta text-subtle`,children:q(`tasks`,`fieldNotes.footerDeletable`)}),(0,V.jsxs)(`div`,{className:`actions flex items-center justify-end gap-3.5`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,disabled:f[i]?.id===void 0,onClick:()=>s(f[i]??null),children:z(`taskops.retire`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:Cn,children:z(`taskops.close`)})]})]})]})})}var lU=[`backlog`,`in_progress`,`in_review`,`done`,`canceled`,`error`],uU={backlog:`status.backlog`,in_progress:`status.inProgress`,in_review:`status.inReview`,done:`status.done`,canceled:`status.canceled`,error:`status.error`},dU=e=>({binding:e,key:io(e)??void 0});async function fU(e,t){if(!e){G(z(`menu.nothingToCopy`,{what:t}),`error`);return}try{await navigator.clipboard.writeText(e),G(z(`menu.copied`,{text:e}))}catch{G(z(`menu.copyFailed`),`error`)}}function pU(e,t,n){let r=[{label:z(`menu.newTask`),section:`open`,run:()=>aO(t)}],i=n.mainTaskId;return i&&(n.first||r.push({label:q(`tasks`,`menu.moveToTop`),section:`edit`,run:()=>void e.client.request(`task.move`,{taskId:i,direction:`top`}).catch(e=>G(q(`tasks`,`toast.moveFailed`,{error:String(e)}),`error`))}),r.push({label:q(`tasks`,`menu.reorderProject`),section:`edit`,...dU(`sidebar.localMerge`),run:()=>hU(i)})),r.push({label:q(`tasks`,`menu.fieldNotes`),section:`notes`,run:()=>W.set((0,V.jsx)(cU,{model:e,repo:t}))}),i&&r.push({label:q(`tasks`,`menu.forgetProject`),section:`danger`,danger:!0,run:()=>W.set(lF(e,t,n.label))}),r}function mU(e){return[{label:z(`menu.newChatNoFolder`),section:`open`,run:()=>oO()},{label:z(`menu.newShell`),section:`open`,run:()=>void HC(e).catch(e=>G(String(e),`error`))}]}function hU(e){let t=!GT.get();t&&e!==void 0&&KT.set(e),qT(t),document.querySelector(`.rail`)?.focus()}function gU(e,t){let n=(e.tasks.get()?.tasks??[]).filter(e=>e.kind===`main`&&!e.machine&&e.repo!==t.repo).map(e=>e.repo),r=n.map(e=>{let t=e.slice(e.lastIndexOf(`/`)+1);return{value:e,label:n.filter(e=>e.endsWith(`/${t}`)).length>1?e:t}});return r.length===0?(G(q(`tasks`,`moveToProject.empty`),`error`),null):(0,V.jsx)(fr,{title:q(`tasks`,`moveToProject.title`),choices:r,onPick:async n=>{await e.client.request(`task.moveToProject`,{taskId:t.id,repo:n}),G(q(`tasks`,`toast.movedToProject`,{project:r.find(e=>e.value===n)?.label??n}))}})}function _U(e,t,n){let r=e.client,i=[];n&&(i.push({label:z(`menu.closeTab`),section:`tab`,run:()=>W.set((0,V.jsx)(dr,{title:z(`confirm.closeTabTitle`,{tab:n.title??n.engineName??n.id}),body:z(`confirm.closeTabBody`),confirmLabel:z(`menu.closeTab`),onConfirm:async()=>{await r.request(`tab.close`,{taskId:t.id,tabId:n.id}),await e.refreshTabsNow()}}))}),i.push(...eU(e,t.id,n))),i.push({label:z(`menu.newChat`),section:`open`,run:()=>void BC(e,t.id)}),i.push({label:z(`menu.newChatPick`),section:`open`,run:()=>W.set((0,V.jsx)(KC,{model:e,taskId:t.id}))}),i.push({label:z(`menu.continueEngine`),section:`open`,...dU(`chat.tab.fork`),run:()=>W.set((0,V.jsx)(KC,{model:e,taskId:t.id,context:`continue`,sourceTabId:n?.id}))}),i.push({label:z(`menu.newShell`),section:`open`,run:()=>void VC(e,t.id,{kind:`shell`}).catch(e=>G(String(e),`error`))}),t.startsAt&&(i.push({label:z(`menu.startNow`),section:`open`,run:()=>void e.client.request(`task.startScheduledNow`,{taskId:t.id}).catch(e=>G(String(e),`error`))}),i.push({label:z(`menu.cancelStart`),section:`open`,run:()=>void e.client.request(`task.cancelScheduledStart`,{taskId:t.id}).catch(e=>G(String(e),`error`))})),t.hasPrompt&&(i.push({label:q(`tasks`,`menu.runAgain`),section:`open`,run:()=>W.set((0,V.jsx)(oU,{model:e,task:t}))}),i.push({label:z(`menu.retryEdit`),section:`open`,run:()=>void GD(e,t)}));let a=!t.machine;if(a&&i.push({label:q(`tasks`,`menu.openEditor`),section:`open`,...dU(`tasks.openWorktree`),run:()=>void iF(e,t.id)}),t.groupId){let e=t.groupId;i.push({label:z(`compare.menu`),section:`open`,run:()=>ba(e)})}i.push({label:z(`menu.rename`),section:`edit`,...dU(`sidebar.rename`),run:()=>W.set((0,V.jsx)(ur,{title:z(`menu.rename`),initial:t.title,submitLabel:z(`dialog.save`),onSubmit:e=>r.request(`task.rename`,{taskId:t.id,title:e}).then(()=>{})}))}),t.kind!==`main`&&i.push({label:t.pinned?z(`menu.unpin`):z(`menu.pin`),section:`edit`,...dU(`sidebar.pin`),run:()=>void r.request(`task.pin`,{taskId:t.id,pinned:!t.pinned}).catch(e=>G(String(e),`error`))}),a&&i.push({label:q(`tasks`,`menu.reorder`),section:`edit`,...dU(`sidebar.localMerge`),run:()=>hU()}),i.push({label:z(`menu.setStatus`),section:`edit`,children:lU.map(e=>({label:z(uU[e]),checked:e===t.status,run:()=>void r.request(`task.setStatus`,{taskId:t.id,status:e}).catch(e=>G(String(e),`error`))}))}),a&&t.kind!==`main`&&!t.routine&&!t.parentTaskId&&!t.extraRepoCount&&i.push({label:q(`tasks`,`menu.moveToProject`),section:`edit`,run:()=>{let n=gU(e,t);n&&W.set(n)}}),a&&i.push({label:z(`menu.changeEngine`),section:`edit`,...dU(`tasks.cycleEngine`),run:()=>W.set((0,V.jsx)(aU,{model:e,taskId:t.id}))}),t.pr?.checkState===`failing`&&i.push({label:q(`tasks`,`menu.fixChecks`),section:`git`,key:ai(`files.fixChecks`),run:()=>void rF(e,t.id,z(`taskops.fixSent`))}),t.kind===`task`&&t.branch&&a&&i.push({label:q(`tasks`,`menu.syncBase`),section:`git`,key:ai(`files.syncBase`),run:()=>void tF(e,t.id)}),t.branch&&i.push({label:z(`menu.renameBranch`),section:`git`,...dU(`tasks.renameBranch`),run:()=>W.set((0,V.jsx)(ur,{title:z(`menu.renameBranch`),initial:t.branch,submitLabel:z(`dialog.save`),onSubmit:e=>r.request(`task.setBranch`,{taskId:t.id,branch:e}).then(()=>{})}))}),t.kind===`task`&&t.branch&&i.push({label:z(`menu.land`),section:`git`,run:()=>void $P(e,t)});let o=[{label:z(`menu.copyWhat.id`),run:()=>void fU(t.id,z(`menu.what.id`))}];return t.branch&&o.push({label:z(`menu.copyWhat.branch`),run:()=>void fU(t.branch,z(`menu.what.branch`))}),o.push({label:z(`menu.copyWhat.path`),run:()=>void r.request(`task.get`,{taskId:t.id}).then(e=>fU(e.task.worktreePath,z(`menu.what.path`))).catch(e=>G(String(e),`error`))}),i.push({label:z(`menu.copy`),section:`copy`,children:o}),t.kind!==`main`&&i.push({label:q(`tasks`,t.archived?`menu.unarchive`:`menu.archive`),section:`danger`,run:()=>void cF(e,t)}),i.push({label:z(`menu.removeSession`),section:`danger`,...dU(`sidebar.delete`),danger:!0,run:()=>W.set(t.kind===`main`?sF(e,t):oF(e,t))}),i}var vU=`rove.collapsedProjects`,yU=`rove.foldedTasks`,bU=`rove.openedTasks`,xU=600;function SU(e){try{let t=JSON.parse(localStorage.getItem(e)??`[]`);return new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}catch{return new Set}}function CU(e,t){try{localStorage.setItem(e,JSON.stringify([...t]))}catch{}}var wU=(e,t)=>{let n=new Set(e);return n.delete(t)||n.add(t),n};function TU(){let e=v(HT),[t,n]=(0,g.useState)({active:!1,query:``}),[r,i]=(0,g.useState)(!1),a=()=>i(e=>!e),[o,s]=(0,g.useState)(()=>SU(vU)),c=e=>s(t=>{let n=wU(t,e);return CU(vU,n),n}),[l,u]=(0,g.useState)(()=>({folded:SU(yU),opened:SU(bU)}));return{sort:e,cycleSort:WT,search:t,setSearch:n,archivedOpen:r,toggleArchived:a,collapsed:o,toggleProject:c,hand:l,toggleTaskFold:(e,t)=>u(n=>{let r=new Set(n.folded),i=new Set(n.opened);return t?(r.delete(e),i.add(e)):(i.delete(e),r.add(e)),CU(yU,r),CU(bU,i),{folded:r,opened:i}})}}var EU=[`sidebar.nav`,`sidebar.goto`,`sidebar.select`,`sidebar.tree.open`,`sidebar.rename`,`sidebar.pin`,`sidebar.localMerge`,`sidebar.delete`,`sidebar.sort`,`sidebar.search.enter`,`tasks.renameBranch`,`tasks.cycleEngine`,`tasks.openWorktree`,`tasks.update`,`tasks.focusEngine`,`task.new`,`settings.open.sidebar`,`worktrees.open.sidebar`];function DU(e){for(let t of e)for(let e of EU){let n=ii(e).indexOf(t);if(n>=0)return{id:e,slot:n}}return null}function OU(e,t){let n=e.selection.get().taskId===t;e.select(t),_a(),n&&Ji()}function kU(e,t,n,r){let{search:i,setSearch:a}=n,[o,s]=(0,g.useState)(null),c=(0,g.useRef)(0),l=t.filter(e=>e.kind!==`project`&&e.kind!==`state`),u=l.findIndex(e=>e.id===o);(0,g.useEffect)(()=>{u<0&&s(r.selectedId&&l.some(e=>e.id===r.selectedId)?r.selectedId:l[0]?.id??null)},[u,l,r.selectedId]);let d=l[u],f=d?.kind===`task`||d?.kind===`pane`?d.task.id:null;(0,g.useEffect)(()=>fA.set(f),[f]);let p=l[0]?.id??null;(0,g.useEffect)(()=>{i.query,i.active&&s(p)},[i.active,i.query,p]);let m=e=>{let t=l[Math.max(0,Math.min(l.length-1,e))];t&&s(t.id)},h=t=>{t?.kind===`archived`&&n.toggleArchived(),t?.kind===`task`&&e.select(t.task.id),t?.kind===`round`&&ba(t.groupId),t?.kind===`pane`&&nU(e,t),t&&t.kind!==`archived`&&_a()},_=(t,n)=>{t?.kind===`task`&&on(_U(e,t.task,null),n)?.run?.()},v=async t=>{if(t?.kind===`task`&&t.machine===void 0)try{let{engines:n}=await e.client.request(`engines.list`),r=Cs(n).filter(e=>e.ready!==!1),i=r[(r.findIndex(e=>e.id===t.task.engine?.id)+1)%r.length];if(!i||i.id===t.task.engine?.id)return;await e.client.request(`task.setCommand`,{taskId:t.task.id,engine:i.id}),G(z(`rail.engineSwitched`,{engine:i.name}))}catch(e){G(z(`rail.engineSwitchFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}};return{cursor:o,setCursor:s,onKeyDown:t=>{let o=l[u],s=t.target instanceof HTMLInputElement;if(i.active){if(t.metaKey||t.ctrlKey||t.altKey)return;if(t.key===`Escape`)a({active:!1,query:``});else if(t.key===`Enter`)h(o),a({active:!1,query:``});else if(t.key===`ArrowDown`)m(u+1);else if(t.key===`ArrowUp`)m(u-1);else if(t.key===`Backspace`&&!s)a(e=>({...e,query:e.query.slice(0,-1)}));else if(t.key.length===1&&!s)a(e=>({...e,query:e.query+t.key}));else return;t.preventDefault();return}let d=DU(Qa(t));if(GT.get()){let n=o?.kind===`task`&&o.machine===void 0;if(d?.id===`sidebar.nav`)n&&JT(e,o,d.slot%2==0?1:-1);else if(d?.id===`sidebar.localMerge`||t.key===`Enter`||t.key===`Escape`)qT(!1);else return;t.preventDefault();return}switch(d?.id){case`sidebar.nav`:m(d.slot%2==0?u+1:u-1);break;case`sidebar.goto`:d.slot%2==1?m(l.length-1):Date.now()-c.current<xU?(m(0),c.current=0):c.current=Date.now();break;case`sidebar.select`:case`sidebar.tree.open`:h(o);break;case`tasks.focusEngine`:Ji();break;case`sidebar.rename`:case`sidebar.pin`:case`sidebar.delete`:case`tasks.renameBranch`:case`tasks.openWorktree`:_(o,d.id);break;case`tasks.cycleEngine`:v(o);break;case`sidebar.localMerge`:o?.machine===void 0&&qT(!0);break;case`sidebar.sort`:n.cycleSort(),G(q(`tasks`,`sort.label`,{mode:q(`tasks`,`sort.modes.${HT.get()}`)}));break;case`sidebar.search.enter`:a({active:!0,query:``});break;case`task.new`:r.onNewTask(o?.kind===`task`||o?.kind===`pane`?o.task.repo:void 0,o?.machine);break;case`settings.open.sidebar`:r.onSettings();break;case`worktrees.open.sidebar`:ya(`worktrees`);break;case`tasks.update`:ya(`update`);break;default:return}t.preventDefault()}}}var AU=(e,t,n)=>`~pane:${e}:${t}:${n}`;function jU(e,t){return e.flatMap(e=>e.kind===`task`?[e,...(t[e.task.id]??[]).flatMap(t=>{let n=t.split;if(!n||!Ow(n))return[];let r=jw(n,Tw(t));return Dw(n.root).map(n=>({id:AU(e.task.id,t.id,n.id),kind:`pane`,task:e.task,tab:t,leaf:n.id,label:r.get(n.id)??n.id,depth:e.depth+1,...e.machine===void 0?{}:{machine:e.machine}}))})]:[e])}function MU(e){let{row:t}=e;return(0,V.jsxs)(`button`,{type:`button`,className:`${nr({size:`pane`})} ${e.cursor?hE:``}`,title:z(`compare.menu`),onClick:()=>{e.onClick(),ba(t.groupId)},...e.place,children:[e.guides&&(0,V.jsx)(`span`,{className:`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${rr} text-(length:--fs-meta) text-muted`,children:t.title}),(0,V.jsxs)(`span`,{className:`${sr} ml-auto items-center`,children:[e.repo&&(0,V.jsx)(`span`,{className:`max-w-24 truncate text-subtle`,children:e.repo}),(0,V.jsx)(`span`,{className:`text-subtle`,children:t.tasks.length}),(0,V.jsx)(sR,{status:eI(t.tasks)})]})]})}function NU(e){let t=(0,g.useRef)(null);return(0,g.useEffect)(()=>{let e=t.current;return()=>{e&&document.activeElement===e&&e.closest(`nav`)?.focus()}},[]),(0,V.jsxs)(`div`,{className:`${cE} mono items-center`,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:`/`}),(0,V.jsx)(`input`,{ref:t,className:pE,type:`text`,autoFocus:!0,spellCheck:!1,autoComplete:`off`,autoCapitalize:`off`,enterKeyHint:`go`,value:e.query,placeholder:z(`rail.searchPlaceholder`),"aria-label":z(`rail.searchPlaceholder`),onChange:t=>e.onChange(t.target.value)}),e.query&&(0,V.jsx)(`span`,{className:`ml-1.5 text-muted`,children:e.count})]})}var PU=450,FU=!1;typeof document<`u`&&(document.addEventListener(`keydown`,()=>{FU=!0},!0),document.addEventListener(`pointerdown`,()=>{FU=!1},!0));var IU=e=>{let t=e.querySelector(`.row-title`);return!!t&&t.scrollWidth>t.clientWidth};function LU(e,t){let[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null),o=()=>{i.current!==null&&window.clearTimeout(i.current),i.current=null},s=e=>{o(),i.current=window.setTimeout(()=>r(e.getBoundingClientRect()),PU)},c=()=>{o(),r(null)};return(0,g.useEffect)(()=>{let e=a.current,n=e?.closest(`.rail`);if(!t||!e||!n||!FU||!n.contains(document.activeElement)||!IU(e))return;let i=()=>{o(),r(null)},c=e=>{e.relatedTarget instanceof Node&&n.contains(e.relatedTarget)||i()};return s(e),n.addEventListener(`focusout`,c),()=>{n.removeEventListener(`focusout`,c),i()}},[t]),(0,g.useEffect)(()=>()=>{i.current!==null&&window.clearTimeout(i.current)},[]),{ref:e=>{a.current=e},onPointerEnter:e=>{e.pointerType===`touch`||!IU(e.currentTarget)||s(e.currentTarget)},onPointerLeave:c,hide:c,tip:n?(0,CH.createPortal)((0,V.jsx)(`div`,{className:iE,role:`tooltip`,style:{top:n.top+n.height/2,left:n.right+8},children:e}),document.body):null}}function RU({at:e}){let t=new Date(e);if(Number.isNaN(t.getTime()))return null;let n=OD(t);return(0,V.jsxs)(`span`,{className:`text-subtle`,title:z(`rail.startsAt`,{time:t.toLocaleString()}),children:[`◷ `,n]})}var zU=150,BU=128,VU=0,HU=2,UU=[{reach:.96,grow:1.5,pulse:.9,done:104},{reach:.72,grow:1.1,pulse:1.2,done:84},{reach:1,grow:1.7,pulse:.7,done:116},{reach:.84,grow:1.3,pulse:1,done:96},{reach:.62,grow:1.2,pulse:1.3,done:80}],WU=`/-\\|`,GU=6,KU=(e,t,n,r)=>{let i=e[n];i&&t>=0&&t<i.length&&(i[t]=r)};function qU(e,t){let n=Math.min(64,Math.max(24,Math.floor(t))),r=(Math.floor(e)%zU+zU)%zU,i=Array.from({length:11},()=>Array(n).fill(` `)),a=Array.from({length:11},()=>Array(n).fill(` `));KU(a,VU,0,`o`);let o=HU+2*(UU.length-1),s=Math.min(o,Math.floor(r/2));for(let e=1;e<=s;e++)KU(i,VU,e,`|`);if(UU.forEach((e,t)=>{let o=HU+2*t,s=2*o;if(r<s)return;KU(i,VU,o,`+`);let c=n-1-1,l=1+Math.max(1,Math.floor(c*e.reach)),u=Math.min(l,1+Math.floor((r-s)*e.grow)),d=r>=e.done&&u===l;for(let t=1;t<u;t++)!d&&((t-Math.floor(r*e.pulse))%GU+GU)%GU===0?KU(a,t,o,`=`):KU(i,t,o,`-`);d?KU(a,u,o,`o`):u<l?KU(a,u,o,`>`):KU(a,u,o,WU[(Math.floor(r/2)+t)%4]??`-`)}),r>=BU){let e=Math.ceil((r-BU+1)/22*(n+1));for(let t of[i,a])for(let r of t)r.fill(` `,0,Math.min(n,e))}return{base:i.map(e=>e.join(``)).join(`
|
|
126
|
+
`)}`},e.label))]})}var uV=30;function dV(e,t,n){let r=t.join(`\0`),[i,a]=(0,g.useState)(()=>Object.fromEntries(t.map(t=>[t,Hs(e,`routine.runs`,{id:t})?.runs??[]])));return(0,g.useEffect)(()=>{let n=!0;for(let r of t)Ws(e,`routine.runs`,{id:r}).then(e=>n&&a(t=>({...t,[r]:e.runs}))).catch(()=>void 0);return()=>{n=!1}},[e,r,n]),i}function fV(e){B();let{auto:t}=$I(),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null);(0,g.useEffect)(()=>r(null),[e.followId]);let o=n===null?e.followId??``:n,s=o===``?e.routines.map(e=>e.id):[o],c=dV(e.c,s,e.tick),l=new Map(e.routines.map(e=>[e.id,e.name])),u=$B(c,o===``?null:o,i),d=e=>{if(e.status===`skipped_blocked`){let t=e.blocked?.reason;return t?eL(z(`runLog.blockedRun`),{reason:z(`runLog.blocked.${t}`)}):z(`runLog.outcome.blocked`)}return t.runStatus[e.status]??e.status},f=(e,t,n,r)=>(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":t,className:`max-w-40 truncate`,onClick:n,children:`[ ${e} ]`},r);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`runLog.title`)}),e.routines.length>1&&(0,V.jsx)(wA,{label:z(`runLog.routine`),value:o,picks:[{value:``,label:z(`runLog.allRoutines`)},...e.routines.map(e=>({value:e.id,label:e.name}))],onPick:r}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1`,children:[f(z(`runLog.all`),i===null,()=>a(null),`all`),JB.map(e=>f(z(`runLog.outcome.${e}`),i===e,()=>a(e),e))]}),u.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:$B(c,o===``?null:o,null).length===0?t.noRuns:z(`runLog.empty`)}):u.slice(0,uV).map(n=>{let r=sV(n.status),i=Iz(n,e.now),a=i===`awaiting`?`, ${t.responseAwaiting}`:i===`missing`?`, ${t.responseMissing}`:``,s=ZB(n),c=(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{children:oV[r]}),(0,V.jsx)(`span`,{children:`#${n.runNumber}`}),o===``&&(0,V.jsx)(`span`,{className:`max-w-[20ch] truncate`,children:l.get(n.automationId)??``}),(0,V.jsx)(`span`,{className:zB,children:`${d(n)}${n.tabId?`, ${n.tabId}`:``}${a}`}),(0,V.jsx)(`span`,{className:`text-subtle`,children:z(`runLog.source.${XB[n.trigger]}`)}),s!==null&&(0,V.jsx)(`span`,{className:`text-muted`,children:QB(s)}),(0,V.jsx)(`span`,{className:`text-muted`,children:e.when(n.at)})]}),u=n.error?nV(n.error):null,f=n.taskId,p=i===`missing`?`text-warning`:aV[r];return(0,V.jsxs)(`div`,{className:`${FB} ${p}`,children:[f?(0,V.jsx)(`button`,{type:`button`,className:`mono ${RB}`,onClick:()=>e.openRun(f),children:c}):(0,V.jsx)(`span`,{className:`mono ${LB}`,children:c}),u&&(0,V.jsxs)(`details`,{className:`mono pl-[calc(2ch+16px)] [&_summary]:cursor-pointer [&_summary]:list-none [&_summary]:truncate [&_summary::-webkit-details-marker]:hidden [&[open]_summary]:whitespace-normal [&_pre]:mx-0 [&_pre]:mt-1 [&_pre]:mb-1.5 [&_pre]:max-h-[16lh] [&_pre]:overflow-auto [&_pre]:rounded-sm [&_pre]:bg-inset [&_pre]:px-2 [&_pre]:py-1.5 [&_pre]:whitespace-pre-wrap [&_pre]:wrap-anywhere [&_pre]:text-muted`,children:[(0,V.jsx)(`summary`,{children:u.summary}),(0,V.jsx)(`pre`,{children:u.full})]})]},n.id)}),u.length>uV&&(0,V.jsx)(`p`,{className:`text-muted`,children:z(`runLog.more`,{count:u.length-uV})})]})}var pV=5e3;function mV({model:e}){let{auto:t,common:n}=$I(),r=e.client,[i,a]=cL(pV),o=v(e.tasks),s=oL(e),c=sL(e),[l,u]=(0,g.useState)(()=>Hs(r,`routine.list`)??null),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null),[h,_]=(0,g.useState)(null),y=dL(),b=tL(),x=B()===`zh`?`zh-CN`:`en-US`,S=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0;return Ws(r,`routine.list`).then(t=>e&&u(t)).catch(()=>e&&u(e=>e??{automations:[],keepsDaemonAlive:!1})),()=>{e=!1}},[r,i]);let C=l?.automations??[],w=l?.lastRunStatus??{},T=l?.lastFailure??{},E=e=>{let t=w[e.id];return t!==void 0&&Fz(t)},D=[{key:`pages.routinesNeedYou`,rows:C.filter(E)},{key:`pages.routinesActive`,rows:C.filter(e=>e.enabled&&!E(e))},{key:`pages.routinesPaused`,rows:C.filter(e=>!e.enabled&&!E(e))}],O=D.flatMap(e=>e.rows),k=Math.max(0,O.findIndex(e=>e.id===d)),A=O[k],j=e=>f(O[e]?.id??null),ee=D[0]?.rows.length??0,M=v(dn);(0,g.useEffect)(()=>{M===null||!l||(l.automations.some(e=>e.id===M)&&f(M),dn.set(null))},[M,l]);let N=dV(r,A?[A.id]:[],i),P=A?N[A.id]??[]:[];(0,g.useEffect)(()=>_(null),[A?.id]);let F=(0,g.useRef)(null),[I,te]=(0,g.useState)(0),L=(0,g.useRef)(0);(0,g.useEffect)(()=>{let e=S.current,t=I!==L.current;if(L.current=I,t&&e&&F.current&&e.offsetTop>F.current.offsetTop){e.scrollIntoView({block:`start`,behavior:`smooth`});return}F.current?.querySelector(`[data-row="${k}"]`)?.scrollIntoView({block:`nearest`})},[k,I]);let ne=Date.now(),re=e=>{let n=e?Date.parse(e):NaN;if(!Number.isFinite(n))return`—`;let r=n-ne,i=r>=0,a=Math.floor(Math.abs(r)/6e4),o=Math.floor(a/60);return a<1?i?t.when.now:t.when.justNow:a<60?eL(i?t.when.inMinutes:t.when.minutesAgo,{n:a}):o<24?eL(i?t.when.inHours:t.when.hoursAgo,{n:o}):new Date(n).toLocaleDateString()},ie=e=>o?.tasks.find(t=>t.id===e)?.label??e,R=t=>{un.set(null),e.select(t)},ae=(e,t,n)=>G(eL(e,{name:t,error:nL(n)}),`error`),oe=async()=>{if(!(!A||p)){m(A.id);try{await r.request(`routine.setEnabled`,{id:A.id,enabled:!A.enabled}),a()}catch(e){ae(A.enabled?t.disableFailed:t.enableFailed,A.name,e)}finally{m(null)}}},se=async()=>{if(!(!A||p)){m(A.id),_(eL(t.running,{name:A.name}));try{let e=await r.request(`routine.runNow`,{id:A.id});_(eL(t.ranWith,{name:A.name,status:e.status})),a()}catch(e){ae(t.runFailed,A.name,e)}finally{m(null)}}},ce=async()=>{if(p)return;let e=aL(await r.request(`repos.list`).then(e=>e.repos).catch(()=>[]),s);W.set((0,V.jsx)(qB,{repos:e,tasks:(o?.tasks??[]).filter(e=>!e.deleting).map(e=>({id:e.id,title:e.label,repo:e.repo})),defaultRepo:c,onSubmit:e=>{(async()=>{m(`new`);try{await r.request(`routine.create`,{...e.repo===null?{}:{repo:e.repo},name:e.name,prompt:e.prompt,schedule:e.schedule,...e.target?{targetTask:e.target.taskId,targetTab:e.target.tabId}:{}}),a()}catch(e){G(eL(t.createFailed,{error:nL(e)}),`error`)}finally{m(null)}})()}}))},le=()=>{if(!A||p)return;let e=A;W.set((0,V.jsx)(dr,{title:t.deleteTitle,body:eL(t.deleteBody,{name:e.name}),confirmLabel:t.deleteButton,onConfirm:async()=>{m(e.id);try{await r.request(`routine.delete`,{id:e.id}),a()}catch(n){ae(t.deleteFailed,e.name,n)}finally{m(null)}}}))};uL(e=>{if(e.ctrlKey)return e.key===`c`&&(un.set(null),!0);switch(e.key){case`Escape`:case`q`:return un.set(null),!0;case`j`:case`ArrowDown`:return j(Math.min(O.length-1,k+1)),!0;case`k`:case`ArrowUp`:return j(Math.max(0,k-1)),!0;case`n`:return ce(),!0;case`r`:return a(),!0;case`e`:return oe(),!0;case`s`:return se(),!0;case`d`:return le(),!0;case`Enter`:{let e=P[0]?.taskId;return e?R(e):P.length>0&&_(t.latestRunNoTask),!0}default:return!1}});let ue=A?.target,de=A?pB(A.schedule,b):null,fe=e=>e===void 0?z(`rail.noProject`):iL(e,C.flatMap(e=>e.repo??[])),pe=A?.nextRunAt?Date.parse(A.nextRunAt):NaN;return(0,V.jsxs)(`div`,{className:`${hM} ${xB}`,tabIndex:0,ref:y,children:[(0,V.jsxs)(`div`,{className:vM,children:[(0,V.jsx)(`h1`,{className:_M,children:t.title}),(0,V.jsxs)(`span`,{className:`mono ${bM}`,children:[ee>0&&(0,V.jsx)(`span`,{className:`text-error`,children:eL(t.needAttention,{count:String(ee),total:String(O.length)})}),(0,V.jsx)(`span`,{className:`text-muted`,children:l?.keepsDaemonAlive?t.holdingDaemon:t.notHolding}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.header}`,onClick:()=>void ce(),children:z(`pages.new`)})]})]}),l===null?(0,V.jsx)(`p`,{className:`text-muted`,children:n.loading}):O.length===0?(0,V.jsxs)(`div`,{className:SM,children:[(0,V.jsx)(`p`,{className:`text-muted`,children:t.empty}),(0,V.jsx)(`p`,{className:`keys-only`,children:t.emptyHint})]}):(0,V.jsxs)(`div`,{className:SB,children:[(0,V.jsx)(`div`,{className:CB,ref:F,children:D.map(e=>e.rows.length===0?null:(0,V.jsxs)(`section`,{children:[(0,V.jsxs)(`h2`,{className:`${U} ${wB} ${e===D[0]?`text-error`:`text-muted`}`,children:[z(e.key),` `,(0,V.jsx)(`span`,{className:`mono`,children:e.rows.length})]}),e.rows.map(e=>{let n=O.indexOf(e),r=w[e.id],i=r?sV(r):null;return(0,V.jsxs)(`div`,{"data-row":n,className:TB(n===k),onClick:()=>{j(n),te(e=>e+1)},children:[(0,V.jsxs)(`span`,{className:EB,children:[(0,V.jsx)(`span`,{className:DB(!e.enabled),children:e.name}),(0,V.jsx)(`span`,{className:`mono text-muted ${OB}`,children:e.enabled?re(e.nextRunAt):t.paused}),(0,V.jsx)(`span`,{className:`mono ${i?aV[i]:`text-muted`}`,style:{width:`1ch`},children:i?oV[i]:` `})]}),(0,V.jsx)(`span`,{className:`mono text-muted ${kB}`,title:e.schedule,children:`${fe(e.repo)} · ${pB(e.schedule,b)??e.schedule}`}),T[e.id]?(0,V.jsx)(`span`,{className:`mono text-warning ${kB}`,title:T[e.id]?.reason,children:eL(t.lastFailed,{when:re(T[e.id]?.at),reason:T[e.id]?.reason??``})}):null]},e.id)})]},e.key))}),(0,V.jsx)(`div`,{className:AB,ref:S,children:A?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:jB,children:[(0,V.jsx)(`h2`,{className:MB,children:A.name}),(0,V.jsxs)(`span`,{className:`mono ${bM}`,children:[(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.row}`,disabled:p===A.id,onClick:()=>void se(),children:t.runNow}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.row}`,disabled:p===A.id,onClick:()=>void oe(),children:z(A.enabled?`pages.routinePause`:`pages.routineEnable`)}),(0,V.jsx)(`button`,{type:`button`,className:`${en} ${xM.row}`,disabled:p===A.id,onClick:le,children:z(`pages.delete`)})]})]}),(0,V.jsxs)(`dl`,{className:NB,children:[(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineSchedule`)}),(0,V.jsxs)(`dd`,{children:[de??(0,V.jsx)(`span`,{className:`mono`,children:A.schedule}),de&&(0,V.jsx)(`span`,{className:`mono text-muted`,children:` ${A.schedule}`})]}),(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineNext`)}),(0,V.jsx)(`dd`,{className:A.enabled?``:`text-warning`,children:A.enabled?Number.isFinite(pe)?`${re(A.nextRunAt)} · ${new Date(pe).toLocaleString(x,{weekday:`short`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}`:`—`:t.paused}),(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineProject`)}),(0,V.jsx)(`dd`,{children:fe(A.repo)}),!A.script&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`dt`,{className:`text-muted`,children:z(`pages.routineDelivers`)}),(0,V.jsx)(`dd`,{children:ue?eL(t.targetExisting,{task:ie(ue.taskId),tab:ue.tabId}):A.persistentSession?t.targetStanding:t.targetFresh})]})]}),A.precheck&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:eL(t.precheck,{command:A.precheck.command})}),A.script?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`pages.routineScript`)}),(0,V.jsx)(`p`,{className:`mono ${PB}`,children:A.script.command})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted`,children:z(`pages.routinePrompt`)}),(0,V.jsx)(`p`,{className:PB,children:A.prompt})]}),(0,V.jsx)(fV,{c:r,tick:i,routines:C,followId:A.id,now:ne,when:re,openRun:R}),(0,V.jsx)(cV,{runs:P,when:re})]}):(0,V.jsx)(`p`,{className:`text-muted`,children:t.noSelection})})]}),h&&(0,V.jsx)(`p`,{className:`text-muted mx-0 mt-2 mb-0 text-meta leading-[inherit]`,children:h})]})}var hV=`flex min-w-0 items-baseline gap-2.5 font-mono text-meta whitespace-nowrap`,gV=`${hV} w-full cursor-pointer border-none bg-transparent p-0 text-left text-inherit [font:inherit] [&:hover]:underline`,_V=`w-[5ch] flex-none text-muted`,vV=`w-[16ch] flex-none overflow-hidden text-accent`,yV=`mt-3.5 mb-0.5`,bV=`min-w-0 flex-1 truncate`,xV=`flex-none text-right text-muted`,SV=`${xV} min-w-[5ch]`,CV=`${xV} min-w-[4ch]`,wV=`${xV} min-w-[5ch]`,TV=`w-[8ch] flex-none overflow-hidden text-accent`,EV=`flex flex-wrap gap-x-3 font-mono text-meta text-muted`,DV=`m-0 text-meta text-muted`,OV={turns:0,tokens:0,ms:0},kV=e=>(e.usage?.input_tokens??0)+(e.usage?.output_tokens??0),AV=e=>Math.max(0,e.endedAt-e.startedAt),jV=(e,t)=>({turns:e.turns+1,tokens:e.tokens+kV(t),ms:e.ms+AV(t)});function MV(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`}function NV(e,t,n,r){let i=[];for(let e=n-1;e>=0;e--){let n=new Date(t);n.setDate(n.getDate()-e),i.push(MV(n.getTime()))}let a=new Map(i.map(e=>[e,{sum:OV,byEngine:{}}]));for(let t of e){let e=a.get(MV(t.startedAt));if(!e)continue;let n=t.vendor??`unknown`;e.sum=jV(e.sum,t),e.byEngine[n]=(e.byEngine[n]??0)+kV(t)}let o=e.reduce((e,t)=>Math.min(e,t.startedAt),1/0),s=e.length>=r&&Number.isFinite(o)?{count:e.length,day:MV(o)}:null;return{cutoff:s,days:i.map(e=>{let t=a.get(e);return{day:e,...t?.sum??OV,byEngine:t?.byEngine??{},partial:s!==null&&e<=s.day}})}}function PV(e){let t=new Map;for(let n of e){let e=n.vendor??`unknown`,r=n.model??`unknown`,i=`${e}\0${r}`;t.set(i,{engine:e,model:r,...jV(t.get(i)??OV,n)})}return[...t.values()].sort((e,t)=>t.tokens-e.tokens||t.turns-e.turns)}function FV(e,t){let n=new Map;for(let t of e)n.set(t.taskId,{taskId:t.taskId,...jV(n.get(t.taskId)??OV,t)});return[...n.values()].sort((e,t)=>t.tokens-e.tokens||t.turns-e.turns).slice(0,t)}function IV(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4)).replace(/\.0$/,``)}k`:`${(e/1e6).toFixed(+(e<1e7)).replace(/\.0$/,``)}M`}var LV=[``,`▏`,`▎`,`▍`,`▌`,`▋`,`▊`,`▉`];function RV(e,t,n){if(e<=0||t<=0)return``;let r=Math.max(1,Math.round(e/t*n*8));return`${`█`.repeat(Math.floor(r/8))}${LV[r%8]}`}var zV=[`█`,`▓`,`▒`,`░`];function BV(e,t,n,r){return n<=0?``:t.map((t,i)=>{let a=e[t]??0,o=a<=0?0:Math.max(1,Math.round(a/n*r));return(zV[i%zV.length]??`█`).repeat(o)}).join(``)}var VV=.1,HV=/^(\d+)\s*(h|d)$/;function UV(e,t){let n=HV.exec(e.label.trim());if(!n||e.resetsAt===null||e.percent<=0)return null;let r=Number(n[1])*(n[2]===`d`?24:1)*36e5,i=r-(e.resetsAt-t);if(!(i>=r*VV)||i>r)return null;if(e.percent>=100)return{kind:`full`,at:t};let a=t+(100-e.percent)/e.percent*i;return a<e.resetsAt?{kind:`full`,at:a}:{kind:`lasts`}}var WV=14,GV=500,KV=3e4,qV=16,JV=8,YV=8;function XV(e,t,n,r){let i=Hs(e,t,n),[a,o]=(0,g.useState)(i?{kind:`ready`,value:i}:{kind:`loading`}),s=JSON.stringify(n);return(0,g.useEffect)(()=>{let r=!0;return Ws(e,t,n).then(e=>r&&o({kind:`ready`,value:e})).catch(e=>r&&o(t=>t.kind===`ready`?t:{kind:`failed`,error:nL(e)})),()=>{r=!1}},[e,t,s,r]),a}var ZV=e=>(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`${SV}`,children:IV(e.tokens)}),(0,V.jsx)(`span`,{className:`${CV}`,children:`${e.turns}t`}),(0,V.jsx)(`span`,{className:`${wV}`,children:QB(e.ms)})]});function QV({usage:e,nameOf:t}){let n=Date.now(),r=e.flatMap(e=>e.windows.map(r=>{let i={engine:e.name||t(e.vendor),label:r.label,percent:Math.round(r.percent)},a=UV(r,n);if(a?.kind===`full`){let t=a.at-n<72e6,o=new Date(a.at).toLocaleString([],{...t?{}:{weekday:`short`},hour:`2-digit`,minute:`2-digit`});return{key:`${e.vendor}:${r.kind}`,text:eL(z(`usage.full`),{...i,time:o})}}return{key:`${e.vendor}:${r.kind}`,text:eL(z(a?`usage.lasts`:`usage.window`),i)}}));return r.length===0?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted ${yV}`,children:z(`usage.quota`)}),r.map(e=>(0,V.jsx)(`p`,{className:`mono ${DV}`,children:e.text},e.key))]})}function $V({row:e,title:t,open:n}){let r=(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:bV,children:t}),ZV(e)]});return n?(0,V.jsx)(H,{variant:`row`,className:gV,onClick:n,children:r}):(0,V.jsx)(`div`,{className:hV,children:r})}function eH({model:e}){B();let t=dL(),[n]=cL(KV),r=XV(e,`turns.list`,{sinceDays:WV,limit:GV},n),i=XV(e,`engines.list`,{},n),a=XV(e,`usage.get`,{},n),o=v(e.tasks),s=i.kind===`ready`?i.value.engines:[],c=e=>s.find(t=>t.id===e)?.name??e,l=e=>o?.tasks.find(t=>t.id===e)?.label??z(`usage.removedTask`);return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:t,onKeyDown:e=>{e.metaKey||e.ctrlKey||e.altKey||e.key!==`q`&&e.key!==`Escape`||(e.preventDefault(),un.set(null))},children:[(0,V.jsx)(`h1`,{className:_M,children:z(`usage.title`)}),(()=>{if(r.kind===`loading`)return(0,V.jsx)(`p`,{className:`text-muted`,children:z(`usage.loading`)});if(r.kind===`failed`)return(0,V.jsx)(`p`,{className:`text-error`,children:eL(z(`usage.failed`),{error:r.error})});let t=r.value.turns,n=new Set(r.value.readers??[]),i=NV(t,Date.now(),WV,GV),s=new Map;for(let e of i.days)for(let[t,n]of Object.entries(e.byEngine))s.set(t,(s.get(t)??0)+n);let u=[...s].sort((e,t)=>t[1]-e[1]).map(([e])=>e),d=Math.max(0,...i.days.map(e=>e.tokens)),f=PV(t),p=Math.max(0,...f.map(e=>e.tokens)),m=[...new Set((o?.tasks??[]).flatMap(e=>e.engine?.id&&!n.has(e.engine.id)?[e.engine.id]:[]))];return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:DV,children:eL(z(`usage.range`),{days:WV})}),t.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:z(`usage.empty`)}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`h2`,{className:`${U} text-muted ${yV}`,children:z(`usage.perDay`)}),(0,V.jsx)(`div`,{className:EV,children:u.map((e,t)=>(0,V.jsx)(`span`,{children:`${zV[t%zV.length]} ${c(e)}`},e))}),i.days.map(e=>(0,V.jsxs)(`div`,{className:hV,children:[(0,V.jsx)(`span`,{className:_V,children:`${e.day.slice(5)}${e.partial?`~`:``}`}),(0,V.jsx)(`span`,{className:vV,children:BV(e.byEngine,u,d,qV)}),ZV(e)]},e.day)),i.cutoff&&(0,V.jsx)(`p`,{className:`m-0 text-meta text-muted`,children:eL(z(`usage.cutoff`),{count:i.cutoff.count,day:i.cutoff.day.slice(5)})}),(0,V.jsx)(`h2`,{className:`${U} text-muted ${yV}`,children:z(`usage.byModel`)}),f.map(e=>(0,V.jsxs)(`div`,{className:hV,children:[(0,V.jsx)(`span`,{className:bV,title:`${c(e.engine)} · ${e.model}`,children:`${c(e.engine)} · ${e.model}`}),(0,V.jsx)(`span`,{className:TV,children:RV(e.tokens,p,JV)}),ZV(e)]},`${e.engine}\0${e.model}`)),(0,V.jsx)(`h2`,{className:`${U} text-muted ${yV}`,children:z(`usage.topTasks`)}),FV(t,YV).map(t=>(0,V.jsx)($V,{row:t,title:l(t.taskId),open:o?.tasks.some(e=>e.id===t.taskId)?()=>{un.set(null),e.select(t.taskId)}:null},t.taskId))]}),m.length>0&&(0,V.jsx)(`p`,{className:`m-0 text-meta text-muted`,children:eL(z(`usage.noReader`),{engines:m.map(c).join(`, `)})}),a.kind===`ready`&&a.value.usage&&(0,V.jsx)(QV,{usage:a.value.usage,nameOf:c})]})})()]})}var tH={id:`mods`,label:`mods`},nH=[{id:`kanban`,label:`kanban`,mod:`kanban`},{id:`routines`,label:`automations`},{id:`issues`,label:`issues`,mod:`issues`}];function rH({model:e}){let{nav:t}=$I(),n=v(un),r=v(e.mods).length>0,i=v(e.installedMods),a=[...nH.filter(e=>!e.mod||i.has(e.mod)),...r?[tH]:[]];return(0,V.jsxs)(`div`,{className:OM,children:[(0,V.jsxs)(`button`,{type:`button`,className:`rail-nav-row ${jM(!1)}`,onClick:()=>tO(),children:[z(`rail.newTask`),(0,V.jsx)(`span`,{className:MM,"aria-hidden":`true`,children:`+`})]}),a.map(e=>(0,V.jsx)(`button`,{type:`button`,className:`rail-nav-row ${jM(n===e.id)}`,"aria-current":n===e.id?`page`:void 0,onClick:()=>ya(e.id),children:t[e.label]},e.id))]})}function iH({model:e,page:t}){(0,g.useEffect)(()=>e.selection.subscribe(()=>un.set(null)),[e]);let n=v(e.installedMods);return t===`kanban`&&n.has(`kanban`)?(0,V.jsx)(_z,{model:e}):t===`routines`?(0,V.jsx)(mV,{model:e}):t===`issues`&&n.has(`issues`)?(0,V.jsx)(cR,{model:e}):t===`mods`?(0,V.jsx)(Pz,{model:e}):t===`compare`?(0,V.jsx)(XL,{model:e}):t===`usage`?(0,V.jsx)(eH,{model:e}):null}var aH=p();function oH(e){return e?.match(/^https?:\/\/[^/]+\/([^/]+\/[^/]+)\/(?:pull|merge_requests|-\/merge_requests)\//)?.[1]}var sH=e=>e.charAt(0).toUpperCase()+e.slice(1);function cH(e){return[z(`rail.pr.state.${e.state}`),...e.checks?[z(`rail.pr.checks.${e.checks}`)]:[]].join(`, `)}function lH(e){let t=new Map;for(let n of e){let e=QF(n),r=[...e&&n.pr?[{pr:n.pr,mark:e}]:[],...(n.sessionPrs??[]).flatMap(e=>{let t=$F(e);return t?[{pr:e,mark:t}]:[]})];for(let{pr:e,mark:i}of r){let r=e.url??(e.number===void 0?n.id:`${n.repo}#${e.number}`),a=t.get(r),o=e.lifecycle===`unknown`,s=a?.pr.lifecycle===`unknown`;(!a||s&&!o||o===s&&eI([a.mark,i])!==a.mark)&&t.set(r,{task:n,pr:e,mark:i})}}return[...t.values()]}function uH({tasks:e,onOpen:t}){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(!1),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=(0,g.useRef)(null),l=ts();(0,g.useLayoutEffect)(()=>{let e=c.current;if(!e||!n)return;let t=e.getBoundingClientRect();t.right>window.innerWidth-8&&(e.style.left=`${Math.max(8,window.innerWidth-t.width-8)}px`,e.style.top=`${n.bottom+6}px`);let r=e.getBoundingClientRect().bottom-(window.innerHeight-8);r>0&&(e.style.top=`${Math.max(8,e.getBoundingClientRect().top-r)}px`)},[n]);let u=()=>{t?.(),s.current!==null&&window.clearTimeout(s.current),s.current=null,a(!1),o.current&&!n&&r(o.current.getBoundingClientRect())},d=()=>{a(!0),s.current=window.setTimeout(()=>r(null),140)};(0,g.useEffect)(()=>{if(!l||!n)return;let e=e=>{let t=e.target;o.current?.contains(t)||c.current?.contains(t)||(a(!0),s.current=window.setTimeout(()=>r(null),140))};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[l,n]),(0,g.useEffect)(()=>()=>{s.current!==null&&window.clearTimeout(s.current)},[]);let f=lH(e),p=eI(f.map(e=>e.mark));if(!p)return null;let m=f.length===1?`PR #${f[0]?.pr.number??``}, ${cH(p)}`:z(`rail.pr.many`,{count:f.length});return(0,V.jsxs)(`span`,{ref:o,className:`chip ${nE} ${p.tone}`,"aria-label":m,onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>{l&&(e.stopPropagation(),n&&!i?d():u())},children:[p.glyph,f.length>1&&(0,V.jsx)(`span`,{className:`font-sans`,children:f.length}),n&&(0,aH.createPortal)((0,V.jsx)(`div`,{ref:c,className:rE(i),style:{top:n.top-6,left:n.right+8},onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),onContextMenu:e=>e.stopPropagation(),children:f.map(({task:e,pr:t,mark:n})=>{let r=oH(t?.url),i=t?.additions!==void 0&&t.deletions!==void 0;return(0,V.jsxs)(`button`,{type:`button`,className:`flex flex-col gap-1 rounded-[calc(var(--radius)-6px)] px-3 py-2 text-left font-sans enabled:hover:bg-hover`,disabled:!t?.url,onClick:()=>t?.url&&window.open(t.url,`_blank`,`noopener`),children:[(0,V.jsx)(`span`,{className:`truncate font-semibold text-ink`,children:t.title||e.label}),(0,V.jsxs)(`span`,{className:`flex items-baseline gap-0 text-meta leading-[inherit] whitespace-nowrap`,children:[(0,V.jsxs)(`span`,{className:`inline-flex items-baseline gap-1.25 ${n.tone}`,children:[(0,V.jsx)(`span`,{className:`font-mono`,children:n.glyph}),sH(z(`rail.pr.state.${n.state}`))]}),(0,V.jsx)(`span`,{className:`overflow-hidden text-ellipsis whitespace-pre text-muted`,children:[...n.checks?[z(`rail.pr.checks.${n.checks}`)]:[],[r,t?.number===void 0?``:`#${t.number}`].filter(Boolean).join(` `)].filter(Boolean).map(e=>`, ${e}`).join(``)}),i&&(0,V.jsxs)(`span`,{className:`ml-auto flex gap-1.5 pl-3 tabular-nums`,children:[(0,V.jsxs)(`span`,{className:`text-success`,children:[`+`,t.additions]}),(0,V.jsxs)(`span`,{className:`text-error`,children:[`−`,t.deletions]})]})]})]},t.url??`${e.id}#${t.number??``}`)})}),document.body)]})}var dH=`~archived`;function fH(e,t,n,r){let i=t.filter(e=>!e.routine);if(i.length===0)return e;let a={id:dH,kind:`archived`,count:i.length,expanded:n};if(!n)return[...e,a];let o=Sw([{repo:``,label:``,key:dH,tasks:i}],``,r,1,!1);return[...e,a,...o.filter(e=>e.kind!==`project`)]}function pH(e,t,n){let r=t.kind===`main`,i=e=>r?e.kind===`main`:e.kind!==`main`&&e.repo===t.repo&&!e.pinned==!t.pinned;if(t.id===n.id||!i(n))return null;let a=e.filter(i).sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)).map(e=>e.id);return a.indexOf(n.id)-a.indexOf(t.id)}function mH(e,t,n,r){let i=pH(e,t,n);return i===null?null:r===`above`&&i>0?i-1:r===`below`&&i<0?i+1:i}function hH(e,t){return e.id===t.id?!1:e.kind===`main`?t.kind===`main`:t.kind!==`main`&&t.repo===e.repo}function gH(e,t,n,r,i){if(!hH(t,n))return null;if(t.kind===`main`){let i=mH(e,t,n,r);return i?{steps:i}:null}let a=n.pinned===!0||i&&r===`above`,o={...t,pinned:a},s=a===(n.pinned===!0)?mH(e.map(e=>e.id===t.id?o:e),o,n,r)??0:0,c=a===(t.pinned===!0)?{}:{pin:a};return`pin`in c||s!==0?{...c,steps:s}:null}var _H=e=>e===void 0||e.kind===`project`||e.kind===`state`?0:e.kind===`task`||e.kind===`pane`||e.kind===`round`?e.depth:1;function vH(e,t){let n=_H(e[t]),r=t+1;for(;r<e.length&&_H(e[r])>n;)r++;return r}function yH(e,t,n){let r=e.findIndex(e=>e.id===t),i=r<0?e:[...e.slice(0,r),...e.slice(vH(e,r))];for(let e=i.findIndex(e=>e.id===n)-1;e>=0;e--){let t=i[e];if(!t||t.kind===`project`||t.kind===`state`)return!0;if(t.kind===`task`&&t.depth===1&&t.task.kind!==`main`||t.kind===`round`&&t.depth===1)return!1}return!1}function bH(e,t){let n=_H(e[t]),r=[];for(let i=2;i<=n;i++){let a=t+1;for(;a<e.length&&_H(e[a])>i;)a++;let o=a<e.length&&_H(e[a])===i;r.push(i===n?o?`tee`:`elbow`:o?`pipe`:`blank`)}return r}function xH(e,t,n,r){let i=e.findIndex(e=>e.id===t);if(i<0||t===n)return e;let a=vH(e,i),o=e.slice(i,a),s=[...e.slice(0,i),...e.slice(a)],c=s.findIndex(e=>e.id===n);if(c<0)return e;let l=r===`above`?c:vH(s,c);return[...s.slice(0,l),...o,...s.slice(l)]}function SH(e,t,n,r,i){let[a,o]=(0,g.useState)(null),s=(0,g.useRef)(t);s.current=t;let[c,l]=(0,g.useState)(null),u=(0,g.useRef)(()=>o(null));(0,g.useEffect)(()=>{if(!c)return;let e=()=>{l(null),u.current()};if(t!==c)return e();let n=window.setTimeout(e,3e3);return()=>window.clearTimeout(n)},[t,c]);let d=(0,g.useRef)(null),f=(0,g.useRef)(null),p=()=>[...d.current?.querySelectorAll(`[data-row]`)??[]];(0,g.useLayoutEffect)(()=>{let e=f.current;if(!e||(f.current=null,window.matchMedia(`(prefers-reduced-motion: reduce)`).matches))return;let t=p().flatMap(t=>{let n=e.get(t.dataset.row??``),r=n===void 0?0:n-t.getBoundingClientRect().top;return r?[{el:t,dy:r}]:[]});for(let{el:e,dy:n}of t)e.style.transition=`none`,e.style.transform=`translateY(${n}px)`;d.current?.getBoundingClientRect();for(let{el:e}of t)e.style.transition=`transform 150ms ease-out`,e.style.transform=``,e.addEventListener(`transitionend`,()=>e.style.removeProperty(`transition`),{once:!0})});let m=(0,g.useRef)(null),h=(0,g.useRef)([]),_=(0,g.useRef)(new Map),v=(0,g.useRef)(0),y=(0,g.useRef)(0),b=e=>{m.current=e,o(e)},x=e=>!n||e.machine!==void 0?null:e.kind===`project`?t.find(t=>t.id===i(e.repo).mainTaskId)??null:e.kind===`task`&&e.depth===1&&e.task.kind!==`main`?e.task:null,S=e=>{let t=x(e);if(t)return{draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,t.id),d.current=n.currentTarget.closest(`[data-rail-body]`),T(d.current);let r=h.current,i=r.findIndex(t=>t.id===e.id);v.current=r.slice(i,vH(r,i)).reduce((e,t,n)=>e+(_.current.get(t.id)?.height??0)+(n>0?_.current.get(t.id)?.gap??0:0),0),y.current=n.clientY,b({fromRow:e.id,from:t,toRow:e.id,to:t,side:`above`})},onDragEnd:()=>m.current&&b(null)}},C=(e,t,n)=>{let r=t;if(n.from.kind===`main`)for(;r>0&&e[r]?.kind!==`project`;)r--;let i=e[r],a=i&&x(i);return!i||!a||!hH(n.from,a)?null:{row:i.id,task:a}},w={onDragOver:e=>{let t=m.current;if(!t)return;e.preventDefault();let n=e.clientY-y.current;y.current=e.clientY;let r=e.target.closest(`[data-row]`)?.dataset.row,i=h.current,a=C(i,i.findIndex(e=>e.id===r),t);if(!a||a.row===t.fromRow)return;let o=e.currentTarget.querySelector(`[data-row="${CSS.escape(t.fromRow)}"]`)?.getBoundingClientRect().top;if(o===void 0||e.clientY>=o&&e.clientY<o+v.current)return;let s=e.clientY<o?`above`:`below`;(s===`above`?n>=0:n<=0)||(t.toRow!==a.row||t.side!==s)&&b({...t,toRow:a.row,to:a.task,side:s})},onDrop:n=>{let i=m.current;if(!i)return;n.preventDefault();let a=gH(t,i.from,i.to,i.side,yH(h.current,i.fromRow,i.toRow));m.current=null,r?u.current=()=>o(null):u.current=()=>{f.current=new Map(p().map(e=>[e.dataset.row??``,e.getBoundingClientRect().top])),o(null),UT(`default`),G(q(`tasks`,`sort.label`,{mode:q(`tasks`,`sort.modes.default`)}))},a?XT(e,i.from.id,a).finally(()=>l(s.current)):u.current()}},T=e=>{let t=[...e?.querySelectorAll(`[data-row]`)??[]];_.current=new Map(t.map((e,n)=>{let r=t[n-1],i=r?e.offsetTop-r.offsetTop-r.offsetHeight:0;return[e.dataset.row??``,{top:e.offsetTop,gap:i,height:e.offsetHeight}]}))},E=e=>{h.current=a?xH(e,a.fromRow,a.toRow,a.side):e;let t=new Map;if(!a)return t;let n=Math.min(...[..._.current.values()].map(e=>e.top));for(let[e,r]of h.current.entries()){let i=_.current.get(r.id);if(!i)return new Map;e>0&&(n+=i.gap),n!==i.top&&t.set(r.id,n-i.top),n+=i.height}return t};return{props:S,body:w,dragging:a?.fromRow??null,places:e=>{let t=E(e);return e=>{let n=t.get(e.id);return n?{"data-row":e.id,style:{transform:`translateY(${n}px)`}}:{"data-row":e.id}}}}}function CH({model:e,narrow:t,onSettings:n}){B();let r=v(kN),i=$(`engines.skill.bannerHintWeb`,{engines:r.join(`, `)});return(0,V.jsxs)(`div`,{className:kM,children:[!t&&(0,V.jsx)(IP,{client:e.client}),(0,V.jsxs)(`div`,{className:AM,children:[(0,V.jsxs)(`button`,{type:`button`,className:`rail-nav-row ${jM(!1)}`,onClick:n,children:[(0,V.jsxs)(`svg`,{className:NM,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,V.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,V.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]}),(0,V.jsx)(`span`,{children:z(`rail.settings`)}),r.length>0&&(0,V.jsx)(`span`,{className:`ml-2 min-w-0 truncate text-meta text-subtle`,title:i,children:z(`rail.skillCue`)})]}),(0,V.jsx)(EF,{model:e,bindingId:`settings.open`})]})]})}function wH(e,t,n,r,i=null){let a=e=>e.kind===`task`&&e.task.kind===`main`&&e.fold===void 0&&e.task.id!==n&&e.task.id!==i&&(r?t[e.task.id]?.length===0:(t[e.task.id]?.length??0)===0),o=e.filter(e=>!a(e));return o.filter((e,t)=>{if(e.kind!==`project`&&e.kind!==`state`)return!0;let n=o[t+1];return n!==void 0&&n.kind!==`project`&&n.kind!==`state`})}var TH=_({});function EH(e,t,n){let r=TH.get()[`${e}::${t.id}`];return r&&r.sig===Pw(n)&&Dw(n.root).some(e=>e.id===r.leaf)?r.leaf:n.activeLeafId}function DH(e,t,n,r){TH.set({...TH.get(),[`${e}::${t}`]:{sig:Pw(n),leaf:r}})}function OH(e,t,n,r){DH(e,t.id,n,r),ca(DC(e,t.id,r))?.focus()}function kH(e){let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return t&&r?{taskId:t,tab:r}:null}async function AH(e,t,n){try{let r=await e.client.request(`tab.split`,t);await e.refreshTabsNow(),n?.(r)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}}function jH(e,t,n,r,i){let a=i??(n.split?EH(t,n,n.split):`leaf-1`),o=e.selection.get();(o.taskId!==t||o.tabId!==n.id)&&e.select(t,n.id);let s=ca(DC(t,n.id,a))?.size();AH(e,{taskId:t,tabId:n.id,action:`open`,direction:r,leafId:a,...s},e=>{e.changed?e.split&&DH(t,n.id,e.split,e.leaf):G(z(`layout.splitTooSmall`),`error`)})}function MH(e,t,n,r){let i=n.split,a=i?EH(t,n,i):r,o=()=>AH(e,{taskId:t,tabId:n.id,action:`close`,leafId:r},e=>{let i=e.split;if(!i)return;let o=a!==r&&Dw(i.root).some(e=>e.id===a);DH(t,n.id,i,o?a:i.activeLeafId)});if(!i||!Mw(n,i,r)){o();return}W.set((0,V.jsx)(dr,{title:z(`confirm.closePaneTitle`,{pane:jw(i,Tw(n)).get(r)??r}),body:z(`confirm.closePaneBody`),confirmLabel:z(`menu.closePane`),onConfirm:o}))}function NH(e,t,n,r){let i=n.split;i&&W.set((0,V.jsx)(ur,{title:wo(`split.renameTitle`),initial:jw(i,Tw(n)).get(r)??``,allowEmpty:!0,submitLabel:z(`dialog.save`),onSubmit:i=>AH(e,{taskId:t,tabId:n.id,action:`rename`,leafId:r,title:i})}))}function PH(e,t,n,r){return[{label:z(`menu.renamePane`),section:`split`,key:io(`workspace.split.rename`)??void 0,run:()=>NH(e,t,n,r)},{label:z(`menu.closePane`),section:`split`,key:ai(`workspace.split.close`)||void 0,run:()=>MH(e,t,n,r)}]}function FH(e,t,n,r){return[{label:z(`menu.splitRight`),section:`split`,key:io(`workspace.split.right`)??void 0,run:()=>jH(e,t,n,`right`,r)},{label:z(`menu.splitDown`),section:`split`,key:io(`workspace.split.down`)??void 0,run:()=>jH(e,t,n,`down`,r)}]}function IH(e,t,n,r){let i=n.split,a=r??(i?EH(t,n,i):`leaf-1`);return[...FH(e,t,n,a),...Ow(i)?PH(e,t,n,a):[]]}function LH(e,t){let n=e.tabs.get()[t]??[],r=e.selection.get(),i=(r.taskId===t?n.find(e=>e.id===r.tabId):void 0)??Vi(n);return!i||!Nw(i)?[]:FH(e,t,i,i.split?EH(t,i,i.split):`leaf-1`)}function RH(e,{task:t,tab:n,leaf:r}){n.split&&OH(t.id,n,n.split,r),e.select(t.id,n.id)}function zH(e){let{row:t}=e,n=v(e.model.selection);v(TH);let r=n.taskId===t.task.id&&n.tabId===t.tab.id&&!!t.tab.split&&EH(t.task.id,t.tab,t.tab.split)===t.leaf;return(0,V.jsxs)(`button`,{type:`button`,className:`${nr({size:`pane`})} ${e.cursor?dE:``}`,"aria-current":r||void 0,onClick:e.onClick,onContextMenu:e.onMenu,...e.place,children:[(0,V.jsx)(`span`,{className:ZT,"aria-hidden":`true`,children:e.guides?.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${rr} text-(length:--fs-meta) ${r?`text-ink`:`text-muted`}`,children:t.label})]})}function BH(e,t){let n=t?.trim()??``;return n&&e?.effortLevels?.includes(n)?n:``}function VH({model:e,taskId:t}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)({}),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)(!1),{busy:m,error:h,submit:_}=lr();(0,g.useEffect)(()=>{Promise.all([e.client.request(`engines.list`),e.client.request(`task.get`,{taskId:t})]).then(([e,t])=>{let n=Cs(e.engines,t.task.engine).filter(e=>e.ready!==!1||e.id===t.task.engine),i=n.find(e=>e.id===t.task.engine)??n[0];r(n),a(t.task),s(i?.id??``),l(BH(i,t.task.effort)),d(i?.id===t.task.engine?t.task.model??``:``),p(!0)})},[e,t]);let v=n.find(e=>e.id===o),y=v?.effortLevels??[],b=y.length>0?[``,...y]:[],x=(v?.models??[]).map(e=>e.id).filter(e=>e.toLowerCase().includes(u.trim().toLowerCase())&&e!==u.trim()).slice(0,6),S=e=>{s(e);let t=n.find(t=>t.id===e);l(BH(t,e===i.engine?i.effort:void 0)),d(e===i.engine?i.model??``:``)},C=e=>{let t=n.findIndex(e=>e.id===o),r=n[Math.max(0,Math.min(n.length-1,t+e))];r&&S(r.id)},w=e=>{if(b.length===0)return;let t=Math.max(0,b.indexOf(c));l(b[Math.max(0,Math.min(b.length-1,t+e))]??``)},T=e=>{let t=e.target instanceof HTMLInputElement;if(e.key===`ArrowUp`&&!t)C(-1);else if(e.key===`ArrowDown`&&!t)C(1);else if((e.key===`ArrowLeft`||e.key===`h`)&&!t)w(-1);else if((e.key===`ArrowRight`||e.key===`l`)&&!t)w(1);else return;e.preventDefault()},E=()=>_(async()=>{if(!v)return;let n=y.length>0?c:void 0,r=v.acceptsModel?u.trim():void 0;(v.id!==i.engine||n!==void 0&&n!==(i.effort??``)||r!==void 0&&r!==(i.model??``))&&(await e.client.request(`task.setEngine`,{taskId:t,engine:v.id,...n===void 0?{}:{effort:n},...r===void 0?{}:{model:r}}),G(q(`tasks`,`toast.engineSwitched`,{engine:v.name})))});return(0,V.jsx)(cr,{title:q(`tasks`,`changeEngine.title`),wide:!0,children:(0,V.jsxs)(`form`,{className:Rn,onKeyDown:T,onSubmit:e=>{e.preventDefault(),E()},children:[(0,V.jsx)(`ul`,{className:Mn,"aria-label":q(`tasks`,`changeEngine.title`),children:n.map(e=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(`button`,{type:`button`,"aria-pressed":e.id===o,className:nr({selected:e.id===o}),onClick:()=>S(e.id),children:[(0,V.jsx)(`span`,{className:`${or} text-accent`,children:e.id===o?`●`:` `}),(0,V.jsx)(`span`,{className:rr,children:e.name}),e.id===i.engine&&(0,V.jsx)(`span`,{className:`text-muted`,children:q(`tasks`,`changeEngine.current`)})]})},e.id))}),f&&v&&v.acceptsModel&&(0,V.jsxs)(`label`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`tasks`,`engineModel.label`)}),(0,V.jsx)(`input`,{className:nn,spellCheck:!1,placeholder:q(`tasks`,`engineModel.placeholder`),value:u,onChange:e=>d(e.target.value)}),x.length>0&&(0,V.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:x.map(e=>(0,V.jsx)(`button`,{type:`button`,className:jn(),onClick:()=>d(e),children:e},e))})]}),b.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{className:`m-0 font-sans text-meta font-medium normal-nums text-muted`,children:q(`tasks`,`changeEngine.effortLabel`)}),(0,V.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:b.map(e=>(0,V.jsx)(`button`,{type:`button`,"aria-pressed":e===c,className:jn(e===c),onClick:()=>l(e),children:e===``?q(`tasks`,`changeEngine.noEffort`):e},e||`default`))})]}),(0,V.jsx)(`p`,{className:`keys-only ${Yt}`,children:(0,V.jsx)(AT,{text:[q(`tasks`,`changeEngine.footer.engine`),...v?.acceptsModel?[q(`tasks`,`changeEngine.footer.model`)]:[],...b.length>0?[q(`tasks`,`changeEngine.footer.effort`)]:[],q(`tasks`,`changeEngine.footer.set`),q(`tasks`,`changeEngine.footer.cancel`)].join(` · `)})}),h&&(0,V.jsx)(`p`,{className:`text-error`,children:h}),(0,V.jsx)(pr,{busy:m||!f,submitLabel:z(`taskops.set`)})]})})}function HH({model:e,task:t}){let[n,r]=(0,g.useState)(()=>Hs(e,`task.get`,{taskId:t.id})?.task??null),[i,a]=(0,g.useState)(null),{busy:o,error:s,submit:c}=lr();(0,g.useEffect)(()=>{Ws(e,`task.get`,{taskId:t.id}).then(e=>r(e.task)).catch(e=>a(K(e)))},[e,t.id]);let l=()=>c(async()=>{if(!n?.prompt)return;let t=(await e.client.request(`task.spawn`,{repo:n.repo,prompt:n.prompt,...n.engine?{engine:n.engine}:{},...n.baseRef?{baseBranch:n.baseRef}:{}})).taskIds[0];t&&e.selectWhenListed(t)});return(0,V.jsx)(cr,{title:q(`tasks`,`runAgain.title`),wide:!0,children:(0,V.jsxs)(`form`,{className:Rn,onSubmit:e=>{e.preventDefault(),l()},children:[(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`runAgain.source`,{title:t.label})}),(0,V.jsx)(`pre`,{className:Xt,children:n?.prompt??i??q(`tasks`,`fieldNotes.loading`)}),(0,V.jsx)(`p`,{className:Yt,children:q(`tasks`,`runAgain.hint`)}),s&&(0,V.jsx)(`p`,{className:`text-error`,children:s}),(0,V.jsx)(pr,{busy:o||!n?.prompt,submitLabel:q(`tasks`,`runAgain.confirm`)})]})})}function UH(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function WH({model:e,repo:t}){let[n,r]=(0,g.useState)({kind:`loading`}),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),u=(0,g.useRef)(null),d=()=>e.client.request(`notes.list`,{repo:t}).then(e=>r({kind:`ready`,notes:e.notes})).catch(e=>r({kind:`error`,message:K(e)}));(0,g.useEffect)(()=>void d(),[]);let f=n.kind===`ready`?n.notes:[];(0,g.useEffect)(()=>a(e=>Math.max(0,Math.min(e,f.length-1))),[f.length]),(0,g.useEffect)(()=>{u.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[i]);let p=async n=>{if(n.id!==void 0){l(null);try{await e.client.request(`notes.delete`,{repo:t,id:n.id}),s(null),await d()}catch(e){l(K(e))}}};return(0,V.jsx)(cr,{title:q(`tasks`,`fieldNotes.title`),wide:!0,children:(0,V.jsxs)(`div`,{className:Rn,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(f.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`d`&&f[i]?.id!==void 0)s(f[i]??null);else return;e.preventDefault()}},children:[(0,V.jsx)(`p`,{className:`font-mono text-meta break-all text-muted`,children:t}),n.kind===`loading`&&(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.loading`)}),n.kind===`error`&&(0,V.jsx)(`p`,{className:`text-error`,children:n.message}),n.kind===`ready`&&f.length===0&&(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.empty`)}),f.length>0&&(0,V.jsx)(`ul`,{className:`m-0 list-none p-0 flex max-h-[44vh] flex-col gap-2 overflow-y-auto`,ref:u,children:f.map((e,t)=>(0,V.jsx)(`li`,{children:(0,V.jsxs)(`button`,{type:`button`,className:Zt(t===i),onClick:()=>a(t),autoFocus:t===0,children:[(0,V.jsxs)(`span`,{className:`font-mono text-meta whitespace-pre text-accent`,children:[t===i?`▸ `:` `,UH(e.at),`, `,e.author]}),(0,V.jsx)(`span`,{className:`text-ink whitespace-pre-wrap wrap-anywhere`,children:e.text})]})},`${e.at}:${t}`))}),o&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-sm border-hairline border-line bg-paper px-3 py-2.5`,children:[(0,V.jsx)(`p`,{children:(0,V.jsx)(`strong`,{children:q(`tasks`,`fieldNotes.confirmDelete.title`)})}),(0,V.jsx)(`p`,{className:`text-muted`,children:q(`tasks`,`fieldNotes.confirmDelete.body`,{text:o.text})}),c&&(0,V.jsx)(`p`,{className:`text-error`,children:c}),(0,V.jsxs)(`div`,{className:`actions flex items-center justify-end gap-3.5`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>s(null),children:z(`dialog.cancel`)}),(0,V.jsx)(`button`,{type:`button`,className:Pe({danger:!0}),onClick:()=>void p(o),children:z(`taskops.retire`)})]})]}),!o&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{className:`keys-only font-sans text-meta text-subtle`,children:q(`tasks`,`fieldNotes.footerDeletable`)}),(0,V.jsxs)(`div`,{className:`actions flex items-center justify-end gap-3.5`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,disabled:f[i]?.id===void 0,onClick:()=>s(f[i]??null),children:z(`taskops.retire`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:Cn,children:z(`taskops.close`)})]})]})]})})}var GH=[`backlog`,`in_progress`,`in_review`,`done`,`canceled`,`error`],KH={backlog:`status.backlog`,in_progress:`status.inProgress`,in_review:`status.inReview`,done:`status.done`,canceled:`status.canceled`,error:`status.error`},qH=e=>({binding:e,key:io(e)??void 0});async function JH(e,t){if(!e){G(z(`menu.nothingToCopy`,{what:t}),`error`);return}try{await navigator.clipboard.writeText(e),G(z(`menu.copied`,{text:e}))}catch{G(z(`menu.copyFailed`),`error`)}}function YH(e,t,n){let r=[{label:z(`menu.newTask`),section:`open`,run:()=>tO(t)}],i=n.mainTaskId;return i&&(n.first||r.push({label:q(`tasks`,`menu.moveToTop`),section:`edit`,run:()=>void e.client.request(`task.move`,{taskId:i,direction:`top`}).catch(e=>G(q(`tasks`,`toast.moveFailed`,{error:String(e)}),`error`))}),r.push({label:q(`tasks`,`menu.reorderProject`),section:`edit`,...qH(`sidebar.localMerge`),run:()=>ZH(i)})),r.push({label:q(`tasks`,`menu.fieldNotes`),section:`notes`,run:()=>W.set((0,V.jsx)(WH,{model:e,repo:t}))}),i&&r.push({label:q(`tasks`,`menu.forgetProject`),section:`danger`,danger:!0,run:()=>W.set(aF(e,t,n.label))}),r}function XH(e){return[{label:z(`menu.newChatNoFolder`),section:`open`,run:()=>nO()},{label:z(`menu.newShell`),section:`open`,run:()=>void HC(e).catch(e=>G(String(e),`error`))}]}function ZH(e){let t=!GT.get();t&&e!==void 0&&KT.set(e),qT(t),document.querySelector(`.rail`)?.focus()}function QH(e,t){let n=(e.tasks.get()?.tasks??[]).filter(e=>e.kind===`main`&&!e.machine&&e.repo!==t.repo).map(e=>e.repo),r=n.map(e=>{let t=e.slice(e.lastIndexOf(`/`)+1);return{value:e,label:n.filter(e=>e.endsWith(`/${t}`)).length>1?e:t}});return r.length===0?(G(q(`tasks`,`moveToProject.empty`),`error`),null):(0,V.jsx)(fr,{title:q(`tasks`,`moveToProject.title`),choices:r,onPick:async n=>{await e.client.request(`task.moveToProject`,{taskId:t.id,repo:n}),G(q(`tasks`,`toast.movedToProject`,{project:r.find(e=>e.value===n)?.label??n}))}})}function $H(e,t,n){let r=e.client,i=[];n&&(i.push({label:z(`menu.closeTab`),section:`tab`,run:()=>W.set((0,V.jsx)(dr,{title:z(`confirm.closeTabTitle`,{tab:n.title??n.engineName??n.id}),body:z(`confirm.closeTabBody`),confirmLabel:z(`menu.closeTab`),onConfirm:async()=>{await r.request(`tab.close`,{taskId:t.id,tabId:n.id}),await e.refreshTabsNow()}}))}),i.push(...IH(e,t.id,n))),i.push({label:z(`menu.newChat`),section:`open`,run:()=>void BC(e,t.id)}),i.push({label:z(`menu.newChatPick`),section:`open`,run:()=>W.set((0,V.jsx)(KC,{model:e,taskId:t.id}))}),i.push({label:z(`menu.continueEngine`),section:`open`,...qH(`chat.tab.fork`),run:()=>W.set((0,V.jsx)(KC,{model:e,taskId:t.id,context:`continue`,sourceTabId:n?.id}))}),i.push({label:z(`menu.newShell`),section:`open`,run:()=>void VC(e,t.id,{kind:`shell`}).catch(e=>G(String(e),`error`))}),t.startsAt&&(i.push({label:z(`menu.startNow`),section:`open`,run:()=>void e.client.request(`task.startScheduledNow`,{taskId:t.id}).catch(e=>G(String(e),`error`))}),i.push({label:z(`menu.cancelStart`),section:`open`,run:()=>void e.client.request(`task.cancelScheduledStart`,{taskId:t.id}).catch(e=>G(String(e),`error`))})),t.hasPrompt&&(i.push({label:q(`tasks`,`menu.runAgain`),section:`open`,run:()=>W.set((0,V.jsx)(HH,{model:e,task:t}))}),i.push({label:z(`menu.retryEdit`),section:`open`,run:()=>void VD(e,t)}));let a=!t.machine;if(a&&i.push({label:q(`tasks`,`menu.openEditor`),section:`open`,...qH(`tasks.openWorktree`),run:()=>void eF(e,t.id)}),t.groupId){let e=t.groupId;i.push({label:z(`compare.menu`),section:`open`,run:()=>ba(e)})}i.push({label:z(`menu.rename`),section:`edit`,...qH(`sidebar.rename`),run:()=>W.set((0,V.jsx)(ur,{title:z(`menu.rename`),initial:t.title,submitLabel:z(`dialog.save`),onSubmit:e=>r.request(`task.rename`,{taskId:t.id,title:e}).then(()=>{})}))}),t.kind!==`main`&&i.push({label:t.pinned?z(`menu.unpin`):z(`menu.pin`),section:`edit`,...qH(`sidebar.pin`),run:()=>void r.request(`task.pin`,{taskId:t.id,pinned:!t.pinned}).catch(e=>G(String(e),`error`))}),a&&i.push({label:q(`tasks`,`menu.reorder`),section:`edit`,...qH(`sidebar.localMerge`),run:()=>ZH()}),i.push({label:z(`menu.setStatus`),section:`edit`,children:GH.map(e=>({label:z(KH[e]),checked:e===t.status,run:()=>void r.request(`task.setStatus`,{taskId:t.id,status:e}).catch(e=>G(String(e),`error`))}))}),a&&t.kind!==`main`&&!t.routine&&!t.parentTaskId&&!t.extraRepoCount&&i.push({label:q(`tasks`,`menu.moveToProject`),section:`edit`,run:()=>{let n=QH(e,t);n&&W.set(n)}}),a&&i.push({label:z(`menu.changeEngine`),section:`edit`,...qH(`tasks.cycleEngine`),run:()=>W.set((0,V.jsx)(VH,{model:e,taskId:t.id}))}),t.pr?.checkState===`failing`&&i.push({label:q(`tasks`,`menu.fixChecks`),section:`git`,key:ai(`files.fixChecks`),run:()=>void $P(e,t.id,z(`taskops.fixSent`))}),t.kind===`task`&&t.branch&&a&&i.push({label:q(`tasks`,`menu.syncBase`),section:`git`,key:ai(`files.syncBase`),run:()=>void ZP(e,t.id)}),t.branch&&i.push({label:z(`menu.renameBranch`),section:`git`,...qH(`tasks.renameBranch`),run:()=>W.set((0,V.jsx)(ur,{title:z(`menu.renameBranch`),initial:t.branch,submitLabel:z(`dialog.save`),onSubmit:e=>r.request(`task.setBranch`,{taskId:t.id,branch:e}).then(()=>{})}))}),t.kind===`task`&&t.branch&&i.push({label:z(`menu.land`),section:`git`,run:()=>void YP(e,t)});let o=[{label:z(`menu.copyWhat.id`),run:()=>void JH(t.id,z(`menu.what.id`))}];return t.branch&&o.push({label:z(`menu.copyWhat.branch`),run:()=>void JH(t.branch,z(`menu.what.branch`))}),o.push({label:z(`menu.copyWhat.path`),run:()=>void r.request(`task.get`,{taskId:t.id}).then(e=>JH(e.task.worktreePath,z(`menu.what.path`))).catch(e=>G(String(e),`error`))}),i.push({label:z(`menu.copy`),section:`copy`,children:o}),t.kind!==`main`&&i.push({label:q(`tasks`,t.archived?`menu.unarchive`:`menu.archive`),section:`danger`,run:()=>void iF(e,t)}),i.push({label:z(`menu.removeSession`),section:`danger`,...qH(`sidebar.delete`),danger:!0,run:()=>W.set(t.kind===`main`?rF(e,t):nF(e,t))}),i}var eU=`rove.collapsedProjects`,tU=`rove.foldedTasks`,nU=`rove.openedTasks`,rU=600;function iU(e){try{let t=JSON.parse(localStorage.getItem(e)??`[]`);return new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}catch{return new Set}}function aU(e,t){try{localStorage.setItem(e,JSON.stringify([...t]))}catch{}}var oU=(e,t)=>{let n=new Set(e);return n.delete(t)||n.add(t),n};function sU(){let e=v(HT),[t,n]=(0,g.useState)({active:!1,query:``}),[r,i]=(0,g.useState)(!1),a=()=>i(e=>!e),[o,s]=(0,g.useState)(()=>iU(eU)),c=e=>s(t=>{let n=oU(t,e);return aU(eU,n),n}),[l,u]=(0,g.useState)(()=>({folded:iU(tU),opened:iU(nU)}));return{sort:e,cycleSort:WT,search:t,setSearch:n,archivedOpen:r,toggleArchived:a,collapsed:o,toggleProject:c,hand:l,toggleTaskFold:(e,t)=>u(n=>{let r=new Set(n.folded),i=new Set(n.opened);return t?(r.delete(e),i.add(e)):(i.delete(e),r.add(e)),aU(tU,r),aU(nU,i),{folded:r,opened:i}})}}var cU=[`sidebar.nav`,`sidebar.goto`,`sidebar.select`,`sidebar.tree.open`,`sidebar.rename`,`sidebar.pin`,`sidebar.localMerge`,`sidebar.delete`,`sidebar.sort`,`sidebar.search.enter`,`tasks.renameBranch`,`tasks.cycleEngine`,`tasks.openWorktree`,`tasks.update`,`tasks.focusEngine`,`task.new`,`settings.open.sidebar`,`worktrees.open.sidebar`];function lU(e){for(let t of e)for(let e of cU){let n=ii(e).indexOf(t);if(n>=0)return{id:e,slot:n}}return null}function uU(e,t){let n=e.selection.get().taskId===t;e.select(t),_a(),n&&Ji()}function dU(e,t,n,r){let{search:i,setSearch:a}=n,[o,s]=(0,g.useState)(null),c=(0,g.useRef)(0),l=t.filter(e=>e.kind!==`project`&&e.kind!==`state`),u=l.findIndex(e=>e.id===o);(0,g.useEffect)(()=>{u<0&&s(r.selectedId&&l.some(e=>e.id===r.selectedId)?r.selectedId:l[0]?.id??null)},[u,l,r.selectedId]);let d=l[u],f=d?.kind===`task`||d?.kind===`pane`?d.task.id:null;(0,g.useEffect)(()=>cA.set(f),[f]);let p=l[0]?.id??null;(0,g.useEffect)(()=>{i.query,i.active&&s(p)},[i.active,i.query,p]);let m=e=>{let t=l[Math.max(0,Math.min(l.length-1,e))];t&&s(t.id)},h=t=>{t?.kind===`archived`&&n.toggleArchived(),t?.kind===`task`&&e.select(t.task.id),t?.kind===`round`&&ba(t.groupId),t?.kind===`pane`&&RH(e,t),t&&t.kind!==`archived`&&_a()},_=(t,n)=>{t?.kind===`task`&&on($H(e,t.task,null),n)?.run?.()},v=async t=>{if(t?.kind===`task`&&t.machine===void 0)try{let{engines:n}=await e.client.request(`engines.list`),r=Cs(n).filter(e=>e.ready!==!1),i=r[(r.findIndex(e=>e.id===t.task.engine?.id)+1)%r.length];if(!i||i.id===t.task.engine?.id)return;await e.client.request(`task.setCommand`,{taskId:t.task.id,engine:i.id}),G(z(`rail.engineSwitched`,{engine:i.name}))}catch(e){G(z(`rail.engineSwitchFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}};return{cursor:o,setCursor:s,onKeyDown:t=>{let o=l[u],s=t.target instanceof HTMLInputElement;if(i.active){if(t.metaKey||t.ctrlKey||t.altKey)return;if(t.key===`Escape`)a({active:!1,query:``});else if(t.key===`Enter`)h(o),a({active:!1,query:``});else if(t.key===`ArrowDown`)m(u+1);else if(t.key===`ArrowUp`)m(u-1);else if(t.key===`Backspace`&&!s)a(e=>({...e,query:e.query.slice(0,-1)}));else if(t.key.length===1&&!s)a(e=>({...e,query:e.query+t.key}));else return;t.preventDefault();return}let d=lU(Qa(t));if(GT.get()){let n=o?.kind===`task`&&o.machine===void 0;if(d?.id===`sidebar.nav`)n&&JT(e,o,d.slot%2==0?1:-1);else if(d?.id===`sidebar.localMerge`||t.key===`Enter`||t.key===`Escape`)qT(!1);else return;t.preventDefault();return}switch(d?.id){case`sidebar.nav`:m(d.slot%2==0?u+1:u-1);break;case`sidebar.goto`:d.slot%2==1?m(l.length-1):Date.now()-c.current<rU?(m(0),c.current=0):c.current=Date.now();break;case`sidebar.select`:case`sidebar.tree.open`:h(o);break;case`tasks.focusEngine`:Ji();break;case`sidebar.rename`:case`sidebar.pin`:case`sidebar.delete`:case`tasks.renameBranch`:case`tasks.openWorktree`:_(o,d.id);break;case`tasks.cycleEngine`:v(o);break;case`sidebar.localMerge`:o?.machine===void 0&&qT(!0);break;case`sidebar.sort`:n.cycleSort(),G(q(`tasks`,`sort.label`,{mode:q(`tasks`,`sort.modes.${HT.get()}`)}));break;case`sidebar.search.enter`:a({active:!0,query:``});break;case`task.new`:r.onNewTask(o?.kind===`task`||o?.kind===`pane`?o.task.repo:void 0,o?.machine);break;case`settings.open.sidebar`:r.onSettings();break;case`worktrees.open.sidebar`:ya(`worktrees`);break;case`tasks.update`:ya(`update`);break;default:return}t.preventDefault()}}}var fU=(e,t,n)=>`~pane:${e}:${t}:${n}`;function pU(e,t){return e.flatMap(e=>e.kind===`task`?[e,...(t[e.task.id]??[]).flatMap(t=>{let n=t.split;if(!n||!Ow(n))return[];let r=jw(n,Tw(t));return Dw(n.root).map(n=>({id:fU(e.task.id,t.id,n.id),kind:`pane`,task:e.task,tab:t,leaf:n.id,label:r.get(n.id)??n.id,depth:e.depth+1,...e.machine===void 0?{}:{machine:e.machine}}))})]:[e])}function mU(e){let{row:t}=e;return(0,V.jsxs)(`button`,{type:`button`,className:`${nr({size:`pane`})} ${e.cursor?dE:``}`,title:z(`compare.menu`),onClick:()=>{e.onClick(),ba(t.groupId)},...e.place,children:[e.guides&&(0,V.jsx)(`span`,{className:`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${rr} text-(length:--fs-meta) text-muted`,children:t.title}),(0,V.jsxs)(`span`,{className:`${sr} ml-auto items-center`,children:[e.repo&&(0,V.jsx)(`span`,{className:`max-w-24 truncate text-subtle`,children:e.repo}),(0,V.jsx)(`span`,{className:`text-subtle`,children:t.tasks.length}),(0,V.jsx)(UL,{status:XF(t.tasks)})]})]})}function hU(e){let t=(0,g.useRef)(null);return(0,g.useEffect)(()=>{let e=t.current;return()=>{e&&document.activeElement===e&&e.closest(`nav`)?.focus()}},[]),(0,V.jsxs)(`div`,{className:`${cE} mono items-center`,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:`/`}),(0,V.jsx)(`input`,{ref:t,className:lE,type:`text`,autoFocus:!0,spellCheck:!1,autoComplete:`off`,autoCapitalize:`off`,enterKeyHint:`go`,value:e.query,placeholder:z(`rail.searchPlaceholder`),"aria-label":z(`rail.searchPlaceholder`),onChange:t=>e.onChange(t.target.value)}),e.query&&(0,V.jsx)(`span`,{className:`ml-1.5 text-muted`,children:e.count})]})}var gU=450,_U=!1;typeof document<`u`&&(document.addEventListener(`keydown`,()=>{_U=!0},!0),document.addEventListener(`pointerdown`,()=>{_U=!1},!0));var vU=e=>{let t=e.querySelector(`.row-title`);return!!t&&t.scrollWidth>t.clientWidth};function yU(e,t){let[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null),o=()=>{i.current!==null&&window.clearTimeout(i.current),i.current=null},s=e=>{o(),i.current=window.setTimeout(()=>r(e.getBoundingClientRect()),gU)},c=()=>{o(),r(null)};return(0,g.useEffect)(()=>{let e=a.current,n=e?.closest(`.rail`);if(!t||!e||!n||!_U||!n.contains(document.activeElement)||!vU(e))return;let i=()=>{o(),r(null)},c=e=>{e.relatedTarget instanceof Node&&n.contains(e.relatedTarget)||i()};return s(e),n.addEventListener(`focusout`,c),()=>{n.removeEventListener(`focusout`,c),i()}},[t]),(0,g.useEffect)(()=>()=>{i.current!==null&&window.clearTimeout(i.current)},[]),{ref:e=>{a.current=e},onPointerEnter:e=>{e.pointerType===`touch`||!vU(e.currentTarget)||s(e.currentTarget)},onPointerLeave:c,hide:c,tip:n?(0,aH.createPortal)((0,V.jsx)(`div`,{className:iE,role:`tooltip`,style:{top:n.top+n.height/2,left:n.right+8},children:e}),document.body):null}}function bU({at:e}){let t=new Date(e);if(Number.isNaN(t.getTime()))return null;let n=wD(t);return(0,V.jsxs)(`span`,{className:`text-subtle`,title:z(`rail.startsAt`,{time:t.toLocaleString()}),children:[`◷ `,n]})}var xU=150,SU=128,CU=0,wU=2,TU=[{reach:.96,grow:1.5,pulse:.9,done:104},{reach:.72,grow:1.1,pulse:1.2,done:84},{reach:1,grow:1.7,pulse:.7,done:116},{reach:.84,grow:1.3,pulse:1,done:96},{reach:.62,grow:1.2,pulse:1.3,done:80}],EU=`/-\\|`,DU=6,OU=(e,t,n,r)=>{let i=e[n];i&&t>=0&&t<i.length&&(i[t]=r)};function kU(e,t){let n=Math.min(64,Math.max(24,Math.floor(t))),r=(Math.floor(e)%xU+xU)%xU,i=Array.from({length:11},()=>Array(n).fill(` `)),a=Array.from({length:11},()=>Array(n).fill(` `));OU(a,CU,0,`o`);let o=wU+2*(TU.length-1),s=Math.min(o,Math.floor(r/2));for(let e=1;e<=s;e++)OU(i,CU,e,`|`);if(TU.forEach((e,t)=>{let o=wU+2*t,s=2*o;if(r<s)return;OU(i,CU,o,`+`);let c=n-1-1,l=1+Math.max(1,Math.floor(c*e.reach)),u=Math.min(l,1+Math.floor((r-s)*e.grow)),d=r>=e.done&&u===l;for(let t=1;t<u;t++)!d&&((t-Math.floor(r*e.pulse))%DU+DU)%DU===0?OU(a,t,o,`=`):OU(i,t,o,`-`);d?OU(a,u,o,`o`):u<l?OU(a,u,o,`>`):OU(a,u,o,EU[(Math.floor(r/2)+t)%4]??`-`)}),r>=SU){let e=Math.ceil((r-SU+1)/22*(n+1));for(let t of[i,a])for(let r of t)r.fill(` `,0,Math.min(n,e))}return{base:i.map(e=>e.join(``)).join(`
|
|
127
127
|
`),accent:a.map(e=>e.join(``)).join(`
|
|
128
|
-
`)}}var JU=`min-h-0 w-full overflow-y-auto`,YU=`mx-auto mt-[min(16vh,8rem)] flex w-full max-w-130 flex-col gap-4 px-5 pb-7`,XU=`relative grid w-full select-none overflow-hidden font-mono text-(length:--fs-body) text-subtle [contain:layout_paint]`,ZU=`col-start-1 row-start-1 m-0 whitespace-pre font-[inherit] leading-[inherit]`,QU=`invisible absolute top-0 left-0 whitespace-pre`,$U=1.3,eW=`0000000000`,tW=1e3/12;function nW(){let e=(0,g.useRef)(null),t=(0,g.useRef)(null),n=(0,g.useRef)(null),r=(0,g.useRef)(null);return(0,g.useEffect)(()=>{let i=e.current,a=t.current,o=n.current,s=r.current;if(!i||!a||!o||!s)return;let c=window.matchMedia(`(prefers-reduced-motion: reduce)`),l=24,u=90,d=0,f=0,p=0,m=-1,h=!0,g=()=>{let e=qU(u,l);o.textContent=e.base,s.textContent=e.accent},_=()=>{let e=a.getBoundingClientRect().width/10;e>0&&(l=Math.min(64,Math.max(24,Math.floor(i.clientWidth/e)))),g()},v=e=>{d=requestAnimationFrame(v);let t=p+Math.floor((e-f)/tW);t!==m&&(m=t,u=t,g())},y=()=>{cancelAnimationFrame(d),d=0},b=()=>{y(),c.matches?(u=90,g()):h&&document.visibilityState===`visible`&&(f=performance.now(),p=u,m=-1,d=requestAnimationFrame(v))},x=new ResizeObserver(_);x.observe(i),_(),b();let S=new IntersectionObserver(e=>{h=e[e.length-1]?.isIntersecting??!0,b()});return S.observe(i),c.addEventListener(`change`,b),document.addEventListener(`visibilitychange`,b),()=>{y(),x.disconnect(),S.disconnect(),c.removeEventListener(`change`,b),document.removeEventListener(`visibilitychange`,b)}},[]),(0,V.jsxs)(`div`,{ref:e,"aria-hidden":`true`,"data-field":`first-run-art`,className:XU,style:{height:`${11*$U}em`,lineHeight:$U},children:[(0,V.jsx)(`span`,{ref:t,className:QU,children:eW}),(0,V.jsx)(`pre`,{ref:n,className:ZU}),(0,V.jsx)(`pre`,{ref:r,className:`${ZU} text-accent`})]})}function rW(e){let t=q(`doctor`,`fix.humanOnlyWhy`),n=[];if(e.git||n.push({id:`git`,label:q(`doctor`,`fix.git`),action:q(`doctor`,`fix.gitAction`),why:t}),e.engines.length===0){let r=e.signedOut.length>0;n.push({id:`engine`,label:q(`doctor`,r?`fix.noEngineLogin`:`fix.noEngine`),action:q(`doctor`,r?`fix.noEngineLoginAction`:`fix.noEngineAction`,{list:e.signedOut.map(e=>e.id).join(`, `)}),why:t})}return n}function iW({model:e}){B(),v(Xr);let[t,n]=(0,g.useState)(()=>Hs(e,`welcome.env`)??null);(0,g.useEffect)(()=>{let t=!0;return Ws(e,`welcome.env`).then(e=>t&&n(e)).catch(()=>{}),()=>{t=!1}},[e]);let r=t===null?null:t.engines.length>0?{key:`enginesFound`,warn:!1,list:t.engines.map(e=>e.name).join(`, `)}:t.signedOut.length>0?{key:`enginesSignedOut`,warn:!0,list:t.signedOut.map(e=>e.name).join(`, `)}:{key:`enginesMissing`,warn:!0,list:``},i=t!==null&&(t.engines.length===0||!t.git)?rW(t):[];return(0,V.jsx)(`div`,{className:JU,"data-field":`welcome`,children:(0,V.jsxs)(`div`,{className:YU,children:[(0,V.jsx)(nW,{}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,V.jsx)(`h1`,{className:`m-0 font-sans text-title font-semibold text-ink`,children:z(`firstRun.title`)}),(0,V.jsx)(`p`,{className:`m-0 font-sans text-body text-muted`,children:z(`firstRun.body`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(`button`,{type:`button`,className:Pe(),"data-field":`start-first-task`,onClick:()=>aO(t?.start?.repo),children:z(`firstRun.start`)}),(0,V.jsx)(`span`,{className:`keys-only mono text-meta text-subtle`,children:ai(`task.new.global`)})]}),t!==null&&r!==null&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5 font-sans text-meta`,children:[(0,V.jsx)(`p`,{className:`m-0 ${r.warn?`text-warning`:`text-subtle`}`,children:q(`workspace`,`welcome.${r.key}`,{list:r.list})}),!t.git&&(0,V.jsx)(`p`,{className:`m-0 text-warning`,children:q(`workspace`,`welcome.gitMissing`)}),i.map(e=>(0,V.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,V.jsx)(`p`,{className:`m-0 text-warning`,children:e.label}),(0,V.jsx)(`p`,{className:`mono m-0 text-accent`,children:e.action}),(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:e.why})]},e.id)),i.length>0&&(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:q(`common`,`failureHint`,{command:`rove doctor`})})]})]})})}function aW(e,t){e.preventDefault(),sn.set({x:e.clientX,y:e.clientY,items:t,target:e.currentTarget,fromKeyboard:e.button!==2})}function oW({model:e,narrow:t}){let n=B(),r=v(e.tasks),i=v(e.remote),a=DE(e),o=v(e.tabs),s=v(e.tabsSettled),c=v(e.selection),l=r?.tasks??[],u=r?.attention.filter(e=>e.unread).length??0,d=c.taskId,f=new Map([...l,...i].map(e=>[e.id,e])),p=TU(),m=v(GT),h=v(RT)===`state`,_=v(KT),y=e=>(h?hO:ww)({tasks:l,remote:i,machines:a,sort:p.sort,query:e,fold:{...p.hand,selectedId:d??void 0}}),b=y(p.search.active?p.search.query:``),{groups:x}=b,S=p.search.active?b.rows:AH(Ew(jU(gO(HH(b.rows,o,c.taskId,s,_)),o),p.collapsed),r?.archived??[],p.archivedOpen,{...p.hand,selectedId:d??void 0}),C=e=>e.filter(e=>e.kind!==`project`&&e.kind!==`state`&&e.kind!==`round`),w=(n===`zh`?jr:Ar).machine,T=new Set(a.filter(e=>e.state!==`online`).map(e=>e.alias)),E=x.find(e=>e.tasks.some(e=>e.kind===`main`))?.repo,D=e=>({mainTaskId:x.find(t=>t.repo===e)?.tasks.find(e=>e.kind===`main`)?.id??null,label:qC(e),first:e===E}),O=BH(e,l,!p.search.active&&!h,p.sort==="default",D),k=O.places(S),A=()=>W.set((0,V.jsx)(GP,{model:e})),j=kU(e,S,p,{selectedId:d,onNewTask:aO,onSettings:A}),ee=_!==null&&S.some(e=>e.id===_),M=j.setCursor;(0,g.useEffect)(()=>{ee&&_!==null&&M(_)},[ee,_,M]);let N=C(y(``).rows).length,P=(0,g.useRef)(null),F=v(uI)&&!t,I=v(dI)&&F,te=t?l.find(e=>e.id===c.taskId&&!e.deleting)??null:null;return(0,V.jsxs)(`nav`,{className:`${oE} ${F?`is-folded`:``}`,ref:P,inert:F&&!I,"aria-hidden":F&&!I,onMouseEnter:F?()=>pI(!0):void 0,onMouseLeave:F?()=>pI(!1):void 0,tabIndex:0,onKeyDown:e=>{LF(`sidebar`),j.onKeyDown(e)},children:[(0,V.jsxs)(`header`,{className:sE,children:[(0,V.jsxs)(`span`,{className:`${Ut} mr-auto`,children:[(0,V.jsx)(`span`,{className:Wt,children:`[`}),` rove `,(0,V.jsx)(`span`,{className:Wt,children:`]`})]}),(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(`button`,{type:`button`,className:`m-0 text-meta font-medium normal-nums inbox-chip relative ${er} ${Ge} ${u>0?`text-accent`:`text-muted`}`,onClick:()=>W.set((0,V.jsx)(FT,{model:e})),children:z(`rail.inbox`,{count:u})}),(0,V.jsx)(AF,{model:e,bindingId:`inbox.show`,head:!0})]}),(0,V.jsx)(UM,{})]}),m&&(0,V.jsxs)(`div`,{className:`flex gap-1 px-3.5 pb-2 text-meta mono`,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:q(`tasks`,`moveChip`).trim()}),(0,V.jsx)(`span`,{className:`keys-only ml-1.5 text-muted`,children:(0,V.jsx)(AT,{text:z(`taskops.moveHint`)})})]}),p.search.active&&(0,V.jsx)(NU,{query:p.search.query,count:`${C(S).length}/${N}`,onChange:e=>p.setSearch(t=>({...t,query:e}))}),(0,V.jsx)(rL,{model:e}),(0,V.jsx)(xH,{model:e}),(0,V.jsxs)(`div`,{"data-rail-body":!0,className:mE(O.dragging!==null),...O.body,children:[r&&l.length===0&&i.length===0&&t&&(0,V.jsx)(iW,{model:e}),r&&l.length===0&&i.length===0&&!t&&(0,V.jsx)(`p`,{className:`m-0 px-2 py-3 font-mono text-meta text-subtle`,children:z(`rail.empty`)}),te&&(0,V.jsx)(HI,{title:te.title}),S.map((t,n)=>t.kind===`round`?(0,V.jsx)(MU,{row:t,guides:t.depth>1?RH(S,n):void 0,repo:h&&t.depth===1?pO(t.tasks[0]):void 0,cursor:t.id===j.cursor,place:k(t),onClick:()=>j.setCursor(t.id)},t.id):t.kind===`pane`?(0,V.jsx)(rU,{model:e,row:t,guides:RH(S,n),cursor:t.id===j.cursor,place:k(t),onClick:()=>{j.setCursor(t.id),nU(e,t),_a()},onMenu:n=>{j.setCursor(t.id),aW(n,QH(e,t.task.id,t.tab,t.leaf))}},t.id):(0,V.jsx)(sW,{row:t,guides:t.kind===`task`&&t.depth>1?RH(S,n):void 0,cloud:wE(t,a,w),repo:h&&t.kind===`task`&&t.depth===1?pO(t.task):void 0,tabs:t.kind===`task`?o[t.task.id]:void 0,selected:t.id===d,cursor:t.id===j.cursor,stale:t.machine!==void 0&&T.has(t.machine),collapsed:(t.kind===`project`||t.kind===`state`)&&p.collapsed.has(t.id),drag:O.props(t),dragging:O.dragging===t.id,place:k(t),onNewTask:t.kind===`project`?t.noProject?oO:()=>aO(t.repo,t.machine):void 0,moving:m&&t.machine===void 0&&(t.kind===`project`?!t.noProject&&D(t.repo).mainTaskId===j.cursor:t.id===j.cursor&&(t.kind!==`task`||t.task.kind!==`main`)),prTasks:t.kind===`task`?[t.task,...(t.fold?.descendantIds??[]).flatMap(e=>f.get(e)??[])]:void 0,rollup:t.kind===`task`&&t.fold?.collapsed?eI([t.task,...t.fold.descendantIds.flatMap(e=>f.get(e)??[])]):void 0,onToggleFold:()=>{t.kind===`task`&&p.toggleTaskFold(t.id,t.fold?.collapsed===!0),t.kind===`archived`&&p.toggleArchived()},onClick:()=>{j.setCursor(t.id),t.kind===`archived`&&p.toggleArchived(),(t.kind===`project`||t.kind===`state`)&&p.toggleProject(t.id),t.kind===`task`&&OU(e,t.task.id)},onMenu:n=>{if(t.kind!==`project`||t.machine===void 0){if(t.kind===`project`&&t.noProject){aW(n,mU(e));return}if(t.kind===`project`){let r=D(t.repo);r.mainTaskId&&S.some(e=>e.id===r.mainTaskId)&&j.setCursor(r.mainTaskId),aW(n,pU(e,t.repo,r));return}t.kind===`task`&&(j.setCursor(t.id),aW(n,uW(lW(_U(e,t.task,null),t.fold,()=>p.toggleTaskFold(t.id,t.fold?.collapsed===!0)),tU(e,t.task.id))))}}},t.id))]}),(0,V.jsx)(VH,{model:e,narrow:t,onSettings:A}),(0,V.jsx)(UI,{pane:`sidebar`}),!t&&!F&&(0,V.jsx)(LI,{rail:P})]})}function sW(e){let{row:t}=e,n=LU(t.kind===`task`?t.task.label:``,e.cursor&&t.kind===`task`),r=e.cursor?hE:``;if(t.kind===`project`||t.kind===`state`)return(0,V.jsxs)(`h2`,{className:gE({moving:e.moving,dragging:e.dragging}),onContextMenu:e.onMenu,...e.place,...e.drag,children:[(0,V.jsxs)(`button`,{type:`button`,className:vE,title:t.kind===`project`&&!t.noProject?t.repo:void 0,"aria-expanded":!e.collapsed,onClick:e.onClick,children:[(0,V.jsx)(`span`,{className:`truncate`,children:t.label}),t.kind===`state`&&(0,V.jsx)(`span`,{className:`font-normal text-subtle`,children:t.count}),(0,V.jsx)(Ia,{right:e.collapsed,className:yE(!!e.collapsed)})]}),e.onNewTask&&t.kind===`project`&&(0,V.jsx)(`button`,{type:`button`,className:bE,title:z(`rail.newTask`),onClick:e.onNewTask,children:`+`})]});if(t.kind===`archived`)return(0,V.jsx)(`button`,{type:`button`,className:`${nr({moving:e.moving||e.dragging})} ${r}`,"aria-expanded":t.expanded,onClick:e.onClick,...e.place,children:(0,V.jsx)(`span`,{className:`${ir} ${e.stale?`text-subtle`:`text-muted`}`,children:q(`tasks`,`archivedRow`,{count:t.count})})});let i=t.task,a=i.rowStatus?.kind===`running`,o=KP(i);return(0,V.jsxs)(`button`,{type:`button`,ref:n.ref,className:`${nr({selected:e.selected,moving:e.moving||e.dragging})} ${r}`,onClick:e.onClick,onContextMenu:e.onMenu,onPointerEnter:n.onPointerEnter,onPointerLeave:n.onPointerLeave,...e.place,...e.drag,children:[n.tip,e.guides&&(0,V.jsx)(`span`,{className:`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${ir} ${e.stale?`text-subtle`:``} ${a?ar:``}`,children:t.attempt??i.label}),(0,V.jsxs)(`span`,{className:`${sr} ml-auto items-center`,children:[e.repo&&(0,V.jsx)(`span`,{className:`max-w-24 truncate text-subtle`,children:e.repo}),t.level!==void 0&&(0,V.jsx)(`span`,{className:`text-subtle`,children:t.level}),(i.extraRepoCount??0)>0&&(0,V.jsxs)(`span`,{className:`text-subtle`,title:z(`rail.extraRepos`,{count:i.extraRepoCount??0}),children:[`+`,i.extraRepoCount]}),o&&(0,V.jsxs)(`span`,{className:`text-subtle tabular-nums`,title:z(`rail.todos`,o),children:[o.done,`/`,o.total]}),t.fold?.collapsed&&(0,V.jsx)(cW,{count:t.fold.count,onUnfold:e.onToggleFold}),i.kept&&(0,V.jsx)(`span`,{className:`text-accent`,title:z(`compare.kept`),children:`✓`}),i.pinned&&(0,V.jsx)(`span`,{className:`text-subtle`,children:`▴`}),i.startsAt&&(0,V.jsx)(RU,{at:i.startsAt}),(0,V.jsx)(OH,{tasks:e.prTasks??[i],onOpen:n.hide}),(0,V.jsx)(sR,{status:t.fold?.collapsed?e.rollup:i.rowStatus}),e.cloud&&(0,V.jsx)(TE,{label:e.cloud})]})]})}function cW(e){let t=q(`tasks`,`menu.expandChildren`);return(0,V.jsxs)(`span`,{role:`button`,tabIndex:-1,"aria-label":t,"aria-expanded":!1,className:`chip text-muted ${tE}`,title:t,onClick:t=>{t.stopPropagation(),e.onUnfold()},children:[e.count,(0,V.jsx)(Ia,{right:!0})]})}function lW(e,t,n){if(!t)return e;let r={label:q(`tasks`,t.collapsed?`menu.expandChildren`:`menu.collapseChildren`),section:`open`,run:n},i=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,i+1),r,...e.slice(i+1)]}function uW(e,t){let n=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,n+1),...t,...e.slice(n+1)]}function dW(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`[::1]`||/^127(\.\d{1,3}){3}$/.test(e)}var fW=/^(localhost|127(\.\d{1,3}){3}|\[::1\])(:\d+)?([/?#]|$)/i,pW=/^[a-z][a-z0-9+.-]*:(?!\d+([/?#]|$))/i;function mW(e){let t=e.trim();if(!t||/\s/.test(t)||pW.test(t)&&!/^https?:\/\//i.test(t))return null;let n=/^https?:\/\//i.test(t)?t:fW.test(t)?`http://${t}`:`https://${t.replace(/^\/\//,``)}`;try{let e=new URL(n);return e.hostname?e.href:null}catch{return null}}function hW(e,t,n=dW(t.hostname)){let r=new URL(e);return r.origin===t.origin?`self`:dW(r.hostname)?n?`yes`:`remote`:r.protocol===`https:`?`yes`:`unreachable`}function gW(e,t,n){let r=new URL(e).host;return t===`self`?{key:`self`,host:r}:t===`remote`?{key:`remote`,host:r}:t===`unreachable`?{key:`noFrame`,host:r}:n&&!n.reachable?{key:`unreachable`,host:r}:n&&!n.frameable?{key:`refuses`,host:r}:null}var _W=6e4,vW=new Map;function yW(e){let t=vW.get(e);return t&&Date.now()-t.at<_W?t:null}function bW(e,t,n){let[,r]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(!n||yW(t))return;let i=!0;return e.request(`browser.probe`,{url:t,origin:window.location.origin}).then(e=>vW.set(t,{probe:e,at:Date.now()}),()=>vW.set(t,{probe:null,at:Date.now()})).then(()=>i&&r(e=>e+1)),()=>{i=!1}},[e,t,n]);let i=n?yW(t):null;return{pending:n&&!i,probe:i?.probe??null}}function xW({d:e}){return(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:e})})}var SW=`M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5l-5 5`;function CW({model:e,tab:t,onNavigate:n,onStep:r}){B();let i=ok(t),[a,o]=(0,g.useState)(i),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(0),d=v(e.client.conn).hello?.peer?.local,f=i?hW(i,window.location,d):null;(0,g.useEffect)(()=>{o(i),c(!1)},[i]);let p=e=>{let t=mW(e);c(t===null&&e.trim()!==``),t!==null&&(o(t),t===i?u(l+1):n(t))},m=i?new URL(i).hostname:``,h=f===`yes`&&i.startsWith(`https:`)&&!dW(m),{pending:_,probe:y}=bW(e.client,i,h),b=i&&f?gW(i,f,y):null,x=f===`yes`&&!b&&!_,S=b?z(`browser.${b.key}`,{host:b.host}):f===null?z(s?`browser.invalid`:`browser.empty`):null;return(0,V.jsxs)(`div`,{className:jI,children:[(0,V.jsxs)(`form`,{className:MI,onSubmit:e=>{e.preventDefault(),p(a)},children:[(0,V.jsx)(`button`,{type:`button`,className:gI({small:!0}),disabled:t.at<=0,title:z(`browser.back`),"aria-label":z(`browser.back`),onClick:()=>r(t.at-1),children:(0,V.jsx)(xW,{d:`M10 3.5 5.5 8l4.5 4.5`})}),(0,V.jsx)(`button`,{type:`button`,className:gI({small:!0}),disabled:t.at>=t.urls.length-1,title:z(`browser.forward`),"aria-label":z(`browser.forward`),onClick:()=>r(t.at+1),children:(0,V.jsx)(xW,{d:`M6 3.5 10.5 8 6 12.5`})}),(0,V.jsx)(`button`,{type:`button`,className:gI({small:!0}),disabled:!x,title:z(`browser.reload`),"aria-label":z(`browser.reload`),onClick:()=>u(l+1),children:(0,V.jsx)(xW,{d:`M12.5 8a4.5 4.5 0 1 1-1.4-3.3M12.5 2.5v2.7H9.8`})}),(0,V.jsx)(`input`,{className:`browser-url mono ${NI}`,value:a,placeholder:z(`browser.placeholder`),"aria-label":z(`browser.address`),"aria-invalid":s,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,inputMode:`url`,onChange:e=>o(e.target.value)}),i?(0,V.jsx)(`a`,{className:gI({small:!0}),href:i,target:`_blank`,rel:`noopener noreferrer`,title:z(`browser.openTab`),"aria-label":z(`browser.openTab`),children:(0,V.jsx)(xW,{d:SW})}):(0,V.jsx)(`button`,{type:`button`,className:gI({small:!0}),disabled:!0,"aria-label":z(`browser.openTab`),children:(0,V.jsx)(xW,{d:SW})})]}),x?(0,V.jsx)(`iframe`,{className:PI,src:i,title:i,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,referrerPolicy:`no-referrer`},`${i}#${l}`):S?(0,V.jsx)(`p`,{className:AI,children:S}):null]})}var wW=`scrollbar-none flex min-h-0 flex-1 flex-col overflow-y-auto p-2.5`,TW=`m-0 p-3 font-mono text-meta text-muted`,EW=`flex flex-col gap-1.5 rounded-sm border-hairline border-line px-3 py-2.5`,DW=`m-0 font-sans text-meta font-medium text-ink`,OW=`flex items-baseline justify-between gap-3 font-mono text-meta normal-nums`,kW=`flex h-1 w-full overflow-hidden rounded-full bg-inset`,AW=`h-full flex-none`,jW=`m-0 mt-1 flex list-none flex-col gap-1 p-0`,MW=`flex min-w-0 items-center gap-2 font-mono text-meta normal-nums`,NW=`size-2 flex-none rounded-xs bg-line`,PW=`min-w-0 flex-1 truncate text-muted`,FW=`flex-none text-right text-ink`,IW=`w-[6ch] flex-none text-right text-muted`,LW=1e4,RW=[`var(--info)`,`var(--accent)`,`var(--success)`,`var(--warning)`];function zW({model:e,task:t,active:n}){B();let r=v(e.client.conn),i=v(e.selection),a=v(e.tabs)[t.id]??[],o=i.taskId===t.id?a.find(e=>e.id===i.tabId):void 0,s=(o?.kind===`engine`?o:a.find(e=>e.kind===`engine`))?.id??null,[c,l]=(0,g.useState)({kind:`loading`});if((0,g.useEffect)(()=>{if(!n||r.state!==`open`)return;if(!s){l({kind:`ready`,meter:null});return}let i=!0,a=()=>e.client.request(`context.usage`,{taskId:t.id,tabId:s}).then(e=>i&&l({kind:`ready`,meter:e.meter})).catch(e=>i&&l(t=>t.kind===`ready`?t:{kind:`failed`,error:bL(e)}));a();let o=window.setInterval(a,LW);return()=>{i=!1,window.clearInterval(o)}},[e,n,r.state,t.id,s]),c.kind===`loading`)return(0,V.jsx)(`p`,{className:TW,children:z(`context.loading`)});if(c.kind===`failed`)return(0,V.jsx)(`p`,{className:TW,children:z(`context.failed`,{error:c.error})});if(!c.meter)return(0,V.jsx)(`p`,{className:TW,children:z(`context.none`)});let u=c.meter,d=u.rows.filter(e=>e.share!==void 0),f=e=>e.share===void 0?void 0:RW[d.indexOf(e)%RW.length];return(0,V.jsx)(`div`,{className:wW,children:(0,V.jsxs)(`section`,{className:EW,children:[(0,V.jsx)(`h3`,{className:DW,children:z(`context.title`)}),(0,V.jsxs)(`div`,{className:OW,children:[(0,V.jsx)(`span`,{className:`text-ink`,children:u.percent===null?z(`context.usedTokens`,{tokens:BW(u.used)}):z(`context.used`,{percent:VW(u.percent)})}),u.window!==null&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[BW(u.used),` / `,BW(u.window)]})]}),(0,V.jsx)(`div`,{className:kW,role:`meter`,"aria-valuenow":Math.round(u.percent??100),"aria-valuemin":0,"aria-valuemax":100,children:d.map(e=>(0,V.jsx)(`span`,{className:AW,style:{width:`${e.share}%`,background:f(e)}},e.key))}),(0,V.jsx)(`ul`,{className:jW,children:u.rows.map(e=>{let t=z(`context.part.${e.key}`),n=f(e);return(0,V.jsxs)(`li`,{className:MW,children:[(0,V.jsx)(`span`,{className:NW,style:n?{background:n}:void 0}),(0,V.jsx)(`span`,{className:PW,title:t,children:t}),(0,V.jsx)(`span`,{className:FW,children:BW(e.tokens)}),(0,V.jsx)(`span`,{className:IW,children:VW(e.tokens/(u.window??u.used)*100)})]},e.key)})}),u.approximate&&(0,V.jsx)(`p`,{className:`m-0 font-mono text-meta text-subtle`,children:z(`context.approximate`)})]})})}function BW(e){return e>=1e6?`${+(e/1e6).toFixed(1)}M`:e>=1e3?`${+(e/1e3).toFixed(1)}k`:String(e)}function VW(e){return e>0&&e<.1?`<0.1%`:`${e<10?+e.toFixed(1):Math.round(e)}%`}var HW=3;function UW({model:e,task:t}){B();let n=t.autoFixCi,r=n=>void e.client.request(`task.autoFixCi`,{taskId:t.id,enabled:n}).catch(e=>G(e instanceof Error?e.message:String(e),`error`));return(0,V.jsx)(`div`,{className:`flex items-center gap-3 px-2 pt-1 font-mono text-meta`,children:n?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:n.stopped?jT.attention:`text-muted`,title:z(`files.autoFix.hint`),children:z(n.stopped?`files.autoFix.stopped`:`files.autoFix.count`,{n:n.attempts,max:HW})}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>r(!1),children:z(`files.autoFix.off`)})]}):(0,V.jsx)(H,{hit:`tight`,title:z(`files.autoFix.hint`),onClick:()=>r(!0),children:z(`files.autoFix.on`)})})}function WW(e){let t=e.pr;return!!t&&t.number!==void 0&&!e.machine&&(t.lifecycle===`open`||t.lifecycle===`ready_to_merge`)}function GW(e){let t={fail:0,pending:0,pass:0,skipped:0};for(let n of e)t[n.state]++;return t}function KW(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m${String(t%60).padStart(2,`0`)}s`:`${Math.floor(n/60)}h${String(n%60).padStart(2,`0`)}m`}function qW(e){let t=[],n=e.mergeState.toUpperCase();e.draft&&t.push({key:`files.merge.draft`,tone:`warning`}),e.mergeable.toUpperCase()===`CONFLICTING`||n===`DIRTY`?t.push({key:`files.merge.conflicts`,tone:`attention`}):n===`BEHIND`?t.push({key:`files.merge.behind`,tone:`warning`}):n===`UNSTABLE`?t.push({key:`files.merge.unstable`,tone:`warning`}):n===`BLOCKED`?t.push({key:`files.merge.blocked`,tone:`warning`}):n===`CLEAN`&&!e.draft&&t.push({key:`files.merge.clean`,tone:`success`});let r=e.review.toUpperCase();return r===`APPROVED`?t.push({key:`files.merge.approved`,tone:`success`}):r===`CHANGES_REQUESTED`?t.push({key:`files.merge.changes`,tone:`attention`}):r===`REVIEW_REQUIRED`&&t.push({key:`files.merge.reviewRequired`,tone:`warning`}),t}var JW=`flex flex-col gap-0.5 px-2 pb-2 font-mono text-meta`,YW=`flex items-start gap-2`,XW=`flex min-w-0 flex-1 flex-wrap items-center gap-x-2 text-left text-ink`,ZW={pass:{glyph:`✓`,tone:`success`},fail:{glyph:`✗`,tone:`attention`},pending:{glyph:`●`,tone:`warning`},skipped:{glyph:`–`,tone:`muted`}};function QW({model:e,task:t}){B();let n=t.pr,r=t.id,[i,a]=(0,g.useState)(()=>Hs(e,`pr.checks`,{taskId:r})??null),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)({}),[u,d]=(0,g.useState)(0),f=`${n?.number}:${n?.checkState}:${n?.mergeable}:${n?.reviewDecision}`;(0,g.useEffect)(()=>{let t=!0,n={taskId:r};return e.client.request(`pr.checks`,u>0?{...n,fresh:!0}:n).then(r=>{t&&(Us(e,`pr.checks`,n,r),a(r))},e=>t&&a({outcome:`unavailable`,detail:e instanceof Error?e.message:String(e)})),()=>{t=!1}},[e,r,f,u]);let p=t=>{let n=`${t.runId}:${t.name}`;if(c[n]){l(({[n]:e,...t})=>t);return}l(e=>({...e,[n]:{state:`loading`}})),e.client.request(`pr.checkLog`,{taskId:r,runId:t.runId,job:t.name}).then(e=>e.outcome===`ok`?{state:`text`,text:e.tail}:e.outcome===`none`?{state:`note`,text:z(`files.checks.noLog`)}:{state:`note`,text:z(`files.checks.logUnavailable`,{detail:e.detail})}).catch(e=>({state:`note`,text:z(`files.checks.logUnavailable`,{detail:e instanceof Error?e.message:String(e)})})).then(e=>l(t=>n in t?{...t,[n]:e}:t))},m=(0,V.jsx)(H,{hit:`tight`,className:`flex-none whitespace-nowrap`,onClick:()=>d(e=>e+1),children:z(`files.checks.refresh`)});if(!i)return(0,V.jsx)(`div`,{className:JW,children:(0,V.jsx)(`div`,{className:YW,children:(0,V.jsxs)(`span`,{className:`flex-1 text-muted`,children:[z(`files.checks.title`),` `,z(`files.checks.loading`)]})})});if(i.outcome!==`ok`)return(0,V.jsx)(`div`,{className:JW,children:(0,V.jsxs)(`div`,{className:YW,children:[(0,V.jsx)(`span`,{className:`min-w-0 flex-1 text-muted wrap-anywhere`,children:i.outcome===`none`?z(`files.checks.none`):z(`files.checks.unavailable`,{detail:i.detail})}),m]})});let h=GW(i.checks),_=o??(h.fail>0||h.pending>0),v=qW(i);return(0,V.jsxs)(`div`,{className:JW,children:[(0,V.jsxs)(`div`,{className:YW,children:[(0,V.jsxs)(H,{variant:`row`,className:XW,"aria-expanded":_,disabled:i.total===0,onClick:()=>s(!_),children:[i.total>0&&(0,V.jsx)(Ia,{right:!_}),(0,V.jsx)(`span`,{children:i.total===0?z(`files.checks.none`):z(`files.checks.summary`,{pass:h.pass+h.skipped,total:i.total})}),h.fail>0&&(0,V.jsx)(`span`,{className:jT.attention,children:z(`files.checks.failed`,{count:h.fail})}),h.pending>0&&(0,V.jsx)(`span`,{className:jT.warning,children:z(`files.checks.running`,{count:h.pending})}),v.map(e=>(0,V.jsx)(`span`,{className:jT[e.tone],children:z(e.key)},e.key))]}),m]}),_&&i.checks.map(e=>{let{glyph:t,tone:n}=ZW[e.state],r=`${e.runId}:${e.name}`,i=c[r];return(0,V.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2 pl-4`,children:[(0,V.jsx)(`span`,{className:`w-[1ch] flex-none text-center ${jT[n]}`,children:t}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.name,children:e.name}),e.durationMs!==null&&(0,V.jsx)(`span`,{className:`flex-none text-subtle`,children:KW(e.durationMs)}),e.state===`fail`&&e.runId&&(0,V.jsx)(H,{hit:`tight`,className:`flex-none whitespace-nowrap`,onClick:()=>p(e),children:z(i?`files.checks.hideLog`:`files.checks.log`)})]}),i&&(0,V.jsx)(`pre`,{className:`m-0 ml-4 mb-1 max-h-40 overflow-y-auto rounded-sm border-hairline border-line bg-inset px-2 py-1.5 whitespace-pre-wrap wrap-anywhere text-muted`,children:i.state===`loading`?z(`files.checks.loading`):i.text})]},`${e.name}:${e.url}`)}),_&&i.total>i.checks.length&&(0,V.jsx)(`span`,{className:`pl-4 text-subtle`,children:z(`files.checks.more`,{count:i.total-i.checks.length})})]})}function $W({model:e,task:t}){return WW(t)?(0,V.jsxs)(`div`,{onKeyDown:e=>e.stopPropagation(),children:[(0,V.jsx)(QW,{model:e,task:t}),(0,V.jsx)(UW,{model:e,task:t})]}):null}function eG(e,t){let n={children:new Map,file:!1};for(let t of e){let e=n;for(let n of t.split(`/`)){let t=e.children.get(n);t||(t={children:new Map,file:!1},e.children.set(n,t)),e=t}e.file=!0}let r=[],i=(e,n,a)=>{let o=[...e.children].sort(([e,t],[n,r])=>{let i=t.children.size>0&&!t.file;return i===(r.children.size>0&&!r.file)?e.localeCompare(n):i?-1:1});for(let[e,s]of o){let o=s.children.size>0&&!s.file,c=o?`${n}${e}/`:`${n}${e}`,l=o&&t.has(c);r.push({path:c,name:e,depth:a,dir:o,open:l}),l&&i(s,c,a+1)}};return i(n,``,0),r}var tG={start:`\x1B[200~`,end:`\x1B[201~`};function nG(e,t){return e.engineTarget(t).tabId??e.tabs.get()[t]?.find(e=>e.kind===`engine`)?.id}async function rG(e,t,n){let r=nG(e,t);if(!r)return G(z(`files.stripNoEngine`),`error`),!1;try{return e.selection.get().tabId!==r&&e.select(t,r),await e.client.request(`term.input`,{stream:DC(t,r),data:`${tG.start}${n}${tG.end}`}),G(z(`files.stripFilled`)),!0}catch(e){return G(e instanceof Error?e.message:String(e),`error`),!1}}function iG(e){let t=e.kind===`task`&&!e.noWorktree&&!e.machine&&!e.archived,n=e.changes;return t&&!!n&&`added`in n&&n.added+n.deleted>0}function aG(e){return[...iG(e)?[`commit`]:[],...oG(e)]}function oG(e){let t=e.pr;if(!t)return e.kind===`task`&&!e.noWorktree&&!e.machine&&!e.archived&&!e.sessionPrs?.length?[`createPR`]:[];if(t.lifecycle===`merged`)return e.archived||e.kind===`main`?[]:[`archive`];if(t.lifecycle!==`open`&&t.lifecycle!==`ready_to_merge`)return[];let n=[];return((t.mergeable??``).toUpperCase()===`CONFLICTING`||e.prChip===`conflict`)&&n.push(`conflicts`),t.checkState===`failing`&&n.push(`fixCI`),(t.reviewDecision??``).toUpperCase()===`CHANGES_REQUESTED`&&n.push(`comments`),n}async function sG(e,t,n){try{let r=await e.client.request(`task.prompt`,{taskId:t.id,kind:n});r.outcome===`unavailable`?G(z(`files.stripUnavailable`,{detail:r.detail??``}),`error`):r.outcome===`none`||!r.prompt?G(z(`files.stripNothing`),`error`):await rG(e,t.id,r.prompt)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}}var cG={commit:`files.stripCommit`,createPR:`files.stripCreate`,conflicts:`files.stripConflicts`,fixCI:`files.stripFixCi`,comments:`files.stripComments`,archive:`files.stripArchive`};function lG({model:e,task:t}){let n=aG(t);return n.length===0?null:(0,V.jsx)(`div`,{className:`flex flex-wrap justify-end gap-x-3.5 gap-y-1 px-2 pb-2 font-mono text-meta whitespace-nowrap`,children:n.map(n=>(0,V.jsx)(H,{onClick:()=>n===`archive`?void cF(e,t):void sG(e,t,n),children:z(cG[n])},n))})}var uG=2e3;function dG({model:e,task:t}){B();let n=t.id,r=!t.machine,[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(!1),c=i?.running===!0;if((0,g.useEffect)(()=>{if(!r)return;let t=!0,i=()=>e.client.request(`run.status`,{taskId:n}).then(e=>t&&a(e),()=>{});i();let o=c?window.setInterval(()=>void i(),uG):0;return()=>{t=!1,window.clearInterval(o)}},[e,n,r,c]),!r||!i?.script)return null;let l=async t=>{s(!0);try{a(await e.client.request(t,{taskId:n}))}catch(e){G(e instanceof Error?e.message:String(e),`error`)}finally{s(!1)}};return(0,V.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-x-3.5 gap-y-1 px-2 pb-2 font-mono text-meta whitespace-nowrap`,children:[i.url&&(0,V.jsx)(H,{onClick:()=>i.url&&tA(n,i.url),children:z(`files.run.open`,{port:i.port??``})}),(0,V.jsx)(H,{disabled:o,onClick:()=>void l(c?`run.stop`:`run.start`),children:z(c?`files.run.stop`:`files.run.run`)})]})}function fG({tabs:e,value:t,onChange:n,className:r}){return(0,V.jsx)(`div`,{className:Me(`flex gap-1`,r),role:`tablist`,children:e.map(e=>{let r=e.id===t;return(0,V.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":r,className:Me(`relative rounded-sm px-2.5 py-0.75 font-mono text-meta font-semibold`,`touch:after:absolute touch:after:content-[''] touch:after:-inset-x-0.5 touch:after:-top-2 touch:after:-bottom-1.5`,r?`bg-inset text-ink group-focus-within/pane:text-accent`:`text-muted`),onClick:()=>n(e.id),children:e.label},e.id)})})}var pG=[`all`,`changes`],mG={M:`text-warning`,A:`text-success`,"?":`text-success`,D:`text-error`,R:`text-accent`};function hG({model:e,task:t,narrow:n=!1}){let r=ts();B();let[i,a]=(0,g.useState)(`all`),[o,s]=(0,g.useState)(`working`),[c,l]=(0,g.useState)(()=>Hs(e,`files.list`,{taskId:t.id})?.files??null),[u,d]=(0,g.useState)(()=>Hs(e,`diff.files`,{taskId:t.id})??null),[f,p]=(0,g.useState)(null),[m,h]=(0,g.useState)(new Set),[_,y]=(0,g.useState)(0),[b,x]=(0,g.useState)(0),S=(0,g.useRef)(null),C=v(pn),w=JSON.stringify(t.changes??null);(0,g.useEffect)(()=>{let n=!0,r=e=>n&&p(e instanceof Error?e.message:String(e));return Ws(e,`files.list`,{taskId:t.id}).then(e=>{n&&(l(e.files),p(null))},r),Ws(e,`diff.files`,{taskId:t.id}).then(e=>n&&d(e),r),()=>{n=!1}},[e,t.id,w,b]);let T=u?.base??null,E=i===`all`?c!==null:u!==null,D=o===`branch`&&T!=null,O=i===`all`?eG(c??[],m).map(e=>({path:e.path,label:e.name,depth:e.depth,dir:e.dir,open:e.open})):(u?.files??[]).filter(e=>e.scope===(D?`branch`:`working`)).map(e=>({path:e.path,label:e.path,depth:0,dir:!1,open:!1,status:e.status,added:e.added,deleted:e.deleted})),k=Math.min(_,Math.max(0,O.length-1)),A=O[k],j=(e,t)=>h(n=>{let r=new Set(n);return t??!r.has(e)?r.add(e):r.delete(e),r}),ee=e=>eA({taskId:t.id,path:e,scope:i===`changes`&&D?`branch`:`working`}),M=n=>{if(!C?.startsWith(`${t.id}::`)){G(z(`files.mentionNoEngine`),`error`);return}e.client.request(`term.input`,{stream:C,data:`@${n} `}).catch(e=>G(String(e),`error`))},N=n=>t.machine?G(z(`files.remoteNoExternal`,{host:t.machine.label}),`error`):void e.client.request(`file.openExternal`,{taskId:t.id,path:n}).then(()=>G(z(`taskops.openedExternal`))).catch(e=>G(e instanceof Error?e.message:String(e),`error`));return(0,V.jsxs)(`div`,{className:`group/pane flex min-h-0 min-w-0 flex-1 flex-col outline-none ${n?`px-1.5 pt-2.5 pb-2`:`pt-0.5 pr-1.5 pb-1.5 pl-0`}`,tabIndex:0,ref:S,onKeyDown:e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)y(Math.min(O.length-1,k+1));else if(t===`k`||t===`ArrowUp`)y(Math.max(0,k-1));else if((t===`l`||t===`ArrowRight`)&&A?.dir)j(A.path,!0);else if((t===`h`||t===`ArrowLeft`)&&A?.dir)j(A.path,!1);else if(t===`[`||t===`]`)a(pG[(pG.indexOf(i)+(t===`]`?1:pG.length-1))%pG.length]??`all`);else if(t===`b`&&i===`changes`&&T!=null)s(o===`working`?`branch`:`working`);else if(t===`r`)x(e=>e+1);else if(t===`D`&&e.shiftKey)ee(`.`);else if(t===`d`&&A)ee(A.path);else if(t===`Enter`&&A)A.dir?j(A.path):ee(A.path);else if(t===`a`&&A)M(A.path);else if(t===`o`&&A&&!A.dir)N(A.path);else return;e.preventDefault()},children:[(0,V.jsx)(lG,{model:e,task:t}),(0,V.jsx)($W,{model:e,task:t}),(0,V.jsx)(dG,{model:e,task:t}),(0,V.jsx)(fG,{className:`px-1 pb-1.5`,tabs:[{id:`all`,label:z(`files.all`)},{id:`changes`,label:z(`files.changes`)}],value:i,onChange:e=>{a(e),y(0)}}),i===`changes`&&(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-x-2.5 gap-y-1 px-2 pb-2 font-mono text-meta text-muted`,children:[(0,V.jsx)(`span`,{children:D?z(`files.scopeBranch`,{base:T??``}):z(`files.scopeWorking`)}),T==null?u&&(0,V.jsx)(`span`,{children:z(`files.noBase`)}):(0,V.jsx)(H,{hit:`tight`,onClick:()=>s(o===`working`?`branch`:`working`),children:z(r?`files.toggleScopeTouch`:`files.toggleScope`)}),(0,V.jsx)(AT,{text:z(`files.legend`)}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>ee(`.`),children:z(r?`files.diffAllTouch`:`files.diffAll`)})]}),(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[f&&(0,V.jsx)(`p`,{className:`mono text-error`,children:f}),!f&&E&&O.length===0&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle`,children:z(i===`all`?`files.emptyAll`:`files.emptyChanges`)}),O.map((e,t)=>(0,V.jsxs)(`button`,{type:`button`,className:nr({selected:t===k,size:n?`file-narrow`:`file`}),style:{paddingLeft:8+e.depth*14},title:e.path,onClick:()=>{y(t),S.current?.focus(),e.dir?j(e.path):ee(e.path)},children:[e.status?(0,V.jsx)(`span`,{className:`${or} ${mG[e.status]??``}`,children:e.status}):(0,V.jsx)(`span`,{className:`${or} grid place-items-center text-subtle`,children:e.dir?(0,V.jsx)(Ia,{right:!e.open}):null}),(0,V.jsx)(`span`,{className:rr,children:e.label}),e.added?(0,V.jsxs)(AL,{tone:`added`,children:[`+`,e.added]}):null,e.deleted?(0,V.jsxs)(AL,{tone:`removed`,children:[`−`,e.deleted]}):null]},e.path))]})]})}function gG({children:e}){return(0,V.jsx)(`svg`,{className:`size-3.5 ${hI}`,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:e})}var _G={chat:(0,V.jsx)(`path`,{d:`M3 3.5h10a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H8l-3 2.5v-2.5H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM5 6.5h6M5 8.5h4`}),files:(0,V.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`}),diff:(0,V.jsx)(`path`,{d:`M3.5 2.5h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1zM8 5v4M6 7h4M6 11h4`}),browser:(0,V.jsx)(`path`,{d:`M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2zM2 8h12M8 2c2.2 2 2.2 10 0 12M8 2c-2.2 2-2.2 10 0 12`}),quota:(0,V.jsx)(`path`,{d:`M2 10a6 6 0 1 1 12 0M8 10l2.5-3.5M4 13h8`})};function vG(e){if(e.kind===`files`)return z(`panel.files`);if(e.kind===`chat`)return z(`panel.chat`);if(e.kind===`quota`)return z(`panel.quota`);if(e.kind===`diff`)return e.path===`.`?z(`panel.diff`):sk(e.path);let t=ok(e);return t?ck(t):z(`panel.browser`)}function yG(e){return e.kind===`diff`?e.path===`.`?z(`preview.whole`):e.path:e.kind===`browser`&&ok(e)||vG(e)}var bG=7.3,xG=31,SG=160;function CG(e,t){let n=0;for(let t of e){let e=0;for(let n of t)e+=(n.codePointAt(0)??0)>11903?2:1;n+=Math.min(SG,xG+e*bG)+8}return n<=t}var wG=null;function TG(e,t,n,r){let i=(t,r)=>({label:r,section:`move`,run:()=>Zk(e,e=>kk(e,n.id,t))}),a=[];return!t.bottom&&t.top.tabs.length>1?a.push(i(`bottom`,z(`panel.splitDown`))):t.bottom&&a.push(r===`top`?i(`bottom`,z(`panel.moveBottom`)):i(`top`,z(`panel.moveTop`))),a.push({label:z(`panel.close`),section:`close`,run:()=>nA(e,n.id)}),t.top.tabs.length+(t.bottom?.tabs.length??0)>1&&a.push({label:z(`panel.closeOthers`),section:`close`,run:()=>Zk(e,e=>Ok(e,n.id))}),a}function EG(e,t){return[{label:z(`panel.newChat`),run:()=>Zk(e,e=>xk(e,`chat`))},{label:z(`panel.newFiles`),run:()=>Zk(e,e=>_k(e,t))},{label:z(`panel.newDiff`),run:()=>Zk(e,e=>yk(e,`.`,`working`))},{label:z(`panel.newBrowser`),run:()=>Zk(e,e=>vk(e,t))},{label:z(`panel.newQuota`),run:()=>Zk(e,e=>xk(e,`quota`))}]}function DG({taskId:e,panel:t,group:n,tabs:r,active:i,narrow:a,children:o}){B();let[s,c]=(0,g.useState)(null),l=()=>wG?.taskId===e,u=t=>{let r=wG;wG=null,c(null),r?.taskId===e&&Zk(e,e=>kk(e,r.id,n,t))},d=t=>{let r=t.currentTarget.getBoundingClientRect();sn.set({x:r.left,y:r.bottom+2,items:EG(e,n),target:t.currentTarget})},f=(e,t)=>{if(!l())return;if(e.preventDefault(),e.stopPropagation(),wG?.id===t)return c(null);let n=e.currentTarget.getBoundingClientRect();c({id:t,after:e.clientX>n.left+n.width/2})},p=(0,g.useRef)(null),[m,h]=(0,g.useState)(0);(0,g.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(([e])=>h(e?.contentRect.width??0));return t.observe(e),()=>t.disconnect()},[]);let _=m>0&&!CG(r.map(vG),m);return(0,g.useEffect)(()=>{p.current?.querySelector(`.is-active`)?.scrollIntoView({block:`nearest`,inline:`nearest`})},[i,r.length,_]),(0,V.jsxs)(`div`,{className:xI(a),style:{gridRow:n===`top`?1:4},onDragOver:e=>{l()&&(e.preventDefault(),c(null))},onDrop:e=>{e.preventDefault(),u()},children:[(0,V.jsx)(`div`,{className:SI,role:`tablist`,"aria-label":z(`panel.tabs`),ref:p,children:r.map((r,o)=>(0,V.jsxs)(`div`,{role:`presentation`,className:CI({active:r.id===i,compact:_}),"data-drop":s?.id===r.id?s.after?`after`:`before`:void 0,draggable:!a,onDragStart:()=>{wG={taskId:e,id:r.id}},onDragEnd:()=>{wG=null,c(null)},onDragOver:e=>f(e,r.id),onDrop:e=>{e.preventDefault(),e.stopPropagation(),u(o+(s?.id===r.id&&s.after?1:0))},onMouseDown:e=>{e.button===1&&e.preventDefault()},onAuxClick:t=>{t.button===1&&(t.preventDefault(),nA(e,r.id))},onContextMenu:i=>{a||aW(i,TG(e,t,r,n))},children:[(0,V.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":r.id===i,className:wI(_&&r.id!==i),title:yG(r),onClick:()=>Zk(e,e=>pk(e,r.id)),children:(0,V.jsx)(`span`,{className:TI,children:vG(r)})}),(0,V.jsx)(`button`,{type:`button`,className:`${EI} ${_&&r.id!==i?`hidden`:``}`,"aria-label":z(`panel.close`),tabIndex:-1,onClick:()=>nA(e,r.id),children:`×`})]},r.id))}),!a&&(0,V.jsx)(`button`,{type:`button`,className:gI({tool:!0}),title:z(`panel.new`),"aria-label":z(`panel.new`),onClick:d,children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`})})}),o]})}var OG={md:`md`,markdown:`md`,html:`html`,htm:`html`,svg:`svg`,png:`image`,jpg:`image`,jpeg:`image`,gif:`image`,webp:`image`,pdf:`pdf`};function kG(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=t.lastIndexOf(`.`);return n<0?null:OG[t.slice(n+1).toLowerCase()]??null}function AG(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var jG=e=>new TextDecoder().decode(AG(e));function MG(e,t){if(e===`svg`)return`image/svg+xml`;if(e===`pdf`)return`application/pdf`;let n=t.slice(t.lastIndexOf(`.`)+1).toLowerCase();return n===`jpg`||n===`jpeg`?`image/jpeg`:n===`gif`?`image/gif`:n===`webp`?`image/webp`:`image/png`}var NG=`default-src 'none'; img-src data:; style-src 'unsafe-inline'`;function PG(e){let t=`<meta http-equiv="Content-Security-Policy" content="${NG}">`,n=/^\s*<!doctype[^>]*>/i.exec(e);return n?`${n[0]}${t}${e.slice(n[0].length)}`:`${t}${e}`}var FG=/^\[([^\]\n]+)\]\((https?:\/\/[^\s)]+)\)/,IG=/^https?:\/\/[^\s<>)\]]+/,LG=/[\p{L}\p{N}]/u;function RG(e){let t=[],n=``,r=()=>{n&&t.push({t:`text`,v:n}),n=``},i=0;for(;i<e.length;){let a=e.slice(i),o=e[i]??``;if(o==="`"){let n=e.indexOf("`",i+1);if(n>i+1){r(),t.push({t:`code`,v:e.slice(i+1,n)}),i=n+1;continue}}else if(a.startsWith(`**`)){let n=e.indexOf(`**`,i+2);if(n>i+2){r(),t.push({t:`bold`,c:RG(e.slice(i+2,n))}),i=n+2;continue}}else if(o===`*`||o===`_`&&!LG.test(e[i-1]??``)){let n=e.indexOf(o,i+1);if(n>i+1&&!/\s/.test(e[i+1]??` `)&&(o===`*`||!LG.test(e[n+1]??``))){r(),t.push({t:`em`,c:RG(e.slice(i+1,n))}),i=n+1;continue}}else if(o===`[`){let e=FG.exec(a);if(e){r(),t.push({t:`link`,href:e[2],c:RG(e[1])}),i+=e[0].length;continue}}else if(o===`h`&&!LG.test(e[i-1]??``)){let e=IG.exec(a);if(e){let n=e[0].replace(/[.,;:!?]+$/,``);r(),t.push({t:`link`,href:n,c:[{t:`text`,v:n}]}),i+=n.length;continue}}n+=o,i++}return r(),t}var zG=/^\s*(```+|~~~+)\s*([\w+#.-]*)\s*$/,BG=/^(#{1,6})\s+(.*?)\s*#*\s*$/,VG=/^(\s*)([-*+])\s+(.*)$/,HG=/^(\s*)\d+[.)]\s+(.*)$/,UG=/^\s*([-*_])(\s*\1){2,}\s*$/,WG=/^\s*\|.*\|\s*$/,GG=/^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/,KG=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim());function qG(e){let t=e.replace(/\r\n?/g,`
|
|
128
|
+
`)}}var AU=`min-h-0 w-full overflow-y-auto`,jU=`mx-auto mt-[min(16vh,8rem)] flex w-full max-w-130 flex-col gap-4 px-5 pb-7`,MU=`relative grid w-full select-none overflow-hidden font-mono text-(length:--fs-body) text-subtle [contain:layout_paint]`,NU=`col-start-1 row-start-1 m-0 whitespace-pre font-[inherit] leading-[inherit]`,PU=`invisible absolute top-0 left-0 whitespace-pre`,FU=1.3,IU=`0000000000`,LU=1e3/12;function RU(){let e=(0,g.useRef)(null),t=(0,g.useRef)(null),n=(0,g.useRef)(null),r=(0,g.useRef)(null);return(0,g.useEffect)(()=>{let i=e.current,a=t.current,o=n.current,s=r.current;if(!i||!a||!o||!s)return;let c=window.matchMedia(`(prefers-reduced-motion: reduce)`),l=24,u=90,d=0,f=0,p=0,m=-1,h=!0,g=()=>{let e=kU(u,l);o.textContent=e.base,s.textContent=e.accent},_=()=>{let e=a.getBoundingClientRect().width/10;e>0&&(l=Math.min(64,Math.max(24,Math.floor(i.clientWidth/e)))),g()},v=e=>{d=requestAnimationFrame(v);let t=p+Math.floor((e-f)/LU);t!==m&&(m=t,u=t,g())},y=()=>{cancelAnimationFrame(d),d=0},b=()=>{y(),c.matches?(u=90,g()):h&&document.visibilityState===`visible`&&(f=performance.now(),p=u,m=-1,d=requestAnimationFrame(v))},x=new ResizeObserver(_);x.observe(i),_(),b();let S=new IntersectionObserver(e=>{h=e[e.length-1]?.isIntersecting??!0,b()});return S.observe(i),c.addEventListener(`change`,b),document.addEventListener(`visibilitychange`,b),()=>{y(),x.disconnect(),S.disconnect(),c.removeEventListener(`change`,b),document.removeEventListener(`visibilitychange`,b)}},[]),(0,V.jsxs)(`div`,{ref:e,"aria-hidden":`true`,"data-field":`first-run-art`,className:MU,style:{height:`${11*FU}em`,lineHeight:FU},children:[(0,V.jsx)(`span`,{ref:t,className:PU,children:IU}),(0,V.jsx)(`pre`,{ref:n,className:NU}),(0,V.jsx)(`pre`,{ref:r,className:`${NU} text-accent`})]})}function zU(e){let t=q(`doctor`,`fix.humanOnlyWhy`),n=[];if(e.git||n.push({id:`git`,label:q(`doctor`,`fix.git`),action:q(`doctor`,`fix.gitAction`),why:t}),e.engines.length===0){let r=e.signedOut.length>0;n.push({id:`engine`,label:q(`doctor`,r?`fix.noEngineLogin`:`fix.noEngine`),action:q(`doctor`,r?`fix.noEngineLoginAction`:`fix.noEngineAction`,{list:e.signedOut.map(e=>e.id).join(`, `)}),why:t})}return n}function BU({model:e}){B(),v(Xr);let[t,n]=(0,g.useState)(()=>Hs(e,`welcome.env`)??null);(0,g.useEffect)(()=>{let t=!0;return Ws(e,`welcome.env`).then(e=>t&&n(e)).catch(()=>{}),()=>{t=!1}},[e]);let r=t===null?null:t.engines.length>0?{key:`enginesFound`,warn:!1,list:t.engines.map(e=>e.name).join(`, `)}:t.signedOut.length>0?{key:`enginesSignedOut`,warn:!0,list:t.signedOut.map(e=>e.name).join(`, `)}:{key:`enginesMissing`,warn:!0,list:``},i=t!==null&&(t.engines.length===0||!t.git)?zU(t):[];return(0,V.jsx)(`div`,{className:AU,"data-field":`welcome`,children:(0,V.jsxs)(`div`,{className:jU,children:[(0,V.jsx)(RU,{}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,V.jsx)(`h1`,{className:`m-0 font-sans text-title font-semibold text-ink`,children:z(`firstRun.title`)}),(0,V.jsx)(`p`,{className:`m-0 font-sans text-body text-muted`,children:z(`firstRun.body`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(`button`,{type:`button`,className:Pe(),"data-field":`start-first-task`,onClick:()=>tO(t?.start?.repo),children:z(`firstRun.start`)}),(0,V.jsx)(`span`,{className:`keys-only mono text-meta text-subtle`,children:ai(`task.new.global`)})]}),t!==null&&r!==null&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5 font-sans text-meta`,children:[(0,V.jsx)(`p`,{className:`m-0 ${r.warn?`text-warning`:`text-subtle`}`,children:q(`workspace`,`welcome.${r.key}`,{list:r.list})}),!t.git&&(0,V.jsx)(`p`,{className:`m-0 text-warning`,children:q(`workspace`,`welcome.gitMissing`)}),i.map(e=>(0,V.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,V.jsx)(`p`,{className:`m-0 text-warning`,children:e.label}),(0,V.jsx)(`p`,{className:`mono m-0 text-accent`,children:e.action}),(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:e.why})]},e.id)),i.length>0&&(0,V.jsx)(`p`,{className:`m-0 text-muted`,children:q(`common`,`failureHint`,{command:`rove doctor`})})]})]})})}function VU(e,t){e.preventDefault(),sn.set({x:e.clientX,y:e.clientY,items:t,target:e.currentTarget,fromKeyboard:e.button!==2})}function HU({model:e,narrow:t}){let n=B(),r=v(e.tasks),i=v(e.remote),a=CE(e),o=v(e.tabs),s=v(e.tabsSettled),c=v(e.selection),l=r?.tasks??[],u=r?.attention.filter(e=>e.unread).length??0,d=c.taskId,f=new Map([...l,...i].map(e=>[e.id,e])),p=sU(),m=v(GT),h=v(RT)===`state`,_=v(KT),y=e=>(h?dO:ww)({tasks:l,remote:i,machines:a,sort:p.sort,query:e,fold:{...p.hand,selectedId:d??void 0}}),b=y(p.search.active?p.search.query:``),{groups:x}=b,S=p.search.active?b.rows:fH(Ew(pU(fO(wH(b.rows,o,c.taskId,s,_)),o),p.collapsed),r?.archived??[],p.archivedOpen,{...p.hand,selectedId:d??void 0}),C=e=>e.filter(e=>e.kind!==`project`&&e.kind!==`state`&&e.kind!==`round`),w=(n===`zh`?jr:Ar).machine,T=new Set(a.filter(e=>e.state!==`online`).map(e=>e.alias)),E=x.find(e=>e.tasks.some(e=>e.kind===`main`))?.repo,D=e=>({mainTaskId:x.find(t=>t.repo===e)?.tasks.find(e=>e.kind===`main`)?.id??null,label:qC(e),first:e===E}),O=SH(e,l,!p.search.active&&!h,p.sort==="default",D),k=O.places(S),A=()=>W.set((0,V.jsx)(VP,{model:e})),j=dU(e,S,p,{selectedId:d,onNewTask:tO,onSettings:A}),ee=_!==null&&S.some(e=>e.id===_),M=j.setCursor;(0,g.useEffect)(()=>{ee&&_!==null&&M(_)},[ee,_,M]);let N=C(y(``).rows).length,P=(0,g.useRef)(null),F=v(oI)&&!t,I=v(sI)&&F,te=t?l.find(e=>e.id===c.taskId&&!e.deleting)??null:null;return(0,V.jsxs)(`nav`,{className:`${oE} ${F?`is-folded`:``}`,ref:P,inert:F&&!I,"aria-hidden":F&&!I,onMouseEnter:F?()=>lI(!0):void 0,onMouseLeave:F?()=>lI(!1):void 0,tabIndex:0,onKeyDown:e=>{NF(`sidebar`),j.onKeyDown(e)},children:[(0,V.jsxs)(`header`,{className:sE,children:[(0,V.jsxs)(`span`,{className:`${Ut} mr-auto`,children:[(0,V.jsx)(`span`,{className:Wt,children:`[`}),` rove `,(0,V.jsx)(`span`,{className:Wt,children:`]`})]}),(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(`button`,{type:`button`,className:`m-0 text-meta font-medium normal-nums inbox-chip relative ${er} ${Ge} ${u>0?`text-accent`:`text-muted`}`,onClick:()=>W.set((0,V.jsx)(FT,{model:e})),children:z(`rail.inbox`,{count:u})}),(0,V.jsx)(EF,{model:e,bindingId:`inbox.show`,head:!0})]}),(0,V.jsx)(zM,{})]}),m&&(0,V.jsxs)(`div`,{className:`flex gap-1 px-3.5 pb-2 text-meta mono`,children:[(0,V.jsx)(`span`,{className:`text-accent`,children:q(`tasks`,`moveChip`).trim()}),(0,V.jsx)(`span`,{className:`keys-only ml-1.5 text-muted`,children:(0,V.jsx)(AT,{text:z(`taskops.moveHint`)})})]}),p.search.active&&(0,V.jsx)(hU,{query:p.search.query,count:`${C(S).length}/${N}`,onChange:e=>p.setSearch(t=>({...t,query:e}))}),(0,V.jsx)(rH,{model:e}),(0,V.jsxs)(`div`,{"data-rail-body":!0,className:uE(O.dragging!==null),...O.body,children:[r&&l.length===0&&i.length===0&&t&&(0,V.jsx)(BU,{model:e}),r&&l.length===0&&i.length===0&&!t&&(0,V.jsx)(`p`,{className:`m-0 px-2 py-3 font-mono text-meta text-subtle`,children:z(`rail.empty`)}),te&&(0,V.jsx)(RI,{title:te.title}),S.map((t,n)=>t.kind===`round`?(0,V.jsx)(mU,{row:t,guides:t.depth>1?bH(S,n):void 0,repo:h&&t.depth===1?lO(t.tasks[0]):void 0,cursor:t.id===j.cursor,place:k(t),onClick:()=>j.setCursor(t.id)},t.id):t.kind===`pane`?(0,V.jsx)(zH,{model:e,row:t,guides:bH(S,n),cursor:t.id===j.cursor,place:k(t),onClick:()=>{j.setCursor(t.id),RH(e,t),_a()},onMenu:n=>{j.setCursor(t.id),VU(n,PH(e,t.task.id,t.tab,t.leaf))}},t.id):(0,V.jsx)(UU,{row:t,guides:t.kind===`task`&&t.depth>1?bH(S,n):void 0,cloud:bE(t,a,w),repo:h&&t.kind===`task`&&t.depth===1?lO(t.task):void 0,tabs:t.kind===`task`?o[t.task.id]:void 0,selected:t.id===d,cursor:t.id===j.cursor,stale:t.machine!==void 0&&T.has(t.machine),collapsed:(t.kind===`project`||t.kind===`state`)&&p.collapsed.has(t.id),drag:O.props(t),dragging:O.dragging===t.id,place:k(t),onNewTask:t.kind===`project`?t.noProject?nO:()=>tO(t.repo,t.machine):void 0,moving:m&&t.machine===void 0&&(t.kind===`project`?!t.noProject&&D(t.repo).mainTaskId===j.cursor:t.id===j.cursor&&(t.kind!==`task`||t.task.kind!==`main`)),prTasks:t.kind===`task`?[t.task,...(t.fold?.descendantIds??[]).flatMap(e=>f.get(e)??[])]:void 0,rollup:t.kind===`task`&&t.fold?.collapsed?XF([t.task,...t.fold.descendantIds.flatMap(e=>f.get(e)??[])]):void 0,onToggleFold:()=>{t.kind===`task`&&p.toggleTaskFold(t.id,t.fold?.collapsed===!0),t.kind===`archived`&&p.toggleArchived()},onClick:()=>{j.setCursor(t.id),t.kind===`archived`&&p.toggleArchived(),(t.kind===`project`||t.kind===`state`)&&p.toggleProject(t.id),t.kind===`task`&&uU(e,t.task.id)},onMenu:n=>{if(t.kind!==`project`||t.machine===void 0){if(t.kind===`project`&&t.noProject){VU(n,XH(e));return}if(t.kind===`project`){let r=D(t.repo);r.mainTaskId&&S.some(e=>e.id===r.mainTaskId)&&j.setCursor(r.mainTaskId),VU(n,YH(e,t.repo,r));return}t.kind===`task`&&(j.setCursor(t.id),VU(n,KU(GU($H(e,t.task,null),t.fold,()=>p.toggleTaskFold(t.id,t.fold?.collapsed===!0)),LH(e,t.task.id))))}}},t.id))]}),(0,V.jsx)(CH,{model:e,narrow:t,onSettings:A}),(0,V.jsx)(zI,{pane:`sidebar`}),!t&&!F&&(0,V.jsx)(NI,{rail:P})]})}function UU(e){let{row:t}=e,n=yU(t.kind===`task`?t.task.label:``,e.cursor&&t.kind===`task`),r=e.cursor?dE:``;if(t.kind===`project`||t.kind===`state`)return(0,V.jsxs)(`h2`,{className:fE({moving:e.moving,dragging:e.dragging}),onContextMenu:e.onMenu,...e.place,...e.drag,children:[(0,V.jsxs)(`button`,{type:`button`,className:mE,title:t.kind===`project`&&!t.noProject?t.repo:void 0,"aria-expanded":!e.collapsed,onClick:e.onClick,children:[(0,V.jsx)(`span`,{className:`truncate`,children:t.label}),t.kind===`state`&&(0,V.jsx)(`span`,{className:`font-normal text-subtle`,children:t.count}),(0,V.jsx)(Ia,{right:e.collapsed,className:hE(!!e.collapsed)})]}),e.onNewTask&&t.kind===`project`&&(0,V.jsx)(`button`,{type:`button`,className:gE,title:z(`rail.newTask`),onClick:e.onNewTask,children:`+`})]});if(t.kind===`archived`)return(0,V.jsx)(`button`,{type:`button`,className:`${nr({moving:e.moving||e.dragging})} ${r}`,"aria-expanded":t.expanded,onClick:e.onClick,...e.place,children:(0,V.jsx)(`span`,{className:`${ir} ${e.stale?`text-subtle`:`text-muted`}`,children:q(`tasks`,`archivedRow`,{count:t.count})})});let i=t.task,a=i.rowStatus?.kind===`running`,o=HP(i);return(0,V.jsxs)(`button`,{type:`button`,ref:n.ref,className:`${nr({selected:e.selected,moving:e.moving||e.dragging})} ${r}`,onClick:e.onClick,onContextMenu:e.onMenu,onPointerEnter:n.onPointerEnter,onPointerLeave:n.onPointerLeave,...e.place,...e.drag,children:[n.tip,e.guides&&(0,V.jsx)(`span`,{className:`-my-0.75 -mr-0.5 ml-0 flex flex-none self-stretch`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,V.jsx)(`span`,{className:eE(e)},t))}),(0,V.jsx)(`span`,{className:`${ir} ${e.stale?`text-subtle`:``} ${a?ar:``}`,children:t.attempt??i.label}),(0,V.jsxs)(`span`,{className:`${sr} ml-auto items-center`,children:[e.repo&&(0,V.jsx)(`span`,{className:`max-w-24 truncate text-subtle`,children:e.repo}),t.level!==void 0&&(0,V.jsx)(`span`,{className:`text-subtle`,children:t.level}),(i.extraRepoCount??0)>0&&(0,V.jsxs)(`span`,{className:`text-subtle`,title:z(`rail.extraRepos`,{count:i.extraRepoCount??0}),children:[`+`,i.extraRepoCount]}),o&&(0,V.jsxs)(`span`,{className:`text-subtle tabular-nums`,title:z(`rail.todos`,o),children:[o.done,`/`,o.total]}),t.fold?.collapsed&&(0,V.jsx)(WU,{count:t.fold.count,onUnfold:e.onToggleFold}),i.kept&&(0,V.jsx)(`span`,{className:`text-accent`,title:z(`compare.kept`),children:`✓`}),i.pinned&&(0,V.jsx)(`span`,{className:`text-subtle`,children:`▴`}),i.startsAt&&(0,V.jsx)(bU,{at:i.startsAt}),(0,V.jsx)(uH,{tasks:e.prTasks??[i],onOpen:n.hide}),(0,V.jsx)(UL,{status:t.fold?.collapsed?e.rollup:i.rowStatus}),e.cloud&&(0,V.jsx)(xE,{label:e.cloud})]})]})}function WU(e){let t=q(`tasks`,`menu.expandChildren`);return(0,V.jsxs)(`span`,{role:`button`,tabIndex:-1,"aria-label":t,"aria-expanded":!1,className:`chip text-muted ${tE}`,title:t,onClick:t=>{t.stopPropagation(),e.onUnfold()},children:[e.count,(0,V.jsx)(Ia,{right:!0})]})}function GU(e,t,n){if(!t)return e;let r={label:q(`tasks`,t.collapsed?`menu.expandChildren`:`menu.collapseChildren`),section:`open`,run:n},i=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,i+1),r,...e.slice(i+1)]}function KU(e,t){let n=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,n+1),...t,...e.slice(n+1)]}function qU(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`[::1]`||/^127(\.\d{1,3}){3}$/.test(e)}var JU=/^(localhost|127(\.\d{1,3}){3}|\[::1\])(:\d+)?([/?#]|$)/i,YU=/^[a-z][a-z0-9+.-]*:(?!\d+([/?#]|$))/i;function XU(e){let t=e.trim();if(!t||/\s/.test(t)||YU.test(t)&&!/^https?:\/\//i.test(t))return null;let n=/^https?:\/\//i.test(t)?t:JU.test(t)?`http://${t}`:`https://${t.replace(/^\/\//,``)}`;try{let e=new URL(n);return e.hostname?e.href:null}catch{return null}}function ZU(e,t,n=qU(t.hostname)){let r=new URL(e);return r.origin===t.origin?`self`:qU(r.hostname)?n?`yes`:`remote`:r.protocol===`https:`?`yes`:`unreachable`}function QU(e,t,n){let r=new URL(e).host;return t===`self`?{key:`self`,host:r}:t===`remote`?{key:`remote`,host:r}:t===`unreachable`?{key:`noFrame`,host:r}:n&&!n.reachable?{key:`unreachable`,host:r}:n&&!n.frameable?{key:`refuses`,host:r}:null}var $U=6e4,eW=new Map;function tW(e){let t=eW.get(e);return t&&Date.now()-t.at<$U?t:null}function nW(e,t,n){let[,r]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(!n||tW(t))return;let i=!0;return e.request(`browser.probe`,{url:t,origin:window.location.origin}).then(e=>eW.set(t,{probe:e,at:Date.now()}),()=>eW.set(t,{probe:null,at:Date.now()})).then(()=>i&&r(e=>e+1)),()=>{i=!1}},[e,t,n]);let i=n?tW(t):null;return{pending:n&&!i,probe:i?.probe??null}}function rW({d:e}){return(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:e})})}var iW=`M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5l-5 5`;function aW({model:e,tab:t,onNavigate:n,onStep:r}){B();let i=nk(t),[a,o]=(0,g.useState)(i),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(0),d=v(e.client.conn).hello?.peer?.local,f=i?ZU(i,window.location,d):null;(0,g.useEffect)(()=>{o(i),c(!1)},[i]);let p=e=>{let t=XU(e);c(t===null&&e.trim()!==``),t!==null&&(o(t),t===i?u(l+1):n(t))},m=i?new URL(i).hostname:``,h=f===`yes`&&i.startsWith(`https:`)&&!qU(m),{pending:_,probe:y}=nW(e.client,i,h),b=i&&f?QU(i,f,y):null,x=f===`yes`&&!b&&!_,S=b?z(`browser.${b.key}`,{host:b.host}):f===null?z(s?`browser.invalid`:`browser.empty`):null;return(0,V.jsxs)(`div`,{className:DI,children:[(0,V.jsxs)(`form`,{className:OI,onSubmit:e=>{e.preventDefault(),p(a)},children:[(0,V.jsx)(`button`,{type:`button`,className:fI({small:!0}),disabled:t.at<=0,title:z(`browser.back`),"aria-label":z(`browser.back`),onClick:()=>r(t.at-1),children:(0,V.jsx)(rW,{d:`M10 3.5 5.5 8l4.5 4.5`})}),(0,V.jsx)(`button`,{type:`button`,className:fI({small:!0}),disabled:t.at>=t.urls.length-1,title:z(`browser.forward`),"aria-label":z(`browser.forward`),onClick:()=>r(t.at+1),children:(0,V.jsx)(rW,{d:`M6 3.5 10.5 8 6 12.5`})}),(0,V.jsx)(`button`,{type:`button`,className:fI({small:!0}),disabled:!x,title:z(`browser.reload`),"aria-label":z(`browser.reload`),onClick:()=>u(l+1),children:(0,V.jsx)(rW,{d:`M12.5 8a4.5 4.5 0 1 1-1.4-3.3M12.5 2.5v2.7H9.8`})}),(0,V.jsx)(`input`,{className:`browser-url mono ${kI}`,value:a,placeholder:z(`browser.placeholder`),"aria-label":z(`browser.address`),"aria-invalid":s,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,inputMode:`url`,onChange:e=>o(e.target.value)}),i?(0,V.jsx)(`a`,{className:fI({small:!0}),href:i,target:`_blank`,rel:`noopener noreferrer`,title:z(`browser.openTab`),"aria-label":z(`browser.openTab`),children:(0,V.jsx)(rW,{d:iW})}):(0,V.jsx)(`button`,{type:`button`,className:fI({small:!0}),disabled:!0,"aria-label":z(`browser.openTab`),children:(0,V.jsx)(rW,{d:iW})})]}),x?(0,V.jsx)(`iframe`,{className:AI,src:i,title:i,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,referrerPolicy:`no-referrer`},`${i}#${l}`):S?(0,V.jsx)(`p`,{className:EI,children:S}):null]})}var oW=`scrollbar-none flex min-h-0 flex-1 flex-col overflow-y-auto p-2.5`,sW=`m-0 p-3 font-mono text-meta text-muted`,cW=`flex flex-col gap-1.5 rounded-sm border-hairline border-line px-3 py-2.5`,lW=`m-0 font-sans text-meta font-medium text-ink`,uW=`flex items-baseline justify-between gap-3 font-mono text-meta normal-nums`,dW=`flex h-1 w-full overflow-hidden rounded-full bg-inset`,fW=`h-full flex-none`,pW=`m-0 mt-1 flex list-none flex-col gap-1 p-0`,mW=`flex min-w-0 items-center gap-2 font-mono text-meta normal-nums`,hW=`size-2 flex-none rounded-xs bg-line`,gW=`min-w-0 flex-1 truncate text-muted`,_W=`flex-none text-right text-ink`,vW=`w-[6ch] flex-none text-right text-muted`,yW=1e4,bW=[`var(--info)`,`var(--accent)`,`var(--success)`,`var(--warning)`];function xW({model:e,task:t,active:n}){B();let r=v(e.client.conn),i=v(e.selection),a=v(e.tabs)[t.id]??[],o=i.taskId===t.id?a.find(e=>e.id===i.tabId):void 0,s=(o?.kind===`engine`?o:a.find(e=>e.kind===`engine`))?.id??null,[c,l]=(0,g.useState)({kind:`loading`});if((0,g.useEffect)(()=>{if(!n||r.state!==`open`)return;if(!s){l({kind:`ready`,meter:null});return}let i=!0,a=()=>e.client.request(`context.usage`,{taskId:t.id,tabId:s}).then(e=>i&&l({kind:`ready`,meter:e.meter})).catch(e=>i&&l(t=>t.kind===`ready`?t:{kind:`failed`,error:nL(e)}));a();let o=window.setInterval(a,yW);return()=>{i=!1,window.clearInterval(o)}},[e,n,r.state,t.id,s]),c.kind===`loading`)return(0,V.jsx)(`p`,{className:sW,children:z(`context.loading`)});if(c.kind===`failed`)return(0,V.jsx)(`p`,{className:sW,children:z(`context.failed`,{error:c.error})});if(!c.meter)return(0,V.jsx)(`p`,{className:sW,children:z(`context.none`)});let u=c.meter,d=u.rows.filter(e=>e.share!==void 0),f=e=>e.share===void 0?void 0:bW[d.indexOf(e)%bW.length];return(0,V.jsx)(`div`,{className:oW,children:(0,V.jsxs)(`section`,{className:cW,children:[(0,V.jsx)(`h3`,{className:lW,children:z(`context.title`)}),(0,V.jsxs)(`div`,{className:uW,children:[(0,V.jsx)(`span`,{className:`text-ink`,children:u.percent===null?z(`context.usedTokens`,{tokens:SW(u.used)}):z(`context.used`,{percent:CW(u.percent)})}),u.window!==null&&(0,V.jsxs)(`span`,{className:`text-muted`,children:[SW(u.used),` / `,SW(u.window)]})]}),(0,V.jsx)(`div`,{className:dW,role:`meter`,"aria-valuenow":Math.round(u.percent??100),"aria-valuemin":0,"aria-valuemax":100,children:d.map(e=>(0,V.jsx)(`span`,{className:fW,style:{width:`${e.share}%`,background:f(e)}},e.key))}),(0,V.jsx)(`ul`,{className:pW,children:u.rows.map(e=>{let t=z(`context.part.${e.key}`),n=f(e);return(0,V.jsxs)(`li`,{className:mW,children:[(0,V.jsx)(`span`,{className:hW,style:n?{background:n}:void 0}),(0,V.jsx)(`span`,{className:gW,title:t,children:t}),(0,V.jsx)(`span`,{className:_W,children:SW(e.tokens)}),(0,V.jsx)(`span`,{className:vW,children:CW(e.tokens/(u.window??u.used)*100)})]},e.key)})}),u.approximate&&(0,V.jsx)(`p`,{className:`m-0 font-mono text-meta text-subtle`,children:z(`context.approximate`)})]})})}function SW(e){return e>=1e6?`${+(e/1e6).toFixed(1)}M`:e>=1e3?`${+(e/1e3).toFixed(1)}k`:String(e)}function CW(e){return e>0&&e<.1?`<0.1%`:`${e<10?+e.toFixed(1):Math.round(e)}%`}var wW=3;function TW({model:e,task:t}){B();let n=t.autoFixCi,r=n=>void e.client.request(`task.autoFixCi`,{taskId:t.id,enabled:n}).catch(e=>G(e instanceof Error?e.message:String(e),`error`));return(0,V.jsx)(`div`,{className:`flex items-center gap-3 px-2 pt-1 font-mono text-meta`,children:n?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:n.stopped?jT.attention:`text-muted`,title:z(`files.autoFix.hint`),children:z(n.stopped?`files.autoFix.stopped`:`files.autoFix.count`,{n:n.attempts,max:wW})}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>r(!1),children:z(`files.autoFix.off`)})]}):(0,V.jsx)(H,{hit:`tight`,title:z(`files.autoFix.hint`),onClick:()=>r(!0),children:z(`files.autoFix.on`)})})}function EW(e){let t=e.pr;return!!t&&t.number!==void 0&&!e.machine&&(t.lifecycle===`open`||t.lifecycle===`ready_to_merge`)}function DW(e){let t={fail:0,pending:0,pass:0,skipped:0};for(let n of e)t[n.state]++;return t}function OW(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m${String(t%60).padStart(2,`0`)}s`:`${Math.floor(n/60)}h${String(n%60).padStart(2,`0`)}m`}function kW(e){let t=[],n=e.mergeState.toUpperCase();e.draft&&t.push({key:`files.merge.draft`,tone:`warning`}),e.mergeable.toUpperCase()===`CONFLICTING`||n===`DIRTY`?t.push({key:`files.merge.conflicts`,tone:`attention`}):n===`BEHIND`?t.push({key:`files.merge.behind`,tone:`warning`}):n===`UNSTABLE`?t.push({key:`files.merge.unstable`,tone:`warning`}):n===`BLOCKED`?t.push({key:`files.merge.blocked`,tone:`warning`}):n===`CLEAN`&&!e.draft&&t.push({key:`files.merge.clean`,tone:`success`});let r=e.review.toUpperCase();return r===`APPROVED`?t.push({key:`files.merge.approved`,tone:`success`}):r===`CHANGES_REQUESTED`?t.push({key:`files.merge.changes`,tone:`attention`}):r===`REVIEW_REQUIRED`&&t.push({key:`files.merge.reviewRequired`,tone:`warning`}),t}var AW=`flex flex-col gap-0.5 px-2 pb-2 font-mono text-meta`,jW=`flex items-start gap-2`,MW=`flex min-w-0 flex-1 flex-wrap items-center gap-x-2 text-left text-ink`,NW={pass:{glyph:`✓`,tone:`success`},fail:{glyph:`✗`,tone:`attention`},pending:{glyph:`●`,tone:`warning`},skipped:{glyph:`–`,tone:`muted`}};function PW({model:e,task:t}){B();let n=t.pr,r=t.id,[i,a]=(0,g.useState)(()=>Hs(e,`pr.checks`,{taskId:r})??null),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)({}),[u,d]=(0,g.useState)(0),f=`${n?.number}:${n?.checkState}:${n?.mergeable}:${n?.reviewDecision}`;(0,g.useEffect)(()=>{let t=!0,n={taskId:r};return e.client.request(`pr.checks`,u>0?{...n,fresh:!0}:n).then(r=>{t&&(Us(e,`pr.checks`,n,r),a(r))},e=>t&&a({outcome:`unavailable`,detail:e instanceof Error?e.message:String(e)})),()=>{t=!1}},[e,r,f,u]);let p=t=>{let n=`${t.runId}:${t.name}`;if(c[n]){l(({[n]:e,...t})=>t);return}l(e=>({...e,[n]:{state:`loading`}})),e.client.request(`pr.checkLog`,{taskId:r,runId:t.runId,job:t.name}).then(e=>e.outcome===`ok`?{state:`text`,text:e.tail}:e.outcome===`none`?{state:`note`,text:z(`files.checks.noLog`)}:{state:`note`,text:z(`files.checks.logUnavailable`,{detail:e.detail})}).catch(e=>({state:`note`,text:z(`files.checks.logUnavailable`,{detail:e instanceof Error?e.message:String(e)})})).then(e=>l(t=>n in t?{...t,[n]:e}:t))},m=(0,V.jsx)(H,{hit:`tight`,className:`flex-none whitespace-nowrap`,onClick:()=>d(e=>e+1),children:z(`files.checks.refresh`)});if(!i)return(0,V.jsx)(`div`,{className:AW,children:(0,V.jsx)(`div`,{className:jW,children:(0,V.jsxs)(`span`,{className:`flex-1 text-muted`,children:[z(`files.checks.title`),` `,z(`files.checks.loading`)]})})});if(i.outcome!==`ok`)return(0,V.jsx)(`div`,{className:AW,children:(0,V.jsxs)(`div`,{className:jW,children:[(0,V.jsx)(`span`,{className:`min-w-0 flex-1 text-muted wrap-anywhere`,children:i.outcome===`none`?z(`files.checks.none`):z(`files.checks.unavailable`,{detail:i.detail})}),m]})});let h=DW(i.checks),_=o??(h.fail>0||h.pending>0),v=kW(i);return(0,V.jsxs)(`div`,{className:AW,children:[(0,V.jsxs)(`div`,{className:jW,children:[(0,V.jsxs)(H,{variant:`row`,className:MW,"aria-expanded":_,disabled:i.total===0,onClick:()=>s(!_),children:[i.total>0&&(0,V.jsx)(Ia,{right:!_}),(0,V.jsx)(`span`,{children:i.total===0?z(`files.checks.none`):z(`files.checks.summary`,{pass:h.pass+h.skipped,total:i.total})}),h.fail>0&&(0,V.jsx)(`span`,{className:jT.attention,children:z(`files.checks.failed`,{count:h.fail})}),h.pending>0&&(0,V.jsx)(`span`,{className:jT.warning,children:z(`files.checks.running`,{count:h.pending})}),v.map(e=>(0,V.jsx)(`span`,{className:jT[e.tone],children:z(e.key)},e.key))]}),m]}),_&&i.checks.map(e=>{let{glyph:t,tone:n}=NW[e.state],r=`${e.runId}:${e.name}`,i=c[r];return(0,V.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2 pl-4`,children:[(0,V.jsx)(`span`,{className:`w-[1ch] flex-none text-center ${jT[n]}`,children:t}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.name,children:e.name}),e.durationMs!==null&&(0,V.jsx)(`span`,{className:`flex-none text-subtle`,children:OW(e.durationMs)}),e.state===`fail`&&e.runId&&(0,V.jsx)(H,{hit:`tight`,className:`flex-none whitespace-nowrap`,onClick:()=>p(e),children:z(i?`files.checks.hideLog`:`files.checks.log`)})]}),i&&(0,V.jsx)(`pre`,{className:`m-0 ml-4 mb-1 max-h-40 overflow-y-auto rounded-sm border-hairline border-line bg-inset px-2 py-1.5 whitespace-pre-wrap wrap-anywhere text-muted`,children:i.state===`loading`?z(`files.checks.loading`):i.text})]},`${e.name}:${e.url}`)}),_&&i.total>i.checks.length&&(0,V.jsx)(`span`,{className:`pl-4 text-subtle`,children:z(`files.checks.more`,{count:i.total-i.checks.length})})]})}function FW({model:e,task:t}){return EW(t)?(0,V.jsxs)(`div`,{onKeyDown:e=>e.stopPropagation(),children:[(0,V.jsx)(PW,{model:e,task:t}),(0,V.jsx)(TW,{model:e,task:t})]}):null}function IW(e,t){let n={children:new Map,file:!1};for(let t of e){let e=n;for(let n of t.split(`/`)){let t=e.children.get(n);t||(t={children:new Map,file:!1},e.children.set(n,t)),e=t}e.file=!0}let r=[],i=(e,n,a)=>{let o=[...e.children].sort(([e,t],[n,r])=>{let i=t.children.size>0&&!t.file;return i===(r.children.size>0&&!r.file)?e.localeCompare(n):i?-1:1});for(let[e,s]of o){let o=s.children.size>0&&!s.file,c=o?`${n}${e}/`:`${n}${e}`,l=o&&t.has(c);r.push({path:c,name:e,depth:a,dir:o,open:l}),l&&i(s,c,a+1)}};return i(n,``,0),r}var LW={start:`\x1B[200~`,end:`\x1B[201~`};function RW(e,t){return e.engineTarget(t).tabId??e.tabs.get()[t]?.find(e=>e.kind===`engine`)?.id}async function zW(e,t,n){let r=RW(e,t);if(!r)return G(z(`files.stripNoEngine`),`error`),!1;try{return e.selection.get().tabId!==r&&e.select(t,r),await e.client.request(`term.input`,{stream:DC(t,r),data:`${LW.start}${n}${LW.end}`}),G(z(`files.stripFilled`)),!0}catch(e){return G(e instanceof Error?e.message:String(e),`error`),!1}}function BW(e){let t=e.kind===`task`&&!e.noWorktree&&!e.machine&&!e.archived,n=e.changes;return t&&!!n&&`added`in n&&n.added+n.deleted>0}function VW(e){return[...BW(e)?[`commit`]:[],...HW(e)]}function HW(e){let t=e.pr;if(!t)return e.kind===`task`&&!e.noWorktree&&!e.machine&&!e.archived&&!e.sessionPrs?.length?[`createPR`]:[];if(t.lifecycle===`merged`)return e.archived||e.kind===`main`?[]:[`archive`];if(t.lifecycle!==`open`&&t.lifecycle!==`ready_to_merge`)return[];let n=[];return((t.mergeable??``).toUpperCase()===`CONFLICTING`||e.prChip===`conflict`)&&n.push(`conflicts`),t.checkState===`failing`&&n.push(`fixCI`),(t.reviewDecision??``).toUpperCase()===`CHANGES_REQUESTED`&&n.push(`comments`),n}async function UW(e,t,n){try{let r=await e.client.request(`task.prompt`,{taskId:t.id,kind:n});r.outcome===`unavailable`?G(z(`files.stripUnavailable`,{detail:r.detail??``}),`error`):r.outcome===`none`||!r.prompt?G(z(`files.stripNothing`),`error`):await zW(e,t.id,r.prompt)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}}var WW={commit:`files.stripCommit`,createPR:`files.stripCreate`,conflicts:`files.stripConflicts`,fixCI:`files.stripFixCi`,comments:`files.stripComments`,archive:`files.stripArchive`};function GW({model:e,task:t}){let n=VW(t);return n.length===0?null:(0,V.jsx)(`div`,{className:`flex flex-wrap justify-end gap-x-3.5 gap-y-1 px-2 pb-2 font-mono text-meta whitespace-nowrap`,children:n.map(n=>(0,V.jsx)(H,{onClick:()=>n===`archive`?void iF(e,t):void UW(e,t,n),children:z(WW[n])},n))})}var KW=2e3;function qW({model:e,task:t}){B();let n=t.id,r=!t.machine,[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(!1),c=i?.running===!0;if((0,g.useEffect)(()=>{if(!r)return;let t=!0,i=()=>e.client.request(`run.status`,{taskId:n}).then(e=>t&&a(e),()=>{});i();let o=c?window.setInterval(()=>void i(),KW):0;return()=>{t=!1,window.clearInterval(o)}},[e,n,r,c]),!r||!i?.script)return null;let l=async t=>{s(!0);try{a(await e.client.request(t,{taskId:n}))}catch(e){G(e instanceof Error?e.message:String(e),`error`)}finally{s(!1)}};return(0,V.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-x-3.5 gap-y-1 px-2 pb-2 font-mono text-meta whitespace-nowrap`,children:[i.url&&(0,V.jsx)(H,{onClick:()=>i.url&&Zk(n,i.url),children:z(`files.run.open`,{port:i.port??``})}),(0,V.jsx)(H,{disabled:o,onClick:()=>void l(c?`run.stop`:`run.start`),children:z(c?`files.run.stop`:`files.run.run`)})]})}function JW({model:e,task:t,narrow:n=!1}){B();let[r,i]=(0,g.useState)(()=>Hs(e,`files.list`,{taskId:t.id})?.files??null),[a,o]=(0,g.useState)(null),[s,c]=(0,g.useState)(new Set),[l,u]=(0,g.useState)(0),[d,f]=(0,g.useState)(0),p=(0,g.useRef)(null),m=v(pn),h=JSON.stringify(t.changes??null);(0,g.useEffect)(()=>{let n=!0;return Ws(e,`files.list`,{taskId:t.id}).then(e=>{n&&(i(e.files),o(null))},e=>n&&o(e instanceof Error?e.message:String(e))),()=>{n=!1}},[e,t.id,h,d]);let _=r!==null,y=IW(r??[],s).map(e=>({path:e.path,label:e.name,depth:e.depth,dir:e.dir,open:e.open})),b=Math.min(l,Math.max(0,y.length-1)),x=y[b],S=(e,t)=>c(n=>{let r=new Set(n);return t??!r.has(e)?r.add(e):r.delete(e),r}),C=e=>Xk({taskId:t.id,path:e,scope:`working`}),w=n=>{if(!m?.startsWith(`${t.id}::`)){G(z(`files.mentionNoEngine`),`error`);return}e.client.request(`term.input`,{stream:m,data:`@${n} `}).catch(e=>G(String(e),`error`))},T=n=>t.machine?G(z(`files.remoteNoExternal`,{host:t.machine.label}),`error`):void e.client.request(`file.openExternal`,{taskId:t.id,path:n}).then(()=>G(z(`taskops.openedExternal`))).catch(e=>G(e instanceof Error?e.message:String(e),`error`));return(0,V.jsxs)(`div`,{className:`group/pane flex min-h-0 min-w-0 flex-1 flex-col outline-none ${n?`px-1.5 pt-2.5 pb-2`:`pt-0.5 pr-1.5 pb-1.5 pl-0`}`,tabIndex:0,ref:p,onKeyDown:e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)u(Math.min(y.length-1,b+1));else if(t===`k`||t===`ArrowUp`)u(Math.max(0,b-1));else if((t===`l`||t===`ArrowRight`)&&x?.dir)S(x.path,!0);else if((t===`h`||t===`ArrowLeft`)&&x?.dir)S(x.path,!1);else if(t===`r`)f(e=>e+1);else if(t===`D`&&e.shiftKey)C(`.`);else if(t===`d`&&x)C(x.path);else if(t===`Enter`&&x)x.dir?S(x.path):C(x.path);else if(t===`a`&&x)w(x.path);else if(t===`o`&&x&&!x.dir)T(x.path);else return;e.preventDefault()},children:[(0,V.jsx)(GW,{model:e,task:t}),(0,V.jsx)(FW,{model:e,task:t}),(0,V.jsx)(qW,{model:e,task:t}),(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a&&(0,V.jsx)(`p`,{className:`mono text-error`,children:a}),!a&&_&&y.length===0&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle`,children:z(`files.emptyAll`)}),y.map((e,t)=>(0,V.jsxs)(`button`,{type:`button`,className:nr({selected:t===b,size:n?`file-narrow`:`file`}),style:{paddingLeft:8+e.depth*14},title:e.path,onClick:()=>{u(t),p.current?.focus(),e.dir?S(e.path):C(e.path)},children:[(0,V.jsx)(`span`,{className:`${or} grid place-items-center text-subtle`,children:e.dir?(0,V.jsx)(Ia,{right:!e.open}):null}),(0,V.jsx)(`span`,{className:rr,children:e.label})]},e.path))]})]})}function YW({children:e}){return(0,V.jsx)(`svg`,{className:`size-3.5 ${dI}`,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:e})}var XW={chat:(0,V.jsx)(`path`,{d:`M3 3.5h10a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H8l-3 2.5v-2.5H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM5 6.5h6M5 8.5h4`}),files:(0,V.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`}),diff:(0,V.jsx)(`path`,{d:`M3.5 2.5h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1zM8 5v4M6 7h4M6 11h4`}),browser:(0,V.jsx)(`path`,{d:`M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2zM2 8h12M8 2c2.2 2 2.2 10 0 12M8 2c-2.2 2-2.2 10 0 12`}),quota:(0,V.jsx)(`path`,{d:`M2 10a6 6 0 1 1 12 0M8 10l2.5-3.5M4 13h8`})};function ZW(e){if(e.kind===`files`)return z(`panel.files`);if(e.kind===`chat`)return z(`panel.chat`);if(e.kind===`quota`)return z(`panel.quota`);if(e.kind===`diff`)return e.path===`.`?z(`panel.diff`):rk(e.path);let t=nk(e);return t?ik(t):z(`panel.browser`)}function QW(e){return e.kind===`diff`?e.path===`.`?z(`preview.whole`):e.path:e.kind===`browser`&&nk(e)||ZW(e)}var $W=7.3,eG=31,tG=160;function nG(e,t){let n=0;for(let t of e){let e=0;for(let n of t)e+=(n.codePointAt(0)??0)>11903?2:1;n+=Math.min(tG,eG+e*$W)+8}return n<=t}var rG=null;function iG(e,t,n,r){let i=(t,r)=>({label:r,section:`move`,run:()=>qk(e,e=>Tk(e,n.id,t))}),a=[];return!t.bottom&&t.top.tabs.length>1?a.push(i(`bottom`,z(`panel.splitDown`))):t.bottom&&a.push(r===`top`?i(`bottom`,z(`panel.moveBottom`)):i(`top`,z(`panel.moveTop`))),a.push({label:z(`panel.close`),section:`close`,run:()=>Qk(e,n.id)}),t.top.tabs.length+(t.bottom?.tabs.length??0)>1&&a.push({label:z(`panel.closeOthers`),section:`close`,run:()=>qk(e,e=>wk(e,n.id))}),a}function aG(e,t){return[{label:z(`panel.newChat`),run:()=>qk(e,e=>_k(e,`chat`))},{label:z(`panel.newFiles`),run:()=>qk(e,e=>pk(e,t))},{label:z(`panel.newDiff`),run:()=>qk(e,e=>hk(e,`.`,`working`))},{label:z(`panel.newBrowser`),run:()=>qk(e,e=>mk(e,t))},{label:z(`panel.newQuota`),run:()=>qk(e,e=>_k(e,`quota`))}]}function oG({taskId:e,panel:t,group:n,tabs:r,active:i,narrow:a,children:o}){B();let[s,c]=(0,g.useState)(null),l=()=>rG?.taskId===e,u=t=>{let r=rG;rG=null,c(null),r?.taskId===e&&qk(e,e=>Tk(e,r.id,n,t))},d=t=>{let r=t.currentTarget.getBoundingClientRect();sn.set({x:r.left,y:r.bottom+2,items:aG(e,n),target:t.currentTarget})},f=(e,t)=>{if(!l())return;if(e.preventDefault(),e.stopPropagation(),rG?.id===t)return c(null);let n=e.currentTarget.getBoundingClientRect();c({id:t,after:e.clientX>n.left+n.width/2})},p=(0,g.useRef)(null),[m,h]=(0,g.useState)(0);(0,g.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(([e])=>h(e?.contentRect.width??0));return t.observe(e),()=>t.disconnect()},[]);let _=m>0&&!nG(r.map(ZW),m);return(0,g.useEffect)(()=>{p.current?.querySelector(`.is-active`)?.scrollIntoView({block:`nearest`,inline:`nearest`})},[i,r.length,_]),(0,V.jsxs)(`div`,{className:_I(a),style:{gridRow:n===`top`?1:4},onDragOver:e=>{l()&&(e.preventDefault(),c(null))},onDrop:e=>{e.preventDefault(),u()},children:[(0,V.jsx)(`div`,{className:vI,role:`tablist`,"aria-label":z(`panel.tabs`),ref:p,children:r.map((r,o)=>(0,V.jsxs)(`div`,{role:`presentation`,className:yI({active:r.id===i,compact:_}),"data-drop":s?.id===r.id?s.after?`after`:`before`:void 0,draggable:!a,onDragStart:()=>{rG={taskId:e,id:r.id}},onDragEnd:()=>{rG=null,c(null)},onDragOver:e=>f(e,r.id),onDrop:e=>{e.preventDefault(),e.stopPropagation(),u(o+(s?.id===r.id&&s.after?1:0))},onMouseDown:e=>{e.button===1&&e.preventDefault()},onAuxClick:t=>{t.button===1&&(t.preventDefault(),Qk(e,r.id))},onContextMenu:i=>{a||VU(i,iG(e,t,r,n))},children:[(0,V.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":r.id===i,className:bI(_&&r.id!==i),title:QW(r),onClick:()=>qk(e,e=>lk(e,r.id)),children:(0,V.jsx)(`span`,{className:xI,children:ZW(r)})}),(0,V.jsx)(`button`,{type:`button`,className:`${SI} ${_&&r.id!==i?`hidden`:``}`,"aria-label":z(`panel.close`),tabIndex:-1,onClick:()=>Qk(e,r.id),children:`×`})]},r.id))}),!a&&(0,V.jsx)(`button`,{type:`button`,className:fI({tool:!0}),title:z(`panel.new`),"aria-label":z(`panel.new`),onClick:d,children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`})})}),o]})}var sG={md:`md`,markdown:`md`,html:`html`,htm:`html`,svg:`svg`,png:`image`,jpg:`image`,jpeg:`image`,gif:`image`,webp:`image`,pdf:`pdf`};function cG(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=t.lastIndexOf(`.`);return n<0?null:sG[t.slice(n+1).toLowerCase()]??null}function lG(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var uG=e=>new TextDecoder().decode(lG(e));function dG(e,t){if(e===`svg`)return`image/svg+xml`;if(e===`pdf`)return`application/pdf`;let n=t.slice(t.lastIndexOf(`.`)+1).toLowerCase();return n===`jpg`||n===`jpeg`?`image/jpeg`:n===`gif`?`image/gif`:n===`webp`?`image/webp`:`image/png`}var fG=`default-src 'none'; img-src data:; style-src 'unsafe-inline'`;function pG(e){let t=`<meta http-equiv="Content-Security-Policy" content="${fG}">`,n=/^\s*<!doctype[^>]*>/i.exec(e);return n?`${n[0]}${t}${e.slice(n[0].length)}`:`${t}${e}`}var mG=/^\[([^\]\n]+)\]\((https?:\/\/[^\s)]+)\)/,hG=/^https?:\/\/[^\s<>)\]]+/,gG=/[\p{L}\p{N}]/u;function _G(e){let t=[],n=``,r=()=>{n&&t.push({t:`text`,v:n}),n=``},i=0;for(;i<e.length;){let a=e.slice(i),o=e[i]??``;if(o==="`"){let n=e.indexOf("`",i+1);if(n>i+1){r(),t.push({t:`code`,v:e.slice(i+1,n)}),i=n+1;continue}}else if(a.startsWith(`**`)){let n=e.indexOf(`**`,i+2);if(n>i+2){r(),t.push({t:`bold`,c:_G(e.slice(i+2,n))}),i=n+2;continue}}else if(o===`*`||o===`_`&&!gG.test(e[i-1]??``)){let n=e.indexOf(o,i+1);if(n>i+1&&!/\s/.test(e[i+1]??` `)&&(o===`*`||!gG.test(e[n+1]??``))){r(),t.push({t:`em`,c:_G(e.slice(i+1,n))}),i=n+1;continue}}else if(o===`[`){let e=mG.exec(a);if(e){r(),t.push({t:`link`,href:e[2],c:_G(e[1])}),i+=e[0].length;continue}}else if(o===`h`&&!gG.test(e[i-1]??``)){let e=hG.exec(a);if(e){let n=e[0].replace(/[.,;:!?]+$/,``);r(),t.push({t:`link`,href:n,c:[{t:`text`,v:n}]}),i+=n.length;continue}}n+=o,i++}return r(),t}var vG=/^\s*(```+|~~~+)\s*([\w+#.-]*)\s*$/,yG=/^(#{1,6})\s+(.*?)\s*#*\s*$/,bG=/^(\s*)([-*+])\s+(.*)$/,xG=/^(\s*)\d+[.)]\s+(.*)$/,SG=/^\s*([-*_])(\s*\1){2,}\s*$/,CG=/^\s*\|.*\|\s*$/,wG=/^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/,TG=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim());function EG(e){let t=e.replace(/\r\n?/g,`
|
|
129
129
|
`).split(`
|
|
130
|
-
`),n=[],r=[],i=()=>{r.length>0&&n.push({t:`para`,c:
|
|
131
|
-
`))}),r=[]};for(let e=0;e<t.length;e++){let a=t[e],o=
|
|
132
|
-
`)});continue}if(a.trim()===``){i();continue}let s=
|
|
133
|
-
`))});continue}let c=VG.exec(a),l=c?null:HG.exec(a);if(c||l){i();let r=!c,a=[];for(;e<t.length;e++){let n=r?HG.exec(t[e]):VG.exec(t[e]);if(!n)break;let i=n[1].length;a.push({depth:Math.min(3,Math.floor(i/2)),c:RG(r?n[2]:n[3])})}e--,n.push({t:`list`,ordered:r,items:a});continue}r.push(a)}return i(),n}var JG=`flex min-h-0 min-w-0 flex-1 flex-col font-sans text-body`,YG=`flex flex-none flex-wrap items-center gap-x-3 gap-y-1 px-3 pb-1.5 font-mono text-meta`,XG=`min-w-0 flex-1 basis-32 py-1 text-meta`,ZG=`min-h-0 flex-1 overflow-y-auto px-3 pb-3`,QG=`m-0 px-3 py-2 font-mono text-meta text-subtle`,$G=`m-0 whitespace-pre-wrap px-3 pb-3 font-mono text-meta leading-[1.45] text-muted wrap-anywhere`,eK=e=>`group/entry mt-3 rounded-sm border-l-2 py-0.5 pl-2.5 ${e.flash?`border-accent bg-accent-soft`:e.current?`border-line-active`:`border-transparent`}`,tK=`mb-0.5 flex items-center gap-2 font-mono text-meta`,nK=e=>e===`user`?`text-accent`:`text-muted`,rK=`text-subtle`,iK=`ml-auto opacity-0 group-hover/entry:opacity-100 focus-visible:opacity-100 touch:opacity-100`,aK=`m-0 mt-0.5 flex min-w-0 items-baseline gap-1.5 font-mono text-meta text-subtle`,oK=`flex-none text-muted`,sK=`min-w-0 flex-1 truncate`,cK=`leading-[1.5] wrap-anywhere`,lK=`m-0 mb-2 whitespace-pre-wrap last:mb-0`,uK=`m-0 mt-3 mb-1.5 font-semibold first:mt-0`,dK=`m-0 mb-2 flex flex-col gap-0.5 pl-5 last:mb-0`,fK=`m-0 mb-2 border-l-2 border-line pl-2.5 whitespace-pre-wrap text-muted last:mb-0`,pK=`m-0 mb-2 overflow-x-auto rounded-sm border-hairline border-line bg-inset px-2.5 py-2 font-mono text-meta leading-[1.45] last:mb-0`,mK=`rounded-xs bg-inset px-1 font-mono text-meta`,hK=`text-accent underline`,gK=`mb-2 block max-w-full overflow-x-auto border-collapse font-mono text-meta last:mb-0`,_K=`border-hairline border-line px-2 py-0.5 text-left align-top`,vK=`my-2 border-0 border-t border-line`;function yK(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=e.toLowerCase(),i=[],a=0;for(let t=r.indexOf(n);t>=0;t=r.indexOf(n,a))t>a&&i.push(e.slice(a,t)),i.push((0,V.jsx)(`mark`,{className:WO,"data-hit":``,children:e.slice(t,t+n.length)},t)),a=t+n.length;return i.push(e.slice(a)),g.Children.toArray(i)}var bK=[`h3`,`h3`,`h4`,`h5`,`h6`,`h6`];function xK({level:e,children:t}){let n=bK[Math.min(5,Math.max(0,e-1))]??`h6`;return(0,V.jsx)(n,{className:uK,children:t})}function SK(e,t){return e.map((e,n)=>(0,V.jsx)(g.Fragment,{children:t(e)},n))}function CK({nodes:e,needle:t}){return SK(e,e=>e.t===`text`?yK(e.v,t):e.t===`code`?(0,V.jsx)(`code`,{className:mK,children:yK(e.v,t)}):e.t===`bold`?(0,V.jsx)(`strong`,{children:(0,V.jsx)(CK,{nodes:e.c,needle:t})}):e.t===`em`?(0,V.jsx)(`em`,{children:(0,V.jsx)(CK,{nodes:e.c,needle:t})}):(0,V.jsx)(`a`,{className:hK,href:e.href,target:`_blank`,rel:`noopener noreferrer`,children:(0,V.jsx)(CK,{nodes:e.c,needle:t})}))}function wK({block:e,needle:t}){switch(e.t){case`heading`:return(0,V.jsx)(xK,{level:e.level,children:(0,V.jsx)(CK,{nodes:e.c,needle:t})});case`para`:return(0,V.jsx)(`p`,{className:lK,children:(0,V.jsx)(CK,{nodes:e.c,needle:t})});case`code`:return(0,V.jsx)(`pre`,{className:pK,children:(0,V.jsx)(`code`,{children:yK(e.v,t)})});case`quote`:return(0,V.jsx)(`blockquote`,{className:fK,children:(0,V.jsx)(CK,{nodes:e.c,needle:t})});case`hr`:return(0,V.jsx)(`hr`,{className:vK});case`list`:{let n=e.ordered?`ol`:`ul`;return(0,V.jsx)(n,{className:`${dK} ${e.ordered?`list-decimal`:`list-disc`}`,children:SK(e.items,e=>(0,V.jsx)(`li`,{style:{marginLeft:`${e.depth*1.25}rem`},children:(0,V.jsx)(CK,{nodes:e.c,needle:t})}))})}case`table`:return(0,V.jsx)(`table`,{className:gK,children:(0,V.jsx)(`tbody`,{children:SK(e.rows,e=>(0,V.jsx)(`tr`,{children:SK(e,e=>(0,V.jsx)(`td`,{className:_K,children:(0,V.jsx)(CK,{nodes:e,needle:t})}))}))})})}}function TK({source:e,needle:t=``}){let n=(0,g.useMemo)(()=>qG(e),[e]);return(0,V.jsx)(`div`,{className:cK,children:SK(n,e=>(0,V.jsx)(wK,{block:e,needle:t}))})}function EK(e){if(e instanceof d_){if(e.code===`TOO_LARGE`){let t=e.detail?.size;return vL(z(`artifact.tooLarge`),{size:typeof t==`number`?`${(t/1048576).toFixed(1)} MB`:`5 MB+`})}if(e.code===`NOT_PREVIEWABLE`)return z(`artifact.notPreviewable`);if(e.code===`NOT_FOUND`)return z(`artifact.gone`)}return vL(z(`artifact.failed`),{error:e instanceof Error?e.message:String(e)})}function DK(e,t,n,r){let[i,a]=(0,g.useState)({kind:`loading`});return(0,g.useEffect)(()=>{let r=!0;return e.client.request(`file.read`,{taskId:t,path:n}).then(e=>r&&a({kind:`ready`,file:e}),e=>r&&a({kind:`failed`,text:EK(e)})),()=>{r=!1}},[e,t,n,r]),i}function OK(e,t){let n=(0,g.useMemo)(()=>e===null?null:URL.createObjectURL(new Blob([AG(e)],{type:t})),[e,t]);return(0,g.useEffect)(()=>()=>void(n&&URL.revokeObjectURL(n)),[n]),n}function kK({model:e,taskId:t,path:n,kind:r,changeKey:i}){B();let a=DK(e,t,n,i),o=OK(a.kind===`ready`&&(r===`svg`||r===`image`||r===`pdf`)?a.file.base64:null,r===`md`||r===`html`?``:MG(r,n));return a.kind===`loading`?(0,V.jsx)(`p`,{className:Jt,children:z(`artifact.loading`)}):a.kind===`failed`?(0,V.jsx)(`p`,{className:`${Jt} text-error`,children:a.text}):r===`md`?(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-3 py-2`,children:(0,V.jsx)(TK,{source:jG(a.file.base64)})}):r===`html`?(0,V.jsx)(`iframe`,{title:n,sandbox:``,srcDoc:PG(jG(a.file.base64)),style:{colorScheme:`light`,background:`#fff`},className:`min-h-0 w-full flex-1 border-none`}):o?r===`pdf`?(0,V.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,V.jsx)(`a`,{className:`${en} px-3 py-1 font-mono text-meta`,href:o,target:`_blank`,rel:`noreferrer noopener`,children:z(`artifact.open`)}),(0,V.jsx)(`iframe`,{title:n,src:o,className:`min-h-0 w-full flex-1 border-none`})]}):(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,V.jsx)(`img`,{src:o,alt:n,className:`max-w-full`})}):null}function AK(e,t,n){let r=[{ref:null,suggestion:{key:`default`,text:t,dim:z(`review.baseDefault`),accent:!0}}],i=(e,n)=>{for(let i of e)i!==t&&r.push({ref:i,suggestion:{key:`${n}:${i}`,text:i,dim:n}})};i(e?.branches??[],z(`review.baseBranch`)),i(e?.remotes??[],z(`review.baseRemote`)),i(e?.tags??[],z(`review.baseTag`));for(let t of e?.commits??[])r.push({ref:t.sha,suggestion:{key:`commit:${t.sha}`,text:t.sha,dim:t.subject}});let a=n.trim().toLowerCase();if(a===``)return r.slice(0,40);let o=r.filter(e=>`${e.suggestion.text} ${e.suggestion.dim??``}`.toLowerCase().includes(a)),s=e=>e.suggestion.text.toLowerCase()===a?0:1;return o.sort((e,t)=>s(e)-s(t)).slice(0,40)}function jK(e){let[t,n]=(0,g.useState)(!1),[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(null),s=e.model.client;(0,g.useEffect)(()=>{if(!t)return;let n=!0;return Ws(s,`diff.refs`,{taskId:e.taskId}).then(e=>n&&o(e),()=>{}),()=>{n=!1}},[t,s,e.taskId]);let c=AK(a,e.base,r),l=t=>{e.onPick(t),n(!1),i(``)},u=e.custom??e.base,d=[{id:`task`,label:z(`review.scopeTask`)},{id:`working`,label:z(`review.scopeWorking`)},{id:`branch`,label:z(`review.scopeBranch`)}],f=d.find(t=>t.id===e.scope)?.label??``;return(0,V.jsxs)(`span`,{className:`relative`,onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`&&t&&n(!1)},children:[(0,V.jsx)(H,{hit:`tight`,"aria-expanded":t,"aria-haspopup":`menu`,onClick:t=>{let r=t.currentTarget.getBoundingClientRect();sn.set({x:r.left,y:r.bottom+2,target:t.currentTarget,items:[...d.map(t=>({label:t.label,section:`scope`,checked:t.id===e.scope,run:()=>e.onScope(t.id)})),{label:z(`review.compareAgainst`,{base:u}),section:`base`,run:()=>n(!0)}]})},children:z(`review.scopeMenu`,{base:u,scope:f})}),t&&(0,V.jsx)(`div`,{className:`absolute top-full left-0 z-3 mt-1 w-64 max-w-full rounded-sm border-hairline border-line-active bg-surface p-1 shadow-popover`,children:(0,V.jsx)(PD,{field:`diff-base`,autoFocus:!0,value:r,onChange:i,items:c.map(e=>e.suggestion),open:!0,placeholder:z(`review.basePlaceholder`),onPick:e=>l(c[e]?.ref??null),onEnter:()=>l(r.trim()===``?null:r.trim())})})]})}var MK=`rove.diffBase`;function NK(){try{let e=JSON.parse(localStorage.getItem(MK)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`))}catch{return{}}}function PK(e){return NK()[e]??null}function FK(e,t){let n=NK();t===null?delete n[e]:n[e]=t;try{localStorage.setItem(MK,JSON.stringify(n))}catch{}}function IK(e){let[t,n]=(0,g.useState)(()=>PK(e.taskId));return[t,t=>{FK(e.taskId,t),n(t),t!==null&&e.scope!==`task`&&eA({taskId:e.taskId,path:e.path,scope:`task`})}]}var LK={add:`bg-diff-added-bg`,del:`bg-diff-removed-bg`},RK={add:`text-diff-added`,del:`text-diff-removed`};function zK(e,t){let n=t.cursor?`bg-inset group-focus/preview:bg-accent-soft`:t.noted?`bg-inset`:LK[e]??``;return`relative grid ${e===`file`||e===`note`?`cursor-pointer`:`cursor-default`} grid-cols-[4ch_4ch_2ch_1fr] gap-x-2 gap-y-0 whitespace-pre px-3 narrow:grid-cols-[3ch_3ch_1ch_1fr] narrow:gap-x-1 narrow:px-1.5 ${n} ${e===`file`?`mt-2 border-t-hairline border-line pt-1 font-bold text-ink`:e===`hunk`||e===`meta`?`text-subtle`:``}`}var BK=`text-right text-subtle`,VK=(e,t)=>t?`text-accent`:RK[e]??``,HK=e=>`min-w-0 narrow:whitespace-pre-wrap narrow:wrap-anywhere ${RK[e]??``}`,UK=`min-w-0 whitespace-pre-wrap wrap-anywhere text-accent`,WK=`flex min-w-0 items-baseline gap-2`;function GK(e){return(0,V.jsxs)(`div`,{className:`flex items-center ${e.viewed?`opacity-60`:``}`,children:[(0,V.jsxs)(H,{variant:`row`,"data-row":e.index,"aria-expanded":!e.closed,"aria-label":z(e.closed?`review.unfold`:`review.fold`,{path:e.name}),className:`${zK(`file`,{cursor:e.cursor,noted:!1})} min-w-0 flex-1 text-left`,onClick:e.onToggleFold,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{className:`grid place-items-center text-subtle`,children:(0,V.jsx)(Ia,{right:e.closed})}),(0,V.jsxs)(`span`,{className:WK,children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name}),e.added?(0,V.jsxs)(AL,{tone:`added`,children:[`+`,e.added]}):null,e.removed?(0,V.jsxs)(AL,{tone:`removed`,children:[`−`,e.removed]}):null]})]}),e.path&&(0,V.jsx)(H,{hit:`tight`,className:`flex-none px-2`,"aria-pressed":e.viewed,"aria-label":z(e.viewed?`review.unmarkViewed`:`review.markViewed`,{path:e.name}),onClick:e.onToggleViewed,children:e.viewed?z(`review.viewedOn`):z(`review.viewed`)})]})}function KK(e){return(0,V.jsxs)(`div`,{className:`absolute top-full right-3 z-1 flex gap-1.5`,children:[(0,V.jsx)(H,{variant:`floating`,onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),e.onComment()},children:z(`review.comment`)}),e.showRange&&(0,V.jsx)(H,{variant:`floating`,onClick:t=>{t.stopPropagation(),e.onRange()},children:z(`review.range`)}),e.ranged&&(0,V.jsx)(H,{variant:`floating`,title:z(`preview.askInChatHint`),onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),e.onAsk()},children:z(`preview.askInChat`)})]})}function qK({note:e,onEdit:t}){return(0,V.jsxs)(H,{variant:`row`,className:`${zK(`note`,{cursor:!1,noted:!1})} w-full text-left`,onClick:t,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{className:`text-accent`,children:`●`}),(0,V.jsx)(`span`,{className:UK,children:e.body})]})}function JK(e){return(0,V.jsxs)(`div`,{className:`flex flex-none flex-wrap items-center gap-x-3 gap-y-1 px-2 pt-1.5 font-mono text-meta`,children:[e.picker,(0,V.jsx)(H,{hit:`tight`,"aria-pressed":e.ignoreWs,title:z(`review.ignoreWsHint`),className:`opacity-60 aria-pressed:underline aria-pressed:opacity-100`,onClick:e.onToggleWs,children:z(`review.ignoreWs`)}),(0,V.jsxs)(`span`,{className:`flex min-w-0 basis-full flex-wrap items-center gap-x-1.5 text-muted`,children:[z(`review.totals`,{files:e.files,added:e.added,removed:e.removed}),e.shape&&(0,V.jsxs)(`span`,{children:[`· `,e.shape]}),e.files>0&&(0,V.jsxs)(`span`,{className:`whitespace-nowrap`,children:[`· `,z(`review.viewedCount`,{done:e.viewed,files:e.files})]})]}),(0,V.jsxs)(`span`,{className:`ml-auto flex items-center gap-x-3`,children:[e.files>1&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onNextFile,children:z(`review.nextFile`)}),e.onNextComment&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onNextComment,children:z(`review.nextComment`)}),e.files>1&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onFoldAll,children:e.allFolded?z(`review.unfoldAll`):z(`review.foldAll`)})]})]})}var YK=`rove.diffViewed`,XK=(e,t)=>`${e}\0${t}`;function ZK(e){let t=2166136261;for(let n of e){let e=`${n.kind}${n.text}\n`;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619)}return(t>>>0).toString(16)}function QK(e){let t=new Map,n=-1,r=r=>{let i=n>=0?e[n]?.path:null;i&&t.set(i,ZK(e.slice(n+1,r)))};return e.forEach((e,t)=>{e.kind===`file`&&(r(t),n=t)}),r(e.length),t}function $K(){try{let e=JSON.parse(localStorage.getItem(YK)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`))}catch{return{}}}function eq(e){try{localStorage.setItem(YK,JSON.stringify(e))}catch{}}function tq(e,t,n){let r=new Set;for(let[i,a]of n)e[XK(t,i)]===a&&r.add(i);return r}function nq(e,t,n,r){let i={...e};return r===void 0?delete i[XK(t,n)]:i[XK(t,n)]=r,i}function rq(e,t){return e.find(e=>e>t)??e[0]??null}var iq=`rove.diffIgnoreWs`;function aq(){try{return localStorage.getItem(iq)===`1`}catch{return!1}}function oq(e){try{localStorage.setItem(iq,e?`1`:`0`)}catch{}}var sq=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;function cq(e,t=null,n=!1){let r=[],i=0,a=0,o=t,s=!1;for(let t of e.replace(/\n$/,``).split(`
|
|
134
|
-
`)){if(t.startsWith(`diff --git `)){let e=/ b\/(.+)$/.exec(t);o=e?e[1]:o,s=!1,r.push({kind:`file`,text:o??t,oldNo:null,newNo:null,path:o});continue}let e=
|
|
135
|
-
`).map((e,n)=>({kind:`ctx`,text:e,oldNo:null,newNo:n+1,path:t}))}function
|
|
136
|
-
`)}function
|
|
137
|
-
`);for(let e=0;e+i.length<=r.length;e++){let a=r.slice(e,e+i.length),o=a[0],s=a[a.length-1];if(o!==void 0&&s!==void 0&&uq(t[o])===n&&a.every((e,n)=>Fq(t[e])===i[n]))return{first:o,last:s}}return null}function zq(e,t,n){return Rq(e,t)?`ok`:t.some(t=>t.path===e.filePath)||n?`moved`:`unknown`}function Bq({notes:e,states:t,sending:n,onShow:r,onEdit:i,onDrop:a,onSend:o}){B();let[s,c]=(0,g.useState)(!1);if(e.length===0)return null;let l=e.length;return(0,V.jsxs)(`div`,{className:`flex max-h-2/5 min-h-0 flex-none flex-col border-t-hairline border-line font-mono text-meta`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-1.5 narrow:px-2`,children:[(0,V.jsxs)(H,{variant:`row`,className:`flex min-w-0 flex-1 items-center gap-2 text-left text-ink`,"aria-expanded":s,onClick:()=>c(!s),children:[(0,V.jsx)(Ia,{right:!s}),(0,V.jsx)(`span`,{children:l===1?z(`review.countOne`):z(`review.count`,{count:l})})]}),(0,V.jsx)(H,{disabled:n,onClick:o,children:n?z(`review.sending`):z(`review.send`,{count:l})})]}),s&&(0,V.jsx)(`ul`,{className:`m-0 min-h-0 list-none overflow-y-auto p-0 pb-1`,children:e.map(e=>(0,V.jsxs)(`li`,{className:`flex flex-col gap-0.5 px-3 py-1 narrow:px-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,V.jsx)(H,{variant:`row`,className:`min-w-0 flex-1 truncate text-left text-ink hover:underline`,title:z(`review.show`),onClick:()=>r(e),children:Iq(e)}),t.get(e.id)===`moved`&&(0,V.jsx)(`span`,{title:z(`review.movedHint`),children:(0,V.jsx)(AL,{tone:`warning`,children:z(`review.moved`)})}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>i(e),children:z(`review.edit`)}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>a(e),children:z(`review.drop`)})]}),(0,V.jsx)(`p`,{className:`m-0 line-clamp-2 whitespace-pre-wrap wrap-anywhere text-muted`,children:e.body})]},e.id))})]})}var Vq=[];function Hq({model:e,view:t,active:n,restored:r,onClose:i}){B();let a=ts(),[o,s]=(0,g.useState)(aq),[c,l]=(0,g.useState)($K),[u,d]=IK(t),f=t.scope===`task`?u:null,p=f!==null,m={taskId:t.taskId,path:t.path,scope:t.scope,...o?{ignoreWhitespace:!0}:{},...f?{base:f}:{}},[h,_]=(0,g.useState)(()=>{let n=Hs(e,`diff.file`,m);return n===void 0?null:Aq(n,t.path,p)}),[y,b]=(0,g.useState)(()=>Hs(e,`review.list`,{taskId:t.taskId})?.notes??[]),[x,S]=(0,g.useState)(()=>Hs(e,`diff.files`,{taskId:t.taskId})?.base??null),[C,w]=(0,g.useState)(0),[T,E]=(0,g.useState)(null),[D,O]=(0,g.useState)(!1),[k,A]=(0,g.useState)(new Set),[j,ee]=(0,g.useState)(!1),[M,N]=(0,g.useState)(0),P=(0,g.useRef)(null),F=e.client;(0,g.useEffect)(()=>{let e=!0;return Ws(F,`diff.file`,m).then(n=>e&&_(Aq(n,t.path,p)),t=>{if(e){if(f&&t instanceof d_&&t.code===`BAD_REF`){d(null),G(t.message,`error`);return}_({kind:`text`,text:t instanceof Error?t.message:String(t),error:!0})}}),()=>{e=!1}},[F,t.taskId,t.path,t.scope,o,f,M]),(0,g.useEffect)(()=>{let e=!0;return Ws(F,`diff.files`,{taskId:t.taskId}).then(t=>e&&S(t.base),()=>{}),()=>{e=!1}},[F,t.taskId,M]);let I=()=>void Ws(F,`review.list`,{taskId:t.taskId}).then(e=>b(e.notes));(0,g.useEffect)(I,[F,t.taskId,M]);let te=(0,g.useRef)(!1);(0,g.useEffect)(()=>{n&&(te.current||!r)&&P.current?.focus(),te.current=!0},[n,r]);let L=h?.kind===`rows`?h.rows:Vq,ne=h?.kind===`rows`&&h.diff,re=(0,g.useMemo)(()=>L.map((e,t)=>`row-${t}`),[L]),ie=(0,g.useMemo)(()=>mq(L,k),[L,k]),R=(0,g.useMemo)(()=>hq(L),[L]),ae=(0,g.useMemo)(()=>QK(L),[L]),oe=(0,g.useMemo)(()=>tq(c,t.taskId,ae),[c,t.taskId,ae]),se=(0,g.useRef)(new Set);(0,g.useEffect)(()=>{let e=[...ae.keys()].filter(e=>wq(e)&&!se.current.has(e));if(e.length!==0){for(let t of e)se.current.add(t);A(t=>new Set([...t,...e]))}},[ae]);let ce=(0,g.useRef)(new Set);(0,g.useEffect)(()=>{let e=ce.current;ce.current=oe;let t=[...oe].filter(t=>!e.has(t)),n=[...e].filter(e=>!oe.has(e));(t.length!==0||n.length!==0)&&A(e=>new Set([...[...e].filter(e=>!n.includes(e)),...t]))},[oe]);let le=(0,g.useMemo)(()=>y.filter(e=>e.sentAt===void 0),[y]),ue=(0,g.useMemo)(()=>le.map(e=>({note:e,at:Rq(e,L)})),[le,L]),de=(0,g.useMemo)(()=>{let e=new Set;for(let{at:t}of ue)if(t)for(let n=t.first;n<=t.last;n++)e.add(n);return e},[ue]),fe=(0,g.useMemo)(()=>{let e=new Map;for(let{note:t,at:n}of ue)n&&e.set(n.last,[...e.get(n.last)??[],t]);return e},[ue]),pe=t.path===`.`&&h!==null&&!(h.kind===`text`&&h.error),me=(0,g.useMemo)(()=>{let e=new Map;for(let{note:t}of ue)e.set(t.id,zq(t,L,pe));return e},[ue,L,pe]);(0,g.useEffect)(()=>{if(ie.includes(C))return;let e=C;for(;e>0&&L[e]?.kind!==`file`;)e--;w(e),E(null)},[ie,C,L]),(0,g.useEffect)(()=>{P.current?.querySelector(`[data-row="${C}"]`)?.scrollIntoView({block:`nearest`})},[C]);let he=pq(L,C,T),ge=e=>A(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n}),_e=[...R.keys()].flatMap(e=>L[e]?.path?[L[e]?.path]:[]),ve=(0,g.useMemo)(()=>kq(R,L),[R,L]),ye=_e.length>0&&_e.every(e=>k.has(e)),be=[...R.values()].reduce((e,t)=>({added:e.added+t.added,removed:e.removed+t.removed}),{added:0,removed:0}),xe=e=>{let n=nq(c,t.taskId,e,oe.has(e)?void 0:ae.get(e));l(n),eq(n)},Se=()=>{oq(!o),s(!o)},Ce=()=>{if(!he)return;let e=Iq({filePath:he.path,startLine:he.startLine,line:he.line});W.set((0,V.jsx)(ur,{multiline:!0,title:z(`preview.noteTitle`,{location:e}),submitLabel:z(`preview.noteSubmit`),onSubmit:async e=>{await F.request(`review.add`,{taskId:t.taskId,filePath:he.path,line:he.line,...he.startLine?{startLine:he.startLine}:{},code:Lq(L,he.first,he.last),body:e}),E(null),O(!1),I(),P.current?.focus()}}))},we=e=>W.set((0,V.jsx)(ur,{multiline:!0,title:z(`review.editTitle`,{location:Iq(e)}),initial:e.body,submitLabel:z(`review.editSubmit`),onSubmit:async n=>{await F.request(`review.edit`,{taskId:t.taskId,id:e.id,body:n}).catch(e=>{throw jq(e)}),I(),P.current?.focus()}})),Te=e=>void F.request(`review.remove`,{taskId:t.taskId,id:e.id}).then(I).catch(e=>G(jq(e).message,`error`)),Ee=v(pn),De=()=>{let e=fq(L,C,T);if(e){if(!Ee?.startsWith(`${t.taskId}::`)){G(z(`files.mentionNoEngine`),`error`);return}F.request(`term.input`,{stream:Ee,data:dq(e)}).then(()=>{E(null),ca(Ee)?.focus()}).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},Oe=e=>{let n=Rq(e,L),r=L.findIndex(t=>t.kind===`file`&&t.path===e.filePath);n?(A(t=>new Set([...t].filter(t=>t!==e.filePath))),w(n.first)):t.path===`.`&&r>=0?w(r):t.path!==e.filePath&&t.path!==`.`&&eA({taskId:t.taskId,path:e.filePath,scope:t.scope}),E(null),O(!1)},ke=()=>{ee(!0),F.request(`review.send`,e.engineTarget(t.taskId)).then(e=>{G(e.delivered?z(`preview.sent`,{count:e.sent}):z(`preview.notSent`,{reason:e.reason??``}),e.delivered?`info`:`error`),I()}).catch(e=>G(e instanceof Error?e.message:String(e),`error`)).finally(()=>ee(!1))},Ae=()=>{let e=rq([...R.keys()],C);e!==null&&(w(e),E(null),O(!1))},je=()=>{let e=rq(ue.flatMap(({at:e})=>e?[e.first]:[]).sort((e,t)=>e-t),C);if(e===null)return;let t=L[e]?.path;t&&A(e=>new Set([...e].filter(e=>e!==t))),w(e),E(null),O(!1)},Me=e=>w(t=>{let n=Math.max(0,ie.indexOf(t));return ie[Math.min(ie.length-1,Math.max(0,n+e))]??t}),Ne=e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)Me(1);else if(t===`k`||t===`ArrowUp`)Me(-1);else if(t===`v`)E(e=>e===null?C:null),O(!0);else if(t===`c`&&!e.ctrlKey)Ce();else if(t===`x`){let e=ue.find(({at:e})=>e&&C>=e.first&&C<=e.last);e&&Te(e.note)}else if(t===`s`)ke();else if(t===`z`){let e=L[C]?.path;e&&ne&&ge(e)}else if(t===`r`)N(e=>e+1);else if(t===`q`||t===`Escape`)i();else if(e.ctrlKey&&!e.metaKey&&t.toLowerCase()===`c`&&!window.getSelection()?.toString())i();else return;e.preventDefault()},Pe=()=>{let e=window.getSelection();if(!e||e.isCollapsed)return;let t=e=>(e instanceof Element?e:e?.parentElement)?.closest(`[data-row]`),n=t(e.anchorNode),r=t(e.focusNode);!n||!r||(E(Number(n.dataset.row)),w(Number(r.dataset.row)),O(!0))},Fe=T===null?C:Math.min(T,C),Ie=T===null?C:Math.max(T,C);return(0,V.jsxs)(`div`,{className:`group/preview flex min-h-0 min-w-0 flex-1 flex-col outline-none`,tabIndex:0,ref:P,onKeyDown:Ne,children:[ne&&(0,V.jsx)(JK,{picker:x!==null&&(0,V.jsx)(jK,{taskId:t.taskId,model:e,scope:t.scope,onScope:e=>eA({taskId:t.taskId,path:t.path,scope:e}),base:x,custom:u,onPick:d}),ignoreWs:o,onToggleWs:Se,files:_e.length,shape:ve,added:be.added,removed:be.removed,viewed:oe.size,allFolded:ye,onFoldAll:()=>A(ye?new Set:new Set(_e)),onNextFile:Ae,onNextComment:ue.some(({at:e})=>e)?je:null}),(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto py-1.5 font-mono text-meta/normal`,onMouseUp:Pe,children:[!h&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle`,children:z(`preview.loading`)}),h?.kind===`text`&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle ${h.error?`text-error`:``}`,children:h.text}),ie.map(e=>{let t=L[e],n=e>=Fe&&e<=Ie;if(t.kind===`file`){let r=R.get(e),i=t.path;return(0,V.jsx)(GK,{index:e,name:t.text,path:i,closed:i!==null&&k.has(i),viewed:i!==null&&oe.has(i),cursor:n,added:r?.added??0,removed:r?.removed??0,onToggleFold:()=>{w(e),E(null),O(!1),i&&ge(i)},onToggleViewed:()=>i&&xe(i)},re[e])}let r=de.has(e);return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{"data-row":e,className:zK(t.kind,{cursor:n,noted:r}),onClick:t=>{window.getSelection()?.isCollapsed!==!1&&(t.shiftKey?E(e=>e??C):(!a||T===null)&&E(null),w(e),O(!0))},children:[(0,V.jsx)(`span`,{className:BK,children:t.oldNo??``}),(0,V.jsx)(`span`,{className:BK,children:t.newNo??``}),(0,V.jsx)(`span`,{className:VK(t.kind,r),children:t.kind===`add`?`+`:t.kind===`del`?`−`:r?`●`:` `}),(0,V.jsx)(`span`,{className:HK(t.kind),children:t.text}),D&&he&&e===Ie&&(0,V.jsx)(KK,{showRange:a&&T===null,ranged:T!==null,onComment:Ce,onRange:()=>E(C),onAsk:De})]}),fe.get(e)?.map(e=>(0,V.jsx)(qK,{note:e,onEdit:()=>we(e)},e.id))]},re[e])})]}),(0,V.jsx)(Bq,{notes:le,states:me,sending:j,onShow:Oe,onEdit:we,onDrop:Te,onSend:ke})]})}function Uq(e){B();let{model:t,view:n}=e,r=n.path===`.`?null:kG(n.path),[i,a]=(0,g.useState)(null),o=v(t.tasks);if(!r)return(0,V.jsx)(Hq,{...e});let s=i===n.path,c=JSON.stringify(o?.tasks.find(e=>e.id===n.taskId)?.changes??null);return(0,V.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,V.jsxs)(`div`,{className:`flex gap-x-3 px-2.5 py-1`,children:[(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":!s,onClick:()=>a(null),children:`[ ${z(`artifact.preview`)} ]`}),(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":s,onClick:()=>a(n.path),children:`[ ${z(`artifact.source`)} ]`})]}),s?(0,V.jsx)(Hq,{...e}):(0,V.jsx)(kK,{model:t,taskId:n.taskId,path:n.path,kind:r,changeKey:c})]})}var Wq={entries:[],failed:new Set},Gq=[`command`,`cmd`,`file_path`,`path`,`pattern`,`query`,`url`,`description`,`prompt`],Kq=100;function qq(e){let t=(e.split(`
|
|
138
|
-
`).find(e=>e.trim()!==``)??``).trim();return t.length>
|
|
139
|
-
|
|
140
|
-
`),tools:s})}),{entries:n,failed:r}}function
|
|
130
|
+
`),n=[],r=[],i=()=>{r.length>0&&n.push({t:`para`,c:_G(r.join(`
|
|
131
|
+
`))}),r=[]};for(let e=0;e<t.length;e++){let a=t[e],o=vG.exec(a);if(o){i();let r=o[1][0],a=[];for(e++;e<t.length&&!RegExp(`^\\s*${r}{3,}\\s*$`).test(t[e]);e++)a.push(t[e]);n.push({t:`code`,lang:o[2]??``,v:a.join(`
|
|
132
|
+
`)});continue}if(a.trim()===``){i();continue}let s=yG.exec(a);if(s){i(),n.push({t:`heading`,level:s[1].length,c:_G(s[2])});continue}if(SG.test(a)){i(),n.push({t:`hr`});continue}if(CG.test(a)){i();let r=[];for(;e<t.length&&CG.test(t[e]);e++){let n=t[e];wG.test(n)||r.push(TG(n))}e--,n.push({t:`table`,rows:r.map(e=>e.map(e=>_G(e)))});continue}if(a.startsWith(`>`)){i();let r=[];for(;e<t.length&&t[e].startsWith(`>`);e++)r.push(t[e].replace(/^>\s?/,``));e--,n.push({t:`quote`,c:_G(r.join(`
|
|
133
|
+
`))});continue}let c=bG.exec(a),l=c?null:xG.exec(a);if(c||l){i();let r=!c,a=[];for(;e<t.length;e++){let n=r?xG.exec(t[e]):bG.exec(t[e]);if(!n)break;let i=n[1].length;a.push({depth:Math.min(3,Math.floor(i/2)),c:_G(r?n[2]:n[3])})}e--,n.push({t:`list`,ordered:r,items:a});continue}r.push(a)}return i(),n}var DG=`flex min-h-0 min-w-0 flex-1 flex-col font-sans text-body`,OG=`flex flex-none flex-wrap items-center gap-x-3 gap-y-1 px-3 pb-1.5 font-mono text-meta`,kG=`min-w-0 flex-1 basis-32 py-1 text-meta`,AG=`min-h-0 flex-1 overflow-y-auto px-3 pb-3`,jG=`m-0 px-3 py-2 font-mono text-meta text-subtle`,MG=`m-0 whitespace-pre-wrap px-3 pb-3 font-mono text-meta leading-[1.45] text-muted wrap-anywhere`,NG=e=>`group/entry mt-3 rounded-sm border-l-2 py-0.5 pl-2.5 ${e.flash?`border-accent bg-accent-soft`:e.current?`border-line-active`:`border-transparent`}`,PG=`mb-0.5 flex items-center gap-2 font-mono text-meta`,FG=e=>e===`user`?`text-accent`:`text-muted`,IG=`text-subtle`,LG=`ml-auto opacity-0 group-hover/entry:opacity-100 focus-visible:opacity-100 touch:opacity-100`,RG=`m-0 mt-0.5 flex min-w-0 items-baseline gap-1.5 font-mono text-meta text-subtle`,zG=`flex-none text-muted`,BG=`min-w-0 flex-1 truncate`,VG=`leading-[1.5] wrap-anywhere`,HG=`m-0 mb-2 whitespace-pre-wrap last:mb-0`,UG=`m-0 mt-3 mb-1.5 font-semibold first:mt-0`,WG=`m-0 mb-2 flex flex-col gap-0.5 pl-5 last:mb-0`,GG=`m-0 mb-2 border-l-2 border-line pl-2.5 whitespace-pre-wrap text-muted last:mb-0`,KG=`m-0 mb-2 overflow-x-auto rounded-sm border-hairline border-line bg-inset px-2.5 py-2 font-mono text-meta leading-[1.45] last:mb-0`,qG=`rounded-xs bg-inset px-1 font-mono text-meta`,JG=`text-accent underline`,YG=`mb-2 block max-w-full overflow-x-auto border-collapse font-mono text-meta last:mb-0`,XG=`border-hairline border-line px-2 py-0.5 text-left align-top`,ZG=`my-2 border-0 border-t border-line`;function QG(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=e.toLowerCase(),i=[],a=0;for(let t=r.indexOf(n);t>=0;t=r.indexOf(n,a))t>a&&i.push(e.slice(a,t)),i.push((0,V.jsx)(`mark`,{className:BO,"data-hit":``,children:e.slice(t,t+n.length)},t)),a=t+n.length;return i.push(e.slice(a)),g.Children.toArray(i)}var $G=[`h3`,`h3`,`h4`,`h5`,`h6`,`h6`];function eK({level:e,children:t}){let n=$G[Math.min(5,Math.max(0,e-1))]??`h6`;return(0,V.jsx)(n,{className:UG,children:t})}function tK(e,t){return e.map((e,n)=>(0,V.jsx)(g.Fragment,{children:t(e)},n))}function nK({nodes:e,needle:t}){return tK(e,e=>e.t===`text`?QG(e.v,t):e.t===`code`?(0,V.jsx)(`code`,{className:qG,children:QG(e.v,t)}):e.t===`bold`?(0,V.jsx)(`strong`,{children:(0,V.jsx)(nK,{nodes:e.c,needle:t})}):e.t===`em`?(0,V.jsx)(`em`,{children:(0,V.jsx)(nK,{nodes:e.c,needle:t})}):(0,V.jsx)(`a`,{className:JG,href:e.href,target:`_blank`,rel:`noopener noreferrer`,children:(0,V.jsx)(nK,{nodes:e.c,needle:t})}))}function rK({block:e,needle:t}){switch(e.t){case`heading`:return(0,V.jsx)(eK,{level:e.level,children:(0,V.jsx)(nK,{nodes:e.c,needle:t})});case`para`:return(0,V.jsx)(`p`,{className:HG,children:(0,V.jsx)(nK,{nodes:e.c,needle:t})});case`code`:return(0,V.jsx)(`pre`,{className:KG,children:(0,V.jsx)(`code`,{children:QG(e.v,t)})});case`quote`:return(0,V.jsx)(`blockquote`,{className:GG,children:(0,V.jsx)(nK,{nodes:e.c,needle:t})});case`hr`:return(0,V.jsx)(`hr`,{className:ZG});case`list`:{let n=e.ordered?`ol`:`ul`;return(0,V.jsx)(n,{className:`${WG} ${e.ordered?`list-decimal`:`list-disc`}`,children:tK(e.items,e=>(0,V.jsx)(`li`,{style:{marginLeft:`${e.depth*1.25}rem`},children:(0,V.jsx)(nK,{nodes:e.c,needle:t})}))})}case`table`:return(0,V.jsx)(`table`,{className:YG,children:(0,V.jsx)(`tbody`,{children:tK(e.rows,e=>(0,V.jsx)(`tr`,{children:tK(e,e=>(0,V.jsx)(`td`,{className:XG,children:(0,V.jsx)(nK,{nodes:e,needle:t})}))}))})})}}function iK({source:e,needle:t=``}){let n=(0,g.useMemo)(()=>EG(e),[e]);return(0,V.jsx)(`div`,{className:VG,children:tK(n,e=>(0,V.jsx)(rK,{block:e,needle:t}))})}function aK(e){if(e instanceof d_){if(e.code===`TOO_LARGE`){let t=e.detail?.size;return eL(z(`artifact.tooLarge`),{size:typeof t==`number`?`${(t/1048576).toFixed(1)} MB`:`5 MB+`})}if(e.code===`NOT_PREVIEWABLE`)return z(`artifact.notPreviewable`);if(e.code===`NOT_FOUND`)return z(`artifact.gone`)}return eL(z(`artifact.failed`),{error:e instanceof Error?e.message:String(e)})}function oK(e,t,n,r){let[i,a]=(0,g.useState)({kind:`loading`});return(0,g.useEffect)(()=>{let r=!0;return e.client.request(`file.read`,{taskId:t,path:n}).then(e=>r&&a({kind:`ready`,file:e}),e=>r&&a({kind:`failed`,text:aK(e)})),()=>{r=!1}},[e,t,n,r]),i}function sK(e,t){let n=(0,g.useMemo)(()=>e===null?null:URL.createObjectURL(new Blob([lG(e)],{type:t})),[e,t]);return(0,g.useEffect)(()=>()=>void(n&&URL.revokeObjectURL(n)),[n]),n}function cK({model:e,taskId:t,path:n,kind:r,changeKey:i}){B();let a=oK(e,t,n,i),o=sK(a.kind===`ready`&&(r===`svg`||r===`image`||r===`pdf`)?a.file.base64:null,r===`md`||r===`html`?``:dG(r,n));return a.kind===`loading`?(0,V.jsx)(`p`,{className:Jt,children:z(`artifact.loading`)}):a.kind===`failed`?(0,V.jsx)(`p`,{className:`${Jt} text-error`,children:a.text}):r===`md`?(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-3 py-2`,children:(0,V.jsx)(iK,{source:uG(a.file.base64)})}):r===`html`?(0,V.jsx)(`iframe`,{title:n,sandbox:``,srcDoc:pG(uG(a.file.base64)),style:{colorScheme:`light`,background:`#fff`},className:`min-h-0 w-full flex-1 border-none`}):o?r===`pdf`?(0,V.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,V.jsx)(`a`,{className:`${en} px-3 py-1 font-mono text-meta`,href:o,target:`_blank`,rel:`noreferrer noopener`,children:z(`artifact.open`)}),(0,V.jsx)(`iframe`,{title:n,src:o,className:`min-h-0 w-full flex-1 border-none`})]}):(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,V.jsx)(`img`,{src:o,alt:n,className:`max-w-full`})}):null}function lK(e,t,n){let r=[{ref:null,suggestion:{key:`default`,text:t,dim:z(`review.baseDefault`),accent:!0}}],i=(e,n)=>{for(let i of e)i!==t&&r.push({ref:i,suggestion:{key:`${n}:${i}`,text:i,dim:n}})};i(e?.branches??[],z(`review.baseBranch`)),i(e?.remotes??[],z(`review.baseRemote`)),i(e?.tags??[],z(`review.baseTag`));for(let t of e?.commits??[])r.push({ref:t.sha,suggestion:{key:`commit:${t.sha}`,text:t.sha,dim:t.subject}});let a=n.trim().toLowerCase();if(a===``)return r.slice(0,40);let o=r.filter(e=>`${e.suggestion.text} ${e.suggestion.dim??``}`.toLowerCase().includes(a)),s=e=>e.suggestion.text.toLowerCase()===a?0:1;return o.sort((e,t)=>s(e)-s(t)).slice(0,40)}function uK(e){let[t,n]=(0,g.useState)(!1),[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(null),s=e.model.client;(0,g.useEffect)(()=>{if(!t)return;let n=!0;return Ws(s,`diff.refs`,{taskId:e.taskId}).then(e=>n&&o(e),()=>{}),()=>{n=!1}},[t,s,e.taskId]);let c=lK(a,e.base,r),l=t=>{e.onPick(t),n(!1),i(``)},u=e.custom??e.base,d=[{id:`task`,label:z(`review.scopeTask`)},{id:`working`,label:z(`review.scopeWorking`)},{id:`branch`,label:z(`review.scopeBranch`)}],f=d.find(t=>t.id===e.scope)?.label??``;return(0,V.jsxs)(`span`,{className:`relative`,onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`&&t&&n(!1)},children:[(0,V.jsx)(H,{hit:`tight`,"aria-expanded":t,"aria-haspopup":`menu`,onClick:t=>{let r=t.currentTarget.getBoundingClientRect();sn.set({x:r.left,y:r.bottom+2,target:t.currentTarget,items:[...d.map(t=>({label:t.label,section:`scope`,checked:t.id===e.scope,run:()=>e.onScope(t.id)})),{label:z(`review.compareAgainst`,{base:u}),section:`base`,run:()=>n(!0)}]})},children:z(`review.scopeMenu`,{base:u,scope:f})}),t&&(0,V.jsx)(`div`,{className:`absolute top-full left-0 z-3 mt-1 w-64 max-w-full rounded-sm border-hairline border-line-active bg-surface p-1 shadow-popover`,children:(0,V.jsx)(AD,{field:`diff-base`,autoFocus:!0,value:r,onChange:i,items:c.map(e=>e.suggestion),open:!0,placeholder:z(`review.basePlaceholder`),onPick:e=>l(c[e]?.ref??null),onEnter:()=>l(r.trim()===``?null:r.trim())})})]})}var dK=`rove.diffBase`;function fK(){try{let e=JSON.parse(localStorage.getItem(dK)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`))}catch{return{}}}function pK(e){return fK()[e]??null}function mK(e,t){let n=fK();t===null?delete n[e]:n[e]=t;try{localStorage.setItem(dK,JSON.stringify(n))}catch{}}function hK(e){let[t,n]=(0,g.useState)(()=>pK(e.taskId));return[t,t=>{mK(e.taskId,t),n(t),t!==null&&e.scope!==`task`&&Xk({taskId:e.taskId,path:e.path,scope:`task`})}]}var gK={add:`bg-diff-added-bg`,del:`bg-diff-removed-bg`},_K={add:`text-diff-added`,del:`text-diff-removed`};function vK(e,t){let n=t.cursor?`bg-inset group-focus/preview:bg-accent-soft`:t.noted?`bg-inset`:gK[e]??``;return`relative grid ${e===`file`||e===`note`?`cursor-pointer`:`cursor-default`} grid-cols-[4ch_4ch_2ch_1fr] gap-x-2 gap-y-0 whitespace-pre px-3 narrow:grid-cols-[3ch_3ch_1ch_1fr] narrow:gap-x-1 narrow:px-1.5 ${n} ${e===`file`?`mt-2 border-t-hairline border-line pt-1 font-bold text-ink`:e===`hunk`||e===`meta`?`text-subtle`:``}`}var yK=`text-right text-subtle`,bK=(e,t)=>t?`text-accent`:_K[e]??``,xK=e=>`min-w-0 narrow:whitespace-pre-wrap narrow:wrap-anywhere ${_K[e]??``}`,SK=`min-w-0 whitespace-pre-wrap wrap-anywhere text-accent`,CK=`flex min-w-0 items-baseline gap-2`;function wK(e){return(0,V.jsxs)(`div`,{className:`flex items-center ${e.viewed?`opacity-60`:``}`,children:[(0,V.jsxs)(H,{variant:`row`,"data-row":e.index,"aria-expanded":!e.closed,"aria-label":z(e.closed?`review.unfold`:`review.fold`,{path:e.name}),className:`${vK(`file`,{cursor:e.cursor,noted:!1})} min-w-0 flex-1 text-left`,onClick:e.onToggleFold,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{className:`grid place-items-center text-subtle`,children:(0,V.jsx)(Ia,{right:e.closed})}),(0,V.jsxs)(`span`,{className:CK,children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name}),e.added?(0,V.jsxs)(fL,{tone:`added`,children:[`+`,e.added]}):null,e.removed?(0,V.jsxs)(fL,{tone:`removed`,children:[`−`,e.removed]}):null]})]}),e.path&&(0,V.jsx)(H,{hit:`tight`,className:`flex-none px-2`,"aria-pressed":e.viewed,"aria-label":z(e.viewed?`review.unmarkViewed`:`review.markViewed`,{path:e.name}),onClick:e.onToggleViewed,children:e.viewed?z(`review.viewedOn`):z(`review.viewed`)})]})}function TK(e){return(0,V.jsxs)(`div`,{className:`absolute top-full right-3 z-1 flex gap-1.5`,children:[(0,V.jsx)(H,{variant:`floating`,onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),e.onComment()},children:z(`review.comment`)}),e.showRange&&(0,V.jsx)(H,{variant:`floating`,onClick:t=>{t.stopPropagation(),e.onRange()},children:z(`review.range`)}),e.ranged&&(0,V.jsx)(H,{variant:`floating`,title:z(`preview.askInChatHint`),onMouseDown:e=>e.preventDefault(),onClick:t=>{t.stopPropagation(),e.onAsk()},children:z(`preview.askInChat`)})]})}function EK({note:e,onEdit:t}){return(0,V.jsxs)(H,{variant:`row`,className:`${vK(`note`,{cursor:!1,noted:!1})} w-full text-left`,onClick:t,children:[(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{}),(0,V.jsx)(`span`,{className:`text-accent`,children:`●`}),(0,V.jsx)(`span`,{className:SK,children:e.body})]})}function DK(e){return(0,V.jsxs)(`div`,{className:`flex flex-none flex-wrap items-center gap-x-3 gap-y-1 px-2 pt-1.5 font-mono text-meta`,children:[e.picker,(0,V.jsx)(H,{hit:`tight`,"aria-pressed":e.ignoreWs,title:z(`review.ignoreWsHint`),className:`opacity-60 aria-pressed:underline aria-pressed:opacity-100`,onClick:e.onToggleWs,children:z(`review.ignoreWs`)}),(0,V.jsxs)(`span`,{className:`flex min-w-0 basis-full flex-wrap items-center gap-x-1.5 text-muted`,children:[z(`review.totals`,{files:e.files,added:e.added,removed:e.removed}),e.shape&&(0,V.jsxs)(`span`,{children:[`· `,e.shape]}),e.files>0&&(0,V.jsxs)(`span`,{className:`whitespace-nowrap`,children:[`· `,z(`review.viewedCount`,{done:e.viewed,files:e.files})]})]}),(0,V.jsxs)(`span`,{className:`ml-auto flex items-center gap-x-3`,children:[e.files>1&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onNextFile,children:z(`review.nextFile`)}),e.onNextComment&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onNextComment,children:z(`review.nextComment`)}),e.files>1&&(0,V.jsx)(H,{hit:`tight`,onClick:e.onFoldAll,children:e.allFolded?z(`review.unfoldAll`):z(`review.foldAll`)})]})]})}var OK=`rove.diffViewed`,kK=(e,t)=>`${e}\0${t}`;function AK(e){let t=2166136261;for(let n of e){let e=`${n.kind}${n.text}\n`;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619)}return(t>>>0).toString(16)}function jK(e){let t=new Map,n=-1,r=r=>{let i=n>=0?e[n]?.path:null;i&&t.set(i,AK(e.slice(n+1,r)))};return e.forEach((e,t)=>{e.kind===`file`&&(r(t),n=t)}),r(e.length),t}function MK(){try{let e=JSON.parse(localStorage.getItem(OK)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`))}catch{return{}}}function NK(e){try{localStorage.setItem(OK,JSON.stringify(e))}catch{}}function PK(e,t,n){let r=new Set;for(let[i,a]of n)e[kK(t,i)]===a&&r.add(i);return r}function FK(e,t,n,r){let i={...e};return r===void 0?delete i[kK(t,n)]:i[kK(t,n)]=r,i}function IK(e,t){return e.find(e=>e>t)??e[0]??null}var LK=`rove.diffIgnoreWs`;function RK(){try{return localStorage.getItem(LK)===`1`}catch{return!1}}function zK(e){try{localStorage.setItem(LK,e?`1`:`0`)}catch{}}var BK=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;function VK(e,t=null,n=!1){let r=[],i=0,a=0,o=t,s=!1;for(let t of e.replace(/\n$/,``).split(`
|
|
134
|
+
`)){if(t.startsWith(`diff --git `)){let e=/ b\/(.+)$/.exec(t);o=e?e[1]:o,s=!1,r.push({kind:`file`,text:o??t,oldNo:null,newNo:null,path:o});continue}let e=BK.exec(t);if(e){i=Number(e[1]),a=Number(e[2]),s=!0,r.push({kind:`hunk`,text:t,oldNo:null,newNo:null,path:o});continue}if(!s){r.push({kind:`meta`,text:t,oldNo:null,newNo:null,path:o});continue}t.startsWith(`+`)?r.push({kind:`add`,text:t.slice(1),oldNo:null,newNo:a++,path:o}):t.startsWith(`-`)?r.push({kind:`del`,text:t.slice(1),oldNo:i++,newNo:null,path:o,...n?{foreignOld:!0}:{}}):t.startsWith(`\\`)?r.push({kind:`meta`,text:t,oldNo:null,newNo:null,path:o}):r.push({kind:`ctx`,text:t.slice(1),oldNo:i++,newNo:a++,path:o})}return r}function HK(e,t){return e.replace(/\n$/,``).split(`
|
|
135
|
+
`).map((e,n)=>({kind:`ctx`,text:e,oldNo:null,newNo:n+1,path:t}))}function UK(e){return e.kind===`del`?e.foreignOld?null:e.oldNo:e.kind===`add`||e.kind===`ctx`?e.newNo:null}function WK(e){let t=e.startLine?`lines ${e.startLine}-${e.line}`:`line ${e.line}`;return`@${e.path} (${t}) `}function GK(e,t,n){let r=e[t],i=r?UK(r):null;if(!r?.path||i===null)return null;if(n===null||n===t)return{path:r.path,line:i};let a=e[Math.min(n,t)],o=e[Math.max(n,t)],s=a?UK(a):null,c=o?UK(o):null;return s===null||c===null||a?.path!==o?.path?{path:r.path,line:i}:s===c?{path:r.path,line:c}:{path:r.path,startLine:Math.min(s,c),line:Math.max(s,c)}}function KK(e,t,n){let r=GK(e,t,n);if(!r)return null;let i=r.startLine!==void 0&&n!==null;return{...r,first:i?Math.min(n,t):t,last:i?Math.max(n,t):t}}function qK(e,t){let n=[],r=!1;return e.forEach((e,i)=>{e.kind===`file`&&(r=e.path!==null&&t.has(e.path)),(!r||e.kind===`file`)&&n.push(i)}),n}function JK(e){let t=new Map,n=-1;return e.forEach((e,r)=>{if(e.kind===`file`){n=r,t.set(r,{added:0,removed:0});return}let i=t.get(n);i&&(e.kind===`add`?i.added++:e.kind===`del`&&i.removed++)}),t}var YK=[`source`,`tests`,`config`,`docs`,`generated`],XK=/(^|\/)(bun\.lockb?|package-lock\.json|yarn\.lock|pnpm-lock\.yaml|Cargo\.lock|poetry\.lock|uv\.lock|Gemfile\.lock|go\.sum|composer\.lock)$/,ZK=/(^|\/)(dist|build|generated|__generated__|\.next)\/|\.min\.(js|css)$|\.snap$|\.generated\.|\.pb\.go$|\.map$/,QK=/(^|\/)(tests?|__tests__|spec|e2e)\/|\.(test|spec)\.[cm]?[jt]sx?$|_test\.(go|py)$|(^|\/)test_[^/]+\.py$/,$K=/\.(md|mdx|rst|txt)$|(^|\/)docs\//i,eq=/(^|\/)(\.[\w.-]+rc(\.\w+)?|[\w.-]*\.config\.[cm]?[jt]s|tsconfig[\w.-]*\.json|package\.json|biome\.json|Dockerfile|Makefile)$|\.(ya?ml|toml|ini|env)$|(^|\/)\.(github|changeset|vscode)\//,tq=e=>XK.test(e);function nq(e){return XK.test(e)||ZK.test(e)?`generated`:QK.test(e)?`tests`:$K.test(e)?`docs`:eq.test(e)?`config`:`source`}var rq=e=>nq(e)===`generated`;function iq(e){let t=e.filter(e=>nq(e.path)!==`generated`),n=t.reduce((e,t)=>e+t.lines,0);return t.length===0?1:((e,t)=>e<=2&&t<=30?1:e<=5&&t<=150?2:e<=10&&t<=400?3:e<=20&&t<=1e3?4:5)(t.length,n)}function aq(e){let t=[],n=(e,n)=>n>0&&t.push({group:e,count:n});for(let t of YK)t===`generated`?(n(`lockfile`,e.filter(tq).length),n(`generated`,e.filter(e=>nq(e)===`generated`&&!tq(e)).length)):n(t,e.filter(e=>nq(e)===t).length);return t}function oq(e){let t=[];for(let n of e)(n.kind===`file`||t.length===0)&&t.push([]),t[t.length-1]?.push(n);let n=e=>YK.indexOf(nq(e[0]?.path??``));return t.map((e,t)=>({file:e,i:t})).sort((e,t)=>n(e.file)-n(t.file)||e.i-t.i).flatMap(({file:e})=>e)}function sq(e){return aq(e.map(e=>e.path)).map(({group:e,count:t})=>({key:e===`lockfile`?t===1?`lockfile`:`lockfiles`:e,count:t}))}function cq(e,t){let n=[...e.entries()].flatMap(([e,n])=>{let r=t[e]?.path;return r?[{path:r,lines:n.added+n.removed}]:[]});return n.length<2?``:[z(`review.shape.effort`,{n:iq(n)}),...sq(n).map(e=>z(`review.shape.${e.key}`,{count:e.count}))].join(` · `)}function lq(e,t,n){if(!e||typeof e!=`object`||!(`kind`in e))return{kind:`text`,text:z(`preview.unknown`)};let r=`text`in e&&typeof e.text==`string`?e.text:``;switch(e.kind){case`diff`:{let e=VK(r,t===`.`?null:t,n);return{kind:`rows`,rows:t===`.`?oq(e):e,diff:!0}}case`code`:return{kind:`rows`,rows:HK(r,t),diff:!1};case`binary`:return{kind:`text`,text:z(`preview.binary`)};case`empty`:return{kind:`text`,text:z(`preview.empty`)};case`error`:return{kind:`text`,text:`message`in e?String(e.message):z(`preview.unknown`),error:!0};default:return{kind:`text`,text:z(`preview.noHunks`,{kind:String(e.kind)})}}}function uq(e){return e instanceof d_&&e.code===`UNKNOWN_OP`?Error(z(`review.notSupported`)):e instanceof Error?e:Error(String(e))}var dq={add:`+`,del:`-`},fq=40,pq=160,mq=e=>`${dq[e.kind]??` `}${e.text.slice(0,pq)}`,hq=e=>e.startLine!==void 0&&e.startLine!==e.line?`${e.filePath}:${e.startLine}-${e.line}`:`${e.filePath}:${e.line}`;function gq(e,t,n){let r=[];for(let i=t;i<=n&&r.length<fq;i++){let t=e[i];t&&UK(t)!==null&&r.push(mq(t))}return r.join(`
|
|
136
|
+
`)}function _q(e,t){let n=e.startLine??e.line,r=t.flatMap((t,n)=>t.path===e.filePath&&UK(t)!==null?[n]:[]);if(!e.code){let i=r.filter(r=>{let i=UK(t[r]);return i>=n&&i<=e.line}),a=i[0],o=i[i.length-1];return a===void 0||o===void 0?null:{first:a,last:o}}let i=e.code.split(`
|
|
137
|
+
`);for(let e=0;e+i.length<=r.length;e++){let a=r.slice(e,e+i.length),o=a[0],s=a[a.length-1];if(o!==void 0&&s!==void 0&&UK(t[o])===n&&a.every((e,n)=>mq(t[e])===i[n]))return{first:o,last:s}}return null}function vq(e,t,n){return _q(e,t)?`ok`:t.some(t=>t.path===e.filePath)||n?`moved`:`unknown`}function yq({notes:e,states:t,sending:n,onShow:r,onEdit:i,onDrop:a,onSend:o}){B();let[s,c]=(0,g.useState)(!1);if(e.length===0)return null;let l=e.length;return(0,V.jsxs)(`div`,{className:`flex max-h-2/5 min-h-0 flex-none flex-col border-t-hairline border-line font-mono text-meta`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-1.5 narrow:px-2`,children:[(0,V.jsxs)(H,{variant:`row`,className:`flex min-w-0 flex-1 items-center gap-2 text-left text-ink`,"aria-expanded":s,onClick:()=>c(!s),children:[(0,V.jsx)(Ia,{right:!s}),(0,V.jsx)(`span`,{children:l===1?z(`review.countOne`):z(`review.count`,{count:l})})]}),(0,V.jsx)(H,{disabled:n,onClick:o,children:n?z(`review.sending`):z(`review.send`,{count:l})})]}),s&&(0,V.jsx)(`ul`,{className:`m-0 min-h-0 list-none overflow-y-auto p-0 pb-1`,children:e.map(e=>(0,V.jsxs)(`li`,{className:`flex flex-col gap-0.5 px-3 py-1 narrow:px-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,V.jsx)(H,{variant:`row`,className:`min-w-0 flex-1 truncate text-left text-ink hover:underline`,title:z(`review.show`),onClick:()=>r(e),children:hq(e)}),t.get(e.id)===`moved`&&(0,V.jsx)(`span`,{title:z(`review.movedHint`),children:(0,V.jsx)(fL,{tone:`warning`,children:z(`review.moved`)})}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>i(e),children:z(`review.edit`)}),(0,V.jsx)(H,{hit:`tight`,onClick:()=>a(e),children:z(`review.drop`)})]}),(0,V.jsx)(`p`,{className:`m-0 line-clamp-2 whitespace-pre-wrap wrap-anywhere text-muted`,children:e.body})]},e.id))})]})}var bq=[];function xq({model:e,view:t,active:n,restored:r,onClose:i}){B();let a=ts(),[o,s]=(0,g.useState)(RK),[c,l]=(0,g.useState)(MK),[u,d]=hK(t),f=t.scope===`task`?u:null,p=f!==null,m={taskId:t.taskId,path:t.path,scope:t.scope,...o?{ignoreWhitespace:!0}:{},...f?{base:f}:{}},[h,_]=(0,g.useState)(()=>{let n=Hs(e,`diff.file`,m);return n===void 0?null:lq(n,t.path,p)}),[y,b]=(0,g.useState)(()=>Hs(e,`review.list`,{taskId:t.taskId})?.notes??[]),[x,S]=(0,g.useState)(()=>Hs(e,`diff.files`,{taskId:t.taskId})?.base??null),[C,w]=(0,g.useState)(0),[T,E]=(0,g.useState)(null),[D,O]=(0,g.useState)(!1),[k,A]=(0,g.useState)(new Set),[j,ee]=(0,g.useState)(!1),[M,N]=(0,g.useState)(0),P=(0,g.useRef)(null),F=e.client;(0,g.useEffect)(()=>{let e=!0;return Ws(F,`diff.file`,m).then(n=>e&&_(lq(n,t.path,p)),t=>{if(e){if(f&&t instanceof d_&&t.code===`BAD_REF`){d(null),G(t.message,`error`);return}_({kind:`text`,text:t instanceof Error?t.message:String(t),error:!0})}}),()=>{e=!1}},[F,t.taskId,t.path,t.scope,o,f,M]),(0,g.useEffect)(()=>{let e=!0;return Ws(F,`diff.files`,{taskId:t.taskId}).then(t=>e&&S(t.base),()=>{}),()=>{e=!1}},[F,t.taskId,M]);let I=()=>void Ws(F,`review.list`,{taskId:t.taskId}).then(e=>b(e.notes));(0,g.useEffect)(I,[F,t.taskId,M]);let te=(0,g.useRef)(!1);(0,g.useEffect)(()=>{n&&(te.current||!r)&&P.current?.focus(),te.current=!0},[n,r]);let L=h?.kind===`rows`?h.rows:bq,ne=h?.kind===`rows`&&h.diff,re=(0,g.useMemo)(()=>L.map((e,t)=>`row-${t}`),[L]),ie=(0,g.useMemo)(()=>qK(L,k),[L,k]),R=(0,g.useMemo)(()=>JK(L),[L]),ae=(0,g.useMemo)(()=>jK(L),[L]),oe=(0,g.useMemo)(()=>PK(c,t.taskId,ae),[c,t.taskId,ae]),se=(0,g.useRef)(new Set);(0,g.useEffect)(()=>{let e=[...ae.keys()].filter(e=>rq(e)&&!se.current.has(e));if(e.length!==0){for(let t of e)se.current.add(t);A(t=>new Set([...t,...e]))}},[ae]);let ce=(0,g.useRef)(new Set);(0,g.useEffect)(()=>{let e=ce.current;ce.current=oe;let t=[...oe].filter(t=>!e.has(t)),n=[...e].filter(e=>!oe.has(e));(t.length!==0||n.length!==0)&&A(e=>new Set([...[...e].filter(e=>!n.includes(e)),...t]))},[oe]);let le=(0,g.useMemo)(()=>y.filter(e=>e.sentAt===void 0),[y]),ue=(0,g.useMemo)(()=>le.map(e=>({note:e,at:_q(e,L)})),[le,L]),de=(0,g.useMemo)(()=>{let e=new Set;for(let{at:t}of ue)if(t)for(let n=t.first;n<=t.last;n++)e.add(n);return e},[ue]),fe=(0,g.useMemo)(()=>{let e=new Map;for(let{note:t,at:n}of ue)n&&e.set(n.last,[...e.get(n.last)??[],t]);return e},[ue]),pe=t.path===`.`&&h!==null&&!(h.kind===`text`&&h.error),me=(0,g.useMemo)(()=>{let e=new Map;for(let{note:t}of ue)e.set(t.id,vq(t,L,pe));return e},[ue,L,pe]);(0,g.useEffect)(()=>{if(ie.includes(C))return;let e=C;for(;e>0&&L[e]?.kind!==`file`;)e--;w(e),E(null)},[ie,C,L]),(0,g.useEffect)(()=>{P.current?.querySelector(`[data-row="${C}"]`)?.scrollIntoView({block:`nearest`})},[C]);let he=KK(L,C,T),ge=e=>A(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n}),_e=[...R.keys()].flatMap(e=>L[e]?.path?[L[e]?.path]:[]),ve=(0,g.useMemo)(()=>cq(R,L),[R,L]),ye=_e.length>0&&_e.every(e=>k.has(e)),be=[...R.values()].reduce((e,t)=>({added:e.added+t.added,removed:e.removed+t.removed}),{added:0,removed:0}),xe=e=>{let n=FK(c,t.taskId,e,oe.has(e)?void 0:ae.get(e));l(n),NK(n)},Se=()=>{zK(!o),s(!o)},Ce=()=>{if(!he)return;let e=hq({filePath:he.path,startLine:he.startLine,line:he.line});W.set((0,V.jsx)(ur,{multiline:!0,title:z(`preview.noteTitle`,{location:e}),submitLabel:z(`preview.noteSubmit`),onSubmit:async e=>{await F.request(`review.add`,{taskId:t.taskId,filePath:he.path,line:he.line,...he.startLine?{startLine:he.startLine}:{},code:gq(L,he.first,he.last),body:e}),E(null),O(!1),I(),P.current?.focus()}}))},we=e=>W.set((0,V.jsx)(ur,{multiline:!0,title:z(`review.editTitle`,{location:hq(e)}),initial:e.body,submitLabel:z(`review.editSubmit`),onSubmit:async n=>{await F.request(`review.edit`,{taskId:t.taskId,id:e.id,body:n}).catch(e=>{throw uq(e)}),I(),P.current?.focus()}})),Te=e=>void F.request(`review.remove`,{taskId:t.taskId,id:e.id}).then(I).catch(e=>G(uq(e).message,`error`)),Ee=v(pn),De=()=>{let e=GK(L,C,T);if(e){if(!Ee?.startsWith(`${t.taskId}::`)){G(z(`files.mentionNoEngine`),`error`);return}F.request(`term.input`,{stream:Ee,data:WK(e)}).then(()=>{E(null),ca(Ee)?.focus()}).catch(e=>G(e instanceof Error?e.message:String(e),`error`))}},Oe=e=>{let n=_q(e,L),r=L.findIndex(t=>t.kind===`file`&&t.path===e.filePath);n?(A(t=>new Set([...t].filter(t=>t!==e.filePath))),w(n.first)):t.path===`.`&&r>=0?w(r):t.path!==e.filePath&&t.path!==`.`&&Xk({taskId:t.taskId,path:e.filePath,scope:t.scope}),E(null),O(!1)},ke=()=>{ee(!0),F.request(`review.send`,e.engineTarget(t.taskId)).then(e=>{G(e.delivered?z(`preview.sent`,{count:e.sent}):z(`preview.notSent`,{reason:e.reason??``}),e.delivered?`info`:`error`),I()}).catch(e=>G(e instanceof Error?e.message:String(e),`error`)).finally(()=>ee(!1))},Ae=()=>{let e=IK([...R.keys()],C);e!==null&&(w(e),E(null),O(!1))},je=()=>{let e=IK(ue.flatMap(({at:e})=>e?[e.first]:[]).sort((e,t)=>e-t),C);if(e===null)return;let t=L[e]?.path;t&&A(e=>new Set([...e].filter(e=>e!==t))),w(e),E(null),O(!1)},Me=e=>w(t=>{let n=Math.max(0,ie.indexOf(t));return ie[Math.min(ie.length-1,Math.max(0,n+e))]??t}),Ne=e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)Me(1);else if(t===`k`||t===`ArrowUp`)Me(-1);else if(t===`v`)E(e=>e===null?C:null),O(!0);else if(t===`c`&&!e.ctrlKey)Ce();else if(t===`x`){let e=ue.find(({at:e})=>e&&C>=e.first&&C<=e.last);e&&Te(e.note)}else if(t===`s`)ke();else if(t===`z`){let e=L[C]?.path;e&&ne&&ge(e)}else if(t===`r`)N(e=>e+1);else if(t===`q`||t===`Escape`)i();else if(e.ctrlKey&&!e.metaKey&&t.toLowerCase()===`c`&&!window.getSelection()?.toString())i();else return;e.preventDefault()},Pe=()=>{let e=window.getSelection();if(!e||e.isCollapsed)return;let t=e=>(e instanceof Element?e:e?.parentElement)?.closest(`[data-row]`),n=t(e.anchorNode),r=t(e.focusNode);!n||!r||(E(Number(n.dataset.row)),w(Number(r.dataset.row)),O(!0))},Fe=T===null?C:Math.min(T,C),Ie=T===null?C:Math.max(T,C);return(0,V.jsxs)(`div`,{className:`group/preview flex min-h-0 min-w-0 flex-1 flex-col outline-none`,tabIndex:0,ref:P,onKeyDown:Ne,children:[ne&&(0,V.jsx)(DK,{picker:x!==null&&(0,V.jsx)(uK,{taskId:t.taskId,model:e,scope:t.scope,onScope:e=>Xk({taskId:t.taskId,path:t.path,scope:e}),base:x,custom:u,onPick:d}),ignoreWs:o,onToggleWs:Se,files:_e.length,shape:ve,added:be.added,removed:be.removed,viewed:oe.size,allFolded:ye,onFoldAll:()=>A(ye?new Set:new Set(_e)),onNextFile:Ae,onNextComment:ue.some(({at:e})=>e)?je:null}),(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto py-1.5 font-mono text-meta/normal`,onMouseUp:Pe,children:[!h&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle`,children:z(`preview.loading`)}),h?.kind===`text`&&(0,V.jsx)(`p`,{className:`mx-2.5 my-3 font-mono text-meta text-subtle ${h.error?`text-error`:``}`,children:h.text}),ie.map(e=>{let t=L[e],n=e>=Fe&&e<=Ie;if(t.kind===`file`){let r=R.get(e),i=t.path;return(0,V.jsx)(wK,{index:e,name:t.text,path:i,closed:i!==null&&k.has(i),viewed:i!==null&&oe.has(i),cursor:n,added:r?.added??0,removed:r?.removed??0,onToggleFold:()=>{w(e),E(null),O(!1),i&&ge(i)},onToggleViewed:()=>i&&xe(i)},re[e])}let r=de.has(e);return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{"data-row":e,className:vK(t.kind,{cursor:n,noted:r}),onClick:t=>{window.getSelection()?.isCollapsed!==!1&&(t.shiftKey?E(e=>e??C):(!a||T===null)&&E(null),w(e),O(!0))},children:[(0,V.jsx)(`span`,{className:yK,children:t.oldNo??``}),(0,V.jsx)(`span`,{className:yK,children:t.newNo??``}),(0,V.jsx)(`span`,{className:bK(t.kind,r),children:t.kind===`add`?`+`:t.kind===`del`?`−`:r?`●`:` `}),(0,V.jsx)(`span`,{className:xK(t.kind),children:t.text}),D&&he&&e===Ie&&(0,V.jsx)(TK,{showRange:a&&T===null,ranged:T!==null,onComment:Ce,onRange:()=>E(C),onAsk:De})]}),fe.get(e)?.map(e=>(0,V.jsx)(EK,{note:e,onEdit:()=>we(e)},e.id))]},re[e])})]}),(0,V.jsx)(yq,{notes:le,states:me,sending:j,onShow:Oe,onEdit:we,onDrop:Te,onSend:ke})]})}function Sq(e){B();let{model:t,view:n}=e,r=n.path===`.`?null:cG(n.path),[i,a]=(0,g.useState)(null),o=v(t.tasks);if(!r)return(0,V.jsx)(xq,{...e});let s=i===n.path,c=JSON.stringify(o?.tasks.find(e=>e.id===n.taskId)?.changes??null);return(0,V.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,V.jsxs)(`div`,{className:`flex gap-x-3 px-2.5 py-1`,children:[(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":!s,onClick:()=>a(null),children:`[ ${z(`artifact.preview`)} ]`}),(0,V.jsx)(H,{variant:`pill`,hit:`tight`,"aria-current":s,onClick:()=>a(n.path),children:`[ ${z(`artifact.source`)} ]`})]}),s?(0,V.jsx)(xq,{...e}):(0,V.jsx)(cK,{model:t,taskId:n.taskId,path:n.path,kind:r,changeKey:c})]})}var Cq={entries:[],failed:new Set},wq=[`command`,`cmd`,`file_path`,`path`,`pattern`,`query`,`url`,`description`,`prompt`],Tq=100;function Eq(e){let t=(e.split(`
|
|
138
|
+
`).find(e=>e.trim()!==``)??``).trim();return t.length>Tq?`${t.slice(0,99)}…`:t}function Dq(e){if(typeof e==`string`)return Eq(e);if(!e||typeof e!=`object`)return``;let t=e,n=e=>typeof e==`string`?e:Array.isArray(e)&&e.every(e=>typeof e==`string`)?e.join(` `):``;for(let e of wq){let r=n(t[e]);if(r.trim())return Eq(r)}for(let e of Object.values(t)){let t=n(e);if(t.trim())return Eq(t)}return``}function Oq(e){return e===`user`||e===`assistant`||e===`system`?e:null}function kq(e,t){let n=[],r=[];return e.forEach((e,i)=>{let a=Oq(e.role);if(!a)return;let o=[],s=[];for(let t of e.blocks??[])t.type===`text`&&t.text?.trim()?o.push(t.text.trim()):t.type===`tool_call`?s.push({callId:t.callId??``,name:t.name??`tool`,summary:Dq(t.input)}):t.type===`tool_result`&&t.isError&&t.callId&&r.push(t.callId);(o.length!==0||s.length!==0)&&n.push({index:t+i,role:a,at:e.timestamp??``,text:o.join(`
|
|
139
|
+
|
|
140
|
+
`),tools:s})}),{entries:n,failed:r}}function Aq(e,t,n){let r=kq(t,n),i=new Map(e.entries.map(e=>[e.index,e]));for(let e of r.entries)i.set(e.index,e);let a=r.failed.length>0?new Set([...e.failed,...r.failed]):e.failed;return{entries:[...i.values()].sort((e,t)=>e.index-t.index),failed:a}}function jq(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.text.toLowerCase().includes(n)||e.tools.some(e=>`${e.name} ${e.summary}`.toLowerCase().includes(n))).map(e=>e.index):[]}var Mq=e=>e.replace(/[*_`]+/g,``).replace(/[…\s]+/g,` `).trim().toLowerCase();function Nq(e,t){let n=e.find(e=>e.at===t.at&&e.role===t.role);if(n)return n.index;let r=Mq(t.snippet);return r?e.find(e=>e.role===t.role&&Mq(e.text).includes(r))?.index??null:null}function Pq(e,t){let n=e[0];if(!n)return!0;let[r,i]=[Date.parse(n.at),Date.parse(t.at)];return Number.isNaN(r)||Number.isNaN(i)?!0:r>i}function Fq(e,t){let n=e.tools.map(e=>`- \`${e.name}\`${e.summary?` ${e.summary}`:``}${t.has(e.callId)?` (failed)`:``}`);return[e.text,n.join(`
|
|
141
141
|
`)].filter(e=>e!==``).join(`
|
|
142
142
|
|
|
143
|
-
`)}function
|
|
143
|
+
`)}function Iq(e,t){return e.text===``?Fq(e,t):e.text}function Lq(e,t,n,r){return`# ${e}\n\n${t.map(e=>`${`## ${r[e.role]}${e.at?` · ${e.at}`:``}`}\n\n${Fq(e,n)}`).join(`
|
|
144
144
|
|
|
145
|
-
`)}\n`}var
|
|
146
|
-
`)})]}):(0,V.jsxs)(`div`,{className:JG,children:[(0,V.jsxs)(`div`,{className:YG,children:[(0,V.jsx)(`input`,{className:`${nn} ${XG}`,value:a,placeholder:z(`transcript.findPlaceholder`),"aria-label":z(`transcript.findPlaceholder`),spellCheck:!1,autoComplete:`off`,onChange:e=>o(e.target.value),onKeyDown:k}),a.trim()!==``&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`whitespace-nowrap text-muted`,children:b.length===0?z(`transcript.findNone`):z(`transcript.findCount`,{at:x+1,total:b.length})}),(0,V.jsx)(H,{onClick:()=>O(-1),disabled:b.length===0,children:z(`transcript.prev`)}),(0,V.jsx)(H,{onClick:()=>O(1),disabled:b.length===0,children:z(`transcript.next`)})]}),(0,V.jsx)(H,{onClick:()=>void j(),disabled:_.length===0,children:z(`transcript.export`)})]}),(0,V.jsxs)(`div`,{ref:d,className:ZG,onScroll:e=>{let t=e.currentTarget;f.current=t.scrollHeight-t.scrollTop-t.clientHeight<cJ,t.scrollTop<cJ&&h?.older&&!r.paging&&D()},children:[h?.older&&(0,V.jsx)(`p`,{className:`m-0 px-3 py-2 font-mono text-meta text-subtle`,children:(0,V.jsx)(H,{onClick:()=>void D(),disabled:r.paging,children:z(`transcript.older`)})}),_.length===0&&(0,V.jsx)(`p`,{className:`m-0 px-3 py-2 font-mono text-meta text-subtle`,children:z(`transcript.empty`)}),_.map(e=>(0,V.jsx)(fJ,{entry:e,failed:y,needle:a,flash:l===e.index,current:S===e.index,onCopy:()=>A(e)},e.index))]})]})}function mJ(){B();let e=v(Ja),t=z(e?`panel.restore`:`panel.expand`);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:gI({tool:!0}),title:t,"aria-label":t,"aria-pressed":e,onClick:()=>Ja.set(!e),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:e?`M13.5 6.5h-4v-4M2.5 9.5h4v4M9.5 6.5l4-4M6.5 9.5l-4 4`:`M9.5 2.5h4v4M6.5 13.5h-4v-4M13.5 2.5l-4.5 4.5M2.5 13.5 7 9`})})}),(0,V.jsx)(`button`,{type:`button`,className:gI({tool:!0}),title:z(`panel.hide`),"aria-label":z(`panel.hide`),onClick:()=>qa.set(!1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`})})})]})}function hJ({panel:e}){B();let t=(0,g.useRef)(null);return(0,V.jsx)(FI,{edge:`left`,title:z(`panel.resize`),onPointerDown:n=>{t.current={x:n.clientX,width:e.current?.getBoundingClientRect().width??0},e.current?.classList.add(`is-resizing`),n.currentTarget.setPointerCapture(n.pointerId),Dn(!0)},onPointerMove:e=>{let n=t.current;if(!n||e.clientX===n.x)return;let r=uI.get()?0:mI(lI.get()??280);Ka.set(Ya(n.width-(e.clientX-n.x),r))},onLostPointerCapture:()=>{t.current=null,e.current?.classList.remove(`is-resizing`),Dn(!1)},onDoubleClick:()=>Ka.set(null)})}function gJ({taskId:e,body:t}){B();let n=(0,g.useRef)(!1);return(0,V.jsx)(`div`,{className:OI,title:z(`panel.resizeSplit`),onPointerDown:e=>{n.current=!0,t.current?.classList.add(`is-resizing`),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:r=>{let i=t.current?.getBoundingClientRect(),a=t.current?.querySelectorAll(`.side-head`);if(!n.current||!i||a?.length!==2)return;let o=a[0]?.getBoundingClientRect(),s=a[1]?.getBoundingClientRect();if(!o||!s)return;let c=r.currentTarget.getBoundingClientRect().height,l=i.bottom-o.bottom-s.height-c;l>0&&Zk(e,e=>Ak(e,(r.clientY-o.bottom-c/2)/l))},onLostPointerCapture:()=>{n.current=!1,t.current?.classList.remove(`is-resizing`)},onDoubleClick:()=>Zk(e,e=>Ak(e,.5))})}function _J({model:e,task:t,tab:n,narrow:r,active:i,restored:a}){return n.kind===`files`?(0,V.jsx)(hG,{model:e,task:t,narrow:r}):n.kind===`chat`?(0,V.jsx)(pJ,{model:e,task:t,active:i}):n.kind===`quota`?(0,V.jsx)(zW,{model:e,task:t,active:i}):n.kind===`diff`?(0,V.jsx)(Uq,{model:e,view:{taskId:t.id,path:n.path,scope:n.scope},active:i,restored:a,onClose:()=>nA(t.id,n.id)},`${t.id}:${n.path}:${n.scope}`):(0,V.jsx)(CW,{model:e,tab:n,onNavigate:e=>Zk(t.id,t=>Tk(t,n.id,e)),onStep:e=>Zk(t.id,t=>Ek(t,n.id,e))})}function vJ({model:e,task:t,narrow:n}){B();let r=Xk(t.id),i=v(Ua),a=v(Ja),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=i===`terminal`?`files`:i,l=rk(r),u=n?ak(r,c):null;(0,g.useEffect)(()=>{n&&!u&&Zk(t.id,e=>xk(e,c))},[n,u,c,t.id]);let d=n?u?[u.id]:[]:nk(r).flatMap(([,e])=>e.active?[e.active]:[]),f=(0,g.useRef)([]);f.current=jk(f.current,d,l);let p=(0,g.useRef)(new Set(d)),m=!n&&r.bottom!==null,h=m?`auto minmax(0, ${r.ratio*100}fr) var(--divider) auto minmax(0, ${(1-r.ratio)*100}fr)`:`auto minmax(0, 1fr)`,_=l.filter(e=>e.kind===c),y=!n&&r.top.tabs.length===0;return(0,V.jsxs)(`aside`,{className:yI(n),ref:o,children:[!n&&!a&&(0,V.jsx)(hJ,{panel:o}),(0,V.jsxs)(`div`,{className:bI,ref:s,style:{gridTemplateRows:h},children:[n?(_.length>1||c===`diff`)&&(0,V.jsx)(DG,{taskId:t.id,panel:r,group:`top`,tabs:_,active:u?.id??null,narrow:!0}):nk(r).map(([e,n])=>(0,V.jsx)(DG,{taskId:t.id,panel:r,group:e,tabs:n.tabs,active:n.active,narrow:!1,children:e===`top`&&(0,V.jsx)(mJ,{})},e)),y&&(0,V.jsx)(`p`,{className:`row-2 m-auto flex max-w-[44ch] flex-col items-center gap-2.5 p-4 text-center font-mono text-meta leading-[1.5] text-subtle normal-nums`,children:z(`panel.empty`)}),m&&(0,V.jsx)(gJ,{taskId:t.id,body:s}),l.filter(e=>f.current.includes(e.id)).map(i=>(0,V.jsx)(`div`,{className:kI,hidden:!d.includes(i.id),style:{gridRow:ik(r,i.id)?.name===`bottom`&&!n?5:2},children:(0,V.jsx)(_J,{model:e,task:t,tab:i,narrow:n,active:d.includes(i.id),restored:p.current.has(i.id)})},i.id))]})]})}function yJ({model:e,task:t,remoteHost:n,narrow:r=!1}){let i=v(mn),a=v(qa);return!r&&(i||!a)?null:t?(0,V.jsx)(vJ,{model:e,task:t,narrow:r},t.id):n?(0,V.jsx)(`aside`,{className:yI(!1),children:(0,V.jsx)(EE,{host:n,onMachines:()=>jO(e)})}):null}var bJ=1500;function xJ({model:e}){let t=e.client,n=v(t.conn),[r,i]=(0,g.useState)(!1);return(0,g.useEffect)(()=>{if(n.state!==`connecting`)return i(!1);let e=window.setTimeout(()=>i(!0),bJ);return()=>window.clearTimeout(e)},[n.state]),n.state===`open`||n.state===`connecting`&&!r?null:(0,V.jsxs)(`footer`,{className:It,children:[(0,V.jsx)(`span`,{className:Lt(n.state===`retrying`)}),(0,V.jsx)(`span`,{children:n.state===`retrying`?z(`status.retrying`,{count:n.failures}):z(`status.connecting`)}),n.state===`retrying`&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>t.retryNow(),children:z(`status.retry`)})]})}function SJ({model:e,taskId:t,groupId:n}){B();let r=v(e.tasks),i=r?iL(r.tasks,n):[];return i.length<2||!i.some(e=>e.id===t)?null:(0,V.jsxs)(`nav`,{className:BL,"aria-label":z(`compare.menu`),children:[i.map((n,r)=>(0,V.jsxs)(H,{variant:`pill`,hit:`tight`,"aria-current":n.id===t,onClick:()=>e.select(n.id),children:[`[ `,(0,V.jsx)(sR,{status:n.rowStatus}),r+1,` `,n.engine?.name??n.label,n.kept&&(0,V.jsx)(`span`,{className:`text-accent`,children:`✓`}),` ]`]},n.id)),(0,V.jsx)(H,{hit:`tight`,className:`ml-auto flex-none whitespace-nowrap`,onClick:()=>ba(n),children:z(`compare.strip`)})]})}var CJ=new Set,wJ=2e3;function TJ(e){CJ.add(e)}function EJ(e,t=wJ){setTimeout(()=>CJ.delete(e),t)}var DJ=e=>CJ.has(e),OJ=new Map,kJ=new Set,AJ=(e,t)=>`${e}/${t}`,jJ=e=>OJ.get(e)??``;function MJ(e,t){t===``?OJ.delete(e):OJ.set(e,t);for(let e of kJ)e()}function NJ(e){return kJ.add(e),()=>kJ.delete(e)}function PJ(e,t){let n=jJ(e).trimEnd();MJ(e,n===``?t:`${n}\n\n${t}`)}var FJ=3e3,IJ=32;function LJ(e){let{model:t,taskId:n,tabId:r,revision:i}=e,[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(0);if((0,g.useEffect)(()=>{let e=!0,i=()=>t.client.request(`queue.list`,{taskId:n}).then(t=>e&&o(t.items.filter(e=>e.tabId===r)),()=>e&&o([]));i();let a=window.setInterval(i,FJ);return()=>{e=!1,window.clearInterval(a)}},[t,n,r,i,s]),a.length===0)return null;let l=e=>void t.client.request(`queue.cancel`,{id:e}).finally(()=>c(e=>e+1));return(0,V.jsx)(`div`,{className:An,"data-field":`queued`,children:a.map(e=>(0,V.jsxs)(`span`,{className:jn(!1),title:e.text,children:[`${z(`layout.queuedChip`)} · ${e.text.length>IJ?`${e.text.slice(0,IJ)}…`:e.text} `,(0,V.jsx)(H,{hit:`tight`,"aria-label":z(`layout.queueCancel`),title:z(`layout.queueCancel`),onClick:()=>l(e.id),children:`×`})]},e.id))})}var RJ=`relative hidden [border-top:var(--hairline)_solid_var(--line)] bg-surface px-1.5 py-1.5 touch:flex`,zJ=`absolute inset-x-1.5 bottom-full z-5 mb-1`,BJ=`absolute inset-x-1.5 bottom-full z-6 mb-1`,VJ=`flex min-w-0 flex-1 items-stretch gap-1.5`,HJ=`h-10 min-w-0 flex-1 resize-none rounded-sm border-hairline border-line bg-inset px-2 py-2 font-sans text-display leading-[1.35] text-ink outline-none focus:border-focus disabled:opacity-60`,UJ=`h-10 shrink-0 rounded-sm bg-accent px-3.5 font-sans text-meta font-semibold text-paper touch-manipulation active:scale-97 motion-reduce:active:scale-none disabled:opacity-50`,WJ=`flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-sm border-hairline border-line bg-inset text-muted touch-manipulation has-[:disabled]:opacity-60`;function GJ(){return(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,className:`size-4 fill-none stroke-current stroke-[1.4]`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10.5 4.5 5.8 9.2a1.4 1.4 0 0 0 2 2l5-5a2.8 2.8 0 0 0-4-4l-5.2 5.2a4.2 4.2 0 0 0 6 6L13 9`})})}function KJ(e){return(0,V.jsxs)(`form`,{className:RJ,"data-composer":e.composerKey,onSubmit:t=>{t.preventDefault(),e.onSend()},children:[e.attached&&(0,V.jsx)(`div`,{className:zJ,children:e.attached}),e.suggest&&(0,V.jsx)(`div`,{className:BJ,children:e.suggest}),(0,V.jsxs)(`div`,{className:VJ,children:[e.attach,(0,V.jsx)(`textarea`,{ref:e.fieldRef,className:HJ,rows:1,value:e.value,placeholder:e.placeholder,disabled:e.busy,enterKeyHint:`send`,onChange:e.onChange,onSelect:e.onSelect,onKeyDown:e.onKeyDown,onPaste:e.onPaste}),(0,V.jsx)(`button`,{type:`submit`,className:UJ,disabled:e.busy||!e.ready,children:e.sendLabel})]})]})}function qJ({model:e,taskId:t,tabId:n}){let r=v(e.tasks)?.tasks.some(e=>e.id===t)??!1,i=AJ(t,n),a=(0,g.useSyncExternalStore)(NJ,()=>jJ(i)),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(0),{attachments:u,attach:d,remove:f,clear:p}=Qo(e,e=>G(e,`error`)),m=(0,g.useRef)(null),h=iO({value:a,onChange:e=>MJ(i,e),area:m,listClassName:`m-0`}),_=async()=>{let r=Xo(a.trim(),u).trim();if(r){s(!0);try{let a=await e.client.request(`tab.send`,{taskId:t,tabId:n,prompt:r,queue:!0});if(!a.delivered&&!a.queued){G(z(`layout.composerNotSent`,{reason:a.reason??``}),`error`);return}a.queued&&(G(z(`layout.composerQueued`,{position:a.position??1})),l(e=>e+1)),MJ(i,``),p()}catch(e){let t=e instanceof d_?e.code:void 0;G(t===`UNKNOWN_OP`?z(`layout.composerOldBridge`):t===`AWAITING_PERMISSION`?z(`layout.composerAtMenu`):e instanceof Error?e.message:String(e),`error`)}finally{s(!1)}}};if(!r)return null;let y=e=>void d(e);return(0,V.jsx)(KJ,{value:a,placeholder:z(`layout.composerPlaceholder`),sendLabel:z(`layout.composerSend`),busy:o,ready:a.trim()!==``||u.length>0,attached:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(LJ,{model:e,taskId:t,tabId:n,revision:c}),(0,V.jsx)($o,{attachments:u,onRemove:f})]}),attach:(0,V.jsxs)(Yo,{className:WJ,title:z(`layout.composerAttach`),disabled:o,onFiles:y,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:z(`layout.composerAttach`)}),(0,V.jsx)(GJ,{})]}),composerKey:i,fieldRef:m,suggest:h.list,...h.field,onPaste:Jo(y).onPaste,onSend:()=>void _()})}var JJ={up:`layout.termKeyUp`,down:`layout.termKeyDown`,left:`layout.termKeyLeft`,right:`layout.termKeyRight`,interrupt:`layout.termKeyInterrupt`,enter:`layout.termKeyEnter`};function YJ({handle:e,atMenu:t}){B();let[n,r]=(0,g.useState)(!1);(0,g.useEffect)(()=>{e.armCtrl(n?()=>r(!1):null)},[e,n]),(0,g.useEffect)(()=>()=>e.armCtrl(null),[e]);let{term:i}=e,a=e=>(0,V.jsx)(`button`,{type:`button`,className:rt(!1),"aria-label":JJ[e.id]?z(JJ[e.id]):void 0,onClick:()=>{r(!1),i.input(e.bytes(i.modes.applicationCursorKeysMode),!0)},children:e.cap},e.id);return(0,V.jsxs)(`div`,{className:`mono ${nt}`,role:`toolbar`,"aria-label":z(`layout.termKeys`),onPointerDown:e=>e.preventDefault(),children:[t&&Dv.map(a),(0,V.jsx)(`button`,{type:`button`,className:rt(n),"aria-pressed":n,onClick:()=>r(!n),children:`ctrl`}),Tv.filter(e=>!(t&&Dv.includes(e))).map(a)]})}function XJ(e){switch(e.kind){case`restored`:return z(`workspace.restored`);case`notLive`:return z(`workspace.tabNotLive`);case`exited`:return z(`workspace.exited`,{code:e.code??`?`});case`failed`:return z(`workspace.attachFailed`,{message:e.message});case`none`:return``}}function ZJ(e){B();let{notice:t,engineExit:n,model:r,taskId:i,tabId:a,revive:o}=e,s=t.kind===`none`?n:null,c=t.kind===`none`&&!s&&e.usageLimit===!0&&!o.error;if(t.kind===`none`&&!s&&!c)return null;let l=t.kind===`notLive`||t.kind===`restored`||t.kind===`exited`,u=t.kind===`exited`||s!==null,d=o.error?z(`workspace.reopenFailed`,{message:o.error}):s?z(`workspace.engineExited`,{code:s.code??`?`}):c?z(`workspace.usageLimit`):XJ(t);return(0,V.jsxs)(`div`,{className:Ft(t.kind===`failed`||!!o.error),children:[(0,V.jsx)(`span`,{children:d}),e.onReopen&&(l||s)&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,disabled:o.busy,onClick:()=>e.onReopen?.(s!==null),children:o.busy?z(`workspace.reopening`):z(s?`workspace.retry`:`workspace.reopen`)}),t.kind===`failed`&&e.onRetryAttach&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:e.onRetryAttach,children:z(`workspace.retry`)}),c&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i,context:`continue`,sourceTabId:a})),children:z(`menu.continueEngine`)}),(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:e.onDismissLimit,children:z(`workspace.dismiss`)})]}),u&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>W.set((0,V.jsx)(GP,{model:r,section:`engines`})),children:z(`workspace.engineSettings`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i})),children:z(`menu.newChatPick`)}),(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i,context:`continue`,sourceTabId:a})),children:z(`menu.continueEngine`)})]})]})}function QJ(e){let t=e.split(`
|
|
145
|
+
`)}\n`}var Rq=50;function zq(e,t){let[n,r]=(0,g.useState)({kind:`loading`}),[i,a]=(0,g.useState)(!1),o=(0,g.useRef)(n);o.current=n;let s=(0,g.useRef)(!1),c=(0,g.useRef)(0),l=(0,g.useCallback)(n=>e.client.request(`output.read`,{taskId:t,limit:Rq,...n}),[e,t]),u=(0,g.useCallback)(async()=>{let e=++c.current;s.current=!0;try{let t=await l({});if(e!==c.current)return;if(t.source===`terminal`||!t.history){r({kind:`terminal`,tail:t.terminal?.tail??[]});return}let n=Aq(Cq,t.history.messages??[],t.history.firstIndex??0);r({kind:`ready`,transcript:n,cursor:t.cursor??null,older:t.olderCursor??null})}catch(t){e===c.current&&r({kind:`error`,message:K(t)})}finally{e===c.current&&(s.current=!1)}},[l]);(0,g.useEffect)(()=>(r({kind:`loading`}),u(),()=>{c.current++,s.current=!1}),[u]);let d=(0,g.useCallback)(async()=>{let e=o.current;if(s.current)return;if(e.kind===`terminal`)return u();if(e.kind!==`ready`||!e.cursor)return;let t=c.current;s.current=!0;try{let n=await l({cursor:e.cursor,source:`history`});if(t!==c.current)return;r(e=>e.kind===`ready`?{...e,transcript:Aq(e.transcript,n.history?.messages??[],n.history?.firstIndex??0),cursor:n.cursor??e.cursor}:e)}catch{t===c.current&&(s.current=!1,await u())}finally{t===c.current&&(s.current=!1)}},[l,u]);return{state:n,paging:i,loadOlder:(0,g.useCallback)(async()=>{let e=o.current;if(s.current||e.kind!==`ready`||!e.older)return;let t=c.current;s.current=!0,a(!0);try{let n=await l({cursor:e.older,source:`history`});if(t!==c.current)return;r(e=>e.kind===`ready`?{...e,transcript:Aq(e.transcript,n.history?.messages??[],n.history?.firstIndex??0),older:n.olderCursor??null}:e)}catch(e){t===c.current&&r({kind:`error`,message:K(e)})}finally{t===c.current&&(s.current=!1,a(!1))}},[l]),loadAll:(0,g.useCallback)(async()=>{let e=o.current;if(e.kind!==`ready`)return null;if(s.current||!e.older)return e.transcript;let t=c.current;s.current=!0,a(!0);let n=[],i=e.transcript;try{for(let r=e.older;r&&t===c.current;){let e=await l({cursor:r,source:`history`}),t={messages:e.history?.messages??[],firstIndex:e.history?.firstIndex??0};n.push(t),i=Aq(i,t.messages,t.firstIndex),r=e.olderCursor??null}return t===c.current?(r(e=>e.kind===`ready`?{...e,transcript:n.reduce((e,t)=>Aq(e,t.messages,t.firstIndex),e.transcript),older:null}:e),i):null}catch(e){return t===c.current&&r({kind:`error`,message:K(e)}),null}finally{t===c.current&&(s.current=!1,a(!1))}},[l]),refresh:d,reload:(0,g.useCallback)(()=>{r({kind:`loading`}),u()},[u])}}var Bq=3e3,Vq=80,Hq=2500;function Uq(e,t){let n=URL.createObjectURL(new Blob([t],{type:`text/markdown;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)}var Wq=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})};function Gq(e){let{entry:t}=e,n=z(t.role===`user`?`transcript.you`:t.role===`assistant`?`transcript.agent`:`transcript.system`);return(0,V.jsxs)(`article`,{className:NG(e),"data-index":t.index,children:[(0,V.jsxs)(`header`,{className:PG,children:[(0,V.jsx)(`span`,{className:FG(t.role),children:n}),(0,V.jsx)(`span`,{className:IG,children:Wq(t.at)}),(0,V.jsx)(H,{className:LG,onClick:e.onCopy,children:z(`transcript.copy`)})]}),t.text!==``&&(0,V.jsx)(iK,{source:t.text,needle:e.needle}),t.tools.map((t,n)=>(0,V.jsxs)(`p`,{className:RG,title:`${t.name} ${t.summary}`,children:[(0,V.jsx)(`span`,{className:zG,children:QG(t.name,e.needle)}),(0,V.jsx)(`span`,{className:BG,children:QG(t.summary,e.needle)}),e.failed.has(t.callId)&&(0,V.jsx)(`span`,{className:`flex-none text-error`,children:z(`transcript.failed`)})]},n))]})}function Kq({model:e,task:t,active:n}){B();let r=zq(e,t.id),{state:i}=r,[a,o]=(0,g.useState)(``),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(null),d=(0,g.useRef)(null),f=(0,g.useRef)(!0),p=(0,g.useRef)(null),m=v(eA),h=i.kind===`ready`?i:null,_=(0,g.useMemo)(()=>h?.transcript.entries??[],[h?.transcript]),y=h?.transcript.failed??new Set,b=(0,g.useMemo)(()=>jq(_,a),[_,a]),x=b.length===0?0:Math.min(s,b.length-1),S=b[x]??null,C=e=>{f.current=!1,d.current?.querySelector(`[data-index="${e}"]`)?.scrollIntoView({block:`center`})},w=t.rowStatus?.kind,T=w===`running`||w===`needs-input`,{refresh:E}=r;(0,g.useEffect)(()=>{n&&E()},[n,w,E]),(0,g.useEffect)(()=>{if(!n||!T)return;let e=setInterval(()=>void E(),Bq);return()=>clearInterval(e)},[n,T,E]),(0,g.useLayoutEffect)(()=>{let e=d.current;e&&(p.current?(e.scrollTop=p.current.top+(e.scrollHeight-p.current.height),p.current=null):f.current&&(e.scrollTop=e.scrollHeight))},[_]);let D=async()=>{let e=d.current;e&&(p.current={height:e.scrollHeight,top:e.scrollTop}),await r.loadOlder()};(0,g.useEffect)(()=>{if(!m||m.taskId!==t.id||!h||!n)return;let e=Nq(_,m.hit);e===null?h.older&&Pq(_,m.hit)?D():eA.set(null):(u(e),C(e),eA.set(null))},[m,h,_,n,t.id]),(0,g.useEffect)(()=>{if(l===null)return;let e=setTimeout(()=>u(null),Hq);return()=>clearTimeout(e)},[l]),(0,g.useEffect)(()=>{c(0);let e=jq(_,a)[0];e!==void 0&&C(e)},[a]);let O=e=>{if(b.length===0)return;let t=(x+e+b.length)%b.length;c(t),C(b[t])},k=e=>{e.key===`Enter`&&!e.nativeEvent.isComposing?(e.preventDefault(),O(e.shiftKey?-1:1)):e.key===`Escape`&&a!==``&&(e.stopPropagation(),o(``))},A=e=>void navigator.clipboard.writeText(Iq(e,y)).then(()=>G(z(`transcript.copied`)),()=>G(z(`menu.copyFailed`),`error`)),j=async()=>{let e=await r.loadAll();if(!e)return;let n={user:z(`transcript.you`),assistant:z(`transcript.agent`),system:z(`transcript.system`)};Uq(`${t.label.replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-|-$/g,``)||`conversation`}.md`,Lq(t.label,e.entries,e.failed,n))};return i.kind===`loading`?(0,V.jsx)(`div`,{className:DG,children:(0,V.jsx)(`p`,{className:jG,children:z(`transcript.loading`)})}):i.kind===`error`?(0,V.jsxs)(`div`,{className:DG,children:[(0,V.jsx)(`p`,{className:`${jG} text-error`,children:z(`transcript.error`,{error:i.message})}),(0,V.jsx)(`p`,{className:jG,children:(0,V.jsx)(H,{onClick:r.reload,children:z(`transcript.retry`)})})]}):i.kind===`terminal`?(0,V.jsxs)(`div`,{className:DG,children:[(0,V.jsx)(`p`,{className:jG,children:z(`transcript.noHistory`)}),(0,V.jsx)(`pre`,{className:`${MG} min-h-0 flex-1 overflow-y-auto`,children:i.tail.join(`
|
|
146
|
+
`)})]}):(0,V.jsxs)(`div`,{className:DG,children:[(0,V.jsxs)(`div`,{className:OG,children:[(0,V.jsx)(`input`,{className:`${nn} ${kG}`,value:a,placeholder:z(`transcript.findPlaceholder`),"aria-label":z(`transcript.findPlaceholder`),spellCheck:!1,autoComplete:`off`,onChange:e=>o(e.target.value),onKeyDown:k}),a.trim()!==``&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`whitespace-nowrap text-muted`,children:b.length===0?z(`transcript.findNone`):z(`transcript.findCount`,{at:x+1,total:b.length})}),(0,V.jsx)(H,{onClick:()=>O(-1),disabled:b.length===0,children:z(`transcript.prev`)}),(0,V.jsx)(H,{onClick:()=>O(1),disabled:b.length===0,children:z(`transcript.next`)})]}),(0,V.jsx)(H,{onClick:()=>void j(),disabled:_.length===0,children:z(`transcript.export`)})]}),(0,V.jsxs)(`div`,{ref:d,className:AG,onScroll:e=>{let t=e.currentTarget;f.current=t.scrollHeight-t.scrollTop-t.clientHeight<Vq,t.scrollTop<Vq&&h?.older&&!r.paging&&D()},children:[h?.older&&(0,V.jsx)(`p`,{className:`m-0 px-3 py-2 font-mono text-meta text-subtle`,children:(0,V.jsx)(H,{onClick:()=>void D(),disabled:r.paging,children:z(`transcript.older`)})}),_.length===0&&(0,V.jsx)(`p`,{className:`m-0 px-3 py-2 font-mono text-meta text-subtle`,children:z(`transcript.empty`)}),_.map(e=>(0,V.jsx)(Gq,{entry:e,failed:y,needle:a,flash:l===e.index,current:S===e.index,onCopy:()=>A(e)},e.index))]})]})}function qq(){B();let e=v(Ja),t=z(e?`panel.restore`:`panel.expand`);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:fI({tool:!0}),title:t,"aria-label":t,"aria-pressed":e,onClick:()=>Ja.set(!e),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:e?`M13.5 6.5h-4v-4M2.5 9.5h4v4M9.5 6.5l4-4M6.5 9.5l-4 4`:`M9.5 2.5h4v4M6.5 13.5h-4v-4M13.5 2.5l-4.5 4.5M2.5 13.5 7 9`})})}),(0,V.jsx)(`button`,{type:`button`,className:fI({tool:!0}),title:z(`panel.hide`),"aria-label":z(`panel.hide`),onClick:()=>qa.set(!1),children:(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`})})})]})}function Jq({panel:e}){B();let t=(0,g.useRef)(null);return(0,V.jsx)(jI,{edge:`left`,title:z(`panel.resize`),onPointerDown:n=>{t.current={x:n.clientX,width:e.current?.getBoundingClientRect().width??0},e.current?.classList.add(`is-resizing`),n.currentTarget.setPointerCapture(n.pointerId),Dn(!0)},onPointerMove:e=>{let n=t.current;if(!n||e.clientX===n.x)return;let r=oI.get()?0:uI(aI.get()??280);Ka.set(Ya(n.width-(e.clientX-n.x),r))},onLostPointerCapture:()=>{t.current=null,e.current?.classList.remove(`is-resizing`),Dn(!1)},onDoubleClick:()=>Ka.set(null)})}function Yq({taskId:e,body:t}){B();let n=(0,g.useRef)(!1);return(0,V.jsx)(`div`,{className:wI,title:z(`panel.resizeSplit`),onPointerDown:e=>{n.current=!0,t.current?.classList.add(`is-resizing`),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:r=>{let i=t.current?.getBoundingClientRect(),a=t.current?.querySelectorAll(`.side-head`);if(!n.current||!i||a?.length!==2)return;let o=a[0]?.getBoundingClientRect(),s=a[1]?.getBoundingClientRect();if(!o||!s)return;let c=r.currentTarget.getBoundingClientRect().height,l=i.bottom-o.bottom-s.height-c;l>0&&qk(e,e=>Ek(e,(r.clientY-o.bottom-c/2)/l))},onLostPointerCapture:()=>{n.current=!1,t.current?.classList.remove(`is-resizing`)},onDoubleClick:()=>qk(e,e=>Ek(e,.5))})}function Xq({model:e,task:t,tab:n,narrow:r,active:i,restored:a}){return n.kind===`files`?(0,V.jsx)(JW,{model:e,task:t,narrow:r}):n.kind===`chat`?(0,V.jsx)(Kq,{model:e,task:t,active:i}):n.kind===`quota`?(0,V.jsx)(xW,{model:e,task:t,active:i}):n.kind===`diff`?(0,V.jsx)(Sq,{model:e,view:{taskId:t.id,path:n.path,scope:n.scope},active:i,restored:a,onClose:()=>Qk(t.id,n.id)},`${t.id}:${n.path}:${n.scope}`):(0,V.jsx)(aW,{model:e,tab:n,onNavigate:e=>qk(t.id,t=>xk(t,n.id,e)),onStep:e=>qk(t.id,t=>Sk(t,n.id,e))})}function Zq({model:e,task:t,narrow:n}){B();let r=Kk(t.id),i=v(Ua),a=v(Ja),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=i===`terminal`?`files`:i,l=$O(r),u=n?tk(r,c):null;(0,g.useEffect)(()=>{n&&!u&&qk(t.id,e=>_k(e,c))},[n,u,c,t.id]);let d=n?u?[u.id]:[]:QO(r).flatMap(([,e])=>e.active?[e.active]:[]),f=(0,g.useRef)([]);f.current=Dk(f.current,d,l);let p=(0,g.useRef)(new Set(d)),m=!n&&r.bottom!==null,h=m?`auto minmax(0, ${r.ratio*100}fr) var(--divider) auto minmax(0, ${(1-r.ratio)*100}fr)`:`auto minmax(0, 1fr)`,_=l.filter(e=>e.kind===c),y=!n&&r.top.tabs.length===0;return(0,V.jsxs)(`aside`,{className:hI(n),ref:o,children:[!n&&!a&&(0,V.jsx)(Jq,{panel:o}),(0,V.jsxs)(`div`,{className:gI,ref:s,style:{gridTemplateRows:h},children:[n?(_.length>1||c===`diff`)&&(0,V.jsx)(oG,{taskId:t.id,panel:r,group:`top`,tabs:_,active:u?.id??null,narrow:!0}):QO(r).map(([e,n])=>(0,V.jsx)(oG,{taskId:t.id,panel:r,group:e,tabs:n.tabs,active:n.active,narrow:!1,children:e===`top`&&(0,V.jsx)(qq,{})},e)),y&&(0,V.jsx)(`p`,{className:`row-2 m-auto flex max-w-[44ch] flex-col items-center gap-2.5 p-4 text-center font-mono text-meta leading-[1.5] text-subtle normal-nums`,children:z(`panel.empty`)}),m&&(0,V.jsx)(Yq,{taskId:t.id,body:s}),l.filter(e=>f.current.includes(e.id)).map(i=>(0,V.jsx)(`div`,{className:TI,hidden:!d.includes(i.id),style:{gridRow:ek(r,i.id)?.name===`bottom`&&!n?5:2},children:(0,V.jsx)(Xq,{model:e,task:t,tab:i,narrow:n,active:d.includes(i.id),restored:p.current.has(i.id)})},i.id))]})]})}function Qq({model:e,task:t,remoteHost:n,narrow:r=!1}){let i=v(mn),a=v(qa);return!r&&(i||!a)?null:t?(0,V.jsx)(Zq,{model:e,task:t,narrow:r},t.id):n?(0,V.jsx)(`aside`,{className:hI(!1),children:(0,V.jsx)(SE,{host:n,onMachines:()=>DO(e)})}):null}var $q=1500;function eJ({model:e}){let t=e.client,n=v(t.conn),[r,i]=(0,g.useState)(!1);return(0,g.useEffect)(()=>{if(n.state!==`connecting`)return i(!1);let e=window.setTimeout(()=>i(!0),$q);return()=>window.clearTimeout(e)},[n.state]),n.state===`open`||n.state===`connecting`&&!r?null:(0,V.jsxs)(`footer`,{className:It,children:[(0,V.jsx)(`span`,{className:Lt(n.state===`retrying`)}),(0,V.jsx)(`span`,{children:n.state===`retrying`?z(`status.retrying`,{count:n.failures}):z(`status.connecting`)}),n.state===`retrying`&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>t.retryNow(),children:z(`status.retry`)})]})}function tJ({model:e,taskId:t,groupId:n}){B();let r=v(e.tasks),i=r?BI(r.tasks,n):[];return i.length<2||!i.some(e=>e.id===t)?null:(0,V.jsxs)(`nav`,{className:SL,"aria-label":z(`compare.menu`),children:[i.map((n,r)=>(0,V.jsxs)(H,{variant:`pill`,hit:`tight`,"aria-current":n.id===t,onClick:()=>e.select(n.id),children:[`[ `,(0,V.jsx)(UL,{status:n.rowStatus}),r+1,` `,n.engine?.name??n.label,n.kept&&(0,V.jsx)(`span`,{className:`text-accent`,children:`✓`}),` ]`]},n.id)),(0,V.jsx)(H,{hit:`tight`,className:`ml-auto flex-none whitespace-nowrap`,onClick:()=>ba(n),children:z(`compare.strip`)})]})}var nJ=new Set,rJ=2e3;function iJ(e){nJ.add(e)}function aJ(e,t=rJ){setTimeout(()=>nJ.delete(e),t)}var oJ=e=>nJ.has(e),sJ=new Map,cJ=new Set,lJ=(e,t)=>`${e}/${t}`,uJ=e=>sJ.get(e)??``;function dJ(e,t){t===``?sJ.delete(e):sJ.set(e,t);for(let e of cJ)e()}function fJ(e){return cJ.add(e),()=>cJ.delete(e)}function pJ(e,t){let n=uJ(e).trimEnd();dJ(e,n===``?t:`${n}\n\n${t}`)}var mJ=3e3,hJ=32;function gJ(e){let{model:t,taskId:n,tabId:r,revision:i}=e,[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(0);if((0,g.useEffect)(()=>{let e=!0,i=()=>t.client.request(`queue.list`,{taskId:n}).then(t=>e&&o(t.items.filter(e=>e.tabId===r)),()=>e&&o([]));i();let a=window.setInterval(i,mJ);return()=>{e=!1,window.clearInterval(a)}},[t,n,r,i,s]),a.length===0)return null;let l=e=>void t.client.request(`queue.cancel`,{id:e}).finally(()=>c(e=>e+1));return(0,V.jsx)(`div`,{className:An,"data-field":`queued`,children:a.map(e=>(0,V.jsxs)(`span`,{className:jn(!1),title:e.text,children:[`${z(`layout.queuedChip`)} · ${e.text.length>hJ?`${e.text.slice(0,hJ)}…`:e.text} `,(0,V.jsx)(H,{hit:`tight`,"aria-label":z(`layout.queueCancel`),title:z(`layout.queueCancel`),onClick:()=>l(e.id),children:`×`})]},e.id))})}var _J=`relative hidden [border-top:var(--hairline)_solid_var(--line)] bg-surface px-1.5 py-1.5 touch:flex`,vJ=`absolute inset-x-1.5 bottom-full z-5 mb-1`,yJ=`absolute inset-x-1.5 bottom-full z-6 mb-1`,bJ=`flex min-w-0 flex-1 items-stretch gap-1.5`,xJ=`h-10 min-w-0 flex-1 resize-none rounded-sm border-hairline border-line bg-inset px-2 py-2 font-sans text-display leading-[1.35] text-ink outline-none focus:border-focus disabled:opacity-60`,SJ=`h-10 shrink-0 rounded-sm bg-accent px-3.5 font-sans text-meta font-semibold text-paper touch-manipulation active:scale-97 motion-reduce:active:scale-none disabled:opacity-50`,CJ=`flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-sm border-hairline border-line bg-inset text-muted touch-manipulation has-[:disabled]:opacity-60`;function wJ(){return(0,V.jsx)(`svg`,{viewBox:`0 0 16 16`,className:`size-4 fill-none stroke-current stroke-[1.4]`,"aria-hidden":`true`,children:(0,V.jsx)(`path`,{d:`M10.5 4.5 5.8 9.2a1.4 1.4 0 0 0 2 2l5-5a2.8 2.8 0 0 0-4-4l-5.2 5.2a4.2 4.2 0 0 0 6 6L13 9`})})}function TJ(e){return(0,V.jsxs)(`form`,{className:_J,"data-composer":e.composerKey,onSubmit:t=>{t.preventDefault(),e.onSend()},children:[e.attached&&(0,V.jsx)(`div`,{className:vJ,children:e.attached}),e.suggest&&(0,V.jsx)(`div`,{className:yJ,children:e.suggest}),(0,V.jsxs)(`div`,{className:bJ,children:[e.attach,(0,V.jsx)(`textarea`,{ref:e.fieldRef,className:xJ,rows:1,value:e.value,placeholder:e.placeholder,disabled:e.busy,enterKeyHint:`send`,onChange:e.onChange,onSelect:e.onSelect,onKeyDown:e.onKeyDown,onPaste:e.onPaste}),(0,V.jsx)(`button`,{type:`submit`,className:SJ,disabled:e.busy||!e.ready,children:e.sendLabel})]})]})}function EJ({model:e,taskId:t,tabId:n}){let r=v(e.tasks)?.tasks.some(e=>e.id===t)??!1,i=lJ(t,n),a=(0,g.useSyncExternalStore)(fJ,()=>uJ(i)),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(0),{attachments:u,attach:d,remove:f,clear:p}=Qo(e,e=>G(e,`error`)),m=(0,g.useRef)(null),h=eO({value:a,onChange:e=>dJ(i,e),area:m,listClassName:`m-0`}),_=async()=>{let r=Xo(a.trim(),u).trim();if(r){s(!0);try{let a=await e.client.request(`tab.send`,{taskId:t,tabId:n,prompt:r,queue:!0});if(!a.delivered&&!a.queued){G(z(`layout.composerNotSent`,{reason:a.reason??``}),`error`);return}a.queued&&(G(z(`layout.composerQueued`,{position:a.position??1})),l(e=>e+1)),dJ(i,``),p()}catch(e){let t=e instanceof d_?e.code:void 0;G(t===`UNKNOWN_OP`?z(`layout.composerOldBridge`):t===`AWAITING_PERMISSION`?z(`layout.composerAtMenu`):e instanceof Error?e.message:String(e),`error`)}finally{s(!1)}}};if(!r)return null;let y=e=>void d(e);return(0,V.jsx)(TJ,{value:a,placeholder:z(`layout.composerPlaceholder`),sendLabel:z(`layout.composerSend`),busy:o,ready:a.trim()!==``||u.length>0,attached:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(gJ,{model:e,taskId:t,tabId:n,revision:c}),(0,V.jsx)($o,{attachments:u,onRemove:f})]}),attach:(0,V.jsxs)(Yo,{className:CJ,title:z(`layout.composerAttach`),disabled:o,onFiles:y,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:z(`layout.composerAttach`)}),(0,V.jsx)(wJ,{})]}),composerKey:i,fieldRef:m,suggest:h.list,...h.field,onPaste:Jo(y).onPaste,onSend:()=>void _()})}var DJ={up:`layout.termKeyUp`,down:`layout.termKeyDown`,left:`layout.termKeyLeft`,right:`layout.termKeyRight`,interrupt:`layout.termKeyInterrupt`,enter:`layout.termKeyEnter`};function OJ({handle:e,atMenu:t}){B();let[n,r]=(0,g.useState)(!1);(0,g.useEffect)(()=>{e.armCtrl(n?()=>r(!1):null)},[e,n]),(0,g.useEffect)(()=>()=>e.armCtrl(null),[e]);let{term:i}=e,a=e=>(0,V.jsx)(`button`,{type:`button`,className:rt(!1),"aria-label":DJ[e.id]?z(DJ[e.id]):void 0,onClick:()=>{r(!1),i.input(e.bytes(i.modes.applicationCursorKeysMode),!0)},children:e.cap},e.id);return(0,V.jsxs)(`div`,{className:`mono ${nt}`,role:`toolbar`,"aria-label":z(`layout.termKeys`),onPointerDown:e=>e.preventDefault(),children:[t&&Dv.map(a),(0,V.jsx)(`button`,{type:`button`,className:rt(n),"aria-pressed":n,onClick:()=>r(!n),children:`ctrl`}),Tv.filter(e=>!(t&&Dv.includes(e))).map(a)]})}function kJ(e){switch(e.kind){case`restored`:return z(`workspace.restored`);case`notLive`:return z(`workspace.tabNotLive`);case`exited`:return z(`workspace.exited`,{code:e.code??`?`});case`failed`:return z(`workspace.attachFailed`,{message:e.message});case`none`:return``}}function AJ(e){B();let{notice:t,engineExit:n,model:r,taskId:i,tabId:a,revive:o}=e,s=t.kind===`none`?n:null,c=t.kind===`none`&&!s&&e.usageLimit===!0&&!o.error;if(t.kind===`none`&&!s&&!c)return null;let l=t.kind===`notLive`||t.kind===`restored`||t.kind===`exited`,u=t.kind===`exited`||s!==null,d=o.error?z(`workspace.reopenFailed`,{message:o.error}):s?z(`workspace.engineExited`,{code:s.code??`?`}):c?z(`workspace.usageLimit`):kJ(t);return(0,V.jsxs)(`div`,{className:Ft(t.kind===`failed`||!!o.error),children:[(0,V.jsx)(`span`,{children:d}),e.onReopen&&(l||s)&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,disabled:o.busy,onClick:()=>e.onReopen?.(s!==null),children:o.busy?z(`workspace.reopening`):z(s?`workspace.retry`:`workspace.reopen`)}),t.kind===`failed`&&e.onRetryAttach&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:e.onRetryAttach,children:z(`workspace.retry`)}),c&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i,context:`continue`,sourceTabId:a})),children:z(`menu.continueEngine`)}),(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:e.onDismissLimit,children:z(`workspace.dismiss`)})]}),u&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>W.set((0,V.jsx)(VP,{model:r,section:`engines`})),children:z(`workspace.engineSettings`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i})),children:z(`menu.newChatPick`)}),(0,V.jsx)(H,{variant:`link`,hit:`tight`,onClick:()=>W.set((0,V.jsx)(KC,{model:r,taskId:i,context:`continue`,sourceTabId:a})),children:z(`menu.continueEngine`)})]})]})}function jJ(e){let t=e.split(`
|
|
147
147
|
`).map(e=>e.trimEnd());for(;t[0]===``;)t.shift();for(;t.at(-1)===``;)t.pop();if(t.length===0)return null;let n=Math.max(0,...Array.from(t.join(`
|
|
148
148
|
`).matchAll(/`+/g),e=>e[0].length)),r="`".repeat(Math.max(3,n+1));return`${r}\n${t.join(`
|
|
149
|
-
`)}\n${r}\n`}function $J(e){let t=document.querySelector(`[data-composer="${CSS.escape(e)}"]`);return t&&t.offsetParent!==null?t:null}function eY(e,t,n,r){let i=QJ(e.term.getSelection());if(i===null)return!1;let a=AJ(t,n),o=$J(a);if(o){PJ(a,i),e.term.clearSelection();let t=o.querySelector(`textarea`);return t?.focus(),t?.setSelectionRange(t.value.length,t.value.length),!0}return r?(G(z(`quote.atMenu`),`error`),!1):e.term.modes.bracketedPasteMode?(e.term.paste(i),e.term.clearSelection(),e.term.focus(),!0):(G(z(`quote.notReady`),`error`),!1)}async function tY(e,t,n){let r=BR(n);r.length<n.length&&G(z(`layout.dropUnsupported`),`error`);for(let n of r)try{t.term.paste(`${await HR(e,n)} `)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}t.term.focus()}async function nY(){if(!navigator.clipboard?.read)throw Error(z(`layout.pasteNeedsHttps`));let e=[];for(let t of await navigator.clipboard.read())for(let n of t.types)(n.startsWith(`image/`)||n===`application/pdf`)&&e.push(new File([await t.getType(n)],`clipboard`,{type:n}));return BR(e)}async function rY(e,t){let n;try{n=await nY()}catch(e){G(z(`layout.pasteNoAccess`,{error:e instanceof Error?e.message:String(e)}),`error`);return}n.length===0?G(z(`layout.pasteNoImage`),`error`):await tY(e,t,n)}async function iY(e){try{return await navigator.clipboard.writeText(e),!0}catch{return G(z(`menu.copyFailed`),`error`),!1}}function aY(e){let{client:t,taskId:n,tabId:r,leafId:i}=e,a=v(e.model.tasks)?.tasks.find(e=>e.id===n)?.tabStatus?.[r]?.kind===`needs-input`;B();let o=(0,g.useRef)(null),[s,c]=(0,g.useState)({kind:`none`}),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(0),[p,m]=(0,g.useState)({busy:!1,error:null}),h=(0,g.useRef)(e);h.current=e,(0,g.useEffect)(()=>{let e=o.current;if(!e)return;let a=null,s=!1,l=[document.fonts.load(`13px "JetBrains Mono"`),document.fonts.load(`bold 13px "JetBrains Mono"`)];document.fonts.load(`13px "${G_}"`,String.fromCodePoint(57504)).catch(()=>{});let d=()=>{s||(a=_T({client:t,host:e,taskId:n,tabId:r,leafId:i,focusOnMount:h.current.focused!==!1},{setNotice:c,onScrolled:f,onFocusChange:e=>{if(!a)return;let{stream:t}=a.handle;e?(h.current.onActivate?.(),oa.set(ca(t)??null)):oa.get()?.stream===t&&oa.set(null)},onExit:()=>{DJ(DC(n,r,i))||h.current.onExit?.()},copyText:iY,pasteImage:async()=>{a&&await rY(t,a.handle)}}),u(a.handle))};return gT(t,n,r,i)?d():Promise.allSettled(l).then(d),()=>{s=!0,u(null),a?.release()}},[t,n,r,i]);let[_,y]=(0,g.useState)(!1);(0,g.useEffect)(()=>{if(!l)return;y(l.term.hasSelection());let e=l.term.onSelectionChange(()=>y(l.term.hasSelection()));return()=>{e.dispose(),y(!1)}},[l]),(0,g.useEffect)(()=>{if(!l)return;let{term:e,stream:a}=l,o={stream:a,focus:()=>e.focus(),input:t=>e.input(t,!0),reattach:()=>l.reattach(),scrollPages:e=>l.scrollLines(e*10),hasSelection:()=>e.hasSelection(),copySelection:()=>{let t=e.getSelection();return t.trim().length!==0&&(iY(t),e.clearSelection(),!0)},reset:()=>{let o={cols:e.cols,rows:e.rows};W.set((0,V.jsx)(dr,{title:wo(`reset.title`),body:wo(`reset.body`),confirmLabel:z(`workspace.reset`),onConfirm:async()=>{TJ(a);try{await t.request(`tab.split`,{taskId:n,tabId:r,action:`reset`,leafId:i??`leaf-1`,...o}),await l.reattach(),e.focus()}finally{EJ(a)}}}))},size:()=>({cols:e.cols,rows:e.rows})},s=sa(o);return document.activeElement===e.textarea&&oa.set(o),()=>{s()}},[l,t,n,r,i]),(0,g.useEffect)(()=>{e.focused&&l&&document.activeElement!==l.term.textarea&&l.term.focus()},[e.focused,l]);let b=!i||i===`leaf-1`,[x,S]=(0,g.useState)(null),C=e.engineExit?.since===x,[w,T]=(0,g.useState)(null),E=e.usageLimit&&e.usageLimit.since!==w?e.usageLimit:null,D=(0,g.useRef)(!1),O=async(i,a)=>{if(!D.current){D.current=!0,m({busy:!0,error:null});try{await t.request(`term.revive`,{taskId:n,tabId:r,...a?{restartExited:a}:{}}),await i.reattach(),i.term.focus(),S(e.engineExit?.since??null),m({busy:!1,error:null})}catch(e){m({busy:!1,error:e instanceof Error?e.message:String(e)})}finally{D.current=!1}}};return(0,V.jsxs)(`div`,{className:kt,"data-stream":DC(n,r,i),onDragOver:e=>e.dataTransfer.types.includes(`Files`)&&e.preventDefault(),onDrop:e=>{!e.dataTransfer.files.length||!l||(e.preventDefault(),tY(t,l,Array.from(e.dataTransfer.files)))},onPasteCapture:e=>{if(!l)return;let n=BR(e.clipboardData.files);(n.length!==0||e.clipboardData.getData(`text/plain`)===``)&&(e.preventDefault(),e.stopPropagation(),n.length>0?tY(t,l,n):rY(t,l))},children:[(0,V.jsxs)(`div`,{className:At,children:[(0,V.jsx)(`div`,{className:jt,ref:o}),(0,V.jsx)(ZJ,{notice:s,engineExit:C?null:e.engineExit??null,model:e.model,taskId:n,tabId:r,revive:p,onReopen:b&&l?e=>void O(l,e):void 0,onRetryAttach:l?()=>void l.reattach():void 0,usageLimit:E!==null,onDismissLimit:E?()=>T(E.since):void 0}),_&&e.composer&&l&&(0,V.jsx)(H,{variant:`floating`,className:`absolute top-2.5 right-2.5 z-4`,title:z(`quote.title`),onClick:()=>eY(l,n,r,a),children:z(`quote.action`)}),d>0&&l&&(0,V.jsxs)(`div`,{className:`mono absolute right-2.5 bottom-2.5 z-4 flex gap-3 rounded-sm border-hairline border-line bg-inset px-2.5 py-1 text-meta`,children:[(0,V.jsx)(`span`,{className:`text-warning`,children:wo(`scrolledBack`,{lines:d})}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>l.scrollToTop(),children:wo(`scrollFirst`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>l.scrollToBottom(),children:wo(`scrollLatest`)})]})]}),e.composer&&(0,V.jsx)(qJ,{model:e.model,taskId:n,tabId:r}),l&&(0,V.jsx)(YJ,{handle:l,atMenu:a})]})}var oY=e=>qH(e)!==null,sY=e=>Ow(qH(e)?.tab.split);function cY(e){let t=qH(e),n=t?.tab.split;return t&&n?{...t,split:n,leaf:WH(t.taskId,t.tab,n)}:null}Zi(()=>[{id:`workspace.split.right`,chords:[`ctrl+\\`],prefix:!1,surface:`workspace`,live:oY,run:e=>{let t=qH(e);t&&YH(e,t.taskId,t.tab,`right`)}},{id:`workspace.split.down`,chords:[`ctrl+=`],prefix:!1,surface:`workspace`,live:oY,run:e=>{let t=qH(e);t&&YH(e,t.taskId,t.tab,`down`)}},{id:`workspace.split.focus-next`,chords:[`f3`],prefix:!1,surface:`workspace`,live:sY,run:e=>{let t=cY(e);t&&KH(t.taskId,t.tab,t.split,Aw(t.split,t.leaf))}},{id:`workspace.split.close`,chords:[`w`],prefix:!0,surface:`workspace`,live:sY,run:e=>{let t=cY(e);t&&XH(e,t.taskId,t.tab,t.leaf)}},{id:`workspace.split.rename`,chords:[`f2`],prefix:!1,surface:`workspace`,live:sY,run:e=>{let t=cY(e);t&&ZH(e,t.taskId,t.tab,t.leaf)}}]);var lY=[{id:`leaf-1`,x:0,y:0,w:1,h:1,left:!1,top:!1}];function uY({model:e,taskId:t,tab:n}){let r=n.split;v(UH);let i=r?WH(t,n,r):`leaf-1`,a=r?jw(r,Tw(n)):new Map,o=Ow(r),{prefs:s}=R_(),c=v(e.tasks)?.tasks.find(e=>e.id===t)?.tabStatus?.[n.id]??n.status,l=n.kind===`engine`&&c?.reason===`dead`?c.since:null;(0,g.useEffect)(()=>{l!==null&&e.refreshTabsNow()},[l,e]);let u=l!==null&&n.alive!==!1?{code:n.exit?.code??null,since:l}:null,d=n.kind===`engine`&&c?.reason===`rate_limited`?{since:c.since}:null;return(0,V.jsx)(`div`,{className:Ze,children:(r?kw(r.root):lY).map(c=>(0,V.jsxs)(`div`,{className:et(o?s.splitStyle:null,{left:c.left,top:c.top,active:c.id===i}),style:{left:`calc(${c.x*100}% + var(--ml, 0px))`,top:`calc(${c.y*100}% + var(--mt, 0px))`,width:`calc(${c.w*100}% - var(--ml, 0px))`,height:`calc(${c.h*100}% - var(--mt, 0px))`},children:[(0,V.jsx)(aY,{client:e.client,model:e,engineExit:c.id===`leaf-1`?u:null,usageLimit:c.id===`leaf-1`?d:null,composer:n.kind===`engine`&&c.id===`leaf-1`,taskId:t,tabId:n.id,leafId:c.id,focused:c.id===i,onActivate:()=>r&&GH(t,n.id,r,c.id),onExit:()=>{o?JH(e,{taskId:t,tabId:n.id,action:`close`,leafId:c.id}):n.kind!==`engine`&&e.client.request(`tab.close`,{taskId:t,tabId:n.id}).then(()=>e.refreshTabsNow()).catch(()=>{})}}),o&&(0,V.jsx)(`span`,{className:tt(s.splitStyle===`rule`,c.id===i),onContextMenu:r=>aW(r,eU(e,t,n,c.id)),children:a.get(c.id)})]},c.id))})}var dY=/^[0-9a-f]{7,40}$/i;function fY(e,t){return t.sharesWorkspaceOf||!t.baseRef?null:e.find(e=>e.id!==t.id&&e.branch!==``&&e.branch===t.baseRef)||(dY.test(t.baseRef)&&t.parentTaskId?e.find(e=>e.id===t.parentTaskId)??null:null)}function pY(e,t){let n=[];for(let r=fY(e,t);r&&n.length<20&&!n.includes(r);r=fY(e,r))n.unshift(r);let r=e.filter(n=>!n.deleting&&fY(e,n)?.id===t.id).sort((e,t)=>(e.createdAt??``).localeCompare(t.createdAt??``));if(n.length===0&&r.length===0)return null;let i=n[0]??t,a=i.baseRef&&!dY.test(i.baseRef)?i.baseRef:null;return{nodes:[...n,t,...r],at:n.length,base:a}}var mY=e=>e.pr?.lifecycle===`merged`;function hY(e){return e.nodes.find(e=>!mY(e))??null}function gY({model:e,taskId:t}){B();let n=v(e.tasks)?.tasks??[],r=n.find(e=>e.id===t),i=r?pY(n,r):null;if(!i)return null;let a=hY(i);return(0,V.jsxs)(`nav`,{className:BL,"aria-label":z(`compare.stackLabel`),children:[i.base&&(0,V.jsxs)(`span`,{className:`text-subtle`,children:[i.base,` ←`]}),i.nodes.map((n,r)=>(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-x-3.5`,children:[r>0&&(0,V.jsx)(`span`,{className:`text-subtle`,children:`←`}),(0,V.jsxs)(H,{variant:`pill`,hit:`tight`,"aria-current":n.id===t,onClick:()=>e.select(n.id),children:[`[ `,(0,V.jsx)(sR,{status:n.rowStatus}),n.label||n.title,mY(n)?(0,V.jsx)(`span`,{className:`text-accent`,children:`✓`}):n.pr?.number?(0,V.jsx)(`span`,{children:`PR`}):null,` ]`]})]},n.id)),a&&!a.machine&&(0,V.jsx)(H,{hit:`tight`,className:`ml-auto flex-none whitespace-nowrap`,onClick:()=>void $P(e,a),children:z(`compare.landBottom`)})]})}function _Y(e,t){return e===`never`?!1:e!==`multipleOnly`||t>=2}var vY=Ha.filter(e=>e!==`chat`);function yY({taskId:e}){B();let t=Xk(e),n=v(qa),r=v(mn),i=n&&!r?Sk(t):null;return(0,V.jsx)(`div`,{className:DI,children:vY.map(t=>(0,V.jsx)(`button`,{type:`button`,className:gI({on:i===t}),title:z(`panel.${t}`),"aria-label":z(`panel.${t}`),"aria-pressed":i===t,onClick:()=>$k(e,t),children:(0,V.jsx)(gG,{children:_G[t]})},t))})}function bY({model:e,task:t,tabs:n,narrow:r}){let i=v(e.selection),{prefs:a}=R_(),o=!_Y(a.tabStrip,n.length);return(0,V.jsxs)(`div`,{className:`flex min-w-0 items-center gap-0.5 font-mono text-meta/body transition-padding-left duration-220 ease-snap motion-reduce:transition-none rail-folded:min-h-6.5 rail-folded:pl-23`,role:`tablist`,children:[n.map((n,r)=>(0,V.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":n.id===i.tabId,className:`group/tab flex items-center gap-1.5 whitespace-nowrap rounded-sm px-2.5 py-1 active:scale-97 motion-reduce:active:scale-none touch:select-none touch:touch-callout-none ${o?`hidden`:``} ${n.id===i.tabId?`bg-inset text-ink`:`text-muted hover:bg-hover data-menu-open:bg-hover`}`,onClick:()=>e.select(t.id,n.id),onContextMenu:r=>aW(r,_U(e,t,n)),children:[(0,V.jsx)(`span`,{className:`text-subtle group-aria-selected/tab:text-accent`,children:r+1}),Tw(n)]},n.id)),!r&&(0,V.jsx)(yY,{taskId:t.id})]})}function xY(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??e))}function SY({model:e}){let t=B()===`zh`?zr:Rr,n=e.client,[r,i]=(0,g.useState)(()=>(Hs(n,`worktrees.list`,{network:!0})??Hs(n,`worktrees.list`,{network:!1}))?.projects??null),[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(0),d=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0,t=!1,r=r=>Ws(n,`worktrees.list`,{network:r}).then(n=>{if(!(!e||!r&&t)&&(r&&(t=!0),i(n.projects),r)){let e=new Set(n.projects.flatMap(e=>e.worktrees.map(e=>e.path)));o(t=>t.filter(t=>e.has(t)))}}).catch(()=>{});return r(!1),r(!0),()=>{e=!1}},[n,l]),(0,g.useEffect)(()=>d.current?.focus(),[]);let f=(r??[]).map(e=>({...e,worktrees:e.worktrees.filter(e=>!a.includes(e.path))})),p=f.flatMap(e=>e.worktrees),m=Math.min(s,Math.max(0,p.length-1));(0,g.useEffect)(()=>{d.current?.querySelector(`[data-row="${m}"]`)?.scrollIntoView({block:`nearest`})},[m]);let h=(0,g.useCallback)(()=>u(e=>e+1),[]),_=async(e,r)=>{o(t=>[...t,e.path]);try{let i=await n.request(`worktrees.remove`,{path:e.path,force:r});i.residue&&G(xY(t.delete.residue,i.residue)),h()}catch(n){o(t=>t.filter(t=>t!==e.path));let i=n&&typeof n==`object`&&`code`in n?n.code:null;if(!r&&i===`DIRTY_WORKTREE`){W.set((0,V.jsx)(dr,{title:t.delete.forceTitle,body:`${xY(t.delete.forceBody,{branch:e.branch||e.path})}\n\n${xY(t.delete.forceReason,{reason:K(n)})}`,confirmLabel:t.delete.button,onConfirm:()=>_(e,!0)}));return}G(xY(t.delete.failed,{error:K(n)}),`error`)}},v=e=>W.set((0,V.jsx)(dr,{title:t.delete.confirmTitle,body:xY(t.delete.confirmBody,{branch:e.branch||e.path}),confirmLabel:t.delete.button,onConfirm:async()=>{_(e,!1)}})),y=n=>{if(!n.taskId){G(t.land.noTask,`error`);return}$P(e,{id:n.taskId,title:n.branch,branch:n.branch},h)},b=e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),un.set(null);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=p[m];if(e.key===`j`||e.key===`ArrowDown`)c(Math.min(p.length-1,m+1));else if(e.key===`k`||e.key===`ArrowUp`)c(Math.max(0,m-1));else if(e.key===`d`&&t)v(t);else if(e.key===`l`&&t)y(t);else if(e.key===`q`||e.key===`Escape`)un.set(null);else return;e.preventDefault()},x=0;return(0,V.jsxs)(`div`,{className:bM,tabIndex:0,ref:d,onKeyDown:b,children:[(0,V.jsx)(`h1`,{className:xM,children:t.title}),r===null?(0,V.jsx)(`p`,{className:`text-muted`,children:t.loading}):f.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.noProjects}):f.map(e=>{let n=x;return x+=e.worktrees.length,(0,V.jsxs)(`section`,{className:sM,children:[(0,V.jsxs)(`h2`,{className:`mt-1.5 mr-2 mb-1 ml-0 flex items-center gap-1 font-mono text-meta font-semibold normal-nums text-subtle`,children:[(0,V.jsx)(`span`,{children:e.repo}),(0,V.jsx)(`span`,{className:`rule`})]}),e.worktrees.length===0&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:t.noWorktrees}),e.worktrees.map((e,r)=>{let i=n+r;return(0,V.jsxs)(`div`,{"data-row":i,className:cM(i===m),onClick:()=>c(i),children:[(0,V.jsxs)(`div`,{className:lM,children:[(0,V.jsx)(`span`,{className:dM,children:e.branch||t.row.detached}),e.roveManaged&&(0,V.jsx)(`span`,{className:`chip text-muted`,children:t.badge.roveManaged}),e.dirty===!0&&(0,V.jsx)(`span`,{className:`chip text-warning`,children:t.badge.dirty}),e.dirty===null&&(0,V.jsx)(`span`,{className:`chip text-muted`,children:t.badge.dirtyUnknown}),(0,V.jsx)(`span`,{className:`chip ${e.branchOnRemote===!0?`text-success`:e.branchOnRemote===!1?`text-warning`:`text-muted`}`,children:e.branchOnRemote===!0?t.badge.remoteOn:e.branchOnRemote===!1?t.badge.remoteOff:t.badge.remoteUnknown}),e.verdictReason!==`dirty`&&e.verdictReason!==`fresh`&&(0,V.jsx)(`span`,{className:`chip ${e.verdict===`merged`?`text-success`:e.verdict===`stale`?`text-warning`:`text-accent`}`,children:t.verdict[e.verdictReason]??e.verdictReason})]}),(0,V.jsxs)(`div`,{className:`${uM} mono text-muted`,children:[(0,V.jsx)(`span`,{className:fM,children:e.path}),e.createdAtMs>0&&(0,V.jsx)(`span`,{children:xY(t.row.created,{age:Lo(Date.now()-e.createdAtMs)})})]}),i===m&&(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2 text-[length:var(--fs-body)]`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>v(e),children:t.delete.button}),e.taskId&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>y(e),children:t.land.button})]})]},e.path)})]},e.repo)}),(0,V.jsx)(`p`,{className:`${pM} mono keys-only text-muted`,children:(0,V.jsx)(AT,{text:`j/k · d ${t.delete.button} · l ${t.land.button} · q/esc`})})]})}function CY({model:e,narrow:t}){let n=v(e.selection),r=v(e.tabs),i=v(e.tasks),a=v(e.remote),o=a.find(e=>e.id===n.taskId&&!e.machine?.stale),s=Ri(i,n.taskId)??o??null,c=o?void 0:a.find(e=>e.id===n.taskId),l=s?r[s.id]??[]:[],u=s?s.id in r:!1,d=v(un),f=fN(s?.id),p=s?.rowStatus?.kind===`running`,m=v(hn),h=v(Ua)!==`terminal`&&t&&!!s;return(0,g.useEffect)(()=>{let t=e.selection.get();return e.selection.subscribe(()=>{hn.set(null);let n=e.selection.get();(n.taskId!==t.taskId||n.tabId!==t.tabId)&&Ua.set(`terminal`),t=n})},[e]),(0,g.useEffect)(()=>KF(e),[e]),d===`update`?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(VI,{}),(0,V.jsx)(WM,{client:e.client})]}):d===`worktrees`?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(VI,{}),(0,V.jsx)(SY,{model:e})]}):d?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(VI,{}),(0,V.jsx)(SH,{model:e,page:d})]}):m?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(VI,{}),(0,V.jsx)(`div`,{className:Dt,children:(0,V.jsx)(lO,{model:e,seed:m},`${m.machine??``}\0${m.repo??``}\0${m.ungrouped?`u`:``}\0${m.retryOf?.id??``}`)})]}):(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(VI,{taskId:s?.id}),s&&(0,V.jsx)(bY,{model:e,task:s,tabs:l,narrow:t}),s&&!s.groupId&&(0,V.jsx)(gY,{model:e,taskId:s.id}),s?.groupId&&(0,V.jsx)(SJ,{model:e,taskId:s.id,groupId:s.groupId}),(0,V.jsxs)(`div`,{className:`${Dt} ${p?Ot:``}`,style:f?{"--task-ink":f}:void 0,children:[!t&&!s&&!c&&i&&i.tasks.length+a.length===0&&(0,V.jsx)(iW,{model:e}),!s&&!c&&i&&i.tasks.length+a.length>0&&(0,V.jsx)(`p`,{className:wt,children:z(`workspace.pickTask`)}),c?.machine&&(0,V.jsx)(`div`,{className:Tt,children:(0,V.jsx)(EE,{host:c.machine.label,onMachines:()=>jO(e)})}),s&&u&&l.length===0&&!h&&(0,V.jsxs)(`div`,{className:Tt,children:[(0,V.jsx)(`p`,{children:z(`workspace.noTabs`)}),(0,V.jsx)(H,{variant:`filled`,onClick:()=>void VC(e,s.id,{kind:`engine`}).catch(e=>G(String(e),`error`)),children:s.engine?z(`workspace.startEngine`,{engine:s.engine.name}):z(`workspace.startSession`)}),` `,(0,V.jsx)(H,{variant:`filled`,onClick:()=>void BC(e,s.id),children:z(`menu.newChat`)}),` `,(0,V.jsx)(H,{variant:`filled`,onClick:()=>W.set((0,V.jsx)(KC,{model:e,taskId:s.id})),children:z(`menu.newChatPick`)})]}),s&&h&&(0,V.jsx)(yJ,{model:e,task:s,narrow:!0}),s&&n.tabId&&l.some(e=>e.id===n.tabId)&&(0,V.jsx)(`div`,{className:`min-w-0 flex-1 ${h?`hidden`:`flex`}`,children:(0,V.jsx)(uY,{model:e,taskId:s.id,tab:l.find(e=>e.id===n.tabId)??l[0]},`${s.id}::${n.tabId}`)})]})]})}function wY({model:e}){B();let t=v(e.client.conn);return t.hello===null&&t.failures>=2?(0,V.jsx)(TY,{}):(0,V.jsx)(EY,{model:e})}function TY(){let[e,t]=(0,g.useState)(null);return(0,g.useEffect)(()=>{ja().then(t)},[]),e===null?null:e?(0,V.jsx)(Fa,{}):(0,V.jsx)(an,{failing:!0})}function EY({model:e}){CF(e);let t=v(e.client.conn).hello;(0,g.useEffect)(()=>{t&&(HM(e.client),JM(e.client,t.roveVersion))},[t,e.client]),qw(e),Ww(e),pa(),ei(e.client),MF(e),pi(e.client),IN(e.client),(0,g.useEffect)(()=>{e.onSelect=_a;let t=hn.subscribe(()=>{hn.get()!==null&&_a()});return vn(),t},[e]),(0,g.useEffect)(()=>pP(e),[e]);let n=v(mn),r=v(e.selection),i=v(e.tasks),a=v(e.remote),o=Ta(),s=v(uI),c=v(dI),l=v(lI),u=v(ga),d=v(Ka),f=v(qa),p=v(Ja),m=v(un),h=v(wn)===`drag`,_=v(hn)!==null,y=a.find(e=>e.id===r.taskId&&!e.machine?.stale),b=Ri(i,r.taskId)??y??null,x=y?void 0:a.find(e=>e.id===r.taskId),S=o?Ea(u,!!b||!!x,m!==null||_):null;(0,g.useEffect)(()=>e.setTaskShown(S===null||S===`content`&&m===null&&!_),[e,S,m,_]);let C=mI(l??280),w={"--rail-w":`${s?0:C}px`,"--rail-open-w":`${C}px`,"--panel-w":d===null?void 0:`${Ya(d,s?0:C)}px`};return(0,V.jsxs)(`div`,{className:Be,children:[(0,V.jsx)(hi,{onRefresh:()=>mi(e.client)}),(0,V.jsxs)(`div`,{className:Ve({zen:n||!f||!b&&!x||o,expanded:p&&!n&&!o,surface:S,folded:s&&!o,peek:s&&c&&!o,dragging:h}),style:o?void 0:w,children:[!o&&(0,V.jsx)(zI,{model:e}),s&&!o&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 left-0 z-5 col-1 row-1 w-2.5`,onMouseEnter:()=>pI(!0),onMouseLeave:()=>pI(!1)}),(0,V.jsx)(oW,{model:e,narrow:o}),(0,V.jsx)(CY,{model:e,narrow:o}),!o&&(0,V.jsx)(yJ,{model:e,task:b,remoteHost:x?.machine?.label}),(0,V.jsx)(xJ,{model:e}),(0,V.jsx)(Va,{}),(0,V.jsx)(OF,{model:e}),(0,V.jsx)(Hi,{model:e})]})]})}var DY=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function OY(e){return[...e.querySelectorAll(DY)].filter(e=>e.tabIndex>=0&&e.offsetParent!==null)}function kY(){window.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||e.defaultPrevented||e.ctrlKey||e.metaKey||e.altKey)return;let t=[...document.querySelectorAll(`.overlay:not(.is-leaving)`)].at(-1);if(!t)return;let n=OY(t);if(n.length===0)return;let r=document.activeElement,i=r instanceof HTMLElement&&t.contains(r),a=e.shiftKey?n.filter(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)).at(-1)??n.at(-1):n.find(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))??n[0];e.preventDefault(),a?.focus()})}function AY(e){if(!xn())for(let t of document.querySelectorAll(`${e}:not(.is-leaving)`)){let e=t.cloneNode(!0);e.classList.add(`is-leaving`),e.inert=!0,e.setAttribute(`aria-hidden`,`true`),document.body.append(e);let n=t.querySelectorAll(`*`),r=e.querySelectorAll(`*`);n.forEach((e,t)=>{let n=r[t];e.scrollTop&&(n.scrollTop=e.scrollTop),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(n.value=e.value)}),window.setTimeout(()=>e.remove(),200)}}function jY(e){for(let t of document.querySelectorAll(`${e}.is-leaving`))t.remove()}function MY(){for(let e of document.querySelectorAll(`.overlay:not(.is-leaving)`))for(let t of e.getAnimations())t instanceof CSSAnimation&&t.animationName===`fade-in`&&t.finish()}function NY(){let e=W.get(),t=-1/0;W.subscribe(()=>{let n=W.get();if(n===null&&e!==null)t=performance.now(),AY(`.overlay`);else if(n!==null){let n=e!==null||performance.now()-t<140;jY(`.overlay`),n&&requestAnimationFrame(MY)}e=n});let n=sn.get();sn.subscribe(()=>{let e=sn.get();e===null&&n!==null?AY(`.menu`):e!==null&&jY(`.menu`),n=e});let r=nT.get().guide;nT.subscribe(()=>{let e=nT.get().guide;e===null&&r!==null?AY(`.prefix-guide`):e!==null&&jY(`.prefix-guide`),r=e})}var PY=500,FY=10,IY=`input, textarea, select, [contenteditable], .xterm`,LY=[`mousedown`,`mouseup`,`click`,`contextmenu`];function RY(){let e=null,t=()=>{e&&window.clearTimeout(e.timer),e=null},n=()=>{let e=e=>{e.preventDefault(),e.stopPropagation()},t=()=>{for(let t of LY)document.removeEventListener(t,e,!0);document.removeEventListener(`pointerdown`,t,!0),document.removeEventListener(`keydown`,t,!0)};for(let t of LY)document.addEventListener(t,e,!0);document.addEventListener(`pointerdown`,t,!0),document.addEventListener(`keydown`,t,!0)};document.addEventListener(`pointerdown`,r=>{if(t(),r.pointerType!==`touch`||!(r.target instanceof Element)||r.target.closest(IY))return;let i=r.target,a={x:r.clientX,y:r.clientY,native:!1,timer:window.setTimeout(()=>{e=null,!(a.native||!i.isConnected)&&(i.dispatchEvent(new MouseEvent(`contextmenu`,{bubbles:!0,cancelable:!0,clientX:a.x,clientY:a.y,button:2})),n())},PY)};e=a},!0),document.addEventListener(`pointermove`,n=>{e&&Math.hypot(n.clientX-e.x,n.clientY-e.y)>FY&&t()},!0),document.addEventListener(`pointerup`,t,!0),document.addEventListener(`pointercancel`,t,!0),document.addEventListener(`contextmenu`,t=>{e&&t.isTrusted&&(e.native=!0)},!0)}function zY(e,t){e.viewingExtras=()=>Vk({narrow:Ca(),panelOpen:qa.get(),zen:mn.get()});let n=()=>e.reportViewing();qa.subscribe(n),mn.subscribe(n),wa(n),t.on(`panel`,t=>{Bk(t)&&rA(t,e.selection.get().taskId)})}function BY(e){let t=e;return!!t&&typeof t.promptId==`string`&&typeof t.title==`string`}function VY({client:e,prompt:t}){let n=(B()===`zh`?hr:mr).prompt,[r,i]=(0,g.useState)(t.initial??``),a=(0,g.useRef)(!1),{busy:o,error:s,submit:c}=lr();return(0,g.useEffect)(()=>()=>{a.current||e.request(`ui.promptReply`,{promptId:t.promptId}).catch(()=>{})},[e,t.promptId]),(0,V.jsx)(cr,{title:t.title,children:(0,V.jsxs)(`form`,{className:Rn,onSubmit:n=>{n.preventDefault(),c(async()=>{await e.request(`ui.promptReply`,{promptId:t.promptId,value:r}),a.current=!0})},children:[(0,V.jsx)(`input`,{className:nn,"aria-label":n.fieldLabel,autoFocus:!0,spellCheck:!1,value:r,placeholder:t.placeholder,onChange:e=>i(e.target.value)}),s&&(0,V.jsx)(`p`,{className:`text-error`,children:s}),(0,V.jsx)(pr,{busy:o,submitLabel:n.submitLabel})]})})}function HY(e,t){W.get()||W.set((0,V.jsx)(VY,{client:e,prompt:t},t.promptId))}var UY=`rove-web.reloadedFor`;function WY(e,t,n){return e===null?`adopt`:t===e||t===n?`stay`:`reload`}function GY(){let e=null;try{e=window.sessionStorage}catch{}return{storage:e,reload:()=>window.location.reload()}}function KY(e,t=GY()){let n=null,r=null,i=()=>{try{return t.storage?.getItem(UY)??r}catch{return r}};return e.conn.subscribe(()=>{let{state:a,hello:o}=e.conn.get();if(a!==`open`||!o)return;let s=WY(n,o.roveVersion,i());if(s===`adopt`&&(n=o.roveVersion),s===`reload`){r=o.roveVersion;try{t.storage?.setItem(UY,o.roveVersion)}catch{}t.reload()}})}function qY(){let e=window.visualViewport;if(!e)return;let t=document.documentElement,n=()=>{t.style.setProperty(`--vvh`,`${e.height*e.scale}px`),e.scale===1&&window.scrollY!==0&&window.scrollTo(0,0)};e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),window.addEventListener(`scroll`,n,{passive:!0}),n()}var JY=(0,h.createRoot)(document.getElementById(`root`));qY(),RY(),U_(),NY(),kY();var YY=a();if(!YY)ja().then(e=>JY.render((0,V.jsx)(g.StrictMode,{children:e?(0,V.jsx)(Fa,{}):(0,V.jsx)(an,{})})));else{let e=new h_(g_(),YY),t=new Bi(e);e.on(`prompt`,t=>{BY(t)&&HY(e,t)}),zY(t,e),KY(e),e.start(),JY.render((0,V.jsx)(g.StrictMode,{children:(0,V.jsx)(wY,{model:t})}))}
|
|
149
|
+
`)}\n${r}\n`}function MJ(e){let t=document.querySelector(`[data-composer="${CSS.escape(e)}"]`);return t&&t.offsetParent!==null?t:null}function NJ(e,t,n,r){let i=jJ(e.term.getSelection());if(i===null)return!1;let a=lJ(t,n),o=MJ(a);if(o){pJ(a,i),e.term.clearSelection();let t=o.querySelector(`textarea`);return t?.focus(),t?.setSelectionRange(t.value.length,t.value.length),!0}return r?(G(z(`quote.atMenu`),`error`),!1):e.term.modes.bracketedPasteMode?(e.term.paste(i),e.term.clearSelection(),e.term.focus(),!0):(G(z(`quote.notReady`),`error`),!1)}async function PJ(e,t,n){let r=SR(n);r.length<n.length&&G(z(`layout.dropUnsupported`),`error`);for(let n of r)try{t.term.paste(`${await wR(e,n)} `)}catch(e){G(e instanceof Error?e.message:String(e),`error`)}t.term.focus()}async function FJ(){if(!navigator.clipboard?.read)throw Error(z(`layout.pasteNeedsHttps`));let e=[];for(let t of await navigator.clipboard.read())for(let n of t.types)(n.startsWith(`image/`)||n===`application/pdf`)&&e.push(new File([await t.getType(n)],`clipboard`,{type:n}));return SR(e)}async function IJ(e,t){let n;try{n=await FJ()}catch(e){G(z(`layout.pasteNoAccess`,{error:e instanceof Error?e.message:String(e)}),`error`);return}n.length===0?G(z(`layout.pasteNoImage`),`error`):await PJ(e,t,n)}async function LJ(e){try{return await navigator.clipboard.writeText(e),!0}catch{return G(z(`menu.copyFailed`),`error`),!1}}function RJ(e){let{client:t,taskId:n,tabId:r,leafId:i}=e,a=v(e.model.tasks)?.tasks.find(e=>e.id===n)?.tabStatus?.[r]?.kind===`needs-input`;B();let o=(0,g.useRef)(null),[s,c]=(0,g.useState)({kind:`none`}),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(0),[p,m]=(0,g.useState)({busy:!1,error:null}),h=(0,g.useRef)(e);h.current=e,(0,g.useEffect)(()=>{let e=o.current;if(!e)return;let a=null,s=!1,l=[document.fonts.load(`13px "JetBrains Mono"`),document.fonts.load(`bold 13px "JetBrains Mono"`)];document.fonts.load(`13px "${G_}"`,String.fromCodePoint(57504)).catch(()=>{});let d=()=>{s||(a=_T({client:t,host:e,taskId:n,tabId:r,leafId:i,focusOnMount:h.current.focused!==!1},{setNotice:c,onScrolled:f,onFocusChange:e=>{if(!a)return;let{stream:t}=a.handle;e?(h.current.onActivate?.(),oa.set(ca(t)??null)):oa.get()?.stream===t&&oa.set(null)},onExit:()=>{oJ(DC(n,r,i))||h.current.onExit?.()},copyText:LJ,pasteImage:async()=>{a&&await IJ(t,a.handle)}}),u(a.handle))};return gT(t,n,r,i)?d():Promise.allSettled(l).then(d),()=>{s=!0,u(null),a?.release()}},[t,n,r,i]);let[_,y]=(0,g.useState)(!1);(0,g.useEffect)(()=>{if(!l)return;y(l.term.hasSelection());let e=l.term.onSelectionChange(()=>y(l.term.hasSelection()));return()=>{e.dispose(),y(!1)}},[l]),(0,g.useEffect)(()=>{if(!l)return;let{term:e,stream:a}=l,o={stream:a,focus:()=>e.focus(),input:t=>e.input(t,!0),reattach:()=>l.reattach(),scrollPages:e=>l.scrollLines(e*10),hasSelection:()=>e.hasSelection(),copySelection:()=>{let t=e.getSelection();return t.trim().length!==0&&(LJ(t),e.clearSelection(),!0)},reset:()=>{let o={cols:e.cols,rows:e.rows};W.set((0,V.jsx)(dr,{title:wo(`reset.title`),body:wo(`reset.body`),confirmLabel:z(`workspace.reset`),onConfirm:async()=>{iJ(a);try{await t.request(`tab.split`,{taskId:n,tabId:r,action:`reset`,leafId:i??`leaf-1`,...o}),await l.reattach(),e.focus()}finally{aJ(a)}}}))},size:()=>({cols:e.cols,rows:e.rows})},s=sa(o);return document.activeElement===e.textarea&&oa.set(o),()=>{s()}},[l,t,n,r,i]),(0,g.useEffect)(()=>{e.focused&&l&&document.activeElement!==l.term.textarea&&l.term.focus()},[e.focused,l]);let b=!i||i===`leaf-1`,[x,S]=(0,g.useState)(null),C=e.engineExit?.since===x,[w,T]=(0,g.useState)(null),E=e.usageLimit&&e.usageLimit.since!==w?e.usageLimit:null,D=(0,g.useRef)(!1),O=async(i,a)=>{if(!D.current){D.current=!0,m({busy:!0,error:null});try{await t.request(`term.revive`,{taskId:n,tabId:r,...a?{restartExited:a}:{}}),await i.reattach(),i.term.focus(),S(e.engineExit?.since??null),m({busy:!1,error:null})}catch(e){m({busy:!1,error:e instanceof Error?e.message:String(e)})}finally{D.current=!1}}};return(0,V.jsxs)(`div`,{className:kt,"data-stream":DC(n,r,i),onDragOver:e=>e.dataTransfer.types.includes(`Files`)&&e.preventDefault(),onDrop:e=>{!e.dataTransfer.files.length||!l||(e.preventDefault(),PJ(t,l,Array.from(e.dataTransfer.files)))},onPasteCapture:e=>{if(!l)return;let n=SR(e.clipboardData.files);(n.length!==0||e.clipboardData.getData(`text/plain`)===``)&&(e.preventDefault(),e.stopPropagation(),n.length>0?PJ(t,l,n):IJ(t,l))},children:[(0,V.jsxs)(`div`,{className:At,children:[(0,V.jsx)(`div`,{className:jt,ref:o}),(0,V.jsx)(AJ,{notice:s,engineExit:C?null:e.engineExit??null,model:e.model,taskId:n,tabId:r,revive:p,onReopen:b&&l?e=>void O(l,e):void 0,onRetryAttach:l?()=>void l.reattach():void 0,usageLimit:E!==null,onDismissLimit:E?()=>T(E.since):void 0}),_&&e.composer&&l&&(0,V.jsx)(H,{variant:`floating`,className:`absolute top-2.5 right-2.5 z-4`,title:z(`quote.title`),onClick:()=>NJ(l,n,r,a),children:z(`quote.action`)}),d>0&&l&&(0,V.jsxs)(`div`,{className:`mono absolute right-2.5 bottom-2.5 z-4 flex gap-3 rounded-sm border-hairline border-line bg-inset px-2.5 py-1 text-meta`,children:[(0,V.jsx)(`span`,{className:`text-warning`,children:wo(`scrolledBack`,{lines:d})}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>l.scrollToTop(),children:wo(`scrollFirst`)}),(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>l.scrollToBottom(),children:wo(`scrollLatest`)})]})]}),e.composer&&(0,V.jsx)(EJ,{model:e.model,taskId:n,tabId:r}),l&&(0,V.jsx)(OJ,{handle:l,atMenu:a})]})}var zJ=e=>kH(e)!==null,BJ=e=>Ow(kH(e)?.tab.split);function VJ(e){let t=kH(e),n=t?.tab.split;return t&&n?{...t,split:n,leaf:EH(t.taskId,t.tab,n)}:null}Zi(()=>[{id:`workspace.split.right`,chords:[`ctrl+\\`],prefix:!1,surface:`workspace`,live:zJ,run:e=>{let t=kH(e);t&&jH(e,t.taskId,t.tab,`right`)}},{id:`workspace.split.down`,chords:[`ctrl+=`],prefix:!1,surface:`workspace`,live:zJ,run:e=>{let t=kH(e);t&&jH(e,t.taskId,t.tab,`down`)}},{id:`workspace.split.focus-next`,chords:[`f3`],prefix:!1,surface:`workspace`,live:BJ,run:e=>{let t=VJ(e);t&&OH(t.taskId,t.tab,t.split,Aw(t.split,t.leaf))}},{id:`workspace.split.close`,chords:[`w`],prefix:!0,surface:`workspace`,live:BJ,run:e=>{let t=VJ(e);t&&MH(e,t.taskId,t.tab,t.leaf)}},{id:`workspace.split.rename`,chords:[`f2`],prefix:!1,surface:`workspace`,live:BJ,run:e=>{let t=VJ(e);t&&NH(e,t.taskId,t.tab,t.leaf)}}]);var HJ=[{id:`leaf-1`,x:0,y:0,w:1,h:1,left:!1,top:!1}];function UJ({model:e,taskId:t,tab:n}){let r=n.split;v(TH);let i=r?EH(t,n,r):`leaf-1`,a=r?jw(r,Tw(n)):new Map,o=Ow(r),{prefs:s}=R_(),c=v(e.tasks)?.tasks.find(e=>e.id===t)?.tabStatus?.[n.id]??n.status,l=n.kind===`engine`&&c?.reason===`dead`?c.since:null;(0,g.useEffect)(()=>{l!==null&&e.refreshTabsNow()},[l,e]);let u=l!==null&&n.alive!==!1?{code:n.exit?.code??null,since:l}:null,d=n.kind===`engine`&&c?.reason===`rate_limited`?{since:c.since}:null;return(0,V.jsx)(`div`,{className:Ze,children:(r?kw(r.root):HJ).map(c=>(0,V.jsxs)(`div`,{className:et(o?s.splitStyle:null,{left:c.left,top:c.top,active:c.id===i}),style:{left:`calc(${c.x*100}% + var(--ml, 0px))`,top:`calc(${c.y*100}% + var(--mt, 0px))`,width:`calc(${c.w*100}% - var(--ml, 0px))`,height:`calc(${c.h*100}% - var(--mt, 0px))`},children:[(0,V.jsx)(RJ,{client:e.client,model:e,engineExit:c.id===`leaf-1`?u:null,usageLimit:c.id===`leaf-1`?d:null,composer:n.kind===`engine`&&c.id===`leaf-1`,taskId:t,tabId:n.id,leafId:c.id,focused:c.id===i,onActivate:()=>r&&DH(t,n.id,r,c.id),onExit:()=>{o?AH(e,{taskId:t,tabId:n.id,action:`close`,leafId:c.id}):n.kind!==`engine`&&e.client.request(`tab.close`,{taskId:t,tabId:n.id}).then(()=>e.refreshTabsNow()).catch(()=>{})}}),o&&(0,V.jsx)(`span`,{className:tt(s.splitStyle===`rule`,c.id===i),onContextMenu:r=>VU(r,IH(e,t,n,c.id)),children:a.get(c.id)})]},c.id))})}var WJ=/^[0-9a-f]{7,40}$/i;function GJ(e,t){return t.sharesWorkspaceOf||!t.baseRef?null:e.find(e=>e.id!==t.id&&e.branch!==``&&e.branch===t.baseRef)||(WJ.test(t.baseRef)&&t.parentTaskId?e.find(e=>e.id===t.parentTaskId)??null:null)}function KJ(e,t){let n=[];for(let r=GJ(e,t);r&&n.length<20&&!n.includes(r);r=GJ(e,r))n.unshift(r);let r=e.filter(n=>!n.deleting&&GJ(e,n)?.id===t.id).sort((e,t)=>(e.createdAt??``).localeCompare(t.createdAt??``));if(n.length===0&&r.length===0)return null;let i=n[0]??t,a=i.baseRef&&!WJ.test(i.baseRef)?i.baseRef:null;return{nodes:[...n,t,...r],at:n.length,base:a}}var qJ=e=>e.pr?.lifecycle===`merged`;function JJ(e){return e.nodes.find(e=>!qJ(e))??null}function YJ({model:e,taskId:t}){B();let n=v(e.tasks)?.tasks??[],r=n.find(e=>e.id===t),i=r?KJ(n,r):null;if(!i)return null;let a=JJ(i);return(0,V.jsxs)(`nav`,{className:SL,"aria-label":z(`compare.stackLabel`),children:[i.base&&(0,V.jsxs)(`span`,{className:`text-subtle`,children:[i.base,` ←`]}),i.nodes.map((n,r)=>(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-x-3.5`,children:[r>0&&(0,V.jsx)(`span`,{className:`text-subtle`,children:`←`}),(0,V.jsxs)(H,{variant:`pill`,hit:`tight`,"aria-current":n.id===t,onClick:()=>e.select(n.id),children:[`[ `,(0,V.jsx)(UL,{status:n.rowStatus}),n.label||n.title,qJ(n)?(0,V.jsx)(`span`,{className:`text-accent`,children:`✓`}):n.pr?.number?(0,V.jsx)(`span`,{children:`PR`}):null,` ]`]})]},n.id)),a&&!a.machine&&(0,V.jsx)(H,{hit:`tight`,className:`ml-auto flex-none whitespace-nowrap`,onClick:()=>void YP(e,a),children:z(`compare.landBottom`)})]})}function XJ(e,t){return e===`never`?!1:e!==`multipleOnly`||t>=2}var ZJ=Ha.filter(e=>e!==`chat`);function QJ({taskId:e}){B();let t=Kk(e),n=v(qa),r=v(mn),i=n&&!r?vk(t):null;return(0,V.jsx)(`div`,{className:CI,children:ZJ.map(t=>(0,V.jsx)(`button`,{type:`button`,className:fI({on:i===t}),title:z(`panel.${t}`),"aria-label":z(`panel.${t}`),"aria-pressed":i===t,onClick:()=>Yk(e,t),children:(0,V.jsx)(YW,{children:XW[t]})},t))})}function $J({model:e,task:t,tabs:n,narrow:r}){let i=v(e.selection),{prefs:a}=R_(),o=!XJ(a.tabStrip,n.length);return(0,V.jsxs)(`div`,{className:`flex min-w-0 items-center gap-0.5 font-mono text-meta/body transition-padding-left duration-220 ease-snap motion-reduce:transition-none rail-folded:min-h-6.5 rail-folded:pl-23`,role:`tablist`,children:[n.map((n,r)=>(0,V.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":n.id===i.tabId,className:`group/tab flex items-center gap-1.5 whitespace-nowrap rounded-sm px-2.5 py-1 active:scale-97 motion-reduce:active:scale-none touch:select-none touch:touch-callout-none ${o?`hidden`:``} ${n.id===i.tabId?`bg-inset text-ink`:`text-muted hover:bg-hover data-menu-open:bg-hover`}`,onClick:()=>e.select(t.id,n.id),onContextMenu:r=>VU(r,$H(e,t,n)),children:[(0,V.jsx)(`span`,{className:`text-subtle group-aria-selected/tab:text-accent`,children:r+1}),Tw(n)]},n.id)),!r&&(0,V.jsx)(QJ,{taskId:t.id})]})}function eY(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??e))}function tY({model:e}){let t=B()===`zh`?zr:Rr,n=e.client,[r,i]=(0,g.useState)(()=>(Hs(n,`worktrees.list`,{network:!0})??Hs(n,`worktrees.list`,{network:!1}))?.projects??null),[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(0),d=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0,t=!1,r=r=>Ws(n,`worktrees.list`,{network:r}).then(n=>{if(!(!e||!r&&t)&&(r&&(t=!0),i(n.projects),r)){let e=new Set(n.projects.flatMap(e=>e.worktrees.map(e=>e.path)));o(t=>t.filter(t=>e.has(t)))}}).catch(()=>{});return r(!1),r(!0),()=>{e=!1}},[n,l]),(0,g.useEffect)(()=>d.current?.focus(),[]);let f=(r??[]).map(e=>({...e,worktrees:e.worktrees.filter(e=>!a.includes(e.path))})),p=f.flatMap(e=>e.worktrees),m=Math.min(s,Math.max(0,p.length-1));(0,g.useEffect)(()=>{d.current?.querySelector(`[data-row="${m}"]`)?.scrollIntoView({block:`nearest`})},[m]);let h=(0,g.useCallback)(()=>u(e=>e+1),[]),_=async(e,r)=>{o(t=>[...t,e.path]);try{let i=await n.request(`worktrees.remove`,{path:e.path,force:r});i.residue&&G(eY(t.delete.residue,i.residue)),h()}catch(n){o(t=>t.filter(t=>t!==e.path));let i=n&&typeof n==`object`&&`code`in n?n.code:null;if(!r&&i===`DIRTY_WORKTREE`){W.set((0,V.jsx)(dr,{title:t.delete.forceTitle,body:`${eY(t.delete.forceBody,{branch:e.branch||e.path})}\n\n${eY(t.delete.forceReason,{reason:K(n)})}`,confirmLabel:t.delete.button,onConfirm:()=>_(e,!0)}));return}G(eY(t.delete.failed,{error:K(n)}),`error`)}},v=e=>W.set((0,V.jsx)(dr,{title:t.delete.confirmTitle,body:eY(t.delete.confirmBody,{branch:e.branch||e.path}),confirmLabel:t.delete.button,onConfirm:async()=>{_(e,!1)}})),y=n=>{if(!n.taskId){G(t.land.noTask,`error`);return}YP(e,{id:n.taskId,title:n.branch,branch:n.branch},h)},b=e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),un.set(null);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=p[m];if(e.key===`j`||e.key===`ArrowDown`)c(Math.min(p.length-1,m+1));else if(e.key===`k`||e.key===`ArrowUp`)c(Math.max(0,m-1));else if(e.key===`d`&&t)v(t);else if(e.key===`l`&&t)y(t);else if(e.key===`q`||e.key===`Escape`)un.set(null);else return;e.preventDefault()},x=0;return(0,V.jsxs)(`div`,{className:gM,tabIndex:0,ref:d,onKeyDown:b,children:[(0,V.jsx)(`h1`,{className:_M,children:t.title}),r===null?(0,V.jsx)(`p`,{className:`text-muted`,children:t.loading}):f.length===0?(0,V.jsx)(`p`,{className:`text-muted`,children:t.noProjects}):f.map(e=>{let n=x;return x+=e.worktrees.length,(0,V.jsxs)(`section`,{className:rM,children:[(0,V.jsxs)(`h2`,{className:`mt-1.5 mr-2 mb-1 ml-0 flex items-center gap-1 font-mono text-meta font-semibold normal-nums text-subtle`,children:[(0,V.jsx)(`span`,{children:e.repo}),(0,V.jsx)(`span`,{className:`rule`})]}),e.worktrees.length===0&&(0,V.jsx)(`p`,{className:`mono text-muted`,children:t.noWorktrees}),e.worktrees.map((e,r)=>{let i=n+r;return(0,V.jsxs)(`div`,{"data-row":i,className:iM(i===m),onClick:()=>c(i),children:[(0,V.jsxs)(`div`,{className:aM,children:[(0,V.jsx)(`span`,{className:sM,children:e.branch||t.row.detached}),e.roveManaged&&(0,V.jsx)(`span`,{className:`chip text-muted`,children:t.badge.roveManaged}),e.dirty===!0&&(0,V.jsx)(`span`,{className:`chip text-warning`,children:t.badge.dirty}),e.dirty===null&&(0,V.jsx)(`span`,{className:`chip text-muted`,children:t.badge.dirtyUnknown}),(0,V.jsx)(`span`,{className:`chip ${e.branchOnRemote===!0?`text-success`:e.branchOnRemote===!1?`text-warning`:`text-muted`}`,children:e.branchOnRemote===!0?t.badge.remoteOn:e.branchOnRemote===!1?t.badge.remoteOff:t.badge.remoteUnknown}),e.verdictReason!==`dirty`&&e.verdictReason!==`fresh`&&(0,V.jsx)(`span`,{className:`chip ${e.verdict===`merged`?`text-success`:e.verdict===`stale`?`text-warning`:`text-accent`}`,children:t.verdict[e.verdictReason]??e.verdictReason})]}),(0,V.jsxs)(`div`,{className:`${oM} mono text-muted`,children:[(0,V.jsx)(`span`,{className:cM,children:e.path}),e.createdAtMs>0&&(0,V.jsx)(`span`,{children:eY(t.row.created,{age:Lo(Date.now()-e.createdAtMs)})})]}),i===m&&(0,V.jsxs)(`div`,{className:`flex items-baseline gap-2 text-[length:var(--fs-body)]`,children:[(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>v(e),children:t.delete.button}),e.taskId&&(0,V.jsx)(`button`,{type:`button`,className:`link text-accent [&:hover]:underline touch-hit`,onClick:()=>y(e),children:t.land.button})]})]},e.path)})]},e.repo)}),(0,V.jsx)(`p`,{className:`${lM} mono keys-only text-muted`,children:(0,V.jsx)(AT,{text:`j/k · d ${t.delete.button} · l ${t.land.button} · q/esc`})})]})}function nY({model:e,narrow:t}){let n=v(e.selection),r=v(e.tabs),i=v(e.tasks),a=v(e.remote),o=a.find(e=>e.id===n.taskId&&!e.machine?.stale),s=Ri(i,n.taskId)??o??null,c=o?void 0:a.find(e=>e.id===n.taskId),l=s?r[s.id]??[]:[],u=s?s.id in r:!1,d=v(un),f=cN(s?.id),p=s?.rowStatus?.kind===`running`,m=v(hn),h=v(Ua)!==`terminal`&&t&&!!s;return(0,g.useEffect)(()=>{let t=e.selection.get();return e.selection.subscribe(()=>{hn.set(null);let n=e.selection.get();(n.taskId!==t.taskId||n.tabId!==t.tabId)&&Ua.set(`terminal`),t=n})},[e]),(0,g.useEffect)(()=>HF(e),[e]),d===`update`?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(LI,{}),(0,V.jsx)(BM,{client:e.client})]}):d===`worktrees`?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(LI,{}),(0,V.jsx)(tY,{model:e})]}):d?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(LI,{}),(0,V.jsx)(iH,{model:e,page:d})]}):m?(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(LI,{}),(0,V.jsx)(`div`,{className:Dt,children:(0,V.jsx)(aO,{model:e,seed:m},`${m.machine??``}\0${m.repo??``}\0${m.ungrouped?`u`:``}\0${m.retryOf?.id??``}`)})]}):(0,V.jsxs)(`main`,{className:`${Et} ${Ue}`,children:[t&&(0,V.jsx)(LI,{taskId:s?.id}),s&&(0,V.jsx)($J,{model:e,task:s,tabs:l,narrow:t}),s&&!s.groupId&&(0,V.jsx)(YJ,{model:e,taskId:s.id}),s?.groupId&&(0,V.jsx)(tJ,{model:e,taskId:s.id,groupId:s.groupId}),(0,V.jsxs)(`div`,{className:`${Dt} ${p?Ot:``}`,style:f?{"--task-ink":f}:void 0,children:[!t&&!s&&!c&&i&&i.tasks.length+a.length===0&&(0,V.jsx)(BU,{model:e}),!s&&!c&&i&&i.tasks.length+a.length>0&&(0,V.jsx)(`p`,{className:wt,children:z(`workspace.pickTask`)}),c?.machine&&(0,V.jsx)(`div`,{className:Tt,children:(0,V.jsx)(SE,{host:c.machine.label,onMachines:()=>DO(e)})}),s&&u&&l.length===0&&!h&&(0,V.jsxs)(`div`,{className:Tt,children:[(0,V.jsx)(`p`,{children:z(`workspace.noTabs`)}),(0,V.jsx)(H,{variant:`filled`,onClick:()=>void VC(e,s.id,{kind:`engine`}).catch(e=>G(String(e),`error`)),children:s.engine?z(`workspace.startEngine`,{engine:s.engine.name}):z(`workspace.startSession`)}),` `,(0,V.jsx)(H,{variant:`filled`,onClick:()=>void BC(e,s.id),children:z(`menu.newChat`)}),` `,(0,V.jsx)(H,{variant:`filled`,onClick:()=>W.set((0,V.jsx)(KC,{model:e,taskId:s.id})),children:z(`menu.newChatPick`)})]}),s&&h&&(0,V.jsx)(Qq,{model:e,task:s,narrow:!0}),s&&n.tabId&&l.some(e=>e.id===n.tabId)&&(0,V.jsx)(`div`,{className:`min-w-0 flex-1 ${h?`hidden`:`flex`}`,children:(0,V.jsx)(UJ,{model:e,taskId:s.id,tab:l.find(e=>e.id===n.tabId)??l[0]},`${s.id}::${n.tabId}`)})]})]})}function rY({model:e}){B();let t=v(e.client.conn);return t.hello===null&&t.failures>=2?(0,V.jsx)(iY,{}):(0,V.jsx)(aY,{model:e})}function iY(){let[e,t]=(0,g.useState)(null);return(0,g.useEffect)(()=>{ja().then(t)},[]),e===null?null:e?(0,V.jsx)(Fa,{}):(0,V.jsx)(an,{failing:!0})}function aY({model:e}){yF(e);let t=v(e.client.conn).hello;(0,g.useEffect)(()=>{t&&(RM(e.client),WM(e.client,t.roveVersion))},[t,e.client]),qw(e),Ww(e),pa(),ei(e.client),OF(e),pi(e.client),MN(e.client),(0,g.useEffect)(()=>{e.onSelect=_a;let t=hn.subscribe(()=>{hn.get()!==null&&_a()});return vn(),t},[e]),(0,g.useEffect)(()=>lP(e),[e]);let n=v(mn),r=v(e.selection),i=v(e.tasks),a=v(e.remote),o=Ta(),s=v(oI),c=v(sI),l=v(aI),u=v(ga),d=v(Ka),f=v(qa),p=v(Ja),m=v(un),h=v(wn)===`drag`,_=v(hn)!==null,y=a.find(e=>e.id===r.taskId&&!e.machine?.stale),b=Ri(i,r.taskId)??y??null,x=y?void 0:a.find(e=>e.id===r.taskId),S=o?Ea(u,!!b||!!x,m!==null||_):null;(0,g.useEffect)(()=>e.setTaskShown(S===null||S===`content`&&m===null&&!_),[e,S,m,_]);let C=uI(l??280),w={"--rail-w":`${s?0:C}px`,"--rail-open-w":`${C}px`,"--panel-w":d===null?void 0:`${Ya(d,s?0:C)}px`};return(0,V.jsxs)(`div`,{className:Be,children:[(0,V.jsx)(hi,{onRefresh:()=>mi(e.client)}),(0,V.jsxs)(`div`,{className:Ve({zen:n||!f||!b&&!x||o,expanded:p&&!n&&!o,surface:S,folded:s&&!o,peek:s&&c&&!o,dragging:h}),style:o?void 0:w,children:[!o&&(0,V.jsx)(FI,{model:e}),s&&!o&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 left-0 z-5 col-1 row-1 w-2.5`,onMouseEnter:()=>lI(!0),onMouseLeave:()=>lI(!1)}),(0,V.jsx)(HU,{model:e,narrow:o}),(0,V.jsx)(nY,{model:e,narrow:o}),!o&&(0,V.jsx)(Qq,{model:e,task:b,remoteHost:x?.machine?.label}),(0,V.jsx)(eJ,{model:e}),(0,V.jsx)(Va,{}),(0,V.jsx)(wF,{model:e}),(0,V.jsx)(Hi,{model:e})]})]})}var oY=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function sY(e){return[...e.querySelectorAll(oY)].filter(e=>e.tabIndex>=0&&e.offsetParent!==null)}function cY(){window.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||e.defaultPrevented||e.ctrlKey||e.metaKey||e.altKey)return;let t=[...document.querySelectorAll(`.overlay:not(.is-leaving)`)].at(-1);if(!t)return;let n=sY(t);if(n.length===0)return;let r=document.activeElement,i=r instanceof HTMLElement&&t.contains(r),a=e.shiftKey?n.filter(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)).at(-1)??n.at(-1):n.find(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))??n[0];e.preventDefault(),a?.focus()})}function lY(e){if(!xn())for(let t of document.querySelectorAll(`${e}:not(.is-leaving)`)){let e=t.cloneNode(!0);e.classList.add(`is-leaving`),e.inert=!0,e.setAttribute(`aria-hidden`,`true`),document.body.append(e);let n=t.querySelectorAll(`*`),r=e.querySelectorAll(`*`);n.forEach((e,t)=>{let n=r[t];e.scrollTop&&(n.scrollTop=e.scrollTop),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(n.value=e.value)}),window.setTimeout(()=>e.remove(),200)}}function uY(e){for(let t of document.querySelectorAll(`${e}.is-leaving`))t.remove()}function dY(){for(let e of document.querySelectorAll(`.overlay:not(.is-leaving)`))for(let t of e.getAnimations())t instanceof CSSAnimation&&t.animationName===`fade-in`&&t.finish()}function fY(){let e=W.get(),t=-1/0;W.subscribe(()=>{let n=W.get();if(n===null&&e!==null)t=performance.now(),lY(`.overlay`);else if(n!==null){let n=e!==null||performance.now()-t<140;uY(`.overlay`),n&&requestAnimationFrame(dY)}e=n});let n=sn.get();sn.subscribe(()=>{let e=sn.get();e===null&&n!==null?lY(`.menu`):e!==null&&uY(`.menu`),n=e});let r=nT.get().guide;nT.subscribe(()=>{let e=nT.get().guide;e===null&&r!==null?lY(`.prefix-guide`):e!==null&&uY(`.prefix-guide`),r=e})}var pY=500,mY=10,hY=`input, textarea, select, [contenteditable], .xterm`,gY=[`mousedown`,`mouseup`,`click`,`contextmenu`];function _Y(){let e=null,t=()=>{e&&window.clearTimeout(e.timer),e=null},n=()=>{let e=e=>{e.preventDefault(),e.stopPropagation()},t=()=>{for(let t of gY)document.removeEventListener(t,e,!0);document.removeEventListener(`pointerdown`,t,!0),document.removeEventListener(`keydown`,t,!0)};for(let t of gY)document.addEventListener(t,e,!0);document.addEventListener(`pointerdown`,t,!0),document.addEventListener(`keydown`,t,!0)};document.addEventListener(`pointerdown`,r=>{if(t(),r.pointerType!==`touch`||!(r.target instanceof Element)||r.target.closest(hY))return;let i=r.target,a={x:r.clientX,y:r.clientY,native:!1,timer:window.setTimeout(()=>{e=null,!(a.native||!i.isConnected)&&(i.dispatchEvent(new MouseEvent(`contextmenu`,{bubbles:!0,cancelable:!0,clientX:a.x,clientY:a.y,button:2})),n())},pY)};e=a},!0),document.addEventListener(`pointermove`,n=>{e&&Math.hypot(n.clientX-e.x,n.clientY-e.y)>mY&&t()},!0),document.addEventListener(`pointerup`,t,!0),document.addEventListener(`pointercancel`,t,!0),document.addEventListener(`contextmenu`,t=>{e&&t.isTrusted&&(e.native=!0)},!0)}function vY(e,t){e.viewingExtras=()=>Lk({narrow:Ca(),panelOpen:qa.get(),zen:mn.get()});let n=()=>e.reportViewing();qa.subscribe(n),mn.subscribe(n),wa(n),t.on(`panel`,t=>{Ik(t)&&$k(t,e.selection.get().taskId)})}function yY(e){let t=e;return!!t&&typeof t.promptId==`string`&&typeof t.title==`string`}function bY({client:e,prompt:t}){let n=(B()===`zh`?hr:mr).prompt,[r,i]=(0,g.useState)(t.initial??``),a=(0,g.useRef)(!1),{busy:o,error:s,submit:c}=lr();return(0,g.useEffect)(()=>()=>{a.current||e.request(`ui.promptReply`,{promptId:t.promptId}).catch(()=>{})},[e,t.promptId]),(0,V.jsx)(cr,{title:t.title,children:(0,V.jsxs)(`form`,{className:Rn,onSubmit:n=>{n.preventDefault(),c(async()=>{await e.request(`ui.promptReply`,{promptId:t.promptId,value:r}),a.current=!0})},children:[(0,V.jsx)(`input`,{className:nn,"aria-label":n.fieldLabel,autoFocus:!0,spellCheck:!1,value:r,placeholder:t.placeholder,onChange:e=>i(e.target.value)}),s&&(0,V.jsx)(`p`,{className:`text-error`,children:s}),(0,V.jsx)(pr,{busy:o,submitLabel:n.submitLabel})]})})}function xY(e,t){W.get()||W.set((0,V.jsx)(bY,{client:e,prompt:t},t.promptId))}var SY=`rove-web.reloadedFor`;function CY(e,t,n){return e===null?`adopt`:t===e||t===n?`stay`:`reload`}function wY(){let e=null;try{e=window.sessionStorage}catch{}return{storage:e,reload:()=>window.location.reload()}}function TY(e,t=wY()){let n=null,r=null,i=()=>{try{return t.storage?.getItem(SY)??r}catch{return r}};return e.conn.subscribe(()=>{let{state:a,hello:o}=e.conn.get();if(a!==`open`||!o)return;let s=CY(n,o.roveVersion,i());if(s===`adopt`&&(n=o.roveVersion),s===`reload`){r=o.roveVersion;try{t.storage?.setItem(SY,o.roveVersion)}catch{}t.reload()}})}function EY(){let e=window.visualViewport;if(!e)return;let t=document.documentElement,n=()=>{t.style.setProperty(`--vvh`,`${e.height*e.scale}px`),e.scale===1&&window.scrollY!==0&&window.scrollTo(0,0)};e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),window.addEventListener(`scroll`,n,{passive:!0}),n()}var DY=(0,h.createRoot)(document.getElementById(`root`));EY(),_Y(),U_(),fY(),cY();var OY=a();if(!OY)ja().then(e=>DY.render((0,V.jsx)(g.StrictMode,{children:e?(0,V.jsx)(Fa,{}):(0,V.jsx)(an,{})})));else{let e=new h_(g_(),OY),t=new Bi(e);e.on(`prompt`,t=>{yY(t)&&xY(e,t)}),vY(t,e),TY(e),e.start(),DY.render((0,V.jsx)(g.StrictMode,{children:(0,V.jsx)(rY,{model:t})}))}
|